#!/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" setglobal ACKBASE = $2 setglobal GNUBASE = $3 setglobal OBJDIR = $1 setglobal 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 { setglobal dstfile = $1 setglobal srcfile = $2 setglobal dstdir = $[dirname $dstfile] match $srcfile { with *.s | *.c | *.e echo " cc $CFLAGS -c -o $dstfile $srcfile" echo " mkdep 'cc $CFLAGS -E' $srcfile | sed -e 's:^\(.\):$dstdir/\1:' >> .depend-ack" > !3 with *.mod echo " m2 $M2FLAGS -c -o $dstfile $srcfile" echo " mkdep 'm2 $M2FLAGS -E' $srcfile | sed -e 's:^\(.\):$dstdir/\1:' >> .depend-ack" > !3 with *.fc echo " sh ./FP.compile $dstfile $srcfile" echo " mkdep 'cc -E' $srcfile | sed -e 's:^\(.\):$dstdir/\1:' >> .depend-ack" > !3 } } proc gnuCommands { setglobal dstfile = $1 setglobal srcfile = $2 setglobal dstdir = $[dirname $dstfile] setglobal sedcmd = ""sed -e '//d' -e '//d' -e 's:^\(.\):$dstdir/\1:'"" match $srcfile { with *.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 with *.gs echo " gas -o $dstfile $srcfile" echo " mkdep 'gcc $CFLAGS -E -x assembler-with-cpp -I.' $srcfile | $sedcmd >> .depend-gnu" > !4 with *.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 { setglobal 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 { setglobal 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 { setglobal 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 { setglobal 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 { setglobal 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"