~darkxst/ubuntu/trusty/gjs/1.38.1

« back to all changes in this revision

Viewing changes to depcomp

  • Committer: Package Import Robot
  • Author(s): Michael Biebl, Thomas Bechtold
  • Date: 2013-05-24 23:11:06 UTC
  • mfrom: (1.3.20 experimental)
  • Revision ID: package-import@ubuntu.com-20130524231106-z0gvlhbif3pt3r9m
Tags: 1.36.1-1
[ Thomas Bechtold ]
* New upstream release.
* debian/control: Bump Standards-Version to 3.9.4.

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=2009-04-28.21; # UTC
5
5
 
6
 
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 
6
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
 
7
# 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]
39
40
 
40
41
Environment variables:
41
42
  depmode     Dependency tracking mode.
42
 
  source      Source file read by 'PROGRAMS ARGS'.
43
 
  object      Object file output by 'PROGRAMS ARGS'.
 
43
  source      Source file read by `PROGRAMS ARGS'.
 
44
  object      Object file output by `PROGRAMS ARGS'.
44
45
  DEPDIR      directory where to store dependencies.
45
46
  depfile     Dependency file to output.
46
 
  tmpdepfile  Temporary file to use when outputting dependencies.
 
47
  tmpdepfile  Temporary file to use when outputing dependencies.
47
48
  libtool     Whether libtool is used (yes/no).
48
49
 
49
50
Report bugs to <bug-automake@gnu.org>.
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
 
# A tabulation character.
108
 
tab='   '
109
 
# A newline character.
110
 
nl='
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}
118
 
 
119
60
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
120
61
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
121
62
  exit 1
128
69
 
129
70
rm -f "$tmpdepfile"
130
71
 
131
 
# Avoid interferences from the environment.
132
 
gccflag= dashmflag=
133
 
 
134
72
# Some modes work just like other modes, but use different flags.  We
135
73
# parameterize here, but still list the modes in the big case below,
136
74
# to make depend.m4 easier to write.  Note that we *cannot* use a case
142
80
fi
143
81
 
144
82
if test "$depmode" = dashXmstdout; then
145
 
  # This is just like dashmstdout with a different argument.
146
 
  dashmflag=-xM
147
 
  depmode=dashmstdout
 
83
   # This is just like dashmstdout with a different argument.
 
84
   dashmflag=-xM
 
85
   depmode=dashmstdout
148
86
fi
149
87
 
150
88
cygpath_u="cygpath -u -f -"
151
89
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
157
 
fi
158
 
 
159
 
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
165
 
fi
166
 
 
167
 
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
 
90
   # This is just like msvisualcpp but w/o cygpath translation.
 
91
   # Just convert the backslash-escaped backslashes to single forward
 
92
   # slashes to satisfy depend.m4
 
93
   cygpath_u="sed s,\\\\\\\\,/,g"
 
94
   depmode=msvisualcpp
171
95
fi
172
96
 
173
97
case "$depmode" in
190
114
  done
191
115
  "$@"
192
116
  stat=$?
193
 
  if test $stat -ne 0; then
 
117
  if test $stat -eq 0; then :
 
118
  else
194
119
    rm -f "$tmpdepfile"
195
120
    exit $stat
196
121
  fi
198
123
  ;;
199
124
 
200
125
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
126
## There are various ways to get dependency output from gcc.  Here's
205
127
## why we pick this rather obscure method:
206
128
## - Don't want to use -MD because we'd like the dependencies to end
207
129
##   up in a subdir.  Having to rename by hand is ugly.
208
130
##   (We might end up doing this anyway to support other compilers.)
209
131
## - 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.
 
132
##   -MM, not -M (despite what the docs say).
212
133
## - Using -M directly means running the compiler twice (even worse
213
134
##   than renaming).
214
135
  if test -z "$gccflag"; then
216
137
  fi
217
138
  "$@" -Wp,"$gccflag$tmpdepfile"
218
139
  stat=$?
219
 
  if test $stat -ne 0; then
 
140
  if test $stat -eq 0; then :
 
141
  else
220
142
    rm -f "$tmpdepfile"
221
143
    exit $stat
222
144
  fi
223
145
  rm -f "$depfile"
224
146
  echo "$object : \\" > "$depfile"
225
 
  # The second -e expression handles DOS-style file names with drive
226
 
  # letters.
 
147
  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
 
148
## The second -e expression handles DOS-style file names with drive letters.
227
149
  sed -e 's/^[^:]*: / /' \
228
150
      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
229
 
## This next piece of magic avoids the "deleted header file" problem.
 
151
## This next piece of magic avoids the `deleted header file' problem.
230
152
## The problem is that when a header file which appears in a .P file
231
153
## is deleted, the dependency causes make to die (because there is
232
154
## typically no way to rebuild the header).  We avoid this by adding
233
155
## dummy dependencies for each header file.  Too bad gcc doesn't do
234
156
## this for us directly.
235
 
## Some versions of gcc put a space before the ':'.  On the theory
 
157
  tr ' ' '
 
158
' < "$tmpdepfile" |
 
159
## Some versions of gcc put a space before the `:'.  On the theory
236
160
## 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.
 
161
## well.
239
162
## Some versions of the HPUX 10.20 sed can't process this invocation
240
163
## 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"
 
164
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
244
165
  rm -f "$tmpdepfile"
245
166
  ;;
246
167
 
258
179
    "$@" -MDupdate "$tmpdepfile"
259
180
  fi
260
181
  stat=$?
261
 
  if test $stat -ne 0; then
 
182
  if test $stat -eq 0; then :
 
183
  else
262
184
    rm -f "$tmpdepfile"
263
185
    exit $stat
264
186
  fi
266
188
 
267
189
  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
268
190
    echo "$object : \\" > "$depfile"
 
191
 
269
192
    # Clip off the initial element (the dependent).  Don't try to be
270
193
    # clever and replace this with sed code, as IRIX sed won't handle
271
194
    # lines with more than a fixed number of characters (4096 in
272
195
    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
273
 
    # the IRIX cc adds comments like '#:fec' to the end of the
 
196
    # the IRIX cc adds comments like `#:fec' to the end of the
274
197
    # dependency line.
275
 
    tr ' ' "$nl" < "$tmpdepfile" \
276
 
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277
 
      | tr "$nl" ' ' >> "$depfile"
 
198
    tr ' ' '
 
199
' < "$tmpdepfile" \
 
200
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
 
201
    tr '
 
202
' ' ' >> "$depfile"
278
203
    echo >> "$depfile"
 
204
 
279
205
    # The second pass generates a dummy entry for each header file.
280
 
    tr ' ' "$nl" < "$tmpdepfile" \
281
 
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282
 
      >> "$depfile"
 
206
    tr ' ' '
 
207
' < "$tmpdepfile" \
 
208
   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
 
209
   >> "$depfile"
283
210
  else
284
 
    make_dummy_depfile
 
211
    # The sourcefile does not contain any dependencies, so just
 
212
    # store a dummy comment line, to avoid errors with the Makefile
 
213
    # "include basename.Plo" scheme.
 
214
    echo "#dummy" > "$depfile"
285
215
  fi
286
216
  rm -f "$tmpdepfile"
287
217
  ;;
288
218
 
289
 
xlc)
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
 
 
296
219
aix)
297
220
  # The C for AIX Compiler uses -M and outputs the dependencies
298
221
  # in a .u file.  In older versions, this file always lives in the
299
 
  # current directory.  Also, the AIX compiler puts '$object:' at the
 
222
  # current directory.  Also, the AIX compiler puts `$object:' at the
300
223
  # start of each line; $object doesn't have directory information.
301
224
  # Version 6 uses the directory in both cases.
302
 
  set_dir_from "$object"
303
 
  set_base_from "$object"
 
225
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
 
226
  test "x$dir" = "x$object" && dir=
 
227
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
304
228
  if test "$libtool" = yes; then
305
229
    tmpdepfile1=$dir$base.u
306
230
    tmpdepfile2=$base.u
313
237
    "$@" -M
314
238
  fi
315
239
  stat=$?
316
 
  if test $stat -ne 0; then
 
240
 
 
241
  if test $stat -eq 0; then :
 
242
  else
317
243
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
318
244
    exit $stat
319
245
  fi
322
248
  do
323
249
    test -f "$tmpdepfile" && break
324
250
  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
 
251
  if test -f "$tmpdepfile"; then
 
252
    # Each line is of the form `foo.o: dependent.h'.
 
253
    # Do two passes, one to just change these to
 
254
    # `$object: dependent.h' and one to simply `dependent.h:'.
 
255
    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
 
256
    # That's a tab and a space in the [].
 
257
    sed -e 's,^.*\.[a-z]*:[      ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
 
258
  else
 
259
    # The sourcefile does not contain any dependencies, so just
 
260
    # store a dummy comment line, to avoid errors with the Makefile
 
261
    # "include basename.Plo" scheme.
 
262
    echo "#dummy" > "$depfile"
348
263
  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
264
  rm -f "$tmpdepfile"
357
265
  ;;
358
266
 
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
 
267
icc)
 
268
  # Intel's C compiler understands `-MD -MF file'.  However on
 
269
  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
 
270
  # ICC 7.0 will fill foo.d with something like
 
271
  #    foo.o: sub/foo.c
 
