kern.pre.mk revision 131210
134192Sjdp# $FreeBSD: head/sys/conf/kern.pre.mk 131210 2004-06-27 23:03:43Z imp $ 234192Sjdp 334192Sjdp# Part of a unified Makefile for building kernels. This part contains all 434192Sjdp# of the definitions that need to be before %BEFORE_DEPEND. 534192Sjdp 634192Sjdp# Can be overridden by makeoptions or /etc/make.conf 734192SjdpKERNEL_KO?= kernel 834192SjdpKERNEL?= kernel 934192SjdpKODIR?= /boot/${KERNEL} 1034192Sjdp 1134192SjdpM= ${MACHINE_ARCH} 1234192Sjdp 1334192SjdpAWK?= awk 1434192SjdpLINT?= lint 1534192SjdpNM?= nm 1634192SjdpOBJCOPY?= objcopy 1734192SjdpSIZE?= size 1834192Sjdp 1934192Sjdp.if ${CC} == "icc" 2034192SjdpCOPTFLAGS?=-O 2134192Sjdp.else 2234192Sjdp. if ${MACHINE_ARCH} == "amd64" 2334192SjdpCOPTFLAGS?=-O2 -frename-registers -pipe 2434192Sjdp. elif ${MACHINE_ARCH} == "ia64" 2545501SjdpCOPTFLAGS?=-O2 -pipe 2634192Sjdp. elif ${MACHINE_ARCH} == "sparc64" 2734192SjdpCOPTFLAGS?=-O2 -pipe 2834192Sjdp. else 2934192SjdpCOPTFLAGS?=-O -pipe 3034192Sjdp. endif 3134192Sjdp. if ${COPTFLAGS:M-O[23s]} != "" 3234192SjdpCOPTFLAGS+= -fno-strict-aliasing 3335529Sdfr. endif 3434192Sjdp.endif 3534192Sjdp.if !defined(NO_CPU_COPTFLAGS) 3634192Sjdp. if ${CC} == "icc" 3745501SjdpCOPTFLAGS+= ${_ICC_CPUCFLAGS:C/(-x[^M^K^W]+)[MKW]+|-x[MKW]+/\1/} 3845501Sjdp. else 3934192SjdpCOPTFLAGS+= ${_CPUCFLAGS} 4034192Sjdp. endif 4134192Sjdp.endif 4234192Sjdp.if ${CC} == "icc" 4334192SjdpNOSTDINC= -X 4434192Sjdp.else 4534192SjdpNOSTDINC= -nostdinc 4634192Sjdp.endif 4734192Sjdp 4834192SjdpINCLUDES= ${NOSTDINC} -I- ${INCLMAGIC} -I. -I$S 4934192Sjdp 5034192Sjdp# This hack lets us use the Intel ACPICA code without spamming a new 5134192Sjdp# include path into 100+ source files. 5234192SjdpINCLUDES+= -I$S/contrib/dev/acpica 5334192Sjdp 5434192Sjdp# ... and the same for altq 5534192SjdpINCLUDES+= -I$S/contrib/altq 5634192Sjdp 5734192Sjdp# ... and the same for ipfilter 5834192SjdpINCLUDES+= -I$S/contrib/ipfilter 5934192Sjdp 6034192Sjdp# ... and the same for pf 6134192SjdpINCLUDES+= -I$S/contrib/pf 6234192Sjdp 6334192Sjdp# ... and the same for Atheros HAL 6434192SjdpINCLUDES+= -I$S/contrib/dev/ath -I$S/contrib/dev/ath/freebsd 6534192Sjdp 6634192Sjdp# ... and the same for the NgATM stuff 6734192SjdpINCLUDES+= -I$S/contrib/ngatm 6834192Sjdp 6934192SjdpCOPTS= ${INCLUDES} -D_KERNEL -include opt_global.h 7038467SjbCFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 7138467Sjb.if ${CC} != "icc" 7234192SjdpCFLAGS+= -fno-common -finline-limit=${INLINE_LIMIT} 7334192SjdpWERROR?= -Werror 7434192Sjdp.endif 7534192Sjdp 7634192Sjdp# XXX LOCORE means "don't declare C stuff" not "for locore.s". 7734192SjdpASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 7834192Sjdp 7934192Sjdp.if defined(PROFLEVEL) && ${PROFLEVEL} >= 1 8034192Sjdp.if ${CC} == "icc" 8134192Sjdp.error Profiling doesn't work with ICC yet. 8238467Sjb.else 8334192SjdpCFLAGS+= -DGPROF -falign-functions=16 8438467Sjb.endif 8534192Sjdp.if ${PROFLEVEL} >= 2 8638467SjbCFLAGS+= -DGPROF4 -DGUPROF 8734192Sjdp. if ${CC} == "icc" 8834192Sjdp# XXX doesn't work yet 8934192Sjdp#PROF= -prof_gen 9045501Sjdp. else 9138467SjbPROF= -finstrument-functions 9234192Sjdp. endif 9338816Sdfr.else 9438816Sdfr. if ${CC} == "icc" 9538467SjbPROF= -p 9634192Sjdp. else 9738816SdfrPROF= -pg 9838816Sdfr. endif 9938467Sjb.endif 10034192Sjdp.endif 10134192SjdpDEFINED_PROF= ${PROF} 10234192Sjdp 10338816Sdfr# Put configuration-specific C flags last (except for ${PROF}) so that they 10434192Sjdp# can override the others. 10538816SdfrCFLAGS+= ${CONF_CFLAGS} 10634192Sjdp 10734192Sjdp# Optional linting. This can be overridden in /etc/make.conf. 10834192SjdpLINTFLAGS= ${LINTOBJKERNFLAGS} 10934192Sjdp 11034192SjdpNORMAL_C= ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.IMPSRC} 11134192SjdpNORMAL_S= ${CC} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC} 11234192SjdpPROFILE_C= ${CC} -c ${CFLAGS} ${WERROR} ${.IMPSRC} 11334192SjdpNORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} 11434192Sjdp 11534192SjdpNORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \ 11634192Sjdp ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c 11734192Sjdp 11838740SjdpNORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} 11935529Sdfr 12035529SdfrGEN_CFILES= $S/$M/$M/genassym.c ${MFILES:T:S/.m$/.c/} 12134192SjdpSYSTEM_CFILES= config.c env.c hints.c majors.c vnode_if.c 12234192SjdpSYSTEM_DEP= Makefile ${SYSTEM_OBJS} 12334192SjdpSYSTEM_OBJS= locore.o ${MDOBJS} ${OBJS} 12434192SjdpSYSTEM_OBJS+= ${SYSTEM_CFILES:.c=.o} 12534192SjdpSYSTEM_OBJS+= hack.So 12634192SjdpSYSTEM_LD= @${LD} -Bdynamic -T $S/conf/ldscript.$M \ 12734192Sjdp -warn-common -export-dynamic -dynamic-linker /red/herring \ 12834192Sjdp -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 12934192SjdpSYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \ 13034192Sjdp ${SIZE} ${.TARGET} ; chmod 755 ${.TARGET} 13138816SdfrSYSTEM_DEP+= $S/conf/ldscript.$M 13234192Sjdp 13338816Sdfr# MKMODULESENV is set here so that port makefiles can augment 13438816Sdfr# them. 13538816Sdfr 13638816SdfrMKMODULESENV= MAKEOBJDIRPREFIX=${.OBJDIR}/modules KMODDIR=${KODIR} 13738816Sdfr.if (${KERN_IDENT} == LINT) 13838816SdfrMKMODULESENV+= ALL_MODULES=LINT 13938816Sdfr.endif 14045501Sjdp.if defined(MODULES_OVERRIDE) 14145501SjdpMKMODULESENV+= MODULES_OVERRIDE="${MODULES_OVERRIDE}" 14245501Sjdp.endif 14345501Sjdp.if defined(DEBUG) 14438816SdfrMKMODULESENV+= DEBUG_FLAGS="${DEBUG}" 14538816Sdfr.endif 14638816Sdfr