]>
Commit | Line | Data |
---|---|---|
39236c6e | 1 | # -*- mode: makefile;-*- |
1c79356b | 2 | # |
fe8ab488 | 3 | # Copyright (C) 1999-2013 Apple Inc. All rights reserved. |
1c79356b | 4 | # |
39236c6e A |
5 | # MakeInc.def contains global definitions for building, |
6 | # linking, and installing files. | |
1c79356b | 7 | # |
1c79356b | 8 | |
6d2010ae | 9 | # |
39236c6e | 10 | # Architecture Configuration options |
6d2010ae | 11 | # |
fe8ab488 | 12 | SUPPORTED_ARCH_CONFIGS := X86_64 X86_64H |
6d2010ae | 13 | |
2d21ac55 | 14 | # |
1c79356b A |
15 | # Kernel Configuration options |
16 | # | |
39236c6e | 17 | SUPPORTED_KERNEL_CONFIGS = RELEASE DEVELOPMENT DEBUG PROFILE |
2d21ac55 | 18 | |
316670eb A |
19 | # |
20 | # Machine Configuration options | |
21 | # | |
39236c6e A |
22 | |
23 | SUPPORTED_X86_64_MACHINE_CONFIGS = NONE | |
fe8ab488 | 24 | SUPPORTED_X86_64H_MACHINE_CONFIGS = NONE |
6d2010ae | 25 | |
6d2010ae | 26 | |
2d21ac55 | 27 | # |
39236c6e | 28 | # Platform options |
2d21ac55 | 29 | # |
fe8ab488 | 30 | SUPPORTED_PLATFORMS = MacOSX iPhoneOS iPhoneSimulator iPhoneOSNano iPhoneNanoSimulator |
2d21ac55 | 31 | |
6d2010ae | 32 | # |
39236c6e | 33 | # Setup up *_LC variables during recursive invocations |
6d2010ae | 34 | # |
6d2010ae | 35 | |
39236c6e A |
36 | ifndef CURRENT_ARCH_CONFIG_LC |
37 | export CURRENT_ARCH_CONFIG_LC := $(shell printf "%s" "$(CURRENT_ARCH_CONFIG)" | $(TR) A-Z a-z) | |
6d2010ae A |
38 | endif |
39 | ||
39236c6e A |
40 | ifndef CURRENT_KERNEL_CONFIG_LC |
41 | export CURRENT_KERNEL_CONFIG_LC := $(shell printf "%s" "$(CURRENT_KERNEL_CONFIG)" | $(TR) A-Z a-z) | |
316670eb | 42 | endif |
6d2010ae | 43 | |
39236c6e A |
44 | ifndef CURRENT_MACHINE_CONFIG_LC |
45 | export CURRENT_MACHINE_CONFIG_LC := $(shell printf "%s" "$(CURRENT_MACHINE_CONFIG)" | $(TR) A-Z a-z) | |
6d2010ae A |
46 | endif |
47 | ||
39236c6e | 48 | |
2d21ac55 | 49 | # |
39236c6e | 50 | # Component List |
2d21ac55 | 51 | # |
39236c6e A |
52 | COMPONENT_LIST = osfmk bsd libkern iokit pexpert libsa security |
53 | COMPONENT = $(if $(word 2,$(subst /, ,$(RELATIVE_SOURCE_PATH))),$(word 2,$(subst /, ,$(RELATIVE_SOURCE_PATH))),$(firstword $(subst /, ,$(RELATIVE_SOURCE_PATH)))) | |
54 | COMPONENT_IMPORT_LIST = $(filter-out $(COMPONENT),$(COMPONENT_LIST)) | |
1c79356b | 55 | |
1c79356b | 56 | |
316670eb A |
57 | # |
58 | # Deployment target flag | |
59 | # | |
316670eb | 60 | ifeq ($(PLATFORM),MacOSX) |
39236c6e | 61 | DEPLOYMENT_TARGET_FLAGS = -mmacosx-version-min=$(SDKVERSION) |
fe8ab488 | 62 | else ifneq ($(filter iPhoneOS iPhoneOSNano,$(PLATFORM)),) |
39236c6e | 63 | DEPLOYMENT_TARGET_FLAGS = -miphoneos-version-min=$(SDKVERSION) |
fe8ab488 | 64 | else ifneq ($(filter iPhoneSimulator iPhoneNanoSimulator,$(PLATFORM)),) |
39236c6e | 65 | DEPLOYMENT_TARGET_FLAGS = |
316670eb | 66 | else |
39236c6e | 67 | DEPLOYMENT_TARGET_FLAGS = |
316670eb A |
68 | endif |
69 | ||
39236c6e | 70 | |
1c79356b A |
71 | # |
72 | # Standard defines list | |
73 | # | |
39236c6e | 74 | DEFINES = -DAPPLE -DKERNEL -DKERNEL_PRIVATE -DXNU_KERNEL_PRIVATE \ |
fe8ab488 | 75 | -DPRIVATE -D__MACHO__=1 -Dvolatile=__volatile $(CONFIG_DEFINES) \ |
39236c6e | 76 | $(SEED_DEFINES) |
1c79356b A |
77 | |
78 | # | |
79 | # Compiler command | |
80 | # | |
39236c6e A |
81 | KCC = $(CC) |
82 | KC++ = $(CXX) | |
9bccf70c | 83 | |
91447636 A |
84 | # |
85 | # Compiler warning flags | |
86 | # | |
87 | ||
88 | CWARNFLAGS_STD = \ | |
6d2010ae A |
89 | -Wall -Werror -Wno-format-y2k -Wextra -Wstrict-prototypes \ |
90 | -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual \ | |
91 | -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wchar-subscripts \ | |
fe8ab488 A |
92 | -Winline -Wnested-externs -Wredundant-decls -Wextra-tokens \ |
93 | -Wunreachable-code | |
6d2010ae | 94 | |
6d2010ae | 95 | # Can be overridden in Makefile.template or Makefile.$arch |
91447636 A |
96 | export CWARNFLAGS ?= $(CWARNFLAGS_STD) |
97 | ||
6d2010ae A |
98 | define add_perfile_cflags |
99 | $(1)_CWARNFLAGS_ADD += $2 | |
100 | endef | |
101 | ||
91447636 | 102 | CXXWARNFLAGS_STD = \ |
6d2010ae A |
103 | -Wall -Werror -Wno-format-y2k -Wextra -Wpointer-arith -Wreturn-type \ |
104 | -Wcast-qual -Wwrite-strings -Wswitch -Wcast-align -Wchar-subscripts \ | |
fe8ab488 A |
105 | -Wredundant-decls -Wextra-tokens \ |
106 | -Wunreachable-code | |
6d2010ae | 107 | |
39236c6e A |
108 | # overloaded-virtual warnings are non-fatal (9000888) |
109 | CXXWARNFLAGS_STD += -Wno-error=overloaded-virtual | |
91447636 | 110 | |
6d2010ae | 111 | # Can be overridden in Makefile.template or Makefile.$arch |
91447636 A |
112 | export CXXWARNFLAGS ?= $(CXXWARNFLAGS_STD) |
113 | ||
6d2010ae A |
114 | define add_perfile_cxxflags |
115 | $(1)_CXXWARNFLAGS_ADD += $2 | |
116 | endef | |
9bccf70c | 117 | |
2d21ac55 A |
118 | # |
119 | # Default ARCH_FLAGS, for use with compiler/linker/assembler/mig drivers | |
120 | ||
b0d623f7 | 121 | ARCH_FLAGS_X86_64 = -arch x86_64 |
fe8ab488 | 122 | ARCH_FLAGS_X86_64H = -arch x86_64h |
c910b4d9 | 123 | |
2d21ac55 | 124 | |
1c79356b A |
125 | # |
126 | # Default CFLAGS | |
127 | # | |
128 | ifdef RC_CFLAGS | |
39236c6e | 129 | OTHER_CFLAGS = $(subst $(addprefix -arch ,$(RC_ARCHS)),,$(RC_CFLAGS)) |
1c79356b A |
130 | endif |
131 | ||
39236c6e A |
132 | # |
133 | # Debug info | |
134 | # | |
39236c6e A |
135 | DSYMINFODIR = Contents |
136 | DSYMKGMACROSDIR = Contents/Resources | |
137 | DSYMLLDBMACROSDIR = Contents/Resources/Python | |
138 | DSYMDWARFDIR = Contents/Resources/DWARF | |
139 | ||
140 | DEBUG_CFLAGS := -gdwarf-2 | |
141 | BUILD_DSYM := 1 | |
2d21ac55 A |
142 | |
143 | # | |
144 | # We must not use -fno-keep-inline-functions, or it will remove the dtrace | |
145 | # probes from the kernel. | |
146 | # | |
39236c6e | 147 | CFLAGS_GEN = $(DEBUG_CFLAGS) -nostdinc \ |
316670eb A |
148 | -freorder-blocks -fno-builtin -fno-common \ |
149 | -fsigned-bitfields $(OTHER_CFLAGS) | |
1c79356b | 150 | |
39236c6e A |
151 | CFLAGS_RELEASE = |
152 | CFLAGS_DEVELOPMENT = | |
153 | CFLAGS_DEBUG = | |
154 | CFLAGS_PROFILE = -pg | |
1c79356b | 155 | |
39236c6e | 156 | CFLAGS_X86_64 = -Dx86_64 -DX86_64 -D__X86_64__ -DLP64 \ |
fe8ab488 A |
157 | -DPAGE_SIZE_FIXED -mkernel -msoft-float |
158 | ||
159 | CFLAGS_X86_64H = $(CFLAGS_X86_64) | |
316670eb | 160 | |
2d21ac55 | 161 | |
39236c6e A |
162 | CFLAGS_RELEASEX86_64 = -O2 |
163 | CFLAGS_DEVELOPMENTX86_64 = -O2 | |
b0d623f7 | 164 | # No space optimization for the DEBUG kernel for the benefit of gdb: |
39236c6e A |
165 | CFLAGS_DEBUGX86_64 = -O0 |
166 | CFLAGS_PROFILEX86_64 = -O2 | |
167 | ||
fe8ab488 A |
168 | CFLAGS_RELEASEX86_64H = -O2 |
169 | CFLAGS_DEVELOPMENTX86_64H = -O2 | |
170 | # No space optimization for the DEBUG kernel for the benefit of gdb: | |
171 | CFLAGS_DEBUGX86_64H = -O0 | |
172 | CFLAGS_PROFILEX86_64H = -O2 | |
173 | ||
39236c6e A |
174 | CFLAGS_RELEASEARM = -O2 |
175 | CFLAGS_DEVELOPMENTARM = -O2 | |
176 | CFLAGS_DEBUGARM = -O0 | |
177 | CFLAGS_PROFILEARM = -O2 | |
178 | ||
fe8ab488 | 179 | |
39236c6e A |
180 | CFLAGS = $(CFLAGS_GEN) \ |
181 | $($(addsuffix $(CURRENT_MACHINE_CONFIG),MACHINE_FLAGS_$(CURRENT_ARCH_CONFIG)_)) \ | |
182 | $($(addsuffix $(CURRENT_ARCH_CONFIG),ARCH_FLAGS_)) \ | |
183 | $($(addsuffix $(CURRENT_ARCH_CONFIG),CFLAGS_)) \ | |
184 | $($(addsuffix $(CURRENT_KERNEL_CONFIG),CFLAGS_)) \ | |
185 | $($(addsuffix $(CURRENT_ARCH_CONFIG), $(addsuffix $(CURRENT_KERNEL_CONFIG),CFLAGS_))) \ | |
316670eb | 186 | $(DEPLOYMENT_TARGET_FLAGS) \ |
1c79356b A |
187 | $(DEFINES) |
188 | ||
6d2010ae | 189 | # |
55e303ae | 190 | # Default C++ flags |
1c79356b | 191 | # |
6d2010ae A |
192 | |
193 | OTHER_CXXFLAGS = | |
316670eb A |
194 | |
195 | CXXFLAGS_GEN = -fapple-kext $(OTHER_CXXFLAGS) | |
1c79356b | 196 | |
39236c6e A |
197 | # For the moment, do not use gnu++11 |
198 | #CXXFLAGS_ARM = -std=gnu++11 | |
199 | ||
fe8ab488 | 200 | |
55e303ae | 201 | CXXFLAGS = $(CXXFLAGS_GEN) \ |
39236c6e A |
202 | $($(addsuffix $(CURRENT_ARCH_CONFIG),CXXFLAGS_)) \ |
203 | $($(addsuffix $(CURRENT_KERNEL_CONFIG),CXXFLAGS_)) | |
204 | ||
1c79356b A |
205 | |
206 | # | |
207 | # Assembler command | |
208 | # | |
0c530ab8 A |
209 | AS = $(CC) |
210 | S_KCC = $(CC) | |
1c79356b A |
211 | |
212 | # | |
213 | # Default SFLAGS | |
214 | # | |
fe8ab488 | 215 | SFLAGS_GEN = -D__ASSEMBLER__ -DASSEMBLER $(OTHER_CFLAGS) |
1c79356b | 216 | |
39236c6e A |
217 | SFLAGS_RELEASE = |
218 | SFLAGS_DEVELOPMENT = | |
219 | SFLAGS_DEBUG = | |
220 | SFLAGS_PROFILE = | |
1c79356b | 221 | |
39236c6e | 222 | SFLAGS_X86_64 = $(CFLAGS_X86_64) |
fe8ab488 | 223 | SFLAGS_X86_64H = $(CFLAGS_X86_64H) |
1c79356b | 224 | |
39236c6e A |
225 | SFLAGS = $(SFLAGS_GEN) \ |
226 | $($(addsuffix $(CURRENT_MACHINE_CONFIG),MACHINE_FLAGS_$(CURRENT_ARCH_CONFIG)_)) \ | |
227 | $($(addsuffix $(CURRENT_ARCH_CONFIG),ARCH_FLAGS_)) \ | |
228 | $($(addsuffix $(CURRENT_ARCH_CONFIG),SFLAGS_)) \ | |
229 | $($(addsuffix $(CURRENT_KERNEL_CONFIG),SFLAGS_)) \ | |
316670eb | 230 | $(DEPLOYMENT_TARGET_FLAGS) \ |
1c79356b A |
231 | $(DEFINES) |
232 | ||
233 | # | |
234 | # Linker command | |
235 | # | |
0c530ab8 | 236 | LD = $(KC++) -nostdlib |
1c79356b A |
237 | |
238 | # | |
239 | # Default LDFLAGS | |
240 | # | |
39236c6e A |
241 | # Availability of DWARF allows DTrace CTF (compressed type format) to be constructed. |
242 | # ctf_insert creates the CTF section. It needs reserved padding in the | |
243 | # headers for the load command segment and the CTF section structures. | |
244 | # | |
245 | LDFLAGS_KERNEL_GEN = \ | |
6d2010ae | 246 | -nostdlib \ |
0c530ab8 | 247 | -fapple-kext \ |
0c530ab8 | 248 | -Wl,-e,__start \ |
0c530ab8 A |
249 | -Wl,-sectalign,__TEXT,__text,0x1000 \ |
250 | -Wl,-sectalign,__DATA,__common,0x1000 \ | |
251 | -Wl,-sectalign,__DATA,__bss,0x1000 \ | |
b0d623f7 A |
252 | -Wl,-sectcreate,__PRELINK_TEXT,__text,/dev/null \ |
253 | -Wl,-sectcreate,__PRELINK_STATE,__kernel,/dev/null \ | |
254 | -Wl,-sectcreate,__PRELINK_STATE,__kexts,/dev/null \ | |
316670eb A |
255 | -Wl,-sectcreate,__PRELINK_INFO,__info,/dev/null \ |
256 | -Wl,-new_linker \ | |
257 | -Wl,-pagezero_size,0x0 \ | |
258 | -Wl,-version_load_command \ | |
39236c6e A |
259 | -Wl,-function_starts \ |
260 | -Wl,-headerpad,152 | |
b0d623f7 | 261 | |
39236c6e A |
262 | LDFLAGS_KERNEL_RELEASE = |
263 | LDFLAGS_KERNEL_DEVELOPMENT = | |
264 | LDFLAGS_KERNEL_DEBUG = | |
265 | LDFLAGS_KERNEL_PROFILE = | |
b0d623f7 | 266 | |
316670eb A |
267 | # KASLR static slide config: |
268 | ifndef SLIDE | |
269 | SLIDE=0x00 | |
270 | endif | |
39236c6e A |
271 | KERNEL_MIN_ADDRESS = 0xffffff8000000000 |
272 | KERNEL_BASE_OFFSET = 0x100000 | |
273 | KERNEL_STATIC_SLIDE = $(shell printf "0x%016x" \ | |
274 | $$[ $(SLIDE) << 21 ]) | |
275 | KERNEL_STATIC_BASE = $(shell printf "0x%016x" \ | |
276 | $$[ $(KERNEL_MIN_ADDRESS) + $(KERNEL_BASE_OFFSET) ]) | |
277 | KERNEL_HIB_SECTION_BASE = $(shell printf "0x%016x" \ | |
278 | $$[ $(KERNEL_STATIC_BASE) + $(KERNEL_STATIC_SLIDE) ]) | |
279 | KERNEL_TEXT_BASE = $(shell printf "0x%016x" \ | |
280 | $$[ $(KERNEL_HIB_SECTION_BASE) + 0x100000 ]) | |
281 | ||
282 | LDFLAGS_KERNEL_RELEASEX86_64 = \ | |
316670eb A |
283 | -Wl,-pie \ |
284 | -Wl,-segaddr,__HIB,$(KERNEL_HIB_SECTION_BASE) \ | |
285 | -Wl,-image_base,$(KERNEL_TEXT_BASE) \ | |
286 | -Wl,-seg_page_size,__TEXT,0x200000 \ | |
287 | -Wl,-sectalign,__DATA,__const,0x1000 \ | |
288 | -Wl,-sectalign,__DATA,__sysctl_set,0x1000 \ | |
289 | -Wl,-sectalign,__HIB,__bootPT,0x1000 \ | |
290 | -Wl,-sectalign,__HIB,__desc,0x1000 \ | |
291 | -Wl,-sectalign,__HIB,__data,0x1000 \ | |
292 | -Wl,-sectalign,__HIB,__text,0x1000 \ | |
293 | -Wl,-sectalign,__HIB,__const,0x1000 \ | |
294 | -Wl,-sectalign,__HIB,__bss,0x1000 \ | |
295 | -Wl,-sectalign,__HIB,__common,0x1000 \ | |
39236c6e | 296 | $(LDFLAGS_NOSTRIP_FLAG) |
316670eb A |
297 | |
298 | # Define KERNEL_BASE_OFFSET so known at compile time: | |
39236c6e | 299 | CFLAGS_X86_64 += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET) |
fe8ab488 | 300 | CFLAGS_X86_64H += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET) |
2d21ac55 | 301 | |
39236c6e A |
302 | LDFLAGS_KERNEL_DEBUGX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64) |
303 | LDFLAGS_KERNEL_DEVELOPMENTX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64) | |
304 | LDFLAGS_KERNEL_PROFILEX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64) | |
d1ecb069 | 305 | |
fe8ab488 A |
306 | LDFLAGS_KERNEL_RELEASEX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64) |
307 | LDFLAGS_KERNEL_DEBUGX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H) | |
308 | LDFLAGS_KERNEL_DEVELOPMENTX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H) | |
309 | LDFLAGS_KERNEL_PROFILEX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H) | |
310 | ||
d1ecb069 | 311 | |
39236c6e A |
312 | LDFLAGS_KERNEL = $(LDFLAGS_KERNEL_GEN) \ |
313 | $($(addsuffix $(CURRENT_ARCH_CONFIG),ARCH_FLAGS_)) \ | |
314 | $($(addsuffix $(CURRENT_ARCH_CONFIG),LDFLAGS_KERNEL_)) \ | |
315 | $($(addsuffix $(CURRENT_KERNEL_CONFIG),LDFLAGS_KERNEL_)) \ | |
316 | $($(addsuffix $(CURRENT_ARCH_CONFIG), $(addsuffix $(CURRENT_KERNEL_CONFIG),LDFLAGS_KERNEL_))) \ | |
316670eb | 317 | $(DEPLOYMENT_TARGET_FLAGS) |
1c79356b A |
318 | |
319 | # | |
320 | # Default runtime libraries to be linked with the kernel | |
321 | # | |
39236c6e | 322 | LD_KERNEL_LIBS = -lcc_kext |
1c79356b | 323 | |
39236c6e A |
324 | # |
325 | # DTrace support | |
326 | # | |
327 | ifeq ($(CURRENT_KERNEL_CONFIG),RELEASE) | |
328 | ifneq ($(filter ARM%,$(CURRENT_ARCH_CONFIG)),) | |
329 | DO_CTFCONVERT = 0 | |
330 | DO_CTFMERGE = 0 | |
331 | DO_CTFMACHO = 0 | |
332 | else | |
333 | DO_CTFCONVERT = $(SUPPORTS_CTFCONVERT) | |
334 | DO_CTFMERGE = 1 | |
335 | DO_CTFMACHO = $(NEEDS_CTF_MACHOS) | |
336 | endif | |
337 | else | |
338 | DO_CTFCONVERT = $(SUPPORTS_CTFCONVERT) | |
339 | DO_CTFMERGE = 1 | |
340 | DO_CTFMACHO = $(NEEDS_CTF_MACHOS) | |
341 | endif | |
b0d623f7 | 342 | |
1c79356b A |
343 | # |
344 | # Default INCFLAGS | |
345 | # | |
39236c6e A |
346 | INCFLAGS_IMPORT = $(patsubst %, -I$(OBJROOT)/EXPORT_HDRS/%, $(COMPONENT_IMPORT_LIST)) |
347 | INCFLAGS_EXTERN = -I$(SRCROOT)/EXTERNAL_HEADERS | |
348 | INCFLAGS_GEN = -I$(SRCROOT)/$(COMPONENT) -I$(OBJROOT)/EXPORT_HDRS/$(COMPONENT) | |
349 | INCFLAGS_LOCAL = -I. | |
1c79356b | 350 | |
39236c6e | 351 | INCFLAGS = $(INCFLAGS_LOCAL) $(INCFLAGS_GEN) $(INCFLAGS_IMPORT) $(INCFLAGS_EXTERN) $(INCFLAGS_MAKEFILE) |
1c79356b A |
352 | |
353 | # | |
354 | # Default MIGFLAGS | |
355 | # | |
fe8ab488 | 356 | MIGFLAGS = $(DEFINES) $(INCFLAGS) -novouchers $($(addsuffix $(CURRENT_ARCH_CONFIG),CFLAGS_)) $($(addsuffix $(CURRENT_ARCH_CONFIG),ARCH_FLAGS_)) \ |
39236c6e | 357 | $(DEPLOYMENT_TARGET_FLAGS) |
316670eb A |
358 | |
359 | # | |
360 | # Support for LLVM Link Time Optimization (LTO) | |
361 | # | |
fe8ab488 A |
362 | # LTO can be explicitly enabled or disabled with BUILD_LTO=1|0 |
363 | # and defaults to enabled except for DEBUG kernels | |
364 | # | |
39236c6e A |
365 | # CFLAGS_NOLTO_FLAG is needed on a per-file basis (for files |
366 | # that deal poorly with LTO, or files that must be machine | |
367 | # code *.o files for xnu to build (i.e, setsegname runs on | |
368 | # them). | |
369 | # | |
370 | # LDFLAGS_NOSTRIP_FLAG is used to support configurations that | |
371 | # do not utilize an export list. For these configs to build, | |
372 | # we need to prevent the LTO logic from dead stripping them. | |
316670eb | 373 | |
fe8ab488 A |
374 | LTO_ENABLED_RELEASE = 1 |
375 | LTO_ENABLED_DEVELOPMENT = 1 | |
376 | LTO_ENABLED_DEBUG = 0 | |
377 | ||
378 | ifneq ($(BUILD_LTO),) | |
379 | USE_LTO = $(BUILD_LTO) | |
380 | else | |
381 | USE_LTO = $(LTO_ENABLED_$(CURRENT_KERNEL_CONFIG)) | |
382 | endif | |
383 | ||
384 | ifeq ($(USE_LTO),1) | |
39236c6e A |
385 | CFLAGS_GEN += -flto |
386 | CXXFLAGS_GEN += -flto | |
fe8ab488 | 387 | LDFLAGS_KERNEL_GEN += -Wl,-mllvm,-inline-threshold=125 -Wl,-object_path_lto,$(TARGET)/lto.o # -Wl,-mllvm -Wl,-disable-fp-elim |
39236c6e A |
388 | LDFLAGS_NOSTRIP_FLAG = -rdynamic |
389 | CFLAGS_NOLTO_FLAG = -fno-lto | |
390 | SUPPORTS_CTFCONVERT = 0 | |
391 | NEEDS_CTF_MACHOS = 1 | |
316670eb | 392 | else |
39236c6e A |
393 | LDFLAGS_NOSTRIP_FLAG = |
394 | CFLAGS_NOLTO_FLAG = | |
395 | SUPPORTS_CTFCONVERT = 1 | |
396 | NEEDS_CTF_MACHOS = 0 | |
316670eb | 397 | endif |
1c79356b A |
398 | |
399 | # | |
400 | # Default VPATH | |
401 | # | |
39236c6e | 402 | export VPATH = .:$(SOURCE) |
1c79356b A |
403 | |
404 | # | |
2d21ac55 | 405 | # Macros that control installation of kernel and its header files |
1c79356b A |
406 | # |
407 | # install flags for header files | |
408 | # | |
39236c6e A |
409 | INSTALL_FLAGS = -c -S -m 0444 |
410 | DATA_INSTALL_FLAGS = -c -S -m 0644 | |
411 | EXEC_INSTALL_FLAGS = -c -S -m 0755 | |
1c79356b A |
412 | |
413 | # | |
414 | # Header file destinations | |
415 | # | |
6d2010ae | 416 | ifeq ($(RC_ProjectName),xnu_headers_Sim) |
fe8ab488 A |
417 | include $(MAKEFILEPATH)/../AppleInternal/Makefiles/Makefile.indigo_prefix |
418 | HEADER_INSTALL_PREFIX = $(INDIGO_PREFIX) | |
6d2010ae A |
419 | else |
420 | HEADER_INSTALL_PREFIX = | |
421 | endif | |
422 | ||
423 | FRAMEDIR = $(HEADER_INSTALL_PREFIX)/System/Library/Frameworks | |
424 | ||
425 | SINCVERS = B | |
426 | SINCFRAME = $(FRAMEDIR)/System.framework | |
427 | SINCDIR = $(SINCFRAME)/Versions/$(SINCVERS)/Headers | |
428 | SPINCDIR = $(SINCFRAME)/Versions/$(SINCVERS)/PrivateHeaders | |
429 | SRESDIR = $(SINCFRAME)/Versions/$(SINCVERS)/Resources | |
430 | ||
1c79356b | 431 | ifndef INCDIR |
6d2010ae | 432 | INCDIR = $(HEADER_INSTALL_PREFIX)/usr/include |
1c79356b A |
433 | endif |
434 | ifndef LCLDIR | |
6d2010ae | 435 | LCLDIR = $(SPINCDIR) |
1c79356b A |
436 | endif |
437 | ||
438 | KINCVERS = A | |
439 | KINCFRAME = $(FRAMEDIR)/Kernel.framework | |
440 | KINCDIR = $(KINCFRAME)/Versions/$(KINCVERS)/Headers | |
0b4e3aa0 | 441 | KPINCDIR = $(KINCFRAME)/Versions/$(KINCVERS)/PrivateHeaders |
91447636 A |
442 | KRESDIR = $(KINCFRAME)/Versions/$(KINCVERS)/Resources |
443 | ||
444 | XNU_PRIVATE_UNIFDEF = -UMACH_KERNEL_PRIVATE -UBSD_KERNEL_PRIVATE -UIOKIT_KERNEL_PRIVATE -ULIBKERN_KERNEL_PRIVATE -ULIBSA_KERNEL_PRIVATE -UPEXPERT_KERNEL_PRIVATE -UXNU_KERNEL_PRIVATE | |
445 | ||
6d2010ae | 446 | |
39236c6e A |
447 | PLATFORM_UNIFDEF = $(foreach x,$(SUPPORTED_PLATFORMS),$(if $(filter $(PLATFORM),$(x)),-DPLATFORM_$(x) $(foreach token,$(PLATFORM_UNIFDEF_BLACKLIST_TOKENS_$(x)),-U$(token)),-UPLATFORM_$(x))) |
448 | ||
449 | SPINCFRAME_UNIFDEF = $(PLATFORM_UNIFDEF) $(XNU_PRIVATE_UNIFDEF) $(SEED_DEFINES) -UKERNEL_PRIVATE -UKERNEL -DPRIVATE -U_OPEN_SOURCE_ -U__OPEN_SOURCE__ | |
450 | SINCFRAME_UNIFDEF = $(PLATFORM_UNIFDEF) $(XNU_PRIVATE_UNIFDEF) $(SEED_DEFINES) -UKERNEL_PRIVATE -UKERNEL -UPRIVATE -D_OPEN_SOURCE_ -D__OPEN_SOURCE__ | |
451 | KPINCFRAME_UNIFDEF = $(PLATFORM_UNIFDEF) $(XNU_PRIVATE_UNIFDEF) $(SEED_DEFINES) -DKERNEL_PRIVATE -DPRIVATE -DKERNEL -U_OPEN_SOURCE_ -U__OPEN_SOURCE__ | |
452 | KINCFRAME_UNIFDEF = $(PLATFORM_UNIFDEF) $(XNU_PRIVATE_UNIFDEF) $(SEED_DEFINES) -UKERNEL_PRIVATE -UPRIVATE -DKERNEL -D_OPEN_SOURCE_ -D__OPEN_SOURCE__ | |
1c79356b A |
453 | |
454 | # | |
39236c6e | 455 | # Compononent Header file destinations |
1c79356b A |
456 | # |
457 | EXPDIR = EXPORT_HDRS/$(COMPONENT) | |
458 | ||
459 | # | |
460 | # Strip Flags | |
461 | # | |
39236c6e | 462 | STRIP_FLAGS_RELEASE = -S -x |
fe8ab488 | 463 | STRIP_FLAGS_DEVELOPMENT = -S |
39236c6e A |
464 | STRIP_FLAGS_DEBUG = -S |
465 | STRIP_FLAGS_PROFILE = -S -x | |
1c79356b | 466 | |
39236c6e | 467 | STRIP_FLAGS = $($(addsuffix $(CURRENT_KERNEL_CONFIG),STRIP_FLAGS_)) |
1c79356b | 468 | |
2d21ac55 A |
469 | # |
470 | # dsymutil flags | |
471 | # | |
fe8ab488 | 472 | DSYMUTIL_FLAGS_GEN = --minimize |
2d21ac55 | 473 | |
fe8ab488 A |
474 | DSYMUTIL_FLAGS_X86_64 = --arch=x86_64 |
475 | DSYMUTIL_FLAGS_X86_64H = --arch=x86_64h | |
476 | ||
477 | DSYMUTIL_FLAGS = $(DSYMUTIL_FLAGS_GEN) \ | |
478 | $($(addsuffix $(CURRENT_ARCH_CONFIG),DSYMUTIL_FLAGS_)) | |
2d21ac55 | 479 | |
9bccf70c A |
480 | # |
481 | # Man Page destination | |
482 | # | |
39236c6e | 483 | MANDIR = /usr/share/man |
9bccf70c | 484 | |
b0d623f7 A |
485 | # |
486 | # DEBUG alias location | |
487 | # | |
39236c6e | 488 | DEVELOPER_EXTRAS_DIR = /AppleInternal/CoreOS/xnu_debug |
2d21ac55 | 489 | |
1c79356b | 490 | # |
39236c6e | 491 | # mach_kernel install location |
1c79356b | 492 | # |
39236c6e | 493 | INSTALL_KERNEL_DIR = / |
1c79356b | 494 | |
fe8ab488 A |
495 | # |
496 | # new OS X install location | |
497 | # | |
498 | SYSTEM_LIBRARY_KERNELS_DIR = /System/Library/Kernels | |
499 | ||
500 | # | |
501 | # File names in DSTROOT | |
502 | # | |
503 | ||
504 | ifeq ($(PLATFORM),MacOSX) | |
505 | KERNEL_FILE_NAME_PREFIX = kernel | |
506 | else | |
507 | KERNEL_FILE_NAME_PREFIX = mach | |
508 | endif | |
509 | ||
510 | ifeq ($(CURRENT_MACHINE_CONFIG),NONE) | |
511 | ifeq ($(CURRENT_KERNEL_CONFIG),RELEASE) | |
512 | KERNEL_FILE_NAME = $(KERNEL_FILE_NAME_PREFIX) | |
513 | KERNEL_LLDBBOOTSTRAP_NAME = $(KERNEL_FILE_NAME_PREFIX).py | |
514 | else | |
515 | KERNEL_FILE_NAME = $(KERNEL_FILE_NAME_PREFIX).$(CURRENT_KERNEL_CONFIG_LC) | |
516 | KERNEL_LLDBBOOTSTRAP_NAME = $(KERNEL_FILE_NAME_PREFIX).py | |
517 | endif | |
518 | else | |
519 | KERNEL_FILE_NAME = $(KERNEL_FILE_NAME_PREFIX).$(CURRENT_KERNEL_CONFIG_LC).$(CURRENT_MACHINE_CONFIG_LC) | |
520 | KERNEL_LLDBBOOTSTRAP_NAME = $(KERNEL_FILE_NAME_PREFIX)_$(CURRENT_KERNEL_CONFIG_LC).py | |
521 | endif | |
522 | ||
39236c6e A |
523 | # |
524 | # System.kext pseudo-kext install location | |
525 | # | |
526 | INSTALL_EXTENSIONS_DIR = /System/Library/Extensions | |
527 | ||
528 | # | |
fe8ab488 | 529 | # KDK location |
39236c6e A |
530 | # |
531 | INSTALL_KERNEL_SYM_DIR = /System/Library/Extensions/KDK | |
532 | ||
533 | # | |
534 | # Misc. Etc. | |
535 | # | |
536 | INSTALL_SHARE_MISC_DIR = /usr/share/misc | |
537 | INSTALL_DTRACE_SCRIPTS_DIR = /usr/lib/dtrace | |
538 | ||
539 | # | |
540 | # Overrides for XBS build aliases | |
541 | # | |
542 | ifeq ($(RC_ProjectName),xnu_debug) | |
543 | INSTALL_KERNEL_DIR := $(DEVELOPER_EXTRAS_DIR) | |
fe8ab488 A |
544 | INSTALL_KERNEL_SYM_DIR := $(DEVELOPER_EXTRAS_DIR) |
545 | INSTALL_KERNEL_SYM_TO_KDK = 1 | |
39236c6e | 546 | INSTALL_XNU_DEBUG_FILES = 1 |
fe8ab488 | 547 | else ifneq ($(filter iPhoneOS iPhoneOSNano,$(PLATFORM)),) |
39236c6e A |
548 | INSTALL_KERNEL_SYM_TO_KDK = 1 |
549 | USE_BINARY_PLIST = 1 | |
fe8ab488 | 550 | else ifneq ($(filter iPhoneSimulator iPhoneNanoSimulator,$(PLATFORM)),) |
39236c6e | 551 | USE_BINARY_PLIST = 1 |
fe8ab488 A |
552 | else ifeq ($(PLATFORM),MacOSX) |
553 | INSTALL_KERNEL_DIR := $(SYSTEM_LIBRARY_KERNELS_DIR) | |
554 | INSTALL_KERNEL_SYM_DIR := $(SYSTEM_LIBRARY_KERNELS_DIR) | |
555 | INSTALL_KERNEL_SYM_TO_KDK = $(if $(filter YES,$(DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT)),1,0) | |
39236c6e | 556 | endif |
1c79356b | 557 | |
2d21ac55 | 558 | # vim: set ft=make: |