depcomp revision 3eed67fa
13eed67faSmbalmer#! /bin/sh
23eed67faSmbalmer# depcomp - compile a program generating dependencies as side-effects
33eed67faSmbalmer
43eed67faSmbalmerscriptversion=2005-07-09.11
53eed67faSmbalmer
63eed67faSmbalmer# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
73eed67faSmbalmer
83eed67faSmbalmer# This program is free software; you can redistribute it and/or modify
93eed67faSmbalmer# it under the terms of the GNU General Public License as published by
103eed67faSmbalmer# the Free Software Foundation; either version 2, or (at your option)
113eed67faSmbalmer# any later version.
123eed67faSmbalmer
133eed67faSmbalmer# This program is distributed in the hope that it will be useful,
143eed67faSmbalmer# but WITHOUT ANY WARRANTY; without even the implied warranty of
153eed67faSmbalmer# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
163eed67faSmbalmer# GNU General Public License for more details.
173eed67faSmbalmer
183eed67faSmbalmer# You should have received a copy of the GNU General Public License
193eed67faSmbalmer# along with this program; if not, write to the Free Software
203eed67faSmbalmer# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
213eed67faSmbalmer# 02110-1301, USA.
223eed67faSmbalmer
233eed67faSmbalmer# As a special exception to the GNU General Public License, if you
243eed67faSmbalmer# distribute this file as part of a program that contains a
253eed67faSmbalmer# configuration script generated by Autoconf, you may include it under
263eed67faSmbalmer# the same distribution terms that you use for the rest of that program.
273eed67faSmbalmer
283eed67faSmbalmer# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
293eed67faSmbalmer
303eed67faSmbalmercase $1 in
313eed67faSmbalmer  '')
323eed67faSmbalmer     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
333eed67faSmbalmer     exit 1;
343eed67faSmbalmer     ;;
353eed67faSmbalmer  -h | --h*)
363eed67faSmbalmer    cat <<\EOF
373eed67faSmbalmerUsage: depcomp [--help] [--version] PROGRAM [ARGS]
383eed67faSmbalmer
393eed67faSmbalmerRun PROGRAMS ARGS to compile a file, generating dependencies
403eed67faSmbalmeras side-effects.
413eed67faSmbalmer
423eed67faSmbalmerEnvironment variables:
433eed67faSmbalmer  depmode     Dependency tracking mode.
443eed67faSmbalmer  source      Source file read by `PROGRAMS ARGS'.
453eed67faSmbalmer  object      Object file output by `PROGRAMS ARGS'.
463eed67faSmbalmer  DEPDIR      directory where to store dependencies.
473eed67faSmbalmer  depfile     Dependency file to output.
483eed67faSmbalmer  tmpdepfile  Temporary file to use when outputing dependencies.
493eed67faSmbalmer  libtool     Whether libtool is used (yes/no).
503eed67faSmbalmer
513eed67faSmbalmerReport bugs to <bug-automake@gnu.org>.
523eed67faSmbalmerEOF
533eed67faSmbalmer    exit $?
543eed67faSmbalmer    ;;
553eed67faSmbalmer  -v | --v*)
563eed67faSmbalmer    echo "depcomp $scriptversion"
573eed67faSmbalmer    exit $?
583eed67faSmbalmer    ;;
593eed67faSmbalmeresac
603eed67faSmbalmer
613eed67faSmbalmerif test -z "$depmode" || test -z "$source" || test -z "$object"; then
623eed67faSmbalmer  echo "depcomp: Variables source, object and depmode must be set" 1>&2
633eed67faSmbalmer  exit 1
643eed67faSmbalmerfi
653eed67faSmbalmer
663eed67faSmbalmer# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
673eed67faSmbalmerdepfile=${depfile-`echo "$object" |
683eed67faSmbalmer  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
693eed67faSmbalmertmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
703eed67faSmbalmer
713eed67faSmbalmerrm -f "$tmpdepfile"
723eed67faSmbalmer
733eed67faSmbalmer# Some modes work just like other modes, but use different flags.  We
743eed67faSmbalmer# parameterize here, but still list the modes in the big case below,
753eed67faSmbalmer# to make depend.m4 easier to write.  Note that we *cannot* use a case
763eed67faSmbalmer# here, because this file can only contain one case statement.
773eed67faSmbalmerif test "$depmode" = hp; then
783eed67faSmbalmer  # HP compiler uses -M and no extra arg.
793eed67faSmbalmer  gccflag=-M
803eed67faSmbalmer  depmode=gcc
813eed67faSmbalmerfi
823eed67faSmbalmer
833eed67faSmbalmerif test "$depmode" = dashXmstdout; then
843eed67faSmbalmer   # This is just like dashmstdout with a different argument.
853eed67faSmbalmer   dashmflag=-xM
863eed67faSmbalmer   depmode=dashmstdout
873eed67faSmbalmerfi
883eed67faSmbalmer
893eed67faSmbalmercase "$depmode" in
903eed67faSmbalmergcc3)
913eed67faSmbalmer## gcc 3 implements dependency tracking that does exactly what
923eed67faSmbalmer## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
933eed67faSmbalmer## it if -MD -MP comes after the -MF stuff.  Hmm.
943eed67faSmbalmer  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
953eed67faSmbalmer  stat=$?
963eed67faSmbalmer  if test $stat -eq 0; then :
973eed67faSmbalmer  else
983eed67faSmbalmer    rm -f "$tmpdepfile"
993eed67faSmbalmer    exit $stat
1003eed67faSmbalmer  fi
1013eed67faSmbalmer  mv "$tmpdepfile" "$depfile"
1023eed67faSmbalmer  ;;
1033eed67faSmbalmer
1043eed67faSmbalmergcc)
1053eed67faSmbalmer## There are various ways to get dependency output from gcc.  Here's
1063eed67faSmbalmer## why we pick this rather obscure method:
1073eed67faSmbalmer## - Don't want to use -MD because we'd like the dependencies to end
1083eed67faSmbalmer##   up in a subdir.  Having to rename by hand is ugly.
1093eed67faSmbalmer##   (We might end up doing this anyway to support other compilers.)
1103eed67faSmbalmer## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
1113eed67faSmbalmer##   -MM, not -M (despite what the docs say).
1123eed67faSmbalmer## - Using -M directly means running the compiler twice (even worse
1133eed67faSmbalmer##   than renaming).
1143eed67faSmbalmer  if test -z "$gccflag"; then
1153eed67faSmbalmer    gccflag=-MD,
1163eed67faSmbalmer  fi
1173eed67faSmbalmer  "$@" -Wp,"$gccflag$tmpdepfile"
1183eed67faSmbalmer  stat=$?
1193eed67faSmbalmer  if test $stat -eq 0; then :
1203eed67faSmbalmer  else
1213eed67faSmbalmer    rm -f "$tmpdepfile"
1223eed67faSmbalmer    exit $stat
1233eed67faSmbalmer  fi
1243eed67faSmbalmer  rm -f "$depfile"
1253eed67faSmbalmer  echo "$object : \\" > "$depfile"
1263eed67faSmbalmer  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
1273eed67faSmbalmer## The second -e expression handles DOS-style file names with drive letters.
1283eed67faSmbalmer  sed -e 's/^[^:]*: / /' \
1293eed67faSmbalmer      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
1303eed67faSmbalmer## This next piece of magic avoids the `deleted header file' problem.
1313eed67faSmbalmer## The problem is that when a header file which appears in a .P file
1323eed67faSmbalmer## is deleted, the dependency causes make to die (because there is
1333eed67faSmbalmer## typically no way to rebuild the header).  We avoid this by adding
1343eed67faSmbalmer## dummy dependencies for each header file.  Too bad gcc doesn't do
1353eed67faSmbalmer## this for us directly.
1363eed67faSmbalmer  tr ' ' '
1373eed67faSmbalmer' < "$tmpdepfile" |
1383eed67faSmbalmer## Some versions of gcc put a space before the `:'.  On the theory
1393eed67faSmbalmer## that the space means something, we add a space to the output as
1403eed67faSmbalmer## well.
1413eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation
1423eed67faSmbalmer## correctly.  Breaking it into two sed invocations is a workaround.
1433eed67faSmbalmer    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
1443eed67faSmbalmer  rm -f "$tmpdepfile"
1453eed67faSmbalmer  ;;
1463eed67faSmbalmer
1473eed67faSmbalmerhp)
1483eed67faSmbalmer  # This case exists only to let depend.m4 do its work.  It works by
1493eed67faSmbalmer  # looking at the text of this script.  This case will never be run,
1503eed67faSmbalmer  # since it is checked for above.
1513eed67faSmbalmer  exit 1
1523eed67faSmbalmer  ;;
1533eed67faSmbalmer
1543eed67faSmbalmersgi)
1553eed67faSmbalmer  if test "$libtool" = yes; then
1563eed67faSmbalmer    "$@" "-Wp,-MDupdate,$tmpdepfile"
1573eed67faSmbalmer  else
1583eed67faSmbalmer    "$@" -MDupdate "$tmpdepfile"
1593eed67faSmbalmer  fi
1603eed67faSmbalmer  stat=$?
1613eed67faSmbalmer  if test $stat -eq 0; then :
1623eed67faSmbalmer  else
1633eed67faSmbalmer    rm -f "$tmpdepfile"
1643eed67faSmbalmer    exit $stat
1653eed67faSmbalmer  fi
1663eed67faSmbalmer  rm -f "$depfile"
1673eed67faSmbalmer
1683eed67faSmbalmer  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
1693eed67faSmbalmer    echo "$object : \\" > "$depfile"
1703eed67faSmbalmer
1713eed67faSmbalmer    # Clip off the initial element (the dependent).  Don't try to be
1723eed67faSmbalmer    # clever and replace this with sed code, as IRIX sed won't handle
1733eed67faSmbalmer    # lines with more than a fixed number of characters (4096 in
1743eed67faSmbalmer    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
1753eed67faSmbalmer    # the IRIX cc adds comments like `#:fec' to the end of the
1763eed67faSmbalmer    # dependency line.
1773eed67faSmbalmer    tr ' ' '
1783eed67faSmbalmer' < "$tmpdepfile" \
1793eed67faSmbalmer    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
1803eed67faSmbalmer    tr '
1813eed67faSmbalmer' ' ' >> $depfile
1823eed67faSmbalmer    echo >> $depfile
1833eed67faSmbalmer
1843eed67faSmbalmer    # The second pass generates a dummy entry for each header file.
1853eed67faSmbalmer    tr ' ' '
1863eed67faSmbalmer' < "$tmpdepfile" \
1873eed67faSmbalmer   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
1883eed67faSmbalmer   >> $depfile
1893eed67faSmbalmer  else
1903eed67faSmbalmer    # The sourcefile does not contain any dependencies, so just
1913eed67faSmbalmer    # store a dummy comment line, to avoid errors with the Makefile
1923eed67faSmbalmer    # "include basename.Plo" scheme.
1933eed67faSmbalmer    echo "#dummy" > "$depfile"
1943eed67faSmbalmer  fi
1953eed67faSmbalmer  rm -f "$tmpdepfile"
1963eed67faSmbalmer  ;;
1973eed67faSmbalmer
1983eed67faSmbalmeraix)
1993eed67faSmbalmer  # The C for AIX Compiler uses -M and outputs the dependencies
2003eed67faSmbalmer  # in a .u file.  In older versions, this file always lives in the
2013eed67faSmbalmer  # current directory.  Also, the AIX compiler puts `$object:' at the
2023eed67faSmbalmer  # start of each line; $object doesn't have directory information.
2033eed67faSmbalmer  # Version 6 uses the directory in both cases.
2043eed67faSmbalmer  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
2053eed67faSmbalmer  tmpdepfile="$stripped.u"
2063eed67faSmbalmer  if test "$libtool" = yes; then
2073eed67faSmbalmer    "$@" -Wc,-M
2083eed67faSmbalmer  else
2093eed67faSmbalmer    "$@" -M
2103eed67faSmbalmer  fi
2113eed67faSmbalmer  stat=$?
2123eed67faSmbalmer
2133eed67faSmbalmer  if test -f "$tmpdepfile"; then :
2143eed67faSmbalmer  else
2153eed67faSmbalmer    stripped=`echo "$stripped" | sed 's,^.*/,,'`
2163eed67faSmbalmer    tmpdepfile="$stripped.u"
2173eed67faSmbalmer  fi
2183eed67faSmbalmer
2193eed67faSmbalmer  if test $stat -eq 0; then :
2203eed67faSmbalmer  else
2213eed67faSmbalmer    rm -f "$tmpdepfile"
2223eed67faSmbalmer    exit $stat
2233eed67faSmbalmer  fi
2243eed67faSmbalmer
2253eed67faSmbalmer  if test -f "$tmpdepfile"; then
2263eed67faSmbalmer    outname="$stripped.o"
2273eed67faSmbalmer    # Each line is of the form `foo.o: dependent.h'.
2283eed67faSmbalmer    # Do two passes, one to just change these to
2293eed67faSmbalmer    # `$object: dependent.h' and one to simply `dependent.h:'.
2303eed67faSmbalmer    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
2313eed67faSmbalmer    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
2323eed67faSmbalmer  else
2333eed67faSmbalmer    # The sourcefile does not contain any dependencies, so just
2343eed67faSmbalmer    # store a dummy comment line, to avoid errors with the Makefile
2353eed67faSmbalmer    # "include basename.Plo" scheme.
2363eed67faSmbalmer    echo "#dummy" > "$depfile"
2373eed67faSmbalmer  fi
2383eed67faSmbalmer  rm -f "$tmpdepfile"
2393eed67faSmbalmer  ;;
2403eed67faSmbalmer
2413eed67faSmbalmericc)
2423eed67faSmbalmer  # Intel's C compiler understands `-MD -MF file'.  However on
2433eed67faSmbalmer  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
2443eed67faSmbalmer  # ICC 7.0 will fill foo.d with something like
2453eed67faSmbalmer  #    foo.o: sub/foo.c
2463eed67faSmbalmer  #    foo.o: sub/foo.h
2473eed67faSmbalmer  # which is wrong.  We want:
2483eed67faSmbalmer  #    sub/foo.o: sub/foo.c
2493eed67faSmbalmer  #    sub/foo.o: sub/foo.h
2503eed67faSmbalmer  #    sub/foo.c:
2513eed67faSmbalmer  #    sub/foo.h:
2523eed67faSmbalmer  # ICC 7.1 will output
2533eed67faSmbalmer  #    foo.o: sub/foo.c sub/foo.h
2543eed67faSmbalmer  # and will wrap long lines using \ :
2553eed67faSmbalmer  #    foo.o: sub/foo.c ... \
2563eed67faSmbalmer  #     sub/foo.h ... \
2573eed67faSmbalmer  #     ...
2583eed67faSmbalmer
2593eed67faSmbalmer  "$@" -MD -MF "$tmpdepfile"
2603eed67faSmbalmer  stat=$?
2613eed67faSmbalmer  if test $stat -eq 0; then :
2623eed67faSmbalmer  else
2633eed67faSmbalmer    rm -f "$tmpdepfile"
2643eed67faSmbalmer    exit $stat
2653eed67faSmbalmer  fi
2663eed67faSmbalmer  rm -f "$depfile"
2673eed67faSmbalmer  # Each line is of the form `foo.o: dependent.h',
2683eed67faSmbalmer  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
2693eed67faSmbalmer  # Do two passes, one to just change these to
2703eed67faSmbalmer  # `$object: dependent.h' and one to simply `dependent.h:'.
2713eed67faSmbalmer  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
2723eed67faSmbalmer  # Some versions of the HPUX 10.20 sed can't process this invocation
2733eed67faSmbalmer  # correctly.  Breaking it into two sed invocations is a workaround.
2743eed67faSmbalmer  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
2753eed67faSmbalmer    sed -e 's/$/ :/' >> "$depfile"
2763eed67faSmbalmer  rm -f "$tmpdepfile"
2773eed67faSmbalmer  ;;
2783eed67faSmbalmer
2793eed67faSmbalmertru64)
2803eed67faSmbalmer   # The Tru64 compiler uses -MD to generate dependencies as a side
2813eed67faSmbalmer   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
2823eed67faSmbalmer   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
2833eed67faSmbalmer   # dependencies in `foo.d' instead, so we check for that too.
2843eed67faSmbalmer   # Subdirectories are respected.
2853eed67faSmbalmer   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
2863eed67faSmbalmer   test "x$dir" = "x$object" && dir=
2873eed67faSmbalmer   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
2883eed67faSmbalmer
2893eed67faSmbalmer   if test "$libtool" = yes; then
2903eed67faSmbalmer      # With Tru64 cc, shared objects can also be used to make a
2913eed67faSmbalmer      # static library.  This mecanism is used in libtool 1.4 series to
2923eed67faSmbalmer      # handle both shared and static libraries in a single compilation.
2933eed67faSmbalmer      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
2943eed67faSmbalmer      #
2953eed67faSmbalmer      # With libtool 1.5 this exception was removed, and libtool now
2963eed67faSmbalmer      # generates 2 separate objects for the 2 libraries.  These two
2973eed67faSmbalmer      # compilations output dependencies in in $dir.libs/$base.o.d and
2983eed67faSmbalmer      # in $dir$base.o.d.  We have to check for both files, because
2993eed67faSmbalmer      # one of the two compilations can be disabled.  We should prefer
3003eed67faSmbalmer      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
3013eed67faSmbalmer      # automatically cleaned when .libs/ is deleted, while ignoring
3023eed67faSmbalmer      # the former would cause a distcleancheck panic.
3033eed67faSmbalmer      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
3043eed67faSmbalmer      tmpdepfile2=$dir$base.o.d          # libtool 1.5
3053eed67faSmbalmer      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
3063eed67faSmbalmer      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
3073eed67faSmbalmer      "$@" -Wc,-MD
3083eed67faSmbalmer   else
3093eed67faSmbalmer      tmpdepfile1=$dir$base.o.d
3103eed67faSmbalmer      tmpdepfile2=$dir$base.d
3113eed67faSmbalmer      tmpdepfile3=$dir$base.d
3123eed67faSmbalmer      tmpdepfile4=$dir$base.d
3133eed67faSmbalmer      "$@" -MD
3143eed67faSmbalmer   fi
3153eed67faSmbalmer
3163eed67faSmbalmer   stat=$?
3173eed67faSmbalmer   if test $stat -eq 0; then :
3183eed67faSmbalmer   else
3193eed67faSmbalmer      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3203eed67faSmbalmer      exit $stat
3213eed67faSmbalmer   fi
3223eed67faSmbalmer
3233eed67faSmbalmer   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
3243eed67faSmbalmer   do
3253eed67faSmbalmer     test -f "$tmpdepfile" && break
3263eed67faSmbalmer   done
3273eed67faSmbalmer   if test -f "$tmpdepfile"; then
3283eed67faSmbalmer      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
3293eed67faSmbalmer      # That's a tab and a space in the [].
3303eed67faSmbalmer      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
3313eed67faSmbalmer   else
3323eed67faSmbalmer      echo "#dummy" > "$depfile"
3333eed67faSmbalmer   fi
3343eed67faSmbalmer   rm -f "$tmpdepfile"
3353eed67faSmbalmer   ;;
3363eed67faSmbalmer
3373eed67faSmbalmer#nosideeffect)
3383eed67faSmbalmer  # This comment above is used by automake to tell side-effect
3393eed67faSmbalmer  # dependency tracking mechanisms from slower ones.
3403eed67faSmbalmer
3413eed67faSmbalmerdashmstdout)
3423eed67faSmbalmer  # Important note: in order to support this mode, a compiler *must*
3433eed67faSmbalmer  # always write the preprocessed file to stdout, regardless of -o.
3443eed67faSmbalmer  "$@" || exit $?
3453eed67faSmbalmer
3463eed67faSmbalmer  # Remove the call to Libtool.
3473eed67faSmbalmer  if test "$libtool" = yes; then
3483eed67faSmbalmer    while test $1 != '--mode=compile'; do
3493eed67faSmbalmer      shift
3503eed67faSmbalmer    done
3513eed67faSmbalmer    shift
3523eed67faSmbalmer  fi
3533eed67faSmbalmer
3543eed67faSmbalmer  # Remove `-o $object'.
3553eed67faSmbalmer  IFS=" "
3563eed67faSmbalmer  for arg
3573eed67faSmbalmer  do
3583eed67faSmbalmer    case $arg in
3593eed67faSmbalmer    -o)
3603eed67faSmbalmer      shift
3613eed67faSmbalmer      ;;
3623eed67faSmbalmer    $object)
3633eed67faSmbalmer      shift
3643eed67faSmbalmer      ;;
3653eed67faSmbalmer    *)
3663eed67faSmbalmer      set fnord "$@" "$arg"
3673eed67faSmbalmer      shift # fnord
3683eed67faSmbalmer      shift # $arg
3693eed67faSmbalmer      ;;
3703eed67faSmbalmer    esac
3713eed67faSmbalmer  done
3723eed67faSmbalmer
3733eed67faSmbalmer  test -z "$dashmflag" && dashmflag=-M
3743eed67faSmbalmer  # Require at least two characters before searching for `:'
3753eed67faSmbalmer  # in the target name.  This is to cope with DOS-style filenames:
3763eed67faSmbalmer  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
3773eed67faSmbalmer  "$@" $dashmflag |
3783eed67faSmbalmer    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
3793eed67faSmbalmer  rm -f "$depfile"
3803eed67faSmbalmer  cat < "$tmpdepfile" > "$depfile"
3813eed67faSmbalmer  tr ' ' '
3823eed67faSmbalmer' < "$tmpdepfile" | \
3833eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation
3843eed67faSmbalmer## correctly.  Breaking it into two sed invocations is a workaround.
3853eed67faSmbalmer    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
3863eed67faSmbalmer  rm -f "$tmpdepfile"
3873eed67faSmbalmer  ;;
3883eed67faSmbalmer
3893eed67faSmbalmerdashXmstdout)
3903eed67faSmbalmer  # This case only exists to satisfy depend.m4.  It is never actually
3913eed67faSmbalmer  # run, as this mode is specially recognized in the preamble.
3923eed67faSmbalmer  exit 1
3933eed67faSmbalmer  ;;
3943eed67faSmbalmer
3953eed67faSmbalmermakedepend)
3963eed67faSmbalmer  "$@" || exit $?
3973eed67faSmbalmer  # Remove any Libtool call
3983eed67faSmbalmer  if test "$libtool" = yes; then
3993eed67faSmbalmer    while test $1 != '--mode=compile'; do
4003eed67faSmbalmer      shift
4013eed67faSmbalmer    done
4023eed67faSmbalmer    shift
4033eed67faSmbalmer  fi
4043eed67faSmbalmer  # X makedepend
4053eed67faSmbalmer  shift
4063eed67faSmbalmer  cleared=no
4073eed67faSmbalmer  for arg in "$@"; do
4083eed67faSmbalmer    case $cleared in
4093eed67faSmbalmer    no)
4103eed67faSmbalmer      set ""; shift
4113eed67faSmbalmer      cleared=yes ;;
4123eed67faSmbalmer    esac
4133eed67faSmbalmer    case "$arg" in
4143eed67faSmbalmer    -D*|-I*)
4153eed67faSmbalmer      set fnord "$@" "$arg"; shift ;;
4163eed67faSmbalmer    # Strip any option that makedepend may not understand.  Remove
4173eed67faSmbalmer    # the object too, otherwise makedepend will parse it as a source file.
4183eed67faSmbalmer    -*|$object)
4193eed67faSmbalmer      ;;
4203eed67faSmbalmer    *)
4213eed67faSmbalmer      set fnord "$@" "$arg"; shift ;;
4223eed67faSmbalmer    esac
4233eed67faSmbalmer  done
4243eed67faSmbalmer  obj_suffix="`echo $object | sed 's/^.*\././'`"
4253eed67faSmbalmer  touch "$tmpdepfile"
4263eed67faSmbalmer  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
4273eed67faSmbalmer  rm -f "$depfile"
4283eed67faSmbalmer  cat < "$tmpdepfile" > "$depfile"
4293eed67faSmbalmer  sed '1,2d' "$tmpdepfile" | tr ' ' '
4303eed67faSmbalmer' | \
4313eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation
4323eed67faSmbalmer## correctly.  Breaking it into two sed invocations is a workaround.
4333eed67faSmbalmer    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
4343eed67faSmbalmer  rm -f "$tmpdepfile" "$tmpdepfile".bak
4353eed67faSmbalmer  ;;
4363eed67faSmbalmer
4373eed67faSmbalmercpp)
4383eed67faSmbalmer  # Important note: in order to support this mode, a compiler *must*
4393eed67faSmbalmer  # always write the preprocessed file to stdout.
4403eed67faSmbalmer  "$@" || exit $?
4413eed67faSmbalmer
4423eed67faSmbalmer  # Remove the call to Libtool.
4433eed67faSmbalmer  if test "$libtool" = yes; then
4443eed67faSmbalmer    while test $1 != '--mode=compile'; do
4453eed67faSmbalmer      shift
4463eed67faSmbalmer    done
4473eed67faSmbalmer    shift
4483eed67faSmbalmer  fi
4493eed67faSmbalmer
4503eed67faSmbalmer  # Remove `-o $object'.
4513eed67faSmbalmer  IFS=" "
4523eed67faSmbalmer  for arg
4533eed67faSmbalmer  do
4543eed67faSmbalmer    case $arg in
4553eed67faSmbalmer    -o)
4563eed67faSmbalmer      shift
4573eed67faSmbalmer      ;;
4583eed67faSmbalmer    $object)
4593eed67faSmbalmer      shift
4603eed67faSmbalmer      ;;
4613eed67faSmbalmer    *)
4623eed67faSmbalmer      set fnord "$@" "$arg"
4633eed67faSmbalmer      shift # fnord
4643eed67faSmbalmer      shift # $arg
4653eed67faSmbalmer      ;;
4663eed67faSmbalmer    esac
4673eed67faSmbalmer  done
4683eed67faSmbalmer
4693eed67faSmbalmer  "$@" -E |
4703eed67faSmbalmer    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
4713eed67faSmbalmer       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
4723eed67faSmbalmer    sed '$ s: \\$::' > "$tmpdepfile"
4733eed67faSmbalmer  rm -f "$depfile"
4743eed67faSmbalmer  echo "$object : \\" > "$depfile"
4753eed67faSmbalmer  cat < "$tmpdepfile" >> "$depfile"
4763eed67faSmbalmer  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
4773eed67faSmbalmer  rm -f "$tmpdepfile"
4783eed67faSmbalmer  ;;
4793eed67faSmbalmer
4803eed67faSmbalmermsvisualcpp)
4813eed67faSmbalmer  # Important note: in order to support this mode, a compiler *must*
4823eed67faSmbalmer  # always write the preprocessed file to stdout, regardless of -o,
4833eed67faSmbalmer  # because we must use -o when running libtool.
4843eed67faSmbalmer  "$@" || exit $?
4853eed67faSmbalmer  IFS=" "
4863eed67faSmbalmer  for arg
4873eed67faSmbalmer  do
4883eed67faSmbalmer    case "$arg" in
4893eed67faSmbalmer    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
4903eed67faSmbalmer	set fnord "$@"
4913eed67faSmbalmer	shift
4923eed67faSmbalmer	shift
4933eed67faSmbalmer	;;
4943eed67faSmbalmer    *)
4953eed67faSmbalmer	set fnord "$@" "$arg"
4963eed67faSmbalmer	shift
4973eed67faSmbalmer	shift
4983eed67faSmbalmer	;;
4993eed67faSmbalmer    esac
5003eed67faSmbalmer  done
5013eed67faSmbalmer  "$@" -E |
5023eed67faSmbalmer  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
5033eed67faSmbalmer  rm -f "$depfile"
5043eed67faSmbalmer  echo "$object : \\" > "$depfile"
5053eed67faSmbalmer  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
5063eed67faSmbalmer  echo "	" >> "$depfile"
5073eed67faSmbalmer  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
5083eed67faSmbalmer  rm -f "$tmpdepfile"
5093eed67faSmbalmer  ;;
5103eed67faSmbalmer
5113eed67faSmbalmernone)
5123eed67faSmbalmer  exec "$@"
5133eed67faSmbalmer  ;;
5143eed67faSmbalmer
5153eed67faSmbalmer*)
5163eed67faSmbalmer  echo "Unknown depmode $depmode" 1>&2
5173eed67faSmbalmer  exit 1
5183eed67faSmbalmer  ;;
5193eed67faSmbalmeresac
5203eed67faSmbalmer
5213eed67faSmbalmerexit 0
5223eed67faSmbalmer
5233eed67faSmbalmer# Local Variables:
5243eed67faSmbalmer# mode: shell-script
5253eed67faSmbalmer# sh-indentation: 2
5263eed67faSmbalmer# eval: (add-hook 'write-file-hooks 'time-stamp)
5273eed67faSmbalmer# time-stamp-start: "scriptversion="
5283eed67faSmbalmer# time-stamp-format: "%:y-%02m-%02d.%02H"
5293eed67faSmbalmer# time-stamp-end: "$"
5303eed67faSmbalmer# End:
531