depcomp revision 50f2e948
145bc899bSmrg#! /bin/sh
245bc899bSmrg# depcomp - compile a program generating dependencies as side-effects
345bc899bSmrg
450f2e948Smrgscriptversion=2007-03-29.01
545bc899bSmrg
650f2e948Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
750f2e948Smrg# Foundation, Inc.
845bc899bSmrg
945bc899bSmrg# This program is free software; you can redistribute it and/or modify
1045bc899bSmrg# it under the terms of the GNU General Public License as published by
1145bc899bSmrg# the Free Software Foundation; either version 2, or (at your option)
1245bc899bSmrg# any later version.
1345bc899bSmrg
1445bc899bSmrg# This program is distributed in the hope that it will be useful,
1545bc899bSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1645bc899bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1745bc899bSmrg# GNU General Public License for more details.
1845bc899bSmrg
1945bc899bSmrg# You should have received a copy of the GNU General Public License
2045bc899bSmrg# along with this program; if not, write to the Free Software
2145bc899bSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
2245bc899bSmrg# 02110-1301, USA.
2345bc899bSmrg
2445bc899bSmrg# As a special exception to the GNU General Public License, if you
2545bc899bSmrg# distribute this file as part of a program that contains a
2645bc899bSmrg# configuration script generated by Autoconf, you may include it under
2745bc899bSmrg# the same distribution terms that you use for the rest of that program.
2845bc899bSmrg
2945bc899bSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
3045bc899bSmrg
3145bc899bSmrgcase $1 in
3245bc899bSmrg  '')
3345bc899bSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3445bc899bSmrg     exit 1;
3545bc899bSmrg     ;;
3645bc899bSmrg  -h | --h*)
3745bc899bSmrg    cat <<\EOF
3845bc899bSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3945bc899bSmrg
4045bc899bSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
4145bc899bSmrgas side-effects.
4245bc899bSmrg
4345bc899bSmrgEnvironment variables:
4445bc899bSmrg  depmode     Dependency tracking mode.
4545bc899bSmrg  source      Source file read by `PROGRAMS ARGS'.
4645bc899bSmrg  object      Object file output by `PROGRAMS ARGS'.
4745bc899bSmrg  DEPDIR      directory where to store dependencies.
4845bc899bSmrg  depfile     Dependency file to output.
4945bc899bSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
5045bc899bSmrg  libtool     Whether libtool is used (yes/no).
5145bc899bSmrg
5245bc899bSmrgReport bugs to <bug-automake@gnu.org>.
5345bc899bSmrgEOF
5445bc899bSmrg    exit $?
5545bc899bSmrg    ;;
5645bc899bSmrg  -v | --v*)
5745bc899bSmrg    echo "depcomp $scriptversion"
5845bc899bSmrg    exit $?
5945bc899bSmrg    ;;
6045bc899bSmrgesac
6145bc899bSmrg
6245bc899bSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6345bc899bSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6445bc899bSmrg  exit 1
6545bc899bSmrgfi
6645bc899bSmrg
6745bc899bSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6845bc899bSmrgdepfile=${depfile-`echo "$object" |
6945bc899bSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
7045bc899bSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
7145bc899bSmrg
7245bc899bSmrgrm -f "$tmpdepfile"
7345bc899bSmrg
7445bc899bSmrg# Some modes work just like other modes, but use different flags.  We
7545bc899bSmrg# parameterize here, but still list the modes in the big case below,
7645bc899bSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7745bc899bSmrg# here, because this file can only contain one case statement.
7845bc899bSmrgif test "$depmode" = hp; then
7945bc899bSmrg  # HP compiler uses -M and no extra arg.
8045bc899bSmrg  gccflag=-M
8145bc899bSmrg  depmode=gcc
8245bc899bSmrgfi
8345bc899bSmrg
8445bc899bSmrgif test "$depmode" = dashXmstdout; then
8545bc899bSmrg   # This is just like dashmstdout with a different argument.
8645bc899bSmrg   dashmflag=-xM
8745bc899bSmrg   depmode=dashmstdout
8845bc899bSmrgfi
8945bc899bSmrg
9045bc899bSmrgcase "$depmode" in
9145bc899bSmrggcc3)
9245bc899bSmrg## gcc 3 implements dependency tracking that does exactly what
9345bc899bSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
9445bc899bSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
9550f2e948Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
9650f2e948Smrg## the command line argument order; so add the flags where they
9750f2e948Smrg## appear in depend2.am.  Note that the slowdown incurred here
9850f2e948Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
9950f2e948Smrg  for arg
10050f2e948Smrg  do
10150f2e948Smrg    case $arg in
10250f2e948Smrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
10350f2e948Smrg    *)  set fnord "$@" "$arg" ;;
10450f2e948Smrg    esac
10550f2e948Smrg    shift # fnord
10650f2e948Smrg    shift # $arg
10750f2e948Smrg  done
10850f2e948Smrg  "$@"
10945bc899bSmrg  stat=$?
11045bc899bSmrg  if test $stat -eq 0; then :
11145bc899bSmrg  else
11245bc899bSmrg    rm -f "$tmpdepfile"
11345bc899bSmrg    exit $stat
11445bc899bSmrg  fi
11545bc899bSmrg  mv "$tmpdepfile" "$depfile"
11645bc899bSmrg  ;;
11745bc899bSmrg
11845bc899bSmrggcc)
11945bc899bSmrg## There are various ways to get dependency output from gcc.  Here's
12045bc899bSmrg## why we pick this rather obscure method:
12145bc899bSmrg## - Don't want to use -MD because we'd like the dependencies to end
12245bc899bSmrg##   up in a subdir.  Having to rename by hand is ugly.
12345bc899bSmrg##   (We might end up doing this anyway to support other compilers.)
12445bc899bSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
12545bc899bSmrg##   -MM, not -M (despite what the docs say).
12645bc899bSmrg## - Using -M directly means running the compiler twice (even worse
12745bc899bSmrg##   than renaming).
12845bc899bSmrg  if test -z "$gccflag"; then
12945bc899bSmrg    gccflag=-MD,
13045bc899bSmrg  fi
13145bc899bSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
13245bc899bSmrg  stat=$?
13345bc899bSmrg  if test $stat -eq 0; then :
13445bc899bSmrg  else
13545bc899bSmrg    rm -f "$tmpdepfile"
13645bc899bSmrg    exit $stat
13745bc899bSmrg  fi
13845bc899bSmrg  rm -f "$depfile"
13945bc899bSmrg  echo "$object : \\" > "$depfile"
14045bc899bSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
14145bc899bSmrg## The second -e expression handles DOS-style file names with drive letters.
14245bc899bSmrg  sed -e 's/^[^:]*: / /' \
14345bc899bSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
14445bc899bSmrg## This next piece of magic avoids the `deleted header file' problem.
14545bc899bSmrg## The problem is that when a header file which appears in a .P file
14645bc899bSmrg## is deleted, the dependency causes make to die (because there is
14745bc899bSmrg## typically no way to rebuild the header).  We avoid this by adding
14845bc899bSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
14945bc899bSmrg## this for us directly.
15045bc899bSmrg  tr ' ' '
15145bc899bSmrg' < "$tmpdepfile" |
15245bc899bSmrg## Some versions of gcc put a space before the `:'.  On the theory
15345bc899bSmrg## that the space means something, we add a space to the output as
15445bc899bSmrg## well.
15545bc899bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
15645bc899bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
15745bc899bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
15845bc899bSmrg  rm -f "$tmpdepfile"
15945bc899bSmrg  ;;
16045bc899bSmrg
16145bc899bSmrghp)
16245bc899bSmrg  # This case exists only to let depend.m4 do its work.  It works by
16345bc899bSmrg  # looking at the text of this script.  This case will never be run,
16445bc899bSmrg  # since it is checked for above.
16545bc899bSmrg  exit 1
16645bc899bSmrg  ;;
16745bc899bSmrg
16845bc899bSmrgsgi)
16945bc899bSmrg  if test "$libtool" = yes; then
17045bc899bSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
17145bc899bSmrg  else
17245bc899bSmrg    "$@" -MDupdate "$tmpdepfile"
17345bc899bSmrg  fi
17445bc899bSmrg  stat=$?
17545bc899bSmrg  if test $stat -eq 0; then :
17645bc899bSmrg  else
17745bc899bSmrg    rm -f "$tmpdepfile"
17845bc899bSmrg    exit $stat
17945bc899bSmrg  fi
18045bc899bSmrg  rm -f "$depfile"
18145bc899bSmrg
18245bc899bSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
18345bc899bSmrg    echo "$object : \\" > "$depfile"
18445bc899bSmrg
18545bc899bSmrg    # Clip off the initial element (the dependent).  Don't try to be
18645bc899bSmrg    # clever and replace this with sed code, as IRIX sed won't handle
18745bc899bSmrg    # lines with more than a fixed number of characters (4096 in
18845bc899bSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
18945bc899bSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
19045bc899bSmrg    # dependency line.
19145bc899bSmrg    tr ' ' '
19245bc899bSmrg' < "$tmpdepfile" \
19345bc899bSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
19445bc899bSmrg    tr '
19545bc899bSmrg' ' ' >> $depfile
19645bc899bSmrg    echo >> $depfile
19745bc899bSmrg
19845bc899bSmrg    # The second pass generates a dummy entry for each header file.
19945bc899bSmrg    tr ' ' '
20045bc899bSmrg' < "$tmpdepfile" \
20145bc899bSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
20245bc899bSmrg   >> $depfile
20345bc899bSmrg  else
20445bc899bSmrg    # The sourcefile does not contain any dependencies, so just
20545bc899bSmrg    # store a dummy comment line, to avoid errors with the Makefile
20645bc899bSmrg    # "include basename.Plo" scheme.
20745bc899bSmrg    echo "#dummy" > "$depfile"
20845bc899bSmrg  fi
20945bc899bSmrg  rm -f "$tmpdepfile"
21045bc899bSmrg  ;;
21145bc899bSmrg
21245bc899bSmrgaix)
21345bc899bSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
21445bc899bSmrg  # in a .u file.  In older versions, this file always lives in the
21545bc899bSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
21645bc899bSmrg  # start of each line; $object doesn't have directory information.
21745bc899bSmrg  # Version 6 uses the directory in both cases.
21850f2e948Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
21950f2e948Smrg  test "x$dir" = "x$object" && dir=
22050f2e948Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
22145bc899bSmrg  if test "$libtool" = yes; then
22250f2e948Smrg    tmpdepfile1=$dir$base.u
22350f2e948Smrg    tmpdepfile2=$base.u
22450f2e948Smrg    tmpdepfile3=$dir.libs/$base.u
22545bc899bSmrg    "$@" -Wc,-M
22645bc899bSmrg  else
22750f2e948Smrg    tmpdepfile1=$dir$base.u
22850f2e948Smrg    tmpdepfile2=$dir$base.u
22950f2e948Smrg    tmpdepfile3=$dir$base.u
23045bc899bSmrg    "$@" -M
23145bc899bSmrg  fi
23245bc899bSmrg  stat=$?
23345bc899bSmrg
23445bc899bSmrg  if test $stat -eq 0; then :
23545bc899bSmrg  else
23650f2e948Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
23745bc899bSmrg    exit $stat
23845bc899bSmrg  fi
23945bc899bSmrg
24050f2e948Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
24150f2e948Smrg  do
24250f2e948Smrg    test -f "$tmpdepfile" && break
24350f2e948Smrg  done
24445bc899bSmrg  if test -f "$tmpdepfile"; then
24545bc899bSmrg    # Each line is of the form `foo.o: dependent.h'.
24645bc899bSmrg    # Do two passes, one to just change these to
24745bc899bSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
24850f2e948Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
24950f2e948Smrg    # That's a tab and a space in the [].
25050f2e948Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
25145bc899bSmrg  else
25245bc899bSmrg    # The sourcefile does not contain any dependencies, so just
25345bc899bSmrg    # store a dummy comment line, to avoid errors with the Makefile
25445bc899bSmrg    # "include basename.Plo" scheme.
25545bc899bSmrg    echo "#dummy" > "$depfile"
25645bc899bSmrg  fi
25745bc899bSmrg  rm -f "$tmpdepfile"
25845bc899bSmrg  ;;
25945bc899bSmrg
26045bc899bSmrgicc)
26145bc899bSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
26245bc899bSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
26345bc899bSmrg  # ICC 7.0 will fill foo.d with something like
26445bc899bSmrg  #    foo.o: sub/foo.c
26545bc899bSmrg  #    foo.o: sub/foo.h
26645bc899bSmrg  # which is wrong.  We want:
26745bc899bSmrg  #    sub/foo.o: sub/foo.c
26845bc899bSmrg  #    sub/foo.o: sub/foo.h
26945bc899bSmrg  #    sub/foo.c:
27045bc899bSmrg  #    sub/foo.h:
27145bc899bSmrg  # ICC 7.1 will output
27245bc899bSmrg  #    foo.o: sub/foo.c sub/foo.h
27345bc899bSmrg  # and will wrap long lines using \ :
27445bc899bSmrg  #    foo.o: sub/foo.c ... \
27545bc899bSmrg  #     sub/foo.h ... \
27645bc899bSmrg  #     ...
27745bc899bSmrg
27845bc899bSmrg  "$@" -MD -MF "$tmpdepfile"
27945bc899bSmrg  stat=$?
28045bc899bSmrg  if test $stat -eq 0; then :
28145bc899bSmrg  else
28245bc899bSmrg    rm -f "$tmpdepfile"
28345bc899bSmrg    exit $stat
28445bc899bSmrg  fi
28545bc899bSmrg  rm -f "$depfile"
28645bc899bSmrg  # Each line is of the form `foo.o: dependent.h',
28745bc899bSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
28845bc899bSmrg  # Do two passes, one to just change these to
28945bc899bSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
29045bc899bSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
29145bc899bSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
29245bc899bSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
29345bc899bSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
29445bc899bSmrg    sed -e 's/$/ :/' >> "$depfile"
29545bc899bSmrg  rm -f "$tmpdepfile"
29645bc899bSmrg  ;;
29745bc899bSmrg
29850f2e948Smrghp2)
29950f2e948Smrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
30050f2e948Smrg  # compilers, which have integrated preprocessors.  The correct option
30150f2e948Smrg  # to use with these is +Maked; it writes dependencies to a file named
30250f2e948Smrg  # 'foo.d', which lands next to the object file, wherever that
30350f2e948Smrg  # happens to be.
30450f2e948Smrg  # Much of this is similar to the tru64 case; see comments there.
30550f2e948Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
30650f2e948Smrg  test "x$dir" = "x$object" && dir=
30750f2e948Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
30850f2e948Smrg  if test "$libtool" = yes; then
30950f2e948Smrg    tmpdepfile1=$dir$base.d
31050f2e948Smrg    tmpdepfile2=$dir.libs/$base.d
31150f2e948Smrg    "$@" -Wc,+Maked
31250f2e948Smrg  else
31350f2e948Smrg    tmpdepfile1=$dir$base.d
31450f2e948Smrg    tmpdepfile2=$dir$base.d
31550f2e948Smrg    "$@" +Maked
31650f2e948Smrg  fi
31750f2e948Smrg  stat=$?
31850f2e948Smrg  if test $stat -eq 0; then :
31950f2e948Smrg  else
32050f2e948Smrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
32150f2e948Smrg     exit $stat
32250f2e948Smrg  fi
32350f2e948Smrg
32450f2e948Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
32550f2e948Smrg  do
32650f2e948Smrg    test -f "$tmpdepfile" && break
32750f2e948Smrg  done
32850f2e948Smrg  if test -f "$tmpdepfile"; then
32950f2e948Smrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
33050f2e948Smrg    # Add `dependent.h:' lines.
33150f2e948Smrg    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
33250f2e948Smrg  else
33350f2e948Smrg    echo "#dummy" > "$depfile"
33450f2e948Smrg  fi
33550f2e948Smrg  rm -f "$tmpdepfile" "$tmpdepfile2"
33650f2e948Smrg  ;;
33750f2e948Smrg
33845bc899bSmrgtru64)
33945bc899bSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
34045bc899bSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
34145bc899bSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
34245bc899bSmrg   # dependencies in `foo.d' instead, so we check for that too.
34345bc899bSmrg   # Subdirectories are respected.
34445bc899bSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
34545bc899bSmrg   test "x$dir" = "x$object" && dir=
34645bc899bSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
34745bc899bSmrg
34845bc899bSmrg   if test "$libtool" = yes; then
34945bc899bSmrg      # With Tru64 cc, shared objects can also be used to make a
35050f2e948Smrg      # static library.  This mechanism is used in libtool 1.4 series to
35145bc899bSmrg      # handle both shared and static libraries in a single compilation.
35245bc899bSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
35345bc899bSmrg      #
35445bc899bSmrg      # With libtool 1.5 this exception was removed, and libtool now
35545bc899bSmrg      # generates 2 separate objects for the 2 libraries.  These two
35650f2e948Smrg      # compilations output dependencies in $dir.libs/$base.o.d and
35745bc899bSmrg      # in $dir$base.o.d.  We have to check for both files, because
35845bc899bSmrg      # one of the two compilations can be disabled.  We should prefer
35945bc899bSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
36045bc899bSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
36145bc899bSmrg      # the former would cause a distcleancheck panic.
36245bc899bSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
36345bc899bSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
36445bc899bSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
36545bc899bSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
36645bc899bSmrg      "$@" -Wc,-MD
36745bc899bSmrg   else
36845bc899bSmrg      tmpdepfile1=$dir$base.o.d
36945bc899bSmrg      tmpdepfile2=$dir$base.d
37045bc899bSmrg      tmpdepfile3=$dir$base.d
37145bc899bSmrg      tmpdepfile4=$dir$base.d
37245bc899bSmrg      "$@" -MD
37345bc899bSmrg   fi
37445bc899bSmrg
37545bc899bSmrg   stat=$?
37645bc899bSmrg   if test $stat -eq 0; then :
37745bc899bSmrg   else
37845bc899bSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
37945bc899bSmrg      exit $stat
38045bc899bSmrg   fi
38145bc899bSmrg
38245bc899bSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
38345bc899bSmrg   do
38445bc899bSmrg     test -f "$tmpdepfile" && break
38545bc899bSmrg   done
38645bc899bSmrg   if test -f "$tmpdepfile"; then
38745bc899bSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
38845bc899bSmrg      # That's a tab and a space in the [].
38945bc899bSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
39045bc899bSmrg   else
39145bc899bSmrg      echo "#dummy" > "$depfile"
39245bc899bSmrg   fi
39345bc899bSmrg   rm -f "$tmpdepfile"
39445bc899bSmrg   ;;
39545bc899bSmrg
39645bc899bSmrg#nosideeffect)
39745bc899bSmrg  # This comment above is used by automake to tell side-effect
39845bc899bSmrg  # dependency tracking mechanisms from slower ones.
39945bc899bSmrg
40045bc899bSmrgdashmstdout)
40145bc899bSmrg  # Important note: in order to support this mode, a compiler *must*
40245bc899bSmrg  # always write the preprocessed file to stdout, regardless of -o.
40345bc899bSmrg  "$@" || exit $?
40445bc899bSmrg
40545bc899bSmrg  # Remove the call to Libtool.
40645bc899bSmrg  if test "$libtool" = yes; then
40745bc899bSmrg    while test $1 != '--mode=compile'; do
40845bc899bSmrg      shift
40945bc899bSmrg    done
41045bc899bSmrg    shift
41145bc899bSmrg  fi
41245bc899bSmrg
41345bc899bSmrg  # Remove `-o $object'.
41445bc899bSmrg  IFS=" "
41545bc899bSmrg  for arg
41645bc899bSmrg  do
41745bc899bSmrg    case $arg in
41845bc899bSmrg    -o)
41945bc899bSmrg      shift
42045bc899bSmrg      ;;
42145bc899bSmrg    $object)
42245bc899bSmrg      shift
42345bc899bSmrg      ;;
42445bc899bSmrg    *)
42545bc899bSmrg      set fnord "$@" "$arg"
42645bc899bSmrg      shift # fnord
42745bc899bSmrg      shift # $arg
42845bc899bSmrg      ;;
42945bc899bSmrg    esac
43045bc899bSmrg  done
43145bc899bSmrg
43245bc899bSmrg  test -z "$dashmflag" && dashmflag=-M
43345bc899bSmrg  # Require at least two characters before searching for `:'
43445bc899bSmrg  # in the target name.  This is to cope with DOS-style filenames:
43545bc899bSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
43645bc899bSmrg  "$@" $dashmflag |
43745bc899bSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
43845bc899bSmrg  rm -f "$depfile"
43945bc899bSmrg  cat < "$tmpdepfile" > "$depfile"
44045bc899bSmrg  tr ' ' '
44145bc899bSmrg' < "$tmpdepfile" | \
44245bc899bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
44345bc899bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
44445bc899bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
44545bc899bSmrg  rm -f "$tmpdepfile"
44645bc899bSmrg  ;;
44745bc899bSmrg
44845bc899bSmrgdashXmstdout)
44945bc899bSmrg  # This case only exists to satisfy depend.m4.  It is never actually
45045bc899bSmrg  # run, as this mode is specially recognized in the preamble.
45145bc899bSmrg  exit 1
45245bc899bSmrg  ;;
45345bc899bSmrg
45445bc899bSmrgmakedepend)
45545bc899bSmrg  "$@" || exit $?
45645bc899bSmrg  # Remove any Libtool call
45745bc899bSmrg  if test "$libtool" = yes; then
45845bc899bSmrg    while test $1 != '--mode=compile'; do
45945bc899bSmrg      shift
46045bc899bSmrg    done
46145bc899bSmrg    shift
46245bc899bSmrg  fi
46345bc899bSmrg  # X makedepend
46445bc899bSmrg  shift
46545bc899bSmrg  cleared=no
46645bc899bSmrg  for arg in "$@"; do
46745bc899bSmrg    case $cleared in
46845bc899bSmrg    no)
46945bc899bSmrg      set ""; shift
47045bc899bSmrg      cleared=yes ;;
47145bc899bSmrg    esac
47245bc899bSmrg    case "$arg" in
47345bc899bSmrg    -D*|-I*)
47445bc899bSmrg      set fnord "$@" "$arg"; shift ;;
47545bc899bSmrg    # Strip any option that makedepend may not understand.  Remove
47645bc899bSmrg    # the object too, otherwise makedepend will parse it as a source file.
47745bc899bSmrg    -*|$object)
47845bc899bSmrg      ;;
47945bc899bSmrg    *)
48045bc899bSmrg      set fnord "$@" "$arg"; shift ;;
48145bc899bSmrg    esac
48245bc899bSmrg  done
48345bc899bSmrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
48445bc899bSmrg  touch "$tmpdepfile"
48545bc899bSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
48645bc899bSmrg  rm -f "$depfile"
48745bc899bSmrg  cat < "$tmpdepfile" > "$depfile"
48845bc899bSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
48945bc899bSmrg' | \
49045bc899bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
49145bc899bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
49245bc899bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
49345bc899bSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
49445bc899bSmrg  ;;
49545bc899bSmrg
49645bc899bSmrgcpp)
49745bc899bSmrg  # Important note: in order to support this mode, a compiler *must*
49845bc899bSmrg  # always write the preprocessed file to stdout.
49945bc899bSmrg  "$@" || exit $?
50045bc899bSmrg
50145bc899bSmrg  # Remove the call to Libtool.
50245bc899bSmrg  if test "$libtool" = yes; then
50345bc899bSmrg    while test $1 != '--mode=compile'; do
50445bc899bSmrg      shift
50545bc899bSmrg    done
50645bc899bSmrg    shift
50745bc899bSmrg  fi
50845bc899bSmrg
50945bc899bSmrg  # Remove `-o $object'.
51045bc899bSmrg  IFS=" "
51145bc899bSmrg  for arg
51245bc899bSmrg  do
51345bc899bSmrg    case $arg in
51445bc899bSmrg    -o)
51545bc899bSmrg      shift
51645bc899bSmrg      ;;
51745bc899bSmrg    $object)
51845bc899bSmrg      shift
51945bc899bSmrg      ;;
52045bc899bSmrg    *)
52145bc899bSmrg      set fnord "$@" "$arg"
52245bc899bSmrg      shift # fnord
52345bc899bSmrg      shift # $arg
52445bc899bSmrg      ;;
52545bc899bSmrg    esac
52645bc899bSmrg  done
52745bc899bSmrg
52845bc899bSmrg  "$@" -E |
52945bc899bSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
53045bc899bSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
53145bc899bSmrg    sed '$ s: \\$::' > "$tmpdepfile"
53245bc899bSmrg  rm -f "$depfile"
53345bc899bSmrg  echo "$object : \\" > "$depfile"
53445bc899bSmrg  cat < "$tmpdepfile" >> "$depfile"
53545bc899bSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
53645bc899bSmrg  rm -f "$tmpdepfile"
53745bc899bSmrg  ;;
53845bc899bSmrg
53945bc899bSmrgmsvisualcpp)
54045bc899bSmrg  # Important note: in order to support this mode, a compiler *must*
54145bc899bSmrg  # always write the preprocessed file to stdout, regardless of -o,
54245bc899bSmrg  # because we must use -o when running libtool.
54345bc899bSmrg  "$@" || exit $?
54445bc899bSmrg  IFS=" "
54545bc899bSmrg  for arg
54645bc899bSmrg  do
54745bc899bSmrg    case "$arg" in
54845bc899bSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
54945bc899bSmrg	set fnord "$@"
55045bc899bSmrg	shift
55145bc899bSmrg	shift
55245bc899bSmrg	;;
55345bc899bSmrg    *)
55445bc899bSmrg	set fnord "$@" "$arg"
55545bc899bSmrg	shift
55645bc899bSmrg	shift
55745bc899bSmrg	;;
55845bc899bSmrg    esac
55945bc899bSmrg  done
56045bc899bSmrg  "$@" -E |
56145bc899bSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
56245bc899bSmrg  rm -f "$depfile"
56345bc899bSmrg  echo "$object : \\" > "$depfile"
56445bc899bSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
56545bc899bSmrg  echo "	" >> "$depfile"
56645bc899bSmrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
56745bc899bSmrg  rm -f "$tmpdepfile"
56845bc899bSmrg  ;;
56945bc899bSmrg
57045bc899bSmrgnone)
57145bc899bSmrg  exec "$@"
57245bc899bSmrg  ;;
57345bc899bSmrg
57445bc899bSmrg*)
57545bc899bSmrg  echo "Unknown depmode $depmode" 1>&2
57645bc899bSmrg  exit 1
57745bc899bSmrg  ;;
57845bc899bSmrgesac
57945bc899bSmrg
58045bc899bSmrgexit 0
58145bc899bSmrg
58245bc899bSmrg# Local Variables:
58345bc899bSmrg# mode: shell-script
58445bc899bSmrg# sh-indentation: 2
58545bc899bSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
58645bc899bSmrg# time-stamp-start: "scriptversion="
58745bc899bSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
58845bc899bSmrg# time-stamp-end: "$"
58945bc899bSmrg# End:
590