Home | History | Annotate | Download | only in build-aux
      1 #! /bin/sh
      2 # depcomp - compile a program generating dependencies as side-effects
      3 
      4 scriptversion=2012-03-27.16; # UTC
      5 
      6 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
      7 # 2011, 2012 Free Software Foundation, Inc.
      8 
      9 # This program is free software; you can redistribute it and/or modify
     10 # it under the terms of the GNU General Public License as published by
     11 # the Free Software Foundation; either version 2, or (at your option)
     12 # any later version.
     13 
     14 # This program is distributed in the hope that it will be useful,
     15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17 # GNU General Public License for more details.
     18 
     19 # You should have received a copy of the GNU General Public License
     20 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     21 
     22 # As a special exception to the GNU General Public License, if you
     23 # distribute this file as part of a program that contains a
     24 # configuration script generated by Autoconf, you may include it under
     25 # the same distribution terms that you use for the rest of that program.
     26 
     27 # Originally written by Alexandre Oliva <oliva (at] dcc.unicamp.br>.
     28 
     29 case $1 in
     30   '')
     31      echo "$0: No command.  Try '$0 --help' for more information." 1>&2
     32      exit 1;
     33      ;;
     34   -h | --h*)
     35     cat <<\EOF
     36 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
     37 
     38 Run PROGRAMS ARGS to compile a file, generating dependencies
     39 as side-effects.
     40 
     41 Environment variables:
     42   depmode     Dependency tracking mode.
     43   source      Source file read by 'PROGRAMS ARGS'.
     44   object      Object file output by 'PROGRAMS ARGS'.
     45   DEPDIR      directory where to store dependencies.
     46   depfile     Dependency file to output.
     47   tmpdepfile  Temporary file to use when outputting dependencies.
     48   libtool     Whether libtool is used (yes/no).
     49 
     50 Report bugs to <bug-automake@gnu.org>.
     51 EOF
     52     exit $?
     53     ;;
     54   -v | --v*)
     55     echo "depcomp $scriptversion"
     56     exit $?
     57     ;;
     58 esac
     59 
     60 # A tabulation character.
     61 tab='	'
     62 # A newline character.
     63 nl='
     64 '
     65 
     66 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
     67   echo "depcomp: Variables source, object and depmode must be set" 1>&2
     68   exit 1
     69 fi
     70 
     71 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
     72 depfile=${depfile-`echo "$object" |
     73   sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
     74 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
     75 
     76 rm -f "$tmpdepfile"
     77 
     78 # Some modes work just like other modes, but use different flags.  We
     79 # parameterize here, but still list the modes in the big case below,
     80 # to make depend.m4 easier to write.  Note that we *cannot* use a case
     81 # here, because this file can only contain one case statement.
     82 if test "$depmode" = hp; then
     83   # HP compiler uses -M and no extra arg.
     84   gccflag=-M
     85   depmode=gcc
     86 fi
     87 
     88 if test "$depmode" = dashXmstdout; then
     89    # This is just like dashmstdout with a different argument.
     90    dashmflag=-xM
     91    depmode=dashmstdout
     92 fi
     93 
     94 cygpath_u="cygpath -u -f -"
     95 if test "$depmode" = msvcmsys; then
     96    # This is just like msvisualcpp but w/o cygpath translation.
     97    # Just convert the backslash-escaped backslashes to single forward
     98    # slashes to satisfy depend.m4
     99    cygpath_u='sed s,\\\\,/,g'
    100    depmode=msvisualcpp
    101 fi
    102 
    103 if test "$depmode" = msvc7msys; then
    104    # This is just like msvc7 but w/o cygpath translation.
    105    # Just convert the backslash-escaped backslashes to single forward
    106    # slashes to satisfy depend.m4
    107    cygpath_u='sed s,\\\\,/,g'
    108    depmode=msvc7
    109 fi
    110 
    111 if test "$depmode" = xlc; then
    112    # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
    113    gccflag=-qmakedep=gcc,-MF
    114    depmode=gcc
    115 fi
    116 
    117 case "$depmode" in
    118 gcc3)
    119 ## gcc 3 implements dependency tracking that does exactly what
    120 ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
    121 ## it if -MD -MP comes after the -MF stuff.  Hmm.
    122 ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
    123 ## the command line argument order; so add the flags where they
    124 ## appear in depend2.am.  Note that the slowdown incurred here
    125 ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
    126   for arg
    127   do
    128     case $arg in
    129     -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
    130     *)  set fnord "$@" "$arg" ;;
    131     esac
    132     shift # fnord
    133     shift # $arg
    134   done
    135   "$@"
    136   stat=$?
    137   if test $stat -eq 0; then :
    138   else
    139     rm -f "$tmpdepfile"
    140     exit $stat
    141   fi
    142   mv "$tmpdepfile" "$depfile"
    143   ;;
    144 
    145 gcc)
    146 ## There are various ways to get dependency output from gcc.  Here's
    147 ## why we pick this rather obscure method:
    148 ## - Don't want to use -MD because we'd like the dependencies to end
    149 ##   up in a subdir.  Having to rename by hand is ugly.
    150 ##   (We might end up doing this anyway to support other compilers.)
    151 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
    152 ##   -MM, not -M (despite what the docs say).
    153 ## - Using -M directly means running the compiler twice (even worse
    154 ##   than renaming).
    155   if test -z "$gccflag"; then
    156     gccflag=-MD,
    157   fi
    158   "$@" -Wp,"$gccflag$tmpdepfile"
    159   stat=$?
    160   if test $stat -eq 0; then :
    161   else
    162     rm -f "$tmpdepfile"
    163     exit $stat
    164   fi
    165   rm -f "$depfile"
    166   echo "$object : \\" > "$depfile"
    167   alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
    168 ## The second -e expression handles DOS-style file names with drive letters.
    169   sed -e 's/^[^:]*: / /' \
    170       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
    171 ## This next piece of magic avoids the "deleted header file" problem.
    172 ## The problem is that when a header file which appears in a .P file
    173 ## is deleted, the dependency causes make to die (because there is
    174 ## typically no way to rebuild the header).  We avoid this by adding
    175 ## dummy dependencies for each header file.  Too bad gcc doesn't do
    176 ## this for us directly.
    177   tr ' ' "$nl" < "$tmpdepfile" |
    178 ## Some versions of gcc put a space before the ':'.  On the theory
    179 ## that the space means something, we add a space to the output as
    180 ## well.  hp depmode also adds that space, but also prefixes the VPATH
    181 ## to the object.  Take care to not repeat it in the output.
    182 ## Some versions of the HPUX 10.20 sed can't process this invocation
    183 ## correctly.  Breaking it into two sed invocations is a workaround.
    184     sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
    185       | sed -e 's/$/ :/' >> "$depfile"
    186   rm -f "$tmpdepfile"
    187   ;;
    188 
    189 hp)
    190   # This case exists only to let depend.m4 do its work.  It works by
    191   # looking at the text of this script.  This case will never be run,
    192   # since it is checked for above.
    193   exit 1
    194   ;;
    195 
    196 sgi)
    197   if test "$libtool" = yes; then
    198     "$@" "-Wp,-MDupdate,$tmpdepfile"
    199   else
    200     "$@" -MDupdate "$tmpdepfile"
    201   fi
    202   stat=$?
    203   if test $stat -eq 0; then :
    204   else
    205     rm -f "$tmpdepfile"
    206     exit $stat
    207   fi
    208   rm -f "$depfile"
    209 
    210   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
    211     echo "$object : \\" > "$depfile"
    212 
    213     # Clip off the initial element (the dependent).  Don't try to be
    214     # clever and replace this with sed code, as IRIX sed won't handle
    215     # lines with more than a fixed number of characters (4096 in
    216     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
    217     # the IRIX cc adds comments like '#:fec' to the end of the
    218     # dependency line.
    219     tr ' ' "$nl" < "$tmpdepfile" \
    220     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
    221     tr "$nl" ' ' >> "$depfile"
    222     echo >> "$depfile"
    223 
    224     # The second pass generates a dummy entry for each header file.
    225     tr ' ' "$nl" < "$tmpdepfile" \
    226    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
    227    >> "$depfile"
    228   else
    229     # The sourcefile does not contain any dependencies, so just
    230     # store a dummy comment line, to avoid errors with the Makefile
    231     # "include basename.Plo" scheme.
    232     echo "#dummy" > "$depfile"
    233   fi
    234   rm -f "$tmpdepfile"
    235   ;;
    236 
    237 xlc)
    238   # This case exists only to let depend.m4 do its work.  It works by
    239   # looking at the text of this script.  This case will never be run,
    240   # since it is checked for above.
    241   exit 1
    242   ;;
    243 
    244 aix)
    245   # The C for AIX Compiler uses -M and outputs the dependencies
    246   # in a .u file.  In older versions, this file always lives in the
    247   # current directory.  Also, the AIX compiler puts '$object:' at the
    248   # start of each line; $object doesn't have directory information.
    249   # Version 6 uses the directory in both cases.
    250   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
    251   test "x$dir" = "x$object" && dir=
    252   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
    253   if test "$libtool" = yes; then
    254     tmpdepfile1=$dir$base.u
    255     tmpdepfile2=$base.u
    256     tmpdepfile3=$dir.libs/$base.u
    257     "$@" -Wc,-M
    258   else
    259     tmpdepfile1=$dir$base.u
    260     tmpdepfile2=$dir$base.u
    261     tmpdepfile3=$dir$base.u
    262     "$@" -M
    263   fi
    264   stat=$?
    265 
    266   if test $stat -eq 0; then :
    267   else
    268     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
    269     exit $stat
    270   fi
    271 
    272   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
    273   do
    274     test -f "$tmpdepfile" && break
    275   done
    276   if test -f "$tmpdepfile"; then
    277     # Each line is of the form 'foo.o: dependent.h'.
    278     # Do two passes, one to just change these to
    279     # '$object: dependent.h' and one to simply 'dependent.h:'.
    280     sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
    281     sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
    282   else
    283     # The sourcefile does not contain any dependencies, so just
    284     # store a dummy comment line, to avoid errors with the Makefile
    285     # "include basename.Plo" scheme.
    286     echo "#dummy" > "$depfile"
    287   fi
    288   rm -f "$tmpdepfile"
    289   ;;
    290 
    291 icc)
    292   # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
    293   # However on
    294   #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
    295   # ICC 7.0 will fill foo.d with something like
    296   #    foo.o: sub/foo.c
    297   #    foo.o: sub/foo.h
    298   # which is wrong.  We want
    299   #    sub/foo.o: sub/foo.c
    300   #    sub/foo.o: sub/foo.h
    301   #    sub/foo.c:
    302   #    sub/foo.h:
    303   # ICC 7.1 will output
    304   #    foo.o: sub/foo.c sub/foo.h
    305   # and will wrap long lines using '\':
    306   #    foo.o: sub/foo.c ... \
    307   #     sub/foo.h ... \
    308   #     ...
    309   # tcc 0.9.26 (FIXME still under development at the moment of writing)
    310   # will emit a similar output, but also prepend the continuation lines
    311   # with horizontal tabulation characters.
    312   "$@" -MD -MF "$tmpdepfile"
    313   stat=$?
    314   if test $stat -eq 0; then :
    315   else
    316     rm -f "$tmpdepfile"
    317     exit $stat
    318   fi
    319   rm -f "$depfile"
    320   # Each line is of the form 'foo.o: dependent.h',
    321   # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
    322   # Do two passes, one to just change these to
    323   # '$object: dependent.h' and one to simply 'dependent.h:'.
    324   sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
    325     < "$tmpdepfile" > "$depfile"
    326   sed '
    327     s/[ '"$tab"'][ '"$tab"']*/ /g
    328     s/^ *//
    329     s/ *\\*$//
    330     s/^[^:]*: *//
    331     /^$/d
    332     /:$/d
    333     s/$/ :/
    334   ' < "$tmpdepfile" >> "$depfile"
    335   rm -f "$tmpdepfile"
    336   ;;
    337 
    338 hp2)
    339   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
    340   # compilers, which have integrated preprocessors.  The correct option
    341   # to use with these is +Maked; it writes dependencies to a file named
    342   # 'foo.d', which lands next to the object file, wherever that
    343   # happens to be.
    344   # Much of this is similar to the tru64 case; see comments there.
    345   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
    346   test "x$dir" = "x$object" && dir=
    347   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
    348   if test "$libtool" = yes; then
    349     tmpdepfile1=$dir$base.d
    350     tmpdepfile2=$dir.libs/$base.d
    351     "$@" -Wc,+Maked
    352   else
    353     tmpdepfile1=$dir$base.d
    354     tmpdepfile2=$dir$base.d
    355     "$@" +Maked
    356   fi
    357   stat=$?
    358   if test $stat -eq 0; then :
    359   else
    360      rm -f "$tmpdepfile1" "$tmpdepfile2"
    361      exit $stat
    362   fi
    363 
    364   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
    365   do
    366     test -f "$tmpdepfile" && break
    367   done
    368   if test -f "$tmpdepfile"; then
    369     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
    370     # Add 'dependent.h:' lines.
    371     sed -ne '2,${
    372 	       s/^ *//
    373 	       s/ \\*$//
    374 	       s/$/:/
    375 	       p
    376 	     }' "$tmpdepfile" >> "$depfile"
    377   else
    378     echo "#dummy" > "$depfile"
    379   fi
    380   rm -f "$tmpdepfile" "$tmpdepfile2"
    381   ;;
    382 
    383 tru64)
    384    # The Tru64 compiler uses -MD to generate dependencies as a side
    385    # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
    386    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
    387    # dependencies in 'foo.d' instead, so we check for that too.
    388    # Subdirectories are respected.
    389    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
    390    test "x$dir" = "x$object" && dir=
    391    base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
    392 
    393    if test "$libtool" = yes; then
    394       # With Tru64 cc, shared objects can also be used to make a
    395       # static library.  This mechanism is used in libtool 1.4 series to
    396       # handle both shared and static libraries in a single compilation.
    397       # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
    398       #
    399       # With libtool 1.5 this exception was removed, and libtool now
    400       # generates 2 separate objects for the 2 libraries.  These two
    401       # compilations output dependencies in $dir.libs/$base.o.d and
    402       # in $dir$base.o.d.  We have to check for both files, because
    403       # one of the two compilations can be disabled.  We should prefer
    404       # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
    405       # automatically cleaned when .libs/ is deleted, while ignoring
    406       # the former would cause a distcleancheck panic.
    407       tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
    408       tmpdepfile2=$dir$base.o.d          # libtool 1.5
    409       tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
    410       tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
    411       "$@" -Wc,-MD
    412    else
    413       tmpdepfile1=$dir$base.o.d
    414       tmpdepfile2=$dir$base.d
    415       tmpdepfile3=$dir$base.d
    416       tmpdepfile4=$dir$base.d
    417       "$@" -MD
    418    fi
    419 
    420    stat=$?
    421    if test $stat -eq 0; then :
    422    else
    423       rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
    424       exit $stat
    425    fi
    426 
    427    for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
    428    do
    429      test -f "$tmpdepfile" && break
    430    done
    431    if test -f "$tmpdepfile"; then
    432       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
    433       sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
    434    else
    435       echo "#dummy" > "$depfile"
    436    fi
    437    rm -f "$tmpdepfile"
    438    ;;
    439 
    440 msvc7)
    441   if test "$libtool" = yes; then
    442     showIncludes=-Wc,-showIncludes
    443   else
    444     showIncludes=-showIncludes
    445   fi
    446   "$@" $showIncludes > "$tmpdepfile"
    447   stat=$?
    448   grep -v '^Note: including file: ' "$tmpdepfile"
    449   if test "$stat" = 0; then :
    450   else
    451     rm -f "$tmpdepfile"
    452     exit $stat
    453   fi
    454   rm -f "$depfile"
    455   echo "$object : \\" > "$depfile"
    456   # The first sed program below extracts the file names and escapes
    457   # backslashes for cygpath.  The second sed program outputs the file
    458   # name when reading, but also accumulates all include files in the
    459   # hold buffer in order to output them again at the end.  This only
    460   # works with sed implementations that can handle large buffers.
    461   sed < "$tmpdepfile" -n '
    462 /^Note: including file:  *\(.*\)/ {
    463   s//\1/
    464   s/\\/\\\\/g
    465   p
    466 }' | $cygpath_u | sort -u | sed -n '
    467 s/ /\\ /g
    468 s/\(.*\)/'"$tab"'\1 \\/p
    469 s/.\(.*\) \\/\1:/
    470 H
    471 $ {
    472   s/.*/'"$tab"'/
    473   G
    474   p
    475 }' >> "$depfile"
    476   rm -f "$tmpdepfile"
    477   ;;
    478 
    479 msvc7msys)
    480   # This case exists only to let depend.m4 do its work.  It works by
    481   # looking at the text of this script.  This case will never be run,
    482   # since it is checked for above.
    483   exit 1
    484   ;;
    485 
    486 #nosideeffect)
    487   # This comment above is used by automake to tell side-effect
    488   # dependency tracking mechanisms from slower ones.
    489 
    490 dashmstdout)
    491   # Important note: in order to support this mode, a compiler *must*
    492   # always write the preprocessed file to stdout, regardless of -o.
    493   "$@" || exit $?
    494 
    495   # Remove the call to Libtool.
    496   if test "$libtool" = yes; then
    497     while test "X$1" != 'X--mode=compile'; do
    498       shift
    499     done
    500     shift
    501   fi
    502 
    503   # Remove '-o $object'.
    504   IFS=" "
    505   for arg
    506   do
    507     case $arg in
    508     -o)
    509       shift
    510       ;;
    511     $object)
    512       shift
    513       ;;
    514     *)
    515       set fnord "$@" "$arg"
    516       shift # fnord
    517       shift # $arg
    518       ;;
    519     esac
    520   done
    521 
    522   test -z "$dashmflag" && dashmflag=-M
    523   # Require at least two characters before searching for ':'
    524   # in the target name.  This is to cope with DOS-style filenames:
    525   # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
    526   "$@" $dashmflag |
    527     sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
    528   rm -f "$depfile"
    529   cat < "$tmpdepfile" > "$depfile"
    530   tr ' ' "$nl" < "$tmpdepfile" | \
    531 ## Some versions of the HPUX 10.20 sed can't process this invocation
    532 ## correctly.  Breaking it into two sed invocations is a workaround.
    533     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
    534   rm -f "$tmpdepfile"
    535   ;;
    536 
    537 dashXmstdout)
    538   # This case only exists to satisfy depend.m4.  It is never actually
    539   # run, as this mode is specially recognized in the preamble.
    540   exit 1
    541   ;;
    542 
    543 makedepend)
    544   "$@" || exit $?
    545   # Remove any Libtool call
    546   if test "$libtool" = yes; then
    547     while test "X$1" != 'X--mode=compile'; do
    548       shift
    549     done
    550     shift
    551   fi
    552   # X makedepend
    553   shift
    554   cleared=no eat=no
    555   for arg
    556   do
    557     case $cleared in
    558     no)
    559       set ""; shift
    560       cleared=yes ;;
    561     esac
    562     if test $eat = yes; then
    563       eat=no
    564       continue
    565     fi
    566     case "$arg" in
    567     -D*|-I*)
    568       set fnord "$@" "$arg"; shift ;;
    569     # Strip any option that makedepend may not understand.  Remove
    570     # the object too, otherwise makedepend will parse it as a source file.
    571     -arch)
    572       eat=yes ;;
    573     -*|$object)
    574       ;;
    575     *)
    576       set fnord "$@" "$arg"; shift ;;
    577     esac
    578   done
    579   obj_suffix=`echo "$object" | sed 's/^.*\././'`
    580   touch "$tmpdepfile"
    581   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
    582   rm -f "$depfile"
    583   # makedepend may prepend the VPATH from the source file name to the object.
    584   # No need to regex-escape $object, excess matching of '.' is harmless.
    585   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
    586   sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
    587 ## Some versions of the HPUX 10.20 sed can't process this invocation
    588 ## correctly.  Breaking it into two sed invocations is a workaround.
    589     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
    590   rm -f "$tmpdepfile" "$tmpdepfile".bak
    591   ;;
    592 
    593 cpp)
    594   # Important note: in order to support this mode, a compiler *must*
    595   # always write the preprocessed file to stdout.
    596   "$@" || exit $?
    597 
    598   # Remove the call to Libtool.
    599   if test "$libtool" = yes; then
    600     while test "X$1" != 'X--mode=compile'; do
    601       shift
    602     done
    603     shift
    604   fi
    605 
    606   # Remove '-o $object'.
    607   IFS=" "
    608   for arg
    609   do
    610     case $arg in
    611     -o)
    612       shift
    613       ;;
    614     $object)
    615       shift
    616       ;;
    617     *)
    618       set fnord "$@" "$arg"
    619       shift # fnord
    620       shift # $arg
    621       ;;
    622     esac
    623   done
    624 
    625   "$@" -E |
    626     sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
    627        -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
    628     sed '$ s: \\$::' > "$tmpdepfile"
    629   rm -f "$depfile"
    630   echo "$object : \\" > "$depfile"
    631   cat < "$tmpdepfile" >> "$depfile"
    632   sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
    633   rm -f "$tmpdepfile"
    634   ;;
    635 
    636 msvisualcpp)
    637   # Important note: in order to support this mode, a compiler *must*
    638   # always write the preprocessed file to stdout.
    639   "$@" || exit $?
    640 
    641   # Remove the call to Libtool.
    642   if test "$libtool" = yes; then
    643     while test "X$1" != 'X--mode=compile'; do
    644       shift
    645     done
    646     shift
    647   fi
    648 
    649   IFS=" "
    650   for arg
    651   do
    652     case "$arg" in
    653     -o)
    654       shift
    655       ;;
    656     $object)
    657       shift
    658       ;;
    659     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
    660 	set fnord "$@"
    661 	shift
    662 	shift
    663 	;;
    664     *)
    665 	set fnord "$@" "$arg"
    666 	shift
    667 	shift
    668 	;;
    669     esac
    670   done
    671   "$@" -E 2>/dev/null |
    672   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
    673   rm -f "$depfile"
    674   echo "$object : \\" > "$depfile"
    675   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
    676   echo "$tab" >> "$depfile"
    677   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
    678   rm -f "$tmpdepfile"
    679   ;;
    680 
    681 msvcmsys)
    682   # This case exists only to let depend.m4 do its work.  It works by
    683   # looking at the text of this script.  This case will never be run,
    684   # since it is checked for above.
    685   exit 1
    686   ;;
    687 
    688 none)
    689   exec "$@"
    690   ;;
    691 
    692 *)
    693   echo "Unknown depmode $depmode" 1>&2
    694   exit 1
    695   ;;
    696 esac
    697 
    698 exit 0
    699 
    700 # Local Variables:
    701 # mode: shell-script
    702 # sh-indentation: 2
    703 # eval: (add-hook 'write-file-hooks 'time-stamp)
    704 # time-stamp-start: "scriptversion="
    705 # time-stamp-format: "%:y-%02m-%02d.%02H"
    706 # time-stamp-time-zone: "UTC"
    707 # time-stamp-end: "; # UTC"
    708 # End:
    709