1#	$OpenBSD: Makefile,v 1.31 2023/10/26 17:13:50 deraadt Exp $
2
3FS=		miniroot${OSrev}.img
4FSSIZE=		88064
5CDROM=		cd${OSrev}.iso
6MOUNT_POINT=	/mnt
7MTREE=		${UTILS}/mtree.conf
8RAMDISK=	RAMDISK
9
10# this offset is required by Rockchip
11MSDOSSTART=	32768
12MSDOSSIZE=	16384
13
14NEWFS_ARGS_msdos=-L boot -c1 -F16
15MOUNT_ARGS_msdos=-o-l
16
17PDTB=		/usr/local/share/dtb/arm64
18PUBOOT=		/usr/local/share/u-boot
19PRPI=		/usr/local/share/raspberrypi-firmware/boot
20
21LISTS=		${.CURDIR}/list
22UTILS=		${.CURDIR}/../../miniroot
23
24MRDISKTYPE=	rdroot
25MRMAKEFSARGS=	-o disklabel=${MRDISKTYPE},minfree=0,density=4096
26
27PIFILES=\
28	bootcode.bin \
29	start.elf \
30	start4.elf \
31	fixup.dat \
32	fixup4.dat \
33	bcm2710-rpi-2-b.dtb \
34	bcm2710-rpi-3-b.dtb \
35	bcm2710-rpi-3-b-plus.dtb \
36	bcm2710-rpi-cm3.dtb \
37	bcm2711-rpi-4-b.dtb \
38	bcm2711-rpi-400.dtb \
39	bcm2711-rpi-cm4.dtb
40
41PIDTBO=\
42	disable-bt.dtbo
43
44all: ${FS} ${CDROM}
45
46cdbr:	/usr/mdec/BOOTAA64.EFI
47	dd if=/dev/zero of=cdbr bs=512 count=5760
48	vnconfig -v cdbr > vnd
49	fdisk -iy -b "5744@16:c" `cat vnd` >/dev/null
50	newfs -t msdos /dev/r`cat vnd`i
51	mount ${MOUNT_ARGS_msdos} /dev/`cat vnd`i ${MOUNT_POINT}
52	mkdir -p ${MOUNT_POINT}/efi/boot
53	cp /usr/mdec/BOOTAA64.EFI ${MOUNT_POINT}/efi/boot/bootaa64.efi
54	echo bootaa64.efi > ${MOUNT_POINT}/efi/boot/startup.nsh
55	umount ${MOUNT_POINT}
56	vnconfig -u `cat vnd`
57	rm -f vnd
58
59${FS}: bsd.rd
60	dd if=/dev/zero of=${FS} bs=512 count=${FSSIZE}
61	vnconfig -v ${FS} > vnd
62	fdisk -iy -b "${MSDOSSIZE}@${MSDOSSTART}:c" `cat vnd` >/dev/null
63	echo '/ *' | disklabel -wAT- `cat vnd`
64	newfs -t msdos ${NEWFS_ARGS_msdos} /dev/r`cat vnd`i
65	mount ${MOUNT_ARGS_msdos} /dev/`cat vnd`i ${MOUNT_POINT}
66.for FILE in ${PIFILES}
67	cp ${PRPI}/${FILE} ${MOUNT_POINT}/
68.endfor
69	mkdir -p ${MOUNT_POINT}/overlays
70.for FILE in ${PIDTBO}
71	cp ${PRPI}/overlays/${FILE} ${MOUNT_POINT}/overlays/
72.endfor
73	cp ${PUBOOT}/rpi_arm64/u-boot.bin ${MOUNT_POINT}/u-boot.bin
74	mkdir -p ${MOUNT_POINT}/efi/boot
75	cp /usr/mdec/BOOTAA64.EFI ${MOUNT_POINT}/efi/boot/bootaa64.efi
76	echo bootaa64.efi > ${MOUNT_POINT}/efi/boot/startup.nsh
77	echo 'arm_64bit=1\nenable_uart=1\ndtoverlay=disable-bt\nkernel=u-boot.bin' > ${MOUNT_POINT}/config.txt
78	umount ${MOUNT_POINT}
79	newfs -O 1 -m 0 -o space -i 524288 -c ${FSSIZE} /dev/r`cat vnd`a
80	mount /dev/`cat vnd`a ${MOUNT_POINT}
81	install -c -m 555 -o root -g wheel bsd.rd ${MOUNT_POINT}/bsd
82	ln ${MOUNT_POINT}/bsd ${MOUNT_POINT}/bsd.rd
83	df -i ${MOUNT_POINT}
84	umount ${MOUNT_POINT}
85	vnconfig -u `cat vnd`
86	rm -f vnd
87
88${CDROM}: ${BASE} ${XBASE} cdbr bsd.rd
89	rm -rf ${.OBJDIR}/cd-dir
90	mkdir -p ${.OBJDIR}/cd-dir/${OSREV}/${MACHINE}
91	mkdir -p ${.OBJDIR}/cd-dir/etc
92	echo "set image /${OSREV}/${MACHINE}/bsd.rd" > ${.OBJDIR}/cd-dir/etc/boot.conf
93	cp ${.OBJDIR}/bsd.rd ${.OBJDIR}/cd-dir/${OSREV}/${MACHINE}
94	cp -p ${.OBJDIR}/cdbr ${.OBJDIR}/cd-dir/${OSREV}/${MACHINE}
95	mkhybrid -a -R -T -L -l -d -D -N -o ${.OBJDIR}/${CDROM} \
96	    -A "OpenBSD ${OSREV} ${MACHINE} Install CD" \
97	    -P "Copyright (c) `date +%Y` Theo de Raadt, The OpenBSD project" \
98	    -p "Theo de Raadt <deraadt@openbsd.org>" \
99	    -V "OpenBSD/${MACHINE}   ${OSREV} Install CD" \
100	    -b ${OSREV}/${MACHINE}/cdbr -c ${OSREV}/${MACHINE}/boot.catalog \
101	    ${.OBJDIR}/cd-dir
102
103bsd.rd: mr.fs
104	cp bsd bsd.rd
105	rdsetroot bsd.rd mr.fs
106
107bsd:
108	cd ${.CURDIR}/../../../sys/arch/${MACHINE}/compile/${RAMDISK} && \
109	    su ${BUILDUSER} -c '${MAKE} config && ${MAKE} clean && exec ${MAKE} ${MFLAGS}'
110	cp -p ${.CURDIR}/../../../sys/arch/${MACHINE}/compile/${RAMDISK}/obj/bsd bsd
111
112mr.fs: instbin bsd
113	rm -rf $@.d
114	install -d -o root -g wheel $@.d
115	mtree -def ${MTREE} -p $@.d -u
116	CURDIR=${.CURDIR} OBJDIR=${.OBJDIR} OSrev=${OSrev} \
117	    TARGDIR=$@.d UTILS=${UTILS} RELEASEDIR=${RELEASEDIR} \
118	    sh ${UTILS}/runlist.sh ${LISTS}
119	rm $@.d/instbin
120	makefs ${MRMAKEFSARGS} $@ $@.d
121
122instbin.mk instbin.cache instbin.c: instbin.conf
123	crunchgen -E -D ${.CURDIR}/../../.. -L ${DESTDIR}/usr/lib \
124	    -c instbin.c -e instbin -m instbin.mk instbin.conf
125
126instbin: instbin.mk instbin.cache instbin.c
127	${MAKE} ${MFLAGS} -f instbin.mk SRCLIBDIR=${.CURDIR}/../../../lib all
128
129instbin.conf: ${LISTS}
130	awk -f ${UTILS}/makeconf.awk  ${LISTS} > instbin.conf
131
132unconfig:
133	-umount -f ${MOUNT_POINT}
134	-[ -f vnd ] && vnconfig -u `cat vnd` && rm -f vnd
135
136.ifdef RELEASEDIR
137install:
138	cp bsd.rd ${RELEASEDIR}/bsd.rd
139	chmod a+r ${RELEASEDIR}/bsd.rd
140	cp ${FS} ${CDROM} ${RELEASEDIR}
141.endif
142
143clean cleandir:
144	rm -f *.core mr.fs instbin instbin.mk instbin.cache \
145	    lib*.a lib*.olist instbin.map *.o *.lo *.c bsd.rd
146	rm -f instbin.conf
147	rm -rf cd-dir mr.fs.d cdbr
148
149.include <bsd.obj.mk>
150