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

« back to all changes in this revision

Viewing changes to 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