depcomp revision 38ae7e4efe803ea78b6499cd05a394db32623e41
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#! /bin/sh
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# depcomp - compile a program generating dependencies as side-effects
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncscriptversion=2006-10-15.18
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Foundation, Inc.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This program is free software; you can redistribute it and/or modify
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# it under the terms of the GNU General Public License as published by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# the Free Software Foundation; either version 2, or (at your option)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# any later version.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This program is distributed in the hope that it will be useful,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# but WITHOUT ANY WARRANTY; without even the implied warranty of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# GNU General Public License for more details.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# You should have received a copy of the GNU General Public License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# along with this program; if not, write to the Free Software
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# 02110-1301, USA.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# As a special exception to the GNU General Public License, if you
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# distribute this file as part of a program that contains a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# configuration script generated by Autoconf, you may include it under
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# the same distribution terms that you use for the rest of that program.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccase $1 in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync '')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "$0: No command. Try \`$0 --help' for more information." 1>&2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -h | --h*)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cat <<\EOF
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncUsage: depcomp [--help] [--version] PROGRAM [ARGS]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncRun PROGRAMS ARGS to compile a file, generating dependencies
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncas side-effects.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEnvironment variables:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync depmode Dependency tracking mode.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync source Source file read by `PROGRAMS ARGS'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync object Object file output by `PROGRAMS ARGS'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEPDIR directory where to store dependencies.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync depfile Dependency file to output.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile Temporary file to use when outputing dependencies.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync libtool Whether libtool is used (yes/no).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncReport bugs to <bug-automake@gnu.org>.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEOF
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -v | --v*)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "depcomp $scriptversion"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncesac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif test -z "$depmode" || test -z "$source" || test -z "$object"; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "depcomp: Variables source, object and depmode must be set" 1>&2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdepfile=${depfile-`echo "$object" |
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncrm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Some modes work just like other modes, but use different flags. We
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# parameterize here, but still list the modes in the big case below,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# to make depend.m4 easier to write. Note that we *cannot* use a case
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# here, because this file can only contain one case statement.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif test "$depmode" = hp; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # HP compiler uses -M and no extra arg.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gccflag=-M
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync depmode=gcc
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif test "$depmode" = dashXmstdout; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # This is just like dashmstdout with a different argument.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dashmflag=-xM
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync depmode=dashmstdout
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccase "$depmode" in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncgcc3)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## gcc 3 implements dependency tracking that does exactly what
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## we want. Yay! Note: for some reason libtool 1.4 doesn't like
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## it if -MD -MP comes after the -MF stuff. Hmm.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## Unfortunately, FreeBSD c89 acceptance of flags depends upon
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## the command line argument order; so add the flags where they
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## appear in depend2.am. Note that the slowdown incurred here
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## affects only configure: in makefiles, %FASTDEP% shortcuts this.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for arg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case $arg in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *) set fnord "$@" "$arg" ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync esac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift # fnord
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift # $arg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stat=$?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test $stat -eq 0; then :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $stat
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mv "$tmpdepfile" "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncgcc)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## There are various ways to get dependency output from gcc. Here's
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## why we pick this rather obscure method:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## - Don't want to use -MD because we'd like the dependencies to end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## up in a subdir. Having to rename by hand is ugly.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## (We might end up doing this anyway to support other compilers.)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## -MM, not -M (despite what the docs say).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## - Using -M directly means running the compiler twice (even worse
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## than renaming).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test -z "$gccflag"; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gccflag=-MD,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -Wp,"$gccflag$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stat=$?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test $stat -eq 0; then :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $stat
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "$object : \\" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## The second -e expression handles DOS-style file names with drive letters.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e 's/^[^:]*: / /' \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## This next piece of magic avoids the `deleted header file' problem.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## The problem is that when a header file which appears in a .P file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## is deleted, the dependency causes make to die (because there is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## typically no way to rebuild the header). We avoid this by adding
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## dummy dependencies for each header file. Too bad gcc doesn't do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## this for us directly.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tr ' ' '
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync' < "$tmpdepfile" |
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## Some versions of gcc put a space before the `:'. On the theory
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## that the space means something, we add a space to the output as
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## well.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## Some versions of the HPUX 10.20 sed can't process this invocation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## correctly. Breaking it into two sed invocations is a workaround.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchp)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # This case exists only to let depend.m4 do its work. It works by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # looking at the text of this script. This case will never be run,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # since it is checked for above.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncsgi)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test "$libtool" = yes; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" "-Wp,-MDupdate,$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -MDupdate "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stat=$?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test $stat -eq 0; then :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $stat
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "$object : \\" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Clip off the initial element (the dependent). Don't try to be
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # clever and replace this with sed code, as IRIX sed won't handle
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # lines with more than a fixed number of characters (4096 in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # the IRIX cc adds comments like `#:fec' to the end of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # dependency line.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tr ' ' '
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync' < "$tmpdepfile" \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tr '
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync' ' ' >> $depfile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo >> $depfile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # The second pass generates a dummy entry for each header file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tr ' ' '
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync' < "$tmpdepfile" \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync >> $depfile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # The sourcefile does not contain any dependencies, so just
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # store a dummy comment line, to avoid errors with the Makefile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # "include basename.Plo" scheme.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "#dummy" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncaix)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # The C for AIX Compiler uses -M and outputs the dependencies
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # in a .u file. In older versions, this file always lives in the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # current directory. Also, the AIX compiler puts `$object:' at the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # start of each line; $object doesn't have directory information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Version 6 uses the directory in both cases.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile="$stripped.u"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test "$libtool" = yes; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -Wc,-M
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -M
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stat=$?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test -f "$tmpdepfile"; then :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stripped=`echo "$stripped" | sed 's,^.*/,,'`
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile="$stripped.u"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test $stat -eq 0; then :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $stat
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test -f "$tmpdepfile"; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync outname="$stripped.o"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Each line is of the form `foo.o: dependent.h'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Do two passes, one to just change these to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # `$object: dependent.h' and one to simply `dependent.h:'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # The sourcefile does not contain any dependencies, so just
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # store a dummy comment line, to avoid errors with the Makefile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # "include basename.Plo" scheme.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "#dummy" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncicc)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Intel's C compiler understands `-MD -MF file'. However on
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # ICC 7.0 will fill foo.d with something like
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # foo.o: sub/foo.c
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # foo.o: sub/foo.h
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # which is wrong. We want:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # sub/foo.o: sub/foo.c
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # sub/foo.o: sub/foo.h
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # sub/foo.c:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # sub/foo.h:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # ICC 7.1 will output
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # foo.o: sub/foo.c sub/foo.h
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # and will wrap long lines using \ :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # foo.o: sub/foo.c ... \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # sub/foo.h ... \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # ...
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -MD -MF "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stat=$?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test $stat -eq 0; then :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $stat
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Each line is of the form `foo.o: dependent.h',
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Do two passes, one to just change these to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # `$object: dependent.h' and one to simply `dependent.h:'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Some versions of the HPUX 10.20 sed can't process this invocation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # correctly. Breaking it into two sed invocations is a workaround.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e 's/$/ :/' >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchp2)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # The "hp" stanza above does not work with aCC (C++) and HP's ia64
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # compilers, which have integrated preprocessors. The correct option
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # to use with these is +Maked; it writes dependencies to a file named
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # 'foo.d', which lands next to the object file, wherever that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # happens to be.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Much of this is similar to the tru64 case; see comments there.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync test "x$dir" = "x$object" && dir=
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test "$libtool" = yes; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile1=$dir$base.d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile2=$dir.libs/$base.d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -Wc,+Maked
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile1=$dir$base.d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile2=$dir$base.d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" +Maked
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stat=$?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test $stat -eq 0; then :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile1" "$tmpdepfile2"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $stat
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync test -f "$tmpdepfile" && break
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test -f "$tmpdepfile"; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Add `dependent.h:' lines.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "#dummy" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile" "$tmpdepfile2"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctru64)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # The Tru64 compiler uses -MD to generate dependencies as a side
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # dependencies in `foo.d' instead, so we check for that too.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Subdirectories are respected.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync test "x$dir" = "x$object" && dir=
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test "$libtool" = yes; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # With Tru64 cc, shared objects can also be used to make a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # static library. This mechanism is used in libtool 1.4 series to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # handle both shared and static libraries in a single compilation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # With libtool 1.5 this exception was removed, and libtool now
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # generates 2 separate objects for the 2 libraries. These two
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # compilations output dependencies in $dir.libs/$base.o.d and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # in $dir$base.o.d. We have to check for both files, because
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # one of the two compilations can be disabled. We should prefer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # automatically cleaned when .libs/ is deleted, while ignoring
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # the former would cause a distcleancheck panic.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile2=$dir$base.o.d # libtool 1.5
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -Wc,-MD
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile1=$dir$base.o.d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile2=$dir$base.d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile3=$dir$base.d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tmpdepfile4=$dir$base.d
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -MD
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stat=$?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test $stat -eq 0; then :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit $stat
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync test -f "$tmpdepfile" && break
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test -f "$tmpdepfile"; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # That's a tab and a space in the [].
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "#dummy" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#nosideeffect)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # This comment above is used by automake to tell side-effect
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # dependency tracking mechanisms from slower ones.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdashmstdout)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Important note: in order to support this mode, a compiler *must*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # always write the preprocessed file to stdout, regardless of -o.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" || exit $?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Remove the call to Libtool.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test "$libtool" = yes; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while test $1 != '--mode=compile'; do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Remove `-o $object'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IFS=" "
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for arg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case $arg in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -o)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync $object)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set fnord "$@" "$arg"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift # fnord
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift # $arg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync esac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync test -z "$dashmflag" && dashmflag=-M
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Require at least two characters before searching for `:'
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # in the target name. This is to cope with DOS-style filenames:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" $dashmflag |
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cat < "$tmpdepfile" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tr ' ' '
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync' < "$tmpdepfile" | \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## Some versions of the HPUX 10.20 sed can't process this invocation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## correctly. Breaking it into two sed invocations is a workaround.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncdashXmstdout)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # This case only exists to satisfy depend.m4. It is never actually
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # run, as this mode is specially recognized in the preamble.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncmakedepend)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" || exit $?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Remove any Libtool call
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test "$libtool" = yes; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while test $1 != '--mode=compile'; do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # X makedepend
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cleared=no
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for arg in "$@"; do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case $cleared in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync no)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set ""; shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cleared=yes ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync esac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case "$arg" in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -D*|-I*)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set fnord "$@" "$arg"; shift ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Strip any option that makedepend may not understand. Remove
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # the object too, otherwise makedepend will parse it as a source file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -*|$object)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set fnord "$@" "$arg"; shift ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync esac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync obj_suffix="`echo $object | sed 's/^.*\././'`"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync touch "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cat < "$tmpdepfile" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed '1,2d' "$tmpdepfile" | tr ' ' '
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync' | \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## Some versions of the HPUX 10.20 sed can't process this invocation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## correctly. Breaking it into two sed invocations is a workaround.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile" "$tmpdepfile".bak
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccpp)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Important note: in order to support this mode, a compiler *must*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # always write the preprocessed file to stdout.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" || exit $?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Remove the call to Libtool.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if test "$libtool" = yes; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while test $1 != '--mode=compile'; do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync fi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Remove `-o $object'.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IFS=" "
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for arg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case $arg in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -o)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync $object)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set fnord "$@" "$arg"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift # fnord
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift # $arg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync esac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -E |
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed '$ s: \\$::' > "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "$object : \\" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync cat < "$tmpdepfile" >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncmsvisualcpp)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Important note: in order to support this mode, a compiler *must*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # always write the preprocessed file to stdout, regardless of -o,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # because we must use -o when running libtool.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" || exit $?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IFS=" "
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for arg
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case "$arg" in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set fnord "$@"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set fnord "$@" "$arg"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync shift
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync esac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync done
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "$@" -E |
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "$object : \\" > "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo " " >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rm -f "$tmpdepfile"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncnone)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exec "$@"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync*)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "Unknown depmode $depmode" 1>&2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncesac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncexit 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Local Variables:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# mode: shell-script
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# sh-indentation: 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# eval: (add-hook 'write-file-hooks 'time-stamp)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# time-stamp-start: "scriptversion="
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# time-stamp-format: "%:y-%02m-%02d.%02H"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# time-stamp-end: "$"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# End:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync