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