]> git.saurik.com Git - apple/xnu.git/blame - makedefs/MakeInc.def
xnu-2782.30.5.tar.gz
[apple/xnu.git] / makedefs / MakeInc.def
CommitLineData
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 12SUPPORTED_ARCH_CONFIGS := X86_64 X86_64H
6d2010ae 13
2d21ac55 14#
1c79356b
A
15# Kernel Configuration options
16#
39236c6e 17SUPPORTED_KERNEL_CONFIGS = RELEASE DEVELOPMENT DEBUG PROFILE
2d21ac55 18
316670eb
A
19#
20# Machine Configuration options
21#
39236c6e
A
22
23SUPPORTED_X86_64_MACHINE_CONFIGS = NONE
fe8ab488 24SUPPORTED_X86_64H_MACHINE_CONFIGS = NONE
6d2010ae 25
6d2010ae 26
2d21ac55 27#
39236c6e 28# Platform options
2d21ac55 29#
fe8ab488 30SUPPORTED_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
36ifndef CURRENT_ARCH_CONFIG_LC
37 export CURRENT_ARCH_CONFIG_LC := $(shell printf "%s" "$(CURRENT_ARCH_CONFIG)" | $(TR) A-Z a-z)
6d2010ae
A
38endif
39
39236c6e
A
40ifndef CURRENT_KERNEL_CONFIG_LC
41 export CURRENT_KERNEL_CONFIG_LC := $(shell printf "%s" "$(CURRENT_KERNEL_CONFIG)" | $(TR) A-Z a-z)
316670eb 42endif
6d2010ae 43
39236c6e
A
44ifndef CURRENT_MACHINE_CONFIG_LC
45 export CURRENT_MACHINE_CONFIG_LC := $(shell printf "%s" "$(CURRENT_MACHINE_CONFIG)" | $(TR) A-Z a-z)
6d2010ae
A
46endif
47
39236c6e 48
2d21ac55 49#
39236c6e 50# Component List
2d21ac55 51#
39236c6e
A
52COMPONENT_LIST = osfmk bsd libkern iokit pexpert libsa security
53COMPONENT = $(if $(word 2,$(subst /, ,$(RELATIVE_SOURCE_PATH))),$(word 2,$(subst /, ,$(RELATIVE_SOURCE_PATH))),$(firstword $(subst /, ,$(RELATIVE_SOURCE_PATH))))
54COMPONENT_IMPORT_LIST = $(filter-out $(COMPONENT),$(COMPONENT_LIST))
1c79356b 55
1c79356b 56
316670eb
A
57#
58# Deployment target flag
59#
316670eb 60ifeq ($(PLATFORM),MacOSX)
39236c6e 61 DEPLOYMENT_TARGET_FLAGS = -mmacosx-version-min=$(SDKVERSION)
fe8ab488 62else ifneq ($(filter iPhoneOS iPhoneOSNano,$(PLATFORM)),)
39236c6e 63 DEPLOYMENT_TARGET_FLAGS = -miphoneos-version-min=$(SDKVERSION)
fe8ab488 64else ifneq ($(filter iPhoneSimulator iPhoneNanoSimulator,$(PLATFORM)),)
39236c6e 65 DEPLOYMENT_TARGET_FLAGS =
316670eb 66else
39236c6e 67 DEPLOYMENT_TARGET_FLAGS =
316670eb
A
68endif
69
39236c6e 70
1c79356b
A
71#
72# Standard defines list
73#
39236c6e 74DEFINES = -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
81KCC = $(CC)
82KC++ = $(CXX)
9bccf70c 83
91447636
A
84#
85# Compiler warning flags
86#
87
88CWARNFLAGS_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
96export CWARNFLAGS ?= $(CWARNFLAGS_STD)
97
6d2010ae
A
98define add_perfile_cflags
99$(1)_CWARNFLAGS_ADD += $2
100endef
101
91447636 102CXXWARNFLAGS_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)
109CXXWARNFLAGS_STD += -Wno-error=overloaded-virtual
91447636 110
6d2010ae 111# Can be overridden in Makefile.template or Makefile.$arch
91447636
A
112export CXXWARNFLAGS ?= $(CXXWARNFLAGS_STD)
113
6d2010ae
A
114define add_perfile_cxxflags
115$(1)_CXXWARNFLAGS_ADD += $2
116endef
9bccf70c 117
2d21ac55
A
118#
119# Default ARCH_FLAGS, for use with compiler/linker/assembler/mig drivers
120
b0d623f7 121ARCH_FLAGS_X86_64 = -arch x86_64
fe8ab488 122ARCH_FLAGS_X86_64H = -arch x86_64h
c910b4d9 123
2d21ac55 124
1c79356b
A
125#
126# Default CFLAGS
127#
128ifdef RC_CFLAGS
39236c6e 129OTHER_CFLAGS = $(subst $(addprefix -arch ,$(RC_ARCHS)),,$(RC_CFLAGS))
1c79356b
A
130endif
131
39236c6e
A
132#
133# Debug info
134#
39236c6e
A
135DSYMINFODIR = Contents
136DSYMKGMACROSDIR = Contents/Resources
137DSYMLLDBMACROSDIR = Contents/Resources/Python
138DSYMDWARFDIR = Contents/Resources/DWARF
139
140DEBUG_CFLAGS := -gdwarf-2
141BUILD_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 147CFLAGS_GEN = $(DEBUG_CFLAGS) -nostdinc \
316670eb
A
148 -freorder-blocks -fno-builtin -fno-common \
149 -fsigned-bitfields $(OTHER_CFLAGS)
1c79356b 150
39236c6e
A
151CFLAGS_RELEASE =
152CFLAGS_DEVELOPMENT =
153CFLAGS_DEBUG =
154CFLAGS_PROFILE = -pg
1c79356b 155
39236c6e 156CFLAGS_X86_64 = -Dx86_64 -DX86_64 -D__X86_64__ -DLP64 \
fe8ab488
A
157 -DPAGE_SIZE_FIXED -mkernel -msoft-float
158
159CFLAGS_X86_64H = $(CFLAGS_X86_64)
316670eb 160
2d21ac55 161
39236c6e
A
162CFLAGS_RELEASEX86_64 = -O2
163CFLAGS_DEVELOPMENTX86_64 = -O2
b0d623f7 164# No space optimization for the DEBUG kernel for the benefit of gdb:
39236c6e
A
165CFLAGS_DEBUGX86_64 = -O0
166CFLAGS_PROFILEX86_64 = -O2
167
fe8ab488
A
168CFLAGS_RELEASEX86_64H = -O2
169CFLAGS_DEVELOPMENTX86_64H = -O2
170# No space optimization for the DEBUG kernel for the benefit of gdb:
171CFLAGS_DEBUGX86_64H = -O0
172CFLAGS_PROFILEX86_64H = -O2
173
39236c6e
A
174CFLAGS_RELEASEARM = -O2
175CFLAGS_DEVELOPMENTARM = -O2
176CFLAGS_DEBUGARM = -O0
177CFLAGS_PROFILEARM = -O2
178
fe8ab488 179
39236c6e
A
180CFLAGS = $(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
193OTHER_CXXFLAGS =
316670eb
A
194
195CXXFLAGS_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 201CXXFLAGS = $(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
209AS = $(CC)
210S_KCC = $(CC)
1c79356b
A
211
212#
213# Default SFLAGS
214#
fe8ab488 215SFLAGS_GEN = -D__ASSEMBLER__ -DASSEMBLER $(OTHER_CFLAGS)
1c79356b 216
39236c6e
A
217SFLAGS_RELEASE =
218SFLAGS_DEVELOPMENT =
219SFLAGS_DEBUG =
220SFLAGS_PROFILE =
1c79356b 221
39236c6e 222SFLAGS_X86_64 = $(CFLAGS_X86_64)
fe8ab488 223SFLAGS_X86_64H = $(CFLAGS_X86_64H)
1c79356b 224
39236c6e
A
225SFLAGS = $(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 236LD = $(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#
245LDFLAGS_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
262LDFLAGS_KERNEL_RELEASE =
263LDFLAGS_KERNEL_DEVELOPMENT =
264LDFLAGS_KERNEL_DEBUG =
265LDFLAGS_KERNEL_PROFILE =
b0d623f7 266
316670eb
A
267# KASLR static slide config:
268ifndef SLIDE
269SLIDE=0x00
270endif
39236c6e
A
271KERNEL_MIN_ADDRESS = 0xffffff8000000000
272KERNEL_BASE_OFFSET = 0x100000
273KERNEL_STATIC_SLIDE = $(shell printf "0x%016x" \
274 $$[ $(SLIDE) << 21 ])
275KERNEL_STATIC_BASE = $(shell printf "0x%016x" \
276 $$[ $(KERNEL_MIN_ADDRESS) + $(KERNEL_BASE_OFFSET) ])
277KERNEL_HIB_SECTION_BASE = $(shell printf "0x%016x" \
278 $$[ $(KERNEL_STATIC_BASE) + $(KERNEL_STATIC_SLIDE) ])
279KERNEL_TEXT_BASE = $(shell printf "0x%016x" \
280 $$[ $(KERNEL_HIB_SECTION_BASE) + 0x100000 ])
281
282LDFLAGS_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 299CFLAGS_X86_64 += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET)
fe8ab488 300CFLAGS_X86_64H += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET)
2d21ac55 301
39236c6e
A
302LDFLAGS_KERNEL_DEBUGX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64)
303LDFLAGS_KERNEL_DEVELOPMENTX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64)
304LDFLAGS_KERNEL_PROFILEX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64)
d1ecb069 305
fe8ab488
A
306LDFLAGS_KERNEL_RELEASEX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64)
307LDFLAGS_KERNEL_DEBUGX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H)
308LDFLAGS_KERNEL_DEVELOPMENTX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H)
309LDFLAGS_KERNEL_PROFILEX86_64H = $(LDFLAGS_KERNEL_RELEASEX86_64H)
310
d1ecb069 311
39236c6e
A
312LDFLAGS_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 322LD_KERNEL_LIBS = -lcc_kext
1c79356b 323
39236c6e
A
324#
325# DTrace support
326#
327ifeq ($(CURRENT_KERNEL_CONFIG),RELEASE)
328ifneq ($(filter ARM%,$(CURRENT_ARCH_CONFIG)),)
329DO_CTFCONVERT = 0
330DO_CTFMERGE = 0
331DO_CTFMACHO = 0
332else
333DO_CTFCONVERT = $(SUPPORTS_CTFCONVERT)
334DO_CTFMERGE = 1
335DO_CTFMACHO = $(NEEDS_CTF_MACHOS)
336endif
337else
338DO_CTFCONVERT = $(SUPPORTS_CTFCONVERT)
339DO_CTFMERGE = 1
340DO_CTFMACHO = $(NEEDS_CTF_MACHOS)
341endif
b0d623f7 342
1c79356b
A
343#
344# Default INCFLAGS
345#
39236c6e
A
346INCFLAGS_IMPORT = $(patsubst %, -I$(OBJROOT)/EXPORT_HDRS/%, $(COMPONENT_IMPORT_LIST))
347INCFLAGS_EXTERN = -I$(SRCROOT)/EXTERNAL_HEADERS
348INCFLAGS_GEN = -I$(SRCROOT)/$(COMPONENT) -I$(OBJROOT)/EXPORT_HDRS/$(COMPONENT)
349INCFLAGS_LOCAL = -I.
1c79356b 350
39236c6e 351INCFLAGS = $(INCFLAGS_LOCAL) $(INCFLAGS_GEN) $(INCFLAGS_IMPORT) $(INCFLAGS_EXTERN) $(INCFLAGS_MAKEFILE)
1c79356b
A
352
353#
354# Default MIGFLAGS
355#
fe8ab488 356MIGFLAGS = $(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
374LTO_ENABLED_RELEASE = 1
375LTO_ENABLED_DEVELOPMENT = 1
376LTO_ENABLED_DEBUG = 0
377
378ifneq ($(BUILD_LTO),)
379USE_LTO = $(BUILD_LTO)
380else
381USE_LTO = $(LTO_ENABLED_$(CURRENT_KERNEL_CONFIG))
382endif
383
384ifeq ($(USE_LTO),1)
39236c6e
A
385CFLAGS_GEN += -flto
386CXXFLAGS_GEN += -flto
fe8ab488 387LDFLAGS_KERNEL_GEN += -Wl,-mllvm,-inline-threshold=125 -Wl,-object_path_lto,$(TARGET)/lto.o # -Wl,-mllvm -Wl,-disable-fp-elim
39236c6e
A
388LDFLAGS_NOSTRIP_FLAG = -rdynamic
389CFLAGS_NOLTO_FLAG = -fno-lto
390SUPPORTS_CTFCONVERT = 0
391NEEDS_CTF_MACHOS = 1
316670eb 392else
39236c6e
A
393LDFLAGS_NOSTRIP_FLAG =
394CFLAGS_NOLTO_FLAG =
395SUPPORTS_CTFCONVERT = 1
396NEEDS_CTF_MACHOS = 0
316670eb 397endif
1c79356b
A
398
399#
400# Default VPATH
401#
39236c6e 402export 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
409INSTALL_FLAGS = -c -S -m 0444
410DATA_INSTALL_FLAGS = -c -S -m 0644
411EXEC_INSTALL_FLAGS = -c -S -m 0755
1c79356b
A
412
413#
414# Header file destinations
415#
6d2010ae 416ifeq ($(RC_ProjectName),xnu_headers_Sim)
fe8ab488
A
417 include $(MAKEFILEPATH)/../AppleInternal/Makefiles/Makefile.indigo_prefix
418 HEADER_INSTALL_PREFIX = $(INDIGO_PREFIX)
6d2010ae
A
419else
420 HEADER_INSTALL_PREFIX =
421endif
422
423FRAMEDIR = $(HEADER_INSTALL_PREFIX)/System/Library/Frameworks
424
425SINCVERS = B
426SINCFRAME = $(FRAMEDIR)/System.framework
427SINCDIR = $(SINCFRAME)/Versions/$(SINCVERS)/Headers
428SPINCDIR = $(SINCFRAME)/Versions/$(SINCVERS)/PrivateHeaders
429SRESDIR = $(SINCFRAME)/Versions/$(SINCVERS)/Resources
430
1c79356b 431ifndef INCDIR
6d2010ae 432 INCDIR = $(HEADER_INSTALL_PREFIX)/usr/include
1c79356b
A
433endif
434ifndef LCLDIR
6d2010ae 435 LCLDIR = $(SPINCDIR)
1c79356b
A
436endif
437
438KINCVERS = A
439KINCFRAME = $(FRAMEDIR)/Kernel.framework
440KINCDIR = $(KINCFRAME)/Versions/$(KINCVERS)/Headers
0b4e3aa0 441KPINCDIR = $(KINCFRAME)/Versions/$(KINCVERS)/PrivateHeaders
91447636
A
442KRESDIR = $(KINCFRAME)/Versions/$(KINCVERS)/Resources
443
444XNU_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
447PLATFORM_UNIFDEF = $(foreach x,$(SUPPORTED_PLATFORMS),$(if $(filter $(PLATFORM),$(x)),-DPLATFORM_$(x) $(foreach token,$(PLATFORM_UNIFDEF_BLACKLIST_TOKENS_$(x)),-U$(token)),-UPLATFORM_$(x)))
448
449SPINCFRAME_UNIFDEF = $(PLATFORM_UNIFDEF) $(XNU_PRIVATE_UNIFDEF) $(SEED_DEFINES) -UKERNEL_PRIVATE -UKERNEL -DPRIVATE -U_OPEN_SOURCE_ -U__OPEN_SOURCE__
450SINCFRAME_UNIFDEF = $(PLATFORM_UNIFDEF) $(XNU_PRIVATE_UNIFDEF) $(SEED_DEFINES) -UKERNEL_PRIVATE -UKERNEL -UPRIVATE -D_OPEN_SOURCE_ -D__OPEN_SOURCE__
451KPINCFRAME_UNIFDEF = $(PLATFORM_UNIFDEF) $(XNU_PRIVATE_UNIFDEF) $(SEED_DEFINES) -DKERNEL_PRIVATE -DPRIVATE -DKERNEL -U_OPEN_SOURCE_ -U__OPEN_SOURCE__
452KINCFRAME_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#
457EXPDIR = EXPORT_HDRS/$(COMPONENT)
458
459#
460# Strip Flags
461#
39236c6e 462STRIP_FLAGS_RELEASE = -S -x
fe8ab488 463STRIP_FLAGS_DEVELOPMENT = -S
39236c6e
A
464STRIP_FLAGS_DEBUG = -S
465STRIP_FLAGS_PROFILE = -S -x
1c79356b 466
39236c6e 467STRIP_FLAGS = $($(addsuffix $(CURRENT_KERNEL_CONFIG),STRIP_FLAGS_))
1c79356b 468
2d21ac55
A
469#
470# dsymutil flags
471#
fe8ab488 472DSYMUTIL_FLAGS_GEN = --minimize
2d21ac55 473
fe8ab488
A
474DSYMUTIL_FLAGS_X86_64 = --arch=x86_64
475DSYMUTIL_FLAGS_X86_64H = --arch=x86_64h
476
477DSYMUTIL_FLAGS = $(DSYMUTIL_FLAGS_GEN) \
478 $($(addsuffix $(CURRENT_ARCH_CONFIG),DSYMUTIL_FLAGS_))
2d21ac55 479
9bccf70c
A
480#
481# Man Page destination
482#
39236c6e 483MANDIR = /usr/share/man
9bccf70c 484
b0d623f7
A
485#
486# DEBUG alias location
487#
39236c6e 488DEVELOPER_EXTRAS_DIR = /AppleInternal/CoreOS/xnu_debug
2d21ac55 489
1c79356b 490#
39236c6e 491# mach_kernel install location
1c79356b 492#
39236c6e 493INSTALL_KERNEL_DIR = /
1c79356b 494
fe8ab488
A
495#
496# new OS X install location
497#
498SYSTEM_LIBRARY_KERNELS_DIR = /System/Library/Kernels
499
500#
501# File names in DSTROOT
502#
503
504ifeq ($(PLATFORM),MacOSX)
505KERNEL_FILE_NAME_PREFIX = kernel
506else
507KERNEL_FILE_NAME_PREFIX = mach
508endif
509
510ifeq ($(CURRENT_MACHINE_CONFIG),NONE)
511ifeq ($(CURRENT_KERNEL_CONFIG),RELEASE)
512KERNEL_FILE_NAME = $(KERNEL_FILE_NAME_PREFIX)
513KERNEL_LLDBBOOTSTRAP_NAME = $(KERNEL_FILE_NAME_PREFIX).py
514else
515KERNEL_FILE_NAME = $(KERNEL_FILE_NAME_PREFIX).$(CURRENT_KERNEL_CONFIG_LC)
516KERNEL_LLDBBOOTSTRAP_NAME = $(KERNEL_FILE_NAME_PREFIX).py
517endif
518else
519KERNEL_FILE_NAME = $(KERNEL_FILE_NAME_PREFIX).$(CURRENT_KERNEL_CONFIG_LC).$(CURRENT_MACHINE_CONFIG_LC)
520KERNEL_LLDBBOOTSTRAP_NAME = $(KERNEL_FILE_NAME_PREFIX)_$(CURRENT_KERNEL_CONFIG_LC).py
521endif
522
39236c6e
A
523#
524# System.kext pseudo-kext install location
525#
526INSTALL_EXTENSIONS_DIR = /System/Library/Extensions
527
528#
fe8ab488 529# KDK location
39236c6e
A
530#
531INSTALL_KERNEL_SYM_DIR = /System/Library/Extensions/KDK
532
533#
534# Misc. Etc.
535#
536INSTALL_SHARE_MISC_DIR = /usr/share/misc
537INSTALL_DTRACE_SCRIPTS_DIR = /usr/lib/dtrace
538
539#
540# Overrides for XBS build aliases
541#
542ifeq ($(RC_ProjectName),xnu_debug)
543INSTALL_KERNEL_DIR := $(DEVELOPER_EXTRAS_DIR)
fe8ab488
A
544INSTALL_KERNEL_SYM_DIR := $(DEVELOPER_EXTRAS_DIR)
545INSTALL_KERNEL_SYM_TO_KDK = 1
39236c6e 546INSTALL_XNU_DEBUG_FILES = 1
fe8ab488 547else ifneq ($(filter iPhoneOS iPhoneOSNano,$(PLATFORM)),)
39236c6e
A
548INSTALL_KERNEL_SYM_TO_KDK = 1
549USE_BINARY_PLIST = 1
fe8ab488 550else ifneq ($(filter iPhoneSimulator iPhoneNanoSimulator,$(PLATFORM)),)
39236c6e 551USE_BINARY_PLIST = 1
fe8ab488
A
552else ifeq ($(PLATFORM),MacOSX)
553INSTALL_KERNEL_DIR := $(SYSTEM_LIBRARY_KERNELS_DIR)
554INSTALL_KERNEL_SYM_DIR := $(SYSTEM_LIBRARY_KERNELS_DIR)
555INSTALL_KERNEL_SYM_TO_KDK = $(if $(filter YES,$(DWARF_DSYM_FILE_SHOULD_ACCOMPANY_PRODUCT)),1,0)
39236c6e 556endif
1c79356b 557
2d21ac55 558# vim: set ft=make: