1# -*- mode: makefile;-*-
2#
3# Copyright (C) 1999-2013 Apple Inc. All rights reserved.
4#
5# MakeInc.def contains global definitions for building,
6# linking, and installing files.
7#
8
9#
10# Architecture Configuration options
11#
12SUPPORTED_ARCH_CONFIGS := X86_64 X86_64H
13
14#
15# Kernel Configuration options  
16#
17SUPPORTED_KERNEL_CONFIGS = RELEASE DEVELOPMENT DEBUG PROFILE
18
19#
20# Machine Configuration options  
21#
22
23SUPPORTED_X86_64_MACHINE_CONFIGS = NONE
24SUPPORTED_X86_64H_MACHINE_CONFIGS = NONE
25
26
27#
28# Platform options
29#
30SUPPORTED_PLATFORMS = MacOSX iPhoneOS iPhoneSimulator iPhoneOSNano iPhoneNanoSimulator
31
32#
33# Setup up *_LC variables during recursive invocations
34#
35
36ifndef CURRENT_ARCH_CONFIG_LC
37	export CURRENT_ARCH_CONFIG_LC 	:= $(shell printf "%s" "$(CURRENT_ARCH_CONFIG)" | $(TR) A-Z a-z)
38endif
39
40ifndef CURRENT_KERNEL_CONFIG_LC
41	export CURRENT_KERNEL_CONFIG_LC := $(shell printf "%s" "$(CURRENT_KERNEL_CONFIG)" | $(TR) A-Z a-z)
42endif
43
44ifndef CURRENT_MACHINE_CONFIG_LC
45	export CURRENT_MACHINE_CONFIG_LC := $(shell printf "%s" "$(CURRENT_MACHINE_CONFIG)" | $(TR) A-Z a-z)
46endif
47
48
49#
50# Component List
51#
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)) 
55
56
57#
58# Deployment target flag
59#
60ifeq ($(PLATFORM),MacOSX)
61    DEPLOYMENT_TARGET_FLAGS = -mmacosx-version-min=$(SDKVERSION)
62else ifneq ($(filter iPhoneOS iPhoneOSNano,$(PLATFORM)),)
63    DEPLOYMENT_TARGET_FLAGS = -miphoneos-version-min=$(SDKVERSION)
64else ifneq ($(filter iPhoneSimulator iPhoneNanoSimulator,$(PLATFORM)),)
65    DEPLOYMENT_TARGET_FLAGS =
66else
67    DEPLOYMENT_TARGET_FLAGS =
68endif
69
70
71#
72# Standard defines list
73#
74DEFINES = -DAPPLE -DKERNEL -DKERNEL_PRIVATE -DXNU_KERNEL_PRIVATE \
75	-DPRIVATE -D__MACHO__=1 -Dvolatile=__volatile $(CONFIG_DEFINES) \
76	$(SEED_DEFINES)
77
78#
79# Compiler command
80#
81KCC  = $(CC)
82KC++ = $(CXX)
83
84#
85# Compiler warning flags
86#
87
88CWARNFLAGS_STD = \
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 \
92	-Winline -Wnested-externs -Wredundant-decls -Wextra-tokens \
93	-Wunreachable-code
94
95# Can be overridden in Makefile.template or Makefile.$arch
96export CWARNFLAGS ?= $(CWARNFLAGS_STD)
97
98define add_perfile_cflags
99$(1)_CWARNFLAGS_ADD += $2
100endef
101
102CXXWARNFLAGS_STD = \
103	-Wall -Werror -Wno-format-y2k -Wextra -Wpointer-arith -Wreturn-type \
104	-Wcast-qual -Wwrite-strings -Wswitch -Wcast-align -Wchar-subscripts \
105	-Wredundant-decls -Wextra-tokens \
106	-Wunreachable-code
107
108# overloaded-virtual warnings are non-fatal (9000888)
109CXXWARNFLAGS_STD += -Wno-error=overloaded-virtual
110
111# Can be overridden in Makefile.template or Makefile.$arch
112export CXXWARNFLAGS ?= $(CXXWARNFLAGS_STD)
113
114define add_perfile_cxxflags
115$(1)_CXXWARNFLAGS_ADD += $2
116endef
117
118#
119# Default ARCH_FLAGS, for use with compiler/linker/assembler/mig drivers
120
121ARCH_FLAGS_X86_64	  = -arch x86_64
122ARCH_FLAGS_X86_64H	  = -arch x86_64h
123
124
125#
126# Default CFLAGS
127#
128ifdef RC_CFLAGS
129OTHER_CFLAGS	= $(subst $(addprefix -arch ,$(RC_ARCHS)),,$(RC_CFLAGS))
130endif
131
132#
133# Debug info
134#
135DSYMINFODIR	= Contents
136DSYMKGMACROSDIR	= Contents/Resources
137DSYMLLDBMACROSDIR = Contents/Resources/Python
138DSYMDWARFDIR	= Contents/Resources/DWARF
139
140DEBUG_CFLAGS := -gdwarf-2
141BUILD_DSYM := 1
142
143#
144# We must not use -fno-keep-inline-functions, or it will remove the dtrace
145# probes from the kernel.
146#
147CFLAGS_GEN = $(DEBUG_CFLAGS) -nostdinc \
148	-freorder-blocks -fno-builtin -fno-common \
149	-fsigned-bitfields $(OTHER_CFLAGS)
150
151CFLAGS_RELEASE 	= 
152CFLAGS_DEVELOPMENT 	=
153CFLAGS_DEBUG 	= 
154CFLAGS_PROFILE 	=  -pg
155
156CFLAGS_X86_64	= -Dx86_64 -DX86_64 -D__X86_64__ -DLP64 \
157				-DPAGE_SIZE_FIXED -mkernel -msoft-float 
158
159CFLAGS_X86_64H = $(CFLAGS_X86_64)
160
161
162CFLAGS_RELEASEX86_64 = -O2
163CFLAGS_DEVELOPMENTX86_64 = -O2
164# No space optimization for the DEBUG kernel for the benefit of gdb:
165CFLAGS_DEBUGX86_64 = -O0
166CFLAGS_PROFILEX86_64 = -O2
167
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
174CFLAGS_RELEASEARM = -O2
175CFLAGS_DEVELOPMENTARM = -O2
176CFLAGS_DEBUGARM = -O0
177CFLAGS_PROFILEARM = -O2
178
179
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_))) \
186		  $(DEPLOYMENT_TARGET_FLAGS) \
187		  $(DEFINES)
188
189#
190# Default C++ flags
191#
192
193OTHER_CXXFLAGS	=
194
195CXXFLAGS_GEN  = -fapple-kext $(OTHER_CXXFLAGS)
196
197# For the moment, do not use gnu++11
198#CXXFLAGS_ARM = -std=gnu++11
199
200
201CXXFLAGS      = $(CXXFLAGS_GEN) \
202		  $($(addsuffix $(CURRENT_ARCH_CONFIG),CXXFLAGS_)) \
203		  $($(addsuffix $(CURRENT_KERNEL_CONFIG),CXXFLAGS_))
204
205
206#
207# Assembler command
208#
209AS	= $(CC)
210S_KCC	= $(CC)
211
212#
213# Default SFLAGS
214#
215SFLAGS_GEN = -D__ASSEMBLER__ -DASSEMBLER $(OTHER_CFLAGS)
216
217SFLAGS_RELEASE 	= 
218SFLAGS_DEVELOPMENT 	= 
219SFLAGS_DEBUG 	= 
220SFLAGS_PROFILE 	= 
221
222SFLAGS_X86_64 	= $(CFLAGS_X86_64)
223SFLAGS_X86_64H 	= $(CFLAGS_X86_64H)
224
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_)) \
230		  $(DEPLOYMENT_TARGET_FLAGS) \
231		  $(DEFINES)
232
233#
234# Linker command
235#
236LD	= $(KC++) -nostdlib
237
238#
239# Default LDFLAGS
240#
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 = \
246	-nostdlib \
247	-fapple-kext \
248	-Wl,-e,__start \
249	-Wl,-sectalign,__TEXT,__text,0x1000 \
250	-Wl,-sectalign,__DATA,__common,0x1000 \
251	-Wl,-sectalign,__DATA,__bss,0x1000 \
252	-Wl,-sectcreate,__PRELINK_TEXT,__text,/dev/null \
253	-Wl,-sectcreate,__PRELINK_STATE,__kernel,/dev/null \
254        -Wl,-sectcreate,__PRELINK_STATE,__kexts,/dev/null \
255	-Wl,-sectcreate,__PRELINK_INFO,__info,/dev/null \
256	-Wl,-new_linker \
257	-Wl,-pagezero_size,0x0 \
258	-Wl,-version_load_command \
259	-Wl,-function_starts \
260	-Wl,-headerpad,152
261
262LDFLAGS_KERNEL_RELEASE 	=
263LDFLAGS_KERNEL_DEVELOPMENT 	=
264LDFLAGS_KERNEL_DEBUG 	= 
265LDFLAGS_KERNEL_PROFILE 	= 
266
267# KASLR static slide config:
268ifndef SLIDE
269SLIDE=0x00
270endif
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 = \
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 \
296	$(LDFLAGS_NOSTRIP_FLAG)
297
298# Define KERNEL_BASE_OFFSET so known at compile time:
299CFLAGS_X86_64 += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET)
300CFLAGS_X86_64H += -DKERNEL_BASE_OFFSET=$(KERNEL_BASE_OFFSET)
301
302LDFLAGS_KERNEL_DEBUGX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64)
303LDFLAGS_KERNEL_DEVELOPMENTX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64)
304LDFLAGS_KERNEL_PROFILEX86_64 = $(LDFLAGS_KERNEL_RELEASEX86_64)
305
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
311
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_))) \
317		  $(DEPLOYMENT_TARGET_FLAGS)
318
319#
320# Default runtime libraries to be linked with the kernel
321#
322LD_KERNEL_LIBS	= -lcc_kext
323
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
342
343#
344# Default INCFLAGS
345#
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.
350
351INCFLAGS 	= $(INCFLAGS_LOCAL) $(INCFLAGS_GEN) $(INCFLAGS_IMPORT) $(INCFLAGS_EXTERN) $(INCFLAGS_MAKEFILE)
352
353#
354# Default MIGFLAGS
355#
356MIGFLAGS	= $(DEFINES) $(INCFLAGS) -novouchers $($(addsuffix $(CURRENT_ARCH_CONFIG),CFLAGS_)) $($(addsuffix $(CURRENT_ARCH_CONFIG),ARCH_FLAGS_)) \
357		$(DEPLOYMENT_TARGET_FLAGS)
358
359#
360# Support for LLVM Link Time Optimization (LTO)
361#
362# LTO can be explicitly enabled or disabled with BUILD_LTO=1|0
363# and defaults to enabled except for DEBUG kernels
364#
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.
373
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)
385CFLAGS_GEN	+= -flto
386CXXFLAGS_GEN	+= -flto
387LDFLAGS_KERNEL_GEN	+= -Wl,-mllvm,-inline-threshold=125 -Wl,-object_path_lto,$(TARGET)/lto.o # -Wl,-mllvm -Wl,-disable-fp-elim 
388LDFLAGS_NOSTRIP_FLAG = -rdynamic
389CFLAGS_NOLTO_FLAG = -fno-lto
390SUPPORTS_CTFCONVERT	= 0
391NEEDS_CTF_MACHOS	= 1
392else
393LDFLAGS_NOSTRIP_FLAG =
394CFLAGS_NOLTO_FLAG =
395SUPPORTS_CTFCONVERT	= 1
396NEEDS_CTF_MACHOS	= 0
397endif
398
399#
400# Default VPATH
401#
402export VPATH = .:$(SOURCE)
403
404#
405# Macros that control installation of kernel and its header files
406#
407# install flags for header files
408# 
409INSTALL_FLAGS = -c -S -m 0444
410DATA_INSTALL_FLAGS = -c -S -m 0644
411EXEC_INSTALL_FLAGS = -c -S -m 0755
412
413#
414# Header file destinations
415#
416ifeq ($(RC_ProjectName),xnu_headers_Sim)
417	include $(MAKEFILEPATH)/../AppleInternal/Makefiles/Makefile.indigo_prefix
418	HEADER_INSTALL_PREFIX = $(INDIGO_PREFIX)
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
431ifndef INCDIR
432    INCDIR = $(HEADER_INSTALL_PREFIX)/usr/include
433endif
434ifndef LCLDIR
435    LCLDIR = $(SPINCDIR)
436endif
437
438KINCVERS = A
439KINCFRAME = $(FRAMEDIR)/Kernel.framework
440KINCDIR = $(KINCFRAME)/Versions/$(KINCVERS)/Headers
441KPINCDIR = $(KINCFRAME)/Versions/$(KINCVERS)/PrivateHeaders
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
446
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__
453
454#
455# Compononent Header file destinations
456#
457EXPDIR = EXPORT_HDRS/$(COMPONENT)
458
459#
460# Strip Flags
461#
462STRIP_FLAGS_RELEASE	= -S -x 
463STRIP_FLAGS_DEVELOPMENT	= -S 
464STRIP_FLAGS_DEBUG	= -S 
465STRIP_FLAGS_PROFILE	= -S -x
466
467STRIP_FLAGS 	= $($(addsuffix $(CURRENT_KERNEL_CONFIG),STRIP_FLAGS_)) 
468
469#
470# dsymutil flags
471#
472DSYMUTIL_FLAGS_GEN	= --minimize
473
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_))
479
480#
481# Man Page destination
482#
483MANDIR = /usr/share/man
484
485#
486# DEBUG alias location
487#
488DEVELOPER_EXTRAS_DIR = /AppleInternal/CoreOS/xnu_debug
489
490#
491# mach_kernel install location
492#
493INSTALL_KERNEL_DIR = /
494
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
523#
524# System.kext pseudo-kext install location
525#
526INSTALL_EXTENSIONS_DIR = /System/Library/Extensions
527
528#
529# KDK location
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)
544INSTALL_KERNEL_SYM_DIR := $(DEVELOPER_EXTRAS_DIR)
545INSTALL_KERNEL_SYM_TO_KDK = 1
546INSTALL_XNU_DEBUG_FILES = 1
547else ifneq ($(filter iPhoneOS iPhoneOSNano,$(PLATFORM)),)
548INSTALL_KERNEL_SYM_TO_KDK = 1
549USE_BINARY_PLIST = 1
550else ifneq ($(filter iPhoneSimulator iPhoneNanoSimulator,$(PLATFORM)),)
551USE_BINARY_PLIST = 1
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)
556endif
557
558# vim: set ft=make:
559