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