X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=makedepend.SH;h=e26c50e09faeb358831d6ec1de99c37bcdea4753;hb=b233458bd1d5037ce4bbbb41fb513e1b68522a4d;hp=7a89fa982109679bfc9bae06a0d082ee2a9bb1a1;hpb=fb73857aa0bfa8ed43d4d2f972c564c70a57e0c4;p=p5sagit%2Fp5-mst-13.2.git diff --git a/makedepend.SH b/makedepend.SH index 7a89fa9..e26c50e 100755 --- a/makedepend.SH +++ b/makedepend.SH @@ -1,5 +1,5 @@ #! /bin/sh -case $CONFIG in +case $CONFIGDOTSH in '') if test -f config.sh; then TOP=.; elif test -f ../config.sh; then TOP=..; @@ -25,18 +25,20 @@ $startsh # makedepend.SH # 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 \$\$) -case $CONFIG in +case $CONFIGDOTSH in '') if test -f config.sh; then TOP=.; elif test -f ../config.sh; then TOP=..; @@ -50,11 +52,15 @@ case $CONFIG 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 # an older one lying about in /usr/local/bin. -PATH=".:..:$PATH" +PATH=".$path_sep..$path_sep$PATH" export PATH $cat /dev/null >.deptmp @@ -66,6 +72,7 @@ if test -f Makefile; then # to be out of date. I don't know if OS/2 has touch, so do this: case "$osname" in os2) ;; + netbsd) ;; *) $touch $firstmakefile ;; esac fi @@ -93,19 +100,42 @@ esac : might be identical $test -d UU || mkdir UU -$MAKE clist || ($echo "Searching for .c files..."; \ - $echo *.c | $tr ' ' '\012' | $egrep -v '\*' >.clist) -for file in `$cat .clist`; do -# for file in `cat /dev/null`; do - case "$file" in - *.c) filebase=`basename $file .c` ;; - *.y) filebase=`basename $file .y` ;; +$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" + else + if [ "$osname" = os2 ]; then + uwinfix="-e s,\\\\\\\\,/,g" + else + if [ "$archname" = cygwin32 ]; then + uwinfix="-e s,\\\\\\\\,/,g" + else + uwinfix= + fi + fi + fi case "$file" in */*) finc="-I`echo $file | sed 's#/[^/]*$##`" ;; *) finc= ;; esac - $echo "Finding dependencies for $filebase$obj_ext." + 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" \ @@ -114,34 +144,38 @@ for file in `$cat .clist`; do -e 's|/\*.*$||' \ -e 's|\\$||' \ -e p \ - -e '}' ) >UU/$file.c - $cppstdin $finc -I/usr/local/include -I. $cppflags $cppminus 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/^.*"\(.*\)".*$/'$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|' | \ + -e 's|\.c\.c|.c|' $uwinfix | \ $uniq | $sort | $uniq >> .deptmp done $sed <$mf >$mf.new -e '1,/^# AUTOMATICALLY/!d' -$MAKE shlist || ($echo "Searching for .SH files..."; \ - $echo *.SH | $tr ' ' '\012' | $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): +rm -f .shlist.old mv .shlist .shlist.old $egrep -v '^makedepend\.SH' <.shlist.old >.shlist +rm -f .shlist.old mv .shlist .shlist.old $egrep -v '^Makefile\.SH' <.shlist.old >.shlist +rm -f .shlist.old mv .shlist .shlist.old $egrep -v '^perl_exp\.SH' <.shlist.old >.shlist +rm -f .shlist.old mv .shlist .shlist.old $egrep -v '^config_h\.SH' <.shlist.old >.shlist rm .shlist.old @@ -157,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 ' ' '\012' | $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..."