depcomp revision 61c899d4
153354cdbSmrg#! /bin/sh
253354cdbSmrg# depcomp - compile a program generating dependencies as side-effects
353354cdbSmrg
461c899d4Smrgscriptversion=2011-12-04.11; # UTC
553354cdbSmrg
661c899d4Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
761c899d4Smrg# 2011 Free Software 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
2086bbecbeSmrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
2153354cdbSmrg
2253354cdbSmrg# As a special exception to the GNU General Public License, if you
2353354cdbSmrg# distribute this file as part of a program that contains a
2453354cdbSmrg# configuration script generated by Autoconf, you may include it under
2553354cdbSmrg# the same distribution terms that you use for the rest of that program.
2653354cdbSmrg
2753354cdbSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
2853354cdbSmrg
2953354cdbSmrgcase $1 in
3053354cdbSmrg  '')
3153354cdbSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3253354cdbSmrg     exit 1;
3353354cdbSmrg     ;;
3453354cdbSmrg  -h | --h*)
3553354cdbSmrg    cat <<\EOF
3653354cdbSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3753354cdbSmrg
3853354cdbSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
3953354cdbSmrgas side-effects.
4053354cdbSmrg
4153354cdbSmrgEnvironment variables:
4253354cdbSmrg  depmode     Dependency tracking mode.
4353354cdbSmrg  source      Source file read by `PROGRAMS ARGS'.
4453354cdbSmrg  object      Object file output by `PROGRAMS ARGS'.
4553354cdbSmrg  DEPDIR      directory where to store dependencies.
4653354cdbSmrg  depfile     Dependency file to output.
4761c899d4Smrg  tmpdepfile  Temporary file to use when outputting dependencies.
4853354cdbSmrg  libtool     Whether libtool is used (yes/no).
4953354cdbSmrg
5053354cdbSmrgReport bugs to <bug-automake@gnu.org>.
5153354cdbSmrgEOF
5253354cdbSmrg    exit $?
5353354cdbSmrg    ;;
5453354cdbSmrg  -v | --v*)
5553354cdbSmrg    echo "depcomp $scriptversion"
5653354cdbSmrg    exit $?
5753354cdbSmrg    ;;
5853354cdbSmrgesac
5953354cdbSmrg
6053354cdbSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6153354cdbSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6253354cdbSmrg  exit 1
6353354cdbSmrgfi
6453354cdbSmrg
6553354cdbSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6653354cdbSmrgdepfile=${depfile-`echo "$object" |
6753354cdbSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
6853354cdbSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
6953354cdbSmrg
7053354cdbSmrgrm -f "$tmpdepfile"
7153354cdbSmrg
7253354cdbSmrg# Some modes work just like other modes, but use different flags.  We
7353354cdbSmrg# parameterize here, but still list the modes in the big case below,
7453354cdbSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7553354cdbSmrg# here, because this file can only contain one case statement.
7653354cdbSmrgif test "$depmode" = hp; then
7753354cdbSmrg  # HP compiler uses -M and no extra arg.
7853354cdbSmrg  gccflag=-M
7953354cdbSmrg  depmode=gcc
8053354cdbSmrgfi
8153354cdbSmrg
8253354cdbSmrgif test "$depmode" = dashXmstdout; then
8353354cdbSmrg   # This is just like dashmstdout with a different argument.
8453354cdbSmrg   dashmflag=-xM
8553354cdbSmrg   depmode=dashmstdout
8653354cdbSmrgfi
8753354cdbSmrg
8886bbecbeSmrgcygpath_u="cygpath -u -f -"
8986bbecbeSmrgif test "$depmode" = msvcmsys; then
9086bbecbeSmrg   # This is just like msvisualcpp but w/o cygpath translation.
9186bbecbeSmrg   # Just convert the backslash-escaped backslashes to single forward
9286bbecbeSmrg   # slashes to satisfy depend.m4
9361c899d4Smrg   cygpath_u='sed s,\\\\,/,g'
9486bbecbeSmrg   depmode=msvisualcpp
9586bbecbeSmrgfi
9686bbecbeSmrg
9761c899d4Smrgif test "$depmode" = msvc7msys; then
9861c899d4Smrg   # This is just like msvc7 but w/o cygpath translation.
9961c899d4Smrg   # Just convert the backslash-escaped backslashes to single forward
10061c899d4Smrg   # slashes to satisfy depend.m4
10161c899d4Smrg   cygpath_u='sed s,\\\\,/,g'
10261c899d4Smrg   depmode=msvc7
10361c899d4Smrgfi
10461c899d4Smrg
10553354cdbSmrgcase "$depmode" in
10653354cdbSmrggcc3)
10753354cdbSmrg## gcc 3 implements dependency tracking that does exactly what
10853354cdbSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
10953354cdbSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
11053354cdbSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
11153354cdbSmrg## the command line argument order; so add the flags where they
11253354cdbSmrg## appear in depend2.am.  Note that the slowdown incurred here
11353354cdbSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
11453354cdbSmrg  for arg
11553354cdbSmrg  do
11653354cdbSmrg    case $arg in
11753354cdbSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
11853354cdbSmrg    *)  set fnord "$@" "$arg" ;;
11953354cdbSmrg    esac
12053354cdbSmrg    shift # fnord
12153354cdbSmrg    shift # $arg
12253354cdbSmrg  done
12353354cdbSmrg  "$@"
12453354cdbSmrg  stat=$?
12553354cdbSmrg  if test $stat -eq 0; then :
12653354cdbSmrg  else
12753354cdbSmrg    rm -f "$tmpdepfile"
12853354cdbSmrg    exit $stat
12953354cdbSmrg  fi
13053354cdbSmrg  mv "$tmpdepfile" "$depfile"
13153354cdbSmrg  ;;
13253354cdbSmrg
13353354cdbSmrggcc)
13453354cdbSmrg## There are various ways to get dependency output from gcc.  Here's
13553354cdbSmrg## why we pick this rather obscure method:
13653354cdbSmrg## - Don't want to use -MD because we'd like the dependencies to end
13753354cdbSmrg##   up in a subdir.  Having to rename by hand is ugly.
13853354cdbSmrg##   (We might end up doing this anyway to support other compilers.)
13953354cdbSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
14053354cdbSmrg##   -MM, not -M (despite what the docs say).
14153354cdbSmrg## - Using -M directly means running the compiler twice (even worse
14253354cdbSmrg##   than renaming).
14353354cdbSmrg  if test -z "$gccflag"; then
14453354cdbSmrg    gccflag=-MD,
14553354cdbSmrg  fi
14653354cdbSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
14753354cdbSmrg  stat=$?
14853354cdbSmrg  if test $stat -eq 0; then :
14953354cdbSmrg  else
15053354cdbSmrg    rm -f "$tmpdepfile"
15153354cdbSmrg    exit $stat
15253354cdbSmrg  fi
15353354cdbSmrg  rm -f "$depfile"
15453354cdbSmrg  echo "$object : \\" > "$depfile"
15553354cdbSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
15653354cdbSmrg## The second -e expression handles DOS-style file names with drive letters.
15753354cdbSmrg  sed -e 's/^[^:]*: / /' \
15853354cdbSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
15953354cdbSmrg## This next piece of magic avoids the `deleted header file' problem.
16053354cdbSmrg## The problem is that when a header file which appears in a .P file
16153354cdbSmrg## is deleted, the dependency causes make to die (because there is
16253354cdbSmrg## typically no way to rebuild the header).  We avoid this by adding
16353354cdbSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
16453354cdbSmrg## this for us directly.
16553354cdbSmrg  tr ' ' '
16653354cdbSmrg' < "$tmpdepfile" |
16753354cdbSmrg## Some versions of gcc put a space before the `:'.  On the theory
16853354cdbSmrg## that the space means something, we add a space to the output as
16961c899d4Smrg## well.  hp depmode also adds that space, but also prefixes the VPATH
17061c899d4Smrg## to the object.  Take care to not repeat it in the output.
17153354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
17253354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
17361c899d4Smrg    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
17461c899d4Smrg      | sed -e 's/$/ :/' >> "$depfile"
17553354cdbSmrg  rm -f "$tmpdepfile"
17653354cdbSmrg  ;;
17753354cdbSmrg
17853354cdbSmrghp)
17953354cdbSmrg  # This case exists only to let depend.m4 do its work.  It works by
18053354cdbSmrg  # looking at the text of this script.  This case will never be run,
18153354cdbSmrg  # since it is checked for above.
18253354cdbSmrg  exit 1
18353354cdbSmrg  ;;
18453354cdbSmrg
18553354cdbSmrgsgi)
18653354cdbSmrg  if test "$libtool" = yes; then
18753354cdbSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
18853354cdbSmrg  else
18953354cdbSmrg    "$@" -MDupdate "$tmpdepfile"
19053354cdbSmrg  fi
19153354cdbSmrg  stat=$?
19253354cdbSmrg  if test $stat -eq 0; then :
19353354cdbSmrg  else
19453354cdbSmrg    rm -f "$tmpdepfile"
19553354cdbSmrg    exit $stat
19653354cdbSmrg  fi
19753354cdbSmrg  rm -f "$depfile"
19853354cdbSmrg
19953354cdbSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
20053354cdbSmrg    echo "$object : \\" > "$depfile"
20153354cdbSmrg
20253354cdbSmrg    # Clip off the initial element (the dependent).  Don't try to be
20353354cdbSmrg    # clever and replace this with sed code, as IRIX sed won't handle
20453354cdbSmrg    # lines with more than a fixed number of characters (4096 in
20553354cdbSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
20653354cdbSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
20753354cdbSmrg    # dependency line.
20853354cdbSmrg    tr ' ' '
20953354cdbSmrg' < "$tmpdepfile" \
21053354cdbSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
21153354cdbSmrg    tr '
21286bbecbeSmrg' ' ' >> "$depfile"
21386bbecbeSmrg    echo >> "$depfile"
21453354cdbSmrg
21553354cdbSmrg    # The second pass generates a dummy entry for each header file.
21653354cdbSmrg    tr ' ' '
21753354cdbSmrg' < "$tmpdepfile" \
21853354cdbSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
21986bbecbeSmrg   >> "$depfile"
22053354cdbSmrg  else
22153354cdbSmrg    # The sourcefile does not contain any dependencies, so just
22253354cdbSmrg    # store a dummy comment line, to avoid errors with the Makefile
22353354cdbSmrg    # "include basename.Plo" scheme.
22453354cdbSmrg    echo "#dummy" > "$depfile"
22553354cdbSmrg  fi
22653354cdbSmrg  rm -f "$tmpdepfile"
22753354cdbSmrg  ;;
22853354cdbSmrg
22953354cdbSmrgaix)
23053354cdbSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
23153354cdbSmrg  # in a .u file.  In older versions, this file always lives in the
23253354cdbSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
23353354cdbSmrg  # start of each line; $object doesn't have directory information.
23453354cdbSmrg  # Version 6 uses the directory in both cases.
23586bbecbeSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
23686bbecbeSmrg  test "x$dir" = "x$object" && dir=
23786bbecbeSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
23853354cdbSmrg  if test "$libtool" = yes; then
23986bbecbeSmrg    tmpdepfile1=$dir$base.u
24086bbecbeSmrg    tmpdepfile2=$base.u
24186bbecbeSmrg    tmpdepfile3=$dir.libs/$base.u
24253354cdbSmrg    "$@" -Wc,-M
24353354cdbSmrg  else
24486bbecbeSmrg    tmpdepfile1=$dir$base.u
24586bbecbeSmrg    tmpdepfile2=$dir$base.u
24686bbecbeSmrg    tmpdepfile3=$dir$base.u
24753354cdbSmrg    "$@" -M
24853354cdbSmrg  fi
24953354cdbSmrg  stat=$?
25053354cdbSmrg
25153354cdbSmrg  if test $stat -eq 0; then :
25253354cdbSmrg  else
25386bbecbeSmrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
25453354cdbSmrg    exit $stat
25553354cdbSmrg  fi
25653354cdbSmrg
25786bbecbeSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
25886bbecbeSmrg  do
25986bbecbeSmrg    test -f "$tmpdepfile" && break
26086bbecbeSmrg  done
26153354cdbSmrg  if test -f "$tmpdepfile"; then
26253354cdbSmrg    # Each line is of the form `foo.o: dependent.h'.
26353354cdbSmrg    # Do two passes, one to just change these to
26453354cdbSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
26586bbecbeSmrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
26686bbecbeSmrg    # That's a tab and a space in the [].
26786bbecbeSmrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
26853354cdbSmrg  else
26953354cdbSmrg    # The sourcefile does not contain any dependencies, so just
27053354cdbSmrg    # store a dummy comment line, to avoid errors with the Makefile
27153354cdbSmrg    # "include basename.Plo" scheme.
27253354cdbSmrg    echo "#dummy" > "$depfile"
27353354cdbSmrg  fi
27453354cdbSmrg  rm -f "$tmpdepfile"
27553354cdbSmrg  ;;
27653354cdbSmrg
27753354cdbSmrgicc)
27853354cdbSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
27953354cdbSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
28053354cdbSmrg  # ICC 7.0 will fill foo.d with something like
28153354cdbSmrg  #    foo.o: sub/foo.c
28253354cdbSmrg  #    foo.o: sub/foo.h
28353354cdbSmrg  # which is wrong.  We want:
28453354cdbSmrg  #    sub/foo.o: sub/foo.c
28553354cdbSmrg  #    sub/foo.o: sub/foo.h
28653354cdbSmrg  #    sub/foo.c:
28753354cdbSmrg  #    sub/foo.h:
28853354cdbSmrg  # ICC 7.1 will output
28953354cdbSmrg  #    foo.o: sub/foo.c sub/foo.h
29053354cdbSmrg  # and will wrap long lines using \ :
29153354cdbSmrg  #    foo.o: sub/foo.c ... \
29253354cdbSmrg  #     sub/foo.h ... \
29353354cdbSmrg  #     ...
29453354cdbSmrg
29553354cdbSmrg  "$@" -MD -MF "$tmpdepfile"
29653354cdbSmrg  stat=$?
29753354cdbSmrg  if test $stat -eq 0; then :
29853354cdbSmrg  else
29953354cdbSmrg    rm -f "$tmpdepfile"
30053354cdbSmrg    exit $stat
30153354cdbSmrg  fi
30253354cdbSmrg  rm -f "$depfile"
30353354cdbSmrg  # Each line is of the form `foo.o: dependent.h',
30453354cdbSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
30553354cdbSmrg  # Do two passes, one to just change these to
30653354cdbSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
30753354cdbSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
30853354cdbSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
30953354cdbSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
31053354cdbSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
31153354cdbSmrg    sed -e 's/$/ :/' >> "$depfile"
31253354cdbSmrg  rm -f "$tmpdepfile"
31353354cdbSmrg  ;;
31453354cdbSmrg
31553354cdbSmrghp2)
31653354cdbSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
31753354cdbSmrg  # compilers, which have integrated preprocessors.  The correct option
31853354cdbSmrg  # to use with these is +Maked; it writes dependencies to a file named
31953354cdbSmrg  # 'foo.d', which lands next to the object file, wherever that
32053354cdbSmrg  # happens to be.
32153354cdbSmrg  # Much of this is similar to the tru64 case; see comments there.
32253354cdbSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
32353354cdbSmrg  test "x$dir" = "x$object" && dir=
32453354cdbSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
32553354cdbSmrg  if test "$libtool" = yes; then
32653354cdbSmrg    tmpdepfile1=$dir$base.d
32753354cdbSmrg    tmpdepfile2=$dir.libs/$base.d
32853354cdbSmrg    "$@" -Wc,+Maked
32953354cdbSmrg  else
33053354cdbSmrg    tmpdepfile1=$dir$base.d
33153354cdbSmrg    tmpdepfile2=$dir$base.d
33253354cdbSmrg    "$@" +Maked
33353354cdbSmrg  fi
33453354cdbSmrg  stat=$?
33553354cdbSmrg  if test $stat -eq 0; then :
33653354cdbSmrg  else
33753354cdbSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
33853354cdbSmrg     exit $stat
33953354cdbSmrg  fi
34053354cdbSmrg
34153354cdbSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
34253354cdbSmrg  do
34353354cdbSmrg    test -f "$tmpdepfile" && break
34453354cdbSmrg  done
34553354cdbSmrg  if test -f "$tmpdepfile"; then
34653354cdbSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
34753354cdbSmrg    # Add `dependent.h:' lines.
34886bbecbeSmrg    sed -ne '2,${
34986bbecbeSmrg	       s/^ *//
35086bbecbeSmrg	       s/ \\*$//
35186bbecbeSmrg	       s/$/:/
35286bbecbeSmrg	       p
35386bbecbeSmrg	     }' "$tmpdepfile" >> "$depfile"
35453354cdbSmrg  else
35553354cdbSmrg    echo "#dummy" > "$depfile"
35653354cdbSmrg  fi
35753354cdbSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
35853354cdbSmrg  ;;
35953354cdbSmrg
36053354cdbSmrgtru64)
36153354cdbSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
36253354cdbSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
36353354cdbSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
36453354cdbSmrg   # dependencies in `foo.d' instead, so we check for that too.
36553354cdbSmrg   # Subdirectories are respected.
36653354cdbSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
36753354cdbSmrg   test "x$dir" = "x$object" && dir=
36853354cdbSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
36953354cdbSmrg
37053354cdbSmrg   if test "$libtool" = yes; then
37153354cdbSmrg      # With Tru64 cc, shared objects can also be used to make a
37253354cdbSmrg      # static library.  This mechanism is used in libtool 1.4 series to
37353354cdbSmrg      # handle both shared and static libraries in a single compilation.
37453354cdbSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
37553354cdbSmrg      #
37653354cdbSmrg      # With libtool 1.5 this exception was removed, and libtool now
37753354cdbSmrg      # generates 2 separate objects for the 2 libraries.  These two
37853354cdbSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
37953354cdbSmrg      # in $dir$base.o.d.  We have to check for both files, because
38053354cdbSmrg      # one of the two compilations can be disabled.  We should prefer
38153354cdbSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
38253354cdbSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
38353354cdbSmrg      # the former would cause a distcleancheck panic.
38453354cdbSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
38553354cdbSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
38653354cdbSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
38753354cdbSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
38853354cdbSmrg      "$@" -Wc,-MD
38953354cdbSmrg   else
39053354cdbSmrg      tmpdepfile1=$dir$base.o.d
39153354cdbSmrg      tmpdepfile2=$dir$base.d
39253354cdbSmrg      tmpdepfile3=$dir$base.d
39353354cdbSmrg      tmpdepfile4=$dir$base.d
39453354cdbSmrg      "$@" -MD
39553354cdbSmrg   fi
39653354cdbSmrg
39753354cdbSmrg   stat=$?
39853354cdbSmrg   if test $stat -eq 0; then :
39953354cdbSmrg   else
40053354cdbSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
40153354cdbSmrg      exit $stat
40253354cdbSmrg   fi
40353354cdbSmrg
40453354cdbSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
40553354cdbSmrg   do
40653354cdbSmrg     test -f "$tmpdepfile" && break
40753354cdbSmrg   done
40853354cdbSmrg   if test -f "$tmpdepfile"; then
40953354cdbSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
41053354cdbSmrg      # That's a tab and a space in the [].
41153354cdbSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
41253354cdbSmrg   else
41353354cdbSmrg      echo "#dummy" > "$depfile"
41453354cdbSmrg   fi
41553354cdbSmrg   rm -f "$tmpdepfile"
41653354cdbSmrg   ;;
41753354cdbSmrg
41861c899d4Smrgmsvc7)
41961c899d4Smrg  if test "$libtool" = yes; then
42061c899d4Smrg    showIncludes=-Wc,-showIncludes
42161c899d4Smrg  else
42261c899d4Smrg    showIncludes=-showIncludes
42361c899d4Smrg  fi
42461c899d4Smrg  "$@" $showIncludes > "$tmpdepfile"
42561c899d4Smrg  stat=$?
42661c899d4Smrg  grep -v '^Note: including file: ' "$tmpdepfile"
42761c899d4Smrg  if test "$stat" = 0; then :
42861c899d4Smrg  else
42961c899d4Smrg    rm -f "$tmpdepfile"
43061c899d4Smrg    exit $stat
43161c899d4Smrg  fi
43261c899d4Smrg  rm -f "$depfile"
43361c899d4Smrg  echo "$object : \\" > "$depfile"
43461c899d4Smrg  # The first sed program below extracts the file names and escapes
43561c899d4Smrg  # backslashes for cygpath.  The second sed program outputs the file
43661c899d4Smrg  # name when reading, but also accumulates all include files in the
43761c899d4Smrg  # hold buffer in order to output them again at the end.  This only
43861c899d4Smrg  # works with sed implementations that can handle large buffers.
43961c899d4Smrg  sed < "$tmpdepfile" -n '
44061c899d4Smrg/^Note: including file:  *\(.*\)/ {
44161c899d4Smrg  s//\1/
44261c899d4Smrg  s/\\/\\\\/g
44361c899d4Smrg  p
44461c899d4Smrg}' | $cygpath_u | sort -u | sed -n '
44561c899d4Smrgs/ /\\ /g
44661c899d4Smrgs/\(.*\)/	\1 \\/p
44761c899d4Smrgs/.\(.*\) \\/\1:/
44861c899d4SmrgH
44961c899d4Smrg$ {
45061c899d4Smrg  s/.*/	/
45161c899d4Smrg  G
45261c899d4Smrg  p
45361c899d4Smrg}' >> "$depfile"
45461c899d4Smrg  rm -f "$tmpdepfile"
45561c899d4Smrg  ;;
45661c899d4Smrg
45761c899d4Smrgmsvc7msys)
45861c899d4Smrg  # This case exists only to let depend.m4 do its work.  It works by
45961c899d4Smrg  # looking at the text of this script.  This case will never be run,
46061c899d4Smrg  # since it is checked for above.
46161c899d4Smrg  exit 1
46261c899d4Smrg  ;;
46361c899d4Smrg
46453354cdbSmrg#nosideeffect)
46553354cdbSmrg  # This comment above is used by automake to tell side-effect
46653354cdbSmrg  # dependency tracking mechanisms from slower ones.
46753354cdbSmrg
46853354cdbSmrgdashmstdout)
46953354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
47053354cdbSmrg  # always write the preprocessed file to stdout, regardless of -o.
47153354cdbSmrg  "$@" || exit $?
47253354cdbSmrg
47353354cdbSmrg  # Remove the call to Libtool.
47453354cdbSmrg  if test "$libtool" = yes; then
47586bbecbeSmrg    while test "X$1" != 'X--mode=compile'; do
47653354cdbSmrg      shift
47753354cdbSmrg    done
47853354cdbSmrg    shift
47953354cdbSmrg  fi
48053354cdbSmrg
48153354cdbSmrg  # Remove `-o $object'.
48253354cdbSmrg  IFS=" "
48353354cdbSmrg  for arg
48453354cdbSmrg  do
48553354cdbSmrg    case $arg in
48653354cdbSmrg    -o)
48753354cdbSmrg      shift
48853354cdbSmrg      ;;
48953354cdbSmrg    $object)
49053354cdbSmrg      shift
49153354cdbSmrg      ;;
49253354cdbSmrg    *)
49353354cdbSmrg      set fnord "$@" "$arg"
49453354cdbSmrg      shift # fnord
49553354cdbSmrg      shift # $arg
49653354cdbSmrg      ;;
49753354cdbSmrg    esac
49853354cdbSmrg  done
49953354cdbSmrg
50053354cdbSmrg  test -z "$dashmflag" && dashmflag=-M
50153354cdbSmrg  # Require at least two characters before searching for `:'
50253354cdbSmrg  # in the target name.  This is to cope with DOS-style filenames:
50353354cdbSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
50453354cdbSmrg  "$@" $dashmflag |
50553354cdbSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
50653354cdbSmrg  rm -f "$depfile"
50753354cdbSmrg  cat < "$tmpdepfile" > "$depfile"
50853354cdbSmrg  tr ' ' '
50953354cdbSmrg' < "$tmpdepfile" | \
51053354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
51153354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
51253354cdbSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
51353354cdbSmrg  rm -f "$tmpdepfile"
51453354cdbSmrg  ;;
51553354cdbSmrg
51653354cdbSmrgdashXmstdout)
51753354cdbSmrg  # This case only exists to satisfy depend.m4.  It is never actually
51853354cdbSmrg  # run, as this mode is specially recognized in the preamble.
51953354cdbSmrg  exit 1
52053354cdbSmrg  ;;
52153354cdbSmrg
52253354cdbSmrgmakedepend)
52353354cdbSmrg  "$@" || exit $?
52453354cdbSmrg  # Remove any Libtool call
52553354cdbSmrg  if test "$libtool" = yes; then
52686bbecbeSmrg    while test "X$1" != 'X--mode=compile'; do
52753354cdbSmrg      shift
52853354cdbSmrg    done
52953354cdbSmrg    shift
53053354cdbSmrg  fi
53153354cdbSmrg  # X makedepend
53253354cdbSmrg  shift
53386bbecbeSmrg  cleared=no eat=no
53486bbecbeSmrg  for arg
53586bbecbeSmrg  do
53653354cdbSmrg    case $cleared in
53753354cdbSmrg    no)
53853354cdbSmrg      set ""; shift
53953354cdbSmrg      cleared=yes ;;
54053354cdbSmrg    esac
54186bbecbeSmrg    if test $eat = yes; then
54286bbecbeSmrg      eat=no
54386bbecbeSmrg      continue
54486bbecbeSmrg    fi
54553354cdbSmrg    case "$arg" in
54653354cdbSmrg    -D*|-I*)
54753354cdbSmrg      set fnord "$@" "$arg"; shift ;;
54853354cdbSmrg    # Strip any option that makedepend may not understand.  Remove
54953354cdbSmrg    # the object too, otherwise makedepend will parse it as a source file.
55086bbecbeSmrg    -arch)
55186bbecbeSmrg      eat=yes ;;
55253354cdbSmrg    -*|$object)
55353354cdbSmrg      ;;
55453354cdbSmrg    *)
55553354cdbSmrg      set fnord "$@" "$arg"; shift ;;
55653354cdbSmrg    esac
55753354cdbSmrg  done
55886bbecbeSmrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
55953354cdbSmrg  touch "$tmpdepfile"
56053354cdbSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
56153354cdbSmrg  rm -f "$depfile"
56261c899d4Smrg  # makedepend may prepend the VPATH from the source file name to the object.
56361c899d4Smrg  # No need to regex-escape $object, excess matching of '.' is harmless.
56461c899d4Smrg  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
56553354cdbSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
56653354cdbSmrg' | \
56753354cdbSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
56853354cdbSmrg## correctly.  Breaking it into two sed invocations is a workaround.
56953354cdbSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
57053354cdbSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
57153354cdbSmrg  ;;
57253354cdbSmrg
57353354cdbSmrgcpp)
57453354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
57553354cdbSmrg  # always write the preprocessed file to stdout.
57653354cdbSmrg  "$@" || exit $?
57753354cdbSmrg
57853354cdbSmrg  # Remove the call to Libtool.
57953354cdbSmrg  if test "$libtool" = yes; then
58086bbecbeSmrg    while test "X$1" != 'X--mode=compile'; do
58153354cdbSmrg      shift
58253354cdbSmrg    done
58353354cdbSmrg    shift
58453354cdbSmrg  fi
58553354cdbSmrg
58653354cdbSmrg  # Remove `-o $object'.
58753354cdbSmrg  IFS=" "
58853354cdbSmrg  for arg
58953354cdbSmrg  do
59053354cdbSmrg    case $arg in
59153354cdbSmrg    -o)
59253354cdbSmrg      shift
59353354cdbSmrg      ;;
59453354cdbSmrg    $object)
59553354cdbSmrg      shift
59653354cdbSmrg      ;;
59753354cdbSmrg    *)
59853354cdbSmrg      set fnord "$@" "$arg"
59953354cdbSmrg      shift # fnord
60053354cdbSmrg      shift # $arg
60153354cdbSmrg      ;;
60253354cdbSmrg    esac
60353354cdbSmrg  done
60453354cdbSmrg
60553354cdbSmrg  "$@" -E |
60653354cdbSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
60753354cdbSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
60853354cdbSmrg    sed '$ s: \\$::' > "$tmpdepfile"
60953354cdbSmrg  rm -f "$depfile"
61053354cdbSmrg  echo "$object : \\" > "$depfile"
61153354cdbSmrg  cat < "$tmpdepfile" >> "$depfile"
61253354cdbSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
61353354cdbSmrg  rm -f "$tmpdepfile"
61453354cdbSmrg  ;;
61553354cdbSmrg
61653354cdbSmrgmsvisualcpp)
61753354cdbSmrg  # Important note: in order to support this mode, a compiler *must*
61886bbecbeSmrg  # always write the preprocessed file to stdout.
61953354cdbSmrg  "$@" || exit $?
62086bbecbeSmrg
62186bbecbeSmrg  # Remove the call to Libtool.
62286bbecbeSmrg  if test "$libtool" = yes; then
62386bbecbeSmrg    while test "X$1" != 'X--mode=compile'; do
62486bbecbeSmrg      shift
62586bbecbeSmrg    done
62686bbecbeSmrg    shift
62786bbecbeSmrg  fi
62886bbecbeSmrg
62953354cdbSmrg  IFS=" "
63053354cdbSmrg  for arg
63153354cdbSmrg  do
63253354cdbSmrg    case "$arg" in
63386bbecbeSmrg    -o)
63486bbecbeSmrg      shift
63586bbecbeSmrg      ;;
63686bbecbeSmrg    $object)
63786bbecbeSmrg      shift
63886bbecbeSmrg      ;;
63953354cdbSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
64053354cdbSmrg	set fnord "$@"
64153354cdbSmrg	shift
64253354cdbSmrg	shift
64353354cdbSmrg	;;
64453354cdbSmrg    *)
64553354cdbSmrg	set fnord "$@" "$arg"
64653354cdbSmrg	shift
64753354cdbSmrg	shift
64853354cdbSmrg	;;
64953354cdbSmrg    esac
65053354cdbSmrg  done
65186bbecbeSmrg  "$@" -E 2>/dev/null |
65286bbecbeSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
65353354cdbSmrg  rm -f "$depfile"
65453354cdbSmrg  echo "$object : \\" > "$depfile"
65586bbecbeSmrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
65653354cdbSmrg  echo "	" >> "$depfile"
65786bbecbeSmrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
65853354cdbSmrg  rm -f "$tmpdepfile"
65953354cdbSmrg  ;;
66053354cdbSmrg
66186bbecbeSmrgmsvcmsys)
66286bbecbeSmrg  # This case exists only to let depend.m4 do its work.  It works by
66386bbecbeSmrg  # looking at the text of this script.  This case will never be run,
66486bbecbeSmrg  # since it is checked for above.
66586bbecbeSmrg  exit 1
66686bbecbeSmrg  ;;
66786bbecbeSmrg
66853354cdbSmrgnone)
66953354cdbSmrg  exec "$@"
67053354cdbSmrg  ;;
67153354cdbSmrg
67253354cdbSmrg*)
67353354cdbSmrg  echo "Unknown depmode $depmode" 1>&2
67453354cdbSmrg  exit 1
67553354cdbSmrg  ;;
67653354cdbSmrgesac
67753354cdbSmrg
67853354cdbSmrgexit 0
67953354cdbSmrg
68053354cdbSmrg# Local Variables:
68153354cdbSmrg# mode: shell-script
68253354cdbSmrg# sh-indentation: 2
68353354cdbSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
68453354cdbSmrg# time-stamp-start: "scriptversion="
68553354cdbSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
68686bbecbeSmrg# time-stamp-time-zone: "UTC"
68786bbecbeSmrg# time-stamp-end: "; # UTC"
68853354cdbSmrg# End:
689