]>
Commit | Line | Data |
---|---|---|
39236c6e A |
1 | # -*- mode: makefile;-*- |
2 | # | |
3 | # Copyright (C) 1999-2012 Apple Inc. All rights reserved. | |
4 | # | |
5 | # MakeInc.kernel augments the single-architecture | |
6 | # recursive build system with rules specific | |
7 | # to assembling and linking a kernel. | |
8 | # | |
9 | ||
10 | # | |
11 | # Validate configuration options | |
12 | # | |
13 | ifeq ($(filter $(CURRENT_ARCH_CONFIG),$(SUPPORTED_ARCH_CONFIGS)),) | |
14 | $(error Unsupported CURRENT_ARCH_CONFIG $(CURRENT_ARCH_CONFIG)) | |
15 | endif | |
16 | ||
17 | ifeq ($(filter $(CURRENT_KERNEL_CONFIG),$(SUPPORTED_KERNEL_CONFIGS)),) | |
18 | $(error Unsupported CURRENT_KERNEL_CONFIG $(CURRENT_KERNEL_CONFIG)) | |
19 | endif | |
20 | ||
21 | ifeq ($(filter $(CURRENT_MACHINE_CONFIG),$(SUPPORTED_$(CURRENT_ARCH_CONFIG)_MACHINE_CONFIGS)),) | |
22 | $(error Unsupported CURRENT_MACHINE_CONFIG $(CURRENT_MACHINE_CONFIG)) | |
23 | endif | |
24 | ||
25 | ifeq ($(filter $(PLATFORM),$(SUPPORTED_PLATFORMS)),) | |
26 | $(error Unsupported PLATFORM $(PLATFORM)) | |
27 | endif | |
28 | ||
29 | STATIC_KMODS = $(SRCROOT)/kmods.a | |
30 | ||
31 | # | |
32 | # File names in DSTROOT | |
33 | # | |
34 | ||
35 | KERNEL_FILE_NAME_SUFFIX = | |
36 | ||
37 | KERNEL_FILE_NAME = mach_kernel$(KERNEL_FILE_NAME_SUFFIX) | |
38 | ||
39 | ifeq ($(CURRENT_MACHINE_CONFIG),NONE) | |
40 | ALT_KERNEL_FILE_NAME = mach$(KERNEL_FILE_NAME_SUFFIX).$(CURRENT_KERNEL_CONFIG_LC) | |
41 | ALT_KERNEL_LLDBBOOTSTRAP_NAME = mach$(KERNEL_FILE_NAME_SUFFIX).py | |
42 | else | |
43 | ALT_KERNEL_FILE_NAME = mach$(KERNEL_FILE_NAME_SUFFIX).$(CURRENT_KERNEL_CONFIG_LC).$(CURRENT_MACHINE_CONFIG_LC) | |
44 | ALT_KERNEL_LLDBBOOTSTRAP_NAME = mach$(KERNEL_FILE_NAME_SUFFIX)_$(CURRENT_KERNEL_CONFIG_LC).py | |
45 | endif | |
46 | ||
47 | # | |
48 | # Rules for the highly parallel "build" phase, where each build configuration | |
49 | # writes into their own $(TARGET) independent of other build configs | |
50 | # | |
51 | ||
52 | do_build_all:: do_build_mach_kernel | |
53 | ||
54 | .PHONY: do_build_mach_kernel | |
55 | ||
56 | do_build_mach_kernel: $(TARGET)/mach_kernel $(TARGET)/mach_kernel.sys | |
57 | $(_v)if [ $(CURRENT_MACHINE_CONFIG) != NONE ] ; then \ | |
58 | $(LN) $(call function_convert_build_config_to_objdir,$(CURRENT_BUILD_CONFIG))/mach_kernel $(OBJROOT)/mach.$(CURRENT_KERNEL_CONFIG_LC).$(CURRENT_MACHINE_CONFIG_LC); \ | |
59 | fi; | |
60 | ||
61 | ifeq ($(BUILD_DSYM),1) | |
62 | do_build_all:: do_build_mach_kernel_dSYM | |
63 | endif | |
64 | ||
65 | .PHONY: do_build_mach_kernel_dSYM | |
66 | ||
67 | do_build_mach_kernel_dSYM: $(TARGET)/mach_kernel.sys.dSYM | |
68 | @: | |
69 | ||
70 | $(TARGET)/mach_kernel: $(TARGET)/mach_kernel.sys | |
71 | @echo STRIP mach_kernel | |
72 | $(_v)$(STRIP) $(STRIP_FLAGS) $< -o $@ | |
73 | $(_v)$(RM) $@.ctfdata | |
74 | ifeq ($(DO_CTFMERGE),1) | |
75 | @echo CTFMERGE mach_kernel | |
76 | $(_v)$(FIND) $(TARGET)/ -name \*.ctf -size +0 | \ | |
77 | $(XARGS) $(CTFMERGE) -l xnu -o $@ -Z $@.ctfdata || true | |
78 | endif | |
79 | $(_v)if [ -s $@.ctfdata ]; then \ | |
80 | echo CTFINSERT mach_kernel; \ | |
81 | $(CTFINSERT) $@ $(ARCH_FLAGS_$(CURRENT_ARCH_CONFIG)) \ | |
82 | $@.ctfdata -o $@; \ | |
83 | fi; | |
84 | ||
85 | $(TARGET)/mach_kernel.sys.dSYM: $(TARGET)/mach_kernel.sys | |
86 | $(_v)echo DSYMUTIL mach_kernel.sys | |
87 | $(_v)$(DSYMUTIL) $(DSYMUTIL_FLAGS) $< -o $@ | |
88 | $(_v)$(TOUCH) $@ | |
89 | ||
90 | $(TARGET)/mach_kernel.sys: $(addprefix $(TARGET)/,$(foreach component,$(COMPONENT_LIST),$(component)/$(CURRENT_KERNEL_CONFIG)/$(component).filelist)) lastkernelconstructor.o $(SRCROOT)/config/version.c $(SRCROOT)/config/MasterVersion | |
91 | $(_v)${MAKE} -f $(firstword $(MAKEFILE_LIST)) version.o | |
92 | @echo LD mach_kernel.sys | |
93 | $(_v)$(CAT) $(filter %.filelist,$+) < /dev/null > link.filelist | |
94 | $(_v)$(LD) $(LDFLAGS_KERNEL) -filelist link.filelist version.o $(filter %.o,$+) `if [ -e $(STATIC_KMODS) ]; then echo $(STATIC_KMODS); fi` \ | |
95 | -o $@ $(LD_KERNEL_LIBS) | |
96 | ||
97 | version.o: $(OBJPATH)/version.c | |
98 | ${C_RULE_1A}$< | |
99 | ${C_RULE_2} | |
100 | ${C_RULE_4} | |
101 | ||
102 | # Always recreate version.sh | |
103 | $(OBJPATH)/version.c: $(SRCROOT)/config/version.c $(NEWVERS) $(SRCROOT)/config/MasterVersion ALWAYS | |
104 | $(_v)$(CP) $< $@ | |
105 | $(_v)$(NEWVERS) $(OBJPATH)/version.c > /dev/null; | |
106 | ||
107 | lastkernelconstructor.o: $(SRCROOT)/libsa/lastkernelconstructor.c | |
108 | ${C_RULE_1A}$< $(CFLAGS_NOLTO_FLAG) | |
109 | ${C_RULE_2} | |
110 | ${C_RULE_3} | |
111 | ${C_RULE_4} | |
112 | $(_v)$(SEG_HACK) -s __DATA -n __LAST -o $@__ $@ | |
113 | $(_v)$(MV) $@__ $@ | |
114 | ||
115 | # invalidate current kernel in $(SYMROOT) | |
116 | do_build_setup:: | |
117 | $(_v)$(TOUCH) $(OBJROOT)/.mach_kernel.timestamp | |
118 | $(_v)$(TOUCH) $(OBJROOT)/.symbolset.timestamp | |
119 | ||
120 | # | |
121 | # Install rules. Each build config is classified as "primary" (the first | |
122 | # config for an architecture) or "non-primary". Primary build configs | |
123 | # have the semantic of competing to *combine* single-architecture | |
124 | # files into a multi-architecture output in the DSTROOT, like | |
125 | # $(DSTROOT)/mach_kernel, and consequently each primary build config | |
126 | # has its install target run serially with respect to other primary | |
127 | # build configs. Non-primary build configs will never compete for | |
128 | # files in the DSTROOT or SYMROOT, and can be installed in parallel | |
129 | # with other non-primary configs (and even primary configs) | |
130 | # | |
131 | ||
132 | do_build_install_primary:: do_install_kernel_framework | |
133 | ||
134 | ifeq ($(INSTALL_PRIMARY_KERNEL_LIKE_NON_PRIMARY),1) | |
135 | do_build_install_primary:: do_install_machine_specific_kernel | |
136 | ifeq ($(BUILD_DSYM),1) | |
137 | do_build_install_primary:: do_install_machine_specific_kernel_dSYM | |
138 | endif | |
139 | else | |
140 | do_build_install_primary:: do_install_mach_kernel | |
141 | ifeq ($(BUILD_DSYM),1) | |
142 | do_build_install_primary:: do_install_mach_kernel_dSYM | |
143 | endif | |
144 | endif | |
145 | ||
146 | do_build_install_non_primary:: do_install_machine_specific_kernel | |
147 | ifeq ($(BUILD_DSYM),1) | |
148 | do_build_install_non_primary:: do_install_machine_specific_kernel_dSYM | |
149 | endif | |
150 | ||
151 | ifeq ($(BUILD_DSYM),1) | |
152 | ifeq ($(INSTALL_KERNEL_SYM_TO_KDK),1) | |
153 | do_build_install_primary:: do_install_machine_specific_KDK_dSYM | |
154 | do_build_install_non_primary:: do_install_machine_specific_KDK_dSYM | |
155 | endif | |
156 | endif | |
157 | ||
158 | ifeq ($(INSTALL_XNU_DEBUG_FILES),1) | |
159 | do_build_install_primary:: do_install_xnu_debug_files | |
160 | ifeq ($(BUILD_DSYM),1) | |
161 | do_build_install_primary:: do_install_xnu_debug_mach_kernel_dSYM | |
162 | endif | |
163 | endif | |
164 | ||
165 | .PHONY: do_install_mach_kernel do_install_mach_kernel_dSYM do_install_xnu_debug_files do_install_xnu_debug_mach_kernel_dSYM | |
166 | ||
167 | do_install_mach_kernel: $(DSTROOT)/$(INSTALL_KERNEL_DIR)/$(KERNEL_FILE_NAME) \ | |
168 | $(SYMROOT)/$(KERNEL_FILE_NAME) | |
169 | ||
170 | do_install_mach_kernel_dSYM: \ | |
171 | $(SYMROOT)/$(KERNEL_FILE_NAME).dSYM/$(DSYMINFODIR)/Info.plist \ | |
172 | $(SYMROOT)/$(KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/lldbmacros \ | |
173 | $(SYMROOT)/$(KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/$(KERNEL_FILE_NAME).py \ | |
174 | $(SYMROOT)/$(KERNEL_FILE_NAME).dSYM/$(DSYMDWARFDIR)/$(KERNEL_FILE_NAME) | |
175 | @: | |
176 | ||
177 | do_install_xnu_debug_files: $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/README.DEBUG-kernel.txt | |
178 | @: | |
179 | ||
180 | do_install_xnu_debug_mach_kernel_dSYM: \ | |
181 | $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/$(KERNEL_FILE_NAME).dSYM/$(DSYMINFODIR)/Info.plist \ | |
182 | $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/$(KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/lldbmacros \ | |
183 | $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/$(KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/$(KERNEL_FILE_NAME).py \ | |
184 | $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/$(KERNEL_FILE_NAME).dSYM/$(DSYMDWARFDIR)/$(KERNEL_FILE_NAME) | |
185 | @: | |
186 | ||
187 | # | |
188 | # If the timestamp indicates the DSTROOT kernel is out of | |
189 | # date, start over. Normal dependencies don't work because we can have | |
190 | # ( BUILDA, BUILDB, INSTALLB, INSTALLA ) in which case at INSTALLA time | |
191 | # the timestamps would $(DSTROOT)/mach_kernel is not out of date compared | |
192 | # to BUILDA. So we maintain a separate file at the time make(1) | |
193 | # was run and use it to determine what actions to take | |
194 | # | |
195 | ||
196 | $(DSTROOT)/$(INSTALL_KERNEL_DIR)/$(KERNEL_FILE_NAME): $(TARGET)/mach_kernel ALWAYS | |
197 | $(_v)$(MKDIR) $(dir $@) | |
198 | $(_v)if [ $(OBJROOT)/.mach_kernel.timestamp -nt $@ ]; then \ | |
199 | echo INSTALL $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))"; \ | |
200 | $(INSTALL) $(EXEC_INSTALL_FLAGS) $< $@; \ | |
201 | cmdstatus=$$?; \ | |
202 | else \ | |
203 | echo INSTALL $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))"; \ | |
204 | $(LIPO) -create $@ $< -output $@; \ | |
205 | cmdstatus=$$?; \ | |
206 | fi; \ | |
207 | exit $$cmdstatus | |
208 | ||
209 | $(SYMROOT)/$(KERNEL_FILE_NAME): $(TARGET)/mach_kernel.sys ALWAYS | |
210 | $(_v)$(MKDIR) $(dir $@) | |
211 | $(_v)if [ $(OBJROOT)/.mach_kernel.timestamp -nt $@ ]; then \ | |
212 | echo INSTALLSYM $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))"; \ | |
213 | $(INSTALL) $(EXEC_INSTALL_FLAGS) $< $@; \ | |
214 | cmdstatus=$$?; \ | |
215 | else \ | |
216 | echo INSTALLSYM $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))"; \ | |
217 | $(LIPO) -create $@ $< -output $@; \ | |
218 | cmdstatus=$$?; \ | |
219 | fi; \ | |
220 | exit $$cmdstatus | |
221 | ||
222 | $(SYMROOT)/$(KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/lldbmacros $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/$(KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/lldbmacros: $(TARGET)/$(DSYMKERNELSYSDIR)/$(DSYMLLDBMACROSDIR)/lldbmacros | |
223 | $(_v)$(MKDIR) $(dir $@) | |
224 | @echo INSTALLMACROS $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))" | |
225 | $(_v)$(CP) -r $< $(dir $@) | |
226 | $(_v)$(TOUCH) $@ | |
227 | ||
228 | $(SYMROOT)/$(KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/$(KERNEL_FILE_NAME).py $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/$(KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/$(KERNEL_FILE_NAME).py: $(TARGET)/$(DSYMKERNELSYSDIR)/$(DSYMLLDBMACROSDIR)/lldbmacros/core/xnu_lldb_init.py | |
229 | $(_v)$(MKDIR) $(dir $@) | |
230 | @echo INSTALLMACROS $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))" | |
231 | $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ | |
232 | ||
233 | $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/README.DEBUG-kernel.txt: $(SRCROOT)/config/README.DEBUG-kernel.txt | |
234 | $(_v)$(MKDIR) $(dir $@) | |
235 | @echo INSTALL $(notdir $@) | |
236 | $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ | |
237 | ||
238 | $(SYMROOT)/$(KERNEL_FILE_NAME).dSYM/$(DSYMINFODIR)/Info.plist $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/$(KERNEL_FILE_NAME).dSYM/$(DSYMINFODIR)/Info.plist: $(TARGET)/$(DSYMKERNELSYSDIR)/$(DSYMINFODIR)/Info.plist | |
239 | $(_v)$(MKDIR) $(dir $@) | |
240 | @echo INSTALLSYM dSYM $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))" | |
241 | $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ | |
242 | ||
243 | $(SYMROOT)/$(KERNEL_FILE_NAME).dSYM/$(DSYMDWARFDIR)/$(KERNEL_FILE_NAME) $(DSTROOT)/$(DEVELOPER_EXTRAS_DIR)/$(KERNEL_FILE_NAME).dSYM/$(DSYMDWARFDIR)/$(KERNEL_FILE_NAME): $(TARGET)/$(DSYMKERNELSYSDIR)/$(DSYMDWARFDIR)/mach_kernel.sys ALWAYS | |
244 | $(_v)$(MKDIR) $(dir $@) | |
245 | $(_v)if [ $(OBJROOT)/.mach_kernel.timestamp -nt $@ ]; then \ | |
246 | echo INSTALLSYM dSYM $(notdir $@).dSYM "($(CURRENT_ARCH_CONFIG_LC))"; \ | |
247 | $(INSTALL) $(EXEC_INSTALL_FLAGS) $< $@; \ | |
248 | cmdstatus=$$?; \ | |
249 | else \ | |
250 | echo INSTALLSYM dSYM $(notdir $@).dSYM "($(CURRENT_ARCH_CONFIG_LC))"; \ | |
251 | $(LIPO) -create $@ $< -output $@; \ | |
252 | cmdstatus=$$?; \ | |
253 | fi; \ | |
254 | exit $$cmdstatus | |
255 | ||
256 | .PHONY: do_install_machine_specific_kernel do_install_machine_specific_kernel_dSYM | |
257 | ||
258 | do_install_machine_specific_kernel: $(DSTROOT)/$(ALT_KERNEL_FILE_NAME) \ | |
259 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME) | |
260 | @: | |
261 | ||
262 | do_install_machine_specific_kernel_dSYM: \ | |
263 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMINFODIR)/Info.plist \ | |
264 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/lldbmacros \ | |
265 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/$(ALT_KERNEL_LLDBBOOTSTRAP_NAME) \ | |
266 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMDWARFDIR)/$(ALT_KERNEL_FILE_NAME) | |
267 | @: | |
268 | ||
269 | .PHONY: do_install_machine_specific_KDK_dSYM | |
270 | ||
271 | do_install_machine_specific_KDK_dSYM: \ | |
272 | $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME) \ | |
273 | $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMINFODIR)/Info.plist \ | |
274 | $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/lldbmacros \ | |
275 | $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/$(ALT_KERNEL_LLDBBOOTSTRAP_NAME) \ | |
276 | $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMDWARFDIR)/$(ALT_KERNEL_FILE_NAME) | |
277 | @: | |
278 | ||
279 | $(DSTROOT)/$(ALT_KERNEL_FILE_NAME): $(TARGET)/mach_kernel ALWAYS | |
280 | $(_v)$(MKDIR) $(dir $@) | |
281 | $(_v)if [ $(OBJROOT)/.mach_kernel.timestamp -nt $@ ]; then \ | |
282 | echo INSTALL $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC) $(CURRENT_MACHINE_CONFIG_LC))"; \ | |
283 | $(INSTALL) $(EXEC_INSTALL_FLAGS) $< $@; \ | |
284 | cmdstatus=$$?; \ | |
285 | else \ | |
286 | echo INSTALL $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC) $(CURRENT_MACHINE_CONFIG_LC))"; \ | |
287 | $(LIPO) -create $@ $< -output $@; \ | |
288 | cmdstatus=$$?; \ | |
289 | fi; \ | |
290 | exit $$cmdstatus | |
291 | ||
292 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME) $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME): $(TARGET)/mach_kernel.sys ALWAYS | |
293 | $(_v)$(MKDIR) $(dir $@) | |
294 | $(_v)if [ $(OBJROOT)/.mach_kernel.timestamp -nt $@ ]; then \ | |
295 | echo INSTALLSYM $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC) $(CURRENT_MACHINE_CONFIG_LC))"; \ | |
296 | $(INSTALL) $(EXEC_INSTALL_FLAGS) $< $@; \ | |
297 | cmdstatus=$$?; \ | |
298 | else \ | |
299 | echo INSTALLSYM $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC) $(CURRENT_MACHINE_CONFIG_LC))"; \ | |
300 | $(LIPO) -create $@ $< -output $@; \ | |
301 | cmdstatus=$$?; \ | |
302 | fi; \ | |
303 | exit $$cmdstatus | |
304 | ||
305 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMINFODIR)/Info.plist $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMINFODIR)/Info.plist: $(TARGET)/$(DSYMKERNELSYSDIR)/$(DSYMINFODIR)/Info.plist | |
306 | $(_v)$(MKDIR) $(dir $@) | |
307 | @echo INSTALLSYM dSYM $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC) $(CURRENT_MACHINE_CONFIG_LC))" | |
308 | ifeq ($(USE_BINARY_PLIST),1) | |
309 | $(_v)$(PLUTIL) -convert binary1 -o $@ $< | |
310 | else | |
311 | $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ | |
312 | endif | |
313 | ||
314 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/lldbmacros $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/lldbmacros: $(TARGET)/$(DSYMKERNELSYSDIR)/$(DSYMLLDBMACROSDIR)/lldbmacros | |
315 | $(_v)$(MKDIR) $(dir $@) | |
316 | @echo INSTALLMACROS $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))" | |
317 | $(_v)$(CP) -r $< $(dir $@) | |
318 | $(_v)$(TOUCH) $@ | |
319 | ||
320 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/$(ALT_KERNEL_LLDBBOOTSTRAP_NAME) $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMLLDBMACROSDIR)/$(ALT_KERNEL_LLDBBOOTSTRAP_NAME): $(TARGET)/$(DSYMKERNELSYSDIR)/$(DSYMLLDBMACROSDIR)/lldbmacros/core/xnu_lldb_init.py | |
321 | $(_v)$(MKDIR) $(dir $@) | |
322 | @echo INSTALLMACROS $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC) $(CURRENT_MACHINE_CONFIG_LC))" | |
323 | $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ | |
324 | ||
325 | $(SYMROOT)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMDWARFDIR)/$(ALT_KERNEL_FILE_NAME) $(DSTROOT)/$(INSTALL_KERNEL_SYM_DIR)/$(ALT_KERNEL_FILE_NAME).dSYM/$(DSYMDWARFDIR)/$(ALT_KERNEL_FILE_NAME): $(TARGET)/$(DSYMKERNELSYSDIR)/$(DSYMDWARFDIR)/mach_kernel.sys ALWAYS | |
326 | $(_v)$(MKDIR) $(dir $@) | |
327 | $(_v)if [ $(OBJROOT)/.mach_kernel.timestamp -nt $@ ]; then \ | |
328 | echo INSTALLSYM dSYM $(notdir $@).dSYM "($(CURRENT_ARCH_CONFIG_LC) $(CURRENT_MACHINE_CONFIG_LC))"; \ | |
329 | $(INSTALL) $(EXEC_INSTALL_FLAGS) $< $@; \ | |
330 | cmdstatus=$$?; \ | |
331 | else \ | |
332 | echo INSTALLSYM dSYM $(notdir $@).dSYM "($(CURRENT_ARCH_CONFIG_LC) $(CURRENT_MACHINE_CONFIG_LC))"; \ | |
333 | $(LIPO) -create $@ $< -output $@; \ | |
334 | cmdstatus=$$?; \ | |
335 | fi; \ | |
336 | exit $$cmdstatus | |
337 | ||
338 | # The $(RM) is needed so that the $(LN) doesn't dereference an existing | |
339 | # symlink during incremental builds and create a new symlink inside | |
340 | # the target of the existing symlink | |
341 | do_installhdrs_mi:: | |
342 | $(_v)$(MKDIR) $(DSTROOT)/$(KINCFRAME) | |
343 | $(_v)$(MKDIR) $(DSTROOT)/$(KPINCDIR) | |
344 | $(_v)$(RM) $(DSTROOT)/$(KINCFRAME)/Versions/Current | |
345 | $(_v)$(LN) $(KINCVERS) $(DSTROOT)/$(KINCFRAME)/Versions/Current | |
346 | $(_v)$(RM) $(DSTROOT)/$(KINCFRAME)/Headers | |
347 | $(_v)$(LN) Versions/Current/Headers \ | |
348 | $(DSTROOT)/$(KINCFRAME)/Headers | |
349 | $(_v)$(RM) $(DSTROOT)/$(KINCFRAME)/PrivateHeaders | |
350 | $(_v)$(LN) Versions/Current/PrivateHeaders \ | |
351 | $(DSTROOT)/$(KINCFRAME)/PrivateHeaders | |
352 | ifeq ($(INSTALL_SYSTEM_FRAMEWORK_SYMLINKS),1) | |
353 | $(_v)$(MKDIR) $(DSTROOT)/$(SINCFRAME)/Versions | |
354 | $(_v)$(RM) $(DSTROOT)/$(SINCFRAME)/Versions/Current | |
355 | $(_v)$(LN) $(SINCVERS) $(DSTROOT)/$(SINCFRAME)/Versions/Current | |
356 | $(_v)$(RM) $(DSTROOT)/$(SINCFRAME)/PrivateHeaders | |
357 | $(_v)$(LN) Versions/Current/PrivateHeaders \ | |
358 | $(DSTROOT)/$(SINCFRAME)/PrivateHeaders | |
359 | endif | |
360 | ||
361 | $(DSTROOT)/$(KRESDIR)/Info.plist: $(SOURCE)/EXTERNAL_HEADERS/Info.plist | |
362 | $(_v)$(MKDIR) $(DSTROOT)/$(KRESDIR) | |
363 | $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@ | |
364 | $(_v)$(NEWVERS) $@ $(_vstdout) | |
365 | ifeq ($(USE_BINARY_PLIST),1) | |
366 | $(_v)$(PLUTIL) -convert binary1 -o $@ $@ | |
367 | endif | |
368 | ||
369 | .PHONY: do_install_kernel_framework | |
370 | ||
371 | do_install_kernel_framework: $(DSTROOT)/$(KRESDIR)/Info.plist | |
372 | $(_v)$(MKDIR) $(DSTROOT)/$(KRESDIR) | |
373 | $(_v)$(RM) $(DSTROOT)/$(KINCFRAME)/Resources | |
374 | $(_v)$(LN) Versions/Current/Resources \ | |
375 | $(DSTROOT)/$(KINCFRAME)/Resources | |
376 | ifeq ($(DELETE_KERNEL_FRAMEWORK_AND_MISC),1) | |
377 | $(_v)$(FIND) $(DSTROOT)/$(KINCFRAME) \ | |
378 | $(DSTROOT)/$(INSTALL_EXTENSIONS_DIR) \ | |
379 | $(DSTROOT)/$(INSTALL_SHARE_MISC_DIR) \ | |
380 | $(DSTROOT)/$(INSTALL_DTRACE_SCRIPTS_DIR) \ | |
381 | \( -type f -o -type l \) -exec $(RM) "{}" \; | |
382 | $(_v)$(FIND) -d $(DSTROOT)/$(KINCFRAME) \ | |
383 | $(DSTROOT)/$(INSTALL_EXTENSIONS_DIR) \ | |
384 | $(DSTROOT)/$(INSTALL_SHARE_MISC_DIR) \ | |
385 | $(DSTROOT)/$(INSTALL_DTRACE_SCRIPTS_DIR) \ | |
386 | \( -type d \) -exec $(RMDIR) "{}" \; | |
387 | endif | |
388 | ||
389 | print_exports: | |
390 | $(_v)printenv | sort |