depcomp revision b7fb5eac
11a30de1fSmrg#! /bin/sh
21a30de1fSmrg# depcomp - compile a program generating dependencies as side-effects
31a30de1fSmrg
4b7fb5eacSmrgscriptversion=2009-04-28.21; # UTC
51a30de1fSmrg
6b7fb5eacSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
7b7fb5eacSmrg# Software Foundation, Inc.
81a30de1fSmrg
91a30de1fSmrg# This program is free software; you can redistribute it and/or modify
101a30de1fSmrg# it under the terms of the GNU General Public License as published by
111a30de1fSmrg# the Free Software Foundation; either version 2, or (at your option)
121a30de1fSmrg# any later version.
131a30de1fSmrg
141a30de1fSmrg# This program is distributed in the hope that it will be useful,
151a30de1fSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
161a30de1fSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
171a30de1fSmrg# GNU General Public License for more details.
181a30de1fSmrg
191a30de1fSmrg# You should have received a copy of the GNU General Public License
20b7fb5eacSmrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
211a30de1fSmrg
221a30de1fSmrg# As a special exception to the GNU General Public License, if you
231a30de1fSmrg# distribute this file as part of a program that contains a
241a30de1fSmrg# configuration script generated by Autoconf, you may include it under
251a30de1fSmrg# the same distribution terms that you use for the rest of that program.
261a30de1fSmrg
271a30de1fSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
281a30de1fSmrg
291a30de1fSmrgcase $1 in
301a30de1fSmrg  '')
311a30de1fSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
321a30de1fSmrg     exit 1;
331a30de1fSmrg     ;;
341a30de1fSmrg  -h | --h*)
351a30de1fSmrg    cat <<\EOF
361a30de1fSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
371a30de1fSmrg
381a30de1fSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
391a30de1fSmrgas side-effects.
401a30de1fSmrg
411a30de1fSmrgEnvironment variables:
421a30de1fSmrg  depmode     Dependency tracking mode.
431a30de1fSmrg  source      Source file read by `PROGRAMS ARGS'.
441a30de1fSmrg  object      Object file output by `PROGRAMS ARGS'.
451a30de1fSmrg  DEPDIR      directory where to store dependencies.
461a30de1fSmrg  depfile     Dependency file to output.
471a30de1fSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
481a30de1fSmrg  libtool     Whether libtool is used (yes/no).
491a30de1fSmrg
501a30de1fSmrgReport bugs to <bug-automake@gnu.org>.
511a30de1fSmrgEOF
521a30de1fSmrg    exit $?
531a30de1fSmrg    ;;
541a30de1fSmrg  -v | --v*)
551a30de1fSmrg    echo "depcomp $scriptversion"
561a30de1fSmrg    exit $?
571a30de1fSmrg    ;;
581a30de1fSmrgesac
591a30de1fSmrg
601a30de1fSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
611a30de1fSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
621a30de1fSmrg  exit 1
631a30de1fSmrgfi
641a30de1fSmrg
651a30de1fSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
661a30de1fSmrgdepfile=${depfile-`echo "$object" |
671a30de1fSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
681a30de1fSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
691a30de1fSmrg
701a30de1fSmrgrm -f "$tmpdepfile"
711a30de1fSmrg
721a30de1fSmrg# Some modes work just like other modes, but use different flags.  We
731a30de1fSmrg# parameterize here, but still list the modes in the big case below,
741a30de1fSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
751a30de1fSmrg# here, because this file can only contain one case statement.
761a30de1fSmrgif test "$depmode" = hp; then
771a30de1fSmrg  # HP compiler uses -M and no extra arg.
781a30de1fSmrg  gccflag=-M
791a30de1fSmrg  depmode=gcc
801a30de1fSmrgfi
811a30de1fSmrg
821a30de1fSmrgif test "$depmode" = dashXmstdout; then
831a30de1fSmrg   # This is just like dashmstdout with a different argument.
841a30de1fSmrg   dashmflag=-xM
851a30de1fSmrg   depmode=dashmstdout
861a30de1fSmrgfi
871a30de1fSmrg
88b7fb5eacSmrgcygpath_u="cygpath -u -f -"
89b7fb5eacSmrgif test "$depmode" = msvcmsys; then
90b7fb5eacSmrg   # This is just like msvisualcpp but w/o cygpath translation.
91b7fb5eacSmrg   # Just convert the backslash-escaped backslashes to single forward
92b7fb5eacSmrg   # slashes to satisfy depend.m4
93b7fb5eacSmrg   cygpath_u="sed s,\\\\\\\\,/,g"
94b7fb5eacSmrg   depmode=msvisualcpp
95b7fb5eacSmrgfi
96b7fb5eacSmrg
971a30de1fSmrgcase "$depmode" in
981a30de1fSmrggcc3)
991a30de1fSmrg## gcc 3 implements dependency tracking that does exactly what
1001a30de1fSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
1011a30de1fSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
1021a30de1fSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
1031a30de1fSmrg## the command line argument order; so add the flags where they
1041a30de1fSmrg## appear in depend2.am.  Note that the slowdown incurred here
1051a30de1fSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
1061a30de1fSmrg  for arg
1071a30de1fSmrg  do
1081a30de1fSmrg    case $arg in
1091a30de1fSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
1101a30de1fSmrg    *)  set fnord "$@" "$arg" ;;
1111a30de1fSmrg    esac
1121a30de1fSmrg    shift # fnord
1131a30de1fSmrg    shift # $arg
1141a30de1fSmrg  done
1151a30de1fSmrg  "$@"
1161a30de1fSmrg  stat=$?
1171a30de1fSmrg  if test $stat -eq 0; then :
1181a30de1fSmrg  else
1191a30de1fSmrg    rm -f "$tmpdepfile"
1201a30de1fSmrg    exit $stat
1211a30de1fSmrg  fi
1221a30de1fSmrg  mv "$tmpdepfile" "$depfile"
1231a30de1fSmrg  ;;
1241a30de1fSmrg
1251a30de1fSmrggcc)
1261a30de1fSmrg## There are various ways to get dependency output from gcc.  Here's
1271a30de1fSmrg## why we pick this rather obscure method:
1281a30de1fSmrg## - Don't want to use -MD because we'd like the dependencies to end
1291a30de1fSmrg##   up in a subdir.  Having to rename by hand is ugly.
1301a30de1fSmrg##   (We might end up doing this anyway to support other compilers.)
1311a30de1fSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1321a30de1fSmrg##   -MM, not -M (despite what the docs say).
1331a30de1fSmrg## - Using -M directly means running the compiler twice (even worse
1341a30de1fSmrg##   than renaming).
1351a30de1fSmrg  if test -z "$gccflag"; then
1361a30de1fSmrg    gccflag=-MD,
1371a30de1fSmrg  fi
1381a30de1fSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
1391a30de1fSmrg  stat=$?
1401a30de1fSmrg  if test $stat -eq 0; then :
1411a30de1fSmrg  else
1421a30de1fSmrg    rm -f "$tmpdepfile"
1431a30de1fSmrg    exit $stat
1441a30de1fSmrg  fi
1451a30de1fSmrg  rm -f "$depfile"
1461a30de1fSmrg  echo "$object : \\" > "$depfile"
1471a30de1fSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1481a30de1fSmrg## The second -e expression handles DOS-style file names with drive letters.
1491a30de1fSmrg  sed -e 's/^[^:]*: / /' \
1501a30de1fSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1511a30de1fSmrg## This next piece of magic avoids the `deleted header file' problem.
1521a30de1fSmrg## The problem is that when a header file which appears in a .P file
1531a30de1fSmrg## is deleted, the dependency causes make to die (because there is
1541a30de1fSmrg## typically no way to rebuild the header).  We avoid this by adding
1551a30de1fSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1561a30de1fSmrg## this for us directly.
1571a30de1fSmrg  tr ' ' '
1581a30de1fSmrg' < "$tmpdepfile" |
1591a30de1fSmrg## Some versions of gcc put a space before the `:'.  On the theory
1601a30de1fSmrg## that the space means something, we add a space to the output as
1611a30de1fSmrg## well.
1621a30de1fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
1631a30de1fSmrg## correctly.  Breaking it into two sed invocations is a workaround.
1641a30de1fSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1651a30de1fSmrg  rm -f "$tmpdepfile"
1661a30de1fSmrg  ;;
1671a30de1fSmrg
1681a30de1fSmrghp)
1691a30de1fSmrg  # This case exists only to let depend.m4 do its work.  It works by
1701a30de1fSmrg  # looking at the text of this script.  This case will never be run,
1711a30de1fSmrg  # since it is checked for above.
1721a30de1fSmrg  exit 1
1731a30de1fSmrg  ;;
1741a30de1fSmrg
1751a30de1fSmrgsgi)
1761a30de1fSmrg  if test "$libtool" = yes; then
1771a30de1fSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1781a30de1fSmrg  else
1791a30de1fSmrg    "$@" -MDupdate "$tmpdepfile"
1801a30de1fSmrg  fi
1811a30de1fSmrg  stat=$?
1821a30de1fSmrg  if test $stat -eq 0; then :
1831a30de1fSmrg  else
1841a30de1fSmrg    rm -f "$tmpdepfile"
1851a30de1fSmrg    exit $stat
1861a30de1fSmrg  fi
1871a30de1fSmrg  rm -f "$depfile"
1881a30de1fSmrg
1891a30de1fSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1901a30de1fSmrg    echo "$object : \\" > "$depfile"
1911a30de1fSmrg
1921a30de1fSmrg    # Clip off the initial element (the dependent).  Don't try to be
1931a30de1fSmrg    # clever and replace this with sed code, as IRIX sed won't handle
1941a30de1fSmrg    # lines with more than a fixed number of characters (4096 in
1951a30de1fSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1961a30de1fSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
1971a30de1fSmrg    # dependency line.
1981a30de1fSmrg    tr ' ' '
1991a30de1fSmrg' < "$tmpdepfile" \
2001a30de1fSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
2011a30de1fSmrg    tr '
202b7fb5eacSmrg' ' ' >> "$depfile"
203b7fb5eacSmrg    echo >> "$depfile"
2041a30de1fSmrg
2051a30de1fSmrg    # The second pass generates a dummy entry for each header file.
2061a30de1fSmrg    tr ' ' '
2071a30de1fSmrg' < "$tmpdepfile" \
2081a30de1fSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
209b7fb5eacSmrg   >> "$depfile"
2101a30de1fSmrg  else
2111a30de1fSmrg    # The sourcefile does not contain any dependencies, so just
2121a30de1fSmrg    # store a dummy comment line, to avoid errors with the Makefile
2131a30de1fSmrg    # "include basename.Plo" scheme.
2141a30de1fSmrg    echo "#dummy" > "$depfile"
2151a30de1fSmrg  fi
2161a30de1fSmrg  rm -f "$tmpdepfile"
2171a30de1fSmrg  ;;
2181a30de1fSmrg
2191a30de1fSmrgaix)
2201a30de1fSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
2211a30de1fSmrg  # in a .u file.  In older versions, this file always lives in the
2221a30de1fSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2231a30de1fSmrg  # start of each line; $object doesn't have directory information.
2241a30de1fSmrg  # Version 6 uses the directory in both cases.
225b7fb5eacSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226b7fb5eacSmrg  test "x$dir" = "x$object" && dir=
227b7fb5eacSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2281a30de1fSmrg  if test "$libtool" = yes; then
229b7fb5eacSmrg    tmpdepfile1=$dir$base.u
230b7fb5eacSmrg    tmpdepfile2=$base.u
231b7fb5eacSmrg    tmpdepfile3=$dir.libs/$base.u
2321a30de1fSmrg    "$@" -Wc,-M
2331a30de1fSmrg  else
234b7fb5eacSmrg    tmpdepfile1=$dir$base.u
235b7fb5eacSmrg    tmpdepfile2=$dir$base.u
236b7fb5eacSmrg    tmpdepfile3=$dir$base.u
2371a30de1fSmrg    "$@" -M
2381a30de1fSmrg  fi
2391a30de1fSmrg  stat=$?
2401a30de1fSmrg
2411a30de1fSmrg  if test $stat -eq 0; then :
2421a30de1fSmrg  else
243b7fb5eacSmrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
2441a30de1fSmrg    exit $stat
2451a30de1fSmrg  fi
2461a30de1fSmrg
247b7fb5eacSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248b7fb5eacSmrg  do
249b7fb5eacSmrg    test -f "$tmpdepfile" && break
250b7fb5eacSmrg  done
2511a30de1fSmrg  if test -f "$tmpdepfile"; then
2521a30de1fSmrg    # Each line is of the form `foo.o: dependent.h'.
2531a30de1fSmrg    # Do two passes, one to just change these to
2541a30de1fSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
255b7fb5eacSmrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256b7fb5eacSmrg    # That's a tab and a space in the [].
257b7fb5eacSmrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
2581a30de1fSmrg  else
2591a30de1fSmrg    # The sourcefile does not contain any dependencies, so just
2601a30de1fSmrg    # store a dummy comment line, to avoid errors with the Makefile
2611a30de1fSmrg    # "include basename.Plo" scheme.
2621a30de1fSmrg    echo "#dummy" > "$depfile"
2631a30de1fSmrg  fi
2641a30de1fSmrg  rm -f "$tmpdepfile"
2651a30de1fSmrg  ;;
2661a30de1fSmrg
2671a30de1fSmrgicc)
2681a30de1fSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
2691a30de1fSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2701a30de1fSmrg  # ICC 7.0 will fill foo.d with something like
2711a30de1fSmrg  #    foo.o: sub/foo.c
2721a30de1fSmrg  #    foo.o: sub/foo.h
2731a30de1fSmrg  # which is wrong.  We want:
2741a30de1fSmrg  #    sub/foo.o: sub/foo.c
2751a30de1fSmrg  #    sub/foo.o: sub/foo.h
2761a30de1fSmrg  #    sub/foo.c:
2771a30de1fSmrg  #    sub/foo.h:
2781a30de1fSmrg  # ICC 7.1 will output
2791a30de1fSmrg  #    foo.o: sub/foo.c sub/foo.h
2801a30de1fSmrg  # and will wrap long lines using \ :
2811a30de1fSmrg  #    foo.o: sub/foo.c ... \
2821a30de1fSmrg  #     sub/foo.h ... \
2831a30de1fSmrg  #     ...
2841a30de1fSmrg
2851a30de1fSmrg  "$@" -MD -MF "$tmpdepfile"
2861a30de1fSmrg  stat=$?
2871a30de1fSmrg  if test $stat -eq 0; then :
2881a30de1fSmrg  else
2891a30de1fSmrg    rm -f "$tmpdepfile"
2901a30de1fSmrg    exit $stat
2911a30de1fSmrg  fi
2921a30de1fSmrg  rm -f "$depfile"
2931a30de1fSmrg  # Each line is of the form `foo.o: dependent.h',
2941a30de1fSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2951a30de1fSmrg  # Do two passes, one to just change these to
2961a30de1fSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2971a30de1fSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2981a30de1fSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2991a30de1fSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
3001a30de1fSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
3011a30de1fSmrg    sed -e 's/$/ :/' >> "$depfile"
3021a30de1fSmrg  rm -f "$tmpdepfile"
3031a30de1fSmrg  ;;
3041a30de1fSmrg
3051a30de1fSmrghp2)
3061a30de1fSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
3071a30de1fSmrg  # compilers, which have integrated preprocessors.  The correct option
3081a30de1fSmrg  # to use with these is +Maked; it writes dependencies to a file named
3091a30de1fSmrg  # 'foo.d', which lands next to the object file, wherever that
3101a30de1fSmrg  # happens to be.
3111a30de1fSmrg  # Much of this is similar to the tru64 case; see comments there.
3121a30de1fSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3131a30de1fSmrg  test "x$dir" = "x$object" && dir=
3141a30de1fSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3151a30de1fSmrg  if test "$libtool" = yes; then
3161a30de1fSmrg    tmpdepfile1=$dir$base.d
3171a30de1fSmrg    tmpdepfile2=$dir.libs/$base.d
3181a30de1fSmrg    "$@" -Wc,+Maked
3191a30de1fSmrg  else
3201a30de1fSmrg    tmpdepfile1=$dir$base.d
3211a30de1fSmrg    tmpdepfile2=$dir$base.d
3221a30de1fSmrg    "$@" +Maked
3231a30de1fSmrg  fi
3241a30de1fSmrg  stat=$?
3251a30de1fSmrg  if test $stat -eq 0; then :
3261a30de1fSmrg  else
3271a30de1fSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
3281a30de1fSmrg     exit $stat
3291a30de1fSmrg  fi
3301a30de1fSmrg
3311a30de1fSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
3321a30de1fSmrg  do
3331a30de1fSmrg    test -f "$tmpdepfile" && break
3341a30de1fSmrg  done
3351a30de1fSmrg  if test -f "$tmpdepfile"; then
3361a30de1fSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
3371a30de1fSmrg    # Add `dependent.h:' lines.
338b7fb5eacSmrg    sed -ne '2,${
339b7fb5eacSmrg	       s/^ *//
340b7fb5eacSmrg	       s/ \\*$//
341b7fb5eacSmrg	       s/$/:/
342b7fb5eacSmrg	       p
343b7fb5eacSmrg	     }' "$tmpdepfile" >> "$depfile"
3441a30de1fSmrg  else
3451a30de1fSmrg    echo "#dummy" > "$depfile"
3461a30de1fSmrg  fi
3471a30de1fSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
3481a30de1fSmrg  ;;
3491a30de1fSmrg
3501a30de1fSmrgtru64)
3511a30de1fSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
3521a30de1fSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
3531a30de1fSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
3541a30de1fSmrg   # dependencies in `foo.d' instead, so we check for that too.
3551a30de1fSmrg   # Subdirectories are respected.
3561a30de1fSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
3571a30de1fSmrg   test "x$dir" = "x$object" && dir=
3581a30de1fSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
3591a30de1fSmrg
3601a30de1fSmrg   if test "$libtool" = yes; then
3611a30de1fSmrg      # With Tru64 cc, shared objects can also be used to make a
3621a30de1fSmrg      # static library.  This mechanism is used in libtool 1.4 series to
3631a30de1fSmrg      # handle both shared and static libraries in a single compilation.
3641a30de1fSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
3651a30de1fSmrg      #
3661a30de1fSmrg      # With libtool 1.5 this exception was removed, and libtool now
3671a30de1fSmrg      # generates 2 separate objects for the 2 libraries.  These two
3681a30de1fSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
3691a30de1fSmrg      # in $dir$base.o.d.  We have to check for both files, because
3701a30de1fSmrg      # one of the two compilations can be disabled.  We should prefer
3711a30de1fSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3721a30de1fSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
3731a30de1fSmrg      # the former would cause a distcleancheck panic.
3741a30de1fSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3751a30de1fSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3761a30de1fSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3771a30de1fSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3781a30de1fSmrg      "$@" -Wc,-MD
3791a30de1fSmrg   else
3801a30de1fSmrg      tmpdepfile1=$dir$base.o.d
3811a30de1fSmrg      tmpdepfile2=$dir$base.d
3821a30de1fSmrg      tmpdepfile3=$dir$base.d
3831a30de1fSmrg      tmpdepfile4=$dir$base.d
3841a30de1fSmrg      "$@" -MD
3851a30de1fSmrg   fi
3861a30de1fSmrg
3871a30de1fSmrg   stat=$?
3881a30de1fSmrg   if test $stat -eq 0; then :
3891a30de1fSmrg   else
3901a30de1fSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3911a30de1fSmrg      exit $stat
3921a30de1fSmrg   fi
3931a30de1fSmrg
3941a30de1fSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3951a30de1fSmrg   do
3961a30de1fSmrg     test -f "$tmpdepfile" && break
3971a30de1fSmrg   done
3981a30de1fSmrg   if test -f "$tmpdepfile"; then
3991a30de1fSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
4001a30de1fSmrg      # That's a tab and a space in the [].
4011a30de1fSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
4021a30de1fSmrg   else
4031a30de1fSmrg      echo "#dummy" > "$depfile"
4041a30de1fSmrg   fi
4051a30de1fSmrg   rm -f "$tmpdepfile"
4061a30de1fSmrg   ;;
4071a30de1fSmrg
4081a30de1fSmrg#nosideeffect)
4091a30de1fSmrg  # This comment above is used by automake to tell side-effect
4101a30de1fSmrg  # dependency tracking mechanisms from slower ones.
4111a30de1fSmrg
4121a30de1fSmrgdashmstdout)
4131a30de1fSmrg  # Important note: in order to support this mode, a compiler *must*
4141a30de1fSmrg  # always write the preprocessed file to stdout, regardless of -o.
4151a30de1fSmrg  "$@" || exit $?
4161a30de1fSmrg
4171a30de1fSmrg  # Remove the call to Libtool.
4181a30de1fSmrg  if test "$libtool" = yes; then
419b7fb5eacSmrg    while test "X$1" != 'X--mode=compile'; do
4201a30de1fSmrg      shift
4211a30de1fSmrg    done
4221a30de1fSmrg    shift
4231a30de1fSmrg  fi
4241a30de1fSmrg
4251a30de1fSmrg  # Remove `-o $object'.
4261a30de1fSmrg  IFS=" "
4271a30de1fSmrg  for arg
4281a30de1fSmrg  do
4291a30de1fSmrg    case $arg in
4301a30de1fSmrg    -o)
4311a30de1fSmrg      shift
4321a30de1fSmrg      ;;
4331a30de1fSmrg    $object)
4341a30de1fSmrg      shift
4351a30de1fSmrg      ;;
4361a30de1fSmrg    *)
4371a30de1fSmrg      set fnord "$@" "$arg"
4381a30de1fSmrg      shift # fnord
4391a30de1fSmrg      shift # $arg
4401a30de1fSmrg      ;;
4411a30de1fSmrg    esac
4421a30de1fSmrg  done
4431a30de1fSmrg
4441a30de1fSmrg  test -z "$dashmflag" && dashmflag=-M
4451a30de1fSmrg  # Require at least two characters before searching for `:'
4461a30de1fSmrg  # in the target name.  This is to cope with DOS-style filenames:
4471a30de1fSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
4481a30de1fSmrg  "$@" $dashmflag |
4491a30de1fSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
4501a30de1fSmrg  rm -f "$depfile"
4511a30de1fSmrg  cat < "$tmpdepfile" > "$depfile"
4521a30de1fSmrg  tr ' ' '
4531a30de1fSmrg' < "$tmpdepfile" | \
4541a30de1fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
4551a30de1fSmrg## correctly.  Breaking it into two sed invocations is a workaround.
4561a30de1fSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4571a30de1fSmrg  rm -f "$tmpdepfile"
4581a30de1fSmrg  ;;
4591a30de1fSmrg
4601a30de1fSmrgdashXmstdout)
4611a30de1fSmrg  # This case only exists to satisfy depend.m4.  It is never actually
4621a30de1fSmrg  # run, as this mode is specially recognized in the preamble.
4631a30de1fSmrg  exit 1
4641a30de1fSmrg  ;;
4651a30de1fSmrg
4661a30de1fSmrgmakedepend)
4671a30de1fSmrg  "$@" || exit $?
4681a30de1fSmrg  # Remove any Libtool call
4691a30de1fSmrg  if test "$libtool" = yes; then
470b7fb5eacSmrg    while test "X$1" != 'X--mode=compile'; do
4711a30de1fSmrg      shift
4721a30de1fSmrg    done
4731a30de1fSmrg    shift
4741a30de1fSmrg  fi
4751a30de1fSmrg  # X makedepend
4761a30de1fSmrg  shift
477b7fb5eacSmrg  cleared=no eat=no
478b7fb5eacSmrg  for arg
479b7fb5eacSmrg  do
4801a30de1fSmrg    case $cleared in
4811a30de1fSmrg    no)
4821a30de1fSmrg      set ""; shift
4831a30de1fSmrg      cleared=yes ;;
4841a30de1fSmrg    esac
485b7fb5eacSmrg    if test $eat = yes; then
486b7fb5eacSmrg      eat=no
487b7fb5eacSmrg      continue
488b7fb5eacSmrg    fi
4891a30de1fSmrg    case "$arg" in
4901a30de1fSmrg    -D*|-I*)
4911a30de1fSmrg      set fnord "$@" "$arg"; shift ;;
4921a30de1fSmrg    # Strip any option that makedepend may not understand.  Remove
4931a30de1fSmrg    # the object too, otherwise makedepend will parse it as a source file.
494b7fb5eacSmrg    -arch)
495b7fb5eacSmrg      eat=yes ;;
4961a30de1fSmrg    -*|$object)
4971a30de1fSmrg      ;;
4981a30de1fSmrg    *)
4991a30de1fSmrg      set fnord "$@" "$arg"; shift ;;
5001a30de1fSmrg    esac
5011a30de1fSmrg  done
502b7fb5eacSmrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
5031a30de1fSmrg  touch "$tmpdepfile"
5041a30de1fSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
5051a30de1fSmrg  rm -f "$depfile"
5061a30de1fSmrg  cat < "$tmpdepfile" > "$depfile"
5071a30de1fSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
5081a30de1fSmrg' | \
5091a30de1fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
5101a30de1fSmrg## correctly.  Breaking it into two sed invocations is a workaround.
5111a30de1fSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
5121a30de1fSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
5131a30de1fSmrg  ;;
5141a30de1fSmrg
5151a30de1fSmrgcpp)
5161a30de1fSmrg  # Important note: in order to support this mode, a compiler *must*
5171a30de1fSmrg  # always write the preprocessed file to stdout.
5181a30de1fSmrg  "$@" || exit $?
5191a30de1fSmrg
5201a30de1fSmrg  # Remove the call to Libtool.
5211a30de1fSmrg  if test "$libtool" = yes; then
522b7fb5eacSmrg    while test "X$1" != 'X--mode=compile'; do
5231a30de1fSmrg      shift
5241a30de1fSmrg    done
5251a30de1fSmrg    shift
5261a30de1fSmrg  fi
5271a30de1fSmrg
5281a30de1fSmrg  # Remove `-o $object'.
5291a30de1fSmrg  IFS=" "
5301a30de1fSmrg  for arg
5311a30de1fSmrg  do
5321a30de1fSmrg    case $arg in
5331a30de1fSmrg    -o)
5341a30de1fSmrg      shift
5351a30de1fSmrg      ;;
5361a30de1fSmrg    $object)
5371a30de1fSmrg      shift
5381a30de1fSmrg      ;;
5391a30de1fSmrg    *)
5401a30de1fSmrg      set fnord "$@" "$arg"
5411a30de1fSmrg      shift # fnord
5421a30de1fSmrg      shift # $arg
5431a30de1fSmrg      ;;
5441a30de1fSmrg    esac
5451a30de1fSmrg  done
5461a30de1fSmrg
5471a30de1fSmrg  "$@" -E |
5481a30de1fSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
5491a30de1fSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
5501a30de1fSmrg    sed '$ s: \\$::' > "$tmpdepfile"
5511a30de1fSmrg  rm -f "$depfile"
5521a30de1fSmrg  echo "$object : \\" > "$depfile"
5531a30de1fSmrg  cat < "$tmpdepfile" >> "$depfile"
5541a30de1fSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
5551a30de1fSmrg  rm -f "$tmpdepfile"
5561a30de1fSmrg  ;;
5571a30de1fSmrg
5581a30de1fSmrgmsvisualcpp)
5591a30de1fSmrg  # Important note: in order to support this mode, a compiler *must*
560b7fb5eacSmrg  # always write the preprocessed file to stdout.
5611a30de1fSmrg  "$@" || exit $?
562b7fb5eacSmrg
563b7fb5eacSmrg  # Remove the call to Libtool.
564b7fb5eacSmrg  if test "$libtool" = yes; then
565b7fb5eacSmrg    while test "X$1" != 'X--mode=compile'; do
566b7fb5eacSmrg      shift
567b7fb5eacSmrg    done
568b7fb5eacSmrg    shift
569b7fb5eacSmrg  fi
570b7fb5eacSmrg
5711a30de1fSmrg  IFS=" "
5721a30de1fSmrg  for arg
5731a30de1fSmrg  do
5741a30de1fSmrg    case "$arg" in
575b7fb5eacSmrg    -o)
576b7fb5eacSmrg      shift
577b7fb5eacSmrg      ;;
578b7fb5eacSmrg    $object)
579b7fb5eacSmrg      shift
580b7fb5eacSmrg      ;;
5811a30de1fSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
5821a30de1fSmrg	set fnord "$@"
5831a30de1fSmrg	shift
5841a30de1fSmrg	shift
5851a30de1fSmrg	;;
5861a30de1fSmrg    *)
5871a30de1fSmrg	set fnord "$@" "$arg"
5881a30de1fSmrg	shift
5891a30de1fSmrg	shift
5901a30de1fSmrg	;;
5911a30de1fSmrg    esac
5921a30de1fSmrg  done
593b7fb5eacSmrg  "$@" -E 2>/dev/null |
594b7fb5eacSmrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
5951a30de1fSmrg  rm -f "$depfile"
5961a30de1fSmrg  echo "$object : \\" > "$depfile"
597b7fb5eacSmrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5981a30de1fSmrg  echo "	" >> "$depfile"
599b7fb5eacSmrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
6001a30de1fSmrg  rm -f "$tmpdepfile"
6011a30de1fSmrg  ;;
6021a30de1fSmrg
603b7fb5eacSmrgmsvcmsys)
604b7fb5eacSmrg  # This case exists only to let depend.m4 do its work.  It works by
605b7fb5eacSmrg  # looking at the text of this script.  This case will never be run,
606b7fb5eacSmrg  # since it is checked for above.
607b7fb5eacSmrg  exit 1
608b7fb5eacSmrg  ;;
609b7fb5eacSmrg
6101a30de1fSmrgnone)
6111a30de1fSmrg  exec "$@"
6121a30de1fSmrg  ;;
6131a30de1fSmrg
6141a30de1fSmrg*)
6151a30de1fSmrg  echo "Unknown depmode $depmode" 1>&2
6161a30de1fSmrg  exit 1
6171a30de1fSmrg  ;;
6181a30de1fSmrgesac
6191a30de1fSmrg
6201a30de1fSmrgexit 0
6211a30de1fSmrg
6221a30de1fSmrg# Local Variables:
6231a30de1fSmrg# mode: shell-script
6241a30de1fSmrg# sh-indentation: 2
6251a30de1fSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
6261a30de1fSmrg# time-stamp-start: "scriptversion="
6271a30de1fSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
628b7fb5eacSmrg# time-stamp-time-zone: "UTC"
629b7fb5eacSmrg# time-stamp-end: "; # UTC"
6301a30de1fSmrg# End:
631