diff options
Diffstat (limited to 'utils/lin-inject.sh')
-rw-r--r-- | utils/lin-inject.sh | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/utils/lin-inject.sh b/utils/lin-inject.sh new file mode 100644 index 0000000..3d2126f --- /dev/null +++ b/utils/lin-inject.sh @@ -0,0 +1,141 @@ +#!/bin/sh + +if test "$1 " = " " +then + echo You need to give the Linux kernel directory as a argument. + exit 1 +fi + +TARGETDIR="$1" + +if ! test -d $TARGETDIR +then + echo $TARGETDIR does not exist. + exit 1 +fi + +echo +echo Kernel build directory is $TARGETDIR + +if test -d $TARGETDIR/sound/oss4 +then + echo error: $TARGETDIR/sound/oss4 already exists. Remove it and try again. + exit 1 +fi + +if ! test -d kernel/drv +then + echo You need to run this script inside the OSS source directory + exit 1 +fi + +echo Copying OSS files +if ! cp -R kernel $TARGETDIR/sound/oss4 +then + echo Failed to copy OSS files to $TARGETDIR/sound/oss4. + exit 1 +fi + +(cd $TARGETDIR/sound/oss4;mv OS/Linux linux_os;rm -rf OS) +cp setup/Linux/oss/build/*.c $TARGETDIR/sound/oss4/linux_os +cp setup/Linux/oss/build/*.h $TARGETDIR/sound/oss4/linux_os +cp setup/Linux/oss/build/*.inc $TARGETDIR/sound/oss4/linux_os +cp setup/Linux/oss/build/osscore.c $TARGETDIR/sound/oss4/framework/osscore/ + +rm -rf $TARGETDIR/sound/oss4/drv/Makefile + +# Remove some non-Linux drivers +rm -rf $TARGETDIR/sound/oss4/drv/oss_sadasupport +rm -rf $TARGETDIR/sound/oss4/drv/osscore +rm -rf $TARGETDIR/sound/oss4/drv/oss_audiocs +rm -rf $TARGETDIR/sound/oss4/nonfree + +# Remove MIDI support that is not functional yet. +rm -rf $TARGETDIR/sound/oss4/framework/midi + +# Remove all previous Makefiles that are bogus +find $TARGETDIR/sound/oss4 -name Makefile -exec rm {} ';' + +# Remove the man files +find $TARGETDIR/sound/oss4 -name '*.man' -exec rm {} ';' + +cat<<END_OF_CONFIG >$TARGETDIR/sound/oss4/Kconfig + +config OSS_VMIX + bool "Virtual audio mixer (vmix) suport" + default y + +config OSS_VMIX_FLOAT + bool "Use floating point arithmetic for vmix computations" + default y + +config OSS_MIDI + bool "MIDI support (partially functional)" + default n + +END_OF_CONFIG + +echo Generating drivers +for n in $TARGETDIR/sound/oss4/drv/* +do + N=`basename $n|tr 'a-z' 'A-Z'` + BN=`basename $n` + + echo config $N >>$TARGETDIR/sound/oss4/Kconfig + echo " tristate" \"`head -1 $n/.name`\">>$TARGETDIR/sound/oss4/Kconfig + echo " depends on" OSS4 >>$TARGETDIR/sound/oss4/Kconfig + echo " default y" >>$TARGETDIR/sound/oss4/Kconfig + echo >>$TARGETDIR/sound/oss4/Kconfig + + mv $TARGETDIR/sound/oss4/drv/$BN/$BN.c $TARGETDIR/sound/oss4/drv/$BN/"$BN"_main.c + cp target/build/$BN.c $TARGETDIR/sound/oss4/drv/$BN/"$BN"_stub.c + + echo obj-\$\(CONFIG_OSS_$N\) += drv\/$BN/ >> $TARGETDIR/sound/oss4/Makefile + echo obj-\$\(CONFIG_OSS_$N\) := $BN.o > $TARGETDIR/sound/oss4/drv/$BN/Makefile + echo >> $TARGETDIR/sound/oss4/drv/$BN/Makefile + + for fn in $TARGETDIR/sound/oss4/drv/$BN/*.c + do + fn=`basename $fn .c`.o + echo $BN-objs += $fn >> $TARGETDIR/sound/oss4/drv/$BN/Makefile + done +done + +echo Done + +if ! grep -q OSS4 $TARGETDIR/sound/Kconfig +then + + echo + echo NOTICE + echo + echo As the final step you need to copy/paste the following lines to + echo $TARGETDIR/sound/Kconfig + echo The right location is just above the last endmenu line. + + cat <<END_OF_CONFIG +----- cut here --- +menu "Open Sound System v4.x" + +config OSS4 + tristate "Open Sound System v4.x support" + depends on SOUND!=n + depends on !SND + depends on !SOUND_PRIME + help + This is version 4.x of Open Sound System. It replaces + the older (DEPRECATED) OSS version that has been included + in the kernel during past 10 years. + + You need to disabele both ALSA and the older OSS version + before being able to compile OSSv4. + +source "sound/oss4/Kconfig" +endmenu +----- cut here --- +END_OF_CONFIG + +echo Finally append the following line to $TARGETDIR/sound/Makefile +echo 'obj-$(CONFIG_OSS4) += oss4/' +fi +exit 0 |