xref: /freebsd/sys/conf/Makefile.powerpc (revision 1fcddf2eea65a3ccdbfa444611d693c79c30d6f3)
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
41fcddf2eSEivind Eklund#	$Id: Makefile.i386,v 1.114 1998/06/17 15:16:52 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
1948b29459SPeter Wemm# Which version of config(8) is required.
20afafca8bSBruce Evans%VERSREQ=	300004
2148b29459SPeter Wemm
229081eec1SJohn PolstraBINFORMAT?=	aout
23cea6c86cSDoug Rabson#BINFORMAT?=	aoutkld
249081eec1SJohn Polstra#BINFORMAT?=	elf
255b81b6b3SRodney W. Grimes
2638d8a113SPoul-Henning KampSTD8X16FONT?=	iso
2738d8a113SPoul-Henning Kamp
28f540b106SGarrett Wollman.if exists(./@/.)
29f540b106SGarrett WollmanS=	./@
30f540b106SGarrett Wollman.else
315b81b6b3SRodney W. GrimesS=	../..
32f540b106SGarrett Wollman.endif
33f540b106SGarrett WollmanI386=	${S}/i386
345b81b6b3SRodney W. Grimes
35150f9c68SDavid GreenmanCOPTFLAGS?=-O
36e2e0d560SBruce EvansINCLUDES= -nostdinc -I- -I. -I$S
37070e3ec1SNate Williams# This hack is to allow kernel compiles to succeed on machines w/out srcdist
38070e3ec1SNate Williams.if exists($S/../include)
39070e3ec1SNate WilliamsINCLUDES+= -I$S/../include
40070e3ec1SNate Williams.else
41070e3ec1SNate WilliamsINCLUDES+= -I/usr/include
42070e3ec1SNate Williams.endif
43d061973cSPeter WemmCOPTS=	${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h
4470176e63SGarrett WollmanCFLAGS=	${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
457f8cb368SDavid GreenmanLOAD_ADDRESS?=	F0100000
461013a13dSBruce EvansDEFINED_PROF=	${PROF}
47c08d58eaSBruce Evans.if defined(PROF)
481013a13dSBruce EvansCFLAGS+=	-malign-functions=4
49c08d58eaSBruce Evans.if ${PROFLEVEL} >= 2
50c08d58eaSBruce EvansIDENT+=	-DGPROF4 -DGUPROF
51c08d58eaSBruce EvansPROF+=	-mprofiler-epilogue
52c08d58eaSBruce Evans.endif
53c08d58eaSBruce Evans.endif
545b81b6b3SRodney W. Grimes
555b81b6b3SRodney W. GrimesNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
565b81b6b3SRodney W. GrimesNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
570611064bSBruce Evans# XXX LOCORE means "don't declare C stuff" not "for locore.s".
58fd54183bSPeter WemmNORMAL_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $<
595b81b6b3SRodney W. GrimesDRIVER_C= ${CC} -c ${CFLAGS} ${PROF} $<
605b81b6b3SRodney W. GrimesDRIVER_C_C= ${CC} -c ${CFLAGS} ${PROF} ${PARAM} $<
61fd54183bSPeter WemmDRIVER_S= ${CC} -c -x assembler-with-cpp -DLOCORE ${COPTS} $<
6240974c74SBruce EvansPROFILE_C= ${CC} -c ${CFLAGS} ${PARAM} $<
630611064bSBruce Evans
6461b00529SJohn Polstra# ${I386}/i386/setdef0.c and ${I386}/i386/setdef1.c are intentionally
6561b00529SJohn Polstra# omitted from SYSTEM_CFILES.  They depend on setdefs.h, a header which
6661b00529SJohn Polstra# is generated from all of ${OBJS}.  We don't want to have to compile
6761b00529SJohn Polstra# everything just to do a make depend.
6861b00529SJohn PolstraSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c
690611064bSBruce EvansSYSTEM_SFILES= ${I386}/i386/locore.s
7062394a63SBruce EvansSYSTEM_DEP= Makefile symbols.exclude symbols.sort ${SYSTEM_OBJS}
71b5d89ca8SBruce Evans.if ${CFLAGS:M-g} == ""
72b5d89ca8SBruce EvansSYMORDER_EXCLUDE=-x symbols.exclude
73b5d89ca8SBruce Evans.endif
743f6c4fc3SWarner LoshSYSTEM_LD_HEAD= @echo loading ${.TARGET}; rm -f ${.TARGET}
759081eec1SJohn Polstra.if ${BINFORMAT} == aout
7661b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
773f6c4fc3SWarner LoshSYSTEM_LD= @${LD} -Bstatic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
78b5d89ca8SBruce EvansSYSTEM_LD_TAIL= @echo rearranging symbols; \
793f6c4fc3SWarner Losh	symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \
803f6c4fc3SWarner Losh	size ${.TARGET} ; chmod 755 ${.TARGET}
819081eec1SJohn Polstra.endif
82cea6c86cSDoug Rabson.if ${BINFORMAT} == aoutkld
8361b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
843f6c4fc3SWarner LoshSYSTEM_LD= @${LD} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
85cea6c86cSDoug RabsonSYSTEM_LD_TAIL= @echo rearranging symbols; \
863f6c4fc3SWarner Losh	symorder -m ${SYMORDER_EXCLUDE} symbols.sort ${.TARGET}; \
873f6c4fc3SWarner Losh	size ${.TARGET} ; chmod 755 ${.TARGET}
88cea6c86cSDoug Rabson.endif
899081eec1SJohn Polstra.if ${BINFORMAT} == elf
9061b00529SJohn PolstraSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \
9161b00529SJohn Polstra	setdef1.o
9261b00529SJohn PolstraSYSTEM_LD= @${LD} -Bstatic -Ttext ${LOAD_ADDRESS} -e btext -defsym _DYNAMIC=0 \
933f6c4fc3SWarner Losh	-o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
943f6c4fc3SWarner LoshSYSTEM_LD_TAIL= @size ${.TARGET} ; chmod 755 ${.TARGET}
959081eec1SJohn Polstra.endif
965b81b6b3SRodney W. Grimes
9758e4304eSJustin T. Gibbs%BEFORE_DEPEND
9858e4304eSJustin T. Gibbs
995b81b6b3SRodney W. Grimes%OBJS
1005b81b6b3SRodney W. Grimes
1015b81b6b3SRodney W. Grimes%CFILES
1025b81b6b3SRodney W. Grimes
103c91d636eSDavid Greenman%SFILES
104c91d636eSDavid Greenman
1055b81b6b3SRodney W. Grimes%LOAD
1065b81b6b3SRodney W. Grimes
1070bf316f5SJustin T. Gibbs%CLEAN
1080bf316f5SJustin T. Gibbs
1095b81b6b3SRodney W. Grimesclean:
11061b00529SJohn Polstra	rm -f *.o *.s eddep errs genassym gensetdefs kernel linterrs \
11161b00529SJohn Polstra	      makelinks param.c setdefs.h symbols.exclude symbols.sort tags \
1121fcddf2eSEivind Eklund	      vers.c vnode_if.c vnode_if.h .vnode_if_created ${CLEAN}
1135b81b6b3SRodney W. Grimes
11402425318SGarrett Wollman#lint: /tmp param.c
11540974c74SBruce Evans#	@lint -hbxn -DGENERIC -Dvolatile= ${COPTS} ${PARAM} \
11602425318SGarrett Wollman#	  ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
11702425318SGarrett Wollman#	    grep -v 'struct/union .* never defined' | \
11802425318SGarrett Wollman#	    grep -v 'possible pointer alignment problem'
1195b81b6b3SRodney W. Grimes
120b5d89ca8SBruce Evanssymbols.exclude: Makefile
121b5d89ca8SBruce Evans	echo "gcc2_compiled." >symbols.exclude
122b5d89ca8SBruce Evans	echo "___gnu_compiled_c" >>symbols.exclude
123b5d89ca8SBruce Evans
1245b81b6b3SRodney W. Grimessymbols.sort: ${I386}/i386/symbols.raw
1255b81b6b3SRodney W. Grimes	grep -v '^#' ${I386}/i386/symbols.raw \
1265b81b6b3SRodney W. Grimes	    | sed 's/^	//' | sort -u > symbols.sort
1275b81b6b3SRodney W. Grimes
12886a8648eSBruce Evanslocore.o: ${I386}/i386/locore.s assym.s
1290611064bSBruce Evans	${NORMAL_S}
1305b81b6b3SRodney W. Grimes
13161b00529SJohn Polstrasetdef0.o: ${I386}/i386/setdef0.c setdefs.h
1329081eec1SJohn Polstra	${NORMAL_C}
1339081eec1SJohn Polstra
13461b00529SJohn Polstrasetdef1.o: ${I386}/i386/setdef1.c setdefs.h
1359081eec1SJohn Polstra	${NORMAL_C}
1369081eec1SJohn Polstra
13761b00529SJohn Polstrasetdefs.h: gensetdefs ${OBJS}
13861b00529SJohn Polstra	./gensetdefs ${OBJS} >setdefs.h
13961b00529SJohn Polstra
14061b00529SJohn Polstragensetdefs: gensetdefs.o
1413f6c4fc3SWarner Losh	${CC} ${CFLAGS} gensetdefs.o -o ${.TARGET}
14261b00529SJohn Polstra
14361b00529SJohn Polstragensetdefs.o: ${I386}/i386/gensetdefs.c
14461b00529SJohn Polstra	${CC} -c ${CFLAGS} ${I386}/i386/gensetdefs.c
14561b00529SJohn Polstra
1460611064bSBruce Evans# everything potentially depends on the Makefile since everything potentially
1470611064bSBruce Evans# depends on the options.  Some things are more dependent on the Makefile for
1480611064bSBruce Evans# historical reasons.
1490611064bSBruce Evansmachdep.o: Makefile
1502d717e4aSRodney W. Grimes
1515b81b6b3SRodney W. Grimes# the following is necessary because autoconf.o depends on #if GENERIC
1525b81b6b3SRodney W. Grimesautoconf.o: Makefile
1535b81b6b3SRodney W. Grimes
154b6794438SGarrett Wollman# XXX - may no longer be needed
155b6794438SGarrett Wollmanlocore.o: Makefile
1565b81b6b3SRodney W. Grimes
1575b81b6b3SRodney W. Grimes# depends on KDB (cons.o also depends on GENERIC)
1585b81b6b3SRodney W. Grimestrap.o cons.o: Makefile
1595b81b6b3SRodney W. Grimes
1600611064bSBruce Evans# this rule stops ./assym.s in .depend from causing problems
1610611064bSBruce Evans./assym.s: assym.s
1620611064bSBruce Evans
16385c856e7SNate Williamsassym.s: genassym
16440974c74SBruce Evans	./genassym >assym.s
1655b81b6b3SRodney W. Grimes
16602425318SGarrett Wollman# Some of the defines that genassym outputs may well depend on the
16702425318SGarrett Wollman# value of kernel options.
16898823b23SPeter Wemmgenassym.o: ${I386}/i386/genassym.c Makefile opt_global.h opt_vm86.h
169d0c8f505SBruce Evans	${CC} -c ${CFLAGS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
17040974c74SBruce Evans
17140974c74SBruce Evansgenassym: genassym.o
1723f6c4fc3SWarner Losh	${CC} ${CFLAGS} ${PARAM} genassym.o -o ${.TARGET}
1735b81b6b3SRodney W. Grimes
174d061973cSPeter Wemm${OBJS}: opt_global.h
175d061973cSPeter Wemm
1760611064bSBruce Evans# XXX this assumes that the options for NORMAL_C* and DRIVER_C* are identical.
17758e4304eSJustin T. Gibbsdepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND}
1786386a7e0SPeter Wemm	rm -f .newdep
1796386a7e0SPeter Wemm	mkdep -a -f .newdep ${COPTS} ${CFILES} ${SYSTEM_CFILES}
1806386a7e0SPeter Wemm	mkdep -a -f .newdep ${COPTS} ${PARAM} -UKERNEL ${I386}/i386/genassym.c
1819081eec1SJohn Polstra	MKDEP_CPP="${CC} -E -x assembler-with-cpp" ; export MKDEP_CPP ; \
1826386a7e0SPeter Wemm	mkdep -a -f .newdep -DLOCORE ${COPTS} ${SFILES} ${SYSTEM_SFILES}
1836386a7e0SPeter Wemm	rm -f .depend
1849fb93307SWolfram Schneider	mv -f .newdep .depend
1855b81b6b3SRodney W. Grimes
186c6b60f62SEivind Eklundcleandepend:
187c6b60f62SEivind Eklund	rm -f .depend
188c6b60f62SEivind Eklund
1895b81b6b3SRodney W. Grimeslinks:
1901d86aba6SGarrett Wollman	egrep '#if' ${CFILES:Nswapkernel.c} | sed -f $S/conf/defines | \
1915b81b6b3SRodney W. Grimes	  sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
1921d86aba6SGarrett Wollman	echo ${CFILES:Nswapkernel.c} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
1935b81b6b3SRodney W. Grimes	  sort -u | comm -23 - dontlink | \
1945b81b6b3SRodney W. Grimes	  sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
1955b81b6b3SRodney W. Grimes	sh makelinks && rm -f dontlink
1965b81b6b3SRodney W. Grimes
1975b81b6b3SRodney W. Grimestags:
1985b81b6b3SRodney W. Grimes	@echo "see $S/kern/Makefile for tags"
1995b81b6b3SRodney W. Grimes
2001c393ef6SJoerg Wunschinstall:
2011c393ef6SJoerg Wunsch	@if [ ! -f kernel ] ; then \
2021c393ef6SJoerg Wunsch		echo "You must first build your kernel before trying to install." ; \
2031c393ef6SJoerg Wunsch		exit 1 ; \
2041c393ef6SJoerg Wunsch	fi
205c6b60f62SEivind Eklund.if exists(${DESTDIR}/kernel)
206c6b60f62SEivind Eklund	chflags noschg ${DESTDIR}/kernel
207c6b60f62SEivind Eklund	mv ${DESTDIR}/kernel ${DESTDIR}/kernel.old
208c6b60f62SEivind Eklund.endif
2098cd077a7SBruce Evans	PATH=$${PATH}:/sbin:/usr/sbin; \
210c6b60f62SEivind Eklund	if [ `sysctl -n kern.bootfile` = ${DESTDIR}/kernel ] ; then \
211c6b60f62SEivind Eklund		sysctl -w kern.bootfile=${DESTDIR}/kernel.old ; \
21203486e0aSGuido van Rooij		if [ -f /var/db/kvm_kernel.db ] ; then \
2130f7183adSPeter Wemm			mv -f /var/db/kvm_kernel.db /var/db/kvm_kernel.old.db ; \
21403486e0aSGuido van Rooij		fi \
2153b3f55c7SPoul-Henning Kamp	fi
2168b78465cSDima Ruban	install -c -m 555 -o root -g wheel -fschg kernel ${DESTDIR}/
2176bf5b247SGarrett Wollman
218e911eafcSPoul-Henning Kampioconf.o: ioconf.c $S/sys/param.h $S/sys/buf.h \
2195b81b6b3SRodney W. Grimes    ${I386}/isa/isa_device.h ${I386}/isa/isa.h ${I386}/isa/icu.h
2205b81b6b3SRodney W. Grimes	${CC} -c ${CFLAGS} ioconf.c
2215b81b6b3SRodney W. Grimes
2222d717e4aSRodney W. Grimesparam.c: $S/conf/param.c
2235b81b6b3SRodney W. Grimes	-rm -f param.c
2245b81b6b3SRodney W. Grimes	cp $S/conf/param.c .
2255b81b6b3SRodney W. Grimes
2265b81b6b3SRodney W. Grimesparam.o: param.c Makefile
2275b81b6b3SRodney W. Grimes	${CC} -c ${CFLAGS} ${PARAM} param.c
2285b81b6b3SRodney W. Grimes
2293933c622SEivind Eklundvers.o: $S/sys/param.h ${SYSTEM_DEP} ${SYSTEM_SWAP_DEP}
2305b81b6b3SRodney W. Grimes	sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
2315b81b6b3SRodney W. Grimes	${CC} ${CFLAGS} -c vers.c
2325b81b6b3SRodney W. Grimes
2331fcddf2eSEivind Eklundvnode_if.c vnode_if.h: .vnode_if_created
2341fcddf2eSEivind Eklund	touch ${.TARGET}
2351fcddf2eSEivind Eklund
2361fcddf2eSEivind Eklund.vnode_if_created: $S/kern/vnode_if.sh $S/kern/vnode_if.src
23726f9a767SRodney W. Grimes	sh $S/kern/vnode_if.sh $S/kern/vnode_if.src
2381fcddf2eSEivind Eklund	touch ${.TARGET}
23926f9a767SRodney W. Grimes
2409e72552fSBruce Evans.include <bsd.kern.mk>
2419e72552fSBruce Evans
2425b81b6b3SRodney W. Grimes%RULES
2435b81b6b3SRodney W. Grimes
2445b81b6b3SRodney W. Grimes# DO NOT DELETE THIS LINE -- make depend uses it
245