summaryrefslogtreecommitdiffstats
path: root/sys/conf/kern.pre.mk
diff options
context:
space:
mode:
Diffstat (limited to 'sys/conf/kern.pre.mk')
-rw-r--r--sys/conf/kern.pre.mk84
1 files changed, 84 insertions, 0 deletions
diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk
new file mode 100644
index 0000000..06a2cb7
--- /dev/null
+++ b/sys/conf/kern.pre.mk
@@ -0,0 +1,84 @@
+# kern.pre.mk
+#
+# Unified Makefile for building kenrels. This includes all the definitions
+# that need to be included before %BEFORE_DEPEND
+#
+# $FreeBSD$
+#
+
+# Can be overridden by makeoptions or /etc/make.conf
+KERNEL_KO?= kernel
+KERNEL?= kernel
+KODIR?= /boot/${KERNEL}
+
+M= ${MACHINE_ARCH}
+
+NM?= nm
+OBJCOPY?= objcopy
+SIZE?= size
+
+COPTFLAGS?=-O -pipe
+.if !defined(NO_CPU_COPTFLAGS)
+COPTFLAGS+= ${_CPUCFLAGS}
+.endif
+INCLUDES= -nostdinc -I- ${INCLMAGIC} -I. -I$S -I$S/dev
+
+# This hack lets us use the Intel ACPICA code without spamming a new
+# include path into 100+ source files.
+INCLUDES+= -I$S/contrib/dev/acpica
+
+# ... and the same for ipfilter
+INCLUDES+= -I$S/contrib/ipfilter
+
+# This hack is to allow kernel compiles to succeed on machines w/out srcdist
+.if exists($S/../include)
+INCLUDES+= -I$S/../include
+.else
+INCLUDES+= -I/usr/include
+.endif
+
+COPTS= ${INCLUDES} ${IDENT} -D_KERNEL -include opt_global.h
+CFLAGS= ${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}
+
+# XXX LOCORE means "don't declare C stuff" not "for locore.s".
+ASM_CFLAGS= -x assembler-with-cpp -DLOCORE ${CFLAGS}
+
+# Select the correct set of tools. Can't set OBJFORMAT here because it
+# doesn't get exported into the environment, and if it were exported
+# then it might break building of utilities.
+FMT?= -elf
+CFLAGS+= ${FMT}
+
+DEFINED_PROF= ${PROF}
+.if defined(PROF)
+CFLAGS+= -malign-functions=4
+.if ${PROFLEVEL} >= 2
+IDENT+= -DGPROF4 -DGUPROF
+PROF+= -mprofiler-epilogue
+.endif
+.endif
+
+# Put configuration-specific C flags last (except for ${PROF}) so that they
+# can override the others.
+CFLAGS+= ${CONF_CFLAGS}
+
+NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
+NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
+NORMAL_S= ${CC} -c ${ASM_CFLAGS} ${.IMPSRC}
+PROFILE_C= ${CC} -c ${CFLAGS} ${.IMPSRC}
+
+NORMAL_M= perl5 $S/kern/makeobjops.pl -c $<; \
+ ${CC} -c ${CFLAGS} ${PROF} ${.PREFIX}.c
+
+GEN_CFILES= $S/$M/$M/genassym.c
+SYSTEM_CFILES= vnode_if.c hints.c env.c config.c
+SYSTEM_SFILES= $S/$M/$M/locore.s
+SYSTEM_DEP= Makefile ${SYSTEM_OBJS}
+SYSTEM_OBJS= locore.o vnode_if.o ${OBJS} hints.o env.o config.o hack.So
+SYSTEM_LD= @${LD} ${FMT} -Bdynamic -T $S/conf/ldscript.$M \
+ -export-dynamic -dynamic-linker /red/herring \
+ -o ${.TARGET} -X ${SYSTEM_OBJS} vers.o
+SYSTEM_LD_TAIL= @${OBJCOPY} --strip-symbol gcc2_compiled. ${.TARGET} ; \
+ ${SIZE} ${FMT} ${.TARGET} ; chmod 755 ${.TARGET}
+SYSTEM_DEP+= $S/conf/ldscript.$M
+
OpenPOWER on IntegriCloud