1# $DragonFly: src/sys/conf/kern.pre.mk,v 1.1 2006/07/02 00:55:08 corecode Exp $ 2# 3# This Makefile covers the top part of the MI kernel build instructions 4# 5 6# Can be overridden by makeoptions or /etc/make.conf 7KERNEL?= kernel 8 9# build this target if none is specified on the command line 10.MAIN: all 11 12M= ${MACHINE_ARCH} 13 14SIZE?= size 15OBJCOPY?= objcopy 16 17COPTFLAGS?=-O -pipe 18.if !defined(NO_CPU_COPTFLAGS) 19COPTFLAGS+= ${_CPUCFLAGS} 20.endif 21# don't use -I- so we can use proper source-relative locality for local 22# includes 23INCLUDES= -nostdinc -I. -I$S 24# This hack is to allow kernel compiles to succeed on machines w/out srcdist 25.if exists($S/../include) 26INCLUDES+= -I$S/../include 27.else 28INCLUDES+= -I/usr/include 29.endif 30 31# This hack lets us use the Intel ACPICA code without spamming a new 32# include path into 100+ source files. 33.include "$S/conf/acpi.mk" 34INCLUDES+= -I${.OBJDIR} -I"$S/${OSACPI_MI_DIR}" -I"$S/${ACPICA_DIR}/include" 35 36# This hack lets us use the ipfilter code without spamming a new 37# include path into 100+ source files. 38INCLUDES+= -I$S/contrib/ipfilter 39 40COPTS= ${INCLUDES} ${IDENT} -D_KERNEL -include opt_global.h 41CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS} 42 43# XXX LOCORE means "don't declare C stuff" not "for locore.s". 44ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS} 45 46DEFINED_PROF= ${PROF} 47.if defined(PROF) 48CFLAGS+= -falign-functions=16 49.if ${PROFLEVEL} >= 2 50IDENT+= -DGPROF4 -DGUPROF 51PROF+= -mprofiler-epilogue 52.endif 53.endif 54 55# Put configuration-specific C flags last (except for ${PROF}) so that they 56# can override the others. 57CFLAGS+= ${CONF_CFLAGS} 58 59NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} 60NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC} 61NORMAL_S= ${CC} -c ${ASM_CFLAGS} ${.IMPSRC} 62PROFILE_C= ${CC} -c ${CFLAGS} ${.IMPSRC} 63 64NORMAL_M= awk -f $S/tools/makeobjops.awk -- -c $<; \ 65 ${CC} -c ${CFLAGS} ${PROF} ${.PREFIX}.c 66 67GEN_CFILES= $S/$M/$M/genassym.c 68SYSTEM_CFILES= ioconf.c config.c 69SYSTEM_SFILES= $S/$M/$M/locore.s 70SYSTEM_DEP= Makefile ${SYSTEM_OBJS} 71SYSTEM_OBJS= locore.o ${OBJS} ioconf.o config.o hack.So 72SYSTEM_LD= @${LD} -Bdynamic -T $S/conf/ldscript.$M \ 73 -export-dynamic -dynamic-linker /red/herring \ 74 -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o 75SYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \ 76 ${SIZE} ${.TARGET} ; chmod 755 ${.TARGET} 77SYSTEM_DEP+= $S/conf/ldscript.$M 78 79 80# Normalize output files to make it absolutely crystal clear to 81# anyone examining the build directory. 82# 83.if defined(DEBUG) 84FULLKERNEL= ${KERNEL}.debug 85.if defined(INSTALLSTRIPPED) 86SELECTEDKERNEL= ${KERNEL}.stripped 87.else 88SELECTEDKERNEL= ${KERNEL}.debug 89.endif 90.else 91FULLKERNEL= ${KERNEL}.nodebug 92SELECTEDKERNEL= ${KERNEL}.stripped 93.endif 94 95 96MKMODULESENV= MAKEOBJDIRPREFIX=${.OBJDIR} BUILDING_WITH_KERNEL=${.OBJDIR} 97.if defined(MODULES_OVERRIDE) 98MKMODULESENV+= MODULES_OVERRIDE="${MODULES_OVERRIDE}" 99.endif 100.if defined(DEBUG) 101MKMODULESENV+= DEBUG="${DEBUG}" DEBUG_FLAGS="${DEBUG}" 102.endif 103.if defined(INSTALLSTRIPPED) || defined(INSTALLSTRIPPEDMODULES) 104MKMODULESENV+= INSTALLSTRIPPEDMODULES=1 105.endif 106 107