File: build.sh

package info (click to toggle)
oss4 4.2-build2020-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 16,408 kB
  • sloc: ansic: 237,053; cpp: 18,981; sh: 4,909; pascal: 3,863; asm: 1,189; makefile: 646; php: 53; xml: 46
file content (176 lines) | stat: -rw-r--r-- 5,293 bytes parent folder | download | duplicates (3)
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#!/bin/sh

. ./.directories

if which gawk >/dev/null
then
   TXT2MAN=$SRCDIR/setup/txt2man
else
   echo "No gawk found. Using lesser replacement" >&2
   cc -o txt2man origdir/setup/txt2man.c
   TXT2MAN=./txt2man
fi

rm -rf prototype

mkdir prototype
mkdir prototype/etc
mkdir prototype/etc/rc.d
mkdir prototype/usr
mkdir prototype/usr/bin
mkdir prototype/usr/sbin
mkdir -p prototype/$OSSLIBDIR
mkdir prototype/$OSSLIBDIR/etc
mkdir prototype/$OSSLIBDIR/lib
mkdir prototype/$OSSLIBDIR/include
mkdir prototype/$OSSLIBDIR/include/internals
mkdir prototype/$OSSLIBDIR/include/sys
mkdir prototype/$OSSLIBDIR/modules
mkdir prototype/$OSSLIBDIR/objects
mkdir prototype/usr/share
mkdir prototype/usr/share/man
mkdir prototype/usr/share/man/man1
mkdir prototype/usr/share/man/man7
mkdir prototype/usr/share/man/man8
mkdir prototype/$OSSLIBDIR/conf

echo "OSSLIBDIR=$OSSLIBDIR" > prototype/etc/oss.conf

# Regenerating the config file templates
rm -f /tmp/confgen
if ! cc -o /tmp/confgen ./setup/FreeBSD/confgen.c
then
        echo Building confgen failed
        exit 1
fi

