kern.pre.mk revision 192901
185909Simp# $FreeBSD: head/sys/conf/kern.pre.mk 192901 2009-05-27 16:16:56Z thompsa $ 285909Simp 3122116Sbde# Part of a unified Makefile for building kernels. This part contains all 4122116Sbde# of the definitions that need to be before %BEFORE_DEPEND. 5122116Sbde 6180012Sru.include <bsd.own.mk> 7160440Sobrien 885909Simp# Can be overridden by makeoptions or /etc/make.conf 985909SimpKERNEL_KO?= kernel 1085909SimpKERNEL?= kernel 1185909SimpKODIR?= /boot/${KERNEL} 12175888SimpLDSCRIPT_NAME?= ldscript.$M 13175888SimpLDSCRIPT?= $S/conf/${LDSCRIPT_NAME} 1485909Simp 1585909SimpM= ${MACHINE_ARCH} 1685909Simp 1791512SobrienAWK?= awk 18116341SmarkmLINT?= lint 1985909SimpNM?= nm 2085909SimpOBJCOPY?= objcopy 2185909SimpSIZE?= size 2285909Simp 23126890Strhodes.if ${CC} == "icc" 24140606SobrienCOPTFLAGS?= -O 25126890Strhodes.else 26140606Sobrien. if defined(DEBUG) 27140606Sobrien_MINUS_O= -O 28187103SgnnCTFFLAGS+= -g 29140606Sobrien. else 30140606Sobrien_MINUS_O= -O2 31140606Sobrien. endif 32127543Skensmith. if ${MACHINE_ARCH} == "amd64" 33127204SobrienCOPTFLAGS?=-O2 -frename-registers -pipe 34136951Sobrien. else 35140606SobrienCOPTFLAGS?=${_MINUS_O} -pipe 36127204Sobrien. endif 37141782Sobrien. if !empty(COPTFLAGS:M-O[23s]) && empty(COPTFLAGS:M-fno-strict-aliasing) 38124834SruCOPTFLAGS+= -fno-strict-aliasing 39126890Strhodes. endif 40124834Sru.endif 4185909Simp.if !defined(NO_CPU_COPTFLAGS) 42126890Strhodes. if ${CC} == "icc" 43126890StrhodesCOPTFLAGS+= ${_ICC_CPUCFLAGS:C/(-x[^M^K^W]+)[MKW]+|-x[MKW]+/\1/} 44126890Strhodes. else 4585909SimpCOPTFLAGS+= ${_CPUCFLAGS} 46126890Strhodes. endif 4785909Simp.endif 48126890Strhodes.if ${CC} == "icc" 49163333SruC_DIALECT= 50126890StrhodesNOSTDINC= -X 51126890Strhodes.else 52160043SobrienC_DIALECT= -std=c99 53126890StrhodesNOSTDINC= -nostdinc 54126890Strhodes.endif 5585909Simp 56192901SthompsaINCLUDES= ${NOSTDINC} ${INCLMAGIC} -I. -I$S 57126890Strhodes 58151605Sobrien# This hack lets us use the OpenBSD altq code without spamming a new 59151605Sobrien# include path into contrib'ed source files. 60130416SmlaierINCLUDES+= -I$S/contrib/altq 61130416Smlaier 62149978Sobrien.if make(depend) || make(kernel-depend) 63149978Sobrien 64149978Sobrien# ... and the same for ipfilter 65149978SobrienINCLUDES+= -I$S/contrib/ipfilter 66149978Sobrien 67149978Sobrien# ... and the same for pf 68149978SobrienINCLUDES+= -I$S/contrib/pf 69149978Sobrien 70185522Ssam# ... and the same for ath 71185522SsamINCLUDES+= -I$S/dev/ath -I$S/dev/ath/ath_hal 72149978Sobrien 73149978Sobrien# ... and the same for the NgATM stuff 74149978SobrienINCLUDES+= -I$S/contrib/ngatm 75149978Sobrien 76149978Sobrien# .. and the same for twa 77149978SobrienINCLUDES+= -I$S/dev/twa 78149978Sobrien 79153325Srodrigc# ... and XFS 80153325SrodrigcINCLUDES+= -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs 81153325Srodrigc 82179226Sjb# ... and OpenSolaris 83179226SjbINCLUDES+= -I$S/contrib/opensolaris/compat 84179226Sjb 85183292Skmacy# ... and the same for cxgb 86183292SkmacyINCLUDES+= -I$S/dev/cxgb 87183292Skmacy 88149978Sobrien.endif 89149978Sobrien 90160043SobrienCFLAGS= ${COPTFLAGS} ${C_DIALECT} ${DEBUG} ${CWARNFLAGS} 91150966SglebiusCFLAGS+= ${INCLUDES} -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h 92126890Strhodes.if ${CC} != "icc" 93124834SruCFLAGS+= -fno-common -finline-limit=${INLINE_LIMIT} 94132766SkanCFLAGS+= --param inline-unit-growth=100 95132766SkanCFLAGS+= --param large-function-growth=1000 96171239SpeterWERROR?= -Werror 97126890Strhodes.endif 9885909Simp 9985909Simp# XXX LOCORE means "don't declare C stuff" not "for locore.s". 10085909SimpASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 10185909Simp 10299923Sbde.if defined(PROFLEVEL) && ${PROFLEVEL} >= 1 103126938Strhodes.if ${CC} == "icc" 104163700Sbde.error "Profiling doesn't work with icc yet" 105163700Sbde.endif 10699932SbdeCFLAGS+= -DGPROF -falign-functions=16 10799932Sbde.if ${PROFLEVEL} >= 2 10899932SbdeCFLAGS+= -DGPROF4 -DGUPROF 109163704SbdePROF= -pg -mprofiler-epilogue 11099932Sbde.else 11199923SbdePROF= -pg 11299923Sbde.endif 11399932Sbde.endif 11485909SimpDEFINED_PROF= ${PROF} 11591002Speter 11685909Simp# Put configuration-specific C flags last (except for ${PROF}) so that they 11785909Simp# can override the others. 11885909SimpCFLAGS+= ${CONF_CFLAGS} 11985909Simp 120116341Smarkm# Optional linting. This can be overridden in /etc/make.conf. 121116341SmarkmLINTFLAGS= ${LINTOBJKERNFLAGS} 122116341Smarkm 12391002SpeterNORMAL_C= ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} 12491002SpeterNORMAL_S= ${CC} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC} 12591002SpeterPROFILE_C= ${CC} -c ${CFLAGS} ${WERROR} ${.IMPSRC} 126105489SmuxNORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} 12785909Simp 128105462SmuxNORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \ 129105462Smux ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c 13085909Simp 131179226Sjb.if defined(CTFCONVERT) 132187290SrodrigcNORMAL_CTFCONVERT= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 133179226Sjb.else 134179226SjbNORMAL_CTFCONVERT= 135179226Sjb.endif 136179226Sjb 137116341SmarkmNORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} 138116341Smarkm 139131210SimpGEN_CFILES= $S/$M/$M/genassym.c ${MFILES:T:S/.m$/.c/} 140144293SphkSYSTEM_CFILES= config.c env.c hints.c vnode_if.c 14185909SimpSYSTEM_DEP= Makefile ${SYSTEM_OBJS} 142111684SruSYSTEM_OBJS= locore.o ${MDOBJS} ${OBJS} 143111684SruSYSTEM_OBJS+= ${SYSTEM_CFILES:.c=.o} 144111684SruSYSTEM_OBJS+= hack.So 145179226Sjb.if defined(CTFMERGE) 146187290SrodrigcSYSTEM_CTFMERGE= ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SYSTEM_OBJS} vers.o 147179226SjbLD+= -g 148179226Sjb.endif 149175888SimpSYSTEM_LD= @${LD} -Bdynamic -T ${LDSCRIPT} \ 15089180Smsmith -warn-common -export-dynamic -dynamic-linker /red/herring \ 15185909Simp -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 15285909SimpSYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \ 153123966Sbde ${SIZE} ${.TARGET} ; chmod 755 ${.TARGET} 154175888SimpSYSTEM_DEP+= ${LDSCRIPT} 15585909Simp 15688893Simp# MKMODULESENV is set here so that port makefiles can augment 15788893Simp# them. 15888893Simp 15988893SimpMKMODULESENV= MAKEOBJDIRPREFIX=${.OBJDIR}/modules KMODDIR=${KODIR} 16090789Sphk.if (${KERN_IDENT} == LINT) 16190789SphkMKMODULESENV+= ALL_MODULES=LINT 16290789Sphk.endif 16388893Simp.if defined(MODULES_OVERRIDE) 16488893SimpMKMODULESENV+= MODULES_OVERRIDE="${MODULES_OVERRIDE}" 16588893Simp.endif 16688893Simp.if defined(DEBUG) 167125772SruMKMODULESENV+= DEBUG_FLAGS="${DEBUG}" 16888893Simp.endif 169