272
  #    foo.o: sub/foo.h
 
273
  # which is wrong.  We want:
 
274
  #    sub/foo.o: sub/foo.c
 
275
  #    sub/foo.o: sub/foo.h
 
276
  #    sub/foo.c:
 
277
  #    sub/foo.h:
 
278
  # ICC 7.1 will output
369
279
  #    foo.o: sub/foo.c sub/foo.h
370
 
  # and will wrap long lines using '\' :
 
280
  # and will wrap long lines using \ :
371
281
  #    foo.o: sub/foo.c ... \
372
282
  #     sub/foo.h ... \
373
283
  #     ...
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
 
284
 
 
285
  "$@" -MD -MF "$tmpdepfile"
 
286
  stat=$?
 
287
  if test $stat -eq 0; then :
 
288
  else
419
289
    rm -f "$tmpdepfile"
420
290
    exit $stat
421
291
  fi
427
297
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
428
298
  # Some versions of the HPUX 10.20 sed can't process this invocation
429
299
  # correctly.  Breaking it into two sed invocations is a workaround.
430
 
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431
 
    | sed -e 's/$/ :/' >> "$depfile"
 
300
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
 
301
    sed -e 's/$/ :/' >> "$depfile"
432
302
  rm -f "$tmpdepfile"
433
303
  ;;
434
304
 
439
309
  # 'foo.d', which lands next to the object file, wherever that
440
310
  # happens to be.
441
311
  # Much of this is similar to the tru64 case; see comments there.
442
 
  set_dir_from  "$object"
443
 
  set_base_from "$object"
 
312
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
 
313
  test "x$dir" = "x$object" && dir=
 
314
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
444
315
  if test "$libtool" = yes; then
445
316
    tmpdepfile1=$dir$base.d
446
317
    tmpdepfile2=$dir.libs/$base.d
451
322
    "$@" +Maked
452
323
  fi
453
324
  stat=$?
454
 
  if test $stat -ne 0; then
 
325
  if test $stat -eq 0; then :
 
326
  else
455
327
     rm -f "$tmpdepfile1" "$tmpdepfile2"
456
328
     exit $stat
457
329
  fi
461
333
    test -f "$tmpdepfile" && break
462
334
  done
463
335
  if test -f "$tmpdepfile"; then
464
 
    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
465
 
    # Add 'dependent.h:' lines.
 
336
    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
 
337
    # Add `dependent.h:' lines.
466
338
    sed -ne '2,${
467
 
               s/^ *//
468
 
               s/ \\*$//
469
 
               s/$/:/
470
 
               p
471
 
             }' "$tmpdepfile" >> "$depfile"
 
339
               s/^ *//
 
340
               s/ \\*$//
 
341
               s/$/:/
 
342
               p
 
343
             }' "$tmpdepfile" >> "$depfile"
472
344
  else
473
 
    make_dummy_depfile
 
345
    echo "#dummy" > "$depfile"
474
346
  fi
475
347
  rm -f "$tmpdepfile" "$tmpdepfile2"
476
348
  ;;
477
349
 
478
350
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
 
  ;;
519
 
 
520
 
msvc7)
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"
529
 
  if test $stat -ne 0; then
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 '
546
 
s/ /\\ /g
547
 
s/\(.*\)/'"$tab"'\1 \\/p
548
 
s/.\(.*\) \\/\1:/
549
 
H
550
 
$ {
551
 
  s/.*/'"$tab"'/
552
 
  G
553
 
  p
554
 
}' >> "$depfile"
555
 
  rm -f "$tmpdepfile"
556
 
  ;;
557
 
 
558
 
msvc7msys)
559
 
  # This case exists only to let depend.m4 do its work.  It works by
560
 
  # looking at the text of this script.  This case will never be run,
561
 
  # since it is checked for above.
562
 
  exit 1
563
 
  ;;
 
351
   # The Tru64 compiler uses -MD to generate dependencies as a side
 
352
   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
 
353
   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
 
354
   # dependencies in `foo.d' instead, so we check for that too.
 
355
   # Subdirectories are respected.
 
356
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
 
357
   test "x$dir" = "x$object" && dir=
 
358
   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
359
 
 
360
   if test "$libtool" = yes; then
 
361
      # With Tru64 cc, shared objects can also be used to make a
 
362
      # static library.  This mechanism is used in libtool 1.4 series to
 
363
      # handle both shared and static libraries in a single compilation.
 
364
      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
 
365
      #
 
366
      # With libtool 1.5 this exception was removed, and libtool now
 
367
      # generates 2 separate objects for the 2 libraries.  These two
 
368
      # compilations output dependencies in $dir.libs/$base.o.d and
 
369
      # in $dir$base.o.d.  We have to check for both files, because
 
