#!/bin/sh # called with parameters: 1:dir 2:ackbase 3:gnubase set -e source /etc/make.conf exec >Makefile exec 3>Makedepend-ack exec 4>Makedepend-gnu touch .depend-ack touch .depend-gnu echo "#Generated from $1/Makefile.in" setvar ACKBASE = "$2" setvar GNUBASE = "$3" setvar OBJDIR = "$1" setvar RECURSIVE_TARGETS = ""clean depend depend-ack depend-gnu"" if test -z $ACKBASE { echo ACKBASE is not set!; exit 1; } if test -z $GNUBASE { echo GNUBASE is not set!; exit 1; } source Makefile.in #to enable library debugging, enable the next line #CFLAGS=$CFLAGS" -g" echo "all: all-ack" echo echo "all-ack:" echo "all-gnu:" echo echo "makefiles: Makefile" echo "Makedepend-ack Makedepend-gnu: " echo " sh $0 $OBJDIR $ACKBASE $GNUBASE" echo echo "Makefile: Makefile.in Makedepend-ack Makedepend-gnu" echo " sh $0 $OBJDIR $ACKBASE $GNUBASE" echo " @echo" echo " @echo *Attention*" echo " @echo Makefile is regenerated... rerun command to see changes" echo " @echo *Attention*" echo " @echo" echo if test ! -z $SUBDIRS { echo "all-ack: makefiles" for dir in $SUBDIRS do { if test $TYPE = "both" -o $TYPE = "ack" { echo " mkdir -p $ACKBASE/$OBJDIR/$dir" } echo " cd $dir && \$(MAKE) \$@" } echo echo "all-gnu: makefiles" for dir in $SUBDIRS do { if test $TYPE = "both" -o $TYPE = "gnu" { echo " mkdir -p $GNUBASE/$OBJDIR/$dir" } echo " cd $dir && \$(MAKE) \$@" } echo echo "$RECURSIVE_TARGETS:: makefiles" for dir in $SUBDIRS do { #if [ $TYPE = "both" -o $TYPE = "ack" ]; then #echo " mkdir -p $ACKBASE/$OBJDIR/$dir" #fi #if [ $TYPE = "both" -o $TYPE = "gnu" ]; then #echo " mkdir -p $GNUBASE/$OBJDIR/$dir" #fi echo " cd $dir && \$(MAKE) \$@" } echo for dir in $SUBDIRS do { echo "makefiles: $dir/Makefile" } echo for dir in $SUBDIRS do { echo "$dir/Makefile: $dir/Makefile.in" echo " cd $dir && sh ../$0 $OBJDIR/$dir ../$ACKBASE ../$GNUBASE && \$(MAKE) makefiles" } } else { echo "depend: depend-ack" echo "depend-ack:" >&3 echo " rm .depend-ack" >&3 echo " touch .depend-ack" >&3 echo "depend-gnu:" >&4 echo " rm .depend-gnu" >&4 echo " touch .depend-gnu" >&4 proc ackCommands { setvar dstfile = "$1" setvar srcfile = "$2" setvar dstdir = $(dirname $dstfile) case (srcfile) { *.s | *.c | *.e { echo " cc $CFLAGS -c -o $dstfile $srcfile" echo " mkdep 'cc $CFLAGS -E' $srcfile | sed -e 's:^\(.\):$dstdir/\1:' >> .depend-ack" >&3 } *.mod { echo " m2 $M2FLAGS -c -o $dstfile $srcfile" echo " mkdep 'm2 $M2FLAGS -E' $srcfile | sed -e 's:^\(.\):$dstdir/\1:' >> .depend-ack" >&3 } *.fc { echo " sh ./FP.compile $dstfile $srcfile" echo " mkdep 'cc -E' $srcfile | sed -e 's:^\(.\):$dstdir/\1:' >> .depend-ack" >&3 } } } proc gnuCommands { setvar dstfile = "$1" setvar srcfile = "$2" setvar dstdir = $(dirname $dstfile) setvar sedcmd = ""sed -e '//d' -e '//d' -e 's:^\(.\):$dstdir/\1:'"" case (srcfile) { *.s { echo " gcc $CFLAGS -E -x assembler-with-cpp -I. $srcfile | asmconv -mi386 ack gnu > $GNUBASE/$OBJDIR/$srcfile.gnu" echo " gas -o $dstfile $GNUBASE/$OBJDIR/$srcfile.gnu" echo " mkdep 'gcc $CFLAGS -E -x assembler-with-cpp -I.' $srcfile | $sedcmd >> .depend-gnu" >&4 } *.gs { echo " gas -o $dstfile $srcfile" echo " mkdep 'gcc $CFLAGS -E -x assembler-with-cpp -I.' $srcfile | $sedcmd >> .depend-gnu" >&4 } *.c { echo " gcc $CFLAGS -c -o $dstfile $srcfile" echo " mkdep 'gcc $CFLAGS -E' $srcfile | $sedcmd >> .depend-gnu" >&4 } #*.mod ) # echo " \$(M2C) -o $dstfile $srcfile" # ;; #*.fc ) # echo " sh ./FP.COMPILE $srcfile" # ;; } echo } #libraries for lib in $LIBRARIES do { if test $TYPE = "both" -o $TYPE = "ack" { echo "all-ack: $ACKBASE/$lib.a" eval "FILES=\$${lib}_FILES" echo for f in $FILES do { setvar o = $(echo $f | sed -e 's/\\..*\$/\.o/) echo "$ACKBASE/$lib.a: $ACKBASE/$lib.a($o)" } echo echo "$ACKBASE/$lib.a:" echo " ar cr $ACKBASE/$lib.a $ACKBASE/$OBJDIR/*.o" echo " rm $ACKBASE/$OBJDIR/*.o" echo for f in $FILES do { setvar o = $(echo $f | sed -e 's/\\..*\$/\.o/) echo "$ACKBASE/$lib.a($o): $f" ackCommands $ACKBASE/$OBJDIR/$o $f } echo } if test $TYPE = "both" -o $TYPE = "gnu" { echo "all-gnu: $GNUBASE/$lib.a" eval "FILES=\$${lib}_FILES" echo for f in $FILES do { setvar o = $(echo $f | sed -e 's/\\..*\$/\.o/) echo "$GNUBASE/$lib.a: $GNUBASE/$OBJDIR/$o" } echo echo "$GNUBASE/$lib.a:" echo " gar cr $GNUBASE/$lib.a \$?" echo for f in $FILES do { setvar o = $(echo $f | sed -e 's/\\..*\$/\.o/) echo "$GNUBASE/$OBJDIR/$o: $f" gnuCommands $GNUBASE/$OBJDIR/$o $f } echo } } echo #start files for f in $STARTFILES do { setvar o = $(echo $f | sed -e 's/\\..*\$/\.o/) if test $TYPE = "both" -o $TYPE = "ack" { echo "all-ack: $ACKBASE/$o" echo echo "$ACKBASE/$o: $f" ackCommands $ACKBASE/$o $f echo } if test $TYPE = "both" -o $TYPE = "gnu" { echo "all-gnu: $GNUBASE/$o" echo echo "$GNUBASE/$o: $f" gnuCommands $GNUBASE/$o $f echo } } } # elif of if [ -n "$SUBDIRS" ] echo echo "clean::" if test $TYPE = "both" -o $TYPE = "ack" { echo " rm -f $ACKBASE/$OBJDIR/*" } if test $TYPE = "both" -o $TYPE = "gnu" { echo " rm -f $GNUBASE/$OBJDIR/*" } if test $OBJDIR = "." { echo echo "install: install-ack" echo echo "install-ack: all-ack" # $ARCH is from /etc/make.conf echo " cp $ACKBASE/*.[ao] /usr/lib/$ARCH" echo echo "install-gnu: all-gnu" echo " cp $GNUBASE/*.[ao] /usr/gnu/lib" } echo echo "include Makedepend-ack" echo "include .depend-ack" echo echo "include Makedepend-gnu" echo "include .depend-gnu"