depcomp revision 61dc2d86
102be438aSmrg#! /bin/sh
202be438aSmrg# depcomp - compile a program generating dependencies as side-effects
302be438aSmrg
461dc2d86Smrgscriptversion=2009-04-28.21; # UTC
502be438aSmrg
661dc2d86Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
761dc2d86Smrg# Software Foundation, Inc.
802be438aSmrg
902be438aSmrg# This program is free software; you can redistribute it and/or modify
1002be438aSmrg# it under the terms of the GNU General Public License as published by
1102be438aSmrg# the Free Software Foundation; either version 2, or (at your option)
1202be438aSmrg# any later version.
1302be438aSmrg
1402be438aSmrg# This program is distributed in the hope that it will be useful,
1502be438aSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1602be438aSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1702be438aSmrg# GNU General Public License for more details.
1802be438aSmrg
1902be438aSmrg# You should have received a copy of the GNU General Public License
2061dc2d86Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
2102be438aSmrg
2202be438aSmrg# As a special exception to the GNU General Public License, if you
2302be438aSmrg# distribute this file as part of a program that contains a
2402be438aSmrg# configuration script generated by Autoconf, you may include it under
2502be438aSmrg# the same distribution terms that you use for the rest of that program.
2602be438aSmrg
2702be438aSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
2802be438aSmrg
2902be438aSmrgcase $1 in
3002be438aSmrg  '')
3102be438aSmrg     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
3202be438aSmrg     exit 1;
3302be438aSmrg     ;;
3402be438aSmrg  -h | --h*)
3502be438aSmrg    cat <<\EOF
3602be438aSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS]
3702be438aSmrg
3802be438aSmrgRun PROGRAMS ARGS to compile a file, generating dependencies
3902be438aSmrgas side-effects.
4002be438aSmrg
4102be438aSmrgEnvironment variables:
4202be438aSmrg  depmode     Dependency tracking mode.
4302be438aSmrg  source      Source file read by `PROGRAMS ARGS'.
4402be438aSmrg  object      Object file output by `PROGRAMS ARGS'.
4502be438aSmrg  DEPDIR      directory where to store dependencies.
4602be438aSmrg  depfile     Dependency file to output.
4702be438aSmrg  tmpdepfile  Temporary file to use when outputing dependencies.
4802be438aSmrg  libtool     Whether libtool is used (yes/no).
4902be438aSmrg
5002be438aSmrgReport bugs to <bug-automake@gnu.org>.
5102be438aSmrgEOF
5202be438aSmrg    exit $?
5302be438aSmrg    ;;
5402be438aSmrg  -v | --v*)
5502be438aSmrg    echo "depcomp $scriptversion"
5602be438aSmrg    exit $?
5702be438aSmrg    ;;
5802be438aSmrgesac
5902be438aSmrg
6002be438aSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then
6102be438aSmrg  echo "depcomp: Variables source, object and depmode must be set" 1>&2
6202be438aSmrg  exit 1
6302be438aSmrgfi
6402be438aSmrg
6502be438aSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
6602be438aSmrgdepfile=${depfile-`echo "$object" |
6702be438aSmrg  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
6802be438aSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
6902be438aSmrg
7002be438aSmrgrm -f "$tmpdepfile"
7102be438aSmrg
7202be438aSmrg# Some modes work just like other modes, but use different flags.  We
7302be438aSmrg# parameterize here, but still list the modes in the big case below,
7402be438aSmrg# to make depend.m4 easier to write.  Note that we *cannot* use a case
7502be438aSmrg# here, because this file can only contain one case statement.
7602be438aSmrgif test "$depmode" = hp; then
7702be438aSmrg  # HP compiler uses -M and no extra arg.
7802be438aSmrg  gccflag=-M
7902be438aSmrg  depmode=gcc
8002be438aSmrgfi
8102be438aSmrg
8202be438aSmrgif test "$depmode" = dashXmstdout; then
8302be438aSmrg   # This is just like dashmstdout with a different argument.
8402be438aSmrg   dashmflag=-xM
8502be438aSmrg   depmode=dashmstdout
8602be438aSmrgfi
8702be438aSmrg
8861dc2d86Smrgcygpath_u="cygpath -u -f -"
8961dc2d86Smrgif test "$depmode" = msvcmsys; then
9061dc2d86Smrg   # This is just like msvisualcpp but w/o cygpath translation.
9161dc2d86Smrg   # Just convert the backslash-escaped backslashes to single forward
9261dc2d86Smrg   # slashes to satisfy depend.m4
9361dc2d86Smrg   cygpath_u="sed s,\\\\\\\\,/,g"
9461dc2d86Smrg   depmode=msvisualcpp
9561dc2d86Smrgfi
9661dc2d86Smrg
9702be438aSmrgcase "$depmode" in
9802be438aSmrggcc3)
9902be438aSmrg## gcc 3 implements dependency tracking that does exactly what
10002be438aSmrg## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
10102be438aSmrg## it if -MD -MP comes after the -MF stuff.  Hmm.
102880ed95aSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon
103880ed95aSmrg## the command line argument order; so add the flags where they
104880ed95aSmrg## appear in depend2.am.  Note that the slowdown incurred here
105880ed95aSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this.
106880ed95aSmrg  for arg
107880ed95aSmrg  do
108880ed95aSmrg    case $arg in
109880ed95aSmrg    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
110880ed95aSmrg    *)  set fnord "$@" "$arg" ;;
111880ed95aSmrg    esac
112880ed95aSmrg    shift # fnord
113880ed95aSmrg    shift # $arg
114880ed95aSmrg  done
115880ed95aSmrg  "$@"
11602be438aSmrg  stat=$?
11702be438aSmrg  if test $stat -eq 0; then :
11802be438aSmrg  else
11902be438aSmrg    rm -f "$tmpdepfile"
12002be438aSmrg    exit $stat
12102be438aSmrg  fi
12202be438aSmrg  mv "$tmpdepfile" "$depfile"
12302be438aSmrg  ;;
12402be438aSmrg
12502be438aSmrggcc)
12602be438aSmrg## There are various ways to get dependency output from gcc.  Here's
12702be438aSmrg## why we pick this rather obscure method:
12802be438aSmrg## - Don't want to use -MD because we'd like the dependencies to end
12902be438aSmrg##   up in a subdir.  Having to rename by hand is ugly.
13002be438aSmrg##   (We might end up doing this anyway to support other compilers.)
13102be438aSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
13202be438aSmrg##   -MM, not -M (despite what the docs say).
13302be438aSmrg## - Using -M directly means running the compiler twice (even worse
13402be438aSmrg##   than renaming).
13502be438aSmrg  if test -z "$gccflag"; then
13602be438aSmrg    gccflag=-MD,
13702be438aSmrg  fi
13802be438aSmrg  "$@" -Wp,"$gccflag$tmpdepfile"
13902be438aSmrg  stat=$?
14002be438aSmrg  if test $stat -eq 0; then :
14102be438aSmrg  else
14202be438aSmrg    rm -f "$tmpdepfile"
14302be438aSmrg    exit $stat
14402be438aSmrg  fi
14502be438aSmrg  rm -f "$depfile"
14602be438aSmrg  echo "$object : \\" > "$depfile"
14702be438aSmrg  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
14802be438aSmrg## The second -e expression handles DOS-style file names with drive letters.
14902be438aSmrg  sed -e 's/^[^:]*: / /' \
15002be438aSmrg      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
15102be438aSmrg## This next piece of magic avoids the `deleted header file' problem.
15202be438aSmrg## The problem is that when a header file which appears in a .P file
15302be438aSmrg## is deleted, the dependency causes make to die (because there is
15402be438aSmrg## typically no way to rebuild the header).  We avoid this by adding
15502be438aSmrg## dummy dependencies for each header file.  Too bad gcc doesn't do
15602be438aSmrg## this for us directly.
15702be438aSmrg  tr ' ' '
15802be438aSmrg' < "$tmpdepfile" |
15902be438aSmrg## Some versions of gcc put a space before the `:'.  On the theory
16002be438aSmrg## that the space means something, we add a space to the output as
16102be438aSmrg## well.
16202be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
16302be438aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
16402be438aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
16502be438aSmrg  rm -f "$tmpdepfile"
16602be438aSmrg  ;;
16702be438aSmrg
16802be438aSmrghp)
16902be438aSmrg  # This case exists only to let depend.m4 do its work.  It works by
17002be438aSmrg  # looking at the text of this script.  This case will never be run,
17102be438aSmrg  # since it is checked for above.
17202be438aSmrg  exit 1
17302be438aSmrg  ;;
17402be438aSmrg
17502be438aSmrgsgi)
17602be438aSmrg  if test "$libtool" = yes; then
17702be438aSmrg    "$@" "-Wp,-MDupdate,$tmpdepfile"
17802be438aSmrg  else
17902be438aSmrg    "$@" -MDupdate "$tmpdepfile"
18002be438aSmrg  fi
18102be438aSmrg  stat=$?
18202be438aSmrg  if test $stat -eq 0; then :
18302be438aSmrg  else
18402be438aSmrg    rm -f "$tmpdepfile"
18502be438aSmrg    exit $stat
18602be438aSmrg  fi
18702be438aSmrg  rm -f "$depfile"
18802be438aSmrg
18902be438aSmrg  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
19002be438aSmrg    echo "$object : \\" > "$depfile"
19102be438aSmrg
19202be438aSmrg    # Clip off the initial element (the dependent).  Don't try to be
19302be438aSmrg    # clever and replace this with sed code, as IRIX sed won't handle
19402be438aSmrg    # lines with more than a fixed number of characters (4096 in
19502be438aSmrg    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
19602be438aSmrg    # the IRIX cc adds comments like `#:fec' to the end of the
19702be438aSmrg    # dependency line.
19802be438aSmrg    tr ' ' '
19902be438aSmrg' < "$tmpdepfile" \
20002be438aSmrg    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
20102be438aSmrg    tr '
20261dc2d86Smrg' ' ' >> "$depfile"
20361dc2d86Smrg    echo >> "$depfile"
20402be438aSmrg
20502be438aSmrg    # The second pass generates a dummy entry for each header file.
20602be438aSmrg    tr ' ' '
20702be438aSmrg' < "$tmpdepfile" \
20802be438aSmrg   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
20961dc2d86Smrg   >> "$depfile"
21002be438aSmrg  else
21102be438aSmrg    # The sourcefile does not contain any dependencies, so just
21202be438aSmrg    # store a dummy comment line, to avoid errors with the Makefile
21302be438aSmrg    # "include basename.Plo" scheme.
21402be438aSmrg    echo "#dummy" > "$depfile"
21502be438aSmrg  fi
21602be438aSmrg  rm -f "$tmpdepfile"
21702be438aSmrg  ;;
21802be438aSmrg
21902be438aSmrgaix)
22002be438aSmrg  # The C for AIX Compiler uses -M and outputs the dependencies
22102be438aSmrg  # in a .u file.  In older versions, this file always lives in the
22202be438aSmrg  # current directory.  Also, the AIX compiler puts `$object:' at the
22302be438aSmrg  # start of each line; $object doesn't have directory information.
22402be438aSmrg  # Version 6 uses the directory in both cases.
225880ed95aSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
226880ed95aSmrg  test "x$dir" = "x$object" && dir=
227880ed95aSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
22802be438aSmrg  if test "$libtool" = yes; then
229880ed95aSmrg    tmpdepfile1=$dir$base.u
230880ed95aSmrg    tmpdepfile2=$base.u
231880ed95aSmrg    tmpdepfile3=$dir.libs/$base.u
23202be438aSmrg    "$@" -Wc,-M
23302be438aSmrg  else
234880ed95aSmrg    tmpdepfile1=$dir$base.u
235880ed95aSmrg    tmpdepfile2=$dir$base.u
236880ed95aSmrg    tmpdepfile3=$dir$base.u
23702be438aSmrg    "$@" -M
23802be438aSmrg  fi
23902be438aSmrg  stat=$?
24002be438aSmrg
24102be438aSmrg  if test $stat -eq 0; then :
24202be438aSmrg  else
243880ed95aSmrg    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
24402be438aSmrg    exit $stat
24502be438aSmrg  fi
24602be438aSmrg
247880ed95aSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
248880ed95aSmrg  do
249880ed95aSmrg    test -f "$tmpdepfile" && break
250880ed95aSmrg  done
25102be438aSmrg  if test -f "$tmpdepfile"; then
25202be438aSmrg    # Each line is of the form `foo.o: dependent.h'.
25302be438aSmrg    # Do two passes, one to just change these to
25402be438aSmrg    # `$object: dependent.h' and one to simply `dependent.h:'.
255880ed95aSmrg    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
256880ed95aSmrg    # That's a tab and a space in the [].
257880ed95aSmrg    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
25802be438aSmrg  else
25902be438aSmrg    # The sourcefile does not contain any dependencies, so just
26002be438aSmrg    # store a dummy comment line, to avoid errors with the Makefile
26102be438aSmrg    # "include basename.Plo" scheme.
26202be438aSmrg    echo "#dummy" > "$depfile"
26302be438aSmrg  fi
26402be438aSmrg  rm -f "$tmpdepfile"
26502be438aSmrg  ;;
26602be438aSmrg
26702be438aSmrgicc)
26802be438aSmrg  # Intel's C compiler understands `-MD -MF file'.  However on
26902be438aSmrg  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
27002be438aSmrg  # ICC 7.0 will fill foo.d with something like
27102be438aSmrg  #    foo.o: sub/foo.c
27202be438aSmrg  #    foo.o: sub/foo.h
27302be438aSmrg  # which is wrong.  We want:
27402be438aSmrg  #    sub/foo.o: sub/foo.c
27502be438aSmrg  #    sub/foo.o: sub/foo.h
27602be438aSmrg  #    sub/foo.c:
27702be438aSmrg  #    sub/foo.h:
27802be438aSmrg  # ICC 7.1 will output
27902be438aSmrg  #    foo.o: sub/foo.c sub/foo.h
28002be438aSmrg  # and will wrap long lines using \ :
28102be438aSmrg  #    foo.o: sub/foo.c ... \
28202be438aSmrg  #     sub/foo.h ... \
28302be438aSmrg  #     ...
28402be438aSmrg
28502be438aSmrg  "$@" -MD -MF "$tmpdepfile"
28602be438aSmrg  stat=$?
28702be438aSmrg  if test $stat -eq 0; then :
28802be438aSmrg  else
28902be438aSmrg    rm -f "$tmpdepfile"
29002be438aSmrg    exit $stat
29102be438aSmrg  fi
29202be438aSmrg  rm -f "$depfile"
29302be438aSmrg  # Each line is of the form `foo.o: dependent.h',
29402be438aSmrg  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
29502be438aSmrg  # Do two passes, one to just change these to
29602be438aSmrg  # `$object: dependent.h' and one to simply `dependent.h:'.
29702be438aSmrg  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
29802be438aSmrg  # Some versions of the HPUX 10.20 sed can't process this invocation
29902be438aSmrg  # correctly.  Breaking it into two sed invocations is a workaround.
30002be438aSmrg  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
30102be438aSmrg    sed -e 's/$/ :/' >> "$depfile"
30202be438aSmrg  rm -f "$tmpdepfile"
30302be438aSmrg  ;;
30402be438aSmrg
305880ed95aSmrghp2)
306880ed95aSmrg  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
307880ed95aSmrg  # compilers, which have integrated preprocessors.  The correct option
308880ed95aSmrg  # to use with these is +Maked; it writes dependencies to a file named
309880ed95aSmrg  # 'foo.d', which lands next to the object file, wherever that
310880ed95aSmrg  # happens to be.
311880ed95aSmrg  # Much of this is similar to the tru64 case; see comments there.
312880ed95aSmrg  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
313880ed95aSmrg  test "x$dir" = "x$object" && dir=
314880ed95aSmrg  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
315880ed95aSmrg  if test "$libtool" = yes; then
316880ed95aSmrg    tmpdepfile1=$dir$base.d
317880ed95aSmrg    tmpdepfile2=$dir.libs/$base.d
318880ed95aSmrg    "$@" -Wc,+Maked
319880ed95aSmrg  else
320880ed95aSmrg    tmpdepfile1=$dir$base.d
321880ed95aSmrg    tmpdepfile2=$dir$base.d
322880ed95aSmrg    "$@" +Maked
323880ed95aSmrg  fi
324880ed95aSmrg  stat=$?
325880ed95aSmrg  if test $stat -eq 0; then :
326880ed95aSmrg  else
327880ed95aSmrg     rm -f "$tmpdepfile1" "$tmpdepfile2"
328880ed95aSmrg     exit $stat
329880ed95aSmrg  fi
330880ed95aSmrg
331880ed95aSmrg  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
332880ed95aSmrg  do
333880ed95aSmrg    test -f "$tmpdepfile" && break
334880ed95aSmrg  done
335880ed95aSmrg  if test -f "$tmpdepfile"; then
336880ed95aSmrg    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
337880ed95aSmrg    # Add `dependent.h:' lines.
33861dc2d86Smrg    sed -ne '2,${
33961dc2d86Smrg	       s/^ *//
34061dc2d86Smrg	       s/ \\*$//
34161dc2d86Smrg	       s/$/:/
34261dc2d86Smrg	       p
34361dc2d86Smrg	     }' "$tmpdepfile" >> "$depfile"
344880ed95aSmrg  else
345880ed95aSmrg    echo "#dummy" > "$depfile"
346880ed95aSmrg  fi
347880ed95aSmrg  rm -f "$tmpdepfile" "$tmpdepfile2"
348880ed95aSmrg  ;;
349880ed95aSmrg
35002be438aSmrgtru64)
35102be438aSmrg   # The Tru64 compiler uses -MD to generate dependencies as a side
35202be438aSmrg   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
35302be438aSmrg   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
35402be438aSmrg   # dependencies in `foo.d' instead, so we check for that too.
35502be438aSmrg   # Subdirectories are respected.
35602be438aSmrg   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
35702be438aSmrg   test "x$dir" = "x$object" && dir=
35802be438aSmrg   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
35902be438aSmrg
36002be438aSmrg   if test "$libtool" = yes; then
36102be438aSmrg      # With Tru64 cc, shared objects can also be used to make a
362880ed95aSmrg      # static library.  This mechanism is used in libtool 1.4 series to
36302be438aSmrg      # handle both shared and static libraries in a single compilation.
36402be438aSmrg      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
36502be438aSmrg      #
36602be438aSmrg      # With libtool 1.5 this exception was removed, and libtool now
36702be438aSmrg      # generates 2 separate objects for the 2 libraries.  These two
368880ed95aSmrg      # compilations output dependencies in $dir.libs/$base.o.d and
36902be438aSmrg      # in $dir$base.o.d.  We have to check for both files, because
37002be438aSmrg      # one of the two compilations can be disabled.  We should prefer
37102be438aSmrg      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
37202be438aSmrg      # automatically cleaned when .libs/ is deleted, while ignoring
37302be438aSmrg      # the former would cause a distcleancheck panic.
37402be438aSmrg      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
37502be438aSmrg      tmpdepfile2=$dir$base.o.d          # libtool 1.5
37602be438aSmrg      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
37702be438aSmrg      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
37802be438aSmrg      "$@" -Wc,-MD
37902be438aSmrg   else
38002be438aSmrg      tmpdepfile1=$dir$base.o.d
38102be438aSmrg      tmpdepfile2=$dir$base.d
38202be438aSmrg      tmpdepfile3=$dir$base.d
38302be438aSmrg      tmpdepfile4=$dir$base.d
38402be438aSmrg      "$@" -MD
38502be438aSmrg   fi
38602be438aSmrg
38702be438aSmrg   stat=$?
38802be438aSmrg   if test $stat -eq 0; then :
38902be438aSmrg   else
39002be438aSmrg      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
39102be438aSmrg      exit $stat
39202be438aSmrg   fi
39302be438aSmrg
39402be438aSmrg   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
39502be438aSmrg   do
39602be438aSmrg     test -f "$tmpdepfile" && break
39702be438aSmrg   done
39802be438aSmrg   if test -f "$tmpdepfile"; then
39902be438aSmrg      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
40002be438aSmrg      # That's a tab and a space in the [].
40102be438aSmrg      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
40202be438aSmrg   else
40302be438aSmrg      echo "#dummy" > "$depfile"
40402be438aSmrg   fi
40502be438aSmrg   rm -f "$tmpdepfile"
40602be438aSmrg   ;;
40702be438aSmrg
40802be438aSmrg#nosideeffect)
40902be438aSmrg  # This comment above is used by automake to tell side-effect
41002be438aSmrg  # dependency tracking mechanisms from slower ones.
41102be438aSmrg
41202be438aSmrgdashmstdout)
41302be438aSmrg  # Important note: in order to support this mode, a compiler *must*
41402be438aSmrg  # always write the preprocessed file to stdout, regardless of -o.
41502be438aSmrg  "$@" || exit $?
41602be438aSmrg
41702be438aSmrg  # Remove the call to Libtool.
41802be438aSmrg  if test "$libtool" = yes; then
41961dc2d86Smrg    while test "X$1" != 'X--mode=compile'; do
42002be438aSmrg      shift
42102be438aSmrg    done
42202be438aSmrg    shift
42302be438aSmrg  fi
42402be438aSmrg
42502be438aSmrg  # Remove `-o $object'.
42602be438aSmrg  IFS=" "
42702be438aSmrg  for arg
42802be438aSmrg  do
42902be438aSmrg    case $arg in
43002be438aSmrg    -o)
43102be438aSmrg      shift
43202be438aSmrg      ;;
43302be438aSmrg    $object)
43402be438aSmrg      shift
43502be438aSmrg      ;;
43602be438aSmrg    *)
43702be438aSmrg      set fnord "$@" "$arg"
43802be438aSmrg      shift # fnord
43902be438aSmrg      shift # $arg
44002be438aSmrg      ;;
44102be438aSmrg    esac
44202be438aSmrg  done
44302be438aSmrg
44402be438aSmrg  test -z "$dashmflag" && dashmflag=-M
44502be438aSmrg  # Require at least two characters before searching for `:'
44602be438aSmrg  # in the target name.  This is to cope with DOS-style filenames:
44702be438aSmrg  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
44802be438aSmrg  "$@" $dashmflag |
44902be438aSmrg    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
45002be438aSmrg  rm -f "$depfile"
45102be438aSmrg  cat < "$tmpdepfile" > "$depfile"
45202be438aSmrg  tr ' ' '
45302be438aSmrg' < "$tmpdepfile" | \
45402be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
45502be438aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
45602be438aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
45702be438aSmrg  rm -f "$tmpdepfile"
45802be438aSmrg  ;;
45902be438aSmrg
46002be438aSmrgdashXmstdout)
46102be438aSmrg  # This case only exists to satisfy depend.m4.  It is never actually
46202be438aSmrg  # run, as this mode is specially recognized in the preamble.
46302be438aSmrg  exit 1
46402be438aSmrg  ;;
46502be438aSmrg
46602be438aSmrgmakedepend)
46702be438aSmrg  "$@" || exit $?
46802be438aSmrg  # Remove any Libtool call
46902be438aSmrg  if test "$libtool" = yes; then
47061dc2d86Smrg    while test "X$1" != 'X--mode=compile'; do
47102be438aSmrg      shift
47202be438aSmrg    done
47302be438aSmrg    shift
47402be438aSmrg  fi
47502be438aSmrg  # X makedepend
47602be438aSmrg  shift
47761dc2d86Smrg  cleared=no eat=no
47861dc2d86Smrg  for arg
47961dc2d86Smrg  do
48002be438aSmrg    case $cleared in
48102be438aSmrg    no)
48202be438aSmrg      set ""; shift
48302be438aSmrg      cleared=yes ;;
48402be438aSmrg    esac
48561dc2d86Smrg    if test $eat = yes; then
48661dc2d86Smrg      eat=no
48761dc2d86Smrg      continue
48861dc2d86Smrg    fi
48902be438aSmrg    case "$arg" in
49002be438aSmrg    -D*|-I*)
49102be438aSmrg      set fnord "$@" "$arg"; shift ;;
49202be438aSmrg    # Strip any option that makedepend may not understand.  Remove
49302be438aSmrg    # the object too, otherwise makedepend will parse it as a source file.
49461dc2d86Smrg    -arch)
49561dc2d86Smrg      eat=yes ;;
49602be438aSmrg    -*|$object)
49702be438aSmrg      ;;
49802be438aSmrg    *)
49902be438aSmrg      set fnord "$@" "$arg"; shift ;;
50002be438aSmrg    esac
50102be438aSmrg  done
50261dc2d86Smrg  obj_suffix=`echo "$object" | sed 's/^.*\././'`
50302be438aSmrg  touch "$tmpdepfile"
50402be438aSmrg  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
50502be438aSmrg  rm -f "$depfile"
50602be438aSmrg  cat < "$tmpdepfile" > "$depfile"
50702be438aSmrg  sed '1,2d' "$tmpdepfile" | tr ' ' '
50802be438aSmrg' | \
50902be438aSmrg## Some versions of the HPUX 10.20 sed can't process this invocation
51002be438aSmrg## correctly.  Breaking it into two sed invocations is a workaround.
51102be438aSmrg    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
51202be438aSmrg  rm -f "$tmpdepfile" "$tmpdepfile".bak
51302be438aSmrg  ;;
51402be438aSmrg
51502be438aSmrgcpp)
51602be438aSmrg  # Important note: in order to support this mode, a compiler *must*
51702be438aSmrg  # always write the preprocessed file to stdout.
51802be438aSmrg  "$@" || exit $?
51902be438aSmrg
52002be438aSmrg  # Remove the call to Libtool.
52102be438aSmrg  if test "$libtool" = yes; then
52261dc2d86Smrg    while test "X$1" != 'X--mode=compile'; do
52302be438aSmrg      shift
52402be438aSmrg    done
52502be438aSmrg    shift
52602be438aSmrg  fi
52702be438aSmrg
52802be438aSmrg  # Remove `-o $object'.
52902be438aSmrg  IFS=" "
53002be438aSmrg  for arg
53102be438aSmrg  do
53202be438aSmrg    case $arg in
53302be438aSmrg    -o)
53402be438aSmrg      shift
53502be438aSmrg      ;;
53602be438aSmrg    $object)
53702be438aSmrg      shift
53802be438aSmrg      ;;
53902be438aSmrg    *)
54002be438aSmrg      set fnord "$@" "$arg"
54102be438aSmrg      shift # fnord
54202be438aSmrg      shift # $arg
54302be438aSmrg      ;;
54402be438aSmrg    esac
54502be438aSmrg  done
54602be438aSmrg
54702be438aSmrg  "$@" -E |
54802be438aSmrg    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
54902be438aSmrg       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
55002be438aSmrg    sed '$ s: \\$::' > "$tmpdepfile"
55102be438aSmrg  rm -f "$depfile"
55202be438aSmrg  echo "$object : \\" > "$depfile"
55302be438aSmrg  cat < "$tmpdepfile" >> "$depfile"
55402be438aSmrg  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
55502be438aSmrg  rm -f "$tmpdepfile"
55602be438aSmrg  ;;
55702be438aSmrg
55802be438aSmrgmsvisualcpp)
55902be438aSmrg  # Important note: in order to support this mode, a compiler *must*
56061dc2d86Smrg  # always write the preprocessed file to stdout.
56102be438aSmrg  "$@" || exit $?
56261dc2d86Smrg
56361dc2d86Smrg  # Remove the call to Libtool.
56461dc2d86Smrg  if test "$libtool" = yes; then
56561dc2d86Smrg    while test "X$1" != 'X--mode=compile'; do
56661dc2d86Smrg      shift
56761dc2d86Smrg    done
56861dc2d86Smrg    shift
56961dc2d86Smrg  fi
57061dc2d86Smrg
57102be438aSmrg  IFS=" "
57202be438aSmrg  for arg
57302be438aSmrg  do
57402be438aSmrg    case "$arg" in
57561dc2d86Smrg    -o)
57661dc2d86Smrg      shift
57761dc2d86Smrg      ;;
57861dc2d86Smrg    $object)
57961dc2d86Smrg      shift
58061dc2d86Smrg      ;;
58102be438aSmrg    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
58202be438aSmrg	set fnord "$@"
58302be438aSmrg	shift
58402be438aSmrg	shift
58502be438aSmrg	;;
58602be438aSmrg    *)
58702be438aSmrg	set fnord "$@" "$arg"
58802be438aSmrg	shift
58902be438aSmrg	shift
59002be438aSmrg	;;
59102be438aSmrg    esac
59202be438aSmrg  done
59361dc2d86Smrg  "$@" -E 2>/dev/null |
59461dc2d86Smrg  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
59502be438aSmrg  rm -f "$depfile"
59602be438aSmrg  echo "$object : \\" > "$depfile"
59761dc2d86Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
59802be438aSmrg  echo "	" >> "$depfile"
59961dc2d86Smrg  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
60002be438aSmrg  rm -f "$tmpdepfile"
60102be438aSmrg  ;;
60202be438aSmrg
60361dc2d86Smrgmsvcmsys)
60461dc2d86Smrg  # This case exists only to let depend.m4 do its work.  It works by
60561dc2d86Smrg  # looking at the text of this script.  This case will never be run,
60661dc2d86Smrg  # since it is checked for above.
60761dc2d86Smrg  exit 1
60861dc2d86Smrg  ;;
60961dc2d86Smrg
61002be438aSmrgnone)
61102be438aSmrg  exec "$@"
61202be438aSmrg  ;;
61302be438aSmrg
61402be438aSmrg*)
61502be438aSmrg  echo "Unknown depmode $depmode" 1>&2
61602be438aSmrg  exit 1
61702be438aSmrg  ;;
61802be438aSmrgesac
61902be438aSmrg
62002be438aSmrgexit 0
62102be438aSmrg
62202be438aSmrg# Local Variables:
62302be438aSmrg# mode: shell-script
62402be438aSmrg# sh-indentation: 2
62502be438aSmrg# eval: (add-hook 'write-file-hooks 'time-stamp)
62602be438aSmrg# time-stamp-start: "scriptversion="
62702be438aSmrg# time-stamp-format: "%:y-%02m-%02d.%02H"
62861dc2d86Smrg# time-stamp-time-zone: "UTC"
62961dc2d86Smrg# time-stamp-end: "; # UTC"
63002be438aSmrg# End:
631