]>
Commit | Line | Data |
---|---|---|
1 | # | |
2 | # Copyright (C) 1999-2013 Apple Inc. All rights reserved. | |
3 | # | |
4 | ||
5 | ifndef VERSDIR | |
6 | export VERSDIR := $(shell /bin/pwd) | |
7 | endif | |
8 | ||
9 | ifndef SRCROOT | |
10 | export SRCROOT := $(shell /bin/pwd) | |
11 | endif | |
12 | ifndef OBJROOT | |
13 | export OBJROOT = $(SRCROOT)/BUILD/obj | |
14 | endif | |
15 | ifndef DSTROOT | |
16 | export DSTROOT = $(SRCROOT)/BUILD/dst | |
17 | endif | |
18 | ifndef SYMROOT | |
19 | export SYMROOT = $(SRCROOT)/BUILD/sym | |
20 | endif | |
21 | ||
22 | export MakeInc_top=${VERSDIR}/makedefs/MakeInc.top | |
23 | export MakeInc_kernel=${VERSDIR}/makedefs/MakeInc.kernel | |
24 | export MakeInc_cmd=${VERSDIR}/makedefs/MakeInc.cmd | |
25 | export MakeInc_def=${VERSDIR}/makedefs/MakeInc.def | |
26 | export MakeInc_rule=${VERSDIR}/makedefs/MakeInc.rule | |
27 | export MakeInc_dir=${VERSDIR}/makedefs/MakeInc.dir | |
28 | ||
29 | # | |
30 | # Dispatch non-xnu build aliases to their own build | |
31 | # systems. All xnu variants start with MakeInc_top. | |
32 | # | |
33 | ||
34 | ifeq ($(findstring Libsyscall,$(RC_ProjectName)),Libsyscall) | |
35 | ||
36 | ifeq ($(RC_ProjectName),Libsyscall_headers_Sim) | |
37 | TARGET=-target Libsyscall_headers_Sim | |
38 | endif | |
39 | ||
40 | default: install | |
41 | ||
42 | installhdrs install: | |
43 | cd libsyscall ; \ | |
44 | xcodebuild $@ $(TARGET) \ | |
45 | "SRCROOT=$(SRCROOT)/libsyscall" \ | |
46 | "OBJROOT=$(OBJROOT)" \ | |
47 | "SYMROOT=$(SYMROOT)" \ | |
48 | "DSTROOT=$(DSTROOT)" \ | |
49 | "SDKROOT=$(SDKROOT)" | |
50 | ||
51 | clean: | |
52 | ||
53 | installsrc: | |
54 | pax -rw . $(SRCROOT) | |
55 | ||
56 | else ifeq ($(RC_ProjectName),libkxld) | |
57 | ||
58 | include $(MakeInc_cmd) | |
59 | ||
60 | default: install | |
61 | ||
62 | installhdrs install clean: | |
63 | $(MAKE) -C libkern/kxld $@ USE_APPLE_PB_SUPPORT=all | |
64 | ||
65 | installsrc: | |
66 | $(_v)$(MKDIR) $(SRCROOT) | |
67 | $(_v)$(FIND) -x . \! \( \( -name BUILD -o -name .svn -o -name .git -o -name cscope.\* -o -name \*~ \) -prune \) -print0 | $(PAX) -rw -p a -d0 $(SRCROOT) | |
68 | $(_v)$(CHMOD) -R go+rX $(SRCROOT) | |
69 | ||
70 | else ifeq ($(RC_ProjectName),libkxld_host) | |
71 | ||
72 | include $(MakeInc_cmd) | |
73 | ||
74 | default: install | |
75 | ||
76 | installhdrs install clean: | |
77 | $(MAKE) -C libkern/kxld $@ USE_APPLE_PB_SUPPORT=all PRODUCT_TYPE=ARCHIVE | |
78 | ||
79 | installsrc: | |
80 | $(_v)$(MKDIR) $(SRCROOT) | |
81 | $(_v)$(FIND) -x . \! \( \( -name BUILD -o -name .svn -o -name .git -o -name cscope.\* -o -name \*~ \) -prune \) -print0 | $(PAX) -rw -p a -d0 $(SRCROOT) | |
82 | $(_v)$(CHMOD) -R go+rX $(SRCROOT) | |
83 | ||
84 | else ifeq ($(RC_ProjectName),libkmod) | |
85 | ||
86 | default: install | |
87 | ||
88 | installhdrs install: | |
89 | cd libkern/kmod ; \ | |
90 | xcodebuild $@ \ | |
91 | "SRCROOT=$(SRCROOT)/libkern/kmod" \ | |
92 | "OBJROOT=$(OBJROOT)" \ | |
93 | "SYMROOT=$(SYMROOT)" \ | |
94 | "DSTROOT=$(DSTROOT)" \ | |
95 | "SDKROOT=$(SDKROOT)" | |
96 | ||
97 | clean: | |
98 | ||
99 | installsrc: | |
100 | pax -rw . $(SRCROOT) | |
101 | ||
102 | else ifeq ($(RC_ProjectName),xnu_quick_test) | |
103 | ||
104 | default: install | |
105 | ||
106 | installhdrs: | |
107 | ||
108 | install: xnu_quick_test | |
109 | ||
110 | clean: | |
111 | ||
112 | installsrc: | |
113 | pax -rw . $(SRCROOT) | |
114 | ||
115 | else # all other RC_ProjectName | |
116 | ||
117 | ifndef CURRENT_BUILD_CONFIG | |
118 | ||
119 | # avoid having to include MakeInc.cmd | |
120 | ifeq ($(RC_XBS),YES) | |
121 | _v = | |
122 | else ifeq ($(VERBOSE),YES) | |
123 | _v = | |
124 | else | |
125 | _v = @ | |
126 | endif | |
127 | ||
128 | # | |
129 | # Setup for parallel sub-makes, taking into account physical and logical | |
130 | # CPUs. If the system does not support SMT, use N+1. | |
131 | # If MAKEJOBS or -jN is passed on the make line, that takes precedence. | |
132 | # | |
133 | export SYSCTL_HW_PHYSICALCPU := $(shell /usr/sbin/sysctl -n hw.physicalcpu) | |
134 | export SYSCTL_HW_LOGICALCPU := $(shell /usr/sbin/sysctl -n hw.logicalcpu) | |
135 | ifeq ($(SYSCTL_HW_PHYSICALCPU),$(SYSCTL_HW_LOGICALCPU)) | |
136 | MAKEJOBS := --jobs=$(shell expr $(SYSCTL_HW_PHYSICALCPU) + 1) | |
137 | else | |
138 | MAKEJOBS := --jobs=$(SYSCTL_HW_LOGICALCPU) | |
139 | endif | |
140 | ||
141 | TOP_TARGETS = \ | |
142 | clean \ | |
143 | installsrc \ | |
144 | exporthdrs \ | |
145 | all all_desktop all_embedded \ | |
146 | all_release_embedded all_development_embedded \ | |
147 | installhdrs installhdrs_desktop installhdrs_embedded \ | |
148 | installhdrs_release_embedded installhdrs_development_embedded \ | |
149 | install install_desktop install_embedded \ | |
150 | install_release_embedded install_development_embedded \ | |
151 | installopensource \ | |
152 | cscope tags TAGS reindent \ | |
153 | help | |
154 | ||
155 | DEFAULT_TARGET = all | |
156 | ||
157 | # Targets for internal build system debugging | |
158 | TOP_TARGETS += \ | |
159 | print_exports print_exports_first_build_config \ | |
160 | setup \ | |
161 | build \ | |
162 | config \ | |
163 | install_textfiles \ | |
164 | install_config | |
165 | ||
166 | ifeq ($(BUILD_JSON_COMPILATION_DATABASE),1) | |
167 | MAKEARGS += -B | |
168 | DEFAULT_TARGET := build | |
169 | endif | |
170 | ||
171 | .PHONY: $(TOP_TARGETS) | |
172 | ||
173 | default: $(DEFAULT_TARGET) | |
174 | ||
175 | ifneq ($(REMOTEBUILD),) | |
176 | $(TOP_TARGETS): | |
177 | $(_v)$(VERSDIR)/tools/remote_build.sh _REMOTEBUILD_TARGET=$@ _REMOTEBUILD_MAKE=$(MAKE) $(if $(filter --,$(MAKEFLAGS)),-,)$(MAKEFLAGS) | |
178 | else | |
179 | $(TOP_TARGETS): | |
180 | $(_v)$(MAKE) $(MAKEARGS) -r $(if $(filter -j,$(MAKEFLAGS)),,$(MAKEJOBS)) -f $(MakeInc_top) $@ | |
181 | endif | |
182 | ||
183 | else # CURRENT_BUILD_CONFIG | |
184 | ||
185 | include $(MakeInc_cmd) | |
186 | include $(MakeInc_def) | |
187 | ||
188 | ALL_SUBDIRS = \ | |
189 | bsd \ | |
190 | iokit \ | |
191 | osfmk \ | |
192 | pexpert \ | |
193 | libkern \ | |
194 | libsa \ | |
195 | security \ | |
196 | config | |
197 | ||
198 | CONFIG_SUBDIRS = config tools | |
199 | ||
200 | INSTINC_SUBDIRS = $(ALL_SUBDIRS) EXTERNAL_HEADERS | |
201 | INSTINC_SUBDIRS_X86_64 = $(INSTINC_SUBDIRS) | |
202 | INSTINC_SUBDIRS_X86_64H = $(INSTINC_SUBDIRS) | |
203 | INSTINC_SUBDIRS_ARM = $(INSTINC_SUBDIRS) | |
204 | INSTINC_SUBDIRS_ARM64 = $(INSTINC_SUBDIRS) | |
205 | ||
206 | EXPINC_SUBDIRS = $(ALL_SUBDIRS) | |
207 | EXPINC_SUBDIRS_X86_64 = $(EXPINC_SUBDIRS) | |
208 | EXPINC_SUBDIRS_X86_64H = $(EXPINC_SUBDIRS) | |
209 | EXPINC_SUBDIRS_ARM = $(EXPINC_SUBDIRS) | |
210 | EXPINC_SUBDIRS_ARM64 = $(EXPINC_SUBDIRS) | |
211 | ||
212 | SETUP_SUBDIRS = SETUP | |
213 | ||
214 | COMP_SUBDIRS_X86_64 = $(ALL_SUBDIRS) | |
215 | COMP_SUBDIRS_X86_64H = $(ALL_SUBDIRS) | |
216 | COMP_SUBDIRS_ARM = $(ALL_SUBDIRS) | |
217 | COMP_SUBDIRS_ARM64 = $(ALL_SUBDIRS) | |
218 | ||
219 | INSTTEXTFILES_SUBDIRS = \ | |
220 | bsd | |
221 | ||
222 | include $(MakeInc_kernel) | |
223 | include $(MakeInc_rule) | |
224 | include $(MakeInc_dir) | |
225 | ||
226 | endif # CURRENT_BUILD_CONFIG | |
227 | ||
228 | endif # all other RC_ProjectName | |
229 | ||
230 | installhdrs_libkdd install_libkdd: | |
231 | cd libkdd; \ | |
232 | xcodebuild $(subst _libkdd,,$@) \ | |
233 | "SRCROOT=$(SRCROOT)/libkdd" \ | |
234 | "OBJROOT=$(OBJROOT)" \ | |
235 | "SYMROOT=$(SYMROOT)" \ | |
236 | "DSTROOT=$(DSTROOT)" \ | |
237 | "SDKROOT=$(SDKROOT)" | |
238 | ||
239 | ||
240 | # "xnu_quick_test" and "testbots" are targets that can be invoked via a standalone | |
241 | # "make xnu_quick_test" or via buildit/XBS with the RC_ProjectName=xnu_quick_test. | |
242 | # Define the target here in the outermost scope of the initial Makefile | |
243 | ||
244 | xnu_quick_test: | |
245 | $(MAKE) -C $(SRCROOT)/tools/tests \ | |
246 | SRCROOT=$(SRCROOT)/tools/tests | |
247 | ||
248 | # This target is defined to compile and run xnu_quick_test under testbots | |
249 | testbots: | |
250 | $(MAKE) -C $(SRCROOT)/tools/tests/xnu_quick_test \ | |
251 | SRCROOT=$(SRCROOT)/tools/tests/xnu_quick_test \ | |
252 | MORECFLAGS="-DRUN_UNDER_TESTBOTS=1" \ | |
253 | MAKE=$(MAKE) \ | |
254 | testbots |