build: use -fno-ipa-icf -fno-clone-functions
[unleashed.git] / kernel / mk / defines.mk
blob1d2e5f471339fbdb650937e504e957ee12315e35
2 # This is a makefile fragment that's supposed to set the following
3 # variables:
5 # KERNEL_CFLAGS - CFLAGS for kernel code
6 # KERNEL_LDFLAGS - LDFLAGS for kernel code
8 # The bit-ness (32- or 64-bit) is selected by setting BITS to 32 or 64.
10 # The following can be tweaked to change up the KERNEL_CFLAGS variables:
12 # KERNEL_CFLAGS - CFLAGS used by both 32- & 64-bit
13 # KERNEL_CFLAGS_${BITS}
14 # KERNEL_CFLAGS_${CONFIG_MACH}
15 # KERNEL_CFLAGS_${CONFIG_MACH32}
16 # KERNEL_CFLAGS_${CONFIG_MACH64}
17 # - CFLAGS used by specific builds
18 # KERNEL_INCLUDES - -Ifoo directives used by all builds
19 # KERNEL_INCLUDES_${CONFIG_MACH}
20 # - -Ifoo directives for specific build
21 # KERNEL_LDFLAGS - LDFLAGS used by both 32- & 64-bit
25 # CFLAGS
27 # TODO: -fstack-protector will fail for 'unix'
28 KERNEL_CFLAGS_ALL = \
29 -pipe \
30 -fident \
31 -finline \
32 -fno-inline-functions \
33 -fno-builtin \
34 -fno-asm \
35 -fdiagnostics-show-option \
36 -nodefaultlibs \
37 -D_ASM_INLINES \
38 -ffreestanding \
39 -std=gnu99 \
40 -g \
41 -Wall \
42 -Wextra \
43 -Werror \
44 -Wno-missing-braces \
45 -Wno-sign-compare \
46 -Wno-unknown-pragmas \
47 -Wno-unused-parameter \
48 -Wno-missing-field-initializers \
49 -fno-inline-small-functions \
50 -fno-inline-functions-called-once \
51 -fno-ipa-cp \
52 -fno-ipa-icf \
53 -fno-clone-functions \
54 -fstack-protector \
55 -D_KERNEL \
56 -D_SYSCALL32 \
57 -D_DDI_STRICT \
58 -D__sun \
59 -nostdinc
61 # TODO: support for debug builds
62 # KERNEL_CFLAGS += -DDEBUG
64 KERNEL_CFLAGS_32 = \
65 -m32
67 KERNEL_CFLAGS_64 = \
68 -m64 \
69 -D_ELF64
71 KERNEL_CFLAGS_i386 = \
72 -mno-mmx \
73 -mno-sse
75 KERNEL_CFLAGS_i86 = \
76 -O \
77 -march=pentiumpro
79 KERNEL_CFLAGS_amd64 = \
80 -O2 \
81 -Dsun \
82 -D__SVR4 \
83 -Ui386 \
84 -U__i386 \
85 -mtune=opteron \
86 -msave-args \
87 -mcmodel=kernel \
88 -fno-strict-aliasing \
89 -fno-unit-at-a-time \
90 -fno-optimize-sibling-calls \
91 -mno-red-zone \
92 -D_SYSCALL32_IMPL
94 KERNEL_CFLAGS_sparc =
95 KERNEL_CFLAGS_sparcv7 =
96 KERNEL_CFLAGS_sparcv9 =
98 KERNEL_INCLUDES = \
99 -I${SRCTOP}/usr/src/uts/common \
100 -I${SRCTOP}/arch/${CONFIG_MACH}/include \
101 -I${SRCTOP}/include
103 KERNEL_INCLUDES_i386 = \
104 -I${SRCTOP}/usr/src/uts/intel
106 KERNEL_INCLUDES_sparc =
108 KERNEL_CFLAGS = \
109 ${KERNEL_CFLAGS_ALL} \
110 ${KERNEL_CFLAGS_${BITS}} \
111 ${KERNEL_CFLAGS_${CONFIG_MACH${BITS}}} \
112 ${KERNEL_CFLAGS_${CONFIG_MACH}} \
113 ${KERNEL_INCLUDES} \
114 ${KERNEL_INCLUDES_${CONFIG_MACH}}
117 # LDFLAGS
119 KERNEL_LDFLAGS = \
123 # Programs
125 CC=/usr/gcc/7/bin/gcc
126 LD=/usr/bin/ld
127 CTFCONVERT=/opt/onbld/bin/i386/ctfconvert
128 CTFMERGE=/opt/onbld/bin/i386/ctfmerge
131 # Verbosity
133 .if ${VERBOSE:Uno} != "yes"
134 CC := @echo " CC ($${BITS}) $${.IMPSRC}";${CC}
135 LD := @echo " LD ($${BITS}) $${.TARGET}";${LD}
136 CTFCONVERT := @${CTFCONVERT}
137 .endif