xref: /freebsd/sys/conf/Makefile.powerpc (revision 38d8a113a9f15a10e66027a9baef5e02f6897364)
143b74d61SJordan K. Hubbard# Makefile.i386 -- with config changes.
25b81b6b3SRodney W. Grimes# Copyright 1990 W. Jolitz
32d717e4aSRodney W. Grimes#	from: @(#)Makefile.i386	7.1 5/10/91
438d8a113SPoul-Henning Kamp#	$Id: Makefile.i386,v 1.100 1997/06/29 16:39:09 bde Exp $
52d717e4aSRodney W. Grimes#
62d717e4aSRodney W. Grimes# Makefile for FreeBSD
75b81b6b3SRodney W. Grimes#
85b81b6b3SRodney W. Grimes# This makefile is constructed from a machine description:
95b81b6b3SRodney W. Grimes#	config machineid
105b81b6b3SRodney W. Grimes# Most changes should be made in the machine description
115b81b6b3SRodney W. Grimes#	/sys/i386/conf/``machineid''
125b81b6b3SRodney W. Grimes# after which you should do
135b81b6b3SRodney W. Grimes#	 config machineid
145b81b6b3SRodney W. Grimes# Generic makefile changes should be made in
155b81b6b3SRodney W. Grimes#	/sys/i386/conf/Makefile.i386
165b81b6b3SRodney W. Grimes# after which config should be rerun for all machines.
175b81b6b3SRodney W. Grimes#
189081eec1SJohn Polstra
199081eec1SJohn PolstraBINFORMAT?=	aout
20cea6c86cSDoug Rabson#BINFORMAT?=	aoutkld
219081eec1SJohn Polstra#BINFORMAT?=	elf
225b81b6b3SRodney W. Grimes
2338d8a113SPoul-Henning KampSTD8X16FONT?=	iso
2438d8a113SPoul-Henning Kamp
25f540b106SGarrett Wollman.if exists(./@/.)
26f540b106SGarrett WollmanS=	./@
27f540b106SGarrett Wollman.else
285b81b6b3SRodney W. GrimesS=	../..
29f540b106SGarrett Wollman.endif
30f540b106SGarrett WollmanI386=	${S}/i386
315b81b6b3SRodney W. Grimes
32150f9c68SDavid GreenmanCOPTFLAGS?=-O
33e2e0d560SBruce EvansINCLUDES= -nostdinc -I- -I. -I$S
34070e3ec1SNate Williams# This hack is to allow kernel compiles to succeed on machines w/out srcdist
35070e3ec1SNate Williams.if exists($S/../include)
36070e3ec1SNate WilliamsINCLUDES+= -I$S/../include
37070e3ec1SNate Williams.else
38070e3ec1SNate WilliamsINCLUDES+= -I/usr/include
39070e3ec1SNate Williams.endif
40d061973cSPeter WemmCOPTS=	${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h
4170176e63SGarrett WollmanCFLAGS=	${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
427f8cb368SDavid GreenmanLOAD_ADDRESS?=	F0100000
431013a13dSBruce EvansDEFINED_PROF=	${PROF}
44c08d58eaSBruce Evans.if defined(PROF)
451013a13dSBruce EvansCFLAGS+=	-malign-functions=4
46c08d58eaSBruce Evans.if ${PROFLEVEL} >= 2
47c08d58eaSBruce EvansIDENT+=	-DGPROF4 -DGUPROF
48c08d58eaSBruce EvansPROF+=	-mprofiler-epilogue
49c08d58eaSBruce Evans.endif
50c08d58eaSBruce Evans.endif
515b81b6b3SRodney W. Grimes
525b81b6b3SRodney W. GrimesNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
535b81b6b3SRodney W. GrimesNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
540611064bSBruce Evans# XXX LOCORE means "don't declare C stuff" not "for locore.s".
55fd54183bSPeter WemmNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $<
565b81b6b3SRodney W. GrimesDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
575b81b6b3SRodney W. GrimesDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
58fd54183bSPeter WemmDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $<
5940974c74SBruce EvansPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $<
600611064bSBruce Evans
6161b00529SJohn Polstra# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally
6261b00529SJohn Polstra# omitted from SYSTEM_CFILES.  They depend on setdefs.h, a header which
6361b00529SJohn Polstra# is generated from all of ${OBJS}.  We don't want to have to compile
6461b00529SJohn Polstra# everything just to do a make depend.
6561b00529SJohn PolstraSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c
660611064bSBruce EvansSYSTEM_SFILES= ${I386}/i386/locore.s
6762394a63SBruce EvansSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS}
68b5d89ca8SBruce Evans.if ${CFLAGS:M-g} == ""
69b5d89ca8SBruce EvansSYMORDER_EXCLUDE=-x symbols.exclude
70b5d89ca8SBruce Evans.endif
719081eec1SJohn PolstraSYSTEM_LD_HEAD= @echo loading $@; rm -f $@
729081eec1SJohn Polstra.if ${BINFORMAT} == aout
7361b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
749081eec1SJohn PolstraSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o
75b5d89ca8SBruce EvansSYSTEM_LD_TAIL= @echo rearranging symbols; \
7650bd4cabSPoul-Henning Kamp	symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \
77b5d89ca8SBruce Evans	size $@; chmod 755 $@
789081eec1SJohn Polstra.endif
79cea6c86cSDoug Rabson.if ${BINFORMAT} == aoutkld
8061b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
81cea6c86cSDoug RabsonSYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o $@ -X ${SYSTEM_OBJS} vers.o
82cea6c86cSDoug RabsonSYSTEM_LD_TAIL= @echo rearranging symbols; \
83cea6c86cSDoug Rabson	symorder -m ${SYMORDER_EXCLUDE} symbols.sort $@; \
84cea6c86cSDoug Rabson	size $@; chmod 755 $@
85cea6c86cSDoug Rabson.endif
869081eec1SJohn Polstra.if ${BINFORMAT} == elf
8761b00529SJohn PolstraSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \
8861b00529SJohn Polstra	setdef1.o
8961b00529SJohn PolstraSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \
9061b00529SJohn Polstra	-o $@ -X ${SYSTEM_OBJS} vers.o
919081eec1SJohn PolstraSYSTEM_LD_TAIL= @size $@; chmod 755 $@
929081eec1SJohn Polstra.endif
935b81b6b3SRodney W. Grimes
9458e4304eSJustin T. Gibbs%BEFORE_DEPEND
9558e4304eSJustin T. Gibbs
965b81b6b3SRodney W. Grimes%OBJS
975b81b6b3SRodney W. Grimes
985b81b6b3SRodney W. Grimes%CFILES
995b81b6b3SRodney W. Grimes
100c91d636eSDavid Greenman%SFILES
101c91d636eSDavid Greenman
1025b81b6b3SRodney W. Grimes%LOAD
1035b81b6b3SRodney W. Grimes
1040bf316f5SJustin T. Gibbs%CLEAN
1050bf316f5SJustin T. Gibbs
1065b81b6b3SRodney W. Grimesclean:
10761b00529SJohn Polstra	rm -f *.o *.s eddep errs genassym gensetdefs kernel linterrs \
10861b00529SJohn Polstra	      makelinks param.c setdefs.h symbols.exclude symbols.sort tags \
1095542b158SBruce Evans	      vers.c vnode_if.c vnode_if.h ${CLEAN}
1105b81b6b3SRodney W. Grimes
11102425318SGarrett Wollman#lint: /tmp param.c
11240974c74SBruce Evans#	@lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \
11302425318SGarrett Wollman#	  ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
11402425318SGarrett Wollman#	    grep -v 'struct/union .* never defined' | \
11502425318SGarrett Wollman#	    grep -v 'possible pointer alignment problem'
1165b81b6b3SRodney W. Grimes
117b5d89ca8SBruce Evanssymbols.exclude: Makefile
118b5d89ca8SBruce Evans	echo "gcc2_compiled." >symbols.exclude
119b5d89ca8SBruce Evans	echo "___gnu_compiled_c" >>symbols.exclude
120b5d89ca8SBruce Evans
1215b81b6b3SRodney W. Grimessymbols.sort: ${I386}/i386/symbols.raw
1225b81b6b3SRodney W. Grimes	grep -v '^#' ${I386}/i386/symbols.raw \
1235b81b6b3SRodney W. Grimes	    | sed 's/^	//' | sort -u > symbols.sort
1245b81b6b3SRodney W. Grimes
12586a8648eSBruce Evanslocore.o: ${I386}/i386/locore.s assym.s
1260611064bSBruce Evans	${NORMAL_S}
1275b81b6b3SRodney W. Grimes
12861b00529SJohn Polstrasetdef0.o: ${I386}/i386/setdef0.c setdefs.h
1299081eec1SJohn Polstra	${NORMAL_C}
1309081eec1SJohn Polstra
13161b00529SJohn Polstrasetdef1.o: ${I386}/i386/setdef1.c setdefs.h
1329081eec1SJohn Polstra	${NORMAL_C}
1339081eec1SJohn Polstra
13461b00529SJohn Polstrasetdefs.h: gensetdefs ${OBJS}
13561b00529SJohn Polstra	./gensetdefs ${OBJS} >setdefs.h
13661b00529SJohn Polstra
13761b00529SJohn Polstragensetdefs: gensetdefs.o
13861b00529SJohn Polstra	${CC} ${CFLAGS} gensetdefs.o -o $@
13961b00529SJohn Polstra
14061b00529SJohn Polstragensetdefs.o: ${I386}/i386/gensetdefs.c
14161b00529SJohn Polstra	${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c
14261b00529SJohn Polstra
1430611064bSBruce Evans# everything potentially depends on the Makefile since everything potentially
1440611064bSBruce Evans# depends on the options.  Some things are more dependent on the Makefile for
1450611064bSBruce Evans# historical reasons.
1460611064bSBruce Evansmachdep.o: Makefile
1472d717e4aSRodney W. Grimes
1485b81b6b3SRodney W. Grimes# the following is necessary because autoconf.o depends on #if GENERIC
1495b81b6b3SRodney W. Grimesautoconf.o: Makefile
1505b81b6b3SRodney W. Grimes
151b6794438SGarrett Wollman# XXX - may no longer be needed
152b6794438SGarrett Wollmanlocore.o: Makefile
1535b81b6b3SRodney W. Grimes
1545b81b6b3SRodney W. Grimes# depends on KDB (cons.o also depends on GENERIC)
1555b81b6b3SRodney W. Grimestrap.o cons.o: Makefile
1565b81b6b3SRodney W. Grimes
1570611064bSBruce Evans# this rule stops ./assym.s in .depend from causing problems
1580611064bSBruce Evans./assym.s: assym.s
1590611064bSBruce Evans
16085c856e7SNate Williamsassym.s: genassym
16140974c74SBruce Evans	./genassym >assym.s
1625b81b6b3SRodney W. Grimes
16302425318SGarrett Wollman# Some of the defines that genassym outputs may well depend on the
16402425318SGarrett Wollman# value of kernel options.
165d061973cSPeter Wemmgenassym.o: ${I386}/i386/genassym.c Makefile opt_global.h
166d0c8f505SBruce Evans	${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
16740974c74SBruce Evans
16840974c74SBruce Evansgenassym: genassym.o
169f5227a83SBruce Evans	${CC} ${CFLAGS} ${PARAM} genassym.o -o $@
1705b81b6b3SRodney W. Grimes
171d061973cSPeter Wemm${OBJS}: opt_global.h
172d061973cSPeter Wemm
1730611064bSBruce Evans# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical.
17458e4304eSJustin T. Gibbsdepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND}
1756386a7e0SPeter Wemm	rm -f .newdep
1766386a7e0SPeter Wemm	mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES}
1776386a7e0SPeter Wemm	mkdep -a -f .newdep ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
1789081eec1SJohn Polstra	MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \
1796386a7e0SPeter Wemm	mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES}
1806386a7e0SPeter Wemm	rm -f .depend
1819fb93307SWolfram Schneider	mv -f .newdep .depend
1825b81b6b3SRodney W. Grimes
1835b81b6b3SRodney W. Grimeslinks:
1841d86aba6SGarrett Wollman	egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \
1855b81b6b3SRodney W. Grimes	  sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
1861d86aba6SGarrett Wollman	echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
1875b81b6b3SRodney W. Grimes	  sort -u | comm -23 - dontlink | \
1885b81b6b3SRodney W. Grimes	  sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
1895b81b6b3SRodney W. Grimes	sh makelinks && rm -f dontlink
1905b81b6b3SRodney W. Grimes
1915b81b6b3SRodney W. Grimestags:
1925b81b6b3SRodney W. Grimes	@echo "see $S/kern/Makefile for tags"
1935b81b6b3SRodney W. Grimes
1941c393ef6SJoerg Wunschinstall:
1951c393ef6SJoerg Wunsch	@if [ ! -f kernel ] ; then \
1961c393ef6SJoerg Wunsch		echo "You must first build your kernel before trying to install." ; \
1971c393ef6SJoerg Wunsch		exit 1 ; \
1981c393ef6SJoerg Wunsch	fi
19912cada71SJordan K. Hubbard	chflags noschg /kernel
2006bf5b247SGarrett Wollman	mv /kernel /kernel.old
201d17e5f0bSAndrey A. Chernov	if [ `/usr/sbin/sysctl -n kern.bootfile` = /kernel ] ; then \
202d17e5f0bSAndrey A. Chernov		/usr/sbin/sysctl -w kern.bootfile=/kernel.old ; \
2030f7183adSPeter Wemm		mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \
2043b3f55c7SPoul-Henning Kamp	fi
2056bf5b247SGarrett Wollman	install -c -m 555 -o root -g wheel -fschg kernel /
2066bf5b247SGarrett Wollman
207e911eafcSPoul-Henning Kampioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \
2085b81b6b3SRodney W. Grimes    ${I386}/isa/isa_device.h ${I386}/isa/isa.h ${I386}/isa/icu.h
2095b81b6b3SRodney W. Grimes	${CC} -c ${CFLAGS} ioconf.c
2105b81b6b3SRodney W. Grimes
2112d717e4aSRodney W. Grimesparam.c: $S/conf/param.c
2125b81b6b3SRodney W. Grimes	-rm -f param.c
2135b81b6b3SRodney W. Grimes	cp $S/conf/param.c .
2145b81b6b3SRodney W. Grimes
2155b81b6b3SRodney W. Grimesparam.o: param.c Makefile
2165b81b6b3SRodney W. Grimes	${CC} -c ${CFLAGS} ${PARAM} param.c
2175b81b6b3SRodney W. Grimes
2182d717e4aSRodney W. Grimesvers.o: ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
2195b81b6b3SRodney W. Grimes	sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
2205b81b6b3SRodney W. Grimes	${CC} ${CFLAGS} -c vers.c
2215b81b6b3SRodney W. Grimes
22226f9a767SRodney W. Grimesvnode_if.c: $S/kern/vnode_if.sh $S/kern/vnode_if.src
22326f9a767SRodney W. Grimes	sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
22426f9a767SRodney W. Grimesvnode_if.h: $S/kern/vnode_if.sh $S/kern/vnode_if.src
22526f9a767SRodney W. Grimes	sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
22626f9a767SRodney W. Grimes
2279e72552fSBruce Evans.include <bsd.kern.mk>
2289e72552fSBruce Evans
2295b81b6b3SRodney W. Grimes%RULES
2305b81b6b3SRodney W. Grimes
2315b81b6b3SRodney W. Grimes# DO NOT DELETE THIS LINE -- make depend uses it
232