kern.pre.mk revision 210311
10SN/A# $FreeBSD: head/sys/conf/kern.pre.mk 210311 2010-07-20 19:25:11Z jmallett $ 217071Svtewari 30SN/A# Part of a unified Makefile for building kernels. This part contains all 40SN/A# of the definitions that need to be before %BEFORE_DEPEND. 50SN/A 60SN/A.include <bsd.own.mk> 72362SN/A 80SN/A# backwards compat option for older systems. 92362SN/AMACHINE_CPUARCH?=${MACHINE_ARCH:C/mipse[lb]/mips/:C/armeb/arm/:C/powerpc64/powerpc/} 100SN/A 110SN/A# Can be overridden by makeoptions or /etc/make.conf 120SN/AKERNEL_KO?= kernel 130SN/AKERNEL?= kernel 140SN/AKODIR?= /boot/${KERNEL} 150SN/ALDSCRIPT_NAME?= ldscript.$M 160SN/ALDSCRIPT?= $S/conf/${LDSCRIPT_NAME} 170SN/A 180SN/AM= ${MACHINE_CPUARCH} 190SN/A 200SN/AAWK?= awk 212362SN/ALINT?= lint 222362SN/ANM?= nm 232362SN/AOBJCOPY?= objcopy 240SN/ASIZE?= size 250SN/A 260SN/A.if ${CC} == "icc" 270SN/ACOPTFLAGS?= -O 280SN/A.else 290SN/A. if defined(DEBUG) 300SN/A_MINUS_O= -O 310SN/ACTFFLAGS+= -g 320SN/A. else 330SN/A_MINUS_O= -O2 340SN/A. endif 350SN/A. if ${MACHINE_ARCH} == "amd64" 360SN/ACOPTFLAGS?=-O2 -frename-registers -pipe 370SN/A. else 380SN/ACOPTFLAGS?=${_MINUS_O} -pipe 390SN/A. endif 400SN/A. if !empty(COPTFLAGS:M-O[23s]) && empty(COPTFLAGS:M-fno-strict-aliasing) 410SN/ACOPTFLAGS+= -fno-strict-aliasing 420SN/A. endif 430SN/A.endif 440SN/A.if !defined(NO_CPU_COPTFLAGS) 450SN/A. if ${CC} == "icc" 460SN/ACOPTFLAGS+= ${_ICC_CPUCFLAGS:C/(-x[^M^K^W]+)[MKW]+|-x[MKW]+/\1/} 4716539Smchung. else 480SN/ACOPTFLAGS+= ${_CPUCFLAGS} 490SN/A. endif 500SN/A.endif 510SN/A.if ${CC} == "icc" 520SN/AC_DIALECT= 530SN/ANOSTDINC= -X 540SN/A.else 550SN/AC_DIALECT= -std=c99 560SN/ANOSTDINC= -nostdinc 570SN/A.endif 580SN/A 590SN/AINCLUDES= ${NOSTDINC} ${INCLMAGIC} -I. -I$S 600SN/A 610SN/A# This hack lets us use the OpenBSD altq code without spamming a new 620SN/A# include path into contrib'ed source files. 630SN/AINCLUDES+= -I$S/contrib/altq 640SN/A 650SN/A.if make(depend) || make(kernel-depend) 660SN/A 670SN/A# ... and the same for ipfilter 680SN/AINCLUDES+= -I$S/contrib/ipfilter 690SN/A 700SN/A# ... and the same for pf 7111820SavstepanINCLUDES+= -I$S/contrib/pf 7211820Savstepan 730SN/A# ... and the same for ath 740SN/AINCLUDES+= -I$S/dev/ath -I$S/dev/ath/ath_hal 750SN/A 760SN/A# ... and the same for the NgATM stuff 770SN/AINCLUDES+= -I$S/contrib/ngatm 780SN/A 790SN/A# .. and the same for twa 8011820SavstepanINCLUDES+= -I$S/dev/twa 8111820Savstepan 820SN/A# ... and XFS 830SN/AINCLUDES+= -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs 840SN/A 850SN/A# ... and OpenSolaris 860SN/AINCLUDES+= -I$S/contrib/opensolaris/compat 870SN/A 8811820Savstepan# ... and the same for cxgb 8911820SavstepanINCLUDES+= -I$S/dev/cxgb 900SN/A 910SN/A.endif 920SN/A 930SN/ACFLAGS= ${COPTFLAGS} ${C_DIALECT} ${DEBUG} ${CWARNFLAGS} 940SN/ACFLAGS+= ${INCLUDES} -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h 9511820Savstepan.if ${CC} != "icc" 960SN/ACFLAGS+= -fno-common -finline-limit=${INLINE_LIMIT} 970SN/A.if ${MACHINE_CPUARCH} != "mips" 980SN/ACFLAGS+= --param inline-unit-growth=100 990SN/ACFLAGS+= --param large-function-growth=1000 1000SN/A.else 1010SN/A# XXX Actually a gross hack just for Octeon because of the Simple Executive. 1020SN/ACFLAGS+= --param inline-unit-growth=1000 1030SN/ACFLAGS+= --param large-function-growth=100000 1040SN/A.endif 1050SN/AWERROR?= -Werror 1060SN/A.endif 10711820Savstepan 1080SN/A# XXX LOCORE means "don't declare C stuff" not "for locore.s". 1090SN/AASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 1100SN/A 1110SN/A.if defined(PROFLEVEL) && ${PROFLEVEL} >= 1 1120SN/A.if ${CC} == "icc" 1130SN/A.error "Profiling doesn't work with icc yet" 1140SN/A.endif 1150SN/ACFLAGS+= -DGPROF -falign-functions=16 1160SN/A.if ${PROFLEVEL} >= 2 1170SN/ACFLAGS+= -DGPROF4 -DGUPROF 1180SN/APROF= -pg -mprofiler-epilogue 1190SN/A.else 1200SN/APROF= -pg 12111820Savstepan.endif 1220SN/A.endif 1230SN/ADEFINED_PROF= ${PROF} 1240SN/A 1250SN/A# Put configuration-specific C flags last (except for ${PROF}) so that they 1260SN/A# can override the others. 12711820SavstepanCFLAGS+= ${CONF_CFLAGS} 1280SN/A 12911820Savstepan# Optional linting. This can be overridden in /etc/make.conf. 1300SN/ALINTFLAGS= ${LINTOBJKERNFLAGS} 1310SN/A 1320SN/ANORMAL_C= ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} 1330SN/ANORMAL_S= ${CC} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC} 1340SN/APROFILE_C= ${CC} -c ${CFLAGS} ${WERROR} ${.IMPSRC} 1350SN/ANORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} 13611820Savstepan 1370SN/ANORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \ 1380SN/A ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c 13911820Savstepan 1400SN/ANORMAL_CTFCONVERT= [ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || \ 1410SN/A ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 1420SN/A 14311820SavstepanNORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} 1440SN/A 1450SN/AGEN_CFILES= $S/$M/$M/genassym.c ${MFILES:T:S/.m$/.c/} 1460SN/ASYSTEM_CFILES= config.c env.c hints.c vnode_if.c 14711820SavstepanSYSTEM_DEP= Makefile ${SYSTEM_OBJS} 1480SN/ASYSTEM_OBJS= locore.o ${MDOBJS} ${OBJS} 1490SN/ASYSTEM_OBJS+= ${SYSTEM_CFILES:.c=.o} 1500SN/ASYSTEM_OBJS+= hack.So 1510SN/ASYSTEM_CTFMERGE= [ -z "${CTFMERGE}" -o -n "${NO_CTF}" ] || ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SYSTEM_OBJS} vers.o 1520SN/ASYSTEM_LD= @${LD} -Bdynamic -T ${LDSCRIPT} \ 1530SN/A -warn-common -export-dynamic -dynamic-linker /red/herring \ 1548565SN/A -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 1550SN/ASYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \ 1560SN/A ${SIZE} ${.TARGET} ; chmod 755 ${.TARGET} 15711820SavstepanSYSTEM_DEP+= ${LDSCRIPT} 15811820Savstepan 1590SN/A# MKMODULESENV is set here so that port makefiles can augment 1600SN/A# them. 1610SN/A 1620SN/AMKMODULESENV= MAKEOBJDIRPREFIX=${.OBJDIR}/modules KMODDIR=${KODIR} 1630SN/AMKMODULESENV+= MACHINE_CPUARCH=${MACHINE_CPUARCH} 16411820Savstepan.if (${KERN_IDENT} == LINT) 16511820SavstepanMKMODULESENV+= ALL_MODULES=LINT 1660SN/A.endif 1670SN/A.if defined(MODULES_OVERRIDE) 1680SN/AMKMODULESENV+= MODULES_OVERRIDE="${MODULES_OVERRIDE}" 1690SN/A.endif 1700SN/A.if defined(DEBUG) 1710SN/AMKMODULESENV+= DEBUG_FLAGS="${DEBUG}" 17211820Savstepan.endif 17311820Savstepan