~ubuntu-branches/ubuntu/oneiric/oss4/oneiric-proposed

« back to all changes in this revision

Viewing changes to debian/create-ma-tree.sh

  • Committer: Bazaar Package Importer
  • Author(s): Stefano Rivera
  • Date: 2011-06-16 20:37:48 UTC
  • mfrom: (5.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20110616203748-jbrxik6ql33z54co
Tags: 4.2-build2004-1ubuntu1
* Merge from Debian unstable.
  - Supports our current kernel (LP: #746048)
  Remaining changes:
  - debian/oss4-dkms.dkms.in: s/source/build/ in Kernel headers paths.
* ld-as-needed.patch: Re-order CC arguments to enable building with ld
  --as-needed (LP: #770972)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
# Extract OSS4.2 core & drivers modules.
 
3
# based on http://www.arklinux.org/~bero/oss2kconfig
 
4
 
 
5
usage() {
 
6
        [ -z "$1" ] || echo $1
 
7
        echo "Usage:"
 
8
        echo "$0 PATH_TO_NEWDIR PATH_TO_OSS"
 
9
        exit 1
 
10
}
 
11
 
 
12
[ "$#" != 2 ] && usage
 
13
#[ ! -f "$1"/Kbuild ] && usage "$1 does not appear to be a kernel source tree"
 
14
[ ! -d "$2"/oss ] && usage "$2 does not appear to be a OSS source tree"
 
15
 
 
16
NEWDIR=`pwd`"/$1"
 
17
OSSDIR=`pwd`"/$2"
 
18
 
 
19
mkdir -p $NEWDIR/core $NEWDIR/drivers $NEWDIR/include
 
20
 
 
21
cd $OSSDIR
 
22
 
 
23
# Remove sparc/solaris stuff
 
24
rm -rf kernel/drv/osscore
 
25
rm -rf kernel/drv/oss_audiocs
 
26
rm -rf kernel/drv/oss_sadasupport
 
27
 
 
28
# Move bits into the kernel tree...
 
29
cp -L include/soundcard.h "$NEWDIR"/include
 
30
cp -L include/oss_userdev_exports.h "$NEWDIR"/include
 
31
 
 
32
cp -L kernel/OS/Linux/*.[ch] "$NEWDIR"/core/
 
33
cp -L kernel/OS/Linux/wrapper/*.[ch] "$NEWDIR"/core/
 
34
cp -L setup/Linux/oss/build/*.inc "$NEWDIR"/drivers/
 
35
cp -L setup/Linux/oss/build/* "$NEWDIR"/core/
 
36
rm "$NEWDIR"/core/*.inc
 
37
rm "$NEWDIR"/core/install.sh
 
38
cp -rL kernel/framework/include/* "$NEWDIR"/core/
 
39
mv "$NEWDIR"/core/osscore.c "$NEWDIR"/core/oss_core.c
 
40
 
 
41
SOURCES=""
 
42
SRCCOUNT=0
 
43
for i in ac97 audio midi midi_stubs mixer osscore remux sndstat uart401 vmix_core; do
 
44
        i="kernel/framework/$i"
 
45
        [ -d "$i" ] || continue
 
46
        NAME="`basename $i`"
 
47
        pushd "$i"
 
48
        for j in `ls *.c`; do
 
49
                SOURCES="$SOURCES $j"
 
50
                SRCCOUNT=$((SRCCOUNT + 1))
 
51
        done
 
52
        popd
 
53
        rm -f "$i"/*.man "$i"/Makefile
 
54
        cp -L "$i"/* "$NEWDIR"/core/
 
55
done
 
56
OBJS="os_linux.o `echo $SOURCES |sed -e 's,\.c,.o,g'`"
 
57
cat >"$NEWDIR"/core/Makefile <<EOF
 
58
EXTRA_CFLAGS = -I\$(KBUILD_EXTMOD) -mhard-float -isystem /usr/include
 
59
obj-m += osscore.o
 
60
osscore-objs := oss_core.o $OBJS
 
61
EOF
 
62
 
 
63
# This is somewhat ugly, but unavoidable -- parts of OSS need those defines and
 
64
# access to system includes while osscore.c can't be compiled with them...
 
65
for i in $OBJS; do
 
66
        echo "CFLAGS_$i = -isystem /usr/include -D_KERNEL" >>"$NEWDIR"/core/Makefile
 
67
done
 
68
 
 
69
 
 
70
cat >"$NEWDIR"/drivers/Makefile <<EOF
 
71
osscore_symbols.inc:
 
72
        echo "static const struct modversion_info ____versions[]" >> osscore_symbols.inc
 
73
        echo " __attribute__((used))" >> osscore_symbols.inc
 
74
        echo "__attribute__((section(\"__versions\"))) = {" >> osscore_symbols.inc
 
75
        sed -e "s:^:{:" -e "s:\t:, \":" -e "s:\t\(.\)*:\"},:" < Module.symvers >> osscore_symbols.inc
 
76
        echo "};" >> osscore_symbols.inc
 
77
 
 
78
EXTRA_CFLAGS=-D_KERNEL -I\$(KBUILD_EXTMOD)/../core -I\$(KBUILD_EXTMOD) -isystem /usr/include -mhard-float
 
79
EOF
 
80
 
 
81
# Merge the drivers...
 
82
for i in kernel/drv/*; do
 
83
        [ -d "$i" ] || continue
 
84
        NAME="`basename $i`"
 
85
        DEV="`echo $NAME | tr a-z A-Z`"
 
86
        pushd $i
 
87
        SOURCES=""
 
88
        SRCCOUNT=0
 
89
        for j in `ls *.c`; do
 
90
                if [ "$j" = "$NAME.c" ]; then
 
91
                        mv $j ${NAME}driver.c
 
92
                        SOURCES="$SOURCES ${NAME}driver.c"
 
93
                else
 
94
                        SOURCES="$SOURCES $j"
 
95
                fi
 
96
                SRCCOUNT=$((SRCCOUNT + 1))
 
97
        done
 
98
        popd
 
99
        if [ -e target/build/"$NAME".c ]; then
 
100
                cp target/build/"$NAME".c "$NEWDIR"/drivers/${NAME}module.c
 
101
                SOURCES="$SOURCES ${NAME}module.c"
 
102
                SRCCOUNT=$((SRCCOUNT + 1))
 
103
        fi
 
104
        
 
105
        rm -f "$i"/*.man "$i"/Makefile
 
106
        cp -L "$i"/* "$NEWDIR"/drivers/
 
107
        if [ "$SRCCOUNT" = "1" ]; then
 
108
                echo "obj-m += ${SOURCES/.c/.o}" >>"$NEWDIR"/drivers/Makefile
 
109
        else
 
110
                echo "obj-m += $NAME.o" >>"$NEWDIR"/drivers/Makefile
 
111
                echo "$NAME-objs := `echo $SOURCES |sed -e 's,\.c,.o,g'`" >>"$NEWDIR"/drivers/Makefile
 
112
        fi
 
113
done
 
114
rm -rf "$NEWDIR"/drivers/*.o
 
115
 
 
116
 
 
117
# Main Makefile
 
118
#echo 'obj-m += core/ drivers/ ' > "$NEWDIR"/Makefile
 
119
 
 
120
# Adjust OSS files to some changed header file locations
 
121
find "$NEWDIR"/ -type f |xargs sed -i -e 's,"soundcard.h","../include/soundcard.h",g;s,../include/internals/,,g;s,"../include/sys/soundcard.h","../include/soundcard.h",g'
 
122
find "$NEWDIR"/ -type f |xargs sed -i -e 's,<oss_userdev_exports.h>,"../include/oss_userdev_exports.h",g'
 
123
find "$NEWDIR"/ -type f |xargs sed -i -e 's,"oss_exports.h",<ossddk/oss_exports.h>,g'
 
124
find "$NEWDIR"/ -type f |xargs sed -i -e 's,"ossddk.h",<ossddk/ossddk.h>,g'
 
125
sed -i -e 's,kernel/OS/Linux/wrapper/wrap.h,wrap.h,g' "$NEWDIR"/core/os.h
 
126
sed -i -e 's,#include "ubuntu_version_hack.inc",,g' "$NEWDIR"/core/oss_core.c
 
127
 
 
128
# Don't trust OSS_LITTLE_ENDIAN & OSS_BIG_ENDIAN
 
129
sed -i -e '/^#define AUDIO_CORE_H/a\#include <endian.h>' "$NEWDIR"/core/audio_core.h
 
130
find "$NEWDIR"/ -type f |xargs sed -i -e 's,#ifdef OSS_BIG_ENDIAN,#if __BYTE_ORDER == __BIG_ENDIAN,g'
 
131
find "$NEWDIR"/ -type f |xargs sed -i -e 's,#ifndef OSS_BIG_ENDIAN,#if __BYTE_ORDER != __BIG_ENDIAN,g'
 
132
find "$NEWDIR"/ -type f |xargs sed -i -e 's,#ifdef OSS_LITTLE_ENDIAN,#if __BYTE_ORDER == __LITTLE_ENDIAN,g'
 
133
find "$NEWDIR"/ -type f |xargs sed -i -e 's,#ifndef OSS_LITTLE_ENDIAN,#if __BYTE_ORDER != __LITTLE_ENDIAN,g'
 
134
 
 
135
# OSS4 drivers need to depend on OSS4 core and not OSS3 from the kernel
 
136
ln -sf ../core/Module.symvers "$NEWDIR"/drivers/Module.symvers
 
137