]>
Commit | Line | Data |
---|---|---|
39236c6e | 1 | # |
39037602 | 2 | # Copyright (C) 1999-2016 Apple Inc. All rights reserved. |
39236c6e | 3 | # |
1c79356b | 4 | ifndef VERSDIR |
39236c6e | 5 | export VERSDIR := $(shell /bin/pwd) |
1c79356b | 6 | endif |
39236c6e | 7 | |
9bccf70c | 8 | ifndef SRCROOT |
39236c6e | 9 | export SRCROOT := $(shell /bin/pwd) |
9bccf70c A |
10 | endif |
11 | ifndef OBJROOT | |
39236c6e | 12 | export OBJROOT = $(SRCROOT)/BUILD/obj |
9bccf70c A |
13 | endif |
14 | ifndef DSTROOT | |
39236c6e | 15 | export DSTROOT = $(SRCROOT)/BUILD/dst |
9bccf70c A |
16 | endif |
17 | ifndef SYMROOT | |
39236c6e | 18 | export SYMROOT = $(SRCROOT)/BUILD/sym |
9bccf70c | 19 | endif |
cb323159 A |
20 | ifndef MallocNanoZone |
21 | export MallocNanoZone := 1 | |
22 | endif | |
23 | ||
24 | # Avoid make default rules, make becomes faster | |
25 | MAKEFLAGS+=r | |
1c79356b | 26 | |
39236c6e A |
27 | export MakeInc_top=${VERSDIR}/makedefs/MakeInc.top |
28 | export MakeInc_kernel=${VERSDIR}/makedefs/MakeInc.kernel | |
1c79356b A |
29 | export MakeInc_cmd=${VERSDIR}/makedefs/MakeInc.cmd |
30 | export MakeInc_def=${VERSDIR}/makedefs/MakeInc.def | |
31 | export MakeInc_rule=${VERSDIR}/makedefs/MakeInc.rule | |
32 | export MakeInc_dir=${VERSDIR}/makedefs/MakeInc.dir | |
33 | ||
39236c6e A |
34 | # |
35 | # Dispatch non-xnu build aliases to their own build | |
36 | # systems. All xnu variants start with MakeInc_top. | |
37 | # | |
38 | ||
f427ee49 | 39 | ifneq ($(findstring Libsyscall,$(RC_ProjectName)),) |
39236c6e | 40 | |
cb323159 A |
41 | include $(MakeInc_cmd) |
42 | ||
f427ee49 A |
43 | ifeq ($(RC_ProjectName),Libsyscall_headers_Sim) |
44 | TARGET=-target Libsyscall_headers_Sim | |
45 | endif | |
46 | ||
47 | ifeq ($(RC_ProjectName),Libsyscall_driverkit) | |
48 | TARGET=-target Libsyscall_driverkit | |
39236c6e A |
49 | endif |
50 | ||
51 | default: install | |
52 | ||
39037602 A |
53 | # default to OS X |
54 | SDKROOT ?= macosx.internal | |
55 | ||
39236c6e A |
56 | installhdrs install: |
57 | cd libsyscall ; \ | |
58 | xcodebuild $@ $(TARGET) \ | |
cb323159 | 59 | $(MAKEOVERRIDES) \ |
39236c6e | 60 | "SRCROOT=$(SRCROOT)/libsyscall" \ |
39037602 A |
61 | "OBJROOT=$(OBJROOT)" \ |
62 | "SYMROOT=$(SYMROOT)" \ | |
39236c6e A |
63 | "DSTROOT=$(DSTROOT)" \ |
64 | "SDKROOT=$(SDKROOT)" | |
65 | ||
cb323159 A |
66 | Libsyscall_driverkit: install |
67 | ||
68 | .PHONY: Libsyscall_driverkit | |
69 | ||
39236c6e A |
70 | clean: |
71 | ||
72 | installsrc: | |
73 | pax -rw . $(SRCROOT) | |
74 | ||
f427ee49 | 75 | else ifneq ($(findstring libkxld_host,$(RC_ProjectName)),) |
39236c6e | 76 | |
fe8ab488 A |
77 | include $(MakeInc_cmd) |
78 | ||
39236c6e A |
79 | default: install |
80 | ||
81 | installhdrs install clean: | |
f427ee49 | 82 | $(MAKE) -C libkern/kxld $@ USE_APPLE_PB_SUPPORT=all PRODUCT_TYPE=ARCHIVE |
39236c6e A |
83 | |
84 | installsrc: | |
fe8ab488 A |
85 | $(_v)$(MKDIR) $(SRCROOT) |
86 | $(_v)$(FIND) -x . \! \( \( -name BUILD -o -name .svn -o -name .git -o -name cscope.\* -o -name \*~ \) -prune \) -print0 | $(PAX) -rw -p a -d0 $(SRCROOT) | |
87 | $(_v)$(CHMOD) -R go+rX $(SRCROOT) | |
39236c6e | 88 | |
f427ee49 | 89 | else ifneq ($(findstring libkxld,$(RC_ProjectName)),) |
39236c6e | 90 | |
fe8ab488 A |
91 | include $(MakeInc_cmd) |
92 | ||
39236c6e A |
93 | default: install |
94 | ||
95 | installhdrs install clean: | |
f427ee49 | 96 | $(MAKE) -C libkern/kxld $@ USE_APPLE_PB_SUPPORT=all |
39236c6e A |
97 | |
98 | installsrc: | |
fe8ab488 A |
99 | $(_v)$(MKDIR) $(SRCROOT) |
100 | $(_v)$(FIND) -x . \! \( \( -name BUILD -o -name .svn -o -name .git -o -name cscope.\* -o -name \*~ \) -prune \) -print0 | $(PAX) -rw -p a -d0 $(SRCROOT) | |
101 | $(_v)$(CHMOD) -R go+rX $(SRCROOT) | |
39236c6e | 102 | |
f427ee49 | 103 | else ifneq ($(findstring libkmod,$(RC_ProjectName)),) |
39236c6e A |
104 | |
105 | default: install | |
106 | ||
107 | installhdrs install: | |
108 | cd libkern/kmod ; \ | |
39037602 | 109 | xcodebuild $@ \ |
cb323159 | 110 | $(MAKEOVERRIDES) \ |
39236c6e | 111 | "SRCROOT=$(SRCROOT)/libkern/kmod" \ |
39037602 A |
112 | "OBJROOT=$(OBJROOT)" \ |
113 | "SYMROOT=$(SYMROOT)" \ | |
39236c6e A |
114 | "DSTROOT=$(DSTROOT)" \ |
115 | "SDKROOT=$(SDKROOT)" | |
116 | ||
117 | clean: | |
118 | ||
4bd07ac2 A |
119 | installsrc: |
120 | pax -rw . $(SRCROOT) | |
121 | ||
f427ee49 | 122 | else ifneq ($(findstring xnu_tests,$(RC_ProjectName)),) |
39236c6e | 123 | |
39037602 A |
124 | export SYSCTL_HW_PHYSICALCPU := $(shell /usr/sbin/sysctl -n hw.physicalcpu) |
125 | export SYSCTL_HW_LOGICALCPU := $(shell /usr/sbin/sysctl -n hw.logicalcpu) | |
cb323159 | 126 | MAKEJOBS := --jobs=$(shell expr $(SYSCTL_HW_LOGICALCPU) + 1) |
39037602 | 127 | |
39236c6e A |
128 | default: install |
129 | ||
130 | installhdrs: | |
131 | ||
4bd07ac2 | 132 | install: xnu_tests |
39236c6e A |
133 | |
134 | clean: | |
135 | ||
f427ee49 A |
136 | installsrc: |
137 | pax -rw . $(SRCROOT) | |
138 | ||
139 | else ifeq ($(RC_ProjectName),xnu_tests_driverkit) | |
140 | ||
141 | export SYSCTL_HW_PHYSICALCPU := $(shell /usr/sbin/sysctl -n hw.physicalcpu) | |
142 | export SYSCTL_HW_LOGICALCPU := $(shell /usr/sbin/sysctl -n hw.logicalcpu) | |
143 | MAKEJOBS := --jobs=$(shell expr $(SYSCTL_HW_LOGICALCPU) + 1) | |
144 | ||
145 | default: install | |
146 | ||
147 | installhdrs: | |
148 | ||
149 | install: xnu_tests_driverkit | |
150 | ||
151 | clean: | |
152 | ||
39236c6e A |
153 | installsrc: |
154 | pax -rw . $(SRCROOT) | |
155 | ||
156 | else # all other RC_ProjectName | |
157 | ||
158 | ifndef CURRENT_BUILD_CONFIG | |
159 | ||
160 | # avoid having to include MakeInc.cmd | |
161 | ifeq ($(RC_XBS),YES) | |
162 | _v = | |
163 | else ifeq ($(VERBOSE),YES) | |
164 | _v = | |
165 | else | |
166 | _v = @ | |
167 | endif | |
168 | ||
169 | # | |
fe8ab488 A |
170 | # Setup for parallel sub-makes, taking into account physical and logical |
171 | # CPUs. If the system does not support SMT, use N+1. | |
39236c6e A |
172 | # If MAKEJOBS or -jN is passed on the make line, that takes precedence. |
173 | # | |
fe8ab488 A |
174 | export SYSCTL_HW_PHYSICALCPU := $(shell /usr/sbin/sysctl -n hw.physicalcpu) |
175 | export SYSCTL_HW_LOGICALCPU := $(shell /usr/sbin/sysctl -n hw.logicalcpu) | |
cb323159 | 176 | MAKEJOBS := --jobs=$(shell expr $(SYSCTL_HW_LOGICALCPU) + 1) |
39236c6e | 177 | |
f427ee49 A |
178 | TOP_TARGETS = \ |
179 | clean \ | |
180 | installsrc \ | |
181 | exporthdrs \ | |
182 | all all_desktop all_embedded \ | |
183 | all_release_embedded all_development_embedded \ | |
184 | installhdrs installhdrs_desktop installhdrs_embedded \ | |
185 | installhdrs_release_embedded installhdrs_development_embedded \ | |
186 | install install_desktop install_embedded \ | |
187 | install_release_embedded install_development_embedded \ | |
188 | install_kernels \ | |
189 | installopensource \ | |
190 | cscope tags TAGS checkstyle restyle check_uncrustify uncrustify \ | |
fe8ab488 A |
191 | help |
192 | ||
3e170ce0 A |
193 | DEFAULT_TARGET = all |
194 | ||
fe8ab488 | 195 | # Targets for internal build system debugging |
f427ee49 A |
196 | TOP_TARGETS += \ |
197 | print_exports print_exports_first_build_config \ | |
198 | setup \ | |
199 | build \ | |
200 | config \ | |
201 | install_textfiles \ | |
fe8ab488 | 202 | install_config |
39236c6e | 203 | |
3e170ce0 A |
204 | ifeq ($(BUILD_JSON_COMPILATION_DATABASE),1) |
205 | MAKEARGS += -B | |
206 | DEFAULT_TARGET := build | |
207 | endif | |
208 | ||
39236c6e A |
209 | .PHONY: $(TOP_TARGETS) |
210 | ||
3e170ce0 | 211 | default: $(DEFAULT_TARGET) |
39236c6e A |
212 | |
213 | ifneq ($(REMOTEBUILD),) | |
214 | $(TOP_TARGETS): | |
fe8ab488 | 215 | $(_v)$(VERSDIR)/tools/remote_build.sh _REMOTEBUILD_TARGET=$@ _REMOTEBUILD_MAKE=$(MAKE) $(if $(filter --,$(MAKEFLAGS)),-,)$(MAKEFLAGS) |
39236c6e A |
216 | else |
217 | $(TOP_TARGETS): | |
3e170ce0 | 218 | $(_v)$(MAKE) $(MAKEARGS) -r $(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) -f $(MakeInc_top) $@ |
39236c6e A |
219 | endif |
220 | ||
221 | else # CURRENT_BUILD_CONFIG | |
1c79356b A |
222 | |
223 | include $(MakeInc_cmd) | |
224 | include $(MakeInc_def) | |
225 | ||
226 | ALL_SUBDIRS = \ | |
5ba3f43e | 227 | security \ |
39236c6e | 228 | bsd \ |
1c79356b A |
229 | iokit \ |
230 | osfmk \ | |
1c79356b A |
231 | pexpert \ |
232 | libkern \ | |
2d21ac55 | 233 | libsa \ |
5ba3f43e A |
234 | config \ |
235 | san | |
1c79356b | 236 | |
5ba3f43e | 237 | CONFIG_SUBDIRS = config tools san |
55e303ae | 238 | |
91447636 | 239 | INSTINC_SUBDIRS = $(ALL_SUBDIRS) EXTERNAL_HEADERS |
6d2010ae | 240 | INSTINC_SUBDIRS_X86_64 = $(INSTINC_SUBDIRS) |
fe8ab488 | 241 | INSTINC_SUBDIRS_X86_64H = $(INSTINC_SUBDIRS) |
6d2010ae | 242 | INSTINC_SUBDIRS_ARM = $(INSTINC_SUBDIRS) |
3e170ce0 | 243 | INSTINC_SUBDIRS_ARM64 = $(INSTINC_SUBDIRS) |
2d21ac55 | 244 | |
1c79356b | 245 | EXPINC_SUBDIRS = $(ALL_SUBDIRS) |
b0d623f7 | 246 | EXPINC_SUBDIRS_X86_64 = $(EXPINC_SUBDIRS) |
fe8ab488 | 247 | EXPINC_SUBDIRS_X86_64H = $(EXPINC_SUBDIRS) |
2d21ac55 | 248 | EXPINC_SUBDIRS_ARM = $(EXPINC_SUBDIRS) |
3e170ce0 | 249 | EXPINC_SUBDIRS_ARM64 = $(EXPINC_SUBDIRS) |
2d21ac55 | 250 | |
cb323159 | 251 | SETUP_SUBDIRS = SETUP san bsd |
b0d623f7 | 252 | |
b0d623f7 | 253 | COMP_SUBDIRS_X86_64 = $(ALL_SUBDIRS) |
fe8ab488 | 254 | COMP_SUBDIRS_X86_64H = $(ALL_SUBDIRS) |
b0d623f7 | 255 | COMP_SUBDIRS_ARM = $(ALL_SUBDIRS) |
3e170ce0 | 256 | COMP_SUBDIRS_ARM64 = $(ALL_SUBDIRS) |
55e303ae | 257 | |
fe8ab488 | 258 | INSTTEXTFILES_SUBDIRS = \ |
9bccf70c | 259 | bsd |
f427ee49 A |
260 | INSTTEXTFILES_SUBDIRS_X86_64 = $(INSTTEXTFILES_SUBDIRS) |
261 | INSTTEXTFILES_SUBDIRS_X86_64H = $(INSTTEXTFILES_SUBDIRS) | |
262 | INSTTEXTFILES_SUBDIRS_ARM = $(INSTTEXTFILES_SUBDIRS) | |
263 | INSTTEXTFILES_SUBDIRS_ARM64 = $(INSTTEXTFILES_SUBDIRS) | |
9bccf70c | 264 | |
39236c6e | 265 | include $(MakeInc_kernel) |
1c79356b A |
266 | include $(MakeInc_rule) |
267 | include $(MakeInc_dir) | |
6d2010ae | 268 | |
39236c6e A |
269 | endif # CURRENT_BUILD_CONFIG |
270 | ||
271 | endif # all other RC_ProjectName | |
272 | ||
a39ff7e2 | 273 | installapi_libkdd installhdrs_libkdd install_libkdd: |
3e170ce0 | 274 | cd libkdd; \ |
d9a64523 | 275 | xcodebuild -target Default $(subst _libkdd,,$@) \ |
cb323159 | 276 | $(MAKEOVERRIDES) \ |
d9a64523 A |
277 | "SRCROOT=$(SRCROOT)/libkdd" \ |
278 | "OBJROOT=$(OBJROOT)" \ | |
279 | "SYMROOT=$(SYMROOT)" \ | |
280 | "DSTROOT=$(DSTROOT)" \ | |
281 | "SDKROOT=$(SDKROOT)" | |
282 | ||
283 | ||
284 | installapi_libkdd_tests installhdrs_libkdd_tests install_libkdd_tests: | |
285 | cd libkdd; \ | |
286 | xcodebuild -target tests $(subst _libkdd_tests,,$@) \ | |
cb323159 | 287 | $(MAKEOVERRIDES) \ |
3e170ce0 | 288 | "SRCROOT=$(SRCROOT)/libkdd" \ |
39037602 A |
289 | "OBJROOT=$(OBJROOT)" \ |
290 | "SYMROOT=$(SYMROOT)" \ | |
3e170ce0 A |
291 | "DSTROOT=$(DSTROOT)" \ |
292 | "SDKROOT=$(SDKROOT)" | |
293 | ||
294 | ||
a39ff7e2 A |
295 | installapi_libkdd_host installhdrs_libkdd_host install_libkdd_host: |
296 | cd libkdd; \ | |
d9a64523 | 297 | xcodebuild -configuration ReleaseHost -target kdd.framework $(subst _libkdd_host,,$@) \ |
cb323159 | 298 | $(MAKEOVERRIDES) \ |
a39ff7e2 A |
299 | "SRCROOT=$(SRCROOT)/libkdd" \ |
300 | "OBJROOT=$(OBJROOT)" \ | |
301 | "SYMROOT=$(SYMROOT)" \ | |
302 | "DSTROOT=$(DSTROOT)" \ | |
303 | "SDKROOT=$(SDKROOT)" | |
304 | ||
305 | ||
4bd07ac2 A |
306 | # "xnu_tests" and "testbots" are targets that can be invoked via a standalone |
307 | # "make xnu_tests" or via buildit/XBS with the RC_ProjectName=xnu_tests. | |
39236c6e A |
308 | # Define the target here in the outermost scope of the initial Makefile |
309 | ||
39037602 A |
310 | xnu_tests: |
311 | $(MAKE) -C $(SRCROOT)/tools/tests $(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) \ | |
39236c6e | 312 | SRCROOT=$(SRCROOT)/tools/tests |
d9a64523 A |
313 | $(MAKE) -C $(SRCROOT)/tests $(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) \ |
314 | SRCROOT=$(SRCROOT)/tests | |
f427ee49 A |
315 | |
316 | xnu_tests_driverkit: | |
317 | $(MAKE) -C $(SRCROOT)/tests/driverkit $(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) \ | |
318 | SRCROOT=$(SRCROOT)/tests/driverkit | |
319 | ||
320 | # | |
321 | # The "analyze" target defined below invokes Clang Static Analyzer | |
322 | # with a predefined set of checks and options for the project. | |
323 | # | |
324 | ||
325 | # By default, analysis results are available in BUILD/StaticAnalyzer. | |
326 | # Set this variable in your make invocation to use a different directory. | |
327 | # Note that these results are only deleted when the build directory | |
328 | # is cleaned. They aren't deleted every time the analyzer is re-run, | |
329 | # but they are deleted after "make clean". | |
330 | STATIC_ANALYZER_OUTPUT_DIR ?= $(SRCROOT)/BUILD/StaticAnalyzer | |
331 | ||
332 | # By default, the default make target is analyzed. You can analyze | |
333 | # other targets by setting this variable in your make invocation. | |
334 | STATIC_ANALYZER_TARGET ?= | |
335 | ||
336 | # You can pass additional flags to scan-build by setting this variable | |
337 | # in your make invocation. For example, you can enable additional checks. | |
338 | STATIC_ANALYZER_EXTRA_FLAGS ?= | |
339 | ||
340 | analyze: | |
341 | # This is where the reports are going to be available. | |
342 | # Old reports are deleted on make clean only. | |
343 | mkdir -p $(STATIC_ANALYZER_OUTPUT_DIR) | |
344 | ||
345 | # Recursively build the requested target under scan-build. | |
346 | # Exclude checks that weren't deemed to be security critical, | |
347 | # like null pointer dereferences. | |
348 | xcrun scan-build -o $(STATIC_ANALYZER_OUTPUT_DIR) \ | |
349 | -disable-checker deadcode.DeadStores \ | |
350 | -disable-checker core.NullDereference \ | |
351 | -disable-checker core.DivideZero \ | |
352 | $(STATIC_ANALYZER_EXTRA_FLAGS) \ | |
353 | make $(STATIC_ANALYZER_TARGET) |