Makefile revision 6293
1#	$Id: Makefile,v 1.104 1995/02/10 05:41:10 phk Exp $
2#
3
4FLOPPY=		fd0
5#VNDEV=		vn0
6
7
8# Evil floppies are, of course, 1.44MB floppies.
9.if !defined(EVIL_FLOPPY)
10FDLABEL=	fd1200
11DDBS=		15k
12SECT=		15
13DDCOUNT=	80
14.else
15FDLABEL=	fd1440
16DDBS=		18k
17SECT=		18
18DDCOUNT=	80
19.endif
20
21MNT=		/mnt
22
23CPIO1= basename cat chmod cksum cp cu date dd df dmesg echo ed expr hostname 
24CPIO1+= kill ln ls mkdir mt mv rcp rm rmdir sh sleep stty sync tar test tip [ 
25CPIO1+= -sh badsect chown clri disklabel dump dmesg fdisk fsck getopt ifconfig 
26CPIO1+= init mknod mount mount_cd9660 mount_msdos mount_nfs ncftp newfs ping pwd
27CPIO1+= reboot restore slattach swapon umount route
28CPIO1+= rdump rrestore halt ft
29CPIO1+= ftp rsh sed telnet rlogin grep
30
31CPIO2=  etc/services etc/protocols
32
33CPIO3=	scripts/miscfuncs.sh scripts/instdist.sh scripts/netinst.sh \
34	scripts/adduser.sh scripts/bininst.sh scripts/setup.sh
35
36CPIO4=	/usr/sbin/tzsetup
37CPIO4B=	tzsetup
38
39# Somewhat on the rough side...
40CLEANFILES+=	*.o *.c *.cache *.mk *.lo ${CPIO1} ${CPIO2} ${CPIO4B}
41CLEANFILES+=	*.flp *.gz 
42CLEANFILES+=	boot_flp cpio_flp_1 kernel.* kernel *.core
43CLEANFILES+=	${.CURDIR}/../sys/compile/BOOTFLP/kernel \
44		${.CURDIR}/../sys/compile/GENERIC/kernel
45
46MTREE_DIR=	${.CURDIR}/../etc/mtree
47
48ZIPNSPLIT=	gzip --no-name -9 -c | split -b 240640 -
49
50LATIN1LINKS = \
51	da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES fi_FI \
52	fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT nl_BE nl_NL no_NO \
53	pt_PT sv_SE
54
55hierarchy:
56	mtree -deU -f ${MTREE_DIR}/BSD.root.dist  -p ${DESTDIR}/
57	mtree -deU -f ${MTREE_DIR}/BSD.var.dist   -p ${DESTDIR}/var
58	mtree -deU -f ${MTREE_DIR}/BSD.usr.dist   -p ${DESTDIR}/usr
59.if defined(MAKE_LOCAL)
60	mtree -deU -f ${MTREE_DIR}/BSD.local.dist -p ${DESTDIR}/usr/local
61.endif
62	cd ${DESTDIR}/usr/share/locale; \
63	for l in ${LATIN1LINKS} ; do \
64		rm -f $$l.ISO8859-1; \
65		ln -s lt_LN.ISO8859-1 $$l.ISO8859-1; \
66		chown ${BINOWN}.${BINGRP} $$l.ISO8859-1; \
67		chmod 755 $$l.ISO8859-1; \
68	done
69	rm -f ${DESTDIR}/sys
70	ln -s usr/src/sys ${DESTDIR}/sys
71
72kernel:	${.CURDIR}/../sys/i386/conf/GENERIC
73	@if [ ! -f ${.CURDIR}/../sys/compile/GENERIC/kernel ]; then \
74		(cd ${.CURDIR}/../sys/i386/conf; config GENERIC); \
75		(cd ${.CURDIR}/../sys/compile/GENERIC; \
76			${MAKE} depend; ${MAKE} all; ) \
77	fi
78	cp ${.CURDIR}/../sys/compile/GENERIC/kernel kernel
79
80kernel.BOOTFLP:	${.CURDIR}/../sys/i386/conf/BOOTFLP
81	@if [ ! -f ${.CURDIR}/../sys/compile/BOOTFLP/kernel ]; then \
82		(cd ${.CURDIR}/../sys/i386/conf; config BOOTFLP); \
83		(cd ${.CURDIR}/../sys/compile/BOOTFLP; \
84			${MAKE} depend; ${MAKE} all; ) \
85	fi
86	cp ${.CURDIR}/../sys/compile/BOOTFLP/kernel kernel.BOOTFLP
87	strip kernel.BOOTFLP
88
89boot.flp: kernel.BOOTFLP
90	crunchgen ${.CURDIR}/boot_flp.conf
91	${MAKE} -f boot_flp.mk objs exe NOCRYPT=yes
92	-umount /dev/${FLOPPY}
93	-umount ${MNT}
94	disklabel -w -r -B \
95		-b ${DESTDIR}/usr/mdec/fdboot -s ${DESTDIR}/usr/mdec/bootfd \
96		/dev/r${FLOPPY} ${FDLABEL}
97	newfs -c 80 -b 4096 -f 512 -i 9000 -m 0 -t 2 -u ${SECT} \
98		-o space -T ${FDLABEL} /dev/r${FLOPPY}
99	mount -o async /dev/${FLOPPY} ${MNT}
100	mkdir ${MNT}/dev ${MNT}/stand ${MNT}/mnt
101	cp kernel.BOOTFLP ${MNT}/kernel
102	( cd ${DESTDIR}/dev ; \
103		ls console tty ttyv1 null zero \
104		sd[0123][a-h] wd[0123][a-h] fd[01] \
105		rsd[0123][a-h] rwd[0123][a-h] rfd[01] \
106	| cpio -dump ${MNT}/dev \
107	)
108	gzip -9 -c < boot_flp > ${MNT}/stand/sysinstall
109	chmod 755 ${MNT}/stand/sysinstall
110	ln ${MNT}/stand/sysinstall ${MNT}/stand/newfs
111	ln ${MNT}/stand/sysinstall ${MNT}/stand/gzip
112	ln ${MNT}/stand/sysinstall ${MNT}/stand/fsck
113	install -m 400 -c ${.CURDIR}/../COPYRIGHT ${MNT}/COPYRIGHT
114	install -m 400 -c ${.CURDIR}/../share/FAQ/diskspace.FAQ \
115		${MNT}/DISKSPACE.FAQ
116	install -m 400 -c ${.CURDIR}/../share/FAQ/RELNOTES.FreeBSD \
117		${MNT}/RELNOTES.FreeBSD
118	install -m 400 -c ${.CURDIR}/../share/FAQ/TROUBLESHOOTING \
119		${MNT}/TROUBLESHOOTING
120	install -m 400 -c ${.CURDIR}/../share/FAQ/README-2.0 ${MNT}/README
121	touch ${MNT}/this_is_boot_flp
122	sync
123	-umount ${MNT}
124	sync
125	fsck /dev/r${FLOPPY}
126	dd if=/dev/r${FLOPPY} of=boot.tmp bs=${DDBS} count=${DDCOUNT}
127	mv boot.tmp boot.flp
128	od -x boot.flp | head -3
129	gzip -9 -c < boot.flp > boot.flp.gz
130
131cpio.flp: kernel
132	crunchgen ${.CURDIR}/cpio_flp_1.conf
133	${MAKE} -f cpio_flp_1.mk objs exe NOCRYPT=yes
134	for i in ${CPIO1} ; do rm -f ./$$i ; ln cpio_flp_1 ./$$i ; done
135	( cd /${DESTDIR} ; ls ${CPIO2} | cpio -H newc -oa ) | cpio -ivd
136	( cd ${.CURDIR} ; ls ${CPIO3} | cpio -H newc -oa ) | cpio -ivd
137	chmod 755 ${CPIO3}
138	cp ${CPIO4} .
139	rm -f OK
140	touch OK
141	(ls ${CPIO1} ${CPIO2} ${CPIO3} ${CPIO4B} ; \
142		echo kernel ; echo OK ) | \
143		cpio -H newc -oa | gzip -9 -c | \
144		dd conv=osync > cpio.flp
145	rm -f OK
146	gzip -1 -c < cpio.flp > cpio.flp.gz
147
148floppies: boot.flp cpio.flp
149	mkdir -p ${RELEASEDIR}/floppies
150	cp boot.flp boot.flp.gz cpio.flp cpio.flp.gz \
151		${RELEASEDIR}/floppies
152
153release20: 
154.if !defined(RELEASEDIR)
155	@echo "Do NOT invoke this target without a RELEASEDIR defined."
156	@echo "It will otherwise blow away your root directory!"
157	@exit 1
158.endif
159	@echo "Did you remember to increment the release number?"
160	( cd ${.CURDIR} ; ${MAKE} clean)
161	-mkdir ${RELEASEDIR}
162	chflags -R noschg ${RELEASEDIR}/.
163	rm -rf ${RELEASEDIR}/*
164	mkdir -p ${RELEASEDIR}/tarballs
165	( cd ${.CURDIR}/.. ;  \
166		${MAKE} all distribute NOCRYPT=yes)
167	( cd ${.CURDIR}/../etc ;  \
168		${MAKE} release-dirs )
169	( cd ${.CURDIR} ; ${MAKE} obj)
170	( cd ${.CURDIR} ;  \
171		${MAKE} kernel DESTDIR=${RELEASEDIR}/filesys )
172	install ${COPY} -m 644 ${.CURDIR}/../sys/compile/GENERIC/kernel \
173		${RELEASEDIR}/filesys/kernel
174	( cd ${.CURDIR} ;  \
175		${MAKE} hierarchy DESTDIR=${RELEASEDIR}/filesys )
176	( cd ${.CURDIR}/../etc ; \
177		${MAKE} distribution DESTDIR=${RELEASEDIR}/filesys \
178			NOCRYPT=yes SHARED=copies)
179	( cd ${RELEASEDIR}/filesys; \
180		tar cf - . | \
181		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/bindist/bindist.)
182	cp ${.CURDIR}/scripts/extract_bin.sh \
183		${RELEASEDIR}/tarballs/bindist/extract.sh
184	( cd ${RELEASEDIR}/tarballs/bindist; ${.CURDIR}/scripts/mkchecksums.sh )
185	( cd ${.CURDIR} ;  \
186		${MAKE} floppies )
187
188EXTRADISTRIBUTIONS=	secure games manpages proflibs dict info
189DISTRIBUTIONS=	bin ${EXTRADISTRIBUTIONS}
190MTREEFILES=	${.CURDIR}/../etc/mtree
191
192jkhdist:
193	@echo "--> Making all"
194	( cd ${.CURDIR}/..; ${MAKE} all )
195	@echo "--> Making distribute"
196	( cd ${.CURDIR}/..; ${MAKE} distribute )
197	@echo "--> Making beforetarballs"
198	( cd ${.CURDIR}; ${MAKE} beforetarballs )
199	@echo "--> Making tarballs"
200	( cd ${.CURDIR}; ${MAKE} tarballs )
201	@echo "--> Making floppies"
202	( cd ${.CURDIR}; ${MAKE} floppies )
203
204distribute: 
205	-mkdir ${RELEASEDIR}
206	chflags -R noschg ${RELEASEDIR}/.
207	rm -rf ${RELEASEDIR}/*
208	for i in ${DISTRIBUTIONS} ; \
209	do \
210	mkdir -p ${RELEASEDIR}/$$i ; \
211	mtree -deU -f ${MTREEFILES}/BSD.root.dist -p ${RELEASEDIR}/$$i/ ; \
212	mtree -deU -f ${MTREEFILES}/BSD.var.dist -p ${RELEASEDIR}/$$i/var ; \
213	mtree -deU -f ${MTREEFILES}/BSD.usr.dist -p ${RELEASEDIR}/$$i/usr ; \
214	done 
215	( cd ${.CURDIR} ;  \
216		${MAKE} kernel DESTDIR=${RELEASEDIR}/filesys )
217	install ${COPY} -m 644 ${.CURDIR}/../sys/compile/GENERIC/kernel \
218		${RELEASEDIR}/bin/kernel
219
220beforetarballs:
221	rm -rf ${RELEASEDIR}/manpages/usr/share/man
222	mv ${RELEASEDIR}/bin/usr/share/man \
223		${RELEASEDIR}/manpages/usr/share/man
224	rm -rf ${RELEASEDIR}/games/usr/games
225	mv ${RELEASEDIR}/bin/usr/games \
226		${RELEASEDIR}/games/usr/games
227	rm -rf ${RELEASEDIR}/games/usr/share/games
228	mv ${RELEASEDIR}/bin/usr/share/games \
229		${RELEASEDIR}/games/usr/share/games
230	rm -rf ${RELEASEDIR}/dict/usr/share/dict
231	mv ${RELEASEDIR}/bin/usr/share/dict \
232		${RELEASEDIR}/dict/usr/share/dict
233	mv ${RELEASEDIR}/bin/usr/share/misc/airport \
234	   ${RELEASEDIR}/bin/usr/share/misc/birthtoken \
235	   ${RELEASEDIR}/bin/usr/share/misc/flowers \
236	   ${RELEASEDIR}/bin/usr/share/misc/na.phone \
237	   ${RELEASEDIR}/bin/usr/share/misc/zipcodes \
238		${RELEASEDIR}/dict/usr/share/misc
239	mv ${RELEASEDIR}/bin/usr/lib/*_p.a \
240		${RELEASEDIR}/proflibs/usr/lib
241	-cd ${RELEASEDIR} ; \
242	find ${EXTRADISTRIBUTIONS} -depth -type d -print | xargs rmdir
243	mkdir -p ${RELEASEDIR}/secure/usr
244
245	mkdir -p ${RELEASEDIR}/src/usr
246	cd ${RELEASEDIR}/src/usr ; cvs export -r ${RELEASETAG} src
247
248tarballs:
249	rm -rf ${RELEASEDIR}/tarballs
250	mkdir -p ${RELEASEDIR}/tarballs
251	@for i in ${DISTRIBUTIONS} ; \
252	do \
253		mkdir -p ${RELEASEDIR}/tarballs/$${i} ; \
254		( cd ${RELEASEDIR}/$${i}; \
255			tar cf - . | \
256			${ZIPNSPLIT} ${RELEASEDIR}/tarballs/$$i/$${i}.) ; \
257	( cd ${RELEASEDIR}/tarballs/$${i}; \
258		sh -e ${.CURDIR}/scripts/mkchecksums.sh ) ; \
259	cp ${.CURDIR}/scripts/extract_$${i}.sh \
260		${RELEASEDIR}/tarballs/$${i}/extract.sh;\
261	echo "$${i} distribution is finished."; \
262	done
263
264srcbase-tarball:
265	(cd ${RELEASEDIR}/src/usr/src; \
266		mkdir -p ${RELEASEDIR}/tarballs/src; \
267		tar -cf - [A-Z]* | \
268		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/base.)
269
270srcbin-tarball:
271	(cd ${RELEASEDIR}/src/usr/src; \
272		mkdir -p ${RELEASEDIR}/tarballs/src; \
273		tar -cf - bin | \
274		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/srcbin.)
275
276srcetc-tarball:
277	(cd ${RELEASEDIR}/src/usr/src; \
278		mkdir -p ${RELEASEDIR}/tarballs/src; \
279		tar -cf - etc | \
280		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/etc.)
281
282srcgames-tarball:
283	(cd ${RELEASEDIR}/src/usr/src; \
284		mkdir -p ${RELEASEDIR}/tarballs/src; \
285		tar -cf - games | \
286		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/games.)
287
288srcgnu-tarball:
289	(cd ${RELEASEDIR}/src/usr/src; \
290		mkdir -p ${RELEASEDIR}/tarballs/src; \
291		tar -cf - gnu | \
292		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/gnu.)
293
294srcinclude-tarball:
295	(cd ${RELEASEDIR}/src/usr/src; \
296		mkdir -p ${RELEASEDIR}/tarballs/src; \
297		tar -cf - include | \
298		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/include.)
299
300srclib-tarball:
301	(cd ${RELEASEDIR}/src/usr/src; \
302		mkdir -p ${RELEASEDIR}/tarballs/src; \
303		tar -cf - lib | \
304		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/lib.)
305
306srclibexec-tarball:
307	(cd ${RELEASEDIR}/src/usr/src; \
308		mkdir -p ${RELEASEDIR}/tarballs/src; \
309		tar -cf - libexec | \
310		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/libexec.)
311
312srcrelease-tarball:
313	(cd ${RELEASEDIR}/src/usr/src; \
314		mkdir -p ${RELEASEDIR}/tarballs/src; \
315		tar -cf - release | \
316		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/release.)
317
318srcsbin-tarball:
319	(cd ${RELEASEDIR}/src/usr/src; \
320		mkdir -p ${RELEASEDIR}/tarballs/src; \
321		tar -cf - sbin | \
322		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/sbin.)
323
324srcsecure-tarball:
325	(cd ${RELEASEDIR}/src/usr/src; \
326		mkdir -p ${RELEASEDIR}/tarballs/secure; \
327		tar -cf - secure | \
328		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/secure/secrsrc.)
329
330srclkm-tarball:
331	(cd ${RELEASEDIR}/src/usr/src; \
332		mkdir -p ${RELEASEDIR}/tarballs/src; \
333		tar -cf - lkm | \
334		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/lkm.)
335
336srcerelease-tarball:
337	(cd ${RELEASEDIR}/src/usr/src; \
338		mkdir -p ${RELEASEDIR}/tarballs/src; \
339		tar -cf - release | \
340		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/release.)
341
342srcebones-tarball:
343	(cd ${RELEASEDIR}/src/usr/src; \
344		mkdir -p ${RELEASEDIR}/tarballs/secure; \
345		tar -cf - eBones | \
346		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/secure/ebones.)
347
348srcshare-tarball:
349	(cd ${RELEASEDIR}/src/usr/src; \
350		mkdir -p ${RELEASEDIR}/tarballs/src; \
351		tar -cf - share | \
352		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/share.)
353
354srcsys-tarball:
355	(cd ${RELEASEDIR}/src/usr/src; \
356		mkdir -p ${RELEASEDIR}/tarballs/src; \
357		tar -cf - sys lkm | \
358		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/sys.)
359
360srcusrbin-tarball:
361	(cd ${RELEASEDIR}/src/usr/src; \
362		mkdir -p ${RELEASEDIR}/tarballs/src; \
363		tar -cf - usr.bin | \
364		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/usrbin.)
365
366srcusrsbin-tarball:
367	(cd ${RELEASEDIR}/src/usr/src; \
368		mkdir -p ${RELEASEDIR}/tarballs/src; \
369		tar -cf - usr.sbin | \
370		${ZIPNSPLIT} ${RELEASEDIR}/tarballs/src/usrsbin.)
371
372src:	srcbase-tarball srcbin-tarball srcetc-tarball \
373	srcgames-tarball srcgnu-tarball srcinclude-tarball \
374	srclib-tarball srcsecure-tarball srclibexec-tarball \
375	srcsbin-tarball srcshare-tarball srcsys-tarball \
376	srcusrbin-tarball srcusrsbin-tarball srcrelease-tarball \
377	srcebones-tarball srclkm-tarball srcrelease-tarball
378	( cd ${RELEASEDIR}/tarballs/src; \
379		sh -e ${.CURDIR}/scripts/mkchecksums.sh )
380	cp ${.CURDIR}/scripts/extract_src.sh \
381		${RELEASEDIR}/tarballs/src/extract.sh
382
383.include <bsd.prog.mk>
384