kern.pre.mk revision 111684
185909Simp# kern.pre.mk
285909Simp#
3101877Sjmallett# Unified Makefile for building kernels.  This includes all the definitions
485909Simp# that need to be included before %BEFORE_DEPEND
585909Simp#
685909Simp# $FreeBSD: head/sys/conf/kern.pre.mk 111684 2003-02-28 21:59:14Z ru $
785909Simp#
885909Simp
985909Simp# Can be overridden by makeoptions or /etc/make.conf
1085909SimpKERNEL_KO?=	kernel
1185909SimpKERNEL?=	kernel
1285909SimpKODIR?=		/boot/${KERNEL}
1385909Simp
1485909SimpM=	${MACHINE_ARCH}
1585909Simp
1691512SobrienAWK?=		awk
1785909SimpNM?=		nm
1885909SimpOBJCOPY?=	objcopy
1985909SimpSIZE?=		size
2085909Simp
2185909SimpCOPTFLAGS?=-O -pipe
2285909Simp.if !defined(NO_CPU_COPTFLAGS)
2385909SimpCOPTFLAGS+= ${_CPUCFLAGS}
2485909Simp.endif
2585909SimpINCLUDES= -nostdinc -I- ${INCLMAGIC} -I. -I$S -I$S/dev
2685909Simp
2785909Simp# This hack lets us use the Intel ACPICA code without spamming a new 
2885909Simp# include path into 100+ source files.
2985909SimpINCLUDES+= -I$S/contrib/dev/acpica
3085909Simp
3185909Simp# ... and the same for ipfilter
3285909SimpINCLUDES+= -I$S/contrib/ipfilter
3385909Simp
3499932SbdeCOPTS=	${INCLUDES} -D_KERNEL -include opt_global.h
3589180SmsmithCFLAGS=	${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} -fno-common
3685909Simp
3785909Simp# XXX LOCORE means "don't declare C stuff" not "for locore.s".
3885909SimpASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS}
3985909Simp
4099923Sbde.if defined(PROFLEVEL) && ${PROFLEVEL} >= 1
4199932SbdeCFLAGS+=	-DGPROF -falign-functions=16
4299932Sbde.if ${PROFLEVEL} >= 2
4399932SbdeCFLAGS+=	-DGPROF4 -DGUPROF
4499932Sbde# XXX -Wno-inline is to break some warnings.
4599932SbdePROF=	-finstrument-functions -Wno-inline
4699932Sbde.else
4799923SbdePROF=	-pg
4899923Sbde.endif
4999932Sbde.endif
5085909SimpDEFINED_PROF=	${PROF}
5191255SpeterWERROR?=	-Werror
5291002Speter
5385909Simp# Put configuration-specific C flags last (except for ${PROF}) so that they
5485909Simp# can override the others.
5585909SimpCFLAGS+=	${CONF_CFLAGS}
5685909Simp
5791002SpeterNORMAL_C= ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.IMPSRC}
5891002SpeterNORMAL_S= ${CC} -c ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}
5991002SpeterPROFILE_C= ${CC} -c ${CFLAGS} ${WERROR} ${.IMPSRC}
60105489SmuxNORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
6185909Simp
62105462SmuxNORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \
63105462Smux	  ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c
6485909Simp
6585909SimpGEN_CFILES= $S/$M/$M/genassym.c
66111684SruSYSTEM_CFILES= config.c env.c hints.c majors.c vnode_if.c
6785909SimpSYSTEM_DEP= Makefile ${SYSTEM_OBJS}
68111684SruSYSTEM_OBJS= locore.o ${MDOBJS} ${OBJS}
69111684SruSYSTEM_OBJS+= ${SYSTEM_CFILES:.c=.o}
70111684SruSYSTEM_OBJS+= hack.So
7185909SimpSYSTEM_LD= @${LD} ${FMT} -Bdynamic -T $S/conf/ldscript.$M \
7289180Smsmith	-warn-common -export-dynamic -dynamic-linker /red/herring \
7385909Simp	-o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
7485909SimpSYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \
7585909Simp	${SIZE} ${FMT} ${.TARGET} ; chmod 755 ${.TARGET}
7685909SimpSYSTEM_DEP+= $S/conf/ldscript.$M
7785909Simp
7888893Simp# MKMODULESENV is set here so that port makefiles can augment
7988893Simp# them.
8088893Simp
8188893SimpMKMODULESENV=	MAKEOBJDIRPREFIX=${.OBJDIR}/modules KMODDIR=${KODIR}
8290789Sphk.if (${KERN_IDENT} == LINT)
8390789SphkMKMODULESENV+=	ALL_MODULES=LINT
8490789Sphk.endif
8588893Simp.if defined(MODULES_OVERRIDE)
8688893SimpMKMODULESENV+=	MODULES_OVERRIDE="${MODULES_OVERRIDE}"
8788893Simp.endif
8888893Simp.if defined(DEBUG)
8988893SimpMKMODULESENV+=	DEBUG="${DEBUG}" DEBUG_FLAGS="${DEBUG}"
9088893Simp.endif
91