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