xref: /freebsd/sys/conf/Makefile.powerpc (revision 22ddeb4b77ea18ea5eb85efb915f93a1e33d9f0a)
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
4c3aac50fSPeter Wemm# $FreeBSD$
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.
2037558b01SPeter Wemm%VERSREQ=	400016
2148b29459SPeter Wemm
22a127a704SPeter Wemm# Can be overridden by makeoptions or /etc/make.conf
23a127a704SPeter WemmKERNEL?=	kernel
24c30fe42cSPeter WemmKERNFORMAT?=	elf
2538d8a113SPoul-Henning KampSTD8X16FONT?=	iso
2638d8a113SPoul-Henning Kamp
277621bfffSMarcel Moolenaar.if !defined(S)
28f540b106SGarrett Wollman.if exists(./@/.)
29f540b106SGarrett WollmanS=	./@
30f540b106SGarrett Wollman.else
315b81b6b3SRodney W. GrimesS=	../..
32f540b106SGarrett Wollman.endif
337621bfffSMarcel Moolenaar.endif
34f540b106SGarrett WollmanI386=	${S}/i386
355b81b6b3SRodney W. Grimes
369565e721SPeter WemmSIZE?=	size
379565e721SPeter Wemm
38150f9c68SDavid GreenmanCOPTFLAGS?=-O
39e2e0d560SBruce EvansINCLUDES= -nostdinc -I- -I. -I$S
40070e3ec1SNate Williams# This hack is to allow kernel compiles to succeed on machines w/out srcdist
41070e3ec1SNate Williams.if exists($S/../include)
42070e3ec1SNate WilliamsINCLUDES+= -I$S/../include
43070e3ec1SNate Williams.else
44070e3ec1SNate WilliamsINCLUDES+= -I/usr/include
45070e3ec1SNate Williams.endif
46db42d908SPeter WemmCOPTS=	${INCLUDES} ${IDENT} -DKERNEL -include opt_global.h
4782cd038dSYoshinobu Inoue# KAME mandatory flags
4882cd038dSYoshinobu InoueCOPTS+=	-D_KERNEL
4970176e63SGarrett WollmanCFLAGS=	${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
50c155091cSJohn Birrell
515b036e2bSBruce Evans# XXX LOCORE means "don't declare C stuff" not "for locore.s".
525b036e2bSBruce EvansASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS}
535b036e2bSBruce Evans
545b036e2bSBruce Evans# Use the default object format for genassym, etc.
55320138daSPeter WemmGEN_CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} -UKERNEL
56ac80870eSJordan K. Hubbard
57c155091cSJohn Birrell# Select the correct set of tools. Can't set OBJFORMAT here because it
585b036e2bSBruce Evans# doesn't get exported into the environment, and if it were exported
595b036e2bSBruce Evans# then it might break building of genassym, etc.
60c155091cSJohn Birrell.if ${KERNFORMAT} == "elf"
619565e721SPeter WemmFMT=		-elf
62c155091cSJohn Birrell.else
639565e721SPeter WemmFMT=		-aout
64c155091cSJohn Birrell.endif
659565e721SPeter WemmCFLAGS+=	${FMT}
66c155091cSJohn Birrell
678681b974SDavid GreenmanLOAD_ADDRESS?=	C0100000
681013a13dSBruce EvansDEFINED_PROF=	${PROF}
69c08d58eaSBruce Evans.if defined(PROF)
701013a13dSBruce EvansCFLAGS+=	-malign-functions=4
71c08d58eaSBruce Evans.if ${PROFLEVEL} >= 2
72c08d58eaSBruce EvansIDENT+=	-DGPROF4 -DGUPROF
73c08d58eaSBruce EvansPROF+=	-mprofiler-epilogue
74c08d58eaSBruce Evans.endif
75c08d58eaSBruce Evans.endif
765b81b6b3SRodney W. Grimes
77503e6666SBruce Evans# Put configuration-specific C flags last (except for ${PROF}) so that they
78503e6666SBruce Evans# can override the others.
79503e6666SBruce EvansCFLAGS+=	${CONF_CFLAGS}
80503e6666SBruce Evans
815b81b6b3SRodney W. GrimesNORMAL_C= ${CC} -c ${CFLAGS} ${PROF} $<
82784c3c34SBruce EvansNORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} $<
835b036e2bSBruce EvansNORMAL_S= ${CC} -c ${ASM_CFLAGS} $<
84784c3c34SBruce EvansPROFILE_C= ${CC} -c ${CFLAGS} $<
850611064bSBruce Evans
86f7dd86c1SPeter WemmGEN_CFILES= ${I386}/i386/genassym.c
87f7dd86c1SPeter Wemm# setdef0.c and setdef1.c are intentionally
885b036e2bSBruce Evans# omitted from SYSTEM_CFILES.  They include setdefs.h, a header which
8961b00529SJohn Polstra# is generated from all of ${OBJS}.  We don't want to have to compile
9061b00529SJohn Polstra# everything just to do a make depend.
9161b00529SJohn PolstraSYSTEM_CFILES= ioconf.c param.c vnode_if.c config.c
920611064bSBruce EvansSYSTEM_SFILES= ${I386}/i386/locore.s
939565e721SPeter WemmSYSTEM_DEP= Makefile ${SYSTEM_OBJS}
944e8691dcSPeter Wemm
953187d896SPeter Wemm.if ${KERNFORMAT} == aout || ${KERNFORMAT} == aoutkld
9661b00529SJohn PolstraSYSTEM_OBJS= locore.o vnode_if.o ${OBJS} ioconf.o param.o config.o
979565e721SPeter WemmSYSTEM_LD= @${LD} ${FMT} -Bforcedynamic -Z -T ${LOAD_ADDRESS} -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
989565e721SPeter WemmSYSTEM_LD_TAIL= @${SIZE} ${FMT} ${.TARGET} ; chmod 755 ${.TARGET}
99cea6c86cSDoug Rabson.endif
1004e8691dcSPeter Wemm
101c155091cSJohn Birrell.if ${KERNFORMAT} == elf
1023d89c2cdSMike SmithSYSTEM_OBJS= locore.o setdef0.o vnode_if.o ${OBJS} ioconf.o param.o config.o \
103f92bdbd0SJohn Polstra	setdef1.o hack.So
1049565e721SPeter WemmSYSTEM_LD= @${LD} ${FMT} -Bdynamic -T $S/i386/conf/kernel.script \
1056b7a14ceSPeter Wemm	-export-dynamic -dynamic-linker /red/herring \
1063f6c4fc3SWarner Losh	-o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
1079565e721SPeter WemmSYSTEM_LD_TAIL= @${SIZE} ${FMT} ${.TARGET} ; chmod 755 ${.TARGET}
1086b7a14ceSPeter WemmSYSTEM_DEP+= $S/i386/conf/kernel.script
1099081eec1SJohn Polstra.endif
1105b81b6b3SRodney W. Grimes
11158e4304eSJustin T. Gibbs%BEFORE_DEPEND
11258e4304eSJustin T. Gibbs
1135b81b6b3SRodney W. Grimes%OBJS
1145b81b6b3SRodney W. Grimes
1155b81b6b3SRodney W. Grimes%CFILES
1165b81b6b3SRodney W. Grimes
117c91d636eSDavid Greenman%SFILES
118c91d636eSDavid Greenman
1198afa373cSNicolas Souchu%MFILES
1208afa373cSNicolas Souchu
1210bf316f5SJustin T. Gibbs%CLEAN
1220bf316f5SJustin T. Gibbs
12337558b01SPeter Wemmall: ${KERNEL}
12437558b01SPeter Wemm
125a127a704SPeter Wemm.if !defined(DEBUG)
126a127a704SPeter WemmFULLKERNEL=	${KERNEL}
127a127a704SPeter Wemm.else
128a127a704SPeter WemmFULLKERNEL=	${KERNEL}.debug
129a127a704SPeter Wemm${KERNEL}: ${FULLKERNEL}
130a127a704SPeter Wemm.if ${KERNFORMAT} == "elf"
131a127a704SPeter Wemm	objcopy --strip-debug ${FULLKERNEL} ${KERNEL}
132a127a704SPeter Wemm.else
133a127a704SPeter Wemm	cp ${FULLKERNEL} ${KERNEL}
13422ddeb4bSBruce Evans	strip -aout -d ${KERNEL}
135a127a704SPeter Wemm.endif
136a127a704SPeter Wemm.endif
137a127a704SPeter Wemm
13822ddeb4bSBruce Evans${FULLKERNEL}: ${SYSTEM_DEP} vers.o
13937558b01SPeter Wemm	@rm -f ${.TARGET}
14037558b01SPeter Wemm	@echo linking ${.TARGET}
14137558b01SPeter Wemm	${SYSTEM_LD}
14237558b01SPeter Wemm	${SYSTEM_LD_TAIL}
14337558b01SPeter Wemm
144f7c9e34bSWarner Losh.if !exists(.depend)
145bb4b3fa5SDmitrij Tejblum${SYSTEM_OBJS}: vnode_if.h ${BEFORE_DEPEND:M*.h}
146f7c9e34bSWarner Losh.endif
147f7c9e34bSWarner Losh
1485b81b6b3SRodney W. Grimesclean:
149f92bdbd0SJohn Polstra	rm -f *.o *.so *.So *.ko *.s eddep errs genassym gensetdefs \
1502005b07aSGreg Lehey	      ${KERNEL} ${FULLKERNEL} linterrs makelinks param.c \
1512005b07aSGreg Lehey	      setdef[01].c setdefs.h symbols.exclude symbols.sort tags \
152a872b9bdSBruce Evans	      vers.c vnode_if.c vnode_if.h ${CLEAN}
1535b81b6b3SRodney W. Grimes
15402425318SGarrett Wollman#lint: /tmp param.c
155784c3c34SBruce Evans#	@lint -hbxn -DGENERIC -Dvolatile= ${COPTS} \
15602425318SGarrett Wollman#	  ${I386}/i386/Locore.c ${CFILES} ioconf.c param.c | \
15702425318SGarrett Wollman#	    grep -v 'struct/union .* never defined' | \
15802425318SGarrett Wollman#	    grep -v 'possible pointer alignment problem'
1595b81b6b3SRodney W. Grimes
16086a8648eSBruce Evanslocore.o: ${I386}/i386/locore.s assym.s
1610611064bSBruce Evans	${NORMAL_S}
1625b81b6b3SRodney W. Grimes
1636b7a14ceSPeter Wemm.if ${KERNFORMAT} == elf
1646b7a14ceSPeter Wemm# This is a hack.  BFD "optimizes" away dynamic mode if there are no
1656b7a14ceSPeter Wemm# dynamic references.  We could probably do a '-Bforcedynamic' mode like
1666b7a14ceSPeter Wemm# in the a.out ld.  For now, this works.
167f92bdbd0SJohn Polstrahack.So: Makefile
1686b7a14ceSPeter Wemm	touch hack.c
1699565e721SPeter Wemm	${CC} ${FMT} -shared -nostdlib hack.c -o hack.So
1706b7a14ceSPeter Wemm	rm -f hack.c
1716b7a14ceSPeter Wemm.endif
1726b7a14ceSPeter Wemm
17343482c40SPeter Wemm.ORDER: setdefs.h setdef0.c setdef1.c
17443482c40SPeter Wemm
175f7dd86c1SPeter Wemmsetdef0.o: setdef0.c setdefs.h
1769081eec1SJohn Polstra	${NORMAL_C}
1779081eec1SJohn Polstra
178f7dd86c1SPeter Wemmsetdef1.o: setdef1.c setdefs.h
1799081eec1SJohn Polstra	${NORMAL_C}
1809081eec1SJohn Polstra
181f7dd86c1SPeter Wemmsetdef0.c setdef1.c setdefs.h: ${OBJS}
182dcddc353SPeter Wemm	@gensetdefs ${OBJS}
18361b00529SJohn Polstra
1840611064bSBruce Evans# this rule stops ./assym.s in .depend from causing problems
1850611064bSBruce Evans./assym.s: assym.s
1860611064bSBruce Evans
18785c856e7SNate Williamsassym.s: genassym
18840974c74SBruce Evans	./genassym >assym.s
1895b81b6b3SRodney W. Grimes
190a872b9bdSBruce Evansgenassym.o: ${I386}/i386/genassym.c
1915b036e2bSBruce Evans	${CC} -c ${GEN_CFLAGS} ${I386}/i386/genassym.c
19240974c74SBruce Evans
19340974c74SBruce Evansgenassym: genassym.o
194ac80870eSJordan K. Hubbard	${CC} ${GEN_CFLAGS} genassym.o -o ${.TARGET}
1955b81b6b3SRodney W. Grimes
196f7dd86c1SPeter Wemm${SYSTEM_OBJS} genassym.o vers.o: opt_global.h
197d061973cSPeter Wemm
1986f77b2deSPeter Wemmdepend: assym.s param.c vnode_if.h ${BEFORE_DEPEND} \
1996f77b2deSPeter Wemm	    ${CFILES} ${SYSTEM_CFILES} ${GEN_CFILES} ${SFILES} ${SYSTEM_SFILES}
2006386a7e0SPeter Wemm	rm -f .newdep
2015b036e2bSBruce Evans	mkdep -a -f .newdep ${CFLAGS} ${CFILES} ${SYSTEM_CFILES}
2025b036e2bSBruce Evans	mkdep -a -f .newdep ${GEN_CFLAGS} ${GEN_CFILES}
2035b036e2bSBruce Evans	env MKDEP_CPP="${CC} -E" \
2045b036e2bSBruce Evans	    mkdep -a -f .newdep ${ASM_CFLAGS} ${SFILES} ${SYSTEM_SFILES}
2056386a7e0SPeter Wemm	rm -f .depend
2069fb93307SWolfram Schneider	mv -f .newdep .depend
2075b81b6b3SRodney W. Grimes
208c6b60f62SEivind Eklundcleandepend:
209c6b60f62SEivind Eklund	rm -f .depend
210c6b60f62SEivind Eklund
2115b81b6b3SRodney W. Grimeslinks:
21237558b01SPeter Wemm	egrep '#if' ${CFILES} | sed -f $S/conf/defines | \
2135b81b6b3SRodney W. Grimes	  sed -e 's/:.*//' -e 's/\.c/.o/' | sort -u > dontlink
21437558b01SPeter Wemm	echo ${CFILES} | tr -s ' ' '\12' | sed 's/\.c/.o/' | \
2155b81b6b3SRodney W. Grimes	  sort -u | comm -23 - dontlink | \
2165b81b6b3SRodney W. Grimes	  sed 's,../.*/\(.*.o\),rm -f \1;ln -s ../GENERIC/\1 \1,' > makelinks
2175b81b6b3SRodney W. Grimes	sh makelinks && rm -f dontlink
2185b81b6b3SRodney W. Grimes
2195b81b6b3SRodney W. Grimestags:
22093740fb9SJordan K. Hubbard	@[ -f .depend ] || { echo "you must make depend first"; exit 1; }
22193740fb9SJordan K. Hubbard	sh $S/conf/systags.sh
22293740fb9SJordan K. Hubbard	rm -f tags1
22393740fb9SJordan K. Hubbard	sed -e 's,      ../,    ,' tags > tags1
2245b81b6b3SRodney W. Grimes
2254e8691dcSPeter Wemminstall install.debug:
2264e8691dcSPeter Wemm	@if [ ! -f ${KERNEL}${.TARGET:S/install//} ] ; then \
2277c74d268SNick Hibma		echo "You must build a kernel first." ; \
228c30fe42cSPeter Wemm		exit 1 ; \
229c30fe42cSPeter Wemm	fi
2302005b07aSGreg Lehey.if exists(${DESTDIR}/${KERNEL})
2312005b07aSGreg Lehey	-chflags noschg ${DESTDIR}/${KERNEL}
2322005b07aSGreg Lehey	mv ${DESTDIR}/${KERNEL} ${DESTDIR}/${KERNEL}.old
233c6b60f62SEivind Eklund.endif
2348cd077a7SBruce Evans	PATH=$${PATH}:/sbin:/usr/sbin; \
2352005b07aSGreg Lehey	if [ `sysctl -n kern.bootfile` = ${DESTDIR}/${KERNEL} ] ; then \
2362005b07aSGreg Lehey		sysctl -w kern.bootfile=${DESTDIR}/${KERNEL}.old ; \
237a127a704SPeter Wemm		if [ -f /var/db/kvm_${KERNEL}.db ] ; then \
238a127a704SPeter Wemm			mv -f /var/db/kvm_${KERNEL}.db /var/db/kvm_${KERNEL}.old.db ; \
23903486e0aSGuido van Rooij		fi \
2403b3f55c7SPoul-Henning Kamp	fi
2414e8691dcSPeter Wemm	install -c -m 555 -o root -g wheel -fschg \
2424e8691dcSPeter Wemm		${KERNEL}${.TARGET:S/install//} ${DESTDIR}/${KERNEL}
2436bf5b247SGarrett Wollman
2446d04a6cbSPeter Wemmreinstall reinstall.debug:
2456d04a6cbSPeter Wemm	install -c -m 555 -o root -g wheel -fschg \
2466d04a6cbSPeter Wemm		${KERNEL}${.TARGET:S/reinstall//} ${DESTDIR}/${KERNEL}
2476d04a6cbSPeter Wemm
248a872b9bdSBruce Evansconfig.o:
249a872b9bdSBruce Evans	${NORMAL_C}
250a872b9bdSBruce Evans
251a872b9bdSBruce Evansioconf.o:
252a872b9bdSBruce Evans	${NORMAL_C}
2535b81b6b3SRodney W. Grimes
2542d717e4aSRodney W. Grimesparam.c: $S/conf/param.c
2555b81b6b3SRodney W. Grimes	-rm -f param.c
2565b81b6b3SRodney W. Grimes	cp $S/conf/param.c .
2575b81b6b3SRodney W. Grimes
258a872b9bdSBruce Evansparam.o:
259a872b9bdSBruce Evans	${NORMAL_C}
2605b81b6b3SRodney W. Grimes
261a872b9bdSBruce Evansvers.c: $S/conf/newvers.sh $S/sys/param.h ${SYSTEM_DEP}
2625b81b6b3SRodney W. Grimes	sh $S/conf/newvers.sh ${KERN_IDENT} ${IDENT}
2635b81b6b3SRodney W. Grimes
264a872b9bdSBruce Evans# XXX strictly, everything depends on Makefile because changes to ${PROF}
265a872b9bdSBruce Evans# only appear there, but we don't handle that.
266a872b9bdSBruce Evansvers.o:
267a872b9bdSBruce Evans	${NORMAL_C}
2681fcddf2eSEivind Eklund
269574b36f9SPeter Wemmvnode_if.c: $S/kern/vnode_if.pl $S/kern/vnode_if.src
270574b36f9SPeter Wemm	perl5 $S/kern/vnode_if.pl -c $S/kern/vnode_if.src
2716f77b2deSPeter Wemm
272574b36f9SPeter Wemmvnode_if.h: $S/kern/vnode_if.pl $S/kern/vnode_if.src
273574b36f9SPeter Wemm	perl5 $S/kern/vnode_if.pl -h $S/kern/vnode_if.src
274a872b9bdSBruce Evans
275a872b9bdSBruce Evansvnode_if.o:
276a872b9bdSBruce Evans	${NORMAL_C}
27726f9a767SRodney W. Grimes
2784add5931SPeter Wemm# Commented out for now pending a better solution.
2794add5931SPeter Wemm# How do we pick up compiler version specific flags??
2804add5931SPeter Wemm#.if exists($S/../share/mk)
2814add5931SPeter Wemm#.include "$S/../share/mk/bsd.kern.mk"
2824add5931SPeter Wemm#.else
2839e72552fSBruce Evans.include <bsd.kern.mk>
2844add5931SPeter Wemm#.endif
2859e72552fSBruce Evans
2865b81b6b3SRodney W. Grimes%RULES
2875b81b6b3SRodney W. Grimes
2885b81b6b3SRodney W. Grimes# DO NOT DELETE THIS LINE -- make depend uses it
289