xref: /plan9/sys/src/9/kw/mkfile (revision 9b7bf7df4595c26f1e9b67beb0c6e44c9876fb05)
1CONF=plug
2CONFLIST=plug plugnv
3EXTRACOPIES=
4
5# allegedly u-boot uses the bottom 8MB (up to 0x800000)
6# so avoid that
7loadaddr=0x60800000
8
9objtype=arm
10</$objtype/mkfile
11p=9
12
13DEVS=`{rc ../port/mkdevlist $CONF}
14
15PORT=\
16	alarm.$O\
17	alloc.$O\
18	allocb.$O\
19	auth.$O\
20	cache.$O\
21	chan.$O\
22	dev.$O\
23	edf.$O\
24	fault.$O\
25	latin1.$O\
26	mul64fract.$O\
27	rebootcmd.$O\
28	page.$O\
29	parse.$O\
30	pgrp.$O\
31	portclock.$O\
32	print.$O\
33	proc.$O\
34	qio.$O\
35	qlock.$O\
36	segment.$O\
37	swap.$O\
38	syscallfmt.$O\
39	sysfile.$O\
40	sysproc.$O\
41	taslock.$O\
42	tod.$O\
43	xalloc.$O\
44
45OBJ=\
46	l.$O\
47	lexception.$O\
48	lproc.$O\
49	arch.$O\
50	cga.$O\
51	clock.$O\
52	fpi.$O\
53	fpiarm.$O\
54	fpimem.$O\
55	main.$O\
56	mmu.$O\
57	random.$O\
58	trap.$O\
59	$CONF.root.$O\
60	$CONF.rootc.$O\
61	$DEVS\
62	$PORT\
63
64# HFILES=
65
66LIB=\
67	/$objtype/lib/libmemlayer.a\
68	/$objtype/lib/libmemdraw.a\
69	/$objtype/lib/libdraw.a\
70	/$objtype/lib/libip.a\
71	/$objtype/lib/libsec.a\
72	/$objtype/lib/libmp.a\
73	/$objtype/lib/libc.a\
74
759:V: $p$CONF s$p$CONF
76
77$p$CONF:DQ:	$CONF.c $OBJ $LIB mkfile
78	$CC $CFLAGS '-DKERNDATE='`{date -n} $CONF.c
79	echo '# linking raw kernel'
80#	sleep 1				# avoid relinking later
81	$LD -o $target -H0 -R4096 -T$loadaddr -l $OBJ $CONF.$O $LIB
82
83s$p$CONF:DQ:	$CONF.$O $OBJ $LIB
84	echo '# linking kernel with symbols'
85#	sleep 1				# avoid relinking later
86	$LD -o $target -R4096 -T$loadaddr -l $OBJ $CONF.$O $LIB
87	size $target
88
89$p$CONF.gz:D:	$p$CONF
90	gzip -9 <$p$CONF >$target
91
92$OBJ: $HFILES
93
94install:V: /$objtype/$p$CONF
95
96install-in-flash:V: /$objtype/$p$CONF paqdisk
97	plug.flash.cfg
98	echo erase all >/dev/flash/kernelctl
99	cp /$objtype/$p$CONF /dev/flash/kernel
100	echo erase all >/dev/flash/plan9ctl
101	cp paqdisk /dev/flash/plan9
102
103/$objtype/$p$CONF:D: $p$CONF s$p$CONF
104	cp -x $p$CONF s$p$CONF /$objtype/ &
105	for(i in $EXTRACOPIES)
106		{ echo $i: && 9fs $i && cp $p$CONF s$p$CONF /n/$i/$objtype } &
107	wait
108	touch $target
109
110paqdisk:
111	rm -fr armpaq
112	mkdir armpaq
113	cd armpaq
114	disk/mkfs -d . /sys/lib/sysconfig/proto/armpaqproto
115	mkpaqfs -o ../paqdisk
116	cd ..
117
118<../boot/bootmkfile
119<../port/portmkfile
120<|../port/mkbootrules $CONF
121
122# CFLAGS= -I. -I../port $CFLAGS	# hack to compile private sysproc.c (e.g.)
123
124arch.$O clock.$O fpiarm.$O main.$O mmu.$O screen.$O sdscsi.$O syscall.$O \
125	trap.$O: /$objtype/include/ureg.h
126
127archkw.$O devether.$O ether1116.$O ethermii.$O: \
128	etherif.h ethermii.h ../port/netif.h
129archkw.$O devflash.$O flashkw.$O: ../port/flashif.h
130fpi.$O fpiarm.$O fpimem.$O: fpi.h
131l.$O lexception.$O lproc.$O mmu.$O: arm.s arm.h mem.h
132main.$O:	errstr.h init.h reboot.h
133mouse.$O:	screen.h
134devusb.$O:	../port/usb.h
135usbehci.$O usbohci.$O usbuhci.$O: ../port/usb.h usbehci.h uncached.h
136
137init.h:D:	../port/initcode.c init9.s
138	$CC ../port/initcode.c
139	$AS init9.s
140	$LD -l -R1 -s -o init.out init9.$O initcode.$O /$objtype/lib/libc.a
141	{echo 'uchar initcode[]={'
142	 xd -1x <init.out |
143		sed -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
144	 echo '};'} > init.h
145
146reboot.h:D:	rebootcode.s arm.s arm.h mem.h
147	$AS rebootcode.s
148	# -lc is only for memmove.  -T arg is PADDR(REBOOTADDR)
149	$LD -l -a -s -T0x100 -R4 -o reboot.out rebootcode.$O -lc >reboot.list
150	{echo 'uchar rebootcode[]={'
151	 xd -1x reboot.out |
152		sed -e '1,2d' -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
153	 echo '};'} > reboot.h
154errstr.h:D:	../port/mkerrstr ../port/error.h
155	rc ../port/mkerrstr > errstr.h
156
157plug.clean:
158	rm -rf $p$CONF s$p$CONF armpaq paqdisk $CONF.c boot$CONF.c ../boot/libboot.a5
159