~ubuntu-branches/ubuntu/wily/lxpanel/wily-proposed

« back to all changes in this revision

Viewing changes to depcomp

  • Committer: Package Import Robot
  • Author(s): Julien Lavergne
  • Date: 2013-08-29 01:07:11 UTC
  • mfrom: (1.1.16)
  • Revision ID: package-import@ubuntu.com-20130829010711-w37y68x41f2q727x
Tags: 0.6.0-0ubuntu1
* New upstream release.
* debian/lxpanel.docs:
 - Remove TODO, since it's not in the sources anymore.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#! /bin/sh
2
2
# depcomp - compile a program generating dependencies as side-effects
3
3
 
4
 
scriptversion=2012-07-12.20; # UTC
 
4
scriptversion=2013-05-30.07; # UTC
5
5
 
6
 
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
 
6
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
7
7
 
8
8
# This program is free software; you can redistribute it and/or modify
9
9
# it under the terms of the GNU General Public License as published by
27
27
 
28
28
case $1 in
29
29
  '')
30
 
     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
31
 
     exit 1;
32
 
     ;;
 
30
    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
 
31
    exit 1;
 
32
    ;;
33
33
  -h | --h*)
34
34
    cat <<\EOF
35
35
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
56
56
    ;;
57
57
esac
58
58
 
 
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.
 
62
set_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'.
 
72
set_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.
 
80
make_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.
 
87
aix_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
 
59
107
# A tabulation character.
60
108
tab='   '
61
109
# A newline character.
62
110
nl='
63
111
'
 
112
# Character ranges might be problematic outside the C locale.
 
113
# These definitions help.
 
114
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
 
115
lower=abcdefghijklmnopqrstuvwxyz
 
116
digits=0123456789
 
117
alpha=${upper}${lower}
64
118
 
65
119
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
66
120
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
88
142
fi
89
143
 
90
144
if test "$depmode" = dashXmstdout; then
91
 
   # This is just like dashmstdout with a different argument.
92
 
   dashmflag=-xM
93
 
   depmode=dashmstdout
 
145
  # This is just like dashmstdout with a different argument.
 
146
  dashmflag=-xM
 
147
  depmode=dashmstdout
94
148
fi
95
149
 
96
150
cygpath_u="cygpath -u -f -"
97
151
if test "$depmode" = msvcmsys; then
98
 
   # This is just like msvisualcpp but w/o cygpath translation.
99
 
   # Just convert the backslash-escaped backslashes to single forward
100
 
   # slashes to satisfy depend.m4
101
 
   cygpath_u='sed s,\\\\,/,g'
102
 
   depmode=msvisualcpp
 
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
103
157
fi
104
158
 
105
159
if test "$depmode" = msvc7msys; then
106
 
   # This is just like msvc7 but w/o cygpath translation.
107
 
   # Just convert the backslash-escaped backslashes to single forward
108
 
   # slashes to satisfy depend.m4
109
 
   cygpath_u='sed s,\\\\,/,g'
110
 
   depmode=msvc7
 
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
111
165
fi
112
166
 
113
167
if test "$depmode" = xlc; then
114
 
   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
115
 
   gccflag=-qmakedep=gcc,-MF
116
 
   depmode=gcc
 
168
  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
 
169
  gccflag=-qmakedep=gcc,-MF
 
170
  depmode=gcc
117
171
fi
118
172
 
119
173
case "$depmode" in
136
190
  done
137
191
  "$@"
138
192
  stat=$?
139
 
  if test $stat -eq 0; then :
140
 
  else
 
193
  if test $stat -ne 0; then
141
194
    rm -f "$tmpdepfile"
142
195
    exit $stat
143
196
  fi
163
216
  fi
164
217
  "$@" -Wp,"$gccflag$tmpdepfile"
165
218
  stat=$?
166
 
  if test $stat -eq 0; then :
167
 
  else
 
219
  if test $stat -ne 0; then
168
220
    rm -f "$tmpdepfile"
169
221
    exit $stat
170
222
  fi
171
223
  rm -f "$depfile"
172
224
  echo "$object : \\" > "$depfile"
173
 
  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
174
 
## The second -e expression handles DOS-style file names with drive letters.
 
225
  # The second -e expression handles DOS-style file names with drive
 
226
  # letters.
175
227
  sed -e 's/^[^:]*: / /' \
176
228
      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
177
229
## This next piece of magic avoids the "deleted header file" problem.
180
232
## typically no way to rebuild the header).  We avoid this by adding
181
233
## dummy dependencies for each header file.  Too bad gcc doesn't do
182
234
## this for us directly.
183
 
  tr ' ' "$nl" < "$tmpdepfile" |
184
235
## Some versions of gcc put a space before the ':'.  On the theory
185
236
## that the space means something, we add a space to the output as
186
237
## well.  hp depmode also adds that space, but also prefixes the VPATH
187
238
## to the object.  Take care to not repeat it in the output.
188
239
## Some versions of the HPUX 10.20 sed can't process this invocation
189
240
## correctly.  Breaking it into two sed invocations is a workaround.
190
 
    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
191
 
      | sed -e 's/$/ :/' >> "$depfile"
 
241
  tr ' ' "$nl" < "$tmpdepfile" \
 
242
    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
 
243
    | sed -e 's/$/ :/' >> "$depfile"
192
244
  rm -f "$tmpdepfile"
193
245
  ;;
194
246
 
206
258
    "$@" -MDupdate "$tmpdepfile"
207
259
  fi
208
260
  stat=$?
209
 
  if test $stat -eq 0; then :
210
 
  else
 
261
  if test $stat -ne 0; then
211
262
    rm -f "$tmpdepfile"
212
263
    exit $stat
213
264
  fi
215
266
 
216
267
  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
217
268
    echo "$object : \\" > "$depfile"
218
 
 
219
269
    # Clip off the initial element (the dependent).  Don't try to be
220
270
    # clever and replace this with sed code, as IRIX sed won't handle
221
271
    # lines with more than a fixed number of characters (4096 in
223
273
    # the IRIX cc adds comments like '#:fec' to the end of the
224
274
    # dependency line.
225
275
    tr ' ' "$nl" < "$tmpdepfile" \
226
 
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
227
 
    tr "$nl" ' ' >> "$depfile"
 
276
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
 
277
      | tr "$nl" ' ' >> "$depfile"
228
278
    echo >> "$depfile"
229
 
 
230
279
    # The second pass generates a dummy entry for each header file.
231
280
    tr ' ' "$nl" < "$tmpdepfile" \
232
 
   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
233
 
   >> "$depfile"
 
281
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
 
282
      >> "$depfile"
234
283
  else
235
 
    # The sourcefile does not contain any dependencies, so just
236
 
    # store a dummy comment line, to avoid errors with the Makefile
237
 
    # "include basename.Plo" scheme.
238
 
    echo "#dummy" > "$depfile"
 
284
    make_dummy_depfile
239
285
  fi
240
286
  rm -f "$tmpdepfile"
241
287
  ;;
253
299
  # current directory.  Also, the AIX compiler puts '$object:' at the
254
300
  # start of each line; $object doesn't have directory information.
255
301
  # Version 6 uses the directory in both cases.
256
 
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
257
 
  test "x$dir" = "x$object" && dir=
258
 
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
302
  set_dir_from "$object"
 
303
  set_base_from "$object"
259
304
  if test "$libtool" = yes; then
260
305
    tmpdepfile1=$dir$base.u
261
306
    tmpdepfile2=$base.u
268
313
    "$@" -M
269
314
  fi
270
315
  stat=$?
271
 
 
272
 
  if test $stat -eq 0; then :
273
 
  else
 
316
  if test $stat -ne 0; then
274
317
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
275
318
    exit $stat
276
319
  fi
279
322
  do
280
323
    test -f "$tmpdepfile" && break
281
324
  done
282
 
  if test -f "$tmpdepfile"; then
283
 
    # Each line is of the form 'foo.o: dependent.h'.
284
 
    # Do two passes, one to just change these to
285
 
    # '$object: dependent.h' and one to simply 'dependent.h:'.
286
 
    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
287
 
    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
288
 
  else
289
 
    # The sourcefile does not contain any dependencies, so just
290
 
    # store a dummy comment line, to avoid errors with the Makefile
291
 
    # "include basename.Plo" scheme.
292
 
    echo "#dummy" > "$depfile"
293
 
  fi
294
 
  rm -f "$tmpdepfile"
 
325
  aix_post_process_depfile
295
326
  ;;
296
327
 
297
 
icc)
298
 
  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
299
 
  # However on
300
 
  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
301
 
  # ICC 7.0 will fill foo.d with something like
302
 
  #    foo.o: sub/foo.c
303
 
  #    foo.o: sub/foo.h
304
 
  # which is wrong.  We want
305
 
  #    sub/foo.o: sub/foo.c
306
 
  #    sub/foo.o: sub/foo.h
307
 
  #    sub/foo.c:
308
 
  #    sub/foo.h:
309
 
  # ICC 7.1 will output
310
 
  #    foo.o: sub/foo.c sub/foo.h
311
 
  # and will wrap long lines using '\':
312
 
  #    foo.o: sub/foo.c ... \
313
 
  #     sub/foo.h ... \
314
 
  #     ...
315
 
  # tcc 0.9.26 (FIXME still under development at the moment of writing)
316
 
  # will emit a similar output, but also prepend the continuation lines
317
 
  # with horizontal tabulation characters.
 
328
tcc)
 
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").
318
343
  "$@" -MD -MF "$tmpdepfile"
319
344
  stat=$?
320
 
  if test $stat -eq 0; then :
321
 
  else
 
345
  if test $stat -ne 0; then
322
346
    rm -f "$tmpdepfile"
323
347
    exit $stat
324
348
  fi
325
349
  rm -f "$depfile"
326
 
  # Each line is of the form 'foo.o: dependent.h',
327
 
  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
328
 
  # Do two passes, one to just change these to
329
 
  # '$object: dependent.h' and one to simply 'dependent.h:'.
330
 
  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
331
 
    < "$tmpdepfile" > "$depfile"
332
 
  sed '
333
 
    s/[ '"$tab"'][ '"$tab"']*/ /g
334
 
    s/^ *//
335
 
    s/ *\\*$//
336
 
    s/^[^:]*: *//
337
 
    /^$/d
338
 
    /:$/d
339
 
    s/$/ :/
340
 
  ' < "$tmpdepfile" >> "$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"
341
356
  rm -f "$tmpdepfile"
342
357
  ;;
343
358
 
356
371
  #    foo.o: sub/foo.c ... \
357
372
  #     sub/foo.h ... \
358
373
  #     ...
359
 
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
360
 
  test "x$dir" = "x$object" && dir=
 
374
  set_dir_from "$object"
361
375
  # Use the source, not the object, to determine the base name, since
362
376
  # that's sadly what pgcc will do too.
363
 
  base=`echo "$source" | sed -e 's|^.*/||' -e 's/\.[-_a-zA-Z0-9]*$//'`
364
 
  tmpdepfile="$base.d"
 
377
  set_base_from "$source"
 
378
  tmpdepfile=$base.d
365
379
 
366
380
  # For projects that build the same source file twice into different object
367
381
  # files, the pgcc approach of using the *source* file root name can cause
368
382
  # problems in parallel builds.  Use a locking strategy to avoid stomping on
369
383
  # the same $tmpdepfile.
370
 
  lockdir="$base.d-lock"
371
 
  trap "echo '$0: caught signal, cleaning up...' >&2; rm -rf $lockdir" 1 2 13 15
 
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
372
390
  numtries=100
373
391
  i=$numtries
374
 
  while test $i -gt 0 ; do
 
392
  while test $i -gt 0; do
375
393
    # mkdir is a portable test-and-set.
376
 
    if mkdir $lockdir 2>/dev/null; then
 
394
    if mkdir "$lockdir" 2>/dev/null; then
377
395
      # This process acquired the lock.
378
396
      "$@" -MD
379
397
      stat=$?
380
398
      # Release the lock.
381
 
      rm -rf $lockdir
 
399
      rmdir "$lockdir"
382
400
      break
383
401
    else
384
 
      ## the lock is being held by a different process,
385
 
      ## wait until the winning process is done or we timeout
386
 
      while test -d $lockdir && test $i -gt 0; do
 
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
387
405
        sleep 1
388
406
        i=`expr $i - 1`
389
407
      done
409
427
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
410
428
  # Some versions of the HPUX 10.20 sed can't process this invocation
411
429
  # correctly.  Breaking it into two sed invocations is a workaround.
412
 
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
413
 
    sed -e 's/$/ :/' >> "$depfile"
 
430
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
 
431
    | sed -e 's/$/ :/' >> "$depfile"
414
432
  rm -f "$tmpdepfile"
415
433
  ;;
416
434
 
421
439
  # 'foo.d', which lands next to the object file, wherever that
422
440
  # happens to be.
423
441
  # Much of this is similar to the tru64 case; see comments there.
424
 
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
425
 
  test "x$dir" = "x$object" && dir=
426
 
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
442
  set_dir_from  "$object"
 
443
  set_base_from "$object"
427
444
  if test "$libtool" = yes; then
428
445
    tmpdepfile1=$dir$base.d
429
446
    tmpdepfile2=$dir.libs/$base.d
434
451
    "$@" +Maked
435
452
  fi
436
453
  stat=$?
437
 
  if test $stat -eq 0; then :
438
 
  else
 
454
  if test $stat -ne 0; then
439
455
     rm -f "$tmpdepfile1" "$tmpdepfile2"
440
456
     exit $stat
441
457
  fi
445
461
    test -f "$tmpdepfile" && break
446
462
  done
447
463
  if test -f "$tmpdepfile"; then
448
 
    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
 
464
    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
449
465
    # Add 'dependent.h:' lines.
450
466
    sed -ne '2,${
451
 
               s/^ *//
452
 
               s/ \\*$//
453
 
               s/$/:/
454
 
               p
455
 
             }' "$tmpdepfile" >> "$depfile"
 
467
               s/^ *//
 
468
               s/ \\*$//
 
469
               s/$/:/
 
470
               p
 
471
             }' "$tmpdepfile" >> "$depfile"
456
472
  else
457
 
    echo "#dummy" > "$depfile"
 
473
    make_dummy_depfile
458
474
  fi
459
475
  rm -f "$tmpdepfile" "$tmpdepfile2"
460
476
  ;;
461
477
 
462
478
tru64)
463
 
   # The Tru64 compiler uses -MD to generate dependencies as a side
464
 
   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
465
 
   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
466
 
   # dependencies in 'foo.d' instead, so we check for that too.
467
 
   # Subdirectories are respected.
468
 
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
469
 
   test "x$dir" = "x$object" && dir=
470
 
   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
471
 
 
472
 
   if test "$libtool" = yes; then
473
 
      # With Tru64 cc, shared objects can also be used to make a
474
 
      # static library.  This mechanism is used in libtool 1.4 series to
475
 
      # handle both shared and static libraries in a single compilation.
476
 
      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
477
 
      #
478
 
      # With libtool 1.5 this exception was removed, and libtool now
479
 
      # generates 2 separate objects for the 2 libraries.  These two
480
 
      # compilations output dependencies in $dir.libs/$base.o.d and
481
 
      # in $dir$base.o.d.  We have to check for both files, because
482
 
      # one of the two compilations can be disabled.  We should prefer
483
 
      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
484
 
      # automatically cleaned when .libs/ is deleted, while ignoring
485
 
      # the former would cause a distcleancheck panic.
486
 
      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
487
 
      tmpdepfile2=$dir$base.o.d          # libtool 1.5
488
 
      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
489
 
      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
490
 
      "$@" -Wc,-MD
491
 
   else
492
 
      tmpdepfile1=$dir$base.o.d
493
 
      tmpdepfile2=$dir$base.d
494
 
      tmpdepfile3=$dir$base.d
495
 
      tmpdepfile4=$dir$base.d
496
 
      "$@" -MD
497
 
   fi
498
 
 
499
 
   stat=$?
500
 
   if test $stat -eq 0; then :
501
 
   else
502
 
      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
503
 
      exit $stat
504
 
   fi
505
 
 
506
 
   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
507
 
   do
508
 
     test -f "$tmpdepfile" && break
509
 
   done
510
 
   if test -f "$tmpdepfile"; then
511
 
      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
512
 
      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
513
 
   else
514
 
      echo "#dummy" > "$depfile"
515
 
   fi
516
 
   rm -f "$tmpdepfile"
517
 
   ;;
 
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
  ;;
518
519
 
519
520
msvc7)
520
521
  if test "$libtool" = yes; then
525
526
  "$@" $showIncludes > "$tmpdepfile"
526
527
  stat=$?
527
528
  grep -v '^Note: including file: ' "$tmpdepfile"
528
 
  if test "$stat" = 0; then :
529
 
  else
 
529
  if test $stat -ne 0; then
530
530
    rm -f "$tmpdepfile"
531
531
    exit $stat
532
532
  fi
552
552
  G
553
553
  p
554
554
}' >> "$depfile"
 
555
  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
555
556
  rm -f "$tmpdepfile"
556
557
  ;;
557
558
 
603
604
  # in the target name.  This is to cope with DOS-style filenames:
604
605
  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
605
606
  "$@" $dashmflag |
606
 
    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
 
607
    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
607
608
  rm -f "$depfile"
608
609
  cat < "$tmpdepfile" > "$depfile"
609
 
  tr ' ' "$nl" < "$tmpdepfile" | \
610
 
## Some versions of the HPUX 10.20 sed can't process this invocation
611
 
## correctly.  Breaking it into two sed invocations is a workaround.
612
 
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
 
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"
613
615
  rm -f "$tmpdepfile"
614
616
  ;;
615
617
 
662
664
  # makedepend may prepend the VPATH from the source file name to the object.
663
665
  # No need to regex-escape $object, excess matching of '.' is harmless.
664
666
  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
665
 
  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
666
 
## Some versions of the HPUX 10.20 sed can't process this invocation
667
 
## correctly.  Breaking it into two sed invocations is a workaround.
668
 
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
 
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"
669
673
  rm -f "$tmpdepfile" "$tmpdepfile".bak
670
674
  ;;
671
675
 
701
705
    esac
702
706
  done
703
707
 
704
 
  "$@" -E |
705
 
    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
706
 
       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
707
 
    sed '$ s: \\$::' > "$tmpdepfile"
 
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"
708
712
  rm -f "$depfile"
709
713
  echo "$object : \\" > "$depfile"
710
714
  cat < "$tmpdepfile" >> "$depfile"
736
740
      shift
737
741
      ;;
738
742
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
739
 
        set fnord "$@"
740
 
        shift
741
 
        shift
742
 
        ;;
 
743
        set fnord "$@"
 
744
        shift
 
745
        shift
 
746
        ;;
743
747
    *)
744
 
        set fnord "$@" "$arg"
745
 
        shift
746
 
        shift
747
 
        ;;
 
748
        set fnord "$@" "$arg"
 
749
        shift
 
750
        shift
 
751
        ;;
748
752
    esac
749
753
  done
750
754
  "$@" -E 2>/dev/null |