depcomp revision dc407927
13eed67faSmbalmer#! /bin/sh
23eed67faSmbalmer# depcomp - compile a program generating dependencies as side-effects
33eed67faSmbalmer
4dc407927Smrgscriptversion=2009-04-28.21; # UTC
53eed67faSmbalmer
6dc407927Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7dc407927Smrg# Software Foundation, Inc.
83eed67faSmbalmer
93eed67faSmbalmer# This program is free software; you can redistribute it and/or modify
103eed67faSmbalmer# it under the terms of the GNU General Public License as published by
113eed67faSmbalmer# the Free Software Foundation; either version 2, or (at your option)
123eed67faSmbalmer# any later version.
133eed67faSmbalmer
143eed67faSmbalmer# This program is distributed in the hope that it will be useful,
153eed67faSmbalmer# but WITHOUT ANY WARRANTY; without even the implied warranty of
163eed67faSmbalmer# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
173eed67faSmbalmer# GNU General Public License for more details.
183eed67faSmbalmer
193eed67faSmbalmer# You should have received a copy of the GNU General Public License
20dc407927Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
213eed67faSmbalmer
223eed67faSmbalmer# As a special exception to the GNU General Public License, if you
233eed67faSmbalmer# distribute this file as part of a program that contains a
243eed67faSmbalmer# configuration script generated by Autoconf, you may include it under
253eed67faSmbalmer# the same distribution terms that you use for the rest of that program.
263eed67faSmbalmer
273eed67faSmbalmer# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
283eed67faSmbalmer
293eed67faSmbalmercase $1 in
303eed67faSmbalmer  '')
313eed67faSmbalmer     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
323eed67faSmbalmer     exit 1;
333eed67faSmbalmer     ;;
343eed67faSmbalmer  -h | --h*)
353eed67faSmbalmer    cat <<\EOF
363eed67faSmbalmerUsage: depcomp [--help] [--version] PROGRAM [ARGS]
373eed67faSmbalmer
383eed67faSmbalmerRun PROGRAMS ARGS to compile a file, generating dependencies
393eed67faSmbalmeras side-effects.
403eed67faSmbalmer
413eed67faSmbalmerEnvironment variables:
423eed67faSmbalmer  depmode     Dependency tracking mode.
433eed67faSmbalmer  source      Source file read by `PROGRAMS ARGS'.
443eed67faSmbalmer  object      Object file output by `PROGRAMS ARGS'.
453eed67faSmbalmer  DEPDIR      directory where to store dependencies.
463eed67faSmbalmer  depfile     Dependency file to output.
473eed67faSmbalmer  tmpdepfile  Temporary file to use when outputing dependencies.
483eed67faSmbalmer  libtool     Whether libtool is used (yes/no).
493eed67faSmbalmer
503eed67faSmbalmerReport bugs to <bug-automake@gnu.org>.
513eed67faSmbalmerEOF
523eed67faSmbalmer    exit $?
533eed67faSmbalmer    ;;
543eed67faSmbalmer  -v | --v*)
553eed67faSmbalmer    echo "depcomp $scriptversion"
563eed67faSmbalmer    exit $?
573eed67faSmbalmer    ;;
583eed67faSmbalmeresac
593eed67faSmbalmer
603eed67faSmbalmerif test -z "$depmode" || test -z "$source" || test -z "$object"; then
613eed67faSmbalmer  echo "depcomp: Variables source, object and depmode must be set" 1>&2
623eed67faSmbalmer  exit 1
633eed67faSmbalmerfi
643eed67faSmbalmer
653eed67faSmbalmer# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
663eed67faSmbalmerdepfile=${depfile-`echo "$object" |
673eed67faSmbalmer  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
683eed67faSmbalmertmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
693eed67faSmbalmer
703eed67faSmbalmerrm -f "$tmpdepfile"
713eed67faSmbalmer
723eed67faSmbalmer# Some modes work just like other modes, but use different flags.  We
733eed67faSmbalmer# parameterize here, but still list the modes in the big case below,
743eed67faSmbalmer# to make depend.m4 easier to write.  Note that we *cannot* use a case
753eed67faSmbalmer# here, because this file can only contain one case statement.
763eed67faSmbalmerif test "$depmode" = hp; then
773eed67faSmbalmer  # HP compiler uses -M and no extra arg.
783eed67faSmbalmer  gccflag=-M
793eed67faSmbalmer  depmode=gcc
803eed67faSmbalmerfi
813eed67faSmbalmer
823eed67faSmbalmerif test "$depmode" = dashXmstdout; then
833eed67faSmbalmer   # This is just like dashmstdout with a different argument.
843eed67faSmbalmer   dashmflag=-xM
853eed67faSmbalmer   depmode=dashmstdout
863eed67faSmbalmerfi
873eed67faSmbalmer
88dc407927Smrgcygpath_u="cygpath -u -f -"
89dc407927Smrgif test "$depmode" = msvcmsys; then
90dc407927Smrg   # This is just like msvisualcpp but w/o cygpath translation.
91dc407927Smrg   # Just convert the backslash-escaped backslashes to single forward
92dc407927Smrg   # slashes to satisfy depend.m4
93dc407927Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
94dc407927Smrg   depmode=msvisualcpp
95dc407927Smrgfi
96dc407927Smrg
973eed67faSmbalmercase "$depmode" in
983eed67faSmbalmergcc3)
993eed67faSmbalmer## gcc 3 implements dependency tracking that does exactly what
1003eed67faSmbalmer## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
1013eed67faSmbalmer## it if -MD -MP comes after the -MF stuff.  Hmm.
102dc407927Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
103dc407927Smrg## the command line argument order; so add the flags where they
104dc407927Smrg## appear in depend2.am.  Note that the slowdown incurred here
105dc407927Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
106dc407927Smrg  for arg
107dc407927Smrg  do
108dc407927Smrg    case $arg in
109dc407927Smrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
110dc407927Smrg    *)  set fnord "$@" "$arg" ;;
111dc407927Smrg    esac
112dc407927Smrg    shift # fnord
113dc407927Smrg    shift # $arg
114dc407927Smrg  done
115dc407927Smrg  "$@"
1163eed67faSmbalmer  stat=$?
1173eed67faSmbalmer  if test $stat -eq 0; then :
1183eed67faSmbalmer  else
1193eed67faSmbalmer    rm -f "$tmpdepfile"
1203eed67faSmbalmer    exit $stat
1213eed67faSmbalmer  fi
1223eed67faSmbalmer  mv "$tmpdepfile" "$depfile"
1233eed67faSmbalmer  ;;
1243eed67faSmbalmer
1253eed67faSmbalmergcc)
1263eed67faSmbalmer## There are various ways to get dependency output from gcc.  Here's
1273eed67faSmbalmer## why we pick this rather obscure method:
1283eed67faSmbalmer## - Don't want to use -MD because we'd like the dependencies to end
1293eed67faSmbalmer##   up in a subdir.  Having to rename by hand is ugly.
1303eed67faSmbalmer##   (We might end up doing this anyway to support other compilers.)
1313eed67faSmbalmer## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1323eed67faSmbalmer##   -MM, not -M (despite what the docs say).
1333eed67faSmbalmer## - Using -M directly means running the compiler twice (even worse
1343eed67faSmbalmer##   than renaming).
1353eed67faSmbalmer  if test -z "$gccflag"; then
1363eed67faSmbalmer    gccflag=-MD,
1373eed67faSmbalmer  fi
1383eed67faSmbalmer  "$@" -Wp,"$gccflag$tmpdepfile"
1393eed67faSmbalmer  stat=$?
1403eed67faSmbalmer  if test $stat -eq 0; then :
1413eed67faSmbalmer  else
1423eed67faSmbalmer    rm -f "$tmpdepfile"
1433eed67faSmbalmer    exit $stat
1443eed67faSmbalmer  fi
1453eed67faSmbalmer  rm -f "$depfile"
1463eed67faSmbalmer  echo "$object : \\" > "$depfile"
1473eed67faSmbalmer  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1483eed67faSmbalmer## The second -e expression handles DOS-style file names with drive letters.
1493eed67faSmbalmer  sed -e 's/^[^:]*: / /' \
1503eed67faSmbalmer      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1513eed67faSmbalmer## This next piece of magic avoids the `deleted header file' problem.
1523eed67faSmbalmer## The problem is that when a header file which appears in a .P file
1533eed67faSmbalmer## is deleted, the dependency causes make to die (because there is
1543eed67faSmbalmer## typically no way to rebuild the header).  We avoid this by adding
1553eed67faSmbalmer## dummy dependencies for each header file.  Too bad gcc doesn't do
1563eed67faSmbalmer## this for us directly.
1573eed67faSmbalmer  tr ' ' '
1583eed67faSmbalmer' < "$tmpdepfile" |
1593eed67faSmbalmer## Some versions of gcc put a space before the `:'.  On the theory
1603eed67faSmbalmer## that the space means something, we add a space to the output as
1613eed67faSmbalmer## well.
1623eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation
1633eed67faSmbalmer## correctly.  Breaking it into two sed invocations is a workaround.
1643eed67faSmbalmer    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1653eed67faSmbalmer  rm -f "$tmpdepfile"
1663eed67faSmbalmer  ;;
1673eed67faSmbalmer
1683eed67faSmbalmerhp)
1693eed67faSmbalmer  # This case exists only to let depend.m4 do its work.  It works by
1703eed67faSmbalmer  # looking at the text of this script.  This case will never be run,
1713eed67faSmbalmer  # since it is checked for above.
1723eed67faSmbalmer  exit 1
1733eed67faSmbalmer  ;;
1743eed67faSmbalmer
1753eed67faSmbalmersgi)
1763eed67faSmbalmer  if test "$libtool" = yes; then
1773eed67faSmbalmer    "$@" "-Wp,-MDupdate,$tmpdepfile"
1783eed67faSmbalmer  else
1793eed67faSmbalmer    "$@" -MDupdate "$tmpdepfile"
1803eed67faSmbalmer  fi
1813eed67faSmbalmer  stat=$?
1823eed67faSmbalmer  if test $stat -eq 0; then :
1833eed67faSmbalmer  else
1843eed67faSmbalmer    rm -f "$tmpdepfile"
1853eed67faSmbalmer    exit $stat
1863eed67faSmbalmer  fi
1873eed67faSmbalmer  rm -f "$depfile"
1883eed67faSmbalmer
1893eed67faSmbalmer  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1903eed67faSmbalmer    echo "$object : \\" > "$depfile"
1913eed67faSmbalmer
1923eed67faSmbalmer    # Clip off the initial element (the dependent).  Don't try to be
1933eed67faSmbalmer    # clever and replace this with sed code, as IRIX sed won't handle
1943eed67faSmbalmer    # lines with more than a fixed number of characters (4096 in
1953eed67faSmbalmer    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1963eed67faSmbalmer    # the IRIX cc adds comments like `#:fec' to the end of the
1973eed67faSmbalmer    # dependency line.
1983eed67faSmbalmer    tr ' ' '
1993eed67faSmbalmer' < "$tmpdepfile" \
2003eed67faSmbalmer    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
2013eed67faSmbalmer    tr '
202dc407927Smrg' ' ' >> "$depfile"
203dc407927Smrg    echo >> "$depfile"
2043eed67faSmbalmer
2053eed67faSmbalmer    # The second pass generates a dummy entry for each header file.
2063eed67faSmbalmer    tr ' ' '
2073eed67faSmbalmer' < "$tmpdepfile" \
2083eed67faSmbalmer   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
209dc407927Smrg   >> "$depfile"
2103eed67faSmbalmer  else
2113eed67faSmbalmer    # The sourcefile does not contain any dependencies, so just
2123eed67faSmbalmer    # store a dummy comment line, to avoid errors with the Makefile
2133eed67faSmbalmer    # "include basename.Plo" scheme.
2143eed67faSmbalmer    echo "#dummy" > "$depfile"
2153eed67faSmbalmer  fi
2163eed67faSmbalmer  rm -f "$tmpdepfile"
2173eed67faSmbalmer  ;;
2183eed67faSmbalmer
2193eed67faSmbalmeraix)
2203eed67faSmbalmer  # The C for AIX Compiler uses -M and outputs the dependencies
2213eed67faSmbalmer  # in a .u file.  In older versions, this file always lives in the
2223eed67faSmbalmer  # current directory.  Also, the AIX compiler puts `$object:' at the
2233eed67faSmbalmer  # start of each line; $object doesn't have directory information.
2243eed67faSmbalmer  # Version 6 uses the directory in both cases.
225dc407927Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226dc407927Smrg  test "x$dir" = "x$object" && dir=
227dc407927Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2283eed67faSmbalmer  if test "$libtool" = yes; then
229dc407927Smrg    tmpdepfile1=$dir$base.u
230dc407927Smrg    tmpdepfile2=$base.u
231dc407927Smrg    tmpdepfile3=$dir.libs/$base.u
2323eed67faSmbalmer    "$@" -Wc,-M
2333eed67faSmbalmer  else
234dc407927Smrg    tmpdepfile1=$dir$base.u
235dc407927Smrg    tmpdepfile2=$dir$base.u
236dc407927Smrg    tmpdepfile3=$dir$base.u
2373eed67faSmbalmer    "$@" -M
2383eed67faSmbalmer  fi
2393eed67faSmbalmer  stat=$?
2403eed67faSmbalmer
2413eed67faSmbalmer  if test $stat -eq 0; then :
2423eed67faSmbalmer  else
243dc407927Smrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2443eed67faSmbalmer    exit $stat
2453eed67faSmbalmer  fi
2463eed67faSmbalmer
247dc407927Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248dc407927Smrg  do
249dc407927Smrg    test -f "$tmpdepfile" && break
250dc407927Smrg  done
2513eed67faSmbalmer  if test -f "$tmpdepfile"; then
2523eed67faSmbalmer    # Each line is of the form `foo.o: dependent.h'.
2533eed67faSmbalmer    # Do two passes, one to just change these to
2543eed67faSmbalmer    # `$object: dependent.h' and one to simply `dependent.h:'.
255dc407927Smrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256dc407927Smrg    # That's a tab and a space in the [].
257dc407927Smrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
2583eed67faSmbalmer  else
2593eed67faSmbalmer    # The sourcefile does not contain any dependencies, so just
2603eed67faSmbalmer    # store a dummy comment line, to avoid errors with the Makefile
2613eed67faSmbalmer    # "include basename.Plo" scheme.
2623eed67faSmbalmer    echo "#dummy" > "$depfile"
2633eed67faSmbalmer  fi
2643eed67faSmbalmer  rm -f "$tmpdepfile"
2653eed67faSmbalmer  ;;
2663eed67faSmbalmer
2673eed67faSmbalmericc)
2683eed67faSmbalmer  # Intel's C compiler understands `-MD -MF file'.  However on
2693eed67faSmbalmer  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2703eed67faSmbalmer  # ICC 7.0 will fill foo.d with something like
2713eed67faSmbalmer  #    foo.o: sub/foo.c
2723eed67faSmbalmer  #    foo.o: sub/foo.h
2733eed67faSmbalmer  # which is wrong.  We want:
2743eed67faSmbalmer  #    sub/foo.o: sub/foo.c
2753eed67faSmbalmer  #    sub/foo.o: sub/foo.h
2763eed67faSmbalmer  #    sub/foo.c:
2773eed67faSmbalmer  #    sub/foo.h:
2783eed67faSmbalmer  # ICC 7.1 will output
2793eed67faSmbalmer  #    foo.o: sub/foo.c sub/foo.h
2803eed67faSmbalmer  # and will wrap long lines using \ :
2813eed67faSmbalmer  #    foo.o: sub/foo.c ... \
2823eed67faSmbalmer  #     sub/foo.h ... \
2833eed67faSmbalmer  #     ...
2843eed67faSmbalmer
2853eed67faSmbalmer  "$@" -MD -MF "$tmpdepfile"
2863eed67faSmbalmer  stat=$?
2873eed67faSmbalmer  if test $stat -eq 0; then :
2883eed67faSmbalmer  else
2893eed67faSmbalmer    rm -f "$tmpdepfile"
2903eed67faSmbalmer    exit $stat
2913eed67faSmbalmer  fi
2923eed67faSmbalmer  rm -f "$depfile"
2933eed67faSmbalmer  # Each line is of the form `foo.o: dependent.h',
2943eed67faSmbalmer  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2953eed67faSmbalmer  # Do two passes, one to just change these to
2963eed67faSmbalmer  # `$object: dependent.h' and one to simply `dependent.h:'.
2973eed67faSmbalmer  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2983eed67faSmbalmer  # Some versions of the HPUX 10.20 sed can't process this invocation
2993eed67faSmbalmer  # correctly.  Breaking it into two sed invocations is a workaround.
3003eed67faSmbalmer  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
3013eed67faSmbalmer    sed -e 's/$/ :/' >> "$depfile"
3023eed67faSmbalmer  rm -f "$tmpdepfile"
3033eed67faSmbalmer  ;;
3043eed67faSmbalmer
305dc407927Smrghp2)
306dc407927Smrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
307dc407927Smrg  # compilers, which have integrated preprocessors.  The correct option
308dc407927Smrg  # to use with these is +Maked; it writes dependencies to a file named
309dc407927Smrg  # 'foo.d', which lands next to the object file, wherever that
310dc407927Smrg  # happens to be.
311dc407927Smrg  # Much of this is similar to the tru64 case; see comments there.
312dc407927Smrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
313dc407927Smrg  test "x$dir" = "x$object" && dir=
314dc407927Smrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
315dc407927Smrg  if test "$libtool" = yes; then
316dc407927Smrg    tmpdepfile1=$dir$base.d
317dc407927Smrg    tmpdepfile2=$dir.libs/$base.d
318dc407927Smrg    "$@" -Wc,+Maked
319dc407927Smrg  else
320dc407927Smrg    tmpdepfile1=$dir$base.d
321dc407927Smrg    tmpdepfile2=$dir$base.d
322dc407927Smrg    "$@" +Maked
323dc407927Smrg  fi
324dc407927Smrg  stat=$?
325dc407927Smrg  if test $stat -eq 0; then :
326dc407927Smrg  else
327dc407927Smrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
328dc407927Smrg     exit $stat
329dc407927Smrg  fi
330dc407927Smrg
331dc407927Smrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
332dc407927Smrg  do
333dc407927Smrg    test -f "$tmpdepfile" && break
334dc407927Smrg  done
335dc407927Smrg  if test -f "$tmpdepfile"; then
336dc407927Smrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
337dc407927Smrg    # Add `dependent.h:' lines.
338dc407927Smrg    sed -ne '2,${
339dc407927Smrg	       s/^ *//
340dc407927Smrg	       s/ \\*$//
341dc407927Smrg	       s/$/:/
342dc407927Smrg	       p
343dc407927Smrg	     }' "$tmpdepfile" >> "$depfile"
344dc407927Smrg  else
345dc407927Smrg    echo "#dummy" > "$depfile"
346dc407927Smrg  fi
347dc407927Smrg  rm -f "$tmpdepfile" "$tmpdepfile2"
348dc407927Smrg  ;;
349dc407927Smrg
3503eed67faSmbalmertru64)
3513eed67faSmbalmer   # The Tru64 compiler uses -MD to generate dependencies as a side
3523eed67faSmbalmer   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
3533eed67faSmbalmer   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
3543eed67faSmbalmer   # dependencies in `foo.d' instead, so we check for that too.
3553eed67faSmbalmer   # Subdirectories are respected.
3563eed67faSmbalmer   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3573eed67faSmbalmer   test "x$dir" = "x$object" && dir=
3583eed67faSmbalmer   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3593eed67faSmbalmer
3603eed67faSmbalmer   if test "$libtool" = yes; then
3613eed67faSmbalmer      # With Tru64 cc, shared objects can also be used to make a
362dc407927Smrg      # static library.  This mechanism is used in libtool 1.4 series to
3633eed67faSmbalmer      # handle both shared and static libraries in a single compilation.
3643eed67faSmbalmer      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
3653eed67faSmbalmer      #
3663eed67faSmbalmer      # With libtool 1.5 this exception was removed, and libtool now
3673eed67faSmbalmer      # generates 2 separate objects for the 2 libraries.  These two
368dc407927Smrg      # compilations output dependencies in $dir.libs/$base.o.d and
3693eed67faSmbalmer      # in $dir$base.o.d.  We have to check for both files, because
3703eed67faSmbalmer      # one of the two compilations can be disabled.  We should prefer
3713eed67faSmbalmer      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3723eed67faSmbalmer      # automatically cleaned when .libs/ is deleted, while ignoring
3733eed67faSmbalmer      # the former would cause a distcleancheck panic.
3743eed67faSmbalmer      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3753eed67faSmbalmer      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3763eed67faSmbalmer      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3773eed67faSmbalmer      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3783eed67faSmbalmer      "$@" -Wc,-MD
3793eed67faSmbalmer   else
3803eed67faSmbalmer      tmpdepfile1=$dir$base.o.d
3813eed67faSmbalmer      tmpdepfile2=$dir$base.d
3823eed67faSmbalmer      tmpdepfile3=$dir$base.d
3833eed67faSmbalmer      tmpdepfile4=$dir$base.d
3843eed67faSmbalmer      "$@" -MD
3853eed67faSmbalmer   fi
3863eed67faSmbalmer
3873eed67faSmbalmer   stat=$?
3883eed67faSmbalmer   if test $stat -eq 0; then :
3893eed67faSmbalmer   else
3903eed67faSmbalmer      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3913eed67faSmbalmer      exit $stat
3923eed67faSmbalmer   fi
3933eed67faSmbalmer
3943eed67faSmbalmer   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3953eed67faSmbalmer   do
3963eed67faSmbalmer     test -f "$tmpdepfile" && break
3973eed67faSmbalmer   done
3983eed67faSmbalmer   if test -f "$tmpdepfile"; then
3993eed67faSmbalmer      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
4003eed67faSmbalmer      # That's a tab and a space in the [].
4013eed67faSmbalmer      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
4023eed67faSmbalmer   else
4033eed67faSmbalmer      echo "#dummy" > "$depfile"
4043eed67faSmbalmer   fi
4053eed67faSmbalmer   rm -f "$tmpdepfile"
4063eed67faSmbalmer   ;;
4073eed67faSmbalmer
4083eed67faSmbalmer#nosideeffect)
4093eed67faSmbalmer  # This comment above is used by automake to tell side-effect
4103eed67faSmbalmer  # dependency tracking mechanisms from slower ones.
4113eed67faSmbalmer
4123eed67faSmbalmerdashmstdout)
4133eed67faSmbalmer  # Important note: in order to support this mode, a compiler *must*
4143eed67faSmbalmer  # always write the preprocessed file to stdout, regardless of -o.
4153eed67faSmbalmer  "$@" || exit $?
4163eed67faSmbalmer
4173eed67faSmbalmer  # Remove the call to Libtool.
4183eed67faSmbalmer  if test "$libtool" = yes; then
419dc407927Smrg    while test "X$1" != 'X--mode=compile'; do
4203eed67faSmbalmer      shift
4213eed67faSmbalmer    done
4223eed67faSmbalmer    shift
4233eed67faSmbalmer  fi
4243eed67faSmbalmer
4253eed67faSmbalmer  # Remove `-o $object'.
4263eed67faSmbalmer  IFS=" "
4273eed67faSmbalmer  for arg
4283eed67faSmbalmer  do
4293eed67faSmbalmer    case $arg in
4303eed67faSmbalmer    -o)
4313eed67faSmbalmer      shift
4323eed67faSmbalmer      ;;
4333eed67faSmbalmer    $object)
4343eed67faSmbalmer      shift
4353eed67faSmbalmer      ;;
4363eed67faSmbalmer    *)
4373eed67faSmbalmer      set fnord "$@" "$arg"
4383eed67faSmbalmer      shift # fnord
4393eed67faSmbalmer      shift # $arg
4403eed67faSmbalmer      ;;
4413eed67faSmbalmer    esac
4423eed67faSmbalmer  done
4433eed67faSmbalmer
4443eed67faSmbalmer  test -z "$dashmflag" && dashmflag=-M
4453eed67faSmbalmer  # Require at least two characters before searching for `:'
4463eed67faSmbalmer  # in the target name.  This is to cope with DOS-style filenames:
4473eed67faSmbalmer  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
4483eed67faSmbalmer  "$@" $dashmflag |
4493eed67faSmbalmer    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
4503eed67faSmbalmer  rm -f "$depfile"
4513eed67faSmbalmer  cat < "$tmpdepfile" > "$depfile"
4523eed67faSmbalmer  tr ' ' '
4533eed67faSmbalmer' < "$tmpdepfile" | \
4543eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation
4553eed67faSmbalmer## correctly.  Breaking it into two sed invocations is a workaround.
4563eed67faSmbalmer    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4573eed67faSmbalmer  rm -f "$tmpdepfile"
4583eed67faSmbalmer  ;;
4593eed67faSmbalmer
4603eed67faSmbalmerdashXmstdout)
4613eed67faSmbalmer  # This case only exists to satisfy depend.m4.  It is never actually
4623eed67faSmbalmer  # run, as this mode is specially recognized in the preamble.
4633eed67faSmbalmer  exit 1
4643eed67faSmbalmer  ;;
4653eed67faSmbalmer
4663eed67faSmbalmermakedepend)
4673eed67faSmbalmer  "$@" || exit $?
4683eed67faSmbalmer  # Remove any Libtool call
4693eed67faSmbalmer  if test "$libtool" = yes; then
470dc407927Smrg    while test "X$1" != 'X--mode=compile'; do
4713eed67faSmbalmer      shift
4723eed67faSmbalmer    done
4733eed67faSmbalmer    shift
4743eed67faSmbalmer  fi
4753eed67faSmbalmer  # X makedepend
4763eed67faSmbalmer  shift
477dc407927Smrg  cleared=no eat=no
478dc407927Smrg  for arg
479dc407927Smrg  do
4803eed67faSmbalmer    case $cleared in
4813eed67faSmbalmer    no)
4823eed67faSmbalmer      set ""; shift
4833eed67faSmbalmer      cleared=yes ;;
4843eed67faSmbalmer    esac
485dc407927Smrg    if test $eat = yes; then
486dc407927Smrg      eat=no
487dc407927Smrg      continue
488dc407927Smrg    fi
4893eed67faSmbalmer    case "$arg" in
4903eed67faSmbalmer    -D*|-I*)
4913eed67faSmbalmer      set fnord "$@" "$arg"; shift ;;
4923eed67faSmbalmer    # Strip any option that makedepend may not understand.  Remove
4933eed67faSmbalmer    # the object too, otherwise makedepend will parse it as a source file.
494dc407927Smrg    -arch)
495dc407927Smrg      eat=yes ;;
4963eed67faSmbalmer    -*|$object)
4973eed67faSmbalmer      ;;
4983eed67faSmbalmer    *)
4993eed67faSmbalmer      set fnord "$@" "$arg"; shift ;;
5003eed67faSmbalmer    esac
5013eed67faSmbalmer  done
502dc407927Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
5033eed67faSmbalmer  touch "$tmpdepfile"
5043eed67faSmbalmer  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
5053eed67faSmbalmer  rm -f "$depfile"
5063eed67faSmbalmer  cat < "$tmpdepfile" > "$depfile"
5073eed67faSmbalmer  sed '1,2d' "$tmpdepfile" | tr ' ' '
5083eed67faSmbalmer' | \
5093eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation
5103eed67faSmbalmer## correctly.  Breaking it into two sed invocations is a workaround.
5113eed67faSmbalmer    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
5123eed67faSmbalmer  rm -f "$tmpdepfile" "$tmpdepfile".bak
5133eed67faSmbalmer  ;;
5143eed67faSmbalmer
5153eed67faSmbalmercpp)
5163eed67faSmbalmer  # Important note: in order to support this mode, a compiler *must*
5173eed67faSmbalmer  # always write the preprocessed file to stdout.
5183eed67faSmbalmer  "$@" || exit $?
5193eed67faSmbalmer
5203eed67faSmbalmer  # Remove the call to Libtool.
5213eed67faSmbalmer  if test "$libtool" = yes; then
522dc407927Smrg    while test "X$1" != 'X--mode=compile'; do
5233eed67faSmbalmer      shift
5243eed67faSmbalmer    done
5253eed67faSmbalmer    shift
5263eed67faSmbalmer  fi
5273eed67faSmbalmer
5283eed67faSmbalmer  # Remove `-o $object'.
5293eed67faSmbalmer  IFS=" "
5303eed67faSmbalmer  for arg
5313eed67faSmbalmer  do
5323eed67faSmbalmer    case $arg in
5333eed67faSmbalmer    -o)
5343eed67faSmbalmer      shift
5353eed67faSmbalmer      ;;
5363eed67faSmbalmer    $object)
5373eed67faSmbalmer      shift
5383eed67faSmbalmer      ;;
5393eed67faSmbalmer    *)
5403eed67faSmbalmer      set fnord "$@" "$arg"
5413eed67faSmbalmer      shift # fnord
5423eed67faSmbalmer      shift # $arg
5433eed67faSmbalmer      ;;
5443eed67faSmbalmer    esac
5453eed67faSmbalmer  done
5463eed67faSmbalmer
5473eed67faSmbalmer  "$@" -E |
5483eed67faSmbalmer    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
5493eed67faSmbalmer       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
5503eed67faSmbalmer    sed '$ s: \\$::' > "$tmpdepfile"
5513eed67faSmbalmer  rm -f "$depfile"
5523eed67faSmbalmer  echo "$object : \\" > "$depfile"
5533eed67faSmbalmer  cat < "$tmpdepfile" >> "$depfile"
5543eed67faSmbalmer  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
5553eed67faSmbalmer  rm -f "$tmpdepfile"
5563eed67faSmbalmer  ;;
5573eed67faSmbalmer
5583eed67faSmbalmermsvisualcpp)
5593eed67faSmbalmer  # Important note: in order to support this mode, a compiler *must*
560dc407927Smrg  # always write the preprocessed file to stdout.
5613eed67faSmbalmer  "$@" || exit $?
562dc407927Smrg
563dc407927Smrg  # Remove the call to Libtool.
564dc407927Smrg  if test "$libtool" = yes; then
565dc407927Smrg    while test "X$1" != 'X--mode=compile'; do
566dc407927Smrg      shift
567dc407927Smrg    done
568dc407927Smrg    shift
569dc407927Smrg  fi
570dc407927Smrg
5713eed67faSmbalmer  IFS=" "
5723eed67faSmbalmer  for arg
5733eed67faSmbalmer  do
5743eed67faSmbalmer    case "$arg" in
575dc407927Smrg    -o)
576dc407927Smrg      shift
577dc407927Smrg      ;;
578dc407927Smrg    $object)
579dc407927Smrg      shift
580dc407927Smrg      ;;
5813eed67faSmbalmer    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
5823eed67faSmbalmer	set fnord "$@"
5833eed67faSmbalmer	shift
5843eed67faSmbalmer	shift
5853eed67faSmbalmer	;;
5863eed67faSmbalmer    *)
5873eed67faSmbalmer	set fnord "$@" "$arg"
5883eed67faSmbalmer	shift
5893eed67faSmbalmer	shift
5903eed67faSmbalmer	;;
5913eed67faSmbalmer    esac
5923eed67faSmbalmer  done
593dc407927Smrg  "$@" -E 2>/dev/null |
594dc407927Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
5953eed67faSmbalmer  rm -f "$depfile"
5963eed67faSmbalmer  echo "$object : \\" > "$depfile"
597dc407927Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5983eed67faSmbalmer  echo "	" >> "$depfile"
599dc407927Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
6003eed67faSmbalmer  rm -f "$tmpdepfile"
6013eed67faSmbalmer  ;;
6023eed67faSmbalmer
603dc407927Smrgmsvcmsys)
604dc407927Smrg  # This case exists only to let depend.m4 do its work.  It works by
605dc407927Smrg  # looking at the text of this script.  This case will never be run,
606dc407927Smrg  # since it is checked for above.
607dc407927Smrg  exit 1
608dc407927Smrg  ;;
609dc407927Smrg
6103eed67faSmbalmernone)
6113eed67faSmbalmer  exec "$@"
6123eed67faSmbalmer  ;;
6133eed67faSmbalmer
6143eed67faSmbalmer*)
6153eed67faSmbalmer  echo "Unknown depmode $depmode" 1>&2
6163eed67faSmbalmer  exit 1
6173eed67faSmbalmer  ;;
6183eed67faSmbalmeresac
6193eed67faSmbalmer
6203eed67faSmbalmerexit 0
6213eed67faSmbalmer
6223eed67faSmbalmer# Local Variables:
6233eed67faSmbalmer# mode: shell-script
6243eed67faSmbalmer# sh-indentation: 2
6253eed67faSmbalmer# eval: (add-hook 'write-file-hooks 'time-stamp)
6263eed67faSmbalmer# time-stamp-start: "scriptversion="
6273eed67faSmbalmer# time-stamp-format: "%:y-%02m-%02d.%02H"
628dc407927Smrg# time-stamp-time-zone: "UTC"
629dc407927Smrg# time-stamp-end: "; # UTC"
6303eed67faSmbalmer# End:
631