1 # -*- mode: makefile;-*-
3 # Copyright (C) 1999-2020 Apple Inc. All rights reserved.
5 # MakeInc.rule defines the targets and rules for
6 # leaf directories once MakeInc.dir has recursed
7 # into them. "do_XXX" may be double-colon rules
8 # to allow the Makefile in the source directory
9 # to augment the actions that will be performed.
11 include $(SRCROOT)/makedefs/MakeInc.color
14 # Generic Install rules
17 ifndef INSTALL_KF_MI_LCL_LIST
18 INSTALL_KF_MI_LCL_LIST = $(EXPORT_MI_LIST)
21 ifndef INSTALL_KF_MI_LCL_GEN_LIST
22 INSTALL_KF_MI_LCL_GEN_LIST = $(EXPORT_MI_GEN_LIST)
25 ifndef INSTALL_KF_MD_LCL_LIST
26 INSTALL_KF_MD_LCL_LIST = $(EXPORT_MD_LIST)
29 ifndef INSTALL_KF_MD_LCL_GEN_LIST
30 INSTALL_KF_MD_LCL_GEN_LIST = $(EXPORT_MD_GEN_LIST)
33 ifndef INSTALL_KF_MI_LIST
34 INSTALL_KF_MI_LIST = $(EXPORT_MI_LIST)
37 ifndef INSTALL_KF_MI_GEN_LIST
38 INSTALL_KF_MI_GEN_LIST = $(EXPORT_MI_GEN_LIST)
41 ifndef INSTALL_KF_MD_LIST
42 INSTALL_KF_MD_LIST = $(EXPORT_MD_LIST)
45 ifndef INSTALL_KF_MD_GEN_LIST
46 INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST)
49 $(eval $(call _setup_build_log_colors))
55 # $(1) is the list of install paths
56 # $(2) is "1" if it's a "GEN"-style rule that looks locally, or else $(SOURCE)
57 # $(3) is the local temp directory for processing
58 # $(4) is the unifdef flags
60 # $$$$$$$$ is a double-escaped "$$" to represent the current pid
61 # of the shell process for creating uniquely named temporary files
63 define INSTALLHDRS_RULE_template
68 $$(_v)$$(MKDIR) ./$(3)
69 $$(_v)$$(MKDIR) $(dir $(firstword $(1)))
71 # Rebuild if unifdef flags change
72 $(1): $(3)/.UNIFDEF_FLAGS
73 $(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR
74 $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) $(4)
76 $(1): $(dir $(firstword $(1)))% : $(if $(2),%,$$(SOURCE)/%) | $(3)_MKDIR
77 @$$(LOG_INSTALLHDR) "$$*"
78 $$(_v)$$(UNIFDEF) $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$; \
79 if [ $$$$? -eq 2 ]; then \
80 $(ERR) Parse failure for $$<; \
83 $$(DECOMMENT) ./$(3)/$$*.unifdef.$$$$$$$$ r > \
84 ./$(3)/$$*.strip.$$$$$$$$ || exit 1; \
85 if [ -s ./$(3)/$$*.strip.$$$$$$$$ ]; then \
86 $$(INSTALL) $$(INSTALL_FLAGS) ./$(3)/$$*.unifdef.$$$$$$$$ $$@ || exit 1; \
88 $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$ ./$(3)/$$*.strip.$$$$$$$$
91 # $(1) is the list of install paths
92 # $(2) is the source path pattern (using % to match with $(5)) or source file
93 # $(3) is the local temp directory for processing
94 # $(4) is the unifdef flags
95 # $(5) is the destination directory (when pattern matching) or empty
97 # $$$$$$$$ is a double-escaped "$$" to represent the current pid
98 # of the shell process for creating uniquely named temporary files
100 define INSTALLPYTHON_RULE_template
105 $$(_v)$$(MKDIR) ./$(3)
107 # Rebuild if unifdef flags change
108 $(1): $(3)/.UNIFDEF_FLAGS
109 $(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR
110 $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) -t $(4)
112 $(1): $(5)% : $(2) | $(3)_MKDIR
113 @$$(LOG_INSTALLPY) "$$*"
114 $$(_v)$$(MKDIR) $$(dir $$@) $$(dir ./$(3)/$$*)
115 $$(_v)$$(UNIFDEF) -t $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*); \
116 if [ $$$$? -eq 2 ]; then \
117 $(ERR) Parse failure for $$<; \
120 $$(INSTALL) $$(DATA_INSTALL_FLAGS) \
121 ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$@ || exit 1; \
122 $$(PYTHON) $$(LLDBMACROS_SOURCE)/core/syntax_checker.py \
123 ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$(_vstdout) || exit 1; \
124 $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*)
125 $$(_v)if [ -n "$(5)" ]; then $$(TOUCH) "$(5)"; fi
129 # Empty the install lists of non-host headers if building the host headers alias
132 ifeq ($(INSTALLHDRS_SKIP_HOST),YES)
134 INSTALL_MI_GEN_LIST =
135 INSTALL_DRIVERKIT_MI_LIST =
136 INSTALL_DRIVERKIT_MI_GEN_LIST =
138 INSTALL_KF_MI_GEN_LIST =
139 INSTALL_MI_LCL_LIST =
140 INSTALL_MI_LCL_GEN_LIST =
141 INSTALL_DRIVERKIT_MI_LCL_LIST =
142 INSTALL_DRIVERKIT_MI_LCL_GEN_LIST =
143 INSTALL_KF_MI_LCL_LIST =
144 INSTALL_KF_MI_LCL_GEN_LIST =
146 INSTALL_MD_GEN_LIST =
147 INSTALL_DRIVERKIT_MD_LIST =
148 INSTALL_DRIVERKIT_MD_GEN_LIST =
150 INSTALL_KF_MD_GEN_LIST =
151 INSTALL_MD_LCL_LIST =
152 INSTALL_MD_LCL_GEN_LIST =
153 INSTALL_DRIVERKIT_MD_LCL_LIST =
154 INSTALL_DRIVERKIT_MD_LCL_GEN_LIST =
155 INSTALL_KF_MD_LCL_LIST =
156 INSTALL_KF_MD_LCL_GEN_LIST =
157 INSTALL_MODULEMAP_INCDIR_MI_LIST =
161 # Machine-independent (public) files
164 INSTALL_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LIST))
165 INSTALL_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_GEN_LIST))
167 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_FILES),,incmidir,$(SINCFRAME_UNIFDEF)))
168 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_GEN_FILES),1,incmigendir,$(SINCFRAME_UNIFDEF)))
170 ifeq ($(DRIVERKIT),1)
171 INSTALL_DRIVERKIT_MI_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LIST))
172 INSTALL_DRIVERKIT_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_GEN_LIST))
174 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_FILES),,dkincmidir,$(DKINCFRAME_UNIFDEF)))
175 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_GEN_FILES),1,dkincmigendir,$(DKINCFRAME_UNIFDEF)))
178 INSTALL_KF_MI_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LIST))
179 INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST))
181 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_FILES),,kincmidir,$(KINCFRAME_UNIFDEF)))
182 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_GEN_FILES),1,kincmigendir,$(KINCFRAME_UNIFDEF)))
184 # Skip INSTALL_MI_DIR to install directly to INCDIR.
185 INSTALL_MODULEMAP_INCDIR_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/,$(INSTALL_MODULEMAP_INCDIR_MI_LIST))
187 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_INCDIR_MI_INC_FILES),,mmrootincmidir,-t $(DATA_UNIFDEF)))
190 # Machine-independent local (private) files
193 ifeq ($(LIBKERN_USE_USR_LOCAL_INCLUDE),)
194 INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_LIST) $(INSTALL_MI_LIST)))
195 INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_GEN_LIST) $(INSTALL_MI_GEN_LIST)))
197 INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_LIST)))
198 INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_GEN_LIST)))
201 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_FILES),,pincmidir,$(SPINCFRAME_UNIFDEF)))
202 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_GEN_FILES),1,pincmigendir,$(SPINCFRAME_UNIFDEF)))
204 ifeq ($(DRIVERKIT),1)
205 INSTALL_DRIVERKIT_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_LIST))
206 INSTALL_DRIVERKIT_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_GEN_LIST))
208 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_FILES),,dkpincmidir,$(DKPINCFRAME_UNIFDEF)))
209 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES),1,dkpincmigendir,$(DKPINCFRAME_UNIFDEF)))
212 INSTALL_KF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_LIST))
213 INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST))
215 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_FILES),,kpincmidir,$(KPINCFRAME_UNIFDEF)))
216 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_GEN_FILES),1,kpincmigendir,$(KPINCFRAME_UNIFDEF)))
219 # Machine-dependent (public) files
222 INSTALL_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LIST))
223 INSTALL_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_GEN_LIST))
225 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_FILES),,incdir,$(SINCFRAME_UNIFDEF)))
226 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_GEN_FILES),1,incgendir,$(SINCFRAME_UNIFDEF)))
228 ifeq ($(DRIVERKIT),1)
229 INSTALL_DRIVERKIT_MD_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LIST))
230 INSTALL_DRIVERKIT_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_GEN_LIST))
232 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_FILES),,dkincdir,$(DKINCFRAME_UNIFDEF)))
233 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_GEN_FILES),1,dkincgendir,$(DKINCFRAME_UNIFDEF)))
236 INSTALL_KF_MD_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LIST))
237 INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST))
239 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_FILES),,kincdir,$(KINCFRAME_UNIFDEF)))
240 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_GEN_FILES),1,kincgendir,$(KINCFRAME_UNIFDEF)))
243 # Machine-dependent local (private) files
246 ifeq ($(LIBKERN_USE_USR_LOCAL_INCLUDE),)
247 INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_LIST) $(INSTALL_MD_LIST)))
248 INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_GEN_LIST) $(INSTALL_MD_GEN_LIST)))
250 INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_LIST)))
251 INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_GEN_LIST)))
254 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_FILES),,pincdir,$(SPINCFRAME_UNIFDEF)))
255 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_GEN_FILES),1,pincgendir,$(SPINCFRAME_UNIFDEF)))
257 ifeq ($(DRIVERKIT),1)
258 INSTALL_DRIVERKIT_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_LIST))
259 INSTALL_DRIVERKIT_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_GEN_LIST))
261 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_FILES),,dkpincdir,$(DKPINCFRAME_UNIFDEF)))
262 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES),1,dkpincgendir,$(DKPINCFRAME_UNIFDEF)))
265 INSTALL_KF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_LIST))
266 INSTALL_KF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_GEN_LIST))
268 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_FILES),,kpincdir,$(KPINCFRAME_UNIFDEF)))
269 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_GEN_FILES),1,kpincgendir,$(KPINCFRAME_UNIFDEF)))
271 .PHONY: do_installhdrs_mi
273 # Double-colon rule so that MakeInc.kernel can add custom behaviors
274 do_installhdrs_mi:: $(INSTALL_MI_INC_FILES) $(INSTALL_MI_INC_GEN_FILES) \
275 $(INSTALL_DRIVERKIT_MI_INC_FILES) $(INSTALL_DRIVERKIT_MI_INC_GEN_FILES) \
276 $(INSTALL_KF_MI_FILES) $(INSTALL_KF_MI_GEN_FILES) \
277 $(INSTALL_MI_LCL_FILES) $(INSTALL_MI_LCL_GEN_FILES) \
278 $(INSTALL_DRIVERKIT_MI_LCL_FILES) $(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES) \
279 $(INSTALL_KF_MI_LCL_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES) \
280 $(INSTALL_MODULEMAP_INCDIR_MI_INC_FILES)
283 .PHONY: do_installhdrs_md
285 do_installhdrs_md: $(INSTALL_MD_INC_FILES) $(INSTALL_MD_INC_GEN_FILES) \
286 $(INSTALL_DRIVERKIT_MD_INC_FILES) $(INSTALL_DRIVERKIT_MD_INC_GEN_FILES) \
287 $(INSTALL_KF_MD_FILES) $(INSTALL_KF_MD_GEN_FILES) \
288 $(INSTALL_MD_LCL_FILES) $(INSTALL_MD_LCL_GEN_FILES) \
289 $(INSTALL_DRIVERKIT_MD_LCL_FILES) $(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES) \
290 $(INSTALL_KF_MD_LCL_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES)
294 # Generic Export rules
296 EXPORT_MI_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_LIST))
297 EXPORT_MI_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_GEN_LIST))
299 .PHONY: EXP_MI_INC_DIR
302 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)
304 $(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : % | EXP_MI_INC_DIR
305 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@
307 $(EXPORT_MI_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : $(SOURCE)/% | EXP_MI_INC_DIR
308 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@
310 EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST))
311 EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST))
313 .PHONY: EXP_MD_INC_DIR
316 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)
318 $(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : % | EXP_MD_INC_DIR
319 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@
321 $(EXPORT_MD_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : $(SOURCE)/% | EXP_MD_INC_DIR
322 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@
324 .PHONY: do_exporthdrs_mi
326 do_exporthdrs_mi: $(EXPORT_MI_GEN_INC_FILES) $(EXPORT_MI_INC_FILES)
329 .PHONY: do_exporthdrs_md
331 do_exporthdrs_md: $(EXPORT_MD_GEN_INC_FILES) $(EXPORT_MD_INC_FILES)
335 # Generic Compilation rules
339 # Compilation rules to generate .o from .s
342 S_RULE_0=@$(LOG_AS) "$@"
343 S_RULE_1A=$(_v)${S_KCC} -c ${SFLAGS} -MD -MF $(@:o=d) -MP ${$@_SFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
348 # Compilation rules to generate .o from .c for normal files
350 C_RULE_0=@$(LOG_CC) "$@"
351 C_RULE_1A=$(_v)${KCC} -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
360 # Compilation rules to generate .o from .c for driver files
362 C_RULE_0_D=${C_RULE_0}
363 C_RULE_1A_D=${C_RULE_1A}
364 C_RULE_1B_D=${C_RULE_1B}
365 C_RULE_2_D=${C_RULE_2}
366 C_RULE_3_D=${C_RULE_3}
367 C_RULE_4A_D=${C_RULE_4A}
368 C_RULE_4B_D=${C_RULE_4B}
371 # Compilation rules to generate .co from .cp or .cpo from .cpp
372 # The config tool slickly changes the last source filename char to 'o'
373 # for the object filename.
374 P_RULE_0=@$(LOG_CXX) "$@"
375 P_RULE_1A=$(_v)${KC++} -o $@ -c ${CXXFLAGS} ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CXXWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CXXWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
384 # Explain how to make the bsd syscall list
386 $(TARGET)/bsd.syscalls.master: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS)
387 @$(LOG_GENERATE) "$(@F)$(Color0) from $(ColorF)$<$(Color0)"
388 $(_v)$(UNIFDEF) $(SEED_DEFINES) $< > $@; \
389 if [ $$? -eq 2 ]; then \
390 $(ERR) Parse failure for $<; \
395 # This isn't the right place to put this, but we need to := override some settings
396 # in Makefiles that include the generic helper fragments (like this file)
398 ifeq ($(BUILD_JSON_COMPILATION_DATABASE),1)
406 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
407 # in their local Makefiles. Those that do will use a "::" rule to augment this.
411 .PHONY: do_build_install_primary
413 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
414 # in their local Makefiles. Those that do will use a "::" rule to augment this.
415 do_build_install_primary::
418 .PHONY: do_build_install_non_primary
420 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
421 # in their local Makefiles. Those that do will use a "::" rule to augment this.
422 do_build_install_non_primary::
425 INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST))
427 .PHONY: INSTALL_MAN_DIR
430 $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)
432 $(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : % | INSTALL_MAN_DIR
434 $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@
436 define MAN_LINKS_RULE_template
437 $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(2): $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(1)
438 @$$(LOG_MANLINK) "$(2)"
442 function_generate_man_links_rules = $(if $(word 1,$(1)),$(eval $(call MAN_LINKS_RULE_template,$(word 1,$(1)),$(word 2,$(1)))) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/$(word 2,$(1)) $(call function_generate_man_links_rules,$(wordlist 3,$(words $(1)),$(1))))
444 INSTALL_MAN_FILES_LINKS = $(call function_generate_man_links_rules,$(INSTALL_MAN_LINKS))
446 .PHONY: do_installman
448 do_installman: $(INSTALL_MAN_FILES) $(INSTALL_MAN_FILES_LINKS)
451 .PHONY: do_textfiles_install do_textfiles_install_mi do_textfiles_install_md
453 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
454 # in their local Makefiles. Those that do will use a "::" rule to augment this.
455 do_textfiles_install_mi:: do_installman
458 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
459 # in their local Makefiles. Those that do will use a "::" rule to augment this.
460 do_textfiles_install_md::
463 .PHONY: do_build_setup
465 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
466 # in their local Makefiles. Those that do will use a "::" rule to augment this.
470 .PHONY: do_config_all
472 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
473 # in their local Makefiles. Those that do will use a "::" rule to augment this.
477 .PHONY: do_config_install
479 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
480 # in their local Makefiles. Those that do will use a "::" rule to augment this.