1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 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
|