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