1#	$OpenBSD: Makefile,v 1.9 2024/02/10 16:47:46 deraadt Exp $
2
3FS=		install${OSrev}.img
4FSSIZE=		1136400
5CDROM=		install${OSrev}.iso
6
7MOUNT_POINT=	/mnt
8
9RELXDIR?=	/home/relx-${MACHINE}
10RELDIR?=	/home/rel-${MACHINE}
11
12BASE=		${RELDIR}/base${OSrev}.tgz ${RELDIR}/comp${OSrev}.tgz \
13		${RELDIR}/game${OSrev}.tgz ${RELDIR}/man${OSrev}.tgz \
14		${RELDIR}/bsd ${RELDIR}/bsd.mp ${RELDIR}/bsd.rd \
15		${RELDIR}/INSTALL.${MACHINE}
16XBASE=		${RELXDIR}/xbase${OSrev}.tgz ${RELXDIR}/xfont${OSrev}.tgz \
17		${RELXDIR}/xshare${OSrev}.tgz ${RELXDIR}/xserv${OSrev}.tgz
18
19# this offset is required by Rockchip
20MSDOSSTART=	32768
21MSDOSSIZE=	16384
22
23NEWFS_ARGS_msdos=-L boot -c1 -F16
24MOUNT_ARGS_msdos=-o-l
25
26PDTB=		/usr/local/share/dtb/arm64
27PUBOOT=		/usr/local/share/u-boot
28PRPI=		/usr/local/share/raspberrypi-firmware/boot
29
30PIFILES=\
31	bootcode.bin \
32	start.elf \
33	start4.elf \
34	fixup.dat \
35	fixup4.dat \
36	bcm2710-rpi-2-b.dtb \
37	bcm2710-rpi-3-b.dtb \
38	bcm2710-rpi-3-b-plus.dtb \
39	bcm2710-rpi-cm3.dtb \
40	bcm2711-rpi-4-b.dtb \
41	bcm2711-rpi-400.dtb \
42	bcm2711-rpi-cm4.dtb
43
44PIDTBO=\
45	disable-bt.dtbo
46
47all: ${FS} ${CDROM}
48
49cdbr:	${RELDIR}/BOOTAA64.EFI
50	dd if=/dev/zero of=cdbr bs=512 count=5760
51	vnconfig -v cdbr > vnd
52	fdisk -iy -b "5744@16:c" `cat vnd` >/dev/null
53	newfs -t msdos /dev/r`cat vnd`i
54	mount ${MOUNT_ARGS_msdos} /dev/`cat vnd`i ${MOUNT_POINT}
55	mkdir -p ${MOUNT_POINT}/efi/boot
56	cp ${RELDIR}/BOOTAA64.EFI ${MOUNT_POINT}/efi/boot/bootaa64.efi
57	echo bootaa64.efi > ${MOUNT_POINT}/efi/boot/startup.nsh
58	umount ${MOUNT_POINT}
59	vnconfig -u `cat vnd`
60	rm -f vnd
61
62${FS}: ${BASE} ${XBASE}
63	dd if=/dev/zero of=${FS} bs=512 count=${FSSIZE}
64	vnconfig -v ${FS} > vnd
65	fdisk -iy -b "${MSDOSSIZE}@${MSDOSSTART}:c" `cat vnd` >/dev/null
66	echo '/ *' | disklabel -wAT- `cat vnd`
67	newfs -t msdos ${NEWFS_ARGS_msdos} /dev/r`cat vnd`i
68	mount ${MOUNT_ARGS_msdos} /dev/`cat vnd`i ${MOUNT_POINT}
69.for FILE in ${PIFILES}
70	cp ${PRPI}/${FILE} ${MOUNT_POINT}/
71.endfor
72	mkdir -p ${MOUNT_POINT}/overlays
73.for FILE in ${PIDTBO}
74	cp ${PRPI}/overlays/${FILE} ${MOUNT_POINT}/overlays/
75.endfor
76	cp ${PUBOOT}/rpi_arm64/u-boot.bin ${MOUNT_POINT}/u-boot.bin
77	mkdir -p ${MOUNT_POINT}/efi/boot
78	cp /usr/mdec/BOOTAA64.EFI ${MOUNT_POINT}/efi/boot/bootaa64.efi
79	echo bootaa64.efi > ${MOUNT_POINT}/efi/boot/startup.nsh
80	echo 'arm_64bit=1\nenable_uart=1\ndtoverlay=disable-bt\nkernel=u-boot.bin' > ${MOUNT_POINT}/config.txt
81	umount ${MOUNT_POINT}
82
83	newfs -O 1 -m 0 -o space -i 524288 -c ${FSSIZE} /dev/r`cat vnd`a
84	mount /dev/`cat vnd`a ${MOUNT_POINT}
85	mkdir -p ${MOUNT_POINT}/${OSREV}/${MACHINE}
86	cp -p ${BASE} ${MOUNT_POINT}/${OSREV}/${MACHINE}
87	cp -p ${XBASE} ${MOUNT_POINT}/${OSREV}/${MACHINE}
88	ln ${MOUNT_POINT}/${OSREV}/${MACHINE}/bsd.rd ${MOUNT_POINT}/bsd.rd
89	ln ${MOUNT_POINT}/${OSREV}/${MACHINE}/bsd.rd ${MOUNT_POINT}/bsd
90
91	cat ${RELDIR}/SHA256 ${RELXDIR}/SHA256 > \
92	    ${MOUNT_POINT}/${OSREV}/${MACHINE}/SHA256
93	# XXX no SHA256.sig
94	df -i ${MOUNT_POINT}
95	umount ${MOUNT_POINT}
96	vnconfig -u `cat vnd`
97	rm -f vnd
98
99${CDROM}: ${BASE} ${XBASE} cdbr
100	rm -rf ${.OBJDIR}/cd-dir
101	mkdir -p ${.OBJDIR}/cd-dir/${OSREV}/${MACHINE}
102	mkdir -p ${.OBJDIR}/cd-dir/etc
103	echo "set image /${OSREV}/${MACHINE}/bsd.rd" > ${.OBJDIR}/cd-dir/etc/boot.conf
104
105	cp -p ${BASE} ${.OBJDIR}/cd-dir/${OSREV}/${MACHINE}
106	cp -p ${XBASE} ${.OBJDIR}/cd-dir/${OSREV}/${MACHINE}
107
108	cat ${RELDIR}/SHA256 ${RELXDIR}/SHA256 > \
109	    ${.OBJDIR}/cd-dir/${OSREV}/${MACHINE}/SHA256
110	# XXX no SHA256.sig
111
112	cp -p ${.OBJDIR}/cdbr ${.OBJDIR}/cd-dir/${OSREV}/${MACHINE}
113
114	mkhybrid -a -R -T -L -l -d -D -N -o ${.OBJDIR}/${CDROM} \
115	    -A "OpenBSD ${OSREV} ${MACHINE} Install CD" \
116	    -P "Copyright (c) `date +%Y` Theo de Raadt, The OpenBSD project" \
117	    -p "Theo de Raadt <deraadt@openbsd.org>" \
118	    -V "OpenBSD/${MACHINE}   ${OSREV} Install CD" \
119	    -b ${OSREV}/${MACHINE}/cdbr -c ${OSREV}/${MACHINE}/boot.catalog \
120	    ${.OBJDIR}/cd-dir
121
122install:
123	cp ${CDROM} ${FS} ${RELDIR}/
124
125clean cleandir:
126	rm -f ${CDROM} ${FS} cdbr
127	rm -rf cd-dir
128
129.include <bsd.obj.mk>
130