370
      # one of the two compilations can be disabled.  We should prefer
 
371
      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
 
372
      # automatically cleaned when .libs/ is deleted, while ignoring
 
373
      # the former would cause a distcleancheck panic.
 
374
      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
 
375
      tmpdepfile2=$dir$base.o.d          # libtool 1.5
 
376
      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
 
377
      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
 
378
      "$@" -Wc,-MD
 
379
   else
 
380
      tmpdepfile1=$dir$base.o.d
 
381
      tmpdepfile2=$dir$base.d
 
382
      tmpdepfile3=$dir$base.d
 
383
      tmpdepfile4=$dir$base.d
 
384
      "$@" -MD
 
385
   fi
 
386
 
 
387
   stat=$?
 
388
   if test $stat -eq 0; then :
 
389
   else
 
390
      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
 
391
      exit $stat
 
392
   fi
 
393
 
 
394
   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
 
395
   do
 
396
     test -f "$tmpdepfile" && break
 
397
   done
 
398
   if test -f "$tmpdepfile"; then
 
399
      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
 
400
      # That's a tab and a space in the [].
 
401
      sed -e 's,^.*\.[a-z]*:[    ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
 
402
   else
 
403
      echo "#dummy" > "$depfile"
 
404
   fi
 
405
   rm -f "$tmpdepfile"
 
406
   ;;
564
407
 
565
408
#nosideeffect)
566
409
  # This comment above is used by automake to tell side-effect
579
422
    shift
580
423
  fi
581
424
 
582
 
  # Remove '-o $object'.
 
425
  # Remove `-o $object'.
583
426
  IFS=" "
584
427
  for arg
585
428
  do
599
442
  done
600
443
 
601
444
  test -z "$dashmflag" && dashmflag=-M
602
 
  # Require at least two characters before searching for ':'
 
445
  # Require at least two characters before searching for `:'
603
446
  # in the target name.  This is to cope with DOS-style filenames:
604
 
  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
 
447
  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
605
448
  "$@" $dashmflag |
606
 
    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
 
449
    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
607
450
  rm -f "$depfile"
608
451
  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"
 
452
  tr ' ' '
 
453
' < "$tmpdepfile" | \
 
454
## Some versions of the HPUX 10.20 sed can't process this invocation
 
455
## correctly.  Breaking it into two sed invocations is a workaround.
 
456
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
614
457
  rm -f "$tmpdepfile"
615
458
  ;;
616
459
 
660
503
  touch "$tmpdepfile"
661
504
  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
662
505
  rm -f "$depfile"
663
 
  # makedepend may prepend the VPATH from the source file name to the object.
664
 
  # No need to regex-escape $object, excess matching of '.' is harmless.
665
 
  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"
 
506
  cat < "$tmpdepfile" > "$depfile"
 
507
  sed '1,2d' "$tmpdepfile" | tr ' ' '
 
508
' | \
 
509
## Some versions of the HPUX 10.20 sed can't process this invocation
 
510
## correctly.  Breaking it into two sed invocations is a workaround.
 
511
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
672
512
  rm -f "$tmpdepfile" "$tmpdepfile".bak
673
513
  ;;
674
514
 
685
525
    shift
686
526
  fi
687
527
 
688
 
  # Remove '-o $object'.
 
528
  # Remove `-o $object'.
689
529
  IFS=" "
690
530
  for arg
691
531
  do
704
544
    esac
705
545
  done
706
546
 
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"
 
547
  "$@" -E |
 
548
    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
 
549
       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
 
550
    sed '$ s: \\$::' > "$tmpdepfile"
711
551
  rm -f "$depfile"
712
552
  echo "$object : \\" > "$depfile"
713
553
  cat < "$tmpdepfile" >> "$depfile"
739
579
      shift
740
580
      ;;
741
581
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
742
 
        set fnord "$@"
743
 
        shift
744
 
        shift
745
 
        ;;
 
582
        set fnord "$@"
 
583
        shift
 
584
        shift
 
585
        ;;
746
586
    *)
747
 
        set fnord "$@" "$arg"
748
 
        shift
749
 
        shift
750
 
        ;;
 
587
        set fnord "$@" "$arg"
 
588
        shift
 
589
        shift
 
590
        ;;
751
591
    esac
752
592
  done
753
593
  "$@" -E 2>/dev/null |
754
594
  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
755
595
  rm -f "$depfile"
756
596
  echo "$object : \\" > "$depfile"
757
 
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
758
 
  echo "$tab" >> "$depfile"
 
597
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::      \1 \\:p' >> "$depfile"
 
598
  echo "        " >> "$depfile"
759
599
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
760
600
  rm -f "$tmpdepfile"
761
601
  ;;