xref: /dragonfly/sys/conf/kern.pre.mk (revision 5a894b1b)
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