diff options
Diffstat (limited to 'setup/Linux/build.sh')
-rw-r--r-- | setup/Linux/build.sh | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/setup/Linux/build.sh b/setup/Linux/build.sh new file mode 100644 index 0000000..e889bfe --- /dev/null +++ b/setup/Linux/build.sh @@ -0,0 +1,240 @@ +#!/bin/sh + +. ./.directories + +if gawk '' >/dev/null +then + TXT2MAN=$SRCDIR/setup/txt2man +else + echo "No gawk found. Using lesser replacement" >&2 + cc -o txt2man origdir/setup/txt2man.c + TXT2MAN=./txt2man +fi + +[ -z "$LD" ] && LD=ld + +rm -rf prototype + +mkdir prototype +mkdir prototype/etc +echo "OSSLIBDIR=$OSSLIBDIR" > prototype/etc/oss.conf +mkdir prototype/usr +mkdir prototype/usr/bin +mkdir prototype/usr/share +mkdir prototype/usr/share/man +mkdir prototype/usr/share/man/man1 +mkdir prototype/usr/share/man/man7 +mkdir prototype/usr/share/man/man8 +mkdir prototype/usr/sbin +mkdir -p prototype/$OSSLIBDIR +mkdir prototype/$OSSLIBDIR/etc +mkdir prototype/$OSSLIBDIR/save +mkdir prototype/$OSSLIBDIR/conf.tmpl +mkdir prototype/$OSSLIBDIR/lib +mkdir prototype/$OSSLIBDIR/modules.regparm +mkdir prototype/$OSSLIBDIR/modules.noregparm +mkdir prototype/$OSSLIBDIR/objects.regparm +mkdir prototype/$OSSLIBDIR/objects.noregparm +mkdir prototype/$OSSLIBDIR/include +mkdir prototype/$OSSLIBDIR/include/sys +mkdir prototype/$OSSLIBDIR/include/internals +mkdir prototype/$OSSLIBDIR/build + +chmod 700 prototype/$OSSLIBDIR/modules.* +chmod 700 prototype/$OSSLIBDIR/objects.* +chmod 700 prototype/$OSSLIBDIR/build +chmod 700 prototype/$OSSLIBDIR/save + +if test -f regparm && test "`cat regparm` " = "1 " +then + MODULES=modules.regparm + OBJECTS=objects.regparm +else + MODULES=modules.noregparm + OBJECTS=objects.noregparm +fi + +cp .version prototype/$OSSLIBDIR/version.dat + +if test "`uname -m` " != "arm " +then + if ! test -f regparm + then + echo Error: ./regparm is missing + exit 1 + fi + cp regparm prototype/$OSSLIBDIR/build +fi + +# Regenerating the config file templates +rm -f /tmp/confgen +if ! cc -o /tmp/confgen ./setup/Linux/confgen.c +then + echo Building confgen failed + exit 1 +fi + +if ! /tmp/confgen prototype/$OSSLIBDIR/conf.tmpl $OSSLIBDIR/conf kernel/drv/* kernel/nonfree/drv/* +then + echo Running confgen failed + exit 1 +fi + +rm -f /tmp/confgen + +cp $SRCDIR/include/*.h prototype/$OSSLIBDIR/include/sys/ +cp $SRCDIR/kernel/framework/include/midiparser.h prototype/$OSSLIBDIR/include/ +cp -f $SRCDIR/kernel/OS/Linux/wrapper/wrap.h prototype/$OSSLIBDIR/build/ +cp -f $SRCDIR/kernel/framework/include/udi.h prototype/$OSSLIBDIR/build/ +cp -a $SRCDIR/kernel/framework/include/*_core.h kernel/framework/include/local_config.h prototype/$OSSLIBDIR/include/internals +cp $SRCDIR/kernel/framework/include/ossddk/*.h prototype/$OSSLIBDIR/include/internals +cp kernel/framework/include/timestamp.h prototype/$OSSLIBDIR/include/internals +cp kernel/framework/include/ossddk/oss_limits.h prototype/$OSSLIBDIR/include/internals + +cat > prototype/$OSSLIBDIR/include/internals/WARNING.txt << EOF +Caution: All header files included in this directory are there only because + some parts of OSS may need to be re-compiled. It is not safe to use + these files for any purposes because they will change between OSS + versions/builds. +EOF + +(cd target/bin; rm -f ossrecord; ln -s ossplay ossrecord) +cp -f target/build/* prototype/$OSSLIBDIR/build/ +cp -f target/bin/* prototype/usr/bin +cp -f target/sbin/* prototype/usr/sbin + +cp -a $SRCDIR/setup/Linux/oss/* prototype/$OSSLIBDIR/ +cp -a $SRCDIR/setup/Linux/sbin prototype/usr/ +chmod +x prototype/$OSSLIBDIR/scripts/* + +if ! $LD -r -o prototype/$OSSLIBDIR/$OBJECTS/osscore.o target/objects/*.o +then + echo Linking osscore failed! + exit 1 +fi + +rm -f devlist.txt devices.list + +for n in `find kernel/ -name .devices` +do + cat $n >> devices.list +done + +for n in target/modules/*.o +do + N=`basename $n .o` + $LD -r -o prototype/$OSSLIBDIR/$MODULES/$N.o $n + echo Check devices for $N + grep "^$N[ ]" ./devices.list >> devlist.txt + + rm -f /tmp/ossman.txt + + if test -f $SRCDIR/kernel/drv/$N/$N.man + then + sed "s:CONFIGFILEPATH:$OSSLIBDIR/conf:g" < $SRCDIR/kernel/drv/$N/$N.man > /tmp/ossman.txt + $TXT2MAN -t "$CMD" -v "OSS Devices" -s 7 /tmp/ossman.txt | gzip -9 > prototype/usr/share/man/man7/$N.7.gz + else + if test -f $SRCDIR/kernel/nonfree/drv/$N/$N.man + then + sed "s:CONFIGFILEPATH:$OSSLIBDIR/conf:g" < $SRCDIR/kernel/nonfree/drv/$N/$N.man > /tmp/ossman.txt + $TXT2MAN -t "$CMD" -v "OSS Devices" -s 7 $SRCDIR/kernel/nonfree/drv/$N/$N.man | gzip -9 > prototype/usr/share/man/man7/$N.7.gz + fi + fi +done + +sed "s:CONFIGFILEPATH:$OSSLIBDIR/conf:g" < $SRCDIR/kernel/drv/osscore/osscore.man > /tmp/ossman.txt +$TXT2MAN -t "osscore" -v "OSS Devices" -s 7 /tmp/ossman.txt | gzip -9 > prototype/usr/share/man/man7/osscore.7.gz +rm -f /tmp/ossman.txt + +# Link the optional NOREGPARM modules +if test -d noregparm +then + $LD -r -o prototype/$OSSLIBDIR/objects.noregparm/osscore.o noregparm/target/objects/*.o + + for n in noregparm/target/modules/*.o + do + N=`basename $n .o` + $LD -r -o prototype/$OSSLIBDIR/modules.noregparm/$N.o $n + done +fi + +for n in $SRCDIR/misc/man7/*.man +do + N=`basename $n .man` + + $TXT2MAN -t "$CMD" -v "OSS Devices" -s 7 $n | gzip -9 > prototype/usr/share/man/man7/$N.7.gz +done + +for n in $SRCDIR/misc/man1m/*.man +do + N=`basename $n .man` + $TXT2MAN -t "$CMD" -v "OSS System Administration Commands" -s 1 $n | gzip -9 > prototype/usr/share/man/man1/$N.1.gz +done + +if ! cp lib/libOSSlib/libOSSlib.so lib/libsalsa/.libs/libsalsa.so.2.0.0 prototype/$OSSLIBDIR/lib +then + echo Warning: No libsalsa library compiled +fi + +cp target/lib/* prototype/$OSSLIBDIR/lib + +cp devlist.txt prototype/$OSSLIBDIR/etc/devices.list + +if test -d kernel/nonfree +then + cp devlist.txt $SRCDIR/devlists/Linux +fi + +# Generate Man pages for commands +for i in target/bin/* +do +CMD=`basename $i` +$TXT2MAN -t "$CMD" -v "OSS User Commands" -s 1 cmd/$CMD/$CMD.man | gzip -9 > prototype/usr/share/man/man1/$CMD.1.gz +echo done $CMD +done + +for i in target/sbin/* +do + CMD=`basename $i` + if test -f cmd/$CMD/$CMD.man + then + $TXT2MAN -t "$CMD" -v "OSS System Administration Commands" -s 8 cmd/$CMD/$CMD.man | gzip -9 > prototype/usr/share/man/man8/$CMD.8.gz + echo done $CMD + fi +done + +$TXT2MAN -t "ossdetect" -v "User Commands" -s 8 os_cmd/Linux/ossdetect/ossdetect.man | gzip -9 > prototype/usr/share/man/man8/ossdetect.8.gz +echo done ossdetect + +cp -f $SRCDIR/oss/lib/flashsupport.c prototype/$OSSLIBDIR/lib + +# Licensing stuff +if test -f 4front-private/osslic.c +then + cc -o prototype/usr/sbin/osslic -Isetup -Ikernel/nonfree/include -Ikernel/framework/include -Iinclude -Ikernel/OS/Linux -I$SRCDIR $SRCDIR/4front-private/osslic.c + strip prototype/usr/sbin/osslic + + BITS=3 # Default to 32 bit ELF format + if test "`uname -m` " = "x86_64 " + then + BITS=6 # Use 64 bit ELF format + fi + prototype/usr/sbin/osslic -q -u -$BITS./prototype/$OSSLIBDIR/objects.regparm/osscore.o + prototype/usr/sbin/osslic -q -u -$BITS./prototype/$OSSLIBDIR/objects.noregparm/osscore.o + +fi + +if test -f 4front-private/ossupdate.c +then + #ossupdate + cc -I. 4front-private/ossupdate.c -s -o prototype/usr/sbin/ossupdate +fi + +sh $SRCDIR/setup/build_common.sh $SRCDIR $OSSLIBDIR + +chmod 700 prototype/usr/sbin/* +chmod 755 prototype/usr/bin/* + +(cd prototype;ls usr/sbin/* usr/bin/* etc/* usr/share/man/man*/*) > prototype/$OSSLIBDIR/sysfiles.list + +exit 0 |