xref: /386bsd/usr/src/kernel/config/kernel.mk (revision a2142627)
1#
2# This make file incorporates the generic 386BSD kernel program makefile,
3# kernel.mk. Copyright (C) 1990-1994 W. Jolitz, All Rights Reserved.
4# $Id:$
5#
6
7.SUFFIXES: .symbols .9 .8 .7 .6 .5 .4 .3 .2 .1 .0
8
9TOUCH?=	touch -f -c
10LD?=	/usr/bin/ld
11CC?=	cc
12CPP?=	cpp
13
14# XXX overkill, revise include scheme
15INCLUDES= -I$S/include
16
17COPTS+=	${INCLUDES} ${IDENT} -DKERNEL -Di386 -DNPX
18DEPEND= depend_mk
19
20ASFLAGS= ${DEBUG}
21CFLAGS=	-O ${COPTS}
22
23.if defined(KERNBASE)
24CFLAGS+= -DKERNBASE=0x${KERNBASE}
25BASE= -DKERNBASE=0x${KERNBASE}
26.else
27KERNBASE=FE000000
28.endif
29
30.if !exists(machine)
31FOO!=ln -s $S/include/$(MACHINE) machine
32.endif
33
34.MAIN:	all
35
36ALLMAN=	${MAN1} ${MAN2} ${MAN3} ${MAN4} ${MAN5} ${MAN6} ${MAN7} ${MAN8} ${MAN9}
37
38KOBJS = ${FIRSTOBJ} ${OBJS}
39
40_KERNS=		${KERNEL}
41.if defined(DDB)
42_KERNS+=	${KERNEL}.ddb
43.endif
44.if defined(PROFILE)
45_KERNS+=	${KERNEL}.prof
46.endif
47.if defined(KGDB)
48_KERNS+=	${KERNEL}.kgdb
49.endif
50
51all: ${_KERNS}	${ALLMAN}
52
53assym.s: $S/include/sys/param.h $S/include/buf.h $S/include/vmmeter.h \
54	$S/include/proc.h $S/include/msgbuf.h machine/vmparam.h \
55	$S/config/genassym.c
56	${CC} ${INCLUDES} -DKERNEL ${IDENT} ${PARAM} ${BASE} \
57		 $S/config/genassym.c -o genassym
58	./genassym >assym.s
59
60.include "$S/config/kernel.kern.mk"
61.include "$S/config/kernel.dev.mk"
62.include "$S/config/kernel.fs.mk"
63.include "$S/config/kernel.domain.mk"
64
65SRCS= ${KERN_SRCS} ${MACH_SRCS} ${DEV_SRCS} ${FS_SRCS} ${DOMAIN_SRCS}
66
67${KERNEL}: Makefile symbols.sort ${FIRSTOBJ} ${OBJS}
68	@echo loading $@
69	@rm -f $@
70	@$S/config/newvers.sh
71	@${CC} -c ${CFLAGS} ${PROF} ${DEBUG} vers.c
72.if defined(DEBUGSYM)
73	@${LD} -z -T ${KERNBASE} -o $@ -X ${FIRSTOBJ} ${OBJS} vers.o
74.else
75	@${LD} -z -T ${KERNBASE} -o $@ -x ${FIRSTOBJ} ${OBJS} vers.o
76.endif
77	@echo rearranging symbols
78	@symorder ${SYMORDER} symbols.sort $@
79.if defined(DBSYM)
80	@${DBSYM} $@
81.endif
82	@size $@
83	@chmod 755 $@
84
85.9.0 .8.0 .7.0 .6.0 .5.0 .4.0 .3.0 .2.0 .1.0:
86	nroff -mandoc ${.IMPSRC} > ${.TARGET}
87
88clean:
89	rm -f eddep 386bsd* tags ${OBJS} errs linterrs makelinks
90
91depend: ${DEPEND}
92	cat ${DEPEND} >> .depend
93
94depend_mk: assym.s
95	mkdep ${COPTS} ${.ALLSRC}
96	mkdep -a -p ${INCLUDES} ${IDENT} ${PARAM} $S/config/genassym.c
97	mv .depend depend_mk
98
99symbols.sort: ${SYMBOLS}
100	grep -hv '^#' ${.ALLSRC} | sed 's/^	//' | sort -u > symbols.sort
101
102.if !target(install)
103.if !target(beforeinstall)
104beforeinstall:
105.endif
106
107realinstall: beforeinstall
108
109install: afterinstall
110afterinstall: realinstall maninstall
111.endif
112
113.if !target(tags)
114tags: ${SRCS}
115	-cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:M*.c} | \
116	    sed "s;\${.CURDIR}/;;" > tags
117.endif
118
119.include <bsd.man.mk>
120