source: automake/depcomp @ 1dcd9554

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 1dcd9554 was 59310bf, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

automake directory must copy files, use --copy

  • Property mode set to 100755
File size: 23.0 KB
RevLine 
[00cc023]1#! /bin/sh
2# depcomp - compile a program generating dependencies as side-effects
3
[59310bf]4scriptversion=2013-05-30.07; # UTC
[00cc023]5
[59310bf]6# Copyright (C) 1999-2014 Free Software Foundation, Inc.
[00cc023]7
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2, or (at your option)
11# any later version.
12
13# This program is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16# GNU General Public License for more details.
17
18# You should have received a copy of the GNU General Public License
19# along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21# As a special exception to the GNU General Public License, if you
22# distribute this file as part of a program that contains a
23# configuration script generated by Autoconf, you may include it under
24# the same distribution terms that you use for the rest of that program.
25
26# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
27
28case $1 in
29  '')
[59310bf]30    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
31    exit 1;
32    ;;
[00cc023]33  -h | --h*)
34    cat <<\EOF
35Usage: depcomp [--help] [--version] PROGRAM [ARGS]
36
37Run PROGRAMS ARGS to compile a file, generating dependencies
38as side-effects.
39
40Environment variables:
41  depmode     Dependency tracking mode.
[59310bf]42  source      Source file read by 'PROGRAMS ARGS'.
43  object      Object file output by 'PROGRAMS ARGS'.
[00cc023]44  DEPDIR      directory where to store dependencies.
45  depfile     Dependency file to output.
46  tmpdepfile  Temporary file to use when outputting dependencies.
47  libtool     Whether libtool is used (yes/no).
48
49Report bugs to <bug-automake@gnu.org>.
50EOF
51    exit $?
52    ;;
53  -v | --v*)
54    echo "depcomp $scriptversion"
55    exit $?
56    ;;
57esac
58
[59310bf]59# Get the directory component of the given path, and save it in the
60# global variables '$dir'.  Note that this directory component will
61# be either empty or ending with a '/' character.  This is deliberate.
62set_dir_from ()
63{
64  case $1 in
65    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
66      *) dir=;;
67  esac
68}
69
70# Get the suffix-stripped basename of the given path, and save it the
71# global variable '$base'.
72set_base_from ()
73{
74  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
75}
76
77# If no dependency file was actually created by the compiler invocation,
78# we still have to create a dummy depfile, to avoid errors with the
79# Makefile "include basename.Plo" scheme.
80make_dummy_depfile ()
81{
82  echo "#dummy" > "$depfile"
83}
84
85# Factor out some common post-processing of the generated depfile.
86# Requires the auxiliary global variable '$tmpdepfile' to be set.
87aix_post_process_depfile ()
88{
89  # If the compiler actually managed to produce a dependency file,
90  # post-process it.
91  if test -f "$tmpdepfile"; then
92    # Each line is of the form 'foo.o: dependency.h'.
93    # Do two passes, one to just change these to
94    #   $object: dependency.h
95    # and one to simply output
96    #   dependency.h:
97    # which is needed to avoid the deleted-header problem.
98    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
99      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
100    } > "$depfile"
101    rm -f "$tmpdepfile"
102  else
103    make_dummy_depfile
104  fi
105}
106
107# A tabulation character.
108tab='   '
109# A newline character.
110nl='
111'
112# Character ranges might be problematic outside the C locale.
113# These definitions help.
114upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
115lower=abcdefghijklmnopqrstuvwxyz
116digits=0123456789
117alpha=${upper}${lower}
118
[00cc023]119if test -z "$depmode" || test -z "$source" || test -z "$object"; then
120  echo "depcomp: Variables source, object and depmode must be set" 1>&2
121  exit 1
122fi
123
124# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
125depfile=${depfile-`echo "$object" |
126  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
127tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
128
129rm -f "$tmpdepfile"
130
[59310bf]131# Avoid interferences from the environment.
132gccflag= dashmflag=
133
[00cc023]134# Some modes work just like other modes, but use different flags.  We
135# parameterize here, but still list the modes in the big case below,
136# to make depend.m4 easier to write.  Note that we *cannot* use a case
137# here, because this file can only contain one case statement.
138if test "$depmode" = hp; then
139  # HP compiler uses -M and no extra arg.
140  gccflag=-M
141  depmode=gcc
142fi
143
144if test "$depmode" = dashXmstdout; then
[59310bf]145  # This is just like dashmstdout with a different argument.
146  dashmflag=-xM
147  depmode=dashmstdout
[00cc023]148fi
149
150cygpath_u="cygpath -u -f -"
151if test "$depmode" = msvcmsys; then
[59310bf]152  # This is just like msvisualcpp but w/o cygpath translation.
153  # Just convert the backslash-escaped backslashes to single forward
154  # slashes to satisfy depend.m4
155  cygpath_u='sed s,\\\\,/,g'
156  depmode=msvisualcpp
[00cc023]157fi
158
159if test "$depmode" = msvc7msys; then
[59310bf]160  # This is just like msvc7 but w/o cygpath translation.
161  # Just convert the backslash-escaped backslashes to single forward
162  # slashes to satisfy depend.m4
163  cygpath_u='sed s,\\\\,/,g'
164  depmode=msvc7
165fi
166
167if test "$depmode" = xlc; then
168  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
169  gccflag=-qmakedep=gcc,-MF
170  depmode=gcc
[00cc023]171fi
172
173case "$depmode" in
174gcc3)
175## gcc 3 implements dependency tracking that does exactly what
176## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
177## it if -MD -MP comes after the -MF stuff.  Hmm.
178## Unfortunately, FreeBSD c89 acceptance of flags depends upon
179## the command line argument order; so add the flags where they
180## appear in depend2.am.  Note that the slowdown incurred here
181## affects only configure: in makefiles, %FASTDEP% shortcuts this.
182  for arg
183  do
184    case $arg in
185    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
186    *)  set fnord "$@" "$arg" ;;
187    esac
188    shift # fnord
189    shift # $arg
190  done
191  "$@"
192  stat=$?
[59310bf]193  if test $stat -ne 0; then
[00cc023]194    rm -f "$tmpdepfile"
195    exit $stat
196  fi
197  mv "$tmpdepfile" "$depfile"
198  ;;
199
200gcc)
[59310bf]201## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
202## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
203## (see the conditional assignment to $gccflag above).
[00cc023]204## There are various ways to get dependency output from gcc.  Here's
205## why we pick this rather obscure method:
206## - Don't want to use -MD because we'd like the dependencies to end
207##   up in a subdir.  Having to rename by hand is ugly.
208##   (We might end up doing this anyway to support other compilers.)
209## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
[59310bf]210##   -MM, not -M (despite what the docs say).  Also, it might not be
211##   supported by the other compilers which use the 'gcc' depmode.
[00cc023]212## - Using -M directly means running the compiler twice (even worse
213##   than renaming).
214  if test -z "$gccflag"; then
215    gccflag=-MD,
216  fi
217  "$@" -Wp,"$gccflag$tmpdepfile"
218  stat=$?
[59310bf]219  if test $stat -ne 0; then
[00cc023]220    rm -f "$tmpdepfile"
221    exit $stat
222  fi
223  rm -f "$depfile"
224  echo "$object : \\" > "$depfile"
[59310bf]225  # The second -e expression handles DOS-style file names with drive
226  # letters.
[00cc023]227  sed -e 's/^[^:]*: / /' \
228      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
[59310bf]229## This next piece of magic avoids the "deleted header file" problem.
[00cc023]230## The problem is that when a header file which appears in a .P file
231## is deleted, the dependency causes make to die (because there is
232## typically no way to rebuild the header).  We avoid this by adding
233## dummy dependencies for each header file.  Too bad gcc doesn't do
234## this for us directly.
[59310bf]235## Some versions of gcc put a space before the ':'.  On the theory
[00cc023]236## that the space means something, we add a space to the output as
237## well.  hp depmode also adds that space, but also prefixes the VPATH
238## to the object.  Take care to not repeat it in the output.
239## Some versions of the HPUX 10.20 sed can't process this invocation
240## correctly.  Breaking it into two sed invocations is a workaround.
[59310bf]241  tr ' ' "$nl" < "$tmpdepfile" \
242    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
243    | sed -e 's/$/ :/' >> "$depfile"
[00cc023]244  rm -f "$tmpdepfile"
245  ;;
246
247hp)
248  # This case exists only to let depend.m4 do its work.  It works by
249  # looking at the text of this script.  This case will never be run,
250  # since it is checked for above.
251  exit 1
252  ;;
253
254sgi)
255  if test "$libtool" = yes; then
256    "$@" "-Wp,-MDupdate,$tmpdepfile"
257  else
258    "$@" -MDupdate "$tmpdepfile"
259  fi
260  stat=$?
[59310bf]261  if test $stat -ne 0; then
[00cc023]262    rm -f "$tmpdepfile"
263    exit $stat
264  fi
265  rm -f "$depfile"
266
267  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
268    echo "$object : \\" > "$depfile"
269    # Clip off the initial element (the dependent).  Don't try to be
270    # clever and replace this with sed code, as IRIX sed won't handle
271    # lines with more than a fixed number of characters (4096 in
272    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
[59310bf]273    # the IRIX cc adds comments like '#:fec' to the end of the
[00cc023]274    # dependency line.
[59310bf]275    tr ' ' "$nl" < "$tmpdepfile" \
276      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277      | tr "$nl" ' ' >> "$depfile"
[00cc023]278    echo >> "$depfile"
279    # The second pass generates a dummy entry for each header file.
[59310bf]280    tr ' ' "$nl" < "$tmpdepfile" \
281      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282      >> "$depfile"
[00cc023]283  else
[59310bf]284    make_dummy_depfile
[00cc023]285  fi
286  rm -f "$tmpdepfile"
287  ;;
288
[59310bf]289xlc)
290  # This case exists only to let depend.m4 do its work.  It works by
291  # looking at the text of this script.  This case will never be run,
292  # since it is checked for above.
293  exit 1
294  ;;
295
[00cc023]296aix)
297  # The C for AIX Compiler uses -M and outputs the dependencies
298  # in a .u file.  In older versions, this file always lives in the
[59310bf]299  # current directory.  Also, the AIX compiler puts '$object:' at the
[00cc023]300  # start of each line; $object doesn't have directory information.
301  # Version 6 uses the directory in both cases.
[59310bf]302  set_dir_from "$object"
303  set_base_from "$object"
[00cc023]304  if test "$libtool" = yes; then
305    tmpdepfile1=$dir$base.u
306    tmpdepfile2=$base.u
307    tmpdepfile3=$dir.libs/$base.u
308    "$@" -Wc,-M
309  else
310    tmpdepfile1=$dir$base.u
311    tmpdepfile2=$dir$base.u
312    tmpdepfile3=$dir$base.u
313    "$@" -M
314  fi
315  stat=$?
[59310bf]316  if test $stat -ne 0; then
[00cc023]317    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
318    exit $stat
319  fi
320
321  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
322  do
323    test -f "$tmpdepfile" && break
324  done
[59310bf]325  aix_post_process_depfile
326  ;;
327
328tcc)
329  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
330  # FIXME: That version still under development at the moment of writing.
331  #        Make that this statement remains true also for stable, released
332  #        versions.
333  # It will wrap lines (doesn't matter whether long or short) with a
334  # trailing '\', as in:
335  #
336  #   foo.o : \
337  #    foo.c \
338  #    foo.h \
339  #
340  # It will put a trailing '\' even on the last line, and will use leading
341  # spaces rather than leading tabs (at least since its commit 0394caf7
342  # "Emit spaces for -MD").
343  "$@" -MD -MF "$tmpdepfile"
344  stat=$?
345  if test $stat -ne 0; then
346    rm -f "$tmpdepfile"
347    exit $stat
[00cc023]348  fi
[59310bf]349  rm -f "$depfile"
350  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
351  # We have to change lines of the first kind to '$object: \'.
352  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
353  # And for each line of the second kind, we have to emit a 'dep.h:'
354  # dummy dependency, to avoid the deleted-header problem.
355  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
[00cc023]356  rm -f "$tmpdepfile"
357  ;;
358
[59310bf]359## The order of this option in the case statement is important, since the
360## shell code in configure will try each of these formats in the order
361## listed in this file.  A plain '-MD' option would be understood by many
362## compilers, so we must ensure this comes after the gcc and icc options.
363pgcc)
364  # Portland's C compiler understands '-MD'.
365  # Will always output deps to 'file.d' where file is the root name of the
366  # source file under compilation, even if file resides in a subdirectory.
367  # The object file name does not affect the name of the '.d' file.
368  # pgcc 10.2 will output
[00cc023]369  #    foo.o: sub/foo.c sub/foo.h
[59310bf]370  # and will wrap long lines using '\' :
[00cc023]371  #    foo.o: sub/foo.c ... \
372  #     sub/foo.h ... \
373  #     ...
[59310bf]374  set_dir_from "$object"
375  # Use the source, not the object, to determine the base name, since
376  # that's sadly what pgcc will do too.
377  set_base_from "$source"
378  tmpdepfile=$base.d
379
380  # For projects that build the same source file twice into different object
381  # files, the pgcc approach of using the *source* file root name can cause
382  # problems in parallel builds.  Use a locking strategy to avoid stomping on
383  # the same $tmpdepfile.
384  lockdir=$base.d-lock
385  trap "
386    echo '$0: caught signal, cleaning up...' >&2
387    rmdir '$lockdir'
388    exit 1
389  " 1 2 13 15
390  numtries=100
391  i=$numtries
392  while test $i -gt 0; do
393    # mkdir is a portable test-and-set.
394    if mkdir "$lockdir" 2>/dev/null; then
395      # This process acquired the lock.
396      "$@" -MD
397      stat=$?
398      # Release the lock.
399      rmdir "$lockdir"
400      break
401    else
402      # If the lock is being held by a different process, wait
403      # until the winning process is done or we timeout.
404      while test -d "$lockdir" && test $i -gt 0; do
405        sleep 1
406        i=`expr $i - 1`
407      done
408    fi
409    i=`expr $i - 1`
410  done
411  trap - 1 2 13 15
412  if test $i -le 0; then
413    echo "$0: failed to acquire lock after $numtries attempts" >&2
414    echo "$0: check lockdir '$lockdir'" >&2
415    exit 1
416  fi
[00cc023]417
[59310bf]418  if test $stat -ne 0; then
[00cc023]419    rm -f "$tmpdepfile"
420    exit $stat
421  fi
422  rm -f "$depfile"
423  # Each line is of the form `foo.o: dependent.h',
424  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
425  # Do two passes, one to just change these to
426  # `$object: dependent.h' and one to simply `dependent.h:'.
427  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
428  # Some versions of the HPUX 10.20 sed can't process this invocation
429  # correctly.  Breaking it into two sed invocations is a workaround.
[59310bf]430  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431    | sed -e 's/$/ :/' >> "$depfile"
[00cc023]432  rm -f "$tmpdepfile"
433  ;;
434
435hp2)
436  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
437  # compilers, which have integrated preprocessors.  The correct option
438  # to use with these is +Maked; it writes dependencies to a file named
439  # 'foo.d', which lands next to the object file, wherever that
440  # happens to be.
441  # Much of this is similar to the tru64 case; see comments there.
[59310bf]442  set_dir_from  "$object"
443  set_base_from "$object"
[00cc023]444  if test "$libtool" = yes; then
445    tmpdepfile1=$dir$base.d
446    tmpdepfile2=$dir.libs/$base.d
447    "$@" -Wc,+Maked
448  else
449    tmpdepfile1=$dir$base.d
450    tmpdepfile2=$dir$base.d
451    "$@" +Maked
452  fi
453  stat=$?
[59310bf]454  if test $stat -ne 0; then
[00cc023]455     rm -f "$tmpdepfile1" "$tmpdepfile2"
456     exit $stat
457  fi
458
459  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
460  do
461    test -f "$tmpdepfile" && break
462  done
463  if test -f "$tmpdepfile"; then
[59310bf]464    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
465    # Add 'dependent.h:' lines.
[00cc023]466    sed -ne '2,${
[59310bf]467               s/^ *//
468               s/ \\*$//
469               s/$/:/
470               p
471             }' "$tmpdepfile" >> "$depfile"
[00cc023]472  else
[59310bf]473    make_dummy_depfile
[00cc023]474  fi
475  rm -f "$tmpdepfile" "$tmpdepfile2"
476  ;;
477
478tru64)
[59310bf]479  # The Tru64 compiler uses -MD to generate dependencies as a side
480  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
481  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
482  # dependencies in 'foo.d' instead, so we check for that too.
483  # Subdirectories are respected.
484  set_dir_from  "$object"
485  set_base_from "$object"
486
487  if test "$libtool" = yes; then
488    # Libtool generates 2 separate objects for the 2 libraries.  These
489    # two compilations output dependencies in $dir.libs/$base.o.d and
490    # in $dir$base.o.d.  We have to check for both files, because
491    # one of the two compilations can be disabled.  We should prefer
492    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
493    # automatically cleaned when .libs/ is deleted, while ignoring
494    # the former would cause a distcleancheck panic.
495    tmpdepfile1=$dir$base.o.d          # libtool 1.5
496    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
497    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
498    "$@" -Wc,-MD
499  else
500    tmpdepfile1=$dir$base.d
501    tmpdepfile2=$dir$base.d
502    tmpdepfile3=$dir$base.d
503    "$@" -MD
504  fi
505
506  stat=$?
507  if test $stat -ne 0; then
508    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
509    exit $stat
510  fi
511
512  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
513  do
514    test -f "$tmpdepfile" && break
515  done
516  # Same post-processing that is required for AIX mode.
517  aix_post_process_depfile
518  ;;
[00cc023]519
520msvc7)
521  if test "$libtool" = yes; then
522    showIncludes=-Wc,-showIncludes
523  else
524    showIncludes=-showIncludes
525  fi
526  "$@" $showIncludes > "$tmpdepfile"
527  stat=$?
528  grep -v '^Note: including file: ' "$tmpdepfile"
[59310bf]529  if test $stat -ne 0; then
[00cc023]530    rm -f "$tmpdepfile"
531    exit $stat
532  fi
533  rm -f "$depfile"
534  echo "$object : \\" > "$depfile"
535  # The first sed program below extracts the file names and escapes
536  # backslashes for cygpath.  The second sed program outputs the file
537  # name when reading, but also accumulates all include files in the
538  # hold buffer in order to output them again at the end.  This only
539  # works with sed implementations that can handle large buffers.
540  sed < "$tmpdepfile" -n '
541/^Note: including file:  *\(.*\)/ {
542  s//\1/
543  s/\\/\\\\/g
544  p
545}' | $cygpath_u | sort -u | sed -n '
546s/ /\\ /g
[59310bf]547s/\(.*\)/'"$tab"'\1 \\/p
[00cc023]548s/.\(.*\) \\/\1:/
549H
550$ {
[59310bf]551  s/.*/'"$tab"'/
[00cc023]552  G
553  p
554}' >> "$depfile"
[59310bf]555  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
[00cc023]556  rm -f "$tmpdepfile"
557  ;;
558
559msvc7msys)
560  # This case exists only to let depend.m4 do its work.  It works by
561  # looking at the text of this script.  This case will never be run,
562  # since it is checked for above.
563  exit 1
564  ;;
565
566#nosideeffect)
567  # This comment above is used by automake to tell side-effect
568  # dependency tracking mechanisms from slower ones.
569
570dashmstdout)
571  # Important note: in order to support this mode, a compiler *must*
572  # always write the preprocessed file to stdout, regardless of -o.
573  "$@" || exit $?
574
575  # Remove the call to Libtool.
576  if test "$libtool" = yes; then
577    while test "X$1" != 'X--mode=compile'; do
578      shift
579    done
580    shift
581  fi
582
[59310bf]583  # Remove '-o $object'.
[00cc023]584  IFS=" "
585  for arg
586  do
587    case $arg in
588    -o)
589      shift
590      ;;
591    $object)
592      shift
593      ;;
594    *)
595      set fnord "$@" "$arg"
596      shift # fnord
597      shift # $arg
598      ;;
599    esac
600  done
601
602  test -z "$dashmflag" && dashmflag=-M
[59310bf]603  # Require at least two characters before searching for ':'
[00cc023]604  # in the target name.  This is to cope with DOS-style filenames:
[59310bf]605  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
[00cc023]606  "$@" $dashmflag |
[59310bf]607    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
[00cc023]608  rm -f "$depfile"
609  cat < "$tmpdepfile" > "$depfile"
[59310bf]610  # Some versions of the HPUX 10.20 sed can't process this sed invocation
611  # correctly.  Breaking it into two sed invocations is a workaround.
612  tr ' ' "$nl" < "$tmpdepfile" \
613    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
614    | sed -e 's/$/ :/' >> "$depfile"
[00cc023]615  rm -f "$tmpdepfile"
616  ;;
617
618dashXmstdout)
619  # This case only exists to satisfy depend.m4.  It is never actually
620  # run, as this mode is specially recognized in the preamble.
621  exit 1
622  ;;
623
624makedepend)
625  "$@" || exit $?
626  # Remove any Libtool call
627  if test "$libtool" = yes; then
628    while test "X$1" != 'X--mode=compile'; do
629      shift
630    done
631    shift
632  fi
633  # X makedepend
634  shift
635  cleared=no eat=no
636  for arg
637  do
638    case $cleared in
639    no)
640      set ""; shift
641      cleared=yes ;;
642    esac
643    if test $eat = yes; then
644      eat=no
645      continue
646    fi
647    case "$arg" in
648    -D*|-I*)
649      set fnord "$@" "$arg"; shift ;;
650    # Strip any option that makedepend may not understand.  Remove
651    # the object too, otherwise makedepend will parse it as a source file.
652    -arch)
653      eat=yes ;;
654    -*|$object)
655      ;;
656    *)
657      set fnord "$@" "$arg"; shift ;;
658    esac
659  done
660  obj_suffix=`echo "$object" | sed 's/^.*\././'`
661  touch "$tmpdepfile"
662  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
663  rm -f "$depfile"
664  # makedepend may prepend the VPATH from the source file name to the object.
665  # No need to regex-escape $object, excess matching of '.' is harmless.
666  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
[59310bf]667  # Some versions of the HPUX 10.20 sed can't process the last invocation
668  # correctly.  Breaking it into two sed invocations is a workaround.
669  sed '1,2d' "$tmpdepfile" \
670    | tr ' ' "$nl" \
671    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
672    | sed -e 's/$/ :/' >> "$depfile"
[00cc023]673  rm -f "$tmpdepfile" "$tmpdepfile".bak
674  ;;
675
676cpp)
677  # Important note: in order to support this mode, a compiler *must*
678  # always write the preprocessed file to stdout.
679  "$@" || exit $?
680
681  # Remove the call to Libtool.
682  if test "$libtool" = yes; then
683    while test "X$1" != 'X--mode=compile'; do
684      shift
685    done
686    shift
687  fi
688
[59310bf]689  # Remove '-o $object'.
[00cc023]690  IFS=" "
691  for arg
692  do
693    case $arg in
694    -o)
695      shift
696      ;;
697    $object)
698      shift
699      ;;
700    *)
701      set fnord "$@" "$arg"
702      shift # fnord
703      shift # $arg
704      ;;
705    esac
706  done
707
[59310bf]708  "$@" -E \
709    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
710             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
711    | sed '$ s: \\$::' > "$tmpdepfile"
[00cc023]712  rm -f "$depfile"
713  echo "$object : \\" > "$depfile"
714  cat < "$tmpdepfile" >> "$depfile"
715  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
716  rm -f "$tmpdepfile"
717  ;;
718
719msvisualcpp)
720  # Important note: in order to support this mode, a compiler *must*
721  # always write the preprocessed file to stdout.
722  "$@" || exit $?
723
724  # Remove the call to Libtool.
725  if test "$libtool" = yes; then
726    while test "X$1" != 'X--mode=compile'; do
727      shift
728    done
729    shift
730  fi
731
732  IFS=" "
733  for arg
734  do
735    case "$arg" in
736    -o)
737      shift
738      ;;
739    $object)
740      shift
741      ;;
742    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
[59310bf]743        set fnord "$@"
744        shift
745        shift
746        ;;
[00cc023]747    *)
[59310bf]748        set fnord "$@" "$arg"
749        shift
750        shift
751        ;;
[00cc023]752    esac
753  done
754  "$@" -E 2>/dev/null |
755  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
756  rm -f "$depfile"
757  echo "$object : \\" > "$depfile"
[59310bf]758  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
759  echo "$tab" >> "$depfile"
[00cc023]760  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
761  rm -f "$tmpdepfile"
762  ;;
763
764msvcmsys)
765  # This case exists only to let depend.m4 do its work.  It works by
766  # looking at the text of this script.  This case will never be run,
767  # since it is checked for above.
768  exit 1
769  ;;
770
771none)
772  exec "$@"
773  ;;
774
775*)
776  echo "Unknown depmode $depmode" 1>&2
777  exit 1
778  ;;
779esac
780
781exit 0
782
783# Local Variables:
784# mode: shell-script
785# sh-indentation: 2
786# eval: (add-hook 'write-file-hooks 'time-stamp)
787# time-stamp-start: "scriptversion="
788# time-stamp-format: "%:y-%02m-%02d.%02H"
789# time-stamp-time-zone: "UTC"
790# time-stamp-end: "; # UTC"
791# End:
Note: See TracBrowser for help on using the repository browser.