xref: /plan9-contrib/sys/src/9/bcm/mkfile (revision 5c47fe09a0cc86dfb02c0ea4a2b6aec7eda2361f)
1CONF=pi2
2CONFLIST=pi picpu pifat pi2 pi2cpu pi4 pi4cpu piwifi pi2wifi pi4wifi
3EXTRACOPIES=
4
5loadaddr=0x80008000
6
7objtype=arm
8</$objtype/mkfile
9p=9
10
11DEVS=`{rc ../port/mkdevlist $CONF|sort}
12
13PORT=\
14	alarm.$O\
15	alloc.$O\
16	allocb.$O\
17	auth.$O\
18	cache.$O\
19	chan.$O\
20	dev.$O\
21	edf.$O\
22	fault.$O\
23	mul64fract.$O\
24	page.$O\
25	parse.$O\
26	pgrp.$O\
27	portclock.$O\
28	print.$O\
29	proc.$O\
30	qio.$O\
31	qlock.$O\
32	random.$O\
33	rdb.$O\
34	rebootcmd.$O\
35	segment.$O\
36	swap.$O\
37	syscallfmt.$O\
38	sysfile.$O\
39	sysproc.$O\
40	taslock.$O\
41	tod.$O\
42	xalloc.$O\
43
44OBJ=\
45	l.$O\
46	lexception.$O\
47	lproc.$O\
48	arch.$O\
49	clock.$O\
50	fpi.$O\
51	fpiarm.$O\
52	fpimem.$O\
53	main.$O\
54	mmu.$O\
55	syscall.$O\
56#	trap.$O\
57	$DEVS\
58	$PORT\
59	$CONF.root.$O\
60	$CONF.rootc.$O\
61
62HFILES=\
63	arm.h
64
65LIB=\
66	/$objtype/lib/libmemlayer.a\
67	/$objtype/lib/libmemdraw.a\
68	/$objtype/lib/libdraw.a\
69	/$objtype/lib/libip.a\
70	/$objtype/lib/libsec.a\
71	/$objtype/lib/libmp.a\
72	/$objtype/lib/libc.a\
73
749:V: $p$CONF s$p$CONF
75
76$p$CONF:DQ:	$CONF.c $OBJ $LIB mkfile
77	$CC $CFLAGS '-DKERNDATE='`{date -n} $CONF.c
78	echo '# linking raw kernel'	# H6: no headers, data segment aligned
79	$LD -s -l -o $target -H6 -R4096 -T$loadaddr $OBJ $CONF.$O $LIB
80
81s$p$CONF:DQ:	$CONF.$O $OBJ $LIB
82	echo '# linking kernel with symbols'
83	$LD -l -o $target -R4096 -T$loadaddr $OBJ $CONF.$O $LIB
84	size $target
85
86$p$CONF.gz:D:	$p$CONF
87	gzip -9 <$p$CONF >$target
88
89$OBJ: $HFILES
90
91install:V: /$objtype/$p$CONF
92
93/$objtype/$p$CONF:D: $p$CONF s$p$CONF
94	cp -x $p$CONF s$p$CONF /$objtype/ &
95	for(i in $EXTRACOPIES)
96		{ 9fs $i && cp $p$CONF s$p$CONF /n/$i/$objtype && echo -n $i... & }
97	wait
98	echo
99	touch $target
100
101<../boot/bootmkfile
102<../port/portmkfile
103<|../port/mkbootrules $CONF
104
105arch.$O clock.$O fpiarm.$O main.$O mmu.$O screen.$O syscall.$O trap.$O trap4.$O: \
106	/$objtype/include/ureg.h
107
108archbcm.$O archbcm2.$O devether.$0 etherusb.$O: etherif.h ../port/netif.h
109fpi.$O fpiarm.$O fpimem.$O: ../port/fpi.h
110l.$O lexception.$O lproc.$O armv6.$O armv7.$O: arm.s
111armv7.$O: cache.v7.s
112main.$O: errstr.h init.h reboot.h
113mouse.$O screen.$O: screen.h
114devusb.$O usbdwc.$O: ../port/usb.h
115usbdwc.$O: dwcotg.h
116
117init.h:D:	../port/initcode.c init9.s
118	$CC ../port/initcode.c
119	$AS init9.s
120	$LD -l -R1 -s -o init.out init9.$O initcode.$O /$objtype/lib/libc.a
121	{echo 'uchar initcode[]={'
122	 xd -1x <init.out |
123		sed -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
124	 echo '};'} > init.h
125
126reboot.h:D:	rebootcode.s arm.s arm.h mem.h
127	$AS rebootcode.s
128	# -lc is only for memmove.  -T arg is PADDR(REBOOTADDR)
129	$LD -l -s -T0x1800 -R4 -o reboot.out rebootcode.$O -lc
130	{echo 'uchar rebootcode[]={'
131	 xd -1x reboot.out |
132		sed -e '1,2d' -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
133	 echo '};'} > reboot.h
134