~ubuntu-branches/ubuntu/quantal/libgc/quantal

« back to all changes in this revision

Viewing changes to depcomp

  • Committer: Bazaar Package Importer
  • Author(s): Christoph Egger
  • Date: 2011-02-19 12:19:56 UTC
  • mfrom: (1.3.2 upstream) (0.1.5 experimental)
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: james.westby@ubuntu.com-20110219121956-67rb69xlt5nud3v2
Tags: 1:7.1-5
Upload to unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#! /bin/sh
 
2
 
2
3
# depcomp - compile a program generating dependencies as side-effects
3
 
 
4
 
scriptversion=2005-07-09.11
5
 
 
6
 
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
 
4
# Copyright 1999, 2000 Free Software Foundation, Inc.
7
5
 
8
6
# This program is free software; you can redistribute it and/or modify
9
7
# it under the terms of the GNU General Public License as published by
17
15
 
18
16
# You should have received a copy of the GNU General Public License
19
17
# along with this program; if not, write to the Free Software
20
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21
 
# 02110-1301, USA.
 
18
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 
19
# 02111-1307, USA.
22
20
 
23
21
# As a special exception to the GNU General Public License, if you
24
22
# distribute this file as part of a program that contains a
27
25
 
28
26
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
29
27
 
30
 
case $1 in
31
 
  '')
32
 
     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
33
 
     exit 1;
34
 
     ;;
35
 
  -h | --h*)
36
 
    cat <<\EOF
37
 
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
38
 
 
39
 
Run PROGRAMS ARGS to compile a file, generating dependencies
40
 
as side-effects.
41
 
 
42
 
Environment variables:
43
 
  depmode     Dependency tracking mode.
44
 
  source      Source file read by `PROGRAMS ARGS'.
45
 
  object      Object file output by `PROGRAMS ARGS'.
46
 
  DEPDIR      directory where to store dependencies.
47
 
  depfile     Dependency file to output.
48
 
  tmpdepfile  Temporary file to use when outputing dependencies.
49
 
  libtool     Whether libtool is used (yes/no).
50
 
 
51
 
Report bugs to <bug-automake@gnu.org>.
52
 
EOF
53
 
    exit $?
54
 
    ;;
55
 
  -v | --v*)
56
 
    echo "depcomp $scriptversion"
57
 
    exit $?
58
 
    ;;
59
 
esac
60
 
 
61
28
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
62
29
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
63
30
  exit 1
64
31
fi
65
 
 
66
 
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
67
 
depfile=${depfile-`echo "$object" |
68
 
  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
 
32
# `libtool' can also be set to `yes' or `no'.
 
33
 
 
34
if test -z "$depfile"; then
 
35
   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
 
36
   dir=`echo "$object" | sed 's,/.*$,/,'`
 
37
   if test "$dir" = "$object"; then
 
38
      dir=
 
39
   fi
 
40
   # FIXME: should be _deps on DOS.
 
41
   depfile="$dir.deps/$base"
 
42
fi
 
43
 
69
44
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
70
45
 
71
46
rm -f "$tmpdepfile"
197
172
 
198
173
aix)
199
174
  # The C for AIX Compiler uses -M and outputs the dependencies
200
 
  # in a .u file.  In older versions, this file always lives in the
201
 
  # current directory.  Also, the AIX compiler puts `$object:' at the
202
 
  # start of each line; $object doesn't have directory information.
203
 
  # Version 6 uses the directory in both cases.
204
 
  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
 
175
  # in a .u file.  This file always lives in the current directory.
 
176
  # Also, the AIX compiler puts `$object:' at the start of each line;
 
177
  # $object doesn't have directory information.
 
178
  stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
205
179
  tmpdepfile="$stripped.u"
 
180
  outname="$stripped.o"
206
181
  if test "$libtool" = yes; then
207
182
    "$@" -Wc,-M
208
183
  else
209
184
    "$@" -M
210
185
  fi
 
186
 
211
187
  stat=$?
212
 
 
213
 
  if test -f "$tmpdepfile"; then :
214
 
  else
215
 
    stripped=`echo "$stripped" | sed 's,^.*/,,'`
216
 
    tmpdepfile="$stripped.u"
217
 
  fi
218
 
 
219
188
  if test $stat -eq 0; then :
220
189
  else
221
190
    rm -f "$tmpdepfile"
223
192
  fi
224
193
 
225
194
  if test -f "$tmpdepfile"; then
226
 
    outname="$stripped.o"
227
195
    # Each line is of the form `foo.o: dependent.h'.
228
196
    # Do two passes, one to just change these to
229
197
    # `$object: dependent.h' and one to simply `dependent.h:'.
238
206
  rm -f "$tmpdepfile"
239
207
  ;;
240
208
 
241
 
icc)
242
 
  # Intel's C compiler understands `-MD -MF file'.  However on
243
 
  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
244
 
  # ICC 7.0 will fill foo.d with something like
245
 
  #    foo.o: sub/foo.c
246
 
  #    foo.o: sub/foo.h
247
 
  # which is wrong.  We want:
248
 
  #    sub/foo.o: sub/foo.c
249
 
  #    sub/foo.o: sub/foo.h
250
 
  #    sub/foo.c:
251
 
  #    sub/foo.h:
252
 
  # ICC 7.1 will output
253
 
  #    foo.o: sub/foo.c sub/foo.h
254
 
  # and will wrap long lines using \ :
255
 
  #    foo.o: sub/foo.c ... \
256
 
  #     sub/foo.h ... \
257
 
  #     ...
258
 
 
259
 
  "$@" -MD -MF "$tmpdepfile"
260
 
  stat=$?
261
 
  if test $stat -eq 0; then :
262
 
  else
263
 
    rm -f "$tmpdepfile"
264
 
    exit $stat
265
 
  fi
266
 
  rm -f "$depfile"
267
 
  # Each line is of the form `foo.o: dependent.h',
268
 
  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
269
 
  # Do two passes, one to just change these to
270
 
  # `$object: dependent.h' and one to simply `dependent.h:'.
271
 
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
272
 
  # Some versions of the HPUX 10.20 sed can't process this invocation
273
 
  # correctly.  Breaking it into two sed invocations is a workaround.
274
 
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
275
 
    sed -e 's/$/ :/' >> "$depfile"
276
 
  rm -f "$tmpdepfile"
277
 
  ;;
278
 
 
279
209
tru64)
280
210
   # The Tru64 compiler uses -MD to generate dependencies as a side
281
211
   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
282
 
   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
 
212
   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 
283
213
   # dependencies in `foo.d' instead, so we check for that too.
284
214
   # Subdirectories are respected.
285
 
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
286
 
   test "x$dir" = "x$object" && dir=
287
 
   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
288
215
 
 
216
   base=`echo "$object" | sed -e 's/\.o$//' -e 's/\.lo$//'`
 
217
   tmpdepfile1="$base.o.d"
 
218
   tmpdepfile2="$base.d"
289
219
   if test "$libtool" = yes; then
290
 
      # With Tru64 cc, shared objects can also be used to make a
291
 
      # static library.  This mecanism is used in libtool 1.4 series to
292
 
      # handle both shared and static libraries in a single compilation.
293
 
      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
294
 
      #
295
 
      # With libtool 1.5 this exception was removed, and libtool now
296
 
      # generates 2 separate objects for the 2 libraries.  These two
297
 
      # compilations output dependencies in in $dir.libs/$base.o.d and
298
 
      # in $dir$base.o.d.  We have to check for both files, because
299
 
      # one of the two compilations can be disabled.  We should prefer
300
 
      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
301
 
      # automatically cleaned when .libs/ is deleted, while ignoring
302
 
      # the former would cause a distcleancheck panic.
303
 
      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
304
 
      tmpdepfile2=$dir$base.o.d          # libtool 1.5
305
 
      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
306
 
      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
307
220
      "$@" -Wc,-MD
308
221
   else
309
 
      tmpdepfile1=$dir$base.o.d
310
 
      tmpdepfile2=$dir$base.d
311
 
      tmpdepfile3=$dir$base.d
312
 
      tmpdepfile4=$dir$base.d
313
222
      "$@" -MD
314
223
   fi
315
224
 
316
225
   stat=$?
317
226
   if test $stat -eq 0; then :
318
227
   else
319
 
      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
 
228
      rm -f "$tmpdepfile1" "$tmpdepfile2"
320
229
      exit $stat
321
230
   fi
322
231
 
323
 
   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
324
 
   do
325
 
     test -f "$tmpdepfile" && break
326
 
   done
 
232
   if test -f "$tmpdepfile1"; then
 
233
      tmpdepfile="$tmpdepfile1"
 
234
   else
 
235
      tmpdepfile="$tmpdepfile2"
 
236
   fi
327
237
   if test -f "$tmpdepfile"; then
328
238
      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
329
 
      # That's a tab and a space in the [].
330
 
      sed -e 's,^.*\.[a-z]*:[    ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
 
239
      # That's a space and a tab in the [].
 
240
      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
331
241
   else
332
242
      echo "#dummy" > "$depfile"
