X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=makedepend.SH;h=688f65602ed459434bfe60d6dbec61213d295be8;hb=c5375c28ff9f285618d7079f4044f72aad1773ab;hp=e26c50e09faeb358831d6ec1de99c37bcdea4753;hpb=b233458bd1d5037ce4bbbb41fb513e1b68522a4d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/makedepend.SH b/makedepend.SH index e26c50e..688f656 100755 --- a/makedepend.SH +++ b/makedepend.SH @@ -1,5 +1,5 @@ #! /bin/sh -case $CONFIGDOTSH in +case $PERL_CONFIG_SH in '') if test -f config.sh; then TOP=.; elif test -f ../config.sh; then TOP=..; @@ -26,19 +26,25 @@ $startsh # MAKE=$make trnl='$trnl' -src=$src !GROK!THIS! $spitshell >>makedepend <<'!NO!SUBS!' +if test -d .depending; then + echo "$0: Already running, exiting." + exit 0 +fi + +mkdir .depending + # This script should be called with -# sh ./makedepend MAKE=$(MAKE) [src=$(src)] +# sh ./makedepend MAKE=$(MAKE) case "$1" in - MAKE=*) eval $1 ; shift ;; + MAKE=*) eval $1 ;; esac export PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh \$0; kill \$\$) -case $CONFIGDOTSH in +case $PERL_CONFIG_SH in '') if test -f config.sh; then TOP=.; elif test -f ../config.sh; then TOP=..; @@ -52,8 +58,9 @@ case $CONFIGDOTSH in ;; esac -case "$1" in - src=*) eval $1 ; shift ;; +# Avoid localized gcc messages +case "$ccname" in + gcc) LC_ALL=C ; export LC_ALL ;; esac # We need .. when we are in the x2p directory if we are using the @@ -63,6 +70,10 @@ esac PATH=".$path_sep..$path_sep$PATH" export PATH +case "$osname" in +amigaos) cat=/bin/cat ;; # must be absolute +esac + $cat /dev/null >.deptmp $rm -f *.c.c c/*.c.c if test -f Makefile; then @@ -100,42 +111,27 @@ esac : might be identical $test -d UU || mkdir UU -$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 +$MAKE clist || ($echo "Searching for .c files..."; \ + $echo *.c | $tr ' ' $trnl | $egrep -v '\*' >.clist) +for file in `$cat .clist`; do # for file in `cat /dev/null`; do - if [ "$osname" = uwin ]; then - uwinfix="-e s,\\\\\\\\,/,g -e s,\\([a-zA-Z]\\):/,/\\1/,g" - else - if [ "$osname" = os2 ]; then - uwinfix="-e s,\\\\\\\\,/,g" - else - if [ "$archname" = cygwin32 ]; then - uwinfix="-e s,\\\\\\\\,/,g" - else - uwinfix= - fi - fi - fi + case "$osname" in + uwin) uwinfix="-e s,\\\\\\\\,/,g -e s,\\([a-zA-Z]\\):/,/\\1/,g" ;; + os2) uwinfix="-e s,\\\\\\\\,/,g" ;; + cygwin) uwinfix="-e s,\\\\\\\\,/,g" ;; + posix-bc) uwinfix="-e s/\\*POSIX(\\(.*\\))/\\1/" ;; + vos) uwinfix="-e s/\#/\\\#/" ;; + *) uwinfix="" ;; + esac + 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 - case "$src" in - '') ;; - *) finc="-I$src" ;; - esac - basebase=`basename $base .c` - $echo "Finding dependencies for $basebase$_o." + $echo "Finding dependencies for $filebase$_o." ( $echo "#line 1 \"$file\""; \ $sed -n <$file \ -e "/^${filebase}_init(/q" \ @@ -144,25 +140,50 @@ for base in `$cat .clist`; do -e 's|/\*.*$||' \ -e 's|\\$||' \ -e p \ - -e '}' ) >UU/$base.c - $cppstdin $finc -I. $cppflags $cppminus /d' \ - -e '/^#.*"-"/d' \ - -e 's#\.[0-9][0-9]*\.c#'"$file.c#" \ - -e 's/^[ ]*#[ ]*line/#/' \ - -e '/^# *[0-9][0-9]* *[".\/]/!d' \ - -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 + -e '}' ) >UU/$file.c + + if [ "$osname" = os390 -a "$file" = perly.c ]; then + $echo '#endif' >>UU/$file.c + fi + + if [ "$osname" = os390 ]; then + $cppstdin $finc -I. $cppflags $cppminus /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|: \./|: |' \ + -e 's|\.c\.c|.c|' $uwinfix | \ + $uniq | $sort | $uniq >> .deptmp + else + $cppstdin $finc -I. $cppflags $cppminus .cout 2>.cerr + $sed \ + -e '1d' \ + -e '/^#.*/d' \ + -e '/^#.*/d' \ + -e '/^#.*/d' \ + -e '/^#.*/d' \ + -e '/^#.*"-"/d' \ + -e '/: file path prefix .* never used$/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|: \./|: |' \ + -e 's|\.c\.c|.c|' $uwinfix .cout .cerr| \ + $uniq | $sort | $uniq >> .deptmp + fi done $sed <$mf >$mf.new -e '1,/^# AUTOMATICALLY/!d' -$MAKE shlist || (cd $src; $echo "Searching for .SH files..."; \ - $echo *.SH | $tr ' ' $trnl | $egrep -v '\*') >.shlist +$MAKE shlist || ($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): @@ -191,8 +212,8 @@ if $test -s .deptmp; then $sed 's|^\(.*\$(OBJ_EXT):\) *\(.*/.*\.c\) *$|\1 \2; '"$defrule \2|" .deptmp \ >>$mf.new else - $MAKE hlist || (cd $src; $echo "Searching for .h files..."; \ - $echo *.h | $tr ' ' $trnl | $egrep -v '\*') >.hlist + $MAKE hlist || ($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..." @@ -219,7 +240,8 @@ $rm -f $mf $cp $mf.new $mf $rm $mf.new $echo "# WARNING: Put nothing here or make depend will gobble it up!" >> $mf -$rm -rf .deptmp UU .shlist .clist .hlist .hsed +$rm -rf .deptmp UU .shlist .clist .hlist .hsed .cout .cerr +rmdir .depending !NO!SUBS! $eunicefix makedepend