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