2006-01-16 16:44:55 +01:00
|
|
|
#!/bin/sh
|
|
|
|
# called with parameters: 1:dir 2:ackbase 3:gnubase
|
|
|
|
|
Split of architecture-dependent and -independent functions for i386,
mainly in the kernel and headers. This split based on work by
Ingmar Alting <iaalting@cs.vu.nl> done for his Minix PowerPC architecture
port.
. kernel does not program the interrupt controller directly, do any
other architecture-dependent operations, or contain assembly any more,
but uses architecture-dependent functions in arch/$(ARCH)/.
. architecture-dependent constants and types defined in arch/$(ARCH)/include.
. <ibm/portio.h> moved to <minix/portio.h>, as they have become, for now,
architecture-independent functions.
. int86, sdevio, readbios, and iopenable are now i386-specific kernel calls
and live in arch/i386/do_* now.
. i386 arch now supports even less 86 code; e.g. mpx86.s and klib86.s have
gone, and 'machine.protected' is gone (and always taken to be 1 in i386).
If 86 support is to return, it should be a new architecture.
. prototypes for the architecture-dependent functions defined in
kernel/arch/$(ARCH)/*.c but used in kernel/ are in kernel/proto.h
. /etc/make.conf included in makefiles and shell scripts that need to
know the building architecture; it defines ARCH=<arch>, currently only
i386.
. some basic per-architecture build support outside of the kernel (lib)
. in clock.c, only dequeue a process if it was ready
. fixes for new include files
files deleted:
. mpx/klib.s - only for choosing between mpx/klib86 and -386
. klib86.s - only for 86
i386-specific files files moved (or arch-dependent stuff moved) to arch/i386/:
. mpx386.s (entry point)
. klib386.s
. sconst.h
. exception.c
. protect.c
. protect.h
. i8269.c
2006-12-22 16:22:27 +01:00
|
|
|
set -e
|
|
|
|
|
|
|
|
. /etc/make.conf
|
|
|
|
|
2006-01-16 16:44:55 +01:00
|
|
|
exec >Makefile
|
|
|
|
exec 3>Makedepend-ack
|
|
|
|
exec 4>Makedepend-gnu
|
|
|
|
touch .depend-ack
|
|
|
|
touch .depend-gnu
|
|
|
|
|
|
|
|
echo "#Generated from $1/Makefile.in"
|
|
|
|
|
|
|
|
ACKBASE=$2
|
|
|
|
GNUBASE=$3
|
|
|
|
OBJDIR=$1
|
|
|
|
|
|
|
|
RECURSIVE_TARGETS="clean depend depend-ack depend-gnu"
|
|
|
|
|
|
|
|
if [ -z $ACKBASE ]; then echo ACKBASE is not set!; exit 1; fi
|
|
|
|
if [ -z $GNUBASE ]; then echo GNUBASE is not set!; exit 1; fi
|
|
|
|
|
|
|
|
. 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"
|
2006-01-17 11:36:53 +01:00
|
|
|
echo "Makedepend-ack Makedepend-gnu: "
|
|
|
|
echo " sh $0 $OBJDIR $ACKBASE $GNUBASE"
|
2006-01-16 16:44:55 +01:00
|
|
|
echo
|
2006-01-17 11:36:53 +01:00
|
|
|
echo "Makefile: Makefile.in Makedepend-ack Makedepend-gnu"
|
2006-01-16 16:44:55 +01:00
|
|
|
echo " sh $0 $OBJDIR $ACKBASE $GNUBASE"
|
|
|
|
echo " @echo"
|
2006-01-17 11:36:53 +01:00
|
|
|
echo " @echo *Attention*"
|
|
|
|
echo " @echo Makefile is regenerated... rerun command to see changes"
|
|
|
|
echo " @echo *Attention*"
|
2006-01-16 16:44:55 +01:00
|
|
|
echo " @echo"
|
|
|
|
echo
|
|
|
|
if [ ! -z "$SUBDIRS" ]; then
|
|
|
|
echo "all-ack: makefiles"
|
|
|
|
for dir in $SUBDIRS
|
|
|
|
{
|
|
|
|
if [ $TYPE = "both" -o $TYPE = "ack" ]; then
|
|
|
|
echo " mkdir -p $ACKBASE/$OBJDIR/$dir"
|
|
|
|
fi
|
|
|
|
echo " cd $dir && \$(MAKE) \$@"
|
|
|
|
}
|
|
|
|
echo
|
|
|
|
echo "all-gnu: makefiles"
|
|
|
|
for dir in $SUBDIRS
|
|
|
|
{
|
|
|
|
if [ $TYPE = "both" -o $TYPE = "gnu" ]; then
|
|
|
|
echo " mkdir -p $GNUBASE/$OBJDIR/$dir"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo " cd $dir && \$(MAKE) \$@"
|
|
|
|
}
|
|
|
|
echo
|
|
|
|
echo "$RECURSIVE_TARGETS:: makefiles"
|
|
|
|
for dir in $SUBDIRS
|
|
|
|
{
|
2006-04-10 01:16:13 +02:00
|
|
|
#if [ $TYPE = "both" -o $TYPE = "ack" ]; then
|
2006-01-16 16:44:55 +01:00
|
|
|
#echo " mkdir -p $ACKBASE/$OBJDIR/$dir"
|
2006-04-10 01:16:13 +02:00
|
|
|
#fi
|
|
|
|
#if [ $TYPE = "both" -o $TYPE = "gnu" ]; then
|
2006-01-16 16:44:55 +01:00
|
|
|
#echo " mkdir -p $GNUBASE/$OBJDIR/$dir"
|
2006-04-10 01:16:13 +02:00
|
|
|
#fi
|
2006-01-16 16:44:55 +01:00
|
|
|
|
|
|
|
echo " cd $dir && \$(MAKE) \$@"
|
|
|
|
}
|
|
|
|
echo
|
|
|
|
for dir in $SUBDIRS
|
|
|
|
{
|
|
|
|
echo "makefiles: $dir/Makefile"
|
|
|
|
}
|
|
|
|
echo
|
|
|
|
for dir in $SUBDIRS
|
|
|
|
{
|
|
|
|
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
|
|
|
|
|
|
|
|
ackCommands()
|
|
|
|
{
|
|
|
|
dstfile=$1
|
|
|
|
srcfile=$2
|
|
|
|
dstdir=`dirname $dstfile`
|
|
|
|
|
|
|
|
case $srcfile in
|
|
|
|
*.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
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
gnuCommands()
|
|
|
|
{
|
|
|
|
dstfile=$1
|
|
|
|
srcfile=$2
|
|
|
|
dstdir=`dirname $dstfile`
|
|
|
|
sedcmd="sed -e '/<built-in>/d' -e '/<command line>/d' -e 's:^\(.\):$dstdir/\1:'"
|
|
|
|
|
|
|
|
case $srcfile in
|
|
|
|
*.s )
|
2010-02-03 14:29:14 +01:00
|
|
|
echo " gcc $CFLAGS -E -x assembler-with-cpp -I. $srcfile | asmconv -mi386 ack gnu > $GNUBASE/$OBJDIR/$srcfile.gnu"
|
2006-01-16 16:44:55 +01:00
|
|
|
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"
|
|
|
|
# ;;
|
|
|
|
esac
|
|
|
|
echo
|
|
|
|
}
|
|
|
|
|
|
|
|
#libraries
|
|
|
|
for lib in $LIBRARIES
|
|
|
|
{
|
|
|
|
if [ $TYPE = "both" -o $TYPE = "ack" ]; then
|
|
|
|
echo "all-ack: $ACKBASE/$lib.a"
|
|
|
|
eval "FILES=\$${lib}_FILES"
|
|
|
|
echo
|
|
|
|
for f in $FILES
|
|
|
|
{
|
2007-04-12 16:29:30 +02:00
|
|
|
o=`echo $f | sed -e 's/\\..*\$/\.o/'`
|
2006-01-16 16:44:55 +01:00
|
|
|
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
|
|
|
|
{
|
2007-04-12 16:29:30 +02:00
|
|
|
o=`echo $f | sed -e 's/\\..*\$/\.o/'`
|
2006-01-16 16:44:55 +01:00
|
|
|
echo "$ACKBASE/$lib.a($o): $f"
|
|
|
|
|
|
|
|
ackCommands $ACKBASE/$OBJDIR/$o $f
|
|
|
|
}
|
|
|
|
echo
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $TYPE = "both" -o $TYPE = "gnu" ]; then
|
|
|
|
echo "all-gnu: $GNUBASE/$lib.a"
|
|
|
|
eval "FILES=\$${lib}_FILES"
|
|
|
|
echo
|
|
|
|
for f in $FILES
|
|
|
|
{
|
2007-04-12 16:29:30 +02:00
|
|
|
o=`echo $f | sed -e 's/\\..*\$/\.o/'`
|
2006-01-16 16:44:55 +01:00
|
|
|
echo "$GNUBASE/$lib.a: $GNUBASE/$OBJDIR/$o"
|
|
|
|
}
|
|
|
|
echo
|
|
|
|
echo "$GNUBASE/$lib.a:"
|
|
|
|
echo " gar cr $GNUBASE/$lib.a \$?"
|
|
|
|
echo
|
|
|
|
for f in $FILES
|
|
|
|
{
|
2007-04-12 16:29:30 +02:00
|
|
|
o=`echo $f | sed -e 's/\\..*\$/\.o/'`
|
2006-01-16 16:44:55 +01:00
|
|
|
|
|
|
|
echo "$GNUBASE/$OBJDIR/$o: $f"
|
|
|
|
|
|
|
|
gnuCommands $GNUBASE/$OBJDIR/$o $f
|
|
|
|
}
|
|
|
|
echo
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
echo
|
|
|
|
|
|
|
|
#start files
|
|
|
|
for f in $STARTFILES
|
|
|
|
{
|
2007-04-12 16:29:30 +02:00
|
|
|
o=`echo $f | sed -e 's/\\..*\$/\.o/'`
|
2006-01-16 16:44:55 +01:00
|
|
|
|
|
|
|
if [ $TYPE = "both" -o $TYPE = "ack" ]; then
|
|
|
|
echo "all-ack: $ACKBASE/$o"
|
|
|
|
echo
|
|
|
|
echo "$ACKBASE/$o: $f"
|
|
|
|
ackCommands $ACKBASE/$o $f
|
|
|
|
echo
|
|
|
|
fi
|
|
|
|
if [ $TYPE = "both" -o $TYPE = "gnu" ]; then
|
|
|
|
echo "all-gnu: $GNUBASE/$o"
|
|
|
|
echo
|
|
|
|
echo "$GNUBASE/$o: $f"
|
|
|
|
gnuCommands $GNUBASE/$o $f
|
|
|
|
echo
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
fi # elif of if [ -n "$SUBDIRS" ]
|
|
|
|
echo
|
|
|
|
echo "clean::"
|
|
|
|
if [ $TYPE = "both" -o $TYPE = "ack" ]; then
|
|
|
|
echo " rm -f $ACKBASE/$OBJDIR/*"
|
|
|
|
fi
|
|
|
|
if [ $TYPE = "both" -o $TYPE = "gnu" ]; then
|
|
|
|
echo " rm -f $GNUBASE/$OBJDIR/*"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $OBJDIR = "." ]; then
|
|
|
|
echo
|
|
|
|
echo "install: install-ack"
|
|
|
|
echo
|
|
|
|
echo "install-ack: all-ack"
|
Split of architecture-dependent and -independent functions for i386,
mainly in the kernel and headers. This split based on work by
Ingmar Alting <iaalting@cs.vu.nl> done for his Minix PowerPC architecture
port.
. kernel does not program the interrupt controller directly, do any
other architecture-dependent operations, or contain assembly any more,
but uses architecture-dependent functions in arch/$(ARCH)/.
. architecture-dependent constants and types defined in arch/$(ARCH)/include.
. <ibm/portio.h> moved to <minix/portio.h>, as they have become, for now,
architecture-independent functions.
. int86, sdevio, readbios, and iopenable are now i386-specific kernel calls
and live in arch/i386/do_* now.
. i386 arch now supports even less 86 code; e.g. mpx86.s and klib86.s have
gone, and 'machine.protected' is gone (and always taken to be 1 in i386).
If 86 support is to return, it should be a new architecture.
. prototypes for the architecture-dependent functions defined in
kernel/arch/$(ARCH)/*.c but used in kernel/ are in kernel/proto.h
. /etc/make.conf included in makefiles and shell scripts that need to
know the building architecture; it defines ARCH=<arch>, currently only
i386.
. some basic per-architecture build support outside of the kernel (lib)
. in clock.c, only dequeue a process if it was ready
. fixes for new include files
files deleted:
. mpx/klib.s - only for choosing between mpx/klib86 and -386
. klib86.s - only for 86
i386-specific files files moved (or arch-dependent stuff moved) to arch/i386/:
. mpx386.s (entry point)
. klib386.s
. sconst.h
. exception.c
. protect.c
. protect.h
. i8269.c
2006-12-22 16:22:27 +01:00
|
|
|
# $ARCH is from /etc/make.conf
|
|
|
|
echo " cp $ACKBASE/*.[ao] /usr/lib/$ARCH"
|
2006-01-16 16:44:55 +01:00
|
|
|
echo
|
|
|
|
echo "install-gnu: all-gnu"
|
|
|
|
echo " cp $GNUBASE/*.[ao] /usr/gnu/lib"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo
|
|
|
|
echo "include Makedepend-ack"
|
|
|
|
echo "include .depend-ack"
|
|
|
|
echo
|
|
|
|
echo "include Makedepend-gnu"
|
|
|
|
echo "include .depend-gnu"
|