333
243
   fi
340
250
 
341
251
dashmstdout)
342
252
  # Important note: in order to support this mode, a compiler *must*
343
 
  # always write the preprocessed file to stdout, regardless of -o.
344
 
  "$@" || exit $?
345
 
 
346
 
  # Remove the call to Libtool.
347
 
  if test "$libtool" = yes; then
348
 
    while test $1 != '--mode=compile'; do
349
 
      shift
350
 
    done
351
 
    shift
352
 
  fi
353
 
 
354
 
  # Remove `-o $object'.
355
 
  IFS=" "
356
 
  for arg
357
 
  do
358
 
    case $arg in
359
 
    -o)
360
 
      shift
361
 
      ;;
362
 
    $object)
363
 
      shift
364
 
      ;;
365
 
    *)
366
 
      set fnord "$@" "$arg"
367
 
      shift # fnord
368
 
      shift # $arg
369
 
      ;;
370
 
    esac
371
 
  done
372
 
 
 
253
  # always write the proprocessed file to stdout, regardless of -o,
 
254
  # because we must use -o when running libtool.
373
255
  test -z "$dashmflag" && dashmflag=-M
374
 
  # Require at least two characters before searching for `:'
375
 
  # in the target name.  This is to cope with DOS-style filenames:
376
 
  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
377
 
  "$@" $dashmflag |
378
 
    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
 
256
  ( IFS=" "
 
257
    case " $* " in
 
258
    *" --mode=compile "*) # this is libtool, let us make it quiet
 
259
      for arg
 
260
      do # cycle over the arguments
 
261
        case "$arg" in
 
262
        "--mode=compile")
 
263
          # insert --quiet before "--mode=compile"
 
264
          set fnord "$@" --quiet
 
265
          shift # fnord
 
266
          ;;
 
267
        esac
 
268
        set fnord "$@" "$arg"
 
269
        shift # fnord
 
270
        shift # "$arg"
 
271
      done
 
272
      ;;
 
273
    esac
 
274
    "$@" $dashmflag | sed 's:^[^:]*\:[  ]*:'"$object"'\: :' > "$tmpdepfile"
 
275
  ) &
 
276
  proc=$!
 
277
  "$@"
 
278
  stat=$?
 
279
  wait "$proc"
 
280
  if test "$stat" != 0; then exit $stat; fi
379
281
  rm -f "$depfile"
380
282
  cat < "$tmpdepfile" > "$depfile"
381
283
  tr ' ' '
393
295
  ;;
394
296
 
395
297
makedepend)
396
 
  "$@" || exit $?
397
 
  # Remove any Libtool call
398
 
  if test "$libtool" = yes; then
399
 
    while test $1 != '--mode=compile'; do
400
 
      shift
401
 
    done
402
 
    shift
403
 
  fi
404
298
  # X makedepend
405
 
  shift
406
 
  cleared=no
407
 
  for arg in "$@"; do
408
 
    case $cleared in
409
 
    no)
410
 
      set ""; shift
411
 
      cleared=yes ;;
412
 
    esac
413
 
    case "$arg" in
414
 
    -D*|-I*)
415
 
      set fnord "$@" "$arg"; shift ;;
416
 
    # Strip any option that makedepend may not understand.  Remove
417
 
    # the object too, otherwise makedepend will parse it as a source file.
418
 
    -*|$object)
419
 
      ;;
420
 
    *)
421
 
      set fnord "$@" "$arg"; shift ;;
422
 
    esac
423
 
  done
424
 
  obj_suffix="`echo $object | sed 's/^.*\././'`"
425
 
  touch "$tmpdepfile"
426
 
  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
 
299
  (
 
300
    shift
 
301
    cleared=no
 
302
    for arg in "$@"; do
 
303
      case $cleared in no)
 
304
        set ""; shift
 
305
        cleared=yes
 
306
      esac
 
307
      case "$arg" in
 
308
        -D*|-I*)
 
309
          set fnord "$@" "$arg"; shift;;
 
310
        -*)
 
311
          ;;
 
312
        *)
 
313
          set fnord "$@" "$arg"; shift;;
 
314
      esac
 
315
    done
 
316
    obj_suffix="`echo $object | sed 's/^.*\././'`"
 
317
    touch "$tmpdepfile"
 
318
    ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
 
319
  ) &
 
320
  proc=$!
 
321
  "$@"
 
322
  stat=$?
 
323
  wait "$proc"
 
324
  if test "$stat" != 0; then exit $stat; fi
427
325
  rm -f "$depfile"
428
326
  cat < "$tmpdepfile" > "$depfile"
429
327
  sed '1,2d' "$tmpdepfile" | tr ' ' '
436
334
 
437
335
cpp)
438
336
  # Important note: in order to support this mode, a compiler *must*
439
 
  # always write the preprocessed file to stdout.
440
 
  "$@" || exit $?
441
 
 
442
 
  # Remove the call to Libtool.
443
 
  if test "$libtool" = yes; then
444
 
    while test $1 != '--mode=compile'; do
445
 
      shift
446
 
    done
447
 
    shift
448
 
  fi
449
 
 
450
 
  # Remove `-o $object'.
451
 
  IFS=" "
452
 
  for arg
453
 
  do
454
 
    case $arg in
455
 
    -o)
456
 
      shift
457
 
      ;;
458
 
    $object)
459
 
      shift
460
 
      ;;
461
 
    *)
462
 
      set fnord "$@" "$arg"
463
 
      shift # fnord
464
 
      shift # $arg
 
337
  # always write the proprocessed file to stdout, regardless of -o,
 
338
  # because we must use -o when running libtool.
 
339
  ( IFS=" "
 
340
    case " $* " in
 
341
    *" --mode=compile "*)
 
342
      for arg
 
343
      do # cycle over the arguments
 
344
        case $arg in
 
345
        "--mode=compile")
 
346
          # insert --quiet before "--mode=compile"
 
347
          set fnord "$@" --quiet
 
348
          shift # fnord
 
349
          ;;
 
350
        esac
 
351
        set fnord "$@" "$arg"
 
352
        shift # fnord
 
353
        shift # "$arg"
 
354
      done
465
355
      ;;
466
356
    esac
467
 
  done
468
 
 
469
 
  "$@" -E |
470
 
    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
471
 
       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
 
357
    "$@" -E |
 
358
    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
472
359
    sed '$ s: \\$::' > "$tmpdepfile"
 
360
  ) &
 
361
  proc=$!
 
362
  "$@"
 
363
  stat=$?
 
364
  wait "$proc"
 
365
  if test "$stat" != 0; then exit $stat; fi
473
366
  rm -f "$depfile"
474
367
  echo "$object : \\" > "$depfile"
475
368
  cat < "$tmpdepfile" >> "$depfile"
479
372
 
480
373
msvisualcpp)
481
374
  # Important note: in order to support this mode, a compiler *must*
482
 
  # always write the preprocessed file to stdout, regardless of -o,
 
375
  # always write the proprocessed file to stdout, regardless of -o,
483
376
  # because we must use -o when running libtool.
484
 
  "$@" || exit $?
485
 
  IFS=" "
486
 
  for arg
487
 
  do
488
 
    case "$arg" in
489
 
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
 
377
  ( IFS=" "
 
378
    case " $* " in
 
379
    *" --mode=compile "*)
 
380
      for arg
 
381
      do # cycle over the arguments
 
382
        case $arg in
 
383
        "--mode=compile")
 
384
          # insert --quiet before "--mode=compile"
 
385
          set fnord "$@" --quiet
 
386
          shift # fnord
 
387
          ;;
 
388
        esac
 
389
        set fnord "$@" "$arg"
 
390
        shift # fnord
 
391
        shift # "$arg"
 
392
      done
 
393
      ;;
 
394
    esac
 
395
    for arg
 
396
    do
 
397
      case "$arg" in
 
398
      "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
490
399
        set fnord "$@"
491
400
        shift
492
401
        shift
493
402
        ;;
494
 
    *)
 
403
      *)
495
404
        set fnord "$@" "$arg"
496
405
        shift
497
406
        shift
498
407
        ;;
499
 
    esac
500
 
  done
501
 
  "$@" -E |
502
 
  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
 
408
      esac
 
409
    done
 
410
    "$@" -E |
 
411
    sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
 
412
  ) &
 
413
  proc=$!
 
414
  "$@"
 
415
  stat=$?
 
416
  wait "$proc"
 
417
  if test "$stat" != 0; then exit $stat; fi
503
418
  rm -f "$depfile"
504
419
  echo "$object : \\" > "$depfile"
505
420
  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::    \1 \\:p' >> "$depfile"
519
434
esac
520
435
 
521
436
exit 0
522
 
 
523
 
# Local Variables:
524
 
# mode: shell-script
525
 
# sh-indentation: 2
526
 
# eval: (add-hook 'write-file-hooks 'time-stamp)
527
 
# time-stamp-start: "scriptversion="
528
 
# time-stamp-format: "%:y-%02m-%02d.%02H"
529
 
# time-stamp-end: "$"
530
 
# End: