Makefile.i386 revision 25202
1169695Skan# Makefile.i386 -- with config changes.
2169695Skan# Copyright 1990 W. Jolitz
3169695Skan#	from: @(#)Makefile.i386	7.1 5/10/91
4169695Skan#	$Id: Makefile.i386,v 1.94 1997/04/22 06:55:21 jdp Exp $
5169695Skan#
6169695Skan# Makefile for FreeBSD
7169695Skan#
8169695Skan# This makefile is constructed from a machine description:
9169695Skan#	config machineid
10169695Skan# Most changes should be made in the machine description
11169695Skan#	/sys/i386/conf/``machineid''
12169695Skan# after which you should do
13169695Skan#	 config machineid
14169695Skan# Generic makefile changes should be made in
15169695Skan#	/sys/i386/conf/Makefile.i386
16169695Skan# after which config should be rerun for all machines.
17169695Skan#
18169695Skan
19169695SkanBINFORMAT?=	aout
20169695Skan#BINFORMAT?=	elf
21169695Skan
22169695Skan.if exists(./@/.)
23169695SkanS=	./@
24169695Skan.else
25169695SkanS=	../..
26169695Skan.endif
27169695SkanI386=	${S}/i386
28169695Skan
29169695SkanCOPTFLAGS?=-O
30169695SkanINCLUDES= -nostdinc -I- -I. -I$S
31169695Skan# This hack is to allow kernel compiles to succeed on machines w/out srcdist
32169695Skan.if exists($S/../include)
33169695SkanINCLUDES+= -I$S/../include
34169695Skan.else
35169695SkanINCLUDES+= -I/usr/include
36169695Skan.endif
37169695SkanCOPTS=	${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h
38169695SkanCFLAGS=	${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
39169695SkanLOAD_ADDRESS?=	F0100000
40169695Skan.if defined(PROF)
41169695SkanPROF+=	-malign-functions=4
42169695Skan.if ${PROFLEVEL} >= 2
43169695SkanIDENT+=	-DGPROF4 -DGUPROF
44169695SkanPROF+=	-mprofiler-epilogue
45169695Skan.endif
46169695Skan.endif
47169695Skan
48169695SkanNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
49169695SkanNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
50169695Skan# XXX LOCORE means "don't declare C stuff" not "for locore.s".
51169695SkanNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $<
52169695SkanDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
53169695SkanDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
54169695SkanDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $<
55169695SkanPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $<
56169695Skan
57169695SkanSYSTEM_CFILES= ${I386}/i386/setdef0.c ioconf.c param.c vnode_if.c config.c \
58169695Skan	${I386}/i386/setdef1.c
59169695SkanSYSTEM_SFILES= ${I386}/i386/locore.s
60169695SkanSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \
61169695Skan	setdef1.o
62169695SkanSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS}
63169695Skan.if ${CFLAGS:M-g} == ""
64169695SkanSYMORDER_EXCLUDE=-x symbols.exclude
65169695Skan.endif
66169695SkanSYSTEM_LD_HEAD= @echo loading $@; rm -f $@
67169695Skan.if ${BINFORMAT} == aout
68169695SkanSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o
69169695SkanSYSTEM_LD_TAIL= @echo rearranging symbols; \
70169695Skan	symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \
71169695Skan	size $@; chmod 755 $@
72169695Skan.endif
73169695Skan.if ${BINFORMAT} == elf
74169695SkanSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -o $@ -X ${SYSTEM_OBJS} vers.o
75169695SkanSYSTEM_LD_TAIL= @size $@; chmod 755 $@
76169695Skan.endif
77169695Skan
78169695Skan%BEFORE_DEPEND
79169695Skan
80169695Skan%OBJS
81169695Skan
82169695Skan%CFILES
83169695Skan
84169695Skan%SFILES
85169695Skan
86169695Skan%LOAD
87169695Skan
88169695Skan%CLEAN
89169695Skan
90169695Skanclean:
91169695Skan	rm -f *.o *.s eddep errs genassym kernel linterrs \
92169695Skan	      makelinks param.c symbols.exclude symbols.sort tags \
93169695Skan	      vers.c vnode_if.c vnode_if.h ${CLEAN}
94169695Skan
95169695Skan#lint: /tmp param.c
96169695Skan#	@lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \
97169695Skan#	  ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
98169695Skan#	    grep -v 'struct/union .* never defined' | \
99169695Skan#	    grep -v 'possible pointer alignment problem'
100169695Skan
101169695Skansymbols.exclude: Makefile
102169695Skan	echo "gcc2_compiled." >symbols.exclude
103169695Skan	echo "___gnu_compiled_c" >>symbols.exclude
104169695Skan
105169695Skansymbols.sort: ${I386}/i386/symbols.raw
106169695Skan	grep -v '^#' ${I386}/i386/symbols.raw \
107169695Skan	    | sed 's/^	//' | sort -u > symbols.sort
108169695Skan
109169695Skanlocore.o: ${I386}/i386/locore.s assym.s
110169695Skan	${NORMAL_S}
111169695Skan
112169695Skansetdef0.o: ${I386}/i386/setdef0.c
113169695Skan	${NORMAL_C}
114169695Skan
115169695Skansetdef1.o: ${I386}/i386/setdef1.c
116169695Skan	${NORMAL_C}
117169695Skan
118169695Skan# everything potentially depends on the Makefile since everything potentially
119169695Skan# depends on the options.  Some things are more dependent on the Makefile for
120169695Skan# historical reasons.
121169695Skanmachdep.o: Makefile
122169695Skan
123169695Skan# the following is necessary because autoconf.o depends on #if GENERIC
124169695Skanautoconf.o: Makefile
125169695Skan
126169695Skan# XXX - may no longer be needed
127169695Skanlocore.o: Makefile
128169695Skan
129169695Skan# depends on KDB (cons.o also depends on GENERIC)
130169695Skantrap.o cons.o: Makefile
131169695Skan
132169695Skan# this rule stops ./assym.s in .depend from causing problems
133169695Skan./assym.s: assym.s
134169695Skan
135169695Skanassym.s: genassym
136169695Skan	./genassym >assym.s
137169695Skan
138169695Skan# Some of the defines that genassym outputs may well depend on the
139169695Skan# value of kernel options.
140169695Skangenassym.o: ${I386}/i386/genassym.c Makefile opt_global.h
141169695Skan	${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
142169695Skan
143169695Skangenassym: genassym.o
144169695Skan	${CC} ${CFLAGS} ${PARAM} genassym.o -o $@
145169695Skan
146169695Skan${OBJS}: opt_global.h
147169695Skan
148169695Skan# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical.
149169695Skandepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND}
150169695Skan	rm -f .newdep
151169695Skan	mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES}
152169695Skan	mkdep -a -f .newdep ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
153169695Skan	MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \
154169695Skan	mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES}
155169695Skan	rm -f .depend
156169695Skan	mv -f .newdep .depend
157169695Skan
158169695Skanlinks:
159169695Skan	egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \
160169695Skan	  sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
161169695Skan	echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
162169695Skan	  sort -u | comm -23 - dontlink | \
163169695Skan	  sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
164169695Skan	sh makelinks && rm -f dontlink
165169695Skan
166169695Skantags:
167169695Skan	@echo "see $S/kern/Makefile for tags"
168169695Skan
169169695Skaninstall:
170169695Skan	@if [ ! -f kernel ] ; then \
171169695Skan		echo "You must first build your kernel before trying to install." ; \
172169695Skan		exit 1 ; \
173169695Skan	fi
174169695Skan	chflags noschg /kernel
175169695Skan	mv /kernel /kernel.old
176169695Skan	if [ `/usr/sbin/sysctl -n kern.bootfile` = /kernel ] ; then \
177169695Skan		/usr/sbin/sysctl -w kern.bootfile=/kernel.old ; \
178169695Skan		mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \
179169695Skan	fi
180169695Skan	install -c -m 555 -o root -g wheel -fschg kernel /
181169695Skan
182169695Skanioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \
183169695Skan    ${I386}/isa/isa_device.h ${I386}/isa/isa.h ${I386}/isa/icu.h
184169695Skan	${CC} -c ${CFLAGS} ioconf.c
185169695Skan
186169695Skanparam.c: $S/conf/param.c
187169695Skan	-rm -f param.c
188169695Skan	cp $S/conf/param.c .
189169695Skan
190169695Skanparam.o: param.c Makefile
191169695Skan	${CC} -c ${CFLAGS} ${PARAM} param.c
192169695Skan
193169695Skanvers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
194169695Skan	sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
195169695Skan	${CC} ${CFLAGS} -c vers.c
196169695Skan
197169695Skanvnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src
198169695Skan	sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
199169695Skanvnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
200169695Skan	sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
201169695Skan
202169695Skan.include <bsd.kern.mk>
203169695Skan
204169695Skan%RULES
205169695Skan
206169695Skan# DO NOT DELETE THIS LINE -- make depend uses it
207169695Skan