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@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: