~ubuntu-branches/ubuntu/saucy/gedit-plugins/saucy

« back to all changes in this revision

Viewing changes to build-aux/depcomp

  • Committer: Package Import Robot
  • Author(s): Jeremy Bicha
  • Date: 2013-06-26 17:26:32 UTC
  • mfrom: (1.4.14)
  • Revision ID: package-import@ubuntu.com-20130626172632-sfp91zgjfbj5bug7
Tags: 3.8.3-0ubuntu1
* New upstream release
* debian/control.in:
  - Build-depend on libzeitgeist-2.0-dev and depend on gir1.2-zeitgeist-2.0
    to fix Dashboard plugin

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-10-18.11; # UTC
 
4
scriptversion=2012-03-27.16; # UTC
5
5
 
6
 
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 
6
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
 
7
# 2011, 2012 Free Software Foundation, Inc.
7
8
 
8
9
# This program is free software; you can redistribute it and/or modify
9
10
# it under the terms of the GNU General Public License as published by
27
28
 
28
29
case $1 in
29
30
  '')
30
 
    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
31
 
    exit 1;
32
 
    ;;
 
31
     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
 
32
     exit 1;
 
33
     ;;
33
34
  -h | --h*)
34
35
    cat <<\EOF
35
36
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
56
57
    ;;
57
58
esac
58
59
 
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
 
 
107
60
# A tabulation character.
108
61
tab='   '
109
62
# A newline character.
110
63
nl='
111
64
'
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}
118
65
 
119
66
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
120
67
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
128
75
 
129
76
rm -f "$tmpdepfile"
130
77
 
131
 
# Avoid interferences from the environment.
132
 
gccflag= dashmflag=
133
 
 
134
78
# Some modes work just like other modes, but use different flags.  We
135
79
# parameterize here, but still list the modes in the big case below,
136
80
# to make depend.m4 easier to write.  Note that we *cannot* use a case
142
86
fi
143
87
 
144
88
if test "$depmode" = dashXmstdout; then
145
 
  # This is just like dashmstdout with a different argument.
146
 
  dashmflag=-xM
147
 
  depmode=dashmstdout
 
89
   # This is just like dashmstdout with a different argument.
 
90
   dashmflag=-xM
 
91
   depmode=dashmstdout
148
92
fi
149
93
 
150
94
cygpath_u="cygpath -u -f -"
151
95
if test "$depmode" = msvcmsys; then
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
 
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
157
101
fi
158
102
 
159
103
if test "$depmode" = msvc7msys; then
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
 
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
165
109
fi
166
110
 
167
111
if 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
 
112
   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
 
113
   gccflag=-qmakedep=gcc,-MF
 
114
   depmode=gcc
171
115
fi
172
116
 
173
117
case "$depmode" in
190
134
  done
191
135
  "$@"
192
136
  stat=$?
193
 
  if test $stat -ne 0; then
 
137
  if test $stat -eq 0; then :
 
138
  else
194
139
    rm -f "$tmpdepfile"
195
140
    exit $stat
196
141
  fi
198
143
  ;;
199
144
 
200
145
gcc)
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).
204
146
## There are various ways to get dependency output from gcc.  Here's
205
147
## why we pick this rather obscure method:
206
148
## - Don't want to use -MD because we'd like the dependencies to end
207
149
##   up in a subdir.  Having to rename by hand is ugly.
208
150
##   (We might end up doing this anyway to support other compilers.)
209
151
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
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.
 
152
##   -MM, not -M (despite what the docs say).
212
153
## - Using -M directly means running the compiler twice (even worse
213
154
##   than renaming).
214
155
  if test -z "$gccflag"; then
216
157
  fi
217
158
  "$@" -Wp,"$gccflag$tmpdepfile"
218
159
  stat=$?
219
 
  if test $stat -ne 0; then
 
160
  if test $stat -eq 0; then :
 
161
  else
220
162
    rm -f "$tmpdepfile"
221
163
    exit $stat
222
164
  fi
223
165
  rm -f "$depfile"
224
166
  echo "$object : \\" > "$depfile"
225
 
  # The second -e expression handles DOS-style file names with drive
226
 
  # letters.
 
167
  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
 
168
## The second -e expression handles DOS-style file names with drive letters.
227
169
  sed -e 's/^[^:]*: / /' \
228
170
      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
229
171
## This next piece of magic avoids the "deleted header file" problem.
232
174
## typically no way to rebuild the header).  We avoid this by adding
233
175
## dummy dependencies for each header file.  Too bad gcc doesn't do
234
176
## this for us directly.
 
177
  tr ' ' "$nl" < "$tmpdepfile" |
235
178
## Some versions of gcc put a space before the ':'.  On the theory
236
179
## that the space means something, we add a space to the output as
237
180
## well.  hp depmode also adds that space, but also prefixes the VPATH
238
181
## to the object.  Take care to not repeat it in the output.
239
182
## Some versions of the HPUX 10.20 sed can't process this invocation
240
183
## correctly.  Breaking it into two sed invocations is a workaround.
241
 
  tr ' ' "$nl" < "$tmpdepfile" \
242
 
    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
243
 
    | sed -e 's/$/ :/' >> "$depfile"
 
184
    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
 
185
      | sed -e 's/$/ :/' >> "$depfile"
244
186
  rm -f "$tmpdepfile"
245
187
  ;;
246
188
 
258
200
    "$@" -MDupdate "$tmpdepfile"
259
201
  fi
260
202
  stat=$?
261
 
  if test $stat -ne 0; then
 
203
  if test $stat -eq 0; then :
 
204
  else
262
205
    rm -f "$tmpdepfile"
263
206
    exit $stat
264
207
  fi
266
209
 
267
210
  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
268
211
    echo "$object : \\" > "$depfile"
 
212
 
269
213
    # Clip off the initial element (the dependent).  Don't try to be
270
214
    # clever and replace this with sed code, as IRIX sed won't handle
271
215
    # lines with more than a fixed number of characters (4096 in
273
217
    # the IRIX cc adds comments like '#:fec' to the end of the
274
218
    # dependency line.
275
219
    tr ' ' "$nl" < "$tmpdepfile" \
276
 
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277
 
      | tr "$nl" ' ' >> "$depfile"
 
220
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
 
221
    tr "$nl" ' ' >> "$depfile"
278
222
    echo >> "$depfile"
 
223
 
279
224
    # The second pass generates a dummy entry for each header file.
280
225
    tr ' ' "$nl" < "$tmpdepfile" \
281
 
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282
 
      >> "$depfile"
 
226
   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
 
227
   >> "$depfile"
283
228
  else
284
 
    make_dummy_depfile
 
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"
285
233
  fi
286
234
  rm -f "$tmpdepfile"
287
235
  ;;
299
247
  # current directory.  Also, the AIX compiler puts '$object:' at the
300
248
  # start of each line; $object doesn't have directory information.
301
249
  # Version 6 uses the directory in both cases.
302
 
  set_dir_from "$object"
303
 
  set_base_from "$object"
 
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$//'`
304
253
  if test "$libtool" = yes; then
305
254
    tmpdepfile1=$dir$base.u
306
255
    tmpdepfile2=$base.u
313
262
    "$@" -M
314
263
  fi
315
264
  stat=$?
316
 
  if test $stat -ne 0; then
 
265
 
 
266
  if test $stat -eq 0; then :
 
267
  else
317
268
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
318
269
    exit $stat
319
270
  fi
322
273
  do
323
274
    test -f "$tmpdepfile" && break
324
275
  done
325
 
  aix_post_process_depfile
326
 
  ;;
327
 
 
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").
343
 
  "$@" -MD -MF "$tmpdepfile"
344
 
  stat=$?
345
 
  if test $stat -ne 0; then
346
 
    rm -f "$tmpdepfile"
347
 
    exit $stat
 
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"
348
287
  fi
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"
356
288
  rm -f "$tmpdepfile"
357
289
  ;;
358
290
 
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.
363
 
pgcc)
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
 
291
icc)
 
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
369
304
  #    foo.o: sub/foo.c sub/foo.h
370
 
  # and will wrap long lines using '\' :
 
305
  # and will wrap long lines using '\':
371
306
  #    foo.o: sub/foo.c ... \
372
307
  #     sub/foo.h ... \
373
308
  #     ...
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
417
 
 
418
 
  if test $stat -ne 0; then
 
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
419
316
    rm -f "$tmpdepfile"
420
317
    exit $stat
421
318
  fi
422
319
  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 \'.
 
320
  # Each line is of the form 'foo.o: dependent.h',
 
321
  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
425
322
  # 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.
430
 
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431
 
    | sed -e 's/$/ :/' >> "$depfile"
 
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"
432
335
  rm -f "$tmpdepfile"
433
336
  ;;
434
337
 
439
342
  # 'foo.d', which lands next to the object file, wherever that
440
343
  # happens to be.
441
344
  # Much of this is similar to the tru64 case; see comments there.
442
 
  set_dir_from  "$object"
443
 
  set_base_from "$object"
 
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$//'`
444
348
  if test "$libtool" = yes; then
445
349
    tmpdepfile1=$dir$base.d
446
350
    tmpdepfile2=$dir.libs/$base.d
451
355
    "$@" +Maked
452
356
  fi
453
357
  stat=$?
454
 
  if test $stat -ne 0; then
 
358
  if test $stat -eq 0; then :
 
359
  else
455
360
     rm -f "$tmpdepfile1" "$tmpdepfile2"
456
361
     exit $stat
457
362
  fi
461
366
    test -f "$tmpdepfile" && break
462
367
  done
463
368
  if test -f "$tmpdepfile"; then
464
 
    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
 
369
    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
465
370
    # Add 'dependent.h:' lines.
466
371
    sed -ne '2,${
467
 
               s/^ *//
468
 
               s/ \\*$//
469
 
               s/$/:/
470
 
               p
471
 
             }' "$tmpdepfile" >> "$depfile"
 
372
               s/^ *//
 
373
               s/ \\*$//
 
374
               s/$/:/
 
375
               p
 
376
             }' "$tmpdepfile" >> "$depfile"
472
377
  else
473
 
    make_dummy_depfile
 
378
    echo "#dummy" > "$depfile"
474
379
  fi
475
380
  rm -f "$tmpdepfile" "$tmpdepfile2"
476
381
  ;;
477
382
 
478
383
tru64)
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
 
  ;;
 
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
   ;;
519
439
 
520
440
msvc7)
521
441
  if test "$libtool" = yes; then
526
446
  "$@" $showIncludes > "$tmpdepfile"
527
447
  stat=$?
528
448
  grep -v '^Note: including file: ' "$tmpdepfile"
529
 
  if test $stat -ne 0; then
 
449
  if test "$stat" = 0; then :
 
450
  else
530
451
    rm -f "$tmpdepfile"
531
452
    exit $stat
532
453
  fi
603
524
  # in the target name.  This is to cope with DOS-style filenames:
604
525
  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
605
526
  "$@" $dashmflag |
606
 
    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
 
527
    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
607
528
  rm -f "$depfile"
608
529
  cat < "$tmpdepfile" > "$depfile"
609
 
  # Some versions of the HPUX 10.20 sed can't process this sed invocation
610
 
  # correctly.  Breaking it into two sed invocations is a workaround.
611
 
  tr ' ' "$nl" < "$tmpdepfile" \
612
 
    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
613
 
    | sed -e 's/$/ :/' >> "$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"
614
534
  rm -f "$tmpdepfile"
615
535
  ;;
616
536
 
663
583
  # makedepend may prepend the VPATH from the source file name to the object.
664
584
  # No need to regex-escape $object, excess matching of '.' is harmless.
665
585
  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
666
 
  # Some versions of the HPUX 10.20 sed can't process the last invocation
667
 
  # correctly.  Breaking it into two sed invocations is a workaround.
668
 
  sed '1,2d' "$tmpdepfile" \
669
 
    | tr ' ' "$nl" \
670
 
    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
671
 
    | sed -e 's/$/ :/' >> "$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"
672
590
  rm -f "$tmpdepfile" "$tmpdepfile".bak
673
591
  ;;
674
592
 
704
622
    esac
705
623
  done
706
624
 
707
 
  "$@" -E \
708
 
    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
709
 
             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
710
 
    | sed '$ s: \\$::' > "$tmpdepfile"
 
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"
711
629
  rm -f "$depfile"
712
630
  echo "$object : \\" > "$depfile"
713
631
  cat < "$tmpdepfile" >> "$depfile"
739
657
      shift
740
658
      ;;
741
659
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
742
 
        set fnord "$@"
743
 
        shift
744
 
        shift
745
 
        ;;
 
660
        set fnord "$@"
 
661
        shift
 
662
        shift
 
663
        ;;
746
664
    *)
747
 
        set fnord "$@" "$arg"
748
 
        shift
749
 
        shift
750
 
        ;;
 
665
        set fnord "$@" "$arg"
 
666
        shift
 
667
        shift
 
668
        ;;
751
669
    esac
752
670
  done
753
671
  "$@" -E 2>/dev/null |