/rusxmms/librcc

To get this branch, use:
bzr branch http://suren.me/webbzr/rusxmms/librcc

« back to all changes in this revision

Viewing changes to depcomp

  • Committer: Suren A. Chilingaryan
  • Date: 2013-11-16 00:17:56 UTC
  • Revision ID: csa@dside.dyndns.org-20131116001756-qz8dfb6q6fue6r1l
Compatibility with older automake and fixes to release script

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 Free Software Foundation, Inc.
 
3
 
 
4
scriptversion=2005-07-09.11
 
5
 
 
6
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
5
7
 
6
8
# This program is free software; you can redistribute it and/or modify
7
9
# it under the terms of the GNU General Public License as published by
15
17
 
16
18
# You should have received a copy of the GNU General Public License
17
19
# 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
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 
21
# 02110-1301, USA.
20
22
 
21
23
# As a special exception to the GNU General Public License, if you
22
24
# distribute this file as part of a program that contains a
25
27
 
26
28
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
27
29
 
 
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
 
28
61
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
29
62
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
30
63
  exit 1
31
64
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
 
 
 
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|'`}
44
69
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
45
70
 
46
71
rm -f "$tmpdepfile"
172
197
 
173
198
aix)
174
199
  # The C for AIX Compiler uses -M and outputs the dependencies
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/'`
 
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/'`
179
205
  tmpdepfile="$stripped.u"
180
 
  outname="$stripped.o"
181
206
  if test "$libtool" = yes; then
182
207
    "$@" -Wc,-M
183
208
  else
184
209
    "$@" -M
185
210
  fi
186
 
 
187
211
  stat=$?
 
212
 
 
213
  if test -f "$tmpdepfile"; then :
 
214
  else
 
215
    stripped=`echo "$stripped" | sed 's,^.*/,,'`
 
216
    tmpdepfile="$stripped.u"
 
217
  fi
 
218
 
188
219
  if test $stat -eq 0; then :
189
220
  else
190
221
    rm -f "$tmpdepfile"
192
223
  fi
193
224
 
194
225
  if test -f "$tmpdepfile"; then
 
226
    outname="$stripped.o"
195
227
    # Each line is of the form `foo.o: dependent.h'.
196
228
    # Do two passes, one to just change these to
197
229
    # `$object: dependent.h' and one to simply `dependent.h:'.
206
238
  rm -f "$tmpdepfile"
207
239
  ;;
208
240
 
 
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
 
209
279
tru64)
210
280
   # The Tru64 compiler uses -MD to generate dependencies as a side
211
281
   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
217
287
   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
218
288
 
219
289
   if test "$libtool" = yes; then
220
 
      tmpdepfile1="$dir.libs/$base.lo.d"
221
 
      tmpdepfile2="$dir.libs/$base.d"
 
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
222
307
      "$@" -Wc,-MD
223
308
   else
224
 
      tmpdepfile1="$dir$base.o.d"
225
 
      tmpdepfile2="$dir$base.d"
 
309
      tmpdepfile1=$dir$base.o.d
 
310
      tmpdepfile2=$dir$base.d
 
311
      tmpdepfile3=$dir$base.d
 
312
      tmpdepfile4=$dir$base.d
226
313
      "$@" -MD
227
314
   fi
228
315
 
229
316
   stat=$?
230
317
   if test $stat -eq 0; then :
231
318
   else
232
 
      rm -f "$tmpdepfile1" "$tmpdepfile2"
 
319
      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
233
320
      exit $stat
234
321
   fi
235
322
 
236
 
   if test -f "$tmpdepfile1"; then
237
 
      tmpdepfile="$tmpdepfile1"
238
 
   else
239
 
      tmpdepfile="$tmpdepfile2"
240
 
   fi
 
323
   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
 
324
   do
 
325
     test -f "$tmpdepfile" && break
 
326
   done
241
327
   if test -f "$tmpdepfile"; then
242
328
      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
243
 
      # That's a space and a tab in the [].
244
 
      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
 
329
      # That's a tab and a space in the [].
 
330
      sed -e 's,^.*\.[a-z]*:[    ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
245
331
   else
246
332
      echo "#dummy" > "$depfile"
247
333
   fi
254
340
 
255
341
dashmstdout)
256
342
  # Important note: in order to support this mode, a compiler *must*
257
 
  # always write the proprocessed file to stdout, regardless of -o.
 
343
  # always write the preprocessed file to stdout, regardless of -o.
258
344
  "$@" || exit $?
259
345
 
260
346
  # Remove the call to Libtool.
265
351
    shift
266
352
  fi
267
353
 
268
 
  # Remove `-o $object'.  We will use -o /dev/null later,
269
 
  # however we can't do the remplacement now because
270
 
  # `-o $object' might simply not be used
 
354
  # Remove `-o $object'.
271
355
  IFS=" "
272
356
  for arg
273
357
  do
287
371
  done
288
372
 
289
373
  test -z "$dashmflag" && dashmflag=-M
290
 
  "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[       ]*:'"$object"'\: :' > "$tmpdepfile"
 
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"
291
379
  rm -f "$depfile"
292
380
  cat < "$tmpdepfile" > "$depfile"
293
381
  tr ' ' '
306
394
 
307
395
makedepend)
308
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
309
404
  # X makedepend
310
405
  shift
311
406
  cleared=no
318
413
    case "$arg" in
319
414
    -D*|-I*)
320
415
      set fnord "$@" "$arg"; shift ;;
321
 
    -*)
 
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)
322
419
      ;;
323
420
    *)
324
421
      set fnord "$@" "$arg"; shift ;;
339
436
 
340
437
cpp)
341
438
  # Important note: in order to support this mode, a compiler *must*
342
 
  # always write the proprocessed file to stdout.
 
439
  # always write the preprocessed file to stdout.
343
440
  "$@" || exit $?
344
441
 
345
442
  # Remove the call to Libtool.
370
467
  done
371
468
 
372
469
  "$@" -E |
373
 
    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
 
470
    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
 
471
       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
374
472
    sed '$ s: \\$::' > "$tmpdepfile"
375
473
  rm -f "$depfile"
376
474
  echo "$object : \\" > "$depfile"
381
479
 
382
480
msvisualcpp)
383
481
  # Important note: in order to support this mode, a compiler *must*
384
 
  # always write the proprocessed file to stdout, regardless of -o,
 
482
  # always write the preprocessed file to stdout, regardless of -o,
385
483
  # because we must use -o when running libtool.
386
484
  "$@" || exit $?
387
485
  IFS=" "
421
519
esac
422
520
 
423
521
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: