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