if ! /tmp/confgen prototype/$OSSLIBDIR/conf $OSSLIBDIR/conf kernel/drv/* kernel/nonfree/drv/*
then
        echo Running confgen failed
        exit 1
fi

rm -f /tmp/confgen

cp -r $SRCDIR/setup/FreeBSD/oss/* prototype/$OSSLIBDIR/
cp $SRCDIR/kernel/OS/FreeBSD/wrapper/bsddefs.h prototype/$OSSLIBDIR/build/

cp $SRCDIR/include/*.h prototype/$OSSLIBDIR/include/sys/
cp $SRCDIR/lib/libOSSlib/midiparser.h prototype/$OSSLIBDIR/include/
cp kernel/framework/include/timestamp.h kernel/framework/include/local_config.h $SRCDIR/kernel/framework/include/*_core.h $SRCDIR/kernel/framework/include/ossddk/*.h prototype/$OSSLIBDIR/include/internals
cp kernel/framework/include/ossddk/oss_limits.h prototype/$OSSLIBDIR/include/internals

ld -r -o prototype/$OSSLIBDIR/build/osscore.lib target/objects/*.o

rm -f devlist.txt

for n in target/modules/*.o
do
	N=`basename $n .o`
echo Check devices for $N
  	grep "^$N[ 	]" ./devices.list >> devlist.txt
done

(cd target/bin; rm -f ossrecord; ln -s ossplay ossrecord)
cp target/modules/*.o prototype/$OSSLIBDIR/objects
cp target/build/*.c prototype/$OSSLIBDIR/build/
cp target/bin/* prototype/usr/bin/
cp target/sbin/* prototype/usr/sbin/
cp $SRCDIR/setup/FreeBSD/sbin/* prototype/usr/sbin/
cp $SRCDIR/setup/FreeBSD/etc/rc.d/oss prototype/etc/rc.d
cp lib/libOSSlib/libOSSlib.so prototype/$OSSLIBDIR/lib

cp devlist.txt prototype/$OSSLIBDIR/etc/devices.list

if test -d kernel/nonfree
then
	rm -f $SRCDIR/devlists/FreeBSD
	cp devlist.txt $SRCDIR/devlists/FreeBSD
fi

# Generate Man pages for commands
for i in target/bin/*
do
CMD=`basename $i`
$TXT2MAN -t "$CMD" -v "User Commands" -s 1 cmd/$CMD/$CMD.man | gzip -9 > prototype/usr/share/man/man1/$CMD.1.gz
echo done $CMD
done

for i in target/sbin/*
do
  CMD=`basename $i`
  if test -f cmd/$CMD/$CMD.man
  then
	$TXT2MAN -t "$CMD" -v "System Administration Commands" -s 8 cmd/$CMD/$CMD.man | gzip -9 > prototype/usr/share/man/man8/$CMD.8.gz
	echo done $CMD
  fi
done

for i in $SRCDIR/misc/man1m/*.man
do
        N=`basename $i .man`
        $TXT2MAN -t "$CMD" -v "OSS System Administration Commands" -s 1 $i | gzip -9 > prototype/usr/share/man/man1/$N.1.gz
done

$TXT2MAN -t "ossdetect" -v "User Commands" -s 8 os_cmd/FreeBSD/ossdetect/ossdetect.man | gzip -9 > prototype/usr/share/man/man8/ossdetect.8.gz
echo done ossdetect

for n in target/modules/*.o
do
	N=`basename $n .o`
	ld -r -o prototype/$OSSLIBDIR/$MODULES/$N.o $n
	echo Check devices for $N
  	grep "^$N[ 	]" ./devices.list >> devlist.txt

	rm -f /tmp/ossman.txt

	if test -f $SRCDIR/kernel/drv/$N/$N.man
	then
	  sed "s:CONFIGFILEPATH:$OSSLIBDIR/conf:g" < $SRCDIR/kernel/drv/$N/$N.man > /tmp/ossman.txt
	  $TXT2MAN -t "$CMD" -v "OSS Devices" -s 7 /tmp/ossman.txt|gzip -9 > prototype/usr/share/man/man7/$N.7.gz
	else
		if test -f $SRCDIR/kernel/nonfree/drv/$N/$N.man
		then
	  		sed "s:CONFIGFILEPATH:$OSSLIBDIR/conf:g" < $SRCDIR/kernel/nonfree/drv/$N/$N.man > /tmp/ossman.txt
	  		$TXT2MAN -t "$CMD" -v "OSS Devices" -s 7 $SRCDIR/kernel/nonfree/drv/$N/$N.man|gzip -9 > prototype/usr/share/man/man7/$N.7.gz
		fi
	fi
done

sed "s:CONFIGFILEPATH:$OSSLIBDIR/conf:g" < $SRCDIR/kernel/drv/osscore/osscore.man > /tmp/ossman.txt
$TXT2MAN -t "osscore" -v "OSS Devices" -s 7 /tmp/ossman.txt|gzip -9 > prototype/usr/share/man/man7/osscore.7.gz
rm -f /tmp/ossman.txt

cp .version prototype/$OSSLIBDIR/version.dat

# Licensing stuff
if test -f $SRCDIR/4front-private/osslic.c
then
	cc -o prototype/usr/sbin/osslic -Isetup -Ikernel/nonfree/include -Ikernel/framework/include -Iinclude -Ikernel/OS/FreeBSD -I$SRCDIR $SRCDIR/4front-private/osslic.c
	strip prototype/usr/sbin/osslic

        BITS=3 # Default to 32 bit ELF format
        case "`uname -m`" in amd64|x86_64)
           BITS=6 # Use 64 bit ELF format
	;;
	esac

	prototype/usr/sbin/osslic -q -u -$BITS./prototype/$OSSLIBDIR/build/osscore.lib
	
fi

if test -f 4front-private/ossupdate.c
then
  #ossupdate
  cc -I. 4front-private/ossupdate.c -s -o prototype/usr/sbin/ossupdate
fi

sh $SRCDIR/setup/build_common.sh $SRCDIR $OSSLIBDIR

chmod 700 prototype/usr/sbin/*
chmod 755 prototype/usr/bin/*
chmod 700 prototype/$OSSLIBDIR

(cd prototype;ls usr/sbin/* usr/bin/* etc/* usr/share/man/man*/*) > prototype/$OSSLIBDIR/sysfiles.list

exit 0