depcomp revision 53354cdb
153354cdbSmrg#! /bin/sh
253354cdbSmrg# depcomp - compile a program generating dependencies as side-effects
353354cdbSmrg
453354cdbSmrgscriptversion=2006-10-15.18
553354cdbSmrg
653354cdbSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
753354cdbSmrg# Foundation, Inc.
853354cdbSmrg
953354cdbSmrg# This program is free software; you can redistribute it and/or modify
1053354cdbSmrg# it under the terms of the GNU General Public License as published by
1153354cdbSmrg# the Free Software Foundation; either version 2, or (at your option)
1253354cdbSmrg# any later version.
1353354cdbSmrg
1453354cdbSmrg# This program is distributed in the hope that it will be useful,
1553354cdbSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1653354cdbSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1753354cdbSmrg# GNU General Public License for more details.
1853354cdbSmrg
1953354cdbSmrg# You should have received a copy of the GNU General Public License
2053354cdbSmrg# along with this program; if not, write to the Free Software
2153354cdbSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
2253354cdbSmrg# 02110-1301, USA.
2353354cdbSmrg
2453354cdbSmrg# As a special exception to the GNU General Public License, if you
2553354cdbSmrg# distribute this file as part of a program that contains a
2653354cdbSmrg# configuration script generated by Autoconf, you may include it under
2753354cdbSmrg# the same distribution terms that you use for the rest of that program.
2853354cdbSmrg
2953354cdbSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
3053354cdbSmrg
3153354cdbSmrgcase $1 in
3253354cdbSmrg  '')
3353354cdbSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3453354cdbSmrg     exit 1;
3553354cdbSmrg     ;;
3653354cdbSmrg  -h | --h*)
3753354cdbSmrg    cat <<\EOF
3853354cdbSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3953354cdbSmrg
4053354cdbSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
4153354cdbSmrgas side-effects.
4253354cdbSmrg
4353354cdbSmrgEnvironment variables:
4453354cdbSmrg  depmode     Dependency tracking mode.
4553354cdbSmrg  source      Source file read by `PROGRAMS ARGS'.
4653354cdbSmrg  object      Object file output by `PROGRAMS ARGS'.
4753354cdbSmrg  DEPDIR      directory where to store dependencies.
4853354cdbSmrg  depfile     Dependency file to output.
4953354cdbSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
5053354cdbSmrg  libtool     Whether libtool is used (yes/no).
5153354cdbSmrg
5253354cdbSmrgReport bugs to <bug-automake@gnu.org>.
5353354cdbSmrgEOF
5453354cdbSmrg    exit $?
5553354cdbSmrg    ;;
5653354cdbSmrg  -v | --v*)
5753354cdbSmrg    echo "depcomp $scriptversion"
5853354cdbSmrg    exit $?
5953354cdbSmrg    ;;
6053354cdbSmrgesac
6153354cdbSmrg
6253354cdbSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6353354cdbSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6453354cdbSmrg  exit 1
6553354cdbSmrgfi
6653354cdbSmrg
6753354cdbSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6853354cdbSmrgdepfile=${depfile-`echo "$object" |
6953354cdbSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
7053354cdbSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
7153354cdbSmrg
7253354cdbSmrgrm -f "$tmpdepfile"
7353354cdbSmrg
7453354cdbSmrg# Some modes work just like other modes, but use different flags.  We
7553354cdbSmrg# parameterize here, but still list the modes in the big case below,
7653354cdbSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7753354cdbSmrg# here, because this file can only contain one case statement.
7853354cdbSmrgif test "$depmode" = hp; then
7953354cdbSmrg  # HP compiler uses -M and no extra arg.
8053354cdbSmrg  gccflag=-M
8153354cdbSmrg  depmode=gcc
8253354cdbSmrgfi
8353354cdbSmrg
8453354cdbSmrgif test "$depmode" = dashXmstdout; then
8553354cdbSmrg   # This is just like dashmstdout with a different argument.
8653354cdbSmrg   dashmflag=-xM
8753354cdbSmrg   depmode=dashmstdout
8853354cdbSmrgfi
8953354cdbSmrg
9053354cdbSmrgcase "$depmode" in
9153354cdbSmrggcc3)
9253354cdbSmrg## gcc 3 implements dependency tracking that does exactly what
9353354cdbSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
9453354cdbSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
9553354cdbSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
9653354cdbSmrg## the command line argument order; so add the flags where they
9753354cdbSmrg## appear in depend2.am.  Note that the slowdown incurred here
9853354cdbSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
9953354cdbSmrg  for arg
10053354cdbSmrg  do
10153354cdbSmrg    case $arg in
10253354cdbSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
10353354cdbSmrg    *)  set fnord "$@" "$arg" ;;
10453354cdbSmrg    esac
10553354cdbSmrg    shift # fnord
10653354cdbSmrg    shift # $arg
10753354cdbSmrg  done
10853354cdbSmrg  "$@"
10953354cdbSmrg  stat=$?
11053354cdbSmrg  if test $stat -eq 0; then :
11153354cdbSmrg  else
11253354cdbSmrg    rm -f "$tmpdepfile"
11353354cdbSmrg    exit $stat
11453354cdbSmrg  fi
11553354cdbSmrg  mv "$tmpdepfile" "$depfile"
11653354cdbSmrg  ;;
11753354cdbSmrg
11853354cdbSmrggcc)
11953354cdbSmrg## There are various ways to get dependency output from gcc.  Here's
12053354cdbSmrg## why we pick this rather obscure method:
12153354cdbSmrg## - Don't want to use -MD because we'd like the dependencies to end
12253354cdbSmrg##   up in a subdir.  Having to rename by hand is ugly.
12353354cdbSmrg##   (We might end up doing this anyway to support other compilers.)
12453354cdbSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
12553354cdbSmrg##   -MM, not -M (despite what the docs say).
12653354cdbSmrg## - Using -M directly means running the compiler twice (even worse
12753354cdbSmrg##   than renaming).
12853354cdbSmrg  if test -z "$gccflag"; then
12953354cdbSmrg    gccflag=-MD,
13053354cdbSmrg  fi
13153354cdbSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
13253354cdbSmrg  stat=$?
13353354cdbSmrg  if test $stat -eq 0; then :
13453354cdbSmrg  else
13553354cdbSmrg    rm -f "$tmpdepfile"
13653354cdbSmrg    exit $stat
13753354cdbSmrg  fi
13853354cdbSmrg  rm -f "$depfile"
13953354cdbSmrg  echo "$object : \\" > "$depfile"
14053354cdbSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
14153354cdbSmrg## The second -e expression handles DOS-style file names with drive letters.
14253354cdbSmrg  sed -e 's/^[^:]*: / /' \
14353354cdbSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
14453354cdbSmrg## This next piece of magic avoids the `deleted header file' problem.
14553354cdbSmrg## The problem is that when a header file which appears in a .P file
14653354cdbSmrg## is deleted, the dependency causes make to die (because there is
14753354cdbSmrg## typically no way to rebuild the header).  We avoid this by adding
14853354cdbSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
14953354cdbSmrg## this for us directly.
15053354cdbSmrg  tr ' ' '
15153354cdbSmrg' < "$tmpdepfile" |
15253354cdbSmrg## Some versions of gcc put a space before the `:'.  On the theory
15353354cdbSmrg## that the space means something, we add a space to the output as
15453354cdbSmrg## well.
15553354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
15653354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
15753354cdbSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
15853354cdbSmrg  rm -f "$tmpdepfile"
15953354cdbSmrg  ;;
16053354cdbSmrg
16153354cdbSmrghp)
16253354cdbSmrg  # This case exists only to let depend.m4 do its work.  It works by
16353354cdbSmrg  # looking at the text of this script.  This case will never be run,
16453354cdbSmrg  # since it is checked for above.
16553354cdbSmrg  exit 1
16653354cdbSmrg  ;;
16753354cdbSmrg
16853354cdbSmrgsgi)
16953354cdbSmrg  if test "$libtool" = yes; then
17053354cdbSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
17153354cdbSmrg  else
17253354cdbSmrg    "$@" -MDupdate "$tmpdepfile"
17353354cdbSmrg  fi
17453354cdbSmrg  stat=$?
17553354cdbSmrg  if test $stat -eq 0; then :
17653354cdbSmrg  else
17753354cdbSmrg    rm -f "$tmpdepfile"
17853354cdbSmrg    exit $stat
17953354cdbSmrg  fi
18053354cdbSmrg  rm -f "$depfile"
18153354cdbSmrg
18253354cdbSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
18353354cdbSmrg    echo "$object : \\" > "$depfile"
18453354cdbSmrg
18553354cdbSmrg    # Clip off the initial element (the dependent).  Don't try to be
18653354cdbSmrg    # clever and replace this with sed code, as IRIX sed won't handle
18753354cdbSmrg    # lines with more than a fixed number of characters (4096 in
18853354cdbSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
18953354cdbSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
19053354cdbSmrg    # dependency line.
19153354cdbSmrg    tr ' ' '
19253354cdbSmrg' < "$tmpdepfile" \
19353354cdbSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
19453354cdbSmrg    tr '
19553354cdbSmrg' ' ' >> $depfile
19653354cdbSmrg    echo >> $depfile
19753354cdbSmrg
19853354cdbSmrg    # The second pass generates a dummy entry for each header file.
19953354cdbSmrg    tr ' ' '
20053354cdbSmrg' < "$tmpdepfile" \
20153354cdbSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
20253354cdbSmrg   >> $depfile
20353354cdbSmrg  else
20453354cdbSmrg    # The sourcefile does not contain any dependencies, so just
20553354cdbSmrg    # store a dummy comment line, to avoid errors with the Makefile
20653354cdbSmrg    # "include basename.Plo" scheme.
20753354cdbSmrg    echo "#dummy" > "$depfile"
20853354cdbSmrg  fi
20953354cdbSmrg  rm -f "$tmpdepfile"
21053354cdbSmrg  ;;
21153354cdbSmrg
21253354cdbSmrgaix)
21353354cdbSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
21453354cdbSmrg  # in a .u file.  In older versions, this file always lives in the
21553354cdbSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
21653354cdbSmrg  # start of each line; $object doesn't have directory information.
21753354cdbSmrg  # Version 6 uses the directory in both cases.
21853354cdbSmrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
21953354cdbSmrg  tmpdepfile="$stripped.u"
22053354cdbSmrg  if test "$libtool" = yes; then
22153354cdbSmrg    "$@" -Wc,-M
22253354cdbSmrg  else
22353354cdbSmrg    "$@" -M
22453354cdbSmrg  fi
22553354cdbSmrg  stat=$?
22653354cdbSmrg
22753354cdbSmrg  if test -f "$tmpdepfile"; then :
22853354cdbSmrg  else
22953354cdbSmrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
23053354cdbSmrg    tmpdepfile="$stripped.u"
23153354cdbSmrg  fi
23253354cdbSmrg
23353354cdbSmrg  if test $stat -eq 0; then :
23453354cdbSmrg  else
23553354cdbSmrg    rm -f "$tmpdepfile"
23653354cdbSmrg    exit $stat
23753354cdbSmrg  fi
23853354cdbSmrg
23953354cdbSmrg  if test -f "$tmpdepfile"; then
24053354cdbSmrg    outname="$stripped.o"
24153354cdbSmrg    # Each line is of the form `foo.o: dependent.h'.
24253354cdbSmrg    # Do two passes, one to just change these to
24353354cdbSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
24453354cdbSmrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
24553354cdbSmrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
24653354cdbSmrg  else
24753354cdbSmrg    # The sourcefile does not contain any dependencies, so just
24853354cdbSmrg    # store a dummy comment line, to avoid errors with the Makefile
24953354cdbSmrg    # "include basename.Plo" scheme.
25053354cdbSmrg    echo "#dummy" > "$depfile"
25153354cdbSmrg  fi
25253354cdbSmrg  rm -f "$tmpdepfile"
25353354cdbSmrg  ;;
25453354cdbSmrg
25553354cdbSmrgicc)
25653354cdbSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
25753354cdbSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
25853354cdbSmrg  # ICC 7.0 will fill foo.d with something like
25953354cdbSmrg  #    foo.o: sub/foo.c
26053354cdbSmrg  #    foo.o: sub/foo.h
26153354cdbSmrg  # which is wrong.  We want:
26253354cdbSmrg  #    sub/foo.o: sub/foo.c
26353354cdbSmrg  #    sub/foo.o: sub/foo.h
26453354cdbSmrg  #    sub/foo.c:
26553354cdbSmrg  #    sub/foo.h:
26653354cdbSmrg  # ICC 7.1 will output
26753354cdbSmrg  #    foo.o: sub/foo.c sub/foo.h
26853354cdbSmrg  # and will wrap long lines using \ :
26953354cdbSmrg  #    foo.o: sub/foo.c ... \
27053354cdbSmrg  #     sub/foo.h ... \
27153354cdbSmrg  #     ...
27253354cdbSmrg
27353354cdbSmrg  "$@" -MD -MF "$tmpdepfile"
27453354cdbSmrg  stat=$?
27553354cdbSmrg  if test $stat -eq 0; then :
27653354cdbSmrg  else
27753354cdbSmrg    rm -f "$tmpdepfile"
27853354cdbSmrg    exit $stat
27953354cdbSmrg  fi
28053354cdbSmrg  rm -f "$depfile"
28153354cdbSmrg  # Each line is of the form `foo.o: dependent.h',
28253354cdbSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
28353354cdbSmrg  # Do two passes, one to just change these to
28453354cdbSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
28553354cdbSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
28653354cdbSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
28753354cdbSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
28853354cdbSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
28953354cdbSmrg    sed -e 's/$/ :/' >> "$depfile"
29053354cdbSmrg  rm -f "$tmpdepfile"
29153354cdbSmrg  ;;
29253354cdbSmrg
29353354cdbSmrghp2)
29453354cdbSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
29553354cdbSmrg  # compilers, which have integrated preprocessors.  The correct option
29653354cdbSmrg  # to use with these is +Maked; it writes dependencies to a file named
29753354cdbSmrg  # 'foo.d', which lands next to the object file, wherever that
29853354cdbSmrg  # happens to be.
29953354cdbSmrg  # Much of this is similar to the tru64 case; see comments there.
30053354cdbSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
30153354cdbSmrg  test "x$dir" = "x$object" && dir=
30253354cdbSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
30353354cdbSmrg  if test "$libtool" = yes; then
30453354cdbSmrg    tmpdepfile1=$dir$base.d
30553354cdbSmrg    tmpdepfile2=$dir.libs/$base.d
30653354cdbSmrg    "$@" -Wc,+Maked
30753354cdbSmrg  else
30853354cdbSmrg    tmpdepfile1=$dir$base.d
30953354cdbSmrg    tmpdepfile2=$dir$base.d
31053354cdbSmrg    "$@" +Maked
31153354cdbSmrg  fi
31253354cdbSmrg  stat=$?
31353354cdbSmrg  if test $stat -eq 0; then :
31453354cdbSmrg  else
31553354cdbSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
31653354cdbSmrg     exit $stat
31753354cdbSmrg  fi
31853354cdbSmrg
31953354cdbSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
32053354cdbSmrg  do
32153354cdbSmrg    test -f "$tmpdepfile" && break
32253354cdbSmrg  done
32353354cdbSmrg  if test -f "$tmpdepfile"; then
32453354cdbSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
32553354cdbSmrg    # Add `dependent.h:' lines.
32653354cdbSmrg    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
32753354cdbSmrg  else
32853354cdbSmrg    echo "#dummy" > "$depfile"
32953354cdbSmrg  fi
33053354cdbSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
33153354cdbSmrg  ;;
33253354cdbSmrg
33353354cdbSmrgtru64)
33453354cdbSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
33553354cdbSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
33653354cdbSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
33753354cdbSmrg   # dependencies in `foo.d' instead, so we check for that too.
33853354cdbSmrg   # Subdirectories are respected.
33953354cdbSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
34053354cdbSmrg   test "x$dir" = "x$object" && dir=
34153354cdbSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
34253354cdbSmrg
34353354cdbSmrg   if test "$libtool" = yes; then
34453354cdbSmrg      # With Tru64 cc, shared objects can also be used to make a
34553354cdbSmrg      # static library.  This mechanism is used in libtool 1.4 series to
34653354cdbSmrg      # handle both shared and static libraries in a single compilation.
34753354cdbSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
34853354cdbSmrg      #
34953354cdbSmrg      # With libtool 1.5 this exception was removed, and libtool now
35053354cdbSmrg      # generates 2 separate objects for the 2 libraries.  These two
35153354cdbSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
35253354cdbSmrg      # in $dir$base.o.d.  We have to check for both files, because
35353354cdbSmrg      # one of the two compilations can be disabled.  We should prefer
35453354cdbSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
35553354cdbSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
35653354cdbSmrg      # the former would cause a distcleancheck panic.
35753354cdbSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
35853354cdbSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
35953354cdbSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
36053354cdbSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
36153354cdbSmrg      "$@" -Wc,-MD
36253354cdbSmrg   else
36353354cdbSmrg      tmpdepfile1=$dir$base.o.d
36453354cdbSmrg      tmpdepfile2=$dir$base.d
36553354cdbSmrg      tmpdepfile3=$dir$base.d
36653354cdbSmrg      tmpdepfile4=$dir$base.d
36753354cdbSmrg      "$@" -MD
36853354cdbSmrg   fi
36953354cdbSmrg
37053354cdbSmrg   stat=$?
37153354cdbSmrg   if test $stat -eq 0; then :
37253354cdbSmrg   else
37353354cdbSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
37453354cdbSmrg      exit $stat
37553354cdbSmrg   fi
37653354cdbSmrg
37753354cdbSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
37853354cdbSmrg   do
37953354cdbSmrg     test -f "$tmpdepfile" && break
38053354cdbSmrg   done
38153354cdbSmrg   if test -f "$tmpdepfile"; then
38253354cdbSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
38353354cdbSmrg      # That's a tab and a space in the [].
38453354cdbSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
38553354cdbSmrg   else
38653354cdbSmrg      echo "#dummy" > "$depfile"
38753354cdbSmrg   fi
38853354cdbSmrg   rm -f "$tmpdepfile"
38953354cdbSmrg   ;;
39053354cdbSmrg
39153354cdbSmrg#nosideeffect)
39253354cdbSmrg  # This comment above is used by automake to tell side-effect
39353354cdbSmrg  # dependency tracking mechanisms from slower ones.
39453354cdbSmrg
39553354cdbSmrgdashmstdout)
39653354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
39753354cdbSmrg  # always write the preprocessed file to stdout, regardless of -o.
39853354cdbSmrg  "$@" || exit $?
39953354cdbSmrg
40053354cdbSmrg  # Remove the call to Libtool.
40153354cdbSmrg  if test "$libtool" = yes; then
40253354cdbSmrg    while test $1 != '--mode=compile'; do
40353354cdbSmrg      shift
40453354cdbSmrg    done
40553354cdbSmrg    shift
40653354cdbSmrg  fi
40753354cdbSmrg
40853354cdbSmrg  # Remove `-o $object'.
40953354cdbSmrg  IFS=" "
41053354cdbSmrg  for arg
41153354cdbSmrg  do
41253354cdbSmrg    case $arg in
41353354cdbSmrg    -o)
41453354cdbSmrg      shift
41553354cdbSmrg      ;;
41653354cdbSmrg    $object)
41753354cdbSmrg      shift
41853354cdbSmrg      ;;
41953354cdbSmrg    *)
42053354cdbSmrg      set fnord "$@" "$arg"
42153354cdbSmrg      shift # fnord
42253354cdbSmrg      shift # $arg
42353354cdbSmrg      ;;
42453354cdbSmrg    esac
42553354cdbSmrg  done
42653354cdbSmrg
42753354cdbSmrg  test -z "$dashmflag" && dashmflag=-M
42853354cdbSmrg  # Require at least two characters before searching for `:'
42953354cdbSmrg  # in the target name.  This is to cope with DOS-style filenames:
43053354cdbSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
43153354cdbSmrg  "$@" $dashmflag |
43253354cdbSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
43353354cdbSmrg  rm -f "$depfile"
43453354cdbSmrg  cat < "$tmpdepfile" > "$depfile"
43553354cdbSmrg  tr ' ' '
43653354cdbSmrg' < "$tmpdepfile" | \
43753354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
43853354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
43953354cdbSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
44053354cdbSmrg  rm -f "$tmpdepfile"
44153354cdbSmrg  ;;
44253354cdbSmrg
44353354cdbSmrgdashXmstdout)
44453354cdbSmrg  # This case only exists to satisfy depend.m4.  It is never actually
44553354cdbSmrg  # run, as this mode is specially recognized in the preamble.
44653354cdbSmrg  exit 1
44753354cdbSmrg  ;;
44853354cdbSmrg
44953354cdbSmrgmakedepend)
45053354cdbSmrg  "$@" || exit $?
45153354cdbSmrg  # Remove any Libtool call
45253354cdbSmrg  if test "$libtool" = yes; then
45353354cdbSmrg    while test $1 != '--mode=compile'; do
45453354cdbSmrg      shift
45553354cdbSmrg    done
45653354cdbSmrg    shift
45753354cdbSmrg  fi
45853354cdbSmrg  # X makedepend
45953354cdbSmrg  shift
46053354cdbSmrg  cleared=no
46153354cdbSmrg  for arg in "$@"; do
46253354cdbSmrg    case $cleared in
46353354cdbSmrg    no)
46453354cdbSmrg      set ""; shift
46553354cdbSmrg      cleared=yes ;;
46653354cdbSmrg    esac
46753354cdbSmrg    case "$arg" in
46853354cdbSmrg    -D*|-I*)
46953354cdbSmrg      set fnord "$@" "$arg"; shift ;;
47053354cdbSmrg    # Strip any option that makedepend may not understand.  Remove
47153354cdbSmrg    # the object too, otherwise makedepend will parse it as a source file.
47253354cdbSmrg    -*|$object)
47353354cdbSmrg      ;;
47453354cdbSmrg    *)
47553354cdbSmrg      set fnord "$@" "$arg"; shift ;;
47653354cdbSmrg    esac
47753354cdbSmrg  done
47853354cdbSmrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
47953354cdbSmrg  touch "$tmpdepfile"
48053354cdbSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
48153354cdbSmrg  rm -f "$depfile"
48253354cdbSmrg  cat < "$tmpdepfile" > "$depfile"
48353354cdbSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
48453354cdbSmrg' | \
48553354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
48653354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
48753354cdbSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
48853354cdbSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
48953354cdbSmrg  ;;
49053354cdbSmrg
49153354cdbSmrgcpp)
49253354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
49353354cdbSmrg  # always write the preprocessed file to stdout.
49453354cdbSmrg  "$@" || exit $?
49553354cdbSmrg
49653354cdbSmrg  # Remove the call to Libtool.
49753354cdbSmrg  if test "$libtool" = yes; then
49853354cdbSmrg    while test $1 != '--mode=compile'; do
49953354cdbSmrg      shift
50053354cdbSmrg    done
50153354cdbSmrg    shift
50253354cdbSmrg  fi
50353354cdbSmrg
50453354cdbSmrg  # Remove `-o $object'.
50553354cdbSmrg  IFS=" "
50653354cdbSmrg  for arg
50753354cdbSmrg  do
50853354cdbSmrg    case $arg in
50953354cdbSmrg    -o)
51053354cdbSmrg      shift
51153354cdbSmrg      ;;
51253354cdbSmrg    $object)
51353354cdbSmrg      shift
51453354cdbSmrg      ;;
51553354cdbSmrg    *)
51653354cdbSmrg      set fnord "$@" "$arg"
51753354cdbSmrg      shift # fnord
51853354cdbSmrg      shift # $arg
51953354cdbSmrg      ;;
52053354cdbSmrg    esac
52153354cdbSmrg  done
52253354cdbSmrg
52353354cdbSmrg  "$@" -E |
52453354cdbSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
52553354cdbSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
52653354cdbSmrg    sed '$ s: \\$::' > "$tmpdepfile"
52753354cdbSmrg  rm -f "$depfile"
52853354cdbSmrg  echo "$object : \\" > "$depfile"
52953354cdbSmrg  cat < "$tmpdepfile" >> "$depfile"
53053354cdbSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
53153354cdbSmrg  rm -f "$tmpdepfile"
53253354cdbSmrg  ;;
53353354cdbSmrg
53453354cdbSmrgmsvisualcpp)
53553354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
53653354cdbSmrg  # always write the preprocessed file to stdout, regardless of -o,
53753354cdbSmrg  # because we must use -o when running libtool.
53853354cdbSmrg  "$@" || exit $?
53953354cdbSmrg  IFS=" "
54053354cdbSmrg  for arg
54153354cdbSmrg  do
54253354cdbSmrg    case "$arg" in
54353354cdbSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
54453354cdbSmrg	set fnord "$@"
54553354cdbSmrg	shift
54653354cdbSmrg	shift
54753354cdbSmrg	;;
54853354cdbSmrg    *)
54953354cdbSmrg	set fnord "$@" "$arg"
55053354cdbSmrg	shift
55153354cdbSmrg	shift
55253354cdbSmrg	;;
55353354cdbSmrg    esac
55453354cdbSmrg  done
55553354cdbSmrg  "$@" -E |
55653354cdbSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
55753354cdbSmrg  rm -f "$depfile"
55853354cdbSmrg  echo "$object : \\" > "$depfile"
55953354cdbSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
56053354cdbSmrg  echo "	" >> "$depfile"
56153354cdbSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
56253354cdbSmrg  rm -f "$tmpdepfile"
56353354cdbSmrg  ;;
56453354cdbSmrg
56553354cdbSmrgnone)
56653354cdbSmrg  exec "$@"
56753354cdbSmrg  ;;
56853354cdbSmrg
56953354cdbSmrg*)
57053354cdbSmrg  echo "Unknown depmode $depmode" 1>&2
57153354cdbSmrg  exit 1
57253354cdbSmrg  ;;
57353354cdbSmrgesac
57453354cdbSmrg
57553354cdbSmrgexit 0
57653354cdbSmrg
57753354cdbSmrg# Local Variables:
57853354cdbSmrg# mode: shell-script
57953354cdbSmrg# sh-indentation: 2
58053354cdbSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
58153354cdbSmrg# time-stamp-start: "scriptversion="
58253354cdbSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
58353354cdbSmrg# time-stamp-end: "$"
58453354cdbSmrg# End:
585