xref: /freebsd/contrib/sqlite3/depcomp (revision fcb560670601b2a4d87bb31d7531c8dcc37ee71b)
1#! /bin/sh
2# depcomp - compile a program generating dependencies as side-effects
3
4scriptversion=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
29case $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
36Usage: depcomp [--help] [--version] PROGRAM [ARGS]
37
38Run PROGRAMS ARGS to compile a file, generating dependencies
39as side-effects.
40
41Environment 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
50Report bugs to <bug-automake@gnu.org>.
51EOF
52    exit $?
53    ;;
54  -v | --v*)
55    echo "depcomp $scriptversion"
56    exit $?
57    ;;
58esac
59
60# A tabulation character.
61tab='	'
62# A newline character.
63nl='
64'
65
66if 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
69fi
70
71# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
72depfile=${depfile-`echo "$object" |
73  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
74tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
75
76rm -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.
82if test "$depmode" = hp; then
83  # HP compiler uses -M and no extra arg.
84  gccflag=-M
85  depmode=gcc
86fi
87
88if test "$depmode" = dashXmstdout; then
89   # This is just like dashmstdout with a different argument.
90   dashmflag=-xM
91   depmode=dashmstdout
92fi
93
94cygpath_u="cygpath -u -f -"
95if 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
101fi
102
103if 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
109fi
110
111if 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
115fi
116
117case "$depmode" in
118gcc3)
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
145gcc)
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
189hp)
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
196sgi)
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
237xlc)
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
244aix)
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
291icc)
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
338hp2)
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
383tru64)
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
440msvc7)
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 '
467s/ /\\ /g
468s/\(.*\)/'"$tab"'\1 \\/p
469s/.\(.*\) \\/\1:/
470H
471$ {
472  s/.*/'"$tab"'/
473  G
474  p
475}' >> "$depfile"
476  rm -f "$tmpdepfile"
477  ;;
478
479msvc7msys)
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
490dashmstdout)
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
537dashXmstdout)
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
543makedepend)
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
593cpp)
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
636msvisualcpp)
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
681msvcmsys)
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
688none)
689  exec "$@"
690  ;;
691
692*)
693  echo "Unknown depmode $depmode" 1>&2
694  exit 1
695  ;;
696esac
697
698exit 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:
709