summaryrefslogtreecommitdiff
path: root/makedepend.SH
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>1999-07-25 12:27:20 +0000
committerJarkko Hietaniemi <jhi@iki.fi>1999-07-25 12:27:20 +0000
commitb233458bd1d5037ce4bbbb41fb513e1b68522a4d (patch)
treec536cfd69a2b5a6fd972074b496e5ef5473cc69c /makedepend.SH
parent781b178c230df22350b5995b4bfdfeb294912a39 (diff)
downloadperl-b233458bd1d5037ce4bbbb41fb513e1b68522a4d.tar.gz
First steps of making builds outside the source
directory possible. These should get us as far as miniperl, then building DynaLoader falls into tiny twinkling pieces as MakeMaker knows nothing of VPATH mindset. p4raw-id: //depot/cfgperl@3735
Diffstat (limited to 'makedepend.SH')
-rwxr-xr-xmakedepend.SH51
1 files changed, 33 insertions, 18 deletions
diff --git a/makedepend.SH b/makedepend.SH
index e1c28468bd..e26c50e09f 100755
--- a/makedepend.SH
+++ b/makedepend.SH
@@ -26,13 +26,14 @@ $startsh
#
MAKE=$make
trnl='$trnl'
+src=$src
!GROK!THIS!
$spitshell >>makedepend <<'!NO!SUBS!'
# This script should be called with
-# sh ./makedepend MAKE=$(MAKE)
+# sh ./makedepend MAKE=$(MAKE) [src=$(src)]
case "$1" in
- MAKE=*) eval $1 ;;
+ MAKE=*) eval $1 ; shift ;;
esac
export PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh \$0; kill \$\$)
@@ -51,6 +52,10 @@ case $CONFIGDOTSH in
;;
esac
+case "$1" in
+ src=*) eval $1 ; shift ;;
+esac
+
# We need .. when we are in the x2p directory if we are using the
# cppstdin wrapper script.
# Put .. and . first so that we pick up the present cppstdin, not
@@ -95,9 +100,18 @@ esac
: might be identical
$test -d UU || mkdir UU
-$MAKE clist || ($echo "Searching for .c files..."; \
- $echo *.c | $tr ' ' $trnl | $egrep -v '\*' >.clist)
-for file in `$cat .clist`; do
+$MAKE clist || (cd $src; $echo "Searching for .c files..."; \
+ $echo *.c | $tr ' ' $trnl | $egrep -v '\*') >.clist
+for base in `$cat .clist`; do
+ case "$src" in
+ .) file="$base" ;;
+ *) if test -f "$base"; then
+ file="$base"
+ elif test -f "$src/$base"; then
+ file="$src/$base"
+ fi
+ ;;
+ esac
# for file in `cat /dev/null`; do
if [ "$osname" = uwin ]; then
uwinfix="-e s,\\\\\\\\,/,g -e s,\\([a-zA-Z]\\):/,/\\1/,g"
@@ -113,14 +127,15 @@ for file in `$cat .clist`; do
fi
fi
case "$file" in
- *.c) filebase=`basename $file .c` ;;
- *.y) filebase=`basename $file .y` ;;
- esac
- case "$file" in
*/*) finc="-I`echo $file | sed 's#/[^/]*$##`" ;;
*) finc= ;;
esac
- $echo "Finding dependencies for $filebase$_o."
+ case "$src" in
+ '') ;;
+ *) finc="-I$src" ;;
+ esac
+ basebase=`basename $base .c`
+ $echo "Finding dependencies for $basebase$_o."
( $echo "#line 1 \"$file\""; \
$sed -n <$file \
-e "/^${filebase}_init(/q" \
@@ -129,16 +144,16 @@ for file in `$cat .clist`; do
-e 's|/\*.*$||' \
-e 's|\\$||' \
-e p \
- -e '}' ) >UU/$file.c
- $cppstdin $finc -I. $cppflags $cppminus <UU/$file.c |
+ -e '}' ) >UU/$base.c
+ $cppstdin $finc -I. $cppflags $cppminus <UU/$base.c |
$sed \
-e '/^#.*<stdin>/d' \
-e '/^#.*"-"/d' \
-e 's#\.[0-9][0-9]*\.c#'"$file.c#" \
-e 's/^[ ]*#[ ]*line/#/' \
-e '/^# *[0-9][0-9]* *[".\/]/!d' \
- -e 's/^.*"\(.*\)".*$/'$filebase'\$(OBJ_EXT): \1/' \
- -e 's/^# *[0-9][0-9]* \(.*\)$/'$filebase'\$(OBJ_EXT): \1/' \
+ -e 's/^.*"\(.*\)".*$/'$base'\$(OBJ_EXT): \1/' \
+ -e 's/^# *[0-9][0-9]* \(.*\)$/'$base'\$(OBJ_EXT): \1/' \
-e 's|: \./|: |' \
-e 's|\.c\.c|.c|' $uwinfix | \
$uniq | $sort | $uniq >> .deptmp
@@ -146,8 +161,8 @@ done
$sed <$mf >$mf.new -e '1,/^# AUTOMATICALLY/!d'
-$MAKE shlist || ($echo "Searching for .SH files..."; \
- $echo *.SH | $tr ' ' $trnl | $egrep -v '\*' >.shlist)
+$MAKE shlist || (cd $src; $echo "Searching for .SH files..."; \
+ $echo *.SH | $tr ' ' $trnl | $egrep -v '\*') >.shlist
# Now extract the dependencies on makedepend.SH and Makefile.SH
# (they should reside in the main Makefile):
@@ -176,8 +191,8 @@ if $test -s .deptmp; then
$sed 's|^\(.*\$(OBJ_EXT):\) *\(.*/.*\.c\) *$|\1 \2; '"$defrule \2|" .deptmp \
>>$mf.new
else
- $MAKE hlist || ($echo "Searching for .h files..."; \
- $echo *.h | $tr ' ' $trnl | $egrep -v '\*' >.hlist)
+ $MAKE hlist || (cd $src; $echo "Searching for .h files..."; \
+ $echo *.h | $tr ' ' $trnl | $egrep -v '\*') >.hlist
$echo "You don't seem to have a proper C preprocessor. Using grep instead."
$egrep '^#include ' `cat .clist` `cat .hlist` >.deptmp
$echo "Updating $mf..."