-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Steve Dickson <[email protected]>
- Loading branch information
Showing
8 changed files
with
26,278 additions
and
3,227 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,10 @@ | ||
#! /bin/sh | ||
# depcomp - compile a program generating dependencies as side-effects | ||
|
||
scriptversion=2003-11-08.23 | ||
scriptversion=2006-10-15.18 | ||
|
||
# Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc. | ||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software | ||
# Foundation, Inc. | ||
|
||
# This program is free software; you can redistribute it and/or modify | ||
# it under the terms of the GNU General Public License as published by | ||
|
@@ -17,8 +18,8 @@ scriptversion=2003-11-08.23 | |
|
||
# You should have received a copy of the GNU General Public License | ||
# along with this program; if not, write to the Free Software | ||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | ||
# 02111-1307, USA. | ||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | ||
# 02110-1301, USA. | ||
|
||
# As a special exception to the GNU General Public License, if you | ||
# distribute this file as part of a program that contains a | ||
|
@@ -43,36 +44,29 @@ Environment variables: | |
depmode Dependency tracking mode. | ||
source Source file read by `PROGRAMS ARGS'. | ||
object Object file output by `PROGRAMS ARGS'. | ||
DEPDIR directory where to store dependencies. | ||
depfile Dependency file to output. | ||
tmpdepfile Temporary file to use when outputing dependencies. | ||
libtool Whether libtool is used (yes/no). | ||
Report bugs to <[email protected]>. | ||
EOF | ||
exit 0 | ||
exit $? | ||
;; | ||
-v | --v*) | ||
echo "depcomp $scriptversion" | ||
exit 0 | ||
exit $? | ||
;; | ||
esac | ||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then | ||
echo "depcomp: Variables source, object and depmode must be set" 1>&2 | ||
exit 1 | ||
fi | ||
# `libtool' can also be set to `yes' or `no'. | ||
if test -z "$depfile"; then | ||
base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` | ||
dir=`echo "$object" | sed 's,/.*$,/,'` | ||
if test "$dir" = "$object"; then | ||
dir= | ||
fi | ||
# FIXME: should be _deps on DOS. | ||
depfile="$dir.deps/$base" | ||
fi | ||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. | ||
depfile=${depfile-`echo "$object" | | ||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} | ||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} | ||
rm -f "$tmpdepfile" | ||
|
@@ -98,7 +92,20 @@ gcc3) | |
## gcc 3 implements dependency tracking that does exactly what | ||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like | ||
## it if -MD -MP comes after the -MF stuff. Hmm. | ||
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile" | ||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon | ||
## the command line argument order; so add the flags where they | ||
## appear in depend2.am. Note that the slowdown incurred here | ||
## affects only configure: in makefiles, %FASTDEP% shortcuts this. | ||
for arg | ||
do | ||
case $arg in | ||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; | ||
*) set fnord "$@" "$arg" ;; | ||
esac | ||
shift # fnord | ||
shift # $arg | ||
done | ||
"$@" | ||
stat=$? | ||
if test $stat -eq 0; then : | ||
else | ||
|
@@ -283,6 +290,46 @@ icc) | |
rm -f "$tmpdepfile" | ||
;; | ||
hp2) | ||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64 | ||
# compilers, which have integrated preprocessors. The correct option | ||
# to use with these is +Maked; it writes dependencies to a file named | ||
# 'foo.d', which lands next to the object file, wherever that | ||
# happens to be. | ||
# Much of this is similar to the tru64 case; see comments there. | ||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` | ||
test "x$dir" = "x$object" && dir= | ||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` | ||
if test "$libtool" = yes; then | ||
tmpdepfile1=$dir$base.d | ||
tmpdepfile2=$dir.libs/$base.d | ||
"$@" -Wc,+Maked | ||
else | ||
tmpdepfile1=$dir$base.d | ||
tmpdepfile2=$dir$base.d | ||
"$@" +Maked | ||
fi | ||
stat=$? | ||
if test $stat -eq 0; then : | ||
else | ||
rm -f "$tmpdepfile1" "$tmpdepfile2" | ||
exit $stat | ||
fi | ||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" | ||
do | ||
test -f "$tmpdepfile" && break | ||
done | ||
if test -f "$tmpdepfile"; then | ||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" | ||
# Add `dependent.h:' lines. | ||
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" | ||
else | ||
echo "#dummy" > "$depfile" | ||
fi | ||
rm -f "$tmpdepfile" "$tmpdepfile2" | ||
;; | ||
tru64) | ||
# The Tru64 compiler uses -MD to generate dependencies as a side | ||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. | ||
|
@@ -294,27 +341,43 @@ tru64) | |
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` | ||
if test "$libtool" = yes; then | ||
tmpdepfile1="$dir.libs/$base.lo.d" | ||
tmpdepfile2="$dir.libs/$base.d" | ||
# With Tru64 cc, shared objects can also be used to make a | ||
# static library. This mechanism is used in libtool 1.4 series to | ||
# handle both shared and static libraries in a single compilation. | ||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. | ||
# | ||
# With libtool 1.5 this exception was removed, and libtool now | ||
# generates 2 separate objects for the 2 libraries. These two | ||
# compilations output dependencies in $dir.libs/$base.o.d and | ||
# in $dir$base.o.d. We have to check for both files, because | ||
# one of the two compilations can be disabled. We should prefer | ||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is | ||
# automatically cleaned when .libs/ is deleted, while ignoring | ||
# the former would cause a distcleancheck panic. | ||
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 | ||
tmpdepfile2=$dir$base.o.d # libtool 1.5 | ||
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 | ||
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 | ||
"$@" -Wc,-MD | ||
else | ||
tmpdepfile1="$dir$base.o.d" | ||
tmpdepfile2="$dir$base.d" | ||
tmpdepfile1=$dir$base.o.d | ||
tmpdepfile2=$dir$base.d | ||
tmpdepfile3=$dir$base.d | ||
tmpdepfile4=$dir$base.d | ||
"$@" -MD | ||
fi | ||
stat=$? | ||
if test $stat -eq 0; then : | ||
else | ||
rm -f "$tmpdepfile1" "$tmpdepfile2" | ||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" | ||
exit $stat | ||
fi | ||
if test -f "$tmpdepfile1"; then | ||
tmpdepfile="$tmpdepfile1" | ||
else | ||
tmpdepfile="$tmpdepfile2" | ||
fi | ||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" | ||
do | ||
test -f "$tmpdepfile" && break | ||
done | ||
if test -f "$tmpdepfile"; then | ||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" | ||
# That's a tab and a space in the []. | ||
|
@@ -458,7 +521,8 @@ cpp) | |
done | ||
"$@" -E | | ||
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | | ||
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | ||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | | ||
sed '$ s: \\$::' > "$tmpdepfile" | ||
rm -f "$depfile" | ||
echo "$object : \\" > "$depfile" | ||
|
Oops, something went wrong.