3
2
# depcomp - compile a program generating dependencies as side-effects
4
# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
4
scriptversion=2005-07-09.11
6
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
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
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
20
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
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
26
28
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
32
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
37
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
39
Run PROGRAMS ARGS to compile a file, generating dependencies
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).
51
Report bugs to <bug-automake@gnu.org>.
56
echo "depcomp $scriptversion"
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
32
# `libtool' can also be set to `yes' or `no'.
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
40
# FIXME: should be _deps on DOS.
41
depfile="$dir.deps/$base"
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/'`}
46
71
rm -f "$tmpdepfile"
262
287
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
264
289
if test "$libtool" = yes; then
265
tmpdepfile1="$dir.libs/$base.lo.d"
266
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.
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
269
tmpdepfile1="$dir$base.o.d"
270
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
275
317
if test $stat -eq 0; then :
277
rm -f "$tmpdepfile1" "$tmpdepfile2"
319
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
281
if test -f "$tmpdepfile1"; then
282
tmpdepfile="$tmpdepfile1"
284
tmpdepfile="$tmpdepfile2"
323
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
325
test -f "$tmpdepfile" && break
286
327
if test -f "$tmpdepfile"; then
287
328
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
288
329
# That's a tab and a space in the [].
429
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' |
430
472
sed '$ s: \\$::' > "$tmpdepfile"
432
474
echo "$object : \\" > "$depfile"