depcomp revision 4b0ead49
14b0ead49Smrg#! /bin/sh
24b0ead49Smrg# depcomp - compile a program generating dependencies as side-effects
34b0ead49Smrg
44b0ead49Smrgscriptversion=2005-07-09.11
54b0ead49Smrg
64b0ead49Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
74b0ead49Smrg
84b0ead49Smrg# This program is free software; you can redistribute it and/or modify
94b0ead49Smrg# it under the terms of the GNU General Public License as published by
104b0ead49Smrg# the Free Software Foundation; either version 2, or (at your option)
114b0ead49Smrg# any later version.
124b0ead49Smrg
134b0ead49Smrg# This program is distributed in the hope that it will be useful,
144b0ead49Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
154b0ead49Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
164b0ead49Smrg# GNU General Public License for more details.
174b0ead49Smrg
184b0ead49Smrg# You should have received a copy of the GNU General Public License
194b0ead49Smrg# along with this program; if not, write to the Free Software
204b0ead49Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
214b0ead49Smrg# 02110-1301, USA.
224b0ead49Smrg
234b0ead49Smrg# As a special exception to the GNU General Public License, if you
244b0ead49Smrg# distribute this file as part of a program that contains a
254b0ead49Smrg# configuration script generated by Autoconf, you may include it under
264b0ead49Smrg# the same distribution terms that you use for the rest of that program.
274b0ead49Smrg
284b0ead49Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
294b0ead49Smrg
304b0ead49Smrgcase $1 in
314b0ead49Smrg  '')
324b0ead49Smrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
334b0ead49Smrg     exit 1;
344b0ead49Smrg     ;;
354b0ead49Smrg  -h | --h*)
364b0ead49Smrg    cat <<\EOF
374b0ead49SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
384b0ead49Smrg
394b0ead49SmrgRun PROGRAMS ARGS to compile a file, generating dependencies
404b0ead49Smrgas side-effects.
414b0ead49Smrg
424b0ead49SmrgEnvironment variables:
434b0ead49Smrg  depmode     Dependency tracking mode.
444b0ead49Smrg  source      Source file read by `PROGRAMS ARGS'.
454b0ead49Smrg  object      Object file output by `PROGRAMS ARGS'.
464b0ead49Smrg  DEPDIR      directory where to store dependencies.
474b0ead49Smrg  depfile     Dependency file to output.
484b0ead49Smrg  tmpdepfile  Temporary file to use when outputing dependencies.
494b0ead49Smrg  libtool     Whether libtool is used (yes/no).
504b0ead49Smrg
514b0ead49SmrgReport bugs to <bug-automake@gnu.org>.
524b0ead49SmrgEOF
534b0ead49Smrg    exit $?
544b0ead49Smrg    ;;
554b0ead49Smrg  -v | --v*)
564b0ead49Smrg    echo "depcomp $scriptversion"
574b0ead49Smrg    exit $?
584b0ead49Smrg    ;;
594b0ead49Smrgesac
604b0ead49Smrg
614b0ead49Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
624b0ead49Smrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
634b0ead49Smrg  exit 1
644b0ead49Smrgfi
654b0ead49Smrg
664b0ead49Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
674b0ead49Smrgdepfile=${depfile-`echo "$object" |
684b0ead49Smrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
694b0ead49Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
704b0ead49Smrg
714b0ead49Smrgrm -f "$tmpdepfile"
724b0ead49Smrg
734b0ead49Smrg# Some modes work just like other modes, but use different flags.  We
744b0ead49Smrg# parameterize here, but still list the modes in the big case below,
754b0ead49Smrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
764b0ead49Smrg# here, because this file can only contain one case statement.
774b0ead49Smrgif test "$depmode" = hp; then
784b0ead49Smrg  # HP compiler uses -M and no extra arg.
794b0ead49Smrg  gccflag=-M
804b0ead49Smrg  depmode=gcc
814b0ead49Smrgfi
824b0ead49Smrg
834b0ead49Smrgif test "$depmode" = dashXmstdout; then
844b0ead49Smrg   # This is just like dashmstdout with a different argument.
854b0ead49Smrg   dashmflag=-xM
864b0ead49Smrg   depmode=dashmstdout
874b0ead49Smrgfi
884b0ead49Smrg
894b0ead49Smrgcase "$depmode" in
904b0ead49Smrggcc3)
914b0ead49Smrg## gcc 3 implements dependency tracking that does exactly what
924b0ead49Smrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
934b0ead49Smrg## it if -MD -MP comes after the -MF stuff.  Hmm.
944b0ead49Smrg  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
954b0ead49Smrg  stat=$?
964b0ead49Smrg  if test $stat -eq 0; then :
974b0ead49Smrg  else
984b0ead49Smrg    rm -f "$tmpdepfile"
994b0ead49Smrg    exit $stat
1004b0ead49Smrg  fi
1014b0ead49Smrg  mv "$tmpdepfile" "$depfile"
1024b0ead49Smrg  ;;
1034b0ead49Smrg
1044b0ead49Smrggcc)
1054b0ead49Smrg## There are various ways to get dependency output from gcc.  Here's
1064b0ead49Smrg## why we pick this rather obscure method:
1074b0ead49Smrg## - Don't want to use -MD because we'd like the dependencies to end
1084b0ead49Smrg##   up in a subdir.  Having to rename by hand is ugly.
1094b0ead49Smrg##   (We might end up doing this anyway to support other compilers.)
1104b0ead49Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1114b0ead49Smrg##   -MM, not -M (despite what the docs say).
1124b0ead49Smrg## - Using -M directly means running the compiler twice (even worse
1134b0ead49Smrg##   than renaming).
1144b0ead49Smrg  if test -z "$gccflag"; then
1154b0ead49Smrg    gccflag=-MD,
1164b0ead49Smrg  fi
1174b0ead49Smrg  "$@" -Wp,"$gccflag$tmpdepfile"
1184b0ead49Smrg  stat=$?
1194b0ead49Smrg  if test $stat -eq 0; then :
1204b0ead49Smrg  else
1214b0ead49Smrg    rm -f "$tmpdepfile"
1224b0ead49Smrg    exit $stat
1234b0ead49Smrg  fi
1244b0ead49Smrg  rm -f "$depfile"
1254b0ead49Smrg  echo "$object : \\" > "$depfile"
1264b0ead49Smrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1274b0ead49Smrg## The second -e expression handles DOS-style file names with drive letters.
1284b0ead49Smrg  sed -e 's/^[^:]*: / /' \
1294b0ead49Smrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1304b0ead49Smrg## This next piece of magic avoids the `deleted header file' problem.
1314b0ead49Smrg## The problem is that when a header file which appears in a .P file
1324b0ead49Smrg## is deleted, the dependency causes make to die (because there is
1334b0ead49Smrg## typically no way to rebuild the header).  We avoid this by adding
1344b0ead49Smrg## dummy dependencies for each header file.  Too bad gcc doesn't do
1354b0ead49Smrg## this for us directly.
1364b0ead49Smrg  tr ' ' '
1374b0ead49Smrg' < "$tmpdepfile" |
1384b0ead49Smrg## Some versions of gcc put a space before the `:'.  On the theory
1394b0ead49Smrg## that the space means something, we add a space to the output as
1404b0ead49Smrg## well.
1414b0ead49Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
1424b0ead49Smrg## correctly.  Breaking it into two sed invocations is a workaround.
1434b0ead49Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1444b0ead49Smrg  rm -f "$tmpdepfile"
1454b0ead49Smrg  ;;
1464b0ead49Smrg
1474b0ead49Smrghp)
1484b0ead49Smrg  # This case exists only to let depend.m4 do its work.  It works by
1494b0ead49Smrg  # looking at the text of this script.  This case will never be run,
1504b0ead49Smrg  # since it is checked for above.
1514b0ead49Smrg  exit 1
1524b0ead49Smrg  ;;
1534b0ead49Smrg
1544b0ead49Smrgsgi)
1554b0ead49Smrg  if test "$libtool" = yes; then
1564b0ead49Smrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
1574b0ead49Smrg  else
1584b0ead49Smrg    "$@" -MDupdate "$tmpdepfile"
1594b0ead49Smrg  fi
1604b0ead49Smrg  stat=$?
1614b0ead49Smrg  if test $stat -eq 0; then :
1624b0ead49Smrg  else
1634b0ead49Smrg    rm -f "$tmpdepfile"
1644b0ead49Smrg    exit $stat
1654b0ead49Smrg  fi
1664b0ead49Smrg  rm -f "$depfile"
1674b0ead49Smrg
1684b0ead49Smrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1694b0ead49Smrg    echo "$object : \\" > "$depfile"
1704b0ead49Smrg
1714b0ead49Smrg    # Clip off the initial element (the dependent).  Don't try to be
1724b0ead49Smrg    # clever and replace this with sed code, as IRIX sed won't handle
1734b0ead49Smrg    # lines with more than a fixed number of characters (4096 in
1744b0ead49Smrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1754b0ead49Smrg    # the IRIX cc adds comments like `#:fec' to the end of the
1764b0ead49Smrg    # dependency line.
1774b0ead49Smrg    tr ' ' '
1784b0ead49Smrg' < "$tmpdepfile" \
1794b0ead49Smrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1804b0ead49Smrg    tr '
1814b0ead49Smrg' ' ' >> $depfile
1824b0ead49Smrg    echo >> $depfile
1834b0ead49Smrg
1844b0ead49Smrg    # The second pass generates a dummy entry for each header file.
1854b0ead49Smrg    tr ' ' '
1864b0ead49Smrg' < "$tmpdepfile" \
1874b0ead49Smrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
1884b0ead49Smrg   >> $depfile
1894b0ead49Smrg  else
1904b0ead49Smrg    # The sourcefile does not contain any dependencies, so just
1914b0ead49Smrg    # store a dummy comment line, to avoid errors with the Makefile
1924b0ead49Smrg    # "include basename.Plo" scheme.
1934b0ead49Smrg    echo "#dummy" > "$depfile"
1944b0ead49Smrg  fi
1954b0ead49Smrg  rm -f "$tmpdepfile"
1964b0ead49Smrg  ;;
1974b0ead49Smrg
1984b0ead49Smrgaix)
1994b0ead49Smrg  # The C for AIX Compiler uses -M and outputs the dependencies
2004b0ead49Smrg  # in a .u file.  In older versions, this file always lives in the
2014b0ead49Smrg  # current directory.  Also, the AIX compiler puts `$object:' at the
2024b0ead49Smrg  # start of each line; $object doesn't have directory information.
2034b0ead49Smrg  # Version 6 uses the directory in both cases.
2044b0ead49Smrg  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
2054b0ead49Smrg  tmpdepfile="$stripped.u"
2064b0ead49Smrg  if test "$libtool" = yes; then
2074b0ead49Smrg    "$@" -Wc,-M
2084b0ead49Smrg  else
2094b0ead49Smrg    "$@" -M
2104b0ead49Smrg  fi
2114b0ead49Smrg  stat=$?
2124b0ead49Smrg
2134b0ead49Smrg  if test -f "$tmpdepfile"; then :
2144b0ead49Smrg  else
2154b0ead49Smrg    stripped=`echo "$stripped" | sed 's,^.*/,,'`
2164b0ead49Smrg    tmpdepfile="$stripped.u"
2174b0ead49Smrg  fi
2184b0ead49Smrg
2194b0ead49Smrg  if test $stat -eq 0; then :
2204b0ead49Smrg  else
2214b0ead49Smrg    rm -f "$tmpdepfile"
2224b0ead49Smrg    exit $stat
2234b0ead49Smrg  fi
2244b0ead49Smrg
2254b0ead49Smrg  if test -f "$tmpdepfile"; then
2264b0ead49Smrg    outname="$stripped.o"
2274b0ead49Smrg    # Each line is of the form `foo.o: dependent.h'.
2284b0ead49Smrg    # Do two passes, one to just change these to
2294b0ead49Smrg    # `$object: dependent.h' and one to simply `dependent.h:'.
2304b0ead49Smrg    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
2314b0ead49Smrg    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
2324b0ead49Smrg  else
2334b0ead49Smrg    # The sourcefile does not contain any dependencies, so just
2344b0ead49Smrg    # store a dummy comment line, to avoid errors with the Makefile
2354b0ead49Smrg    # "include basename.Plo" scheme.
2364b0ead49Smrg    echo "#dummy" > "$depfile"
2374b0ead49Smrg  fi
2384b0ead49Smrg  rm -f "$tmpdepfile"
2394b0ead49Smrg  ;;
2404b0ead49Smrg
2414b0ead49Smrgicc)
2424b0ead49Smrg  # Intel's C compiler understands `-MD -MF file'.  However on
2434b0ead49Smrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2444b0ead49Smrg  # ICC 7.0 will fill foo.d with something like
2454b0ead49Smrg  #    foo.o: sub/foo.c
2464b0ead49Smrg  #    foo.o: sub/foo.h
2474b0ead49Smrg  # which is wrong.  We want:
2484b0ead49Smrg  #    sub/foo.o: sub/foo.c
2494b0ead49Smrg  #    sub/foo.o: sub/foo.h
2504b0ead49Smrg  #    sub/foo.c:
2514b0ead49Smrg  #    sub/foo.h:
2524b0ead49Smrg  # ICC 7.1 will output
2534b0ead49Smrg  #    foo.o: sub/foo.c sub/foo.h
2544b0ead49Smrg  # and will wrap long lines using \ :
2554b0ead49Smrg  #    foo.o: sub/foo.c ... \
2564b0ead49Smrg  #     sub/foo.h ... \
2574b0ead49Smrg  #     ...
2584b0ead49Smrg
2594b0ead49Smrg  "$@" -MD -MF "$tmpdepfile"
2604b0ead49Smrg  stat=$?
2614b0ead49Smrg  if test $stat -eq 0; then :
2624b0ead49Smrg  else
2634b0ead49Smrg    rm -f "$tmpdepfile"
2644b0ead49Smrg    exit $stat
2654b0ead49Smrg  fi
2664b0ead49Smrg  rm -f "$depfile"
2674b0ead49Smrg  # Each line is of the form `foo.o: dependent.h',
2684b0ead49Smrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2694b0ead49Smrg  # Do two passes, one to just change these to
2704b0ead49Smrg  # `$object: dependent.h' and one to simply `dependent.h:'.
2714b0ead49Smrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2724b0ead49Smrg  # Some versions of the HPUX 10.20 sed can't process this invocation
2734b0ead49Smrg  # correctly.  Breaking it into two sed invocations is a workaround.
2744b0ead49Smrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2754b0ead49Smrg    sed -e 's/$/ :/' >> "$depfile"
2764b0ead49Smrg  rm -f "$tmpdepfile"
2774b0ead49Smrg  ;;
2784b0ead49Smrg
2794b0ead49Smrgtru64)
2804b0ead49Smrg   # The Tru64 compiler uses -MD to generate dependencies as a side
2814b0ead49Smrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
2824b0ead49Smrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
2834b0ead49Smrg   # dependencies in `foo.d' instead, so we check for that too.
2844b0ead49Smrg   # Subdirectories are respected.
2854b0ead49Smrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2864b0ead49Smrg   test "x$dir" = "x$object" && dir=
2874b0ead49Smrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2884b0ead49Smrg
2894b0ead49Smrg   if test "$libtool" = yes; then
2904b0ead49Smrg      # With Tru64 cc, shared objects can also be used to make a
2914b0ead49Smrg      # static library.  This mecanism is used in libtool 1.4 series to
2924b0ead49Smrg      # handle both shared and static libraries in a single compilation.
2934b0ead49Smrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
2944b0ead49Smrg      #
2954b0ead49Smrg      # With libtool 1.5 this exception was removed, and libtool now
2964b0ead49Smrg      # generates 2 separate objects for the 2 libraries.  These two
2974b0ead49Smrg      # compilations output dependencies in in $dir.libs/$base.o.d and
2984b0ead49Smrg      # in $dir$base.o.d.  We have to check for both files, because
2994b0ead49Smrg      # one of the two compilations can be disabled.  We should prefer
3004b0ead49Smrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3014b0ead49Smrg      # automatically cleaned when .libs/ is deleted, while ignoring
3024b0ead49Smrg      # the former would cause a distcleancheck panic.
3034b0ead49Smrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3044b0ead49Smrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3054b0ead49Smrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3064b0ead49Smrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3074b0ead49Smrg      "$@" -Wc,-MD
3084b0ead49Smrg   else
3094b0ead49Smrg      tmpdepfile1=$dir$base.o.d
3104b0ead49Smrg      tmpdepfile2=$dir$base.d
3114b0ead49Smrg      tmpdepfile3=$dir$base.d
3124b0ead49Smrg      tmpdepfile4=$dir$base.d
3134b0ead49Smrg      "$@" -MD
3144b0ead49Smrg   fi
3154b0ead49Smrg
3164b0ead49Smrg   stat=$?
3174b0ead49Smrg   if test $stat -eq 0; then :
3184b0ead49Smrg   else
3194b0ead49Smrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3204b0ead49Smrg      exit $stat
3214b0ead49Smrg   fi
3224b0ead49Smrg
3234b0ead49Smrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3244b0ead49Smrg   do
3254b0ead49Smrg     test -f "$tmpdepfile" && break
3264b0ead49Smrg   done
3274b0ead49Smrg   if test -f "$tmpdepfile"; then
3284b0ead49Smrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
3294b0ead49Smrg      # That's a tab and a space in the [].
3304b0ead49Smrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
3314b0ead49Smrg   else
3324b0ead49Smrg      echo "#dummy" > "$depfile"
3334b0ead49Smrg   fi
3344b0ead49Smrg   rm -f "$tmpdepfile"
3354b0ead49Smrg   ;;
3364b0ead49Smrg
3374b0ead49Smrg#nosideeffect)
3384b0ead49Smrg  # This comment above is used by automake to tell side-effect
3394b0ead49Smrg  # dependency tracking mechanisms from slower ones.
3404b0ead49Smrg
3414b0ead49Smrgdashmstdout)
3424b0ead49Smrg  # Important note: in order to support this mode, a compiler *must*
3434b0ead49Smrg  # always write the preprocessed file to stdout, regardless of -o.
3444b0ead49Smrg  "$@" || exit $?
3454b0ead49Smrg
3464b0ead49Smrg  # Remove the call to Libtool.
3474b0ead49Smrg  if test "$libtool" = yes; then
3484b0ead49Smrg    while test $1 != '--mode=compile'; do
3494b0ead49Smrg      shift
3504b0ead49Smrg    done
3514b0ead49Smrg    shift
3524b0ead49Smrg  fi
3534b0ead49Smrg
3544b0ead49Smrg  # Remove `-o $object'.
3554b0ead49Smrg  IFS=" "
3564b0ead49Smrg  for arg
3574b0ead49Smrg  do
3584b0ead49Smrg    case $arg in
3594b0ead49Smrg    -o)
3604b0ead49Smrg      shift
3614b0ead49Smrg      ;;
3624b0ead49Smrg    $object)
3634b0ead49Smrg      shift
3644b0ead49Smrg      ;;
3654b0ead49Smrg    *)
3664b0ead49Smrg      set fnord "$@" "$arg"
3674b0ead49Smrg      shift # fnord
3684b0ead49Smrg      shift # $arg
3694b0ead49Smrg      ;;
3704b0ead49Smrg    esac
3714b0ead49Smrg  done
3724b0ead49Smrg
3734b0ead49Smrg  test -z "$dashmflag" && dashmflag=-M
3744b0ead49Smrg  # Require at least two characters before searching for `:'
3754b0ead49Smrg  # in the target name.  This is to cope with DOS-style filenames:
3764b0ead49Smrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
3774b0ead49Smrg  "$@" $dashmflag |
3784b0ead49Smrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
3794b0ead49Smrg  rm -f "$depfile"
3804b0ead49Smrg  cat < "$tmpdepfile" > "$depfile"
3814b0ead49Smrg  tr ' ' '
3824b0ead49Smrg' < "$tmpdepfile" | \
3834b0ead49Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
3844b0ead49Smrg## correctly.  Breaking it into two sed invocations is a workaround.
3854b0ead49Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
3864b0ead49Smrg  rm -f "$tmpdepfile"
3874b0ead49Smrg  ;;
3884b0ead49Smrg
3894b0ead49SmrgdashXmstdout)
3904b0ead49Smrg  # This case only exists to satisfy depend.m4.  It is never actually
3914b0ead49Smrg  # run, as this mode is specially recognized in the preamble.
3924b0ead49Smrg  exit 1
3934b0ead49Smrg  ;;
3944b0ead49Smrg
3954b0ead49Smrgmakedepend)
3964b0ead49Smrg  "$@" || exit $?
3974b0ead49Smrg  # Remove any Libtool call
3984b0ead49Smrg  if test "$libtool" = yes; then
3994b0ead49Smrg    while test $1 != '--mode=compile'; do
4004b0ead49Smrg      shift
4014b0ead49Smrg    done
4024b0ead49Smrg    shift
4034b0ead49Smrg  fi
4044b0ead49Smrg  # X makedepend
4054b0ead49Smrg  shift
4064b0ead49Smrg  cleared=no
4074b0ead49Smrg  for arg in "$@"; do
4084b0ead49Smrg    case $cleared in
4094b0ead49Smrg    no)
4104b0ead49Smrg      set ""; shift
4114b0ead49Smrg      cleared=yes ;;
4124b0ead49Smrg    esac
4134b0ead49Smrg    case "$arg" in
4144b0ead49Smrg    -D*|-I*)
4154b0ead49Smrg      set fnord "$@" "$arg"; shift ;;
4164b0ead49Smrg    # Strip any option that makedepend may not understand.  Remove
4174b0ead49Smrg    # the object too, otherwise makedepend will parse it as a source file.
4184b0ead49Smrg    -*|$object)
4194b0ead49Smrg      ;;
4204b0ead49Smrg    *)
4214b0ead49Smrg      set fnord "$@" "$arg"; shift ;;
4224b0ead49Smrg    esac
4234b0ead49Smrg  done
4244b0ead49Smrg  obj_suffix="`echo $object | sed 's/^.*\././'`"
4254b0ead49Smrg  touch "$tmpdepfile"
4264b0ead49Smrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4274b0ead49Smrg  rm -f "$depfile"
4284b0ead49Smrg  cat < "$tmpdepfile" > "$depfile"
4294b0ead49Smrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
4304b0ead49Smrg' | \
4314b0ead49Smrg## Some versions of the HPUX 10.20 sed can't process this invocation
4324b0ead49Smrg## correctly.  Breaking it into two sed invocations is a workaround.
4334b0ead49Smrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4344b0ead49Smrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
4354b0ead49Smrg  ;;
4364b0ead49Smrg
4374b0ead49Smrgcpp)
4384b0ead49Smrg  # Important note: in order to support this mode, a compiler *must*
4394b0ead49Smrg  # always write the preprocessed file to stdout.
4404b0ead49Smrg  "$@" || exit $?
4414b0ead49Smrg
4424b0ead49Smrg  # Remove the call to Libtool.
4434b0ead49Smrg  if test "$libtool" = yes; then
4444b0ead49Smrg    while test $1 != '--mode=compile'; do
4454b0ead49Smrg      shift
4464b0ead49Smrg    done
4474b0ead49Smrg    shift
4484b0ead49Smrg  fi
4494b0ead49Smrg
4504b0ead49Smrg  # Remove `-o $object'.
4514b0ead49Smrg  IFS=" "
4524b0ead49Smrg  for arg
4534b0ead49Smrg  do
4544b0ead49Smrg    case $arg in
4554b0ead49Smrg    -o)
4564b0ead49Smrg      shift
4574b0ead49Smrg      ;;
4584b0ead49Smrg    $object)
4594b0ead49Smrg      shift
4604b0ead49Smrg      ;;
4614b0ead49Smrg    *)
4624b0ead49Smrg      set fnord "$@" "$arg"
4634b0ead49Smrg      shift # fnord
4644b0ead49Smrg      shift # $arg
4654b0ead49Smrg      ;;
4664b0ead49Smrg    esac
4674b0ead49Smrg  done
4684b0ead49Smrg
4694b0ead49Smrg  "$@" -E |
4704b0ead49Smrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
4714b0ead49Smrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
4724b0ead49Smrg    sed '$ s: \\$::' > "$tmpdepfile"
4734b0ead49Smrg  rm -f "$depfile"
4744b0ead49Smrg  echo "$object : \\" > "$depfile"
4754b0ead49Smrg  cat < "$tmpdepfile" >> "$depfile"
4764b0ead49Smrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
4774b0ead49Smrg  rm -f "$tmpdepfile"
4784b0ead49Smrg  ;;
4794b0ead49Smrg
4804b0ead49Smrgmsvisualcpp)
4814b0ead49Smrg  # Important note: in order to support this mode, a compiler *must*
4824b0ead49Smrg  # always write the preprocessed file to stdout, regardless of -o,
4834b0ead49Smrg  # because we must use -o when running libtool.
4844b0ead49Smrg  "$@" || exit $?
4854b0ead49Smrg  IFS=" "
4864b0ead49Smrg  for arg
4874b0ead49Smrg  do
4884b0ead49Smrg    case "$arg" in
4894b0ead49Smrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
4904b0ead49Smrg	set fnord "$@"
4914b0ead49Smrg	shift
4924b0ead49Smrg	shift
4934b0ead49Smrg	;;
4944b0ead49Smrg    *)
4954b0ead49Smrg	set fnord "$@" "$arg"
4964b0ead49Smrg	shift
4974b0ead49Smrg	shift
4984b0ead49Smrg	;;
4994b0ead49Smrg    esac
5004b0ead49Smrg  done
5014b0ead49Smrg  "$@" -E |
5024b0ead49Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
5034b0ead49Smrg  rm -f "$depfile"
5044b0ead49Smrg  echo "$object : \\" > "$depfile"
5054b0ead49Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5064b0ead49Smrg  echo "	" >> "$depfile"
5074b0ead49Smrg  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
5084b0ead49Smrg  rm -f "$tmpdepfile"
5094b0ead49Smrg  ;;
5104b0ead49Smrg
5114b0ead49Smrgnone)
5124b0ead49Smrg  exec "$@"
5134b0ead49Smrg  ;;
5144b0ead49Smrg
5154b0ead49Smrg*)
5164b0ead49Smrg  echo "Unknown depmode $depmode" 1>&2
5174b0ead49Smrg  exit 1
5184b0ead49Smrg  ;;
5194b0ead49Smrgesac
5204b0ead49Smrg
5214b0ead49Smrgexit 0
5224b0ead49Smrg
5234b0ead49Smrg# Local Variables:
5244b0ead49Smrg# mode: shell-script
5254b0ead49Smrg# sh-indentation: 2
5264b0ead49Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
5274b0ead49Smrg# time-stamp-start: "scriptversion="
5284b0ead49Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
5294b0ead49Smrg# time-stamp-end: "$"
5304b0ead49Smrg# End:
531