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