depcomp revision 1
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd#! /bin/sh
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding# depcomp - compile a program generating dependencies as side-effects
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcndscriptversion=2004-05-31.23
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# This program is free software; you can redistribute it and/or modify
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd# it under the terms of the GNU General Public License as published by
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd# the Free Software Foundation; either version 2, or (at your option)
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd# any later version.
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd# 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
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# You should have received a copy of the GNU General Public License
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# along with this program; if not, write to the Free Software
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# 02111-1307, USA.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# As a special exception to the GNU General Public License, if you
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# distribute this file as part of a program that contains a
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# configuration script generated by Autoconf, you may include it under
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# the same distribution terms that you use for the rest of that program.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingcase $1 in
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding '')
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding echo "$0: No command. Try \`$0 --help' for more information." 1>&2
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding exit 1;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
4192c91889a84b18aec0b046a94a2b2863be204cstoddard -h | --h*)
4192c91889a84b18aec0b046a94a2b2863be204cstoddard cat <<\EOF
4192c91889a84b18aec0b046a94a2b2863be204cstoddardUsage: depcomp [--help] [--version] PROGRAM [ARGS]
4192c91889a84b18aec0b046a94a2b2863be204cstoddard
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingRun PROGRAMS ARGS to compile a file, generating dependencies
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingas side-effects.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingEnvironment variables:
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding depmode Dependency tracking mode.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding source Source file read by `PROGRAMS ARGS'.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding 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.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding libtool Whether libtool is used (yes/no).
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingReport bugs to <bug-automake@gnu.org>.
84854ca5d35fb9f101da948858097c88457eece8coarEOF
84854ca5d35fb9f101da948858097c88457eece8coar exit 0
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding -v | --v*)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding echo "depcomp $scriptversion"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding exit 0
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingesac
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingif test -z "$depmode" || test -z "$source" || test -z "$object"; then
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding echo "depcomp: Variables source, object and depmode must be set" 1>&2
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding exit 1
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingfi
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
4192c91889a84b18aec0b046a94a2b2863be204cstoddard# here, because this file can only contain one case statement.
4192c91889a84b18aec0b046a94a2b2863be204cstoddardif test "$depmode" = hp; then
4192c91889a84b18aec0b046a94a2b2863be204cstoddard # HP compiler uses -M and no extra arg.
4192c91889a84b18aec0b046a94a2b2863be204cstoddard gccflag=-M
4192c91889a84b18aec0b046a94a2b2863be204cstoddard depmode=gcc
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingfi
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
024cd9589e52cf11ce765dfddb5b5f0c6e421a48gsteinif test "$depmode" = dashXmstdout; then
b6055b7832a0e4d0818416252fff5925aaebae4brbb # This is just like dashmstdout with a different argument.
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp dashmflag=-xM
024cd9589e52cf11ce765dfddb5b5f0c6e421a48gstein depmode=dashmstdout
024cd9589e52cf11ce765dfddb5b5f0c6e421a48gsteinfi
024cd9589e52cf11ce765dfddb5b5f0c6e421a48gstein
024cd9589e52cf11ce765dfddb5b5f0c6e421a48gsteincase "$depmode" in
2d71630471d1c23f0137309e3c3957c633ecbfd6rbbgcc3)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## gcc 3 implements dependency tracking that does exactly what
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## we want. Yay! Note: for some reason libtool 1.4 doesn't like
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## it if -MD -MP comes after the -MF stuff. Hmm.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
fd0edaa8e3d4dd67d0604ccef2e96b071db96643fielding stat=$?
024cd9589e52cf11ce765dfddb5b5f0c6e421a48gstein if test $stat -eq 0; then :
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding else
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding rm -f "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding exit $stat
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding fi
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding mv "$tmpdepfile" "$depfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldinggcc)
84854ca5d35fb9f101da948858097c88457eece8coar## There are various ways to get dependency output from gcc. Here's
84854ca5d35fb9f101da948858097c88457eece8coar## 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.)
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard## - 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
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp## than renaming).
48dd659ac15d9054061ddce8f3cd24fa07e0e0ddgstein if test -z "$gccflag"; then
48dd659ac15d9054061ddce8f3cd24fa07e0e0ddgstein gccflag=-MD,
48dd659ac15d9054061ddce8f3cd24fa07e0e0ddgstein fi
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding "$@" -Wp,"$gccflag$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding stat=$?
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding if test $stat -eq 0; then :
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm else
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding rm -f "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding exit $stat
3d96ee83babeec32482c9082c9426340cee8c44dwrowe fi
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding rm -f "$depfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar echo "$object : \\" > "$depfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar## The second -e expression handles DOS-style file names with drive letters.
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar sed -e 's/^[^:]*: / /' \
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar## This next piece of magic avoids the `deleted header file' problem.
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar## The problem is that when a header file which appears in a .P file
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar## is deleted, the dependency causes make to die (because there is
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar## typically no way to rebuild the header). We avoid this by adding
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm## dummy dependencies for each header file. Too bad gcc doesn't do
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## this for us directly.
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm tr ' ' '
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding' < "$tmpdepfile" |
066877f1a045103acfdd376d48cdd473c33f409bdougm## Some versions of gcc put a space before the `:'. On the theory
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## that the space means something, we add a space to the output as
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## well.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## Some versions of the HPUX 10.20 sed can't process this invocation
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm## correctly. Breaking it into two sed invocations is a workaround.
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar rm -f "$tmpdepfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar ;;
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar
1ccd992d37d62c8cb2056126f2234f64ec189bfddougmhp)
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # This case exists only to let depend.m4 do its work. It works by
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # looking at the text of this script. This case will never be run,
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # since it is checked for above.
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar exit 1
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
1ccd992d37d62c8cb2056126f2234f64ec189bfddougmsgi)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding if test "$libtool" = yes; then
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding "$@" "-Wp,-MDupdate,$tmpdepfile"
066877f1a045103acfdd376d48cdd473c33f409bdougm else
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard "$@" -MDupdate "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding fi
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding stat=$?
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding if test $stat -eq 0; then :
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar else
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar rm -f "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding exit $stat
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding fi
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding rm -f "$depfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard echo "$object : \\" > "$depfile"
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # Clip off the initial element (the dependent). Don't try to be
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # clever and replace this with sed code, as IRIX sed won't handle
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # lines with more than a fixed number of characters (4096 in
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # the IRIX cc adds comments like `#:fec' to the end of the
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # dependency line.
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard tr ' ' '
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard' < "$tmpdepfile" \
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard tr '
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard' ' ' >> $depfile
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard echo >> $depfile
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # The second pass generates a dummy entry for each header file.
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp tr ' ' '
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp' < "$tmpdepfile" \
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp >> $depfile
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp else
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # The sourcefile does not contain any dependencies, so just
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # store a dummy comment line, to avoid errors with the Makefile
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # "include basename.Plo" scheme.
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp echo "#dummy" > "$depfile"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp fi
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp rm -f "$tmpdepfile"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp ;;
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianpaix)
6a3b299491bf7f9ba09b943b7238b170111b69ccnd # The C for AIX Compiler uses -M and outputs the dependencies
6a3b299491bf7f9ba09b943b7238b170111b69ccnd # in a .u file. In older versions, this file always lives in the
6a3b299491bf7f9ba09b943b7238b170111b69ccnd # current directory. Also, the AIX compiler puts `$object:' at the
6a3b299491bf7f9ba09b943b7238b170111b69ccnd # start of each line; $object doesn't have directory information.
6a3b299491bf7f9ba09b943b7238b170111b69ccnd # Version 6 uses the directory in both cases.
6a3b299491bf7f9ba09b943b7238b170111b69ccnd stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
6a3b299491bf7f9ba09b943b7238b170111b69ccnd tmpdepfile="$stripped.u"
6a3b299491bf7f9ba09b943b7238b170111b69ccnd if test "$libtool" = yes; then
6a3b299491bf7f9ba09b943b7238b170111b69ccnd "$@" -Wc,-M
6a3b299491bf7f9ba09b943b7238b170111b69ccnd else
6a3b299491bf7f9ba09b943b7238b170111b69ccnd "$@" -M
6a3b299491bf7f9ba09b943b7238b170111b69ccnd fi
6a3b299491bf7f9ba09b943b7238b170111b69ccnd stat=$?
6a3b299491bf7f9ba09b943b7238b170111b69ccnd
6a3b299491bf7f9ba09b943b7238b170111b69ccnd if test -f "$tmpdepfile"; then :
6a3b299491bf7f9ba09b943b7238b170111b69ccnd else
6a3b299491bf7f9ba09b943b7238b170111b69ccnd stripped=`echo "$stripped" | sed 's,^.*/,,'`
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp tmpdepfile="$stripped.u"
6a3b299491bf7f9ba09b943b7238b170111b69ccnd fi
6a3b299491bf7f9ba09b943b7238b170111b69ccnd
baa9f185fdeb3034b62691b9e0ac5a46a064b5f3nd if test $stat -eq 0; then :
baa9f185fdeb3034b62691b9e0ac5a46a064b5f3nd else
baa9f185fdeb3034b62691b9e0ac5a46a064b5f3nd rm -f "$tmpdepfile"
baa9f185fdeb3034b62691b9e0ac5a46a064b5f3nd exit $stat
baa9f185fdeb3034b62691b9e0ac5a46a064b5f3nd fi
baa9f185fdeb3034b62691b9e0ac5a46a064b5f3nd
baa9f185fdeb3034b62691b9e0ac5a46a064b5f3nd if test -f "$tmpdepfile"; then
6a3b299491bf7f9ba09b943b7238b170111b69ccnd outname="$stripped.o"
6a3b299491bf7f9ba09b943b7238b170111b69ccnd # Each line is of the form `foo.o: dependent.h'.
6a3b299491bf7f9ba09b943b7238b170111b69ccnd # Do two passes, one to just change these to
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # `$object: dependent.h' and one to simply `dependent.h:'.
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
6a3b299491bf7f9ba09b943b7238b170111b69ccnd sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp else
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # The sourcefile does not contain any dependencies, so just
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # store a dummy comment line, to avoid errors with the Makefile
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # "include basename.Plo" scheme.
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp echo "#dummy" > "$depfile"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp fi
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp rm -f "$tmpdepfile"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp ;;
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianpicc)
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # Intel's C compiler understands `-MD -MF file'. However on
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # ICC 7.0 will fill foo.d with something like
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # foo.o: sub/foo.c
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # foo.o: sub/foo.h
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # which is wrong. We want:
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # sub/foo.o: sub/foo.c
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # sub/foo.o: sub/foo.h
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # sub/foo.c:
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # sub/foo.h:
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # ICC 7.1 will output
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # foo.o: sub/foo.c sub/foo.h
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # and will wrap long lines using \ :
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # foo.o: sub/foo.c ... \
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # sub/foo.h ... \
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # ...
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar "$@" -MD -MF "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding stat=$?
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding if test $stat -eq 0; then :
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding else
5116c0fd82197f5bf0bbe33155cd36a452fcf6cewrowe rm -f "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding exit $stat
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar fi
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar rm -f "$depfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # Each line is of the form `foo.o: dependent.h',
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # Do two passes, one to just change these to
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # `$object: dependent.h' and one to simply `dependent.h:'.
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # Some versions of the HPUX 10.20 sed can't process this invocation
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # correctly. Breaking it into two sed invocations is a workaround.
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding sed -e 's/$/ :/' >> "$depfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding rm -f "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddardtru64)
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'.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # 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
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard if test "$libtool" = yes; then
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # Dependencies are output in .lo.d with libtool 1.4.
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # With libtool 1.5 they are output both in $dir.libs/$base.o.d
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # latter, because the former will be cleaned when $dir.libs is
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # erased.
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar tmpdepfile1="$dir.libs/$base.lo.d"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding tmpdepfile2="$dir$base.o.d"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding tmpdepfile3="$dir.libs/$base.d"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding "$@" -Wc,-MD
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding else
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding tmpdepfile1="$dir$base.o.d"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard tmpdepfile2="$dir$base.d"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard tmpdepfile3="$dir$base.d"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard "$@" -MD
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard fi
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard stat=$?
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard if test $stat -eq 0; then :
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard else
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp exit $stat
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp fi
bba68504b5cf2f8b246bd4f898f6cb62c2628379brianp
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp if test -f "$tmpdepfile1"; then
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp tmpdepfile="$tmpdepfile1"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp elif test -f "$tmpdepfile2"; then
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp tmpdepfile="$tmpdepfile2"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp else
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp tmpdepfile="$tmpdepfile3"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp fi
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp if test -f "$tmpdepfile"; then
ba6c07204bd224fa5d4cd0e6b8bf256d6daffb74nd sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp # That's a tab and a space in the [].
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp else
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp echo "#dummy" > "$depfile"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp fi
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp rm -f "$tmpdepfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard ;;
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard#nosideeffect)
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # This comment above is used by automake to tell side-effect
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # dependency tracking mechanisms from slower ones.
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddarddashmstdout)
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # Important note: in order to support this mode, a compiler *must*
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # always write the preprocessed file to stdout, regardless of -o.
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard "$@" || exit $?
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # Remove the call to Libtool.
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard if test "$libtool" = yes; then
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard while test $1 != '--mode=compile'; do
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard shift
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard done
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard shift
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard fi
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # Remove `-o $object'.
84854ca5d35fb9f101da948858097c88457eece8coar IFS=" "
84854ca5d35fb9f101da948858097c88457eece8coar for arg
84854ca5d35fb9f101da948858097c88457eece8coar do
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard case $arg in
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard -o)
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard shift
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd ;;
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd $object)
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd shift
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard ;;
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard *)
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard set fnord "$@" "$arg"
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard shift # fnord
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard shift # $arg
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard ;;
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard esac
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd done
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard test -z "$dashmflag" && dashmflag=-M
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # Require at least two characters before searching for `:'
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # in the target name. This is to cope with DOS-style filenames:
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard "$@" $dashmflag |
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding rm -f "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard cat < "$tmpdepfile" > "$depfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding tr ' ' '
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding' < "$tmpdepfile" | \
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## Some versions of the HPUX 10.20 sed can't process this invocation
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard## correctly. Breaking it into two sed invocations is a workaround.
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard rm -f "$tmpdepfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingdashXmstdout)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # This case only exists to satisfy depend.m4. It is never actually
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # run, as this mode is specially recognized in the preamble.
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm exit 1
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
1ccd992d37d62c8cb2056126f2234f64ec189bfddougmmakedepend)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding "$@" || exit $?
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # Remove any Libtool call
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm if test "$libtool" = yes; then
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding while test $1 != '--mode=compile'; do
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding done
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm fi
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard # X makedepend
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding cleared=no
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding for arg in "$@"; do
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding case $cleared in
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding no)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding set ""; shift
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding cleared=yes ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding esac
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding case "$arg" in
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding -D*|-I*)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding set fnord "$@" "$arg"; shift ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # Strip any option that makedepend may not understand. Remove
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # the object too, otherwise makedepend will parse it as a source file.
1ccd992d37d62c8cb2056126f2234f64ec189bfddougm -*|$object)
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding *)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding set fnord "$@" "$arg"; shift ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding esac
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding done
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding obj_suffix="`echo $object | sed 's/^.*\././'`"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding touch "$tmpdepfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding rm -f "$depfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding cat < "$tmpdepfile" > "$depfile"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding sed '1,2d' "$tmpdepfile" | tr ' ' '
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding' | \
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 ;;
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd
d6d558e3b9da8a69f7a990987a2636a2a37e7802ndcpp)
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd # Important note: in order to support this mode, a compiler *must*
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd # always write the preprocessed file to stdout.
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd "$@" || exit $?
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd
ebe70c2684539a5fb2d899241d1601710dfa38a4trawick # Remove the call to Libtool.
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd if test "$libtool" = yes; then
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd while test $1 != '--mode=compile'; do
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding done
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar fi
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar # Remove `-o $object'.
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar IFS=" "
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar for arg
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar do
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar case $arg in
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar -o)
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar shift
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding $object)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
d4f351074a8f7af5e41aa0a70410816436608e3dianh *)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding set fnord "$@" "$arg"
d312e7ba70aeb1594af9f3271e4802a6f48a3c4bbrianp shift # fnord
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift # $arg
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
bbe046d7cbb950ab3e372e4119ae001a5fe52ed4striker esac
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding done
cd0132df6f05df6800141a29a6c60b64618670dedougm
cd0132df6f05df6800141a29a6c60b64618670dedougm "$@" -E |
cd0132df6f05df6800141a29a6c60b64618670dedougm sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard sed '$ s: \\$::' > "$tmpdepfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard rm -f "$depfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar echo "$object : \\" > "$depfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar cat < "$tmpdepfile" >> "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard rm -f "$tmpdepfile"
b4a6dfb838d9820516bbca38bd466fca7d31809bcoar ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingmsvisualcpp)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # Important note: in order to support this mode, a compiler *must*
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # always write the preprocessed file to stdout, regardless of -o,
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding # because we must use -o when running libtool.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding "$@" || exit $?
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard IFS=" "
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard for arg
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard do
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard case "$arg" in
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard set fnord "$@"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard shift
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard shift
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard ;;
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard *)
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard set fnord "$@" "$arg"
84854ca5d35fb9f101da948858097c88457eece8coar shift
84854ca5d35fb9f101da948858097c88457eece8coar shift
84854ca5d35fb9f101da948858097c88457eece8coar ;;
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard esac
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard done
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard "$@" -E |
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard rm -f "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard echo "$object : \\" > "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard echo " " >> "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard rm -f "$tmpdepfile"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard ;;
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddardnone)
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard exec "$@"
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard ;;
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard
34da94d6797f36c17df72a559d9a25435ac0d6f3stoddard*)
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard echo "Unknown depmode $depmode" 1>&2
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard exit 1
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard ;;
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddardesac
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard
d6d558e3b9da8a69f7a990987a2636a2a37e7802ndexit 0
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd
d6d558e3b9da8a69f7a990987a2636a2a37e7802nd# Local Variables:
d4f351074a8f7af5e41aa0a70410816436608e3dianh# mode: shell-script
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard# sh-indentation: 2
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard# eval: (add-hook 'write-file-hooks 'time-stamp)
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard# time-stamp-start: "scriptversion="
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard# time-stamp-format: "%:y-%02m-%02d.%02H"
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard# time-stamp-end: "$"
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard# End:
0e53795adff9a7b18ac2db4a87ed2c60e063672cstoddard