Makefile revision 1.48
1#	$NetBSD: Makefile,v 1.48 2002/02/12 11:17:47 is Exp $
2
3.include "../../Makefile.inc"
4.include <bsd.own.mk>
5.include <bsd.kernobj.mk>
6
7CBIN=		instbin
8ARCHDIR=	${.CURDIR}/../${MACHINE}/miniroot
9
10.if exists(${ARCHDIR}/Makefile.inc)
11.include "${ARCHDIR}/Makefile.inc"
12.endif
13
14HOST_RAWPART!=	sysctl -n kern.rawpartition | tr '0-9a-f' 'a-p'
15VND?=		vnd0
16VND_DEV=	/dev/${VND}${HOST_RAWPART}
17VND_RDEV=	/dev/r${VND}${HOST_RAWPART}
18VND_GEOM?=
19IMAGE?=		miniroot.fs
20IMAGESIZE?=	14336 # 7MB in 512 byte blocks
21NEWFSOPTS?=
22MOUNT_POINT?=	/mnt
23BOOTINSTALL?=	true
24PRELABEL?=	true
25
26.ifdef DISKTYPE
27DISKTYPEARG=	-t ${DISKTYPE}
28.endif
29
30LISTS=		${.CURDIR}/list ${ARCHDIR}/list
31CRUNCHCONF=	${CBIN}.conf
32MTREECONF=	${.CURDIR}/mtree.conf
33ICMD=		${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -m ${NONBINMODE}
34
35CRUNCHGEN?=	crunchgen
36MTREE?=		mtree
37
38.if !defined(DESTDIR) || ${DESTDIR} == ""
39all:
40	@echo setenv DESTDIR before making a miniroot!
41	@false
42.else
43
44all: ${CBIN}
45	dd if=/dev/zero of=${IMAGE} count=${IMAGESIZE}
46	vnconfig ${DISKTYPEARG} -v -c ${VND} ${IMAGE} ${VND_GEOM}
47	${PRELABEL}
48	-newfs -m 0 -o space ${NEWFSOPTS} ${VND_RDEV} ${DISKTYPE}
49	${BOOTINSTALL}
50	mount -o async ${VND_DEV} ${MOUNT_POINT}
51	${MTREE} -def ${MTREECONF} -p ${MOUNT_POINT}/ -u
52	REV=${DISTRIBREV} CURDIR=${.CURDIR} OBJDIR=${.OBJDIR} ARCHDIR=${ARCHDIR} \
53	    TARGDIR=${MOUNT_POINT} VND_RDEV=${VND_RDEV} \
54	    KERNOBJDIR=${KERNOBJDIR} \
55	    sh ${.CURDIR}/runlist.sh ${LISTS}
56	@echo ""
57	@df -i ${MOUNT_POINT}
58	@echo ""
59	umount ${MOUNT_POINT}
60	vnconfig -u ${VND}
61
62unconfig:
63	-umount -f ${MOUNT_POINT}
64	-vnconfig -u ${VND_DEV}
65	-/bin/rm -f ${IMAGE}
66
67${CBIN}.conf: ${LISTS}
68	awk -f ${.CURDIR}/makeconf.awk CBIN=${CBIN} ${LISTS} > ${CBIN}.conf
69
70${CBIN}.mk: .EXEC
71${CBIN}.mk ${CBIN}.c: ${CRUNCHCONF}
72	${CRUNCHGEN} -f -D ${.CURDIR}/../.. -L ${DESTDIR}/usr/lib ${CRUNCHCONF}
73
74${CBIN}: ${CBIN}.mk ${CBIN}.c
75	${MAKE} -f ${CBIN}.mk all
76
77.if !defined(RELEASEDIR) || ${RELEASEDIR} == ""
78release:
79	@echo setenv RELEASEDIR first
80	@false
81.else
82release: ${IMAGE}
83	mkdir -p ${RELEASEDIR}/installation/miniroot
84	gzip -c -9 < ${.OBJDIR}/miniroot.fs \
85		> ${RELEASEDIR}/installation/miniroot/miniroot.fs.gz
86	${.CURDIR}/../sets/makesums \
87		-t ${RELEASEDIR}/installation/miniroot miniroot.fs.gz
88
89.endif	# RELEASEDIR check
90.endif	# DESTDIR check
91
92clean cleandir distclean:
93	/bin/rm -f core ${IMAGE} ${CBIN} ${CBIN}.mk ${CBIN}.cache \
94	${CBIN}.conf *.o *.cro *.c
95
96.include <bsd.obj.mk>
97.include <bsd.subdir.mk>
98