depcomp revision e8ead290
17914d74bSmrg#! /bin/sh
27914d74bSmrg# depcomp - compile a program generating dependencies as side-effects
37914d74bSmrg
4e8ead290Smrgscriptversion=2009-04-28.21; # UTC
57914d74bSmrg
6e8ead290Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7e8ead290Smrg# Software Foundation, Inc.
87914d74bSmrg
97914d74bSmrg# This program is free software; you can redistribute it and/or modify
107914d74bSmrg# it under the terms of the GNU General Public License as published by
117914d74bSmrg# the Free Software Foundation; either version 2, or (at your option)
127914d74bSmrg# any later version.
137914d74bSmrg
147914d74bSmrg# This program is distributed in the hope that it will be useful,
157914d74bSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
167914d74bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
177914d74bSmrg# GNU General Public License for more details.
187914d74bSmrg
197914d74bSmrg# You should have received a copy of the GNU General Public License
20e8ead290Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
217914d74bSmrg
227914d74bSmrg# As a special exception to the GNU General Public License, if you
237914d74bSmrg# distribute this file as part of a program that contains a
247914d74bSmrg# configuration script generated by Autoconf, you may include it under
257914d74bSmrg# the same distribution terms that you use for the rest of that program.
267914d74bSmrg
277914d74bSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
287914d74bSmrg
297914d74bSmrgcase $1 in
307914d74bSmrg  '')
317914d74bSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
327914d74bSmrg     exit 1;
337914d74bSmrg     ;;
347914d74bSmrg  -h | --h*)
357914d74bSmrg    cat <<\EOF
367914d74bSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
377914d74bSmrg
387914d74bSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
397914d74bSmrgas side-effects.
407914d74bSmrg
417914d74bSmrgEnvironment variables:
427914d74bSmrg  depmode     Dependency tracking mode.
437914d74bSmrg  source      Source file read by `PROGRAMS ARGS'.
447914d74bSmrg  object      Object file output by `PROGRAMS ARGS'.
457914d74bSmrg  DEPDIR      directory where to store dependencies.
467914d74bSmrg  depfile     Dependency file to output.
477914d74bSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
487914d74bSmrg  libtool     Whether libtool is used (yes/no).
497914d74bSmrg
507914d74bSmrgReport bugs to <bug-automake@gnu.org>.
517914d74bSmrgEOF
527914d74bSmrg    exit $?
537914d74bSmrg    ;;
547914d74bSmrg  -v | --v*)
557914d74bSmrg    echo "depcomp $scriptversion"
567914d74bSmrg    exit $?
577914d74bSmrg    ;;
587914d74bSmrgesac
597914d74bSmrg
607914d74bSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
617914d74bSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
627914d74bSmrg  exit 1
637914d74bSmrgfi
647914d74bSmrg
657914d74bSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
667914d74bSmrgdepfile=${depfile-`echo "$object" |
677914d74bSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
687914d74bSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
697914d74bSmrg
707914d74bSmrgrm -f "$tmpdepfile"
717914d74bSmrg
727914d74bSmrg# Some modes work just like other modes, but use different flags.  We
737914d74bSmrg# parameterize here, but still list the modes in the big case below,
747914d74bSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
757914d74bSmrg# here, because this file can only contain one case statement.
767914d74bSmrgif test "$depmode" = hp; then
777914d74bSmrg  # HP compiler uses -M and no extra arg.
787914d74bSmrg  gccflag=-M
797914d74bSmrg  depmode=gcc
807914d74bSmrgfi
817914d74bSmrg
827914d74bSmrgif test "$depmode" = dashXmstdout; then
837914d74bSmrg   # This is just like dashmstdout with a different argument.
847914d74bSmrg   dashmflag=-xM
857914d74bSmrg   depmode=dashmstdout
867914d74bSmrgfi
877914d74bSmrg
88e8ead290Smrgcygpath_u="cygpath -u -f -"
89e8ead290Smrgif test "$depmode" = msvcmsys; then
90e8ead290Smrg   # This is just like msvisualcpp but w/o cygpath translation.
91e8ead290Smrg   # Just convert the backslash-escaped backslashes to single forward
92e8ead290Smrg   # slashes to satisfy depend.m4
93e8ead290Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
94e8ead290Smrg   depmode=msvisualcpp
95e8ead290Smrgfi
96e8ead290Smrg
977914d74bSmrgcase "$depmode" in
987914d74bSmrggcc3)
997914d74bSmrg## gcc 3 implements dependency tracking that does exactly what
1007914d74bSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
1017914d74bSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
1027914d74bSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
1037914d74bSmrg## the command line argument order; so add the flags where they
1047914d74bSmrg## appear in depend2.am.  Note that the slowdown incurred here
1057914d74bSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
1067914d74bSmrg  for arg
1077914d74bSmrg  do
1087914d74bSmrg    case $arg in
1097914d74bSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
1107914d74bSmrg    *)  set fnord "$@" "$arg" ;;
1117914d74bSmrg    esac
1127914d74bSmrg    shift # fnord
1137914d74bSmrg    shift # $arg
1147914d74bSmrg  done
1157914d74bSmrg  "$@"
1167914d74bSmrg  stat=$?
1177914d74bSmrg  if test $stat -eq 0; then :
1187914d74bSmrg  else
1197914d74bSmrg    rm -f "$tmpdepfile"
1207914d74bSmrg    exit $stat
1217914d74bSmrg  fi
1227914d74bSmrg  mv "$tmpdepfile" "$depfile"
1237914d74bSmrg  ;;
1247914d74bSmrg
1257914d74bSmrggcc)
1267914d74bSmrg## There are various ways to get dependency output from gcc.  Here's
1277914d74bSmrg## why we pick this rather obscure method:
1287914d74bSmrg## - Don't want to use -MD because we'd like the dependencies to end
1297914d74bSmrg##   up in a subdir.  Having to rename by hand is ugly.
1307914d74bSmrg##   (We might end up doing this anyway to support other compilers.)
1317914d74bSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1327914d74bSmrg##   -MM, not -M (despite what the docs say).
1337914d74bSmrg## - Using -M directly means running the compiler twice (even worse
1347914d74bSmrg##   than renaming).
1357914d74bSmrg  if test -z "$gccflag"; then
1367914d74bSmrg    gccflag=-MD,
1377914d74bSmrg  fi
1387914d74bSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
1397914d74bSmrg  stat=$?
1407914d74bSmrg  if test $stat -eq 0; then :
1417914d74bSmrg  else
1427914d74bSmrg    rm -f "$tmpdepfile"
1437914d74bSmrg    exit $stat
1447914d74bSmrg  fi
1457914d74bSmrg  rm -f "$depfile"
1467914d74bSmrg  echo "$object : \\" > "$depfile"
1477914d74bSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1487914d74bSmrg## The second -e expression handles DOS-style file names with drive letters.
1497914d74bSmrg  sed -e 's/^[^:]*: / /' \
1507914d74bSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1517914d74bSmrg## This next piece of magic avoids the `deleted header file' problem.
1527914d74bSmrg## The problem is that when a header file which appears in a .P file
1537914d74bSmrg## is deleted, the dependency causes make to die (because there is
1547914d74bSmrg## typically no way to rebuild the header).  We avoid this by adding
1557914d74bSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1567914d74bSmrg## this for us directly.
1577914d74bSmrg  tr ' ' '
1587914d74bSmrg' < "$tmpdepfile" |
1597914d74bSmrg## Some versions of gcc put a space before the `:'.  On the theory
1607914d74bSmrg## that the space means something, we add a space to the output as
1617914d74bSmrg## well.
1627914d74bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
1637914d74bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
1647914d74bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1657914d74bSmrg  rm -f "$tmpdepfile"
1667914d74bSmrg  ;;
1677914d74bSmrg
1687914d74bSmrghp)
1697914d74bSmrg  # This case exists only to let depend.m4 do its work.  It works by
1707914d74bSmrg  # looking at the text of this script.  This case will never be run,
1717914d74bSmrg  # since it is checked for above.
1727914d74bSmrg  exit 1
1737914d74bSmrg  ;;
1747914d74bSmrg
1757914d74bSmrgsgi)
1767914d74bSmrg  if test "$libtool" = yes; then
1777914d74bSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1787914d74bSmrg  else
1797914d74bSmrg    "$@" -MDupdate "$tmpdepfile"
1807914d74bSmrg  fi
1817914d74bSmrg  stat=$?
1827914d74bSmrg  if test $stat -eq 0; then :
1837914d74bSmrg  else
1847914d74bSmrg    rm -f "$tmpdepfile"
1857914d74bSmrg    exit $stat
1867914d74bSmrg  fi
1877914d74bSmrg  rm -f "$depfile"
1887914d74bSmrg
1897914d74bSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1907914d74bSmrg    echo "$object : \\" > "$depfile"
1917914d74bSmrg
1927914d74bSmrg    # Clip off the initial element (the dependent).  Don't try to be
1937914d74bSmrg    # clever and replace this with sed code, as IRIX sed won't handle
1947914d74bSmrg    # lines with more than a fixed number of characters (4096 in
1957914d74bSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1967914d74bSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
1977914d74bSmrg    # dependency line.
1987914d74bSmrg    tr ' ' '
1997914d74bSmrg' < "$tmpdepfile" \
2007914d74bSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
2017914d74bSmrg    tr '
202e8ead290Smrg' ' ' >> "$depfile"
203e8ead290Smrg    echo >> "$depfile"
2047914d74bSmrg
2057914d74bSmrg    # The second pass generates a dummy entry for each header file.
2067914d74bSmrg    tr ' ' '
2077914d74bSmrg' < "$tmpdepfile" \
2087914d74bSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
209e8ead290Smrg   >> "$depfile"
2107914d74bSmrg  else
2117914d74bSmrg    # The sourcefile does not contain any dependencies, so just
2127914d74bSmrg    # store a dummy comment line, to avoid errors with the Makefile
2137914d74bSmrg    # "include basename.Plo" scheme.
2147914d74bSmrg    echo "#dummy" > "$depfile"
2157914d74bSmrg  fi
2167914d74bSmrg  rm -f "$tmpdepfile"
2177914d74bSmrg  ;;
2187914d74bSmrg
2197914d74bSmrgaix)
2207914d74bSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
2217914d74bSmrg  # in a .u file.  In older versions, this file always lives in the
2227914d74bSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2237914d74bSmrg  # start of each line; $object doesn't have directory information.
2247914d74bSmrg  # Version 6 uses the directory in both cases.
225e169010aSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226e169010aSmrg  test "x$dir" = "x$object" && dir=
227e169010aSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2287914d74bSmrg  if test "$libtool" = yes; then
229e169010aSmrg    tmpdepfile1=$dir$base.u
230e169010aSmrg    tmpdepfile2=$base.u
231e169010aSmrg    tmpdepfile3=$dir.libs/$base.u
2327914d74bSmrg    "$@" -Wc,-M
2337914d74bSmrg  else
234e169010aSmrg    tmpdepfile1=$dir$base.u
235e169010aSmrg    tmpdepfile2=$dir$base.u
236e169010aSmrg    tmpdepfile3=$dir$base.u
2377914d74bSmrg    "$@" -M
2387914d74bSmrg  fi
2397914d74bSmrg  stat=$?
2407914d74bSmrg
2417914d74bSmrg  if test $stat -eq 0; then :
2427914d74bSmrg  else
243e169010aSmrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2447914d74bSmrg    exit $stat
2457914d74bSmrg  fi
2467914d74bSmrg
247e169010aSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248e169010aSmrg  do
249e169010aSmrg    test -f "$tmpdepfile" && break
250e169010aSmrg  done
2517914d74bSmrg  if test -f "$tmpdepfile"; then
2527914d74bSmrg    # Each line is of the form `foo.o: dependent.h'.
2537914d74bSmrg    # Do two passes, one to just change these to
2547914d74bSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
255e169010aSmrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256e169010aSmrg    # That's a tab and a space in the [].
257e169010aSmrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
2587914d74bSmrg  else
2597914d74bSmrg    # The sourcefile does not contain any dependencies, so just
2607914d74bSmrg    # store a dummy comment line, to avoid errors with the Makefile
2617914d74bSmrg    # "include basename.Plo" scheme.
2627914d74bSmrg    echo "#dummy" > "$depfile"
2637914d74bSmrg  fi
2647914d74bSmrg  rm -f "$tmpdepfile"
2657914d74bSmrg  ;;
2667914d74bSmrg
2677914d74bSmrgicc)
2687914d74bSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
2697914d74bSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2707914d74bSmrg  # ICC 7.0 will fill foo.d with something like
2717914d74bSmrg  #    foo.o: sub/foo.c
2727914d74bSmrg  #    foo.o: sub/foo.h
2737914d74bSmrg  # which is wrong.  We want:
2747914d74bSmrg  #    sub/foo.o: sub/foo.c
2757914d74bSmrg  #    sub/foo.o: sub/foo.h
2767914d74bSmrg  #    sub/foo.c:
2777914d74bSmrg  #    sub/foo.h:
2787914d74bSmrg  # ICC 7.1 will output
2797914d74bSmrg  #    foo.o: sub/foo.c sub/foo.h
2807914d74bSmrg  # and will wrap long lines using \ :
2817914d74bSmrg  #    foo.o: sub/foo.c ... \
2827914d74bSmrg  #     sub/foo.h ... \
2837914d74bSmrg  #     ...
2847914d74bSmrg
2857914d74bSmrg  "$@" -MD -MF "$tmpdepfile"
2867914d74bSmrg  stat=$?
2877914d74bSmrg  if test $stat -eq 0; then :
2887914d74bSmrg  else
2897914d74bSmrg    rm -f "$tmpdepfile"
2907914d74bSmrg    exit $stat
2917914d74bSmrg  fi
2927914d74bSmrg  rm -f "$depfile"
2937914d74bSmrg  # Each line is of the form `foo.o: dependent.h',
2947914d74bSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2957914d74bSmrg  # Do two passes, one to just change these to
2967914d74bSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2977914d74bSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2987914d74bSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2997914d74bSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
3007914d74bSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
3017914d74bSmrg    sed -e 's/$/ :/' >> "$depfile"
3027914d74bSmrg  rm -f "$tmpdepfile"
3037914d74bSmrg  ;;
3047914d74bSmrg
3057914d74bSmrghp2)
3067914d74bSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
3077914d74bSmrg  # compilers, which have integrated preprocessors.  The correct option
3087914d74bSmrg  # to use with these is +Maked; it writes dependencies to a file named
3097914d74bSmrg  # 'foo.d', which lands next to the object file, wherever that
3107914d74bSmrg  # happens to be.
3117914d74bSmrg  # Much of this is similar to the tru64 case; see comments there.
3127914d74bSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3137914d74bSmrg  test "x$dir" = "x$object" && dir=
3147914d74bSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3157914d74bSmrg  if test "$libtool" = yes; then
3167914d74bSmrg    tmpdepfile1=$dir$base.d
3177914d74bSmrg    tmpdepfile2=$dir.libs/$base.d
3187914d74bSmrg    "$@" -Wc,+Maked
3197914d74bSmrg  else
3207914d74bSmrg    tmpdepfile1=$dir$base.d
3217914d74bSmrg    tmpdepfile2=$dir$base.d
3227914d74bSmrg    "$@" +Maked
3237914d74bSmrg  fi
3247914d74bSmrg  stat=$?
3257914d74bSmrg  if test $stat -eq 0; then :
3267914d74bSmrg  else
3277914d74bSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
3287914d74bSmrg     exit $stat
3297914d74bSmrg  fi
3307914d74bSmrg
3317914d74bSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
3327914d74bSmrg  do
3337914d74bSmrg    test -f "$tmpdepfile" && break
3347914d74bSmrg  done
3357914d74bSmrg  if test -f "$tmpdepfile"; then
3367914d74bSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
3377914d74bSmrg    # Add `dependent.h:' lines.
338e8ead290Smrg    sed -ne '2,${
339e8ead290Smrg	       s/^ *//
340e8ead290Smrg	       s/ \\*$//
341e8ead290Smrg	       s/$/:/
342e8ead290Smrg	       p
343e8ead290Smrg	     }' "$tmpdepfile" >> "$depfile"
3447914d74bSmrg  else
3457914d74bSmrg    echo "#dummy" > "$depfile"
3467914d74bSmrg  fi
3477914d74bSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
3487914d74bSmrg  ;;
3497914d74bSmrg
3507914d74bSmrgtru64)
3517914d74bSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
3527914d74bSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
3537914d74bSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
3547914d74bSmrg   # dependencies in `foo.d' instead, so we check for that too.
3557914d74bSmrg   # Subdirectories are respected.
3567914d74bSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3577914d74bSmrg   test "x$dir" = "x$object" && dir=
3587914d74bSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3597914d74bSmrg
3607914d74bSmrg   if test "$libtool" = yes; then
3617914d74bSmrg      # With Tru64 cc, shared objects can also be used to make a
3627914d74bSmrg      # static library.  This mechanism is used in libtool 1.4 series to
3637914d74bSmrg      # handle both shared and static libraries in a single compilation.
3647914d74bSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
3657914d74bSmrg      #
3667914d74bSmrg      # With libtool 1.5 this exception was removed, and libtool now
3677914d74bSmrg      # generates 2 separate objects for the 2 libraries.  These two
3687914d74bSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
3697914d74bSmrg      # in $dir$base.o.d.  We have to check for both files, because
3707914d74bSmrg      # one of the two compilations can be disabled.  We should prefer
3717914d74bSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3727914d74bSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
3737914d74bSmrg      # the former would cause a distcleancheck panic.
3747914d74bSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3757914d74bSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3767914d74bSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3777914d74bSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3787914d74bSmrg      "$@" -Wc,-MD
3797914d74bSmrg   else
3807914d74bSmrg      tmpdepfile1=$dir$base.o.d
3817914d74bSmrg      tmpdepfile2=$dir$base.d
3827914d74bSmrg      tmpdepfile3=$dir$base.d
3837914d74bSmrg      tmpdepfile4=$dir$base.d
3847914d74bSmrg      "$@" -MD
3857914d74bSmrg   fi
3867914d74bSmrg
3877914d74bSmrg   stat=$?
3887914d74bSmrg   if test $stat -eq 0; then :
3897914d74bSmrg   else
3907914d74bSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3917914d74bSmrg      exit $stat
3927914d74bSmrg   fi
3937914d74bSmrg
3947914d74bSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3957914d74bSmrg   do
3967914d74bSmrg     test -f "$tmpdepfile" && break
3977914d74bSmrg   done
3987914d74bSmrg   if test -f "$tmpdepfile"; then
3997914d74bSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
4007914d74bSmrg      # That's a tab and a space in the [].
4017914d74bSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
4027914d74bSmrg   else
4037914d74bSmrg      echo "#dummy" > "$depfile"
4047914d74bSmrg   fi
4057914d74bSmrg   rm -f "$tmpdepfile"
4067914d74bSmrg   ;;
4077914d74bSmrg
4087914d74bSmrg#nosideeffect)
4097914d74bSmrg  # This comment above is used by automake to tell side-effect
4107914d74bSmrg  # dependency tracking mechanisms from slower ones.
4117914d74bSmrg
4127914d74bSmrgdashmstdout)
4137914d74bSmrg  # Important note: in order to support this mode, a compiler *must*
4147914d74bSmrg  # always write the preprocessed file to stdout, regardless of -o.
4157914d74bSmrg  "$@" || exit $?
4167914d74bSmrg
4177914d74bSmrg  # Remove the call to Libtool.
4187914d74bSmrg  if test "$libtool" = yes; then
419e8ead290Smrg    while test "X$1" != 'X--mode=compile'; do
4207914d74bSmrg      shift
4217914d74bSmrg    done
4227914d74bSmrg    shift
4237914d74bSmrg  fi
4247914d74bSmrg
4257914d74bSmrg  # Remove `-o $object'.
4267914d74bSmrg  IFS=" "
4277914d74bSmrg  for arg
4287914d74bSmrg  do
4297914d74bSmrg    case $arg in
4307914d74bSmrg    -o)
4317914d74bSmrg      shift
4327914d74bSmrg      ;;
4337914d74bSmrg    $object)
4347914d74bSmrg      shift
4357914d74bSmrg      ;;
4367914d74bSmrg    *)
4377914d74bSmrg      set fnord "$@" "$arg"
4387914d74bSmrg      shift # fnord
4397914d74bSmrg      shift # $arg
4407914d74bSmrg      ;;
4417914d74bSmrg    esac
4427914d74bSmrg  done
4437914d74bSmrg
4447914d74bSmrg  test -z "$dashmflag" && dashmflag=-M
4457914d74bSmrg  # Require at least two characters before searching for `:'
4467914d74bSmrg  # in the target name.  This is to cope with DOS-style filenames:
4477914d74bSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
4487914d74bSmrg  "$@" $dashmflag |
4497914d74bSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
4507914d74bSmrg  rm -f "$depfile"
4517914d74bSmrg  cat < "$tmpdepfile" > "$depfile"
4527914d74bSmrg  tr ' ' '
4537914d74bSmrg' < "$tmpdepfile" | \
4547914d74bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
4557914d74bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
4567914d74bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4577914d74bSmrg  rm -f "$tmpdepfile"
4587914d74bSmrg  ;;
4597914d74bSmrg
4607914d74bSmrgdashXmstdout)
4617914d74bSmrg  # This case only exists to satisfy depend.m4.  It is never actually
4627914d74bSmrg  # run, as this mode is specially recognized in the preamble.
4637914d74bSmrg  exit 1
4647914d74bSmrg  ;;
4657914d74bSmrg
4667914d74bSmrgmakedepend)
4677914d74bSmrg  "$@" || exit $?
4687914d74bSmrg  # Remove any Libtool call
4697914d74bSmrg  if test "$libtool" = yes; then
470e8ead290Smrg    while test "X$1" != 'X--mode=compile'; do
4717914d74bSmrg      shift
4727914d74bSmrg    done
4737914d74bSmrg    shift
4747914d74bSmrg  fi
4757914d74bSmrg  # X makedepend
4767914d74bSmrg  shift
477e8ead290Smrg  cleared=no eat=no
478e8ead290Smrg  for arg
479e8ead290Smrg  do
4807914d74bSmrg    case $cleared in
4817914d74bSmrg    no)
4827914d74bSmrg      set ""; shift
4837914d74bSmrg      cleared=yes ;;
4847914d74bSmrg    esac
485e8ead290Smrg    if test $eat = yes; then
486e8ead290Smrg      eat=no
487e8ead290Smrg      continue
488e8ead290Smrg    fi
4897914d74bSmrg    case "$arg" in
4907914d74bSmrg    -D*|-I*)
4917914d74bSmrg      set fnord "$@" "$arg"; shift ;;
4927914d74bSmrg    # Strip any option that makedepend may not understand.  Remove
4937914d74bSmrg    # the object too, otherwise makedepend will parse it as a source file.
494e8ead290Smrg    -arch)
495e8ead290Smrg      eat=yes ;;
4967914d74bSmrg    -*|$object)
4977914d74bSmrg      ;;
4987914d74bSmrg    *)
4997914d74bSmrg      set fnord "$@" "$arg"; shift ;;
5007914d74bSmrg    esac
5017914d74bSmrg  done
502e8ead290Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
5037914d74bSmrg  touch "$tmpdepfile"
5047914d74bSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
5057914d74bSmrg  rm -f "$depfile"
5067914d74bSmrg  cat < "$tmpdepfile" > "$depfile"
5077914d74bSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
5087914d74bSmrg' | \
5097914d74bSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
5107914d74bSmrg## correctly.  Breaking it into two sed invocations is a workaround.
5117914d74bSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
5127914d74bSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
5137914d74bSmrg  ;;
5147914d74bSmrg
5157914d74bSmrgcpp)
5167914d74bSmrg  # Important note: in order to support this mode, a compiler *must*
5177914d74bSmrg  # always write the preprocessed file to stdout.
5187914d74bSmrg  "$@" || exit $?
5197914d74bSmrg
5207914d74bSmrg  # Remove the call to Libtool.
5217914d74bSmrg  if test "$libtool" = yes; then
522e8ead290Smrg    while test "X$1" != 'X--mode=compile'; do
5237914d74bSmrg      shift
5247914d74bSmrg    done
5257914d74bSmrg    shift
5267914d74bSmrg  fi
5277914d74bSmrg
5287914d74bSmrg  # Remove `-o $object'.
5297914d74bSmrg  IFS=" "
5307914d74bSmrg  for arg
5317914d74bSmrg  do
5327914d74bSmrg    case $arg in
5337914d74bSmrg    -o)
5347914d74bSmrg      shift
5357914d74bSmrg      ;;
5367914d74bSmrg    $object)
5377914d74bSmrg      shift
5387914d74bSmrg      ;;
5397914d74bSmrg    *)
5407914d74bSmrg      set fnord "$@" "$arg"
5417914d74bSmrg      shift # fnord
5427914d74bSmrg      shift # $arg
5437914d74bSmrg      ;;
5447914d74bSmrg    esac
5457914d74bSmrg  done
5467914d74bSmrg
5477914d74bSmrg  "$@" -E |
5487914d74bSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
5497914d74bSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
5507914d74bSmrg    sed '$ s: \\$::' > "$tmpdepfile"
5517914d74bSmrg  rm -f "$depfile"
5527914d74bSmrg  echo "$object : \\" > "$depfile"
5537914d74bSmrg  cat < "$tmpdepfile" >> "$depfile"
5547914d74bSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
5557914d74bSmrg  rm -f "$tmpdepfile"
5567914d74bSmrg  ;;
5577914d74bSmrg
5587914d74bSmrgmsvisualcpp)
5597914d74bSmrg  # Important note: in order to support this mode, a compiler *must*
560e8ead290Smrg  # always write the preprocessed file to stdout.
5617914d74bSmrg  "$@" || exit $?
562e8ead290Smrg
563e8ead290Smrg  # Remove the call to Libtool.
564e8ead290Smrg  if test "$libtool" = yes; then
565e8ead290Smrg    while test "X$1" != 'X--mode=compile'; do
566e8ead290Smrg      shift
567e8ead290Smrg    done
568e8ead290Smrg    shift
569e8ead290Smrg  fi
570e8ead290Smrg
5717914d74bSmrg  IFS=" "
5727914d74bSmrg  for arg
5737914d74bSmrg  do
5747914d74bSmrg    case "$arg" in
575e8ead290Smrg    -o)
576e8ead290Smrg      shift
577e8ead290Smrg      ;;
578e8ead290Smrg    $object)
579e8ead290Smrg      shift
580e8ead290Smrg      ;;
5817914d74bSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
5827914d74bSmrg	set fnord "$@"
5837914d74bSmrg	shift
5847914d74bSmrg	shift
5857914d74bSmrg	;;
5867914d74bSmrg    *)
5877914d74bSmrg	set fnord "$@" "$arg"
5887914d74bSmrg	shift
5897914d74bSmrg	shift
5907914d74bSmrg	;;
5917914d74bSmrg    esac
5927914d74bSmrg  done
593e8ead290Smrg  "$@" -E 2>/dev/null |
594e8ead290Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
5957914d74bSmrg  rm -f "$depfile"
5967914d74bSmrg  echo "$object : \\" > "$depfile"
597e8ead290Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5987914d74bSmrg  echo "	" >> "$depfile"
599e8ead290Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
6007914d74bSmrg  rm -f "$tmpdepfile"
6017914d74bSmrg  ;;
6027914d74bSmrg
603e8ead290Smrgmsvcmsys)
604e8ead290Smrg  # This case exists only to let depend.m4 do its work.  It works by
605e8ead290Smrg  # looking at the text of this script.  This case will never be run,
606e8ead290Smrg  # since it is checked for above.
607e8ead290Smrg  exit 1
608e8ead290Smrg  ;;
609e8ead290Smrg
6107914d74bSmrgnone)
6117914d74bSmrg  exec "$@"
6127914d74bSmrg  ;;
6137914d74bSmrg
6147914d74bSmrg*)
6157914d74bSmrg  echo "Unknown depmode $depmode" 1>&2
6167914d74bSmrg  exit 1
6177914d74bSmrg  ;;
6187914d74bSmrgesac
6197914d74bSmrg
6207914d74bSmrgexit 0
6217914d74bSmrg
6227914d74bSmrg# Local Variables:
6237914d74bSmrg# mode: shell-script
6247914d74bSmrg# sh-indentation: 2
6257914d74bSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
6267914d74bSmrg# time-stamp-start: "scriptversion="
6277914d74bSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
628e8ead290Smrg# time-stamp-time-zone: "UTC"
629e8ead290Smrg# time-stamp-end: "; # UTC"
6307914d74bSmrg# End:
631