xref: /minix3/releasetools/Makefile (revision 18a5822eff3a5bdeb6301a60d7d6269594c7ce35)
1# Makefile for the kernel image.
2.include <bsd.own.mk>
3.include "nbsd.config"
4
5.include <bsd.own.mk>
6
7u=/usr
8MDEC=	/usr/mdec
9GEN_FILES=	*.bak image kernel *.iso *.iso.gz cdfdimage rootimage src
10
11# Specify the programs that are part of the system image.
12KERNEL= kernel
13# PROGRAMS are in the order they should be loaded by boot
14.if ${MKBUILDEXT2RD} != "yes"
15FS=	${NETBSDSRCDIR}/servers/mfs/mfs
16.else
17FS=	${NETBSDSRCDIR}/servers/ext2/ext2
18.endif
19PROGRAMS= \
20	${NETBSDSRCDIR}/servers/ds/ds \
21	${NETBSDSRCDIR}/servers/rs/rs \
22	${NETBSDSRCDIR}/servers/pm/pm \
23	${NETBSDSRCDIR}/servers/sched/sched \
24	${NETBSDSRCDIR}/servers/vfs/vfs \
25	${NETBSDSRCDIR}/drivers/memory/memory \
26	${NETBSDSRCDIR}/drivers/log/log \
27	${NETBSDSRCDIR}/drivers/tty/tty \
28	${FS} \
29	${NETBSDSRCDIR}/servers/vm/vm \
30	${NETBSDSRCDIR}/servers/pfs/pfs \
31	${NETBSDSRCDIR}/servers/init/init
32
33usage:
34	@echo " " >&2
35	@echo "Master Makefile to create new MINIX configuration." >& 2
36	@echo "Root privileges are required." >&2
37	@echo " " >&2
38	@echo "Usage:" >&2
39	@echo "	make includes   # Install include files" >&2
40	@echo "	make depend     # Generate dependency files" >&2
41	@echo "	make services   # Compile and install all services" >&2
42	@echo "	make install    # Make image, and install to hard disk" >&2
43	@echo "	make hdboot     # Make image, and install to hard disk" >&2
44	@echo "	make fdboot     # Make image, and install to floppy disk" >&2
45	@echo "	make bootable   # Make hard disk bootable" >&2
46	@echo "	make nbsd_fetch	# Download current NetBSD reference sources" >&2
47	@echo "	make nbsd_diff	# Update minix-port.patch in NetBSD sources" >&2
48	@echo "	make clean      # Remove all compiler results, except libs" >&2
49	@echo " " >&2
50	@echo "To create a fresh MINIX configuration, try:" >&2
51	@echo "	make clean install      # new boot image" >&2
52	@echo "	make fresh install      # new everything" >&2
53	@echo " " >&2
54
55all: services
56
57# rebuild the program or system libraries
58includes:
59	$(MAKE) -C .. includes
60
61depend: includes .gitignore
62	$(MAKE) -C ../ depend
63
64.gitignore: Makefile
65	echo $(GEN_FILES) | tr ' ' '\n' >.gitignore
66
67services: includes kernel servers .WAIT drivers
68
69kernel: includes
70	$(MAKE) -C ../kernel
71
72servers: includes
73	$(MAKE) -C ../servers all install
74
75drivers: includes servers
76	$(MAKE) -C ../drivers all install
77
78# make bootable and place system images
79bootable:
80	exec su root mkboot bootable
81
82hdboot: services
83	rm -rf ${DESTDIR}/boot/minix/.temp/
84	mkdir -p ${DESTDIR}/boot/minix/.temp
85# mod_0 is used to make alphabetical order equal to the boot order
86	for i in ${PROGRAMS};					\
87	do							\
88	let n=n+1 >/dev/null;					\
89	[ "$$n" -ge 10 ] && prefix="mod" || prefix="mod0";	\
90	newname="${DESTDIR}/boot/minix/.temp/$${prefix}$${n}_`basename $$i`"; \
91	cp $$i $$newname;					\
92	strip -s $$newname;					\
93	gzip $$newname;						\
94	done
95	cp ../kernel/kernel ${DESTDIR}/boot/minix/.temp/
96	strip -s ${DESTDIR}/boot/minix/.temp/kernel
97	sh mkboot $@
98	sh ../commands/update_bootcfg/update_bootcfg.sh
99
100fdboot:
101	exec su root mkboot $@
102	@sync
103
104install:
105.if ${MKBUILDEXT2RD} != "yes"
106	${MAKE} includes services hdboot
107.else
108	${MAKE} cross_install
109.endif
110
111cross_install:
112	${INSTALL_DIR} ${DESTDIR}/multiboot
113	for i in ${PROGRAMS};						\
114	do								\
115	let n=n+1 >/dev/null;						\
116	[ "$$n" -ge 10 ] && prefix="mod" || prefix="mod0";		\
117	newname="${DESTDIR}/multiboot/$${prefix}$${n}_`basename $$i`";	\
118	${INSTALL} $$i $$newname;						\
119	strip -s $$newname;						\
120	gzip -f $$newname; 						\
121	done
122	${INSTALL} ../kernel/kernel ${DESTDIR}/multiboot/
123	strip -s ${DESTDIR}/multiboot/kernel
124
125# download and update NetBSD reference sources.
126nbsd_fetch:
127	export CVS_RSH=ssh; 							\
128	echo "retrieving hierarchies from ${NBSD_CVSROOT}";			\
129	IFS=,;									\
130	cat nbsd_ports | grep -v '^#' | while read port ;			\
131	do	set $$port;							\
132		date=$$1; minixpath=$$2; origpath=$$3;				\
133		if [ $$# -lt 3 ]; then origpath=$$2; fi;			\
134		echo "retrieving $$origpath ..";				\
135		cd ${NETBSDSRCDIR} && cvs -q -d ${NBSD_CVSROOT} co -N -D "$$date UTC" -d nbsdsrc "src/$$origpath" ; \
136	done
137
138nbsd_diff:
139	find ${NETBSDSRCDIR} -name minix-port.patch | xargs rm
140	cat nbsd_ports | grep -v '^#' | \
141	( cd ${NETBSDSRCDIR} && awk -F, '{ minixpath=$$2; origpath=$$3; if(NF < 3) { origpath=$$2; } system("sh tools/nbsd_diff.sh " \
142	   "nbsdsrc/src/"origpath" "minixpath" "minixpath"/minix-port.patch");}' )
143	find ${NETBSDSRCDIR} -name minix-port.patch | xargs wc -l | sort -n
144
145
146# clean up compile results
147clean:
148	$(MAKE) -C ../kernel $@
149	$(MAKE) -C ../servers $@
150	$(MAKE) -C ../drivers $@
151	rm -rf $(GEN_FILES)
152
153cleandepend::
154	$(MAKE) -C ../kernel $@
155	$(MAKE) -C ../servers  $@
156	$(MAKE) -C ../drivers  $@
157