xref: /xnu-8796.101.5/Makefile (revision aca3beaa3dfbd42498b42c5e5ce20a938e6554e5)
1*aca3beaaSApple OSS Distributions#
2*aca3beaaSApple OSS Distributions# Copyright (C) 1999-2020 Apple Inc. All rights reserved.
3*aca3beaaSApple OSS Distributions#
4*aca3beaaSApple OSS Distributionsifndef VERSDIR
5*aca3beaaSApple OSS Distributionsexport VERSDIR := $(shell /bin/pwd)
6*aca3beaaSApple OSS Distributionsendif
7*aca3beaaSApple OSS Distributions
8*aca3beaaSApple OSS Distributionsifndef SRCROOT
9*aca3beaaSApple OSS Distributionsexport SRCROOT := $(shell /bin/pwd)
10*aca3beaaSApple OSS Distributionsendif
11*aca3beaaSApple OSS Distributionsifndef OBJROOT
12*aca3beaaSApple OSS Distributionsexport OBJROOT = $(SRCROOT)/BUILD/obj
13*aca3beaaSApple OSS Distributionsendif
14*aca3beaaSApple OSS Distributionsifndef DSTROOT
15*aca3beaaSApple OSS Distributionsexport DSTROOT = $(SRCROOT)/BUILD/dst
16*aca3beaaSApple OSS Distributionsendif
17*aca3beaaSApple OSS Distributionsifndef SYMROOT
18*aca3beaaSApple OSS Distributionsexport SYMROOT = $(SRCROOT)/BUILD/sym
19*aca3beaaSApple OSS Distributionsendif
20*aca3beaaSApple OSS Distributionsifndef MallocNanoZone
21*aca3beaaSApple OSS Distributionsexport MallocNanoZone := 1
22*aca3beaaSApple OSS Distributionsendif
23*aca3beaaSApple OSS Distributions
24*aca3beaaSApple OSS Distributions# Avoid make default rules, make becomes faster
25*aca3beaaSApple OSS DistributionsMAKEFLAGS+=r
26*aca3beaaSApple OSS Distributions
27*aca3beaaSApple OSS Distributionsexport MakeInc_top=${VERSDIR}/makedefs/MakeInc.top
28*aca3beaaSApple OSS Distributionsexport MakeInc_kernel=${VERSDIR}/makedefs/MakeInc.kernel
29*aca3beaaSApple OSS Distributionsexport MakeInc_cmd=${VERSDIR}/makedefs/MakeInc.cmd
30*aca3beaaSApple OSS Distributionsexport MakeInc_def=${VERSDIR}/makedefs/MakeInc.def
31*aca3beaaSApple OSS Distributionsexport MakeInc_rule=${VERSDIR}/makedefs/MakeInc.rule
32*aca3beaaSApple OSS Distributionsexport MakeInc_dir=${VERSDIR}/makedefs/MakeInc.dir
33*aca3beaaSApple OSS Distributions
34*aca3beaaSApple OSS Distributions.DEFAULT_GOAL := default
35*aca3beaaSApple OSS Distributions
36*aca3beaaSApple OSS Distributionsexport PATCH_PREFIX ?= change-under-test_
37*aca3beaaSApple OSS Distributionsexport PATCH_GLOB ?= $(PATCH_PREFIX)*.diff
38*aca3beaaSApple OSS Distributions
39*aca3beaaSApple OSS Distributions
40*aca3beaaSApple OSS Distributionsskip:
41*aca3beaaSApple OSS Distributions	@echo "Skipping $(RC_ProjectName)"
42*aca3beaaSApple OSS Distributions
43*aca3beaaSApple OSS Distributions.PHONY: skip
44*aca3beaaSApple OSS Distributions
45*aca3beaaSApple OSS Distributions#
46*aca3beaaSApple OSS Distributions# Dispatch non-xnu build aliases to their own build
47*aca3beaaSApple OSS Distributions# systems. All xnu variants start with MakeInc_top.
48*aca3beaaSApple OSS Distributions#
49*aca3beaaSApple OSS Distributions
50*aca3beaaSApple OSS Distributionsifneq ($(findstring Libsyscall,$(RC_ProjectName)),)
51*aca3beaaSApple OSS Distributions
52*aca3beaaSApple OSS Distributionsinclude $(MakeInc_cmd)
53*aca3beaaSApple OSS Distributionsinclude $(MakeInc_def)
54*aca3beaaSApple OSS Distributionsinclude $(MakeInc_rule)
55*aca3beaaSApple OSS Distributions
56*aca3beaaSApple OSS Distributionsifeq ($(RC_ProjectName),Libsyscall_headers_Sim)
57*aca3beaaSApple OSS DistributionsTARGET=-target Libsyscall_headers_Sim
58*aca3beaaSApple OSS Distributionsendif
59*aca3beaaSApple OSS Distributions
60*aca3beaaSApple OSS Distributionsifeq ($(RC_ProjectName),Libsyscall_driverkit)
61*aca3beaaSApple OSS DistributionsTARGET=-target Libsyscall_driverkit
62*aca3beaaSApple OSS Distributionsendif
63*aca3beaaSApple OSS Distributions
64*aca3beaaSApple OSS Distributions# default to OS X
65*aca3beaaSApple OSS DistributionsSDKROOT ?= macosx.internal
66*aca3beaaSApple OSS Distributions
67*aca3beaaSApple OSS Distributionsdefault: install
68*aca3beaaSApple OSS Distributions
69*aca3beaaSApple OSS DistributionsLibsyscall_driverkit: install
70*aca3beaaSApple OSS Distributions
71*aca3beaaSApple OSS Distributions.PHONY: Libsyscall_driverkit
72*aca3beaaSApple OSS Distributions
73*aca3beaaSApple OSS Distributionsinstallhdrs install::
74*aca3beaaSApple OSS Distributions	cd libsyscall ; \
75*aca3beaaSApple OSS Distributions		xcodebuild $@ $(TARGET)	\
76*aca3beaaSApple OSS Distributions			$(MAKEOVERRIDES)	\
77*aca3beaaSApple OSS Distributions			"SRCROOT=$(SRCROOT)/libsyscall"					\
78*aca3beaaSApple OSS Distributions			"OBJROOT=$(OBJROOT)"						\
79*aca3beaaSApple OSS Distributions			"SYMROOT=$(SYMROOT)"						\
80*aca3beaaSApple OSS Distributions			"DSTROOT=$(DSTROOT)"						\
81*aca3beaaSApple OSS Distributions			"SDKROOT=$(SDKROOT)"
82*aca3beaaSApple OSS Distributions
83*aca3beaaSApple OSS Distributionsinstallhdrs install:: do_unifdef_headers
84*aca3beaaSApple OSS Distributions
85*aca3beaaSApple OSS Distributions$(eval $(call LIBSYSCALL_DO_UNIFDEF_HEADERS_RULE_template,$(DSTROOT)/$(INCDIR),$(SINCFRAME_UNIFDEF)))
86*aca3beaaSApple OSS Distributions$(eval $(call LIBSYSCALL_DO_UNIFDEF_HEADERS_RULE_template,$(DSTROOT)/$(LCLDIR),$(SPINCFRAME_UNIFDEF)))
87*aca3beaaSApple OSS Distributionsifeq ($(DRIVERKIT),1)
88*aca3beaaSApple OSS Distributions$(eval $(call LIBSYSCALL_DO_UNIFDEF_HEADERS_RULE_template,$(DSTROOT)/$(DRIVERKITINCDIR),$(DKINCFRAME_UNIFDEF)))
89*aca3beaaSApple OSS Distributions$(eval $(call LIBSYSCALL_DO_UNIFDEF_HEADERS_RULE_template,$(DSTROOT)/$(DRIVERKITLCLDIR),$(DKPINCFRAME_UNIFDEF)))
90*aca3beaaSApple OSS Distributionsendif
91*aca3beaaSApple OSS Distributions
92*aca3beaaSApple OSS Distributionsclean:
93*aca3beaaSApple OSS Distributions
94*aca3beaaSApple OSS Distributionsinstallsrc:
95*aca3beaaSApple OSS Distributions	pax -rw . $(SRCROOT)
96*aca3beaaSApple OSS Distributions
97*aca3beaaSApple OSS Distributionselse ifneq ($(findstring libkxld_host,$(RC_ProjectName)),)
98*aca3beaaSApple OSS Distributions
99*aca3beaaSApple OSS Distributionsinclude $(MakeInc_cmd)
100*aca3beaaSApple OSS Distributions
101*aca3beaaSApple OSS Distributionsdefault: install
102*aca3beaaSApple OSS Distributions
103*aca3beaaSApple OSS Distributionsinstallhdrs install clean:
104*aca3beaaSApple OSS Distributions	 $(MAKE) -C libkern/kxld $@ USE_APPLE_PB_SUPPORT=all PRODUCT_TYPE=ARCHIVE
105*aca3beaaSApple OSS Distributions
106*aca3beaaSApple OSS Distributionsinstallsrc:
107*aca3beaaSApple OSS Distributions	$(_v)$(MKDIR) $(SRCROOT)
108*aca3beaaSApple OSS Distributions	$(_v)$(FIND) -x . \! \( \( -name BUILD -o -name .svn -o -name .git -o -name cscope.\* -o -name \*~ \) -prune \) -print0 | $(PAX) -rw -p a -d0 $(SRCROOT)
109*aca3beaaSApple OSS Distributions	$(_v)$(CHMOD) -R go+rX $(SRCROOT)
110*aca3beaaSApple OSS Distributions
111*aca3beaaSApple OSS Distributionselse ifneq ($(findstring libkxld,$(RC_ProjectName)),)
112*aca3beaaSApple OSS Distributions
113*aca3beaaSApple OSS Distributionsinclude $(MakeInc_cmd)
114*aca3beaaSApple OSS Distributions
115*aca3beaaSApple OSS Distributionsdefault: install
116*aca3beaaSApple OSS Distributions
117*aca3beaaSApple OSS Distributionsinstallhdrs install clean:
118*aca3beaaSApple OSS Distributions	 $(MAKE) -C libkern/kxld $@ USE_APPLE_PB_SUPPORT=all
119*aca3beaaSApple OSS Distributions
120*aca3beaaSApple OSS Distributionsinstallsrc:
121*aca3beaaSApple OSS Distributions	$(_v)$(MKDIR) $(SRCROOT)
122*aca3beaaSApple OSS Distributions	$(_v)$(FIND) -x . \! \( \( -name BUILD -o -name .svn -o -name .git -o -name cscope.\* -o -name \*~ \) -prune \) -print0 | $(PAX) -rw -p a -d0 $(SRCROOT)
123*aca3beaaSApple OSS Distributions	$(_v)$(CHMOD) -R go+rX $(SRCROOT)
124*aca3beaaSApple OSS Distributions
125*aca3beaaSApple OSS Distributionselse ifneq ($(findstring libkmod,$(RC_ProjectName)),)
126*aca3beaaSApple OSS Distributions
127*aca3beaaSApple OSS Distributionsdefault: install
128*aca3beaaSApple OSS Distributions
129*aca3beaaSApple OSS Distributionsinstallhdrs install:
130*aca3beaaSApple OSS Distributions	cd libkern/kmod ; \
131*aca3beaaSApple OSS Distributions		xcodebuild $@	\
132*aca3beaaSApple OSS Distributions			$(MAKEOVERRIDES)	\
133*aca3beaaSApple OSS Distributions			"SRCROOT=$(SRCROOT)/libkern/kmod"				\
134*aca3beaaSApple OSS Distributions			"OBJROOT=$(OBJROOT)"						\
135*aca3beaaSApple OSS Distributions			"SYMROOT=$(SYMROOT)"						\
136*aca3beaaSApple OSS Distributions			"DSTROOT=$(DSTROOT)"						\
137*aca3beaaSApple OSS Distributions			"SDKROOT=$(SDKROOT)"
138*aca3beaaSApple OSS Distributions
139*aca3beaaSApple OSS Distributionsclean:
140*aca3beaaSApple OSS Distributions
141*aca3beaaSApple OSS Distributionsinstallsrc:
142*aca3beaaSApple OSS Distributions	pax -rw . $(SRCROOT)
143*aca3beaaSApple OSS Distributions
144*aca3beaaSApple OSS Distributionselse ifneq ($(findstring xnu_tests,$(RC_ProjectName)),)
145*aca3beaaSApple OSS Distributions
146*aca3beaaSApple OSS Distributionsexport SYSCTL_HW_PHYSICALCPU := $(shell /usr/sbin/sysctl -n hw.physicalcpu)
147*aca3beaaSApple OSS Distributionsexport SYSCTL_HW_LOGICALCPU  := $(shell /usr/sbin/sysctl -n hw.logicalcpu)
148*aca3beaaSApple OSS DistributionsMAKEJOBS := --jobs=$(shell expr $(SYSCTL_HW_LOGICALCPU) + 1)
149*aca3beaaSApple OSS Distributions
150*aca3beaaSApple OSS Distributionsdefault: install
151*aca3beaaSApple OSS Distributions
152*aca3beaaSApple OSS Distributionsinstallhdrs:
153*aca3beaaSApple OSS Distributions
154*aca3beaaSApple OSS Distributionsinstall: xnu_tests
155*aca3beaaSApple OSS Distributions
156*aca3beaaSApple OSS Distributionsclean:
157*aca3beaaSApple OSS Distributions
158*aca3beaaSApple OSS Distributionsinstallsrc:
159*aca3beaaSApple OSS Distributions	pax -rw . $(SRCROOT)
160*aca3beaaSApple OSS Distributions
161*aca3beaaSApple OSS Distributionselse ifeq ($(RC_ProjectName),xnu_tests_driverkit)
162*aca3beaaSApple OSS Distributions
163*aca3beaaSApple OSS Distributionsexport SYSCTL_HW_PHYSICALCPU := $(shell /usr/sbin/sysctl -n hw.physicalcpu)
164*aca3beaaSApple OSS Distributionsexport SYSCTL_HW_LOGICALCPU  := $(shell /usr/sbin/sysctl -n hw.logicalcpu)
165*aca3beaaSApple OSS DistributionsMAKEJOBS := --jobs=$(shell expr $(SYSCTL_HW_LOGICALCPU) + 1)
166*aca3beaaSApple OSS Distributions
167*aca3beaaSApple OSS Distributionsdefault: install
168*aca3beaaSApple OSS Distributions
169*aca3beaaSApple OSS Distributionsinstallhdrs:
170*aca3beaaSApple OSS Distributions
171*aca3beaaSApple OSS Distributionsinstall: xnu_tests_driverkit
172*aca3beaaSApple OSS Distributions
173*aca3beaaSApple OSS Distributionsclean:
174*aca3beaaSApple OSS Distributions
175*aca3beaaSApple OSS Distributionsinstallsrc:
176*aca3beaaSApple OSS Distributions	pax -rw . $(SRCROOT)
177*aca3beaaSApple OSS Distributions
178*aca3beaaSApple OSS Distributionselse # all other RC_ProjectName
179*aca3beaaSApple OSS Distributions
180*aca3beaaSApple OSS Distributionsifndef CURRENT_BUILD_CONFIG
181*aca3beaaSApple OSS Distributions
182*aca3beaaSApple OSS Distributions# avoid having to include MakeInc.cmd
183*aca3beaaSApple OSS Distributionsifeq ($(RC_XBS),YES)
184*aca3beaaSApple OSS Distributions_v =
185*aca3beaaSApple OSS Distributionselse ifeq ($(VERBOSE),YES)
186*aca3beaaSApple OSS Distributions_v =
187*aca3beaaSApple OSS Distributionselse
188*aca3beaaSApple OSS Distributions_v = @
189*aca3beaaSApple OSS Distributionsendif
190*aca3beaaSApple OSS Distributions
191*aca3beaaSApple OSS Distributions#
192*aca3beaaSApple OSS Distributions# Setup for parallel sub-makes, taking into account physical and logical
193*aca3beaaSApple OSS Distributions# CPUs. If the system does not support SMT, use N+1.
194*aca3beaaSApple OSS Distributions# If MAKEJOBS or -jN is passed on the make line, that takes precedence.
195*aca3beaaSApple OSS Distributions#
196*aca3beaaSApple OSS Distributionsexport SYSCTL_HW_PHYSICALCPU := $(shell /usr/sbin/sysctl -n hw.physicalcpu)
197*aca3beaaSApple OSS Distributionsexport SYSCTL_HW_LOGICALCPU  := $(shell /usr/sbin/sysctl -n hw.logicalcpu)
198*aca3beaaSApple OSS DistributionsMAKEJOBS := --jobs=$(shell expr $(SYSCTL_HW_LOGICALCPU) + 1)
199*aca3beaaSApple OSS Distributions
200*aca3beaaSApple OSS DistributionsTOP_TARGETS = \
201*aca3beaaSApple OSS Distributions	clean \
202*aca3beaaSApple OSS Distributions	installsrc \
203*aca3beaaSApple OSS Distributions	exporthdrs \
204*aca3beaaSApple OSS Distributions	all all_desktop all_embedded \
205*aca3beaaSApple OSS Distributions	all_release_embedded all_development_embedded \
206*aca3beaaSApple OSS Distributions	installhdrs installhdrs_desktop installhdrs_embedded \
207*aca3beaaSApple OSS Distributions	installhdrs_release_embedded installhdrs_development_embedded \
208*aca3beaaSApple OSS Distributions	install install_desktop install_embedded \
209*aca3beaaSApple OSS Distributions	install_release_embedded install_development_embedded \
210*aca3beaaSApple OSS Distributions	install_kernels \
211*aca3beaaSApple OSS Distributions	cscope tags TAGS \
212*aca3beaaSApple OSS Distributions	help
213*aca3beaaSApple OSS Distributions
214*aca3beaaSApple OSS DistributionsDEFAULT_TARGET = all
215*aca3beaaSApple OSS Distributions
216*aca3beaaSApple OSS Distributions# Targets for internal build system debugging
217*aca3beaaSApple OSS DistributionsTOP_TARGETS += \
218*aca3beaaSApple OSS Distributions	print_exports print_exports_first_build_config \
219*aca3beaaSApple OSS Distributions	setup \
220*aca3beaaSApple OSS Distributions	build \
221*aca3beaaSApple OSS Distributions	config \
222*aca3beaaSApple OSS Distributions	install_textfiles \
223*aca3beaaSApple OSS Distributions	install_config
224*aca3beaaSApple OSS Distributions
225*aca3beaaSApple OSS Distributionsifeq ($(BUILD_JSON_COMPILATION_DATABASE),1)
226*aca3beaaSApple OSS DistributionsMAKEARGS += -B
227*aca3beaaSApple OSS DistributionsDEFAULT_TARGET := build
228*aca3beaaSApple OSS Distributionsendif
229*aca3beaaSApple OSS Distributions
230*aca3beaaSApple OSS Distributions.PHONY: $(TOP_TARGETS)
231*aca3beaaSApple OSS Distributions
232*aca3beaaSApple OSS Distributionsdefault: $(DEFAULT_TARGET)
233*aca3beaaSApple OSS Distributions
234*aca3beaaSApple OSS Distributionsifneq ($(REMOTEBUILD),)
235*aca3beaaSApple OSS Distributions$(TOP_TARGETS):
236*aca3beaaSApple OSS Distributions	$(_v)$(VERSDIR)/tools/remote_build.sh _REMOTEBUILD_TARGET=$@ _REMOTEBUILD_MAKE=$(MAKE) $(if $(filter --,$(MAKEFLAGS)),-,)$(MAKEFLAGS)
237*aca3beaaSApple OSS Distributionselse
238*aca3beaaSApple OSS Distributions$(TOP_TARGETS):
239*aca3beaaSApple OSS Distributions	$(_v)$(MAKE) $(MAKEARGS) -r $(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) -f $(MakeInc_top) $@
240*aca3beaaSApple OSS Distributionsendif
241*aca3beaaSApple OSS Distributions
242*aca3beaaSApple OSS Distributionselse # CURRENT_BUILD_CONFIG
243*aca3beaaSApple OSS Distributions
244*aca3beaaSApple OSS Distributionsinclude $(MakeInc_cmd)
245*aca3beaaSApple OSS Distributionsinclude $(MakeInc_def)
246*aca3beaaSApple OSS Distributions
247*aca3beaaSApple OSS DistributionsALL_SUBDIRS = \
248*aca3beaaSApple OSS Distributions	security \
249*aca3beaaSApple OSS Distributions	bsd  \
250*aca3beaaSApple OSS Distributions	iokit \
251*aca3beaaSApple OSS Distributions	osfmk \
252*aca3beaaSApple OSS Distributions	pexpert \
253*aca3beaaSApple OSS Distributions	libkern \
254*aca3beaaSApple OSS Distributions	libsa \
255*aca3beaaSApple OSS Distributions	config \
256*aca3beaaSApple OSS Distributions	san
257*aca3beaaSApple OSS Distributions
258*aca3beaaSApple OSS DistributionsCONFIG_SUBDIRS = config tools san
259*aca3beaaSApple OSS Distributions# Hack to handle san external dependency on config_all allsymbols target
260*aca3beaaSApple OSS Distributionsconfig_all_recurse_into_san: config_all_recurse_into_config
261*aca3beaaSApple OSS Distributions
262*aca3beaaSApple OSS DistributionsINSTINC_SUBDIRS = $(ALL_SUBDIRS) EXTERNAL_HEADERS
263*aca3beaaSApple OSS DistributionsINSTINC_SUBDIRS_X86_64 = $(INSTINC_SUBDIRS)
264*aca3beaaSApple OSS DistributionsINSTINC_SUBDIRS_X86_64H = $(INSTINC_SUBDIRS)
265*aca3beaaSApple OSS DistributionsINSTINC_SUBDIRS_ARM = $(INSTINC_SUBDIRS)
266*aca3beaaSApple OSS DistributionsINSTINC_SUBDIRS_ARM64 = $(INSTINC_SUBDIRS)
267*aca3beaaSApple OSS Distributions
268*aca3beaaSApple OSS DistributionsEXPINC_SUBDIRS = $(ALL_SUBDIRS)
269*aca3beaaSApple OSS DistributionsEXPINC_SUBDIRS_X86_64 = $(EXPINC_SUBDIRS)
270*aca3beaaSApple OSS DistributionsEXPINC_SUBDIRS_X86_64H = $(EXPINC_SUBDIRS)
271*aca3beaaSApple OSS DistributionsEXPINC_SUBDIRS_ARM = $(EXPINC_SUBDIRS)
272*aca3beaaSApple OSS DistributionsEXPINC_SUBDIRS_ARM64 = $(EXPINC_SUBDIRS)
273*aca3beaaSApple OSS Distributions
274*aca3beaaSApple OSS DistributionsSETUP_SUBDIRS = SETUP san bsd
275*aca3beaaSApple OSS Distributions
276*aca3beaaSApple OSS DistributionsCOMP_SUBDIRS_X86_64 = $(ALL_SUBDIRS)
277*aca3beaaSApple OSS DistributionsCOMP_SUBDIRS_X86_64H = $(ALL_SUBDIRS)
278*aca3beaaSApple OSS DistributionsCOMP_SUBDIRS_ARM = $(ALL_SUBDIRS)
279*aca3beaaSApple OSS DistributionsCOMP_SUBDIRS_ARM64 = $(ALL_SUBDIRS)
280*aca3beaaSApple OSS Distributions
281*aca3beaaSApple OSS DistributionsINSTTEXTFILES_SUBDIRS =	\
282*aca3beaaSApple OSS Distributions	bsd
283*aca3beaaSApple OSS DistributionsINSTTEXTFILES_SUBDIRS_X86_64 = $(INSTTEXTFILES_SUBDIRS)
284*aca3beaaSApple OSS DistributionsINSTTEXTFILES_SUBDIRS_X86_64H = $(INSTTEXTFILES_SUBDIRS)
285*aca3beaaSApple OSS DistributionsINSTTEXTFILES_SUBDIRS_ARM = $(INSTTEXTFILES_SUBDIRS)
286*aca3beaaSApple OSS DistributionsINSTTEXTFILES_SUBDIRS_ARM64 = $(INSTTEXTFILES_SUBDIRS)
287*aca3beaaSApple OSS Distributions
288*aca3beaaSApple OSS Distributionsinclude $(MakeInc_kernel)
289*aca3beaaSApple OSS Distributionsinclude $(MakeInc_rule)
290*aca3beaaSApple OSS Distributionsinclude $(MakeInc_dir)
291*aca3beaaSApple OSS Distributions
292*aca3beaaSApple OSS Distributionsendif # CURRENT_BUILD_CONFIG
293*aca3beaaSApple OSS Distributions
294*aca3beaaSApple OSS Distributionsendif # all other RC_ProjectName
295*aca3beaaSApple OSS Distributions
296*aca3beaaSApple OSS Distributionsinstallapi_libkdd installhdrs_libkdd install_libkdd:
297*aca3beaaSApple OSS Distributions	cd libkdd; \
298*aca3beaaSApple OSS Distributions		xcodebuild -target Default $(subst _libkdd,,$@)	\
299*aca3beaaSApple OSS Distributions			$(MAKEOVERRIDES)	\
300*aca3beaaSApple OSS Distributions			"SRCROOT=$(SRCROOT)/libkdd"		\
301*aca3beaaSApple OSS Distributions			"OBJROOT=$(OBJROOT)"			\
302*aca3beaaSApple OSS Distributions			"SYMROOT=$(SYMROOT)"			\
303*aca3beaaSApple OSS Distributions			"DSTROOT=$(DSTROOT)"			\
304*aca3beaaSApple OSS Distributions			"SDKROOT=$(SDKROOT)"
305*aca3beaaSApple OSS Distributions
306*aca3beaaSApple OSS Distributions
307*aca3beaaSApple OSS Distributionsinstallapi_libkdd_tests installhdrs_libkdd_tests install_libkdd_tests:
308*aca3beaaSApple OSS Distributions	cd libkdd; \
309*aca3beaaSApple OSS Distributions		xcodebuild -target tests $(subst _libkdd_tests,,$@)	\
310*aca3beaaSApple OSS Distributions			$(MAKEOVERRIDES)	\
311*aca3beaaSApple OSS Distributions			"SRCROOT=$(SRCROOT)/libkdd"		\
312*aca3beaaSApple OSS Distributions			"OBJROOT=$(OBJROOT)"			\
313*aca3beaaSApple OSS Distributions			"SYMROOT=$(SYMROOT)"			\
314*aca3beaaSApple OSS Distributions			"DSTROOT=$(DSTROOT)"			\
315*aca3beaaSApple OSS Distributions			"SDKROOT=$(SDKROOT)"
316*aca3beaaSApple OSS Distributions
317*aca3beaaSApple OSS Distributions
318*aca3beaaSApple OSS Distributionsinstallapi_libkdd_host installhdrs_libkdd_host install_libkdd_host:
319*aca3beaaSApple OSS Distributions	cd libkdd; \
320*aca3beaaSApple OSS Distributions		xcodebuild -configuration ReleaseHost -target kdd.framework $(subst _libkdd_host,,$@)	\
321*aca3beaaSApple OSS Distributions			$(MAKEOVERRIDES)	\
322*aca3beaaSApple OSS Distributions			"SRCROOT=$(SRCROOT)/libkdd"		\
323*aca3beaaSApple OSS Distributions			"OBJROOT=$(OBJROOT)"			\
324*aca3beaaSApple OSS Distributions			"SYMROOT=$(SYMROOT)"			\
325*aca3beaaSApple OSS Distributions			"DSTROOT=$(DSTROOT)"			\
326*aca3beaaSApple OSS Distributions			"SDKROOT=$(SDKROOT)"
327*aca3beaaSApple OSS Distributions
328*aca3beaaSApple OSS Distributions
329*aca3beaaSApple OSS Distributions# "xnu_tests" and "testbots" are targets that can be invoked via a standalone
330*aca3beaaSApple OSS Distributions# "make xnu_tests" or via buildit/XBS with the RC_ProjectName=xnu_tests.
331*aca3beaaSApple OSS Distributions# Define the target here in the outermost scope of the initial Makefile
332*aca3beaaSApple OSS Distributions
333*aca3beaaSApple OSS Distributionsxnu_tests:
334*aca3beaaSApple OSS Distributions	$(MAKE) -C $(SRCROOT)/tools/tests	$(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) \
335*aca3beaaSApple OSS Distributions		SRCROOT=$(SRCROOT)/tools/tests
336*aca3beaaSApple OSS Distributions	$(MAKE) -C $(SRCROOT)/tests	$(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) \
337*aca3beaaSApple OSS Distributions		SRCROOT=$(SRCROOT)/tests
338*aca3beaaSApple OSS Distributions
339*aca3beaaSApple OSS Distributionsxnu_tests_driverkit:
340*aca3beaaSApple OSS Distributions	$(MAKE) -C $(SRCROOT)/tests/driverkit $(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) \
341*aca3beaaSApple OSS Distributions		SRCROOT=$(SRCROOT)/tests/driverkit
342*aca3beaaSApple OSS Distributions
343*aca3beaaSApple OSS Distributions
344*aca3beaaSApple OSS Distributionsinclude $(MakeInc_cmd)
345*aca3beaaSApple OSS Distributions
346*aca3beaaSApple OSS Distributions#
347*aca3beaaSApple OSS Distributions# The "analyze" target defined below invokes Clang Static Analyzer
348*aca3beaaSApple OSS Distributions# with a predefined set of checks and options for the project.
349*aca3beaaSApple OSS Distributions#
350*aca3beaaSApple OSS Distributions
351*aca3beaaSApple OSS Distributions# By default, analysis results are available in BUILD/StaticAnalyzer.
352*aca3beaaSApple OSS Distributions# Set this variable in your make invocation to use a different directory.
353*aca3beaaSApple OSS Distributions# Note that these results are only deleted when the build directory
354*aca3beaaSApple OSS Distributions# is cleaned. They aren't deleted every time the analyzer is re-run,
355*aca3beaaSApple OSS Distributions# but they are deleted after "make clean".
356*aca3beaaSApple OSS DistributionsSTATIC_ANALYZER_OUTPUT_DIR ?= $(SRCROOT)/BUILD/StaticAnalyzer
357*aca3beaaSApple OSS Distributions
358*aca3beaaSApple OSS Distributions# By default, the default make target is analyzed. You can analyze
359*aca3beaaSApple OSS Distributions# other targets by setting this variable in your make invocation.
360*aca3beaaSApple OSS DistributionsSTATIC_ANALYZER_TARGET ?=
361*aca3beaaSApple OSS Distributions
362*aca3beaaSApple OSS Distributions# You can pass additional flags to scan-build by setting this variable
363*aca3beaaSApple OSS Distributions# in your make invocation. For example, you can enable additional checks.
364*aca3beaaSApple OSS DistributionsSTATIC_ANALYZER_EXTRA_FLAGS ?=
365*aca3beaaSApple OSS Distributions
366*aca3beaaSApple OSS Distributionsanalyze:
367*aca3beaaSApple OSS Distributions# This is where the reports are going to be available.
368*aca3beaaSApple OSS Distributions# Old reports are deleted on make clean only.
369*aca3beaaSApple OSS Distributions	$(_v)$(MKDIR) $(STATIC_ANALYZER_OUTPUT_DIR)
370*aca3beaaSApple OSS Distributions
371*aca3beaaSApple OSS Distributions# Recursively build the requested target under scan-build.
372*aca3beaaSApple OSS Distributions# Exclude checks that weren't deemed to be security critical,
373*aca3beaaSApple OSS Distributions# like null pointer dereferences.
374*aca3beaaSApple OSS Distributions	$(_v)$(XCRUN) $(SCAN_BUILD) -o $(STATIC_ANALYZER_OUTPUT_DIR) \
375*aca3beaaSApple OSS Distributions		-disable-checker deadcode.DeadStores \
376*aca3beaaSApple OSS Distributions		-disable-checker core.NullDereference \
377*aca3beaaSApple OSS Distributions		-disable-checker core.DivideZero \
378*aca3beaaSApple OSS Distributions		--exclude BUILD \
379*aca3beaaSApple OSS Distributions		$(STATIC_ANALYZER_EXTRA_FLAGS) \
380*aca3beaaSApple OSS Distributions		$(MAKE) $(STATIC_ANALYZER_TARGET) QUIET=1 2>&1 | $(GREP) "^scan-build:"
381*aca3beaaSApple OSS Distributions
382*aca3beaaSApple OSS Distributions.PHONY: analyze
383