~ubuntu-branches/ubuntu/trusty/system-tools-backends/trusty

« back to all changes in this revision

Viewing changes to depcomp

  • Committer: Package Import Robot
  • Author(s): Michael Biebl
  • Date: 2011-10-22 17:15:14 UTC
  • mfrom: (1.2.11 sid)
  • Revision ID: package-import@ubuntu.com-20111022171514-2r667rth6ocud5s8
Tags: 2.10.2-1
* New upstream release.
* debian/watch:
  - Track .bz2 tarballs.
* Refresh debian/patches/04_empty_ntp.patch.
* Bump debhelper compatibility level to 8.
  - Update Build-Depends on debhelper.
  - Strip debian/tmp/ from .install files.
* debian/control.in:
 - Bump Standards-Version to 3.9.2. No further changes.
 - Update Vcs-* URLs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#! /bin/sh
2
 
 
3
2
# depcomp - compile a program generating dependencies as side-effects
4
 
# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
 
3
 
 
4
scriptversion=2009-04-28.21; # UTC
 
5
 
 
6
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
 
7
# Software Foundation, Inc.
5
8
 
6
9
# This program is free software; you can redistribute it and/or modify
7
10
# it under the terms of the GNU General Public License as published by
14
17
# GNU General Public License for more details.
15
18
 
16
19
# You should have received a copy of the GNU General Public License
17
 
# along with this program; if not, write to the Free Software
18
 
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19
 
# 02111-1307, USA.
 
20
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21
 
21
22
# As a special exception to the GNU General Public License, if you
22
23
# distribute this file as part of a program that contains a
25
26
 
26
27
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
27
28
 
 
29
case $1 in
 
30
  '')
 
31
     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
 
32
     exit 1;
 
33
     ;;
 
34
  -h | --h*)
 
35
    cat <<\EOF
 
36
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
 
37
 
 
38
Run PROGRAMS ARGS to compile a file, generating dependencies
 
39
as side-effects.
 
40
 
 
41
Environment variables:
 
42
  depmode     Dependency tracking mode.
 
43
  source      Source file read by `PROGRAMS ARGS'.
 
44
  object      Object file output by `PROGRAMS ARGS'.
 
45
  DEPDIR      directory where to store dependencies.
 
46
  depfile     Dependency file to output.
 
47
  tmpdepfile  Temporary file to use when outputing dependencies.
 
48
  libtool     Whether libtool is used (yes/no).
 
49
 
 
50
Report bugs to <bug-automake@gnu.org>.
 
51
EOF
 
52
    exit $?
 
53
    ;;
 
54
  -v | --v*)
 
55
    echo "depcomp $scriptversion"
 
56
    exit $?
 
57
    ;;
 
58
esac
 
59
 
28
60
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
29
61
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
30
62
  exit 1
31
63
fi
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
 
 
 
64
 
 
65
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
 
66
depfile=${depfile-`echo "$object" |
 
67
  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
44
68
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
45
69
 
46
70
rm -f "$tmpdepfile"
61
85
   depmode=dashmstdout
62
86
fi
63
87
 
 
88
cygpath_u="cygpath -u -f -"
 
89
if test "$depmode" = msvcmsys; then
 
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
 
95
fi
 
96
 
64
97
case "$depmode" in
65
98
gcc3)
66
99
## gcc 3 implements dependency tracking that does exactly what
67
100
## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
68
101
## it if -MD -MP comes after the -MF stuff.  Hmm.
69
 
  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
 
102
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
 
103
## the command line argument order; so add the flags where they
 
104
## appear in depend2.am.  Note that the slowdown incurred here
 
105
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
 
106
  for arg
 
107
  do
 
108
    case $arg in
 
109
    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
 
110
    *)  set fnord "$@" "$arg" ;;
 
111
    esac
 
112
    shift # fnord
 
113
    shift # $arg
 
114
  done
 
115
  "$@"
70
116
  stat=$?
71
117
  if test $stat -eq 0; then :
72
118
  else
153
199
' < "$tmpdepfile" \
154
200
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
155
201
    tr '
156
 
' ' ' >> $depfile
157
 
    echo >> $depfile
 
202
' ' ' >> "$depfile"
 
203
    echo >> "$depfile"
158
204
 
159
205
    # The second pass generates a dummy entry for each header file.
160
206
    tr ' ' '
161
207
' < "$tmpdepfile" \
162
208
   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
163
 
   >> $depfile
 
209
   >> "$depfile"
164
210
  else
165
211
    # The sourcefile does not contain any dependencies, so just
166
212
    # store a dummy comment line, to avoid errors with the Makefile
176
222
  # current directory.  Also, the AIX compiler puts `$object:' at the
177
223
  # start of each line; $object doesn't have directory information.
178
224
  # Version 6 uses the directory in both cases.
179
 
  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
180
 
  tmpdepfile="$stripped.u"
 
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$//'`
181
228
  if test "$libtool" = yes; then
 
229
    tmpdepfile1=$dir$base.u
 
230
    tmpdepfile2=$base.u
 
231
    tmpdepfile3=$dir.libs/$base.u
182
232
    "$@" -Wc,-M
183
233
  else
 
234
    tmpdepfile1=$dir$base.u
 
235
    tmpdepfile2=$dir$base.u
 
236
    tmpdepfile3=$dir$base.u
184
237
    "$@" -M
185
238
  fi
186
239
  stat=$?
187
240
 
188
 
  if test -f "$tmpdepfile"; then :
189
 
  else
190
 
    stripped=`echo "$stripped" | sed 's,^.*/,,'`
191
 
    tmpdepfile="$stripped.u"
192
 
  fi
193
 
 
194
241
  if test $stat -eq 0; then :
195
242
  else
196
 
    rm -f "$tmpdepfile"
 
243
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
197
244
    exit $stat
198
245
  fi
199
246
 
 
247
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
 
248
  do
 
249
    test -f "$tmpdepfile" && break
 
250
  done
200
251
  if test -f "$tmpdepfile"; then
201
 
    outname="$stripped.o"
202
252
    # Each line is of the form `foo.o: dependent.h'.
203
253
    # Do two passes, one to just change these to
204
254
    # `$object: dependent.h' and one to simply `dependent.h:'.
205
 
    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
206
 
    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
 
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"
207
258
  else
208
259
    # The sourcefile does not contain any dependencies, so just
209
260
    # store a dummy comment line, to avoid errors with the Makefile
251
302
  rm -f "$tmpdepfile"
252
303
  ;;
253
304
 
 
305
hp2)
 
306
  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
 
307
  # compilers, which have integrated preprocessors.  The correct option
 
308
  # to use with these is +Maked; it writes dependencies to a file named
 
309
  # 'foo.d', which lands next to the object file, wherever that
 
310
  # happens to be.
 
311
  # Much of this is similar to the tru64 case; see comments there.
 
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$//'`
 
315
  if test "$libtool" = yes; then
 
316
    tmpdepfile1=$dir$base.d
 
317
    tmpdepfile2=$dir.libs/$base.d
 
318
    "$@" -Wc,+Maked
 
319
  else
 
320
    tmpdepfile1=$dir$base.d
 
321
    tmpdepfile2=$dir$base.d
 
322
    "$@" +Maked
 
323
  fi
 
324
  stat=$?
 
325
  if test $stat -eq 0; then :
 
326
  else
 
327
     rm -f "$tmpdepfile1" "$tmpdepfile2"
 
328
     exit $stat
 
329
  fi
 
330
 
 
331
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
 
332
  do
 
333
    test -f "$tmpdepfile" && break
 
334
  done
 
335
  if test -f "$tmpdepfile"; then
 
336
    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
 
337
    # Add `dependent.h:' lines.
 
338
    sed -ne '2,${
 
339
               s/^ *//
 
340
               s/ \\*$//
 
341
               s/$/:/
 
342
               p
 
343
             }' "$tmpdepfile" >> "$depfile"
 
344
  else
 
345
    echo "#dummy" > "$depfile"
 
346
  fi
 
347
  rm -f "$tmpdepfile" "$tmpdepfile2"
 
348
  ;;
 
349
 
254
350
tru64)
255
351
   # The Tru64 compiler uses -MD to generate dependencies as a side
256
352
   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
262
358
   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
263
359
 
264
360
   if test "$libtool" = yes; then
265
 
      tmpdepfile1="$dir.libs/$base.lo.d"
266
 
      tmpdepfile2="$dir.libs/$base.d"
 
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
267
378
      "$@" -Wc,-MD
268
379
   else
269
 
      tmpdepfile1="$dir$base.o.d"
270
 
      tmpdepfile2="$dir$base.d"
 
380
      tmpdepfile1=$dir$base.o.d
 
381
      tmpdepfile2=$dir$base.d
 
382
      tmpdepfile3=$dir$base.d
 
383
      tmpdepfile4=$dir$base.d
271
384
      "$@" -MD
272
385
   fi
273
386
 
274
387
   stat=$?
275
388
   if test $stat -eq 0; then :
276
389
   else
277
 
      rm -f "$tmpdepfile1" "$tmpdepfile2"
 
390
      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
278
391
      exit $stat
279
392
   fi
280
393
 
281
 
   if test -f "$tmpdepfile1"; then
282
 
      tmpdepfile="$tmpdepfile1"
283
 
   else
284
 
      tmpdepfile="$tmpdepfile2"
285
 
   fi
 
394
   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
 
395
   do
 
396
     test -f "$tmpdepfile" && break
 
397
   done
286
398
   if test -f "$tmpdepfile"; then
287
399
      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
288
400
      # That's a tab and a space in the [].
304
416
 
305
417
  # Remove the call to Libtool.
306
418
  if test "$libtool" = yes; then
307
 
    while test $1 != '--mode=compile'; do
 
419
    while test "X$1" != 'X--mode=compile'; do
308
420
      shift
309
421
    done
310
422
    shift
355
467
  "$@" || exit $?
356
468
  # Remove any Libtool call
357
469
  if test "$libtool" = yes; then
358
 
    while test $1 != '--mode=compile'; do
 
470
    while test "X$1" != 'X--mode=compile'; do
359
471
      shift
360
472
    done
361
473
    shift
362
474
  fi
363
475
  # X makedepend
364
476
  shift
365
 
  cleared=no
366
 
  for arg in "$@"; do
 
477
  cleared=no eat=no
 
478
  for arg
 
479
  do
367
480
    case $cleared in
368
481
    no)
369
482
      set ""; shift
370
483
      cleared=yes ;;
371
484
    esac
 
485
    if test $eat = yes; then
 
486
      eat=no
 
487
      continue
 
488
    fi
372
489
    case "$arg" in
373
490
    -D*|-I*)
374
491
      set fnord "$@" "$arg"; shift ;;
375
492
    # Strip any option that makedepend may not understand.  Remove
376
493
    # the object too, otherwise makedepend will parse it as a source file.
 
494
    -arch)
 
495
      eat=yes ;;
377
496
    -*|$object)
378
497
      ;;
379
498
    *)
380
499
      set fnord "$@" "$arg"; shift ;;
381
500
    esac
382
501
  done
383
 
  obj_suffix="`echo $object | sed 's/^.*\././'`"
 
502
  obj_suffix=`echo "$object" | sed 's/^.*\././'`
384
503
  touch "$tmpdepfile"
385
504
  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
386
505
  rm -f "$depfile"
400
519
 
401
520
  # Remove the call to Libtool.
402
521
  if test "$libtool" = yes; then
403
 
    while test $1 != '--mode=compile'; do
 
522
    while test "X$1" != 'X--mode=compile'; do
404
523
      shift
405
524
    done
406
525
    shift
426
545
  done
427
546
 
428
547
  "$@" -E |
429
 
    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
 
548
    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
 
549
       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
430
550
    sed '$ s: \\$::' > "$tmpdepfile"
431
551
  rm -f "$depfile"
432
552
  echo "$object : \\" > "$depfile"
437
557
 
438
558
msvisualcpp)
439
559
  # Important note: in order to support this mode, a compiler *must*
440
 
  # always write the preprocessed file to stdout, regardless of -o,
441
 
  # because we must use -o when running libtool.
 
560
  # always write the preprocessed file to stdout.
442
561
  "$@" || exit $?
 
562
 
 
563
  # Remove the call to Libtool.
 
564
  if test "$libtool" = yes; then
 
565
    while test "X$1" != 'X--mode=compile'; do
 
566
      shift
 
567
    done
 
568
    shift
 
569
  fi
 
570
 
443
571
  IFS=" "
444
572
  for arg
445
573
  do
446
574
    case "$arg" in
 
575
    -o)
 
576
      shift
 
577
      ;;
 
578
    $object)
 
579
      shift
 
580
      ;;
447
581
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
448
582
        set fnord "$@"
449
583
        shift
456
590
        ;;
457
591
    esac
458
592
  done
459
 
  "$@" -E |
460
 
  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
 
593
  "$@" -E 2>/dev/null |
 
594
  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
461
595
  rm -f "$depfile"
462
596
  echo "$object : \\" > "$depfile"
463
 
  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::    \1 \\:p' >> "$depfile"
 
597
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::      \1 \\:p' >> "$depfile"
464
598
  echo "        " >> "$depfile"
465
 
  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
 
599
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
466
600
  rm -f "$tmpdepfile"
467
601
  ;;
468
602
 
 
603
msvcmsys)
 
604
  # This case exists only to let depend.m4 do its work.  It works by
 
605
  # looking at the text of this script.  This case will never be run,
 
606
  # since it is checked for above.
 
607
  exit 1
 
608
  ;;
 
609
 
469
610
none)
470
611
  exec "$@"
471
612
  ;;
477
618
esac
478
619
 
479
620
exit 0
 
621
 
 
622
# Local Variables:
 
623
# mode: shell-script
 
624
# sh-indentation: 2
 
625
# eval: (add-hook 'write-file-hooks 'time-stamp)
 
626
# time-stamp-start: "scriptversion="
 
627
# time-stamp-format: "%:y-%02m-%02d.%02H"
 
628
# time-stamp-time-zone: "UTC"
 
629
# time-stamp-end: "; # UTC"
 
630
# End: