~ubuntu-branches/ubuntu/utopic/gimp/utopic

« back to all changes in this revision

Viewing changes to depcomp

  • Committer: Package Import Robot
  • Author(s): Sebastien Bacher
  • Date: 2013-08-29 12:48:19 UTC
  • mfrom: (1.1.29) (0.4.20 saucy-proposed)
  • Revision ID: package-import@ubuntu.com-20130829124819-r4mliaiddrgv5x4g
Tags: 2.8.6-1ubuntu1
* Synchronize with Debian (LP: #1207734). Remaining changes:
  - debian/patches/02_help-message.patch,
    debian/patches/03_gimp.desktop.in.in.patch:
    + Update some strings for Ubuntu
  - debian/control:
    + Update description
  - debian/rules:
    + Set gettext domain and update translation templates

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