source: rtems/depcomp @ 39aab06a

4.115
Last change on this file since 39aab06a was 39aab06a, checked in by Ralf Corsépius <ralf.corsepius@…>, on 05/18/12 at 05:11:47

Update from automake-1.11.5.

  • Property mode set to 100755
File size: 20.4 KB
RevLine 
[4b5348cc]1#! /bin/sh
2# depcomp - compile a program generating dependencies as side-effects
3
[39aab06a]4scriptversion=2012-03-27.16; # UTC
[4b5348cc]5
[055e668]6# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
[39aab06a]7# 2011, 2012 Free Software Foundation, Inc.
[4b5348cc]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  '')
[39aab06a]31     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
[4b5348cc]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.
[39aab06a]43  source      Source file read by 'PROGRAMS ARGS'.
44  object      Object file output by 'PROGRAMS ARGS'.
[4b5348cc]45  DEPDIR      directory where to store dependencies.
46  depfile     Dependency file to output.
[055e668]47  tmpdepfile  Temporary file to use when outputting dependencies.
[4b5348cc]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
[39aab06a]60# A tabulation character.
61tab='   '
62# A newline character.
63nl='
64'
65
[4b5348cc]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
[055e668]99   cygpath_u='sed s,\\\\,/,g'
[4b5348cc]100   depmode=msvisualcpp
101fi
102
[055e668]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
[39aab06a]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
[4b5348cc]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"
[39aab06a]171## This next piece of magic avoids the "deleted header file" problem.
[4b5348cc]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.
[39aab06a]177  tr ' ' "$nl" < "$tmpdepfile" |
178## Some versions of gcc put a space before the ':'.  On the theory
[4b5348cc]179## that the space means something, we add a space to the output as
[055e668]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.
[4b5348cc]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.
[055e668]184    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
185      | sed -e 's/$/ :/' >> "$depfile"
[4b5348cc]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;
[39aab06a]217    # the IRIX cc adds comments like '#:fec' to the end of the
[4b5348cc]218    # dependency line.
[39aab06a]219    tr ' ' "$nl" < "$tmpdepfile" \
[4b5348cc]220    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
[39aab06a]221    tr "$nl" ' ' >> "$depfile"
[4b5348cc]222    echo >> "$depfile"
223
224    # The second pass generates a dummy entry for each header file.
[39aab06a]225    tr ' ' "$nl" < "$tmpdepfile" \
[4b5348cc]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
[39aab06a]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
[4b5348cc]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
[39aab06a]247  # current directory.  Also, the AIX compiler puts '$object:' at the
[4b5348cc]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
[39aab06a]277    # Each line is of the form 'foo.o: dependent.h'.
[4b5348cc]278    # Do two passes, one to just change these to
[39aab06a]279    # '$object: dependent.h' and one to simply 'dependent.h:'.
[4b5348cc]280    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
[39aab06a]281    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
[4b5348cc]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)
[39aab06a]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
[4b5348cc]295  # ICC 7.0 will fill foo.d with something like
296  #    foo.o: sub/foo.c
297  #    foo.o: sub/foo.h
[39aab06a]298  # which is wrong.  We want
[4b5348cc]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
[39aab06a]305  # and will wrap long lines using '\':
[4b5348cc]306  #    foo.o: sub/foo.c ... \
307  #     sub/foo.h ... \
308  #     ...
[39aab06a]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.
[4b5348cc]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"
[39aab06a]320  # Each line is of the form 'foo.o: dependent.h',
321  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
[4b5348cc]322  # Do two passes, one to just change these to
[39aab06a]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"
[4b5348cc]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"
[39aab06a]370    # Add 'dependent.h:' lines.
[4b5348cc]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
[39aab06a]385   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
[4b5348cc]386   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
[39aab06a]387   # dependencies in 'foo.d' instead, so we check for that too.
[4b5348cc]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"
[39aab06a]433      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
[4b5348cc]434   else
435      echo "#dummy" > "$depfile"
436   fi
437   rm -f "$tmpdepfile"
438   ;;
439
[055e668]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
[39aab06a]468s/\(.*\)/'"$tab"'\1 \\/p
[055e668]469s/.\(.*\) \\/\1:/
470H
471$ {
[39aab06a]472  s/.*/'"$tab"'/
[055e668]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
[4b5348cc]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
[39aab06a]503  # Remove '-o $object'.
[4b5348cc]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
[39aab06a]523  # Require at least two characters before searching for ':'
[4b5348cc]524  # in the target name.  This is to cope with DOS-style filenames:
[39aab06a]525  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
[4b5348cc]526  "$@" $dashmflag |
[39aab06a]527    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
[4b5348cc]528  rm -f "$depfile"
529  cat < "$tmpdepfile" > "$depfile"
[39aab06a]530  tr ' ' "$nl" < "$tmpdepfile" | \
[4b5348cc]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"
[055e668]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"
[39aab06a]586  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
[4b5348cc]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
[39aab06a]606  # Remove '-o $object'.
[4b5348cc]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"
[39aab06a]675  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
676  echo "$tab" >> "$depfile"
[4b5348cc]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:
Note: See TracBrowser for help on using the repository browser.