summaryrefslogtreecommitdiff
path: root/setup/SunOS/build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'setup/SunOS/build.sh')
-rw-r--r--setup/SunOS/build.sh291
1 files changed, 291 insertions, 0 deletions
diff --git a/setup/SunOS/build.sh b/setup/SunOS/build.sh
new file mode 100644
index 0000000..881ffa3
--- /dev/null
+++ b/setup/SunOS/build.sh
@@ -0,0 +1,291 @@
+
+. ./.directories
+
+OSSLIBDIR=/usr/lib/oss
+
+if test "`which gawk|grep 'no gawk in '` " = " " 2>/dev/null
+then
+ TXT2MAN=$SRCDIR/setup/txt2man
+else
+ cc -o txt2man origdir/setup/txt2man.c
+ TXT2MAN=./txt2man
+fi
+
+if test "`uname -p`" = "sparc"
+then
+ KERNEL32=sparc
+ KERNEL64=sparcv9
+ MACH=sun4u
+else
+ case `uname -r` in
+ "5.8")
+ KERNEL32=i386
+ KERNEL64=NULL
+ ;;
+ "5.9")
+ KERNEL32=i386
+ KERNEL64=NULL
+ ;;
+ *)
+ KERNEL32=i386
+ KERNEL64=amd64
+ ;;
+ esac
+ MACH=i86pc
+fi
+
+if test "`uname -r`" = "5.9" || test "`uname -r`" = "5.8"
+then
+ AMSRC=amsrc1
+ OSFLAGS=-DSOL9
+else
+ AMSRC=amsrc2
+fi
+
+# Re-create the prototype directory
+rm -rf prototype
+
+mkdir prototype
+mkdir prototype/kernel
+mkdir prototype/kernel/drv
+mkdir prototype/kernel/drv/$KERNEL64
+mkdir prototype/kernel/misc
+mkdir prototype/kernel/misc/$KERNEL64
+
+mkdir prototype/etc
+mkdir prototype/etc/oss
+mkdir prototype/etc/init.d
+mkdir prototype/usr
+mkdir prototype/usr/bin
+mkdir prototype/usr/sbin
+mkdir prototype/usr/man
+mkdir prototype/usr/man/man1
+mkdir prototype/usr/man/man1m
+mkdir prototype/usr/man/man7d
+mkdir prototype/usr/include
+mkdir prototype/usr/include/sys
+mkdir prototype/usr/include/oss
+mkdir prototype/usr/lib
+mkdir prototype/usr/lib/oss
+
+cat > prototype/usr/lib/oss/README <<EOF
+This directory is not used any more. Configuration files for OSS are
+located under /etc/oss. The soundon.log file is located in
+/var/log/soundon.log.
+EOF
+
+cp $KERNEL32/.version prototype/etc/oss/version.dat
+
+# Copy the files to their right place
+
+cp $SRCDIR/include/soundcard.h prototype/usr/include/sys
+cp $SRCDIR/include/oss_userdev_exports.h prototype/usr/include/oss
+(cd $KERNEL32/target/bin; rm -f ossrecord; ln -s ossplay ossrecord)
+cp $KERNEL32/target/bin/* prototype/usr/bin
+cp $KERNEL32/target/sbin/* prototype/usr/sbin
+cp $KERNEL32/setup/SunOS/sbin/* prototype/usr/sbin
+cp origdir/setup/SunOS/S89oss prototype/etc/init.d/oss
+chmod 500 prototype/usr/sbin/*
+echo "autosave_mixer yes" > prototype/etc/oss/userdefs
+#echo "usbif,class1" > prototype/etc/oss/forceload.conf
+rm -f devlist.txt
+
+# Create the driver modules (for 64 bit)
+
+if test "`ls $KERNEL64/target/modules/*.o 2>/dev/null` " != " "
+then
+ # osscommon
+ if ld -64 -dy -r -Nmisc/usba -o prototype/kernel/misc/$KERNEL64/osscommon $KERNEL64/target/objects/*.o
+ then
+ $TXT2MAN -v "OSS Devices" -s 7 $KERNEL64/kernel/drv/osscore/osscore.man > prototype/usr/man/man7d/osscore.7d
+ else
+ exit 1
+ fi
+
+ rm -f fpsupport.o
+
+ # Man pages
+ for n in $SRCDIR/misc/man7/*.man
+ do
+ N=`basename $n .man`
+ $TXT2MAN -t "$CMD" -v "OSS Devices" -s 7 $n > prototype/usr/man/man7d/$N.7d
+ done
+
+ for n in $SRCDIR/misc/man1m/*.man
+ do
+ N=`basename $n .man`
+ $TXT2MAN -t "$CMD" -v "OSS System Administration Commands" -s 1 $n > prototype/usr/man/man1m/$N.1m
+ done
+
+ # Other modules for 64bit kernel
+ for n in $KERNEL64/target/modules/*.o
+ do
+ N=`basename $n .o`
+ if ld -64 -dy -r -Nmisc/osscommon -o prototype/kernel/drv/$KERNEL64/$N $n
+ then
+ OK=1
+ else
+ exit 1
+ fi
+
+ if test $KERNEL64 = "sparcv9"
+ then
+ grep "^$N[ ]" $KERNEL64/devices.list >> devlist.txt
+ fi
+ done
+
+ # USB Module
+ if test -f $KERNEL64/target/modules/oss_usb.o
+ then
+ if ld -64 -dy -r -Nmisc/osscommon -Nmisc/usba -o prototype/kernel/drv/$KERNEL64/oss_usb $KERNEL64/target/modules/oss_usb.o
+ then
+ OK=1
+ else
+ exit 1
+ fi
+ fi
+
+ # SADA compatibility module
+ if test -r $KERNEL64/target/modules/oss_sadasupport.o
+ then
+ if ld -64 -dy -r -Nmisc/osscommon -Nmisc/$AMSRC -Nmisc/audiosup -Nmisc/mixer -o prototype/kernel/drv/$KERNEL64/oss_sadasupport $KERNEL64/target/modules/oss_sadasupport.o
+ then
+ OK=1
+ else
+ exit 1
+ fi
+ else
+ OK=1
+ fi
+fi # 64 bit modules done
+
+# Handle 32 bit modules
+
+if test "`ls $KERNEL32/target/modules/*.o 2>/dev/null` " != " "
+then
+
+ # osscommon
+
+ if ld -dy -r -Nmisc/usba -o prototype/kernel/misc/osscommon $KERNEL32/target/objects/*.o
+ then
+ $TXT2MAN -v "OSS Devices" -s 7 $KERNEL32/kernel/drv/osscore/osscore.man > prototype/usr/man/man7d/osscore.7d
+ else
+ exit 1
+ fi
+
+ rm -f fpsupport.o __xtol.o
+
+ # Other modules for 32bit kernel
+ for n in $KERNEL32/target/modules/*.o
+ do
+ N=`basename $n .o`
+ if ld -dy -r -Nmisc/osscommon -o prototype/kernel/drv/$N $n
+ then
+ OK=1
+ else
+ exit 1
+ fi
+ grep "^$N[ ]" $KERNEL32/devices.list >> devlist.txt
+ done
+
+ # USB Modules
+ if test -f $KERNEL32/target/modules/oss_usb.o
+ then
+ if ld -dy -r -Nmisc/osscommon -Nmisc/usba -o prototype/kernel/drv/oss_usb $KERNEL32/target/modules/oss_usb.o
+ then
+ OK=1
+ else
+ exit 1
+ fi
+ fi
+
+ # SADA Compatibility
+ if test -r $KERNEL32/target/modules/oss_sadasupport.o
+ then
+ if ld -dy -r -Nmisc/osscommon -Nmisc/$AMSRC -Nmisc/audiosup -Nmisc/mixer -o prototype/kernel/drv/oss_sadasupport $KERNEL32/target/modules/oss_sadasupport.o
+ then
+ OK=1
+ else
+ exit 1
+ fi
+ else
+ OK=1
+ fi
+
+fi # 32 bit modules done
+
+if test "$KERNEL64 " = "sparcv9 "
+then
+ # Drop SB Live! from the list of supported devices for Sparc
+ rm -f tmplist
+ mv devlist.txt tmplist
+ grep -v "Sound Blaster Live" < tmplist|sort|uniq >devlist.txt
+ rm -f tmplist
+fi
+
+cp devlist.txt prototype/etc/oss/devices.list
+
+if test -d $KERNEL32/kernel/nonfree
+then
+ cp -f devlist.txt $KERNEL32/origdir/devlists/Solaris-`uname -p`
+fi
+
+# Generate the config files
+rm -f confgen
+cc -o confgen -DTXT2MAN=\"$TXT2MAN\" $OSFLAGS $KERNEL32/setup/SunOS/confgen.c
+
+./confgen prototype/kernel/drv \\/kernel\\/drv $KERNEL32/kernel/drv/* $KERNEL32/kernel/nonfree/drv/* $KERNEL32/kernel/framework/*
+rm -f confgen
+
+# Generate Man pages for user commands
+for i in $KERNEL32/target/bin/*
+do
+ CMD=`basename $i`
+ $TXT2MAN -t "$CMD" -v "OSS User Commands" -s 1 $KERNEL32/cmd/$CMD/$CMD.man > prototype/usr/man/man1/$CMD.1
+ echo done $CMD
+done
+
+# Generate Man pages for system commands
+for i in $KERNEL32/target/sbin/*
+do
+ CMD=`basename $i`
+ if test -f $KERNEL32/cmd/$CMD/$CMD.man
+ then
+ $TXT2MAN -t "$CMD" -v "OSS System Administration Commands" -s 1m $KERNEL32/cmd/$CMD/$CMD.man > prototype/usr/man/man1m/$CMD.1m
+ echo done $CMD
+ fi
+done
+
+# Generate pages for Maintenance Commands
+rm -f prototype/usr/man/man1m/ossdetect.1m
+$TXT2MAN -t "ossdetect" -v "OSS User Commands" -s 1m $KERNEL32/os_cmd/SunOS/ossdetect/ossdetect.man > prototype/usr/man/man1m/ossdetect.1m
+echo done ossdetect
+
+# Licensing stuff
+if test -f $KERNEL32/4front-private/osslic.c
+then
+ cc $OSFLAGS -o prototype/usr/sbin/osslic -I$KERNEL32/setup -I$KERNEL32/kernel/nonfree/include -I$KERNEL32/kernel/framework/include -I$KERNEL32/include -I$KERNEL32/kernel/OS/SunOS $KERNEL32/4front-private/osslic.c
+ strip prototype/usr/sbin/osslic
+
+ if test -f prototype/kernel/misc/osscommon
+ then
+ prototype/usr/sbin/osslic -q -u -3prototype/kernel/misc/osscommon
+ fi
+
+ if test -f prototype/kernel/misc/$KERNEL64/osscommon
+ then
+ prototype/usr/sbin/osslic -q -u -6prototype/kernel/misc/$KERNEL64/osscommon
+ fi
+fi
+
+if test -f $KERNEL32/4front-private/ossupdate.c
+then
+ # ossupdate
+ cc -I$KERNEL32 $KERNEL32/4front-private/ossupdate.c -s -o prototype/usr/sbin/ossupdate -lsocket -lnsl
+fi
+
+sh $SRCDIR/setup/build_common.sh $SRCDIR $OSSLIBDIR
+
+rm -f $OSSLIBDIR/oss/
+
+exit 0