1 # -*- mode: makefile;-*-
3 # Copyright (C) 1999-2016 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.
13 # Generic Install rules
16 ifndef INSTALL_KF_MI_LCL_LIST
17 INSTALL_KF_MI_LCL_LIST = $(EXPORT_MI_LIST)
20 ifndef INSTALL_KF_MI_LCL_GEN_LIST
21 INSTALL_KF_MI_LCL_GEN_LIST = $(EXPORT_MI_GEN_LIST)
24 ifndef INSTALL_KF_MD_LCL_LIST
25 INSTALL_KF_MD_LCL_LIST = $(EXPORT_MD_LIST)
28 ifndef INSTALL_KF_MD_LCL_GEN_LIST
29 INSTALL_KF_MD_LCL_GEN_LIST = $(EXPORT_MD_GEN_LIST)
32 ifndef INSTALL_KF_MI_LIST
33 INSTALL_KF_MI_LIST = $(EXPORT_MI_LIST)
36 ifndef INSTALL_KF_MI_GEN_LIST
37 INSTALL_KF_MI_GEN_LIST = $(EXPORT_MI_GEN_LIST)
40 ifndef INSTALL_KF_MD_LIST
41 INSTALL_KF_MD_LIST = $(EXPORT_MD_LIST)
44 ifndef INSTALL_KF_MD_GEN_LIST
45 INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST)
48 ifeq (${XNU_LOGCOLORS},y)
53 # Get a nice list of device code names associated with the build platform
55 #ifdef EMBEDDED_DEVICE_MAP
56 # export CDevs := $(shell $(EMBEDDED_DEVICE_MAP) -db $(EDM_DBPATH) -query "SELECT DISTINCT TargetType FROM Targets WHERE KernelPlatform = '$(CURRENT_MACHINE_CONFIG_LC)'" | tr '[\r\n]' ':' | sed 's,:$$,,')
60 export _MACHINE := $(CURRENT_MACHINE_CONFIG_LC)
61 ifeq ($(CURRENT_MACHINE_CONFIG),NONE)
62 export _MACHINE := $(subst Mac,,$(PLATFORM))
64 export CMD_MC := $(shell __A="$(CURRENT_ARCH_CONFIG_LC)"; \
65 __As=$$((6-$${\#__A})); \
66 printf "\\033[1m%-.6s%*.*s %9.9s\\033[m" \
68 $${__As} $${__As} " " \
71 # Turn off colored output
72 Color0:=$(shell printf "\\033[m")
73 # Start a host command: bold, underlined pink text
74 ColorH:=$(shell printf "\\033[1;4;35m")
75 # Start a compilation-related command: bold, underlined blue text
76 ColorC:=$(shell printf "[$(CMD_MC)] \\033[1;4;34m")
77 # Start a MIG command: bold, green text on light grey background
78 ColorM:=$(shell printf "[$(CMD_MC)] \\033[1;32;40m")
79 # Start a linking command: bold, white text on blue background
80 ColorL:=$(shell printf "[$(CMD_MC)] \\033[1;37;44m")
81 # Start a filename: bold, white text
82 ColorF:=$(shell printf "\\033[1;37m")
83 # Start a linked file name: yellow text on light grey background
84 ColorLF:=$(shell printf "\\033[1;33;40m")
85 # Error strings: underlined bold white text on red background
86 ColorErr:=$(shell printf "\033[1;4;37;41m")
93 # $(1) is the list of install paths
94 # $(2) is "1" if it's a "GEN"-style rule that looks locally, or else $(SOURCE)
95 # $(3) is the local temp directory for processing
96 # $(4) is the unifdef flags
98 # $$$$$$$$ is a double-escaped "$$" to represent the current pid
99 # of the shell process for creating uniquely named temporary files
101 define INSTALLHDRS_RULE_template
106 $$(_v)$$(MKDIR) ./$(3)
107 $$(_v)$$(MKDIR) $(dir $(firstword $(1)))
109 # Rebuild if unifdef flags change
110 $(1): $(3)/.UNIFDEF_FLAGS
111 $(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR
112 $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) $(4)
114 $(1): $(dir $(firstword $(1)))% : $(if $(2),%,$$(SOURCE)/%) | $(3)_MKDIR
115 $$(call makelog,$$(ColorH)INSTALLHDR$$(Color0) $$(ColorF)$$*$$(Color0))
116 $$(_v)$$(UNIFDEF) $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$; \
117 if [ $$$$? -eq 2 ]; then \
118 $(ERR) Parse failure for $$<; \
121 $$(DECOMMENT) ./$(3)/$$*.unifdef.$$$$$$$$ r > \
122 ./$(3)/$$*.strip.$$$$$$$$ || exit 1; \
123 if [ -s ./$(3)/$$*.strip.$$$$$$$$ ]; then \
124 $$(INSTALL) $$(INSTALL_FLAGS) ./$(3)/$$*.unifdef.$$$$$$$$ $$@ || exit 1; \
126 $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$ ./$(3)/$$*.strip.$$$$$$$$
129 # $(1) is the list of install paths
130 # $(2) is the source path pattern (using % to match with $(5)) or source file
131 # $(3) is the local temp directory for processing
132 # $(4) is the unifdef flags
133 # $(5) is the destination directory (when pattern matching) or empty
135 # $$$$$$$$ is a double-escaped "$$" to represent the current pid
136 # of the shell process for creating uniquely named temporary files
138 define INSTALLPYTHON_RULE_template
143 $$(_v)$$(MKDIR) ./$(3)
145 # Rebuild if unifdef flags change
146 $(1): $(3)/.UNIFDEF_FLAGS
147 $(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR
148 $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) -t $(4)
150 $(1): $(5)% : $(2) | $(3)_MKDIR
151 $$(call makelog,$$(ColorH)INSTALLPY$$(Color0) $$(ColorF)$$*$$(Color0))
152 $$(_v)$$(MKDIR) $$(dir $$@) $$(dir ./$(3)/$$*)
153 $$(_v)$$(UNIFDEF) -t $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*); \
154 if [ $$$$? -eq 2 ]; then \
155 $(ERR) Parse failure for $$<; \
158 $$(INSTALL) $$(DATA_INSTALL_FLAGS) \
159 ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$@ || exit 1; \
160 $$(PYTHON) $$(LLDBMACROS_SOURCE)/core/syntax_checker.py \
161 ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$(_vstdout) || exit 1; \
162 $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*)
163 $$(_v)if [ -n "$(5)" ]; then $$(TOUCH) "$(5)"; fi
167 # Empty the install lists of non-host headers if building the host headers alias
170 ifeq ($(INSTALLHDRS_SKIP_HOST),YES)
172 INSTALL_MI_GEN_LIST =
173 INSTALL_DRIVERKIT_MI_LIST =
174 INSTALL_DRIVERKIT_MI_GEN_LIST =
176 INSTALL_KF_MI_GEN_LIST =
177 INSTALL_MI_LCL_LIST =
178 INSTALL_MI_LCL_GEN_LIST =
179 INSTALL_DRIVERKIT_MI_LCL_LIST =
180 INSTALL_DRIVERKIT_MI_LCL_GEN_LIST =
181 INSTALL_KF_MI_LCL_LIST =
182 INSTALL_KF_MI_LCL_GEN_LIST =
184 INSTALL_MD_GEN_LIST =
185 INSTALL_DRIVERKIT_MD_LIST =
186 INSTALL_DRIVERKIT_MD_GEN_LIST =
188 INSTALL_KF_MD_GEN_LIST =
189 INSTALL_MD_LCL_LIST =
190 INSTALL_MD_LCL_GEN_LIST =
191 INSTALL_DRIVERKIT_MD_LCL_LIST =
192 INSTALL_DRIVERKIT_MD_LCL_GEN_LIST =
193 INSTALL_KF_MD_LCL_LIST =
194 INSTALL_KF_MD_LCL_GEN_LIST =
198 # Machine-independent (public) files
201 INSTALL_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LIST))
202 INSTALL_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_GEN_LIST))
204 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_FILES),,incmidir,$(SINCFRAME_UNIFDEF)))
205 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_GEN_FILES),1,incmigendir,$(SINCFRAME_UNIFDEF)))
207 ifeq ($(DRIVERKIT),1)
208 INSTALL_DRIVERKIT_MI_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LIST))
209 INSTALL_DRIVERKIT_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_GEN_LIST))
211 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_FILES),,dkincmidir,$(DKINCFRAME_UNIFDEF)))
212 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_GEN_FILES),1,dkincmigendir,$(DKINCFRAME_UNIFDEF)))
215 INSTALL_KF_MI_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LIST))
216 INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST))
218 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_FILES),,kincmidir,$(KINCFRAME_UNIFDEF)))
219 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_GEN_FILES),1,kincmigendir,$(KINCFRAME_UNIFDEF)))
222 # Machine-independent local (private) files
225 INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_LIST) $(INSTALL_MI_LIST)))
226 INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_MI_LCL_GEN_LIST) $(INSTALL_MI_GEN_LIST)))
228 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_FILES),,pincmidir,$(SPINCFRAME_UNIFDEF)))
229 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_GEN_FILES),1,pincmigendir,$(SPINCFRAME_UNIFDEF)))
231 ifeq ($(DRIVERKIT),1)
232 INSTALL_DRIVERKIT_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_LIST))
233 INSTALL_DRIVERKIT_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_GEN_LIST))
235 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_FILES),,dkpincmidir,$(DKPINCFRAME_UNIFDEF)))
236 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES),1,dkpincmigendir,$(DKPINCFRAME_UNIFDEF)))
239 INSTALL_KF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_LIST))
240 INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST))
242 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_FILES),,kpincmidir,$(KPINCFRAME_UNIFDEF)))
243 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_GEN_FILES),1,kpincmigendir,$(KPINCFRAME_UNIFDEF)))
246 # Machine-dependent (public) files
249 INSTALL_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LIST))
250 INSTALL_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_GEN_LIST))
252 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_FILES),,incdir,$(SINCFRAME_UNIFDEF)))
253 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_GEN_FILES),1,incgendir,$(SINCFRAME_UNIFDEF)))
255 ifeq ($(DRIVERKIT),1)
256 INSTALL_DRIVERKIT_MD_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LIST))
257 INSTALL_DRIVERKIT_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_GEN_LIST))
259 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_FILES),,dkincdir,$(DKINCFRAME_UNIFDEF)))
260 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_GEN_FILES),1,dkincgendir,$(DKINCFRAME_UNIFDEF)))
263 INSTALL_KF_MD_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LIST))
264 INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST))
266 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_FILES),,kincdir,$(KINCFRAME_UNIFDEF)))
267 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_GEN_FILES),1,kincgendir,$(KINCFRAME_UNIFDEF)))
270 # Machine-dependent local (private) files
273 INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_LIST) $(INSTALL_MD_LIST)))
274 INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_GEN_LIST) $(INSTALL_MD_GEN_LIST)))
276 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_FILES),,pincdir,$(SPINCFRAME_UNIFDEF)))
277 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_GEN_FILES),1,pincgendir,$(SPINCFRAME_UNIFDEF)))
279 ifeq ($(DRIVERKIT),1)
280 INSTALL_DRIVERKIT_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_LIST))
281 INSTALL_DRIVERKIT_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_GEN_LIST))
283 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_FILES),,dkpincdir,$(DKPINCFRAME_UNIFDEF)))
284 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES),1,dkpincgendir,$(DKPINCFRAME_UNIFDEF)))
287 INSTALL_KF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_LIST))
288 INSTALL_KF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_GEN_LIST))
290 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_FILES),,kpincdir,$(KPINCFRAME_UNIFDEF)))
291 $(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_GEN_FILES),1,kpincgendir,$(KPINCFRAME_UNIFDEF)))
293 .PHONY: do_installhdrs_mi
295 # Double-colon rule so that MakeInc.kernel can add custom behaviors
296 do_installhdrs_mi:: $(INSTALL_MI_INC_FILES) $(INSTALL_MI_INC_GEN_FILES) \
297 $(INSTALL_DRIVERKIT_MI_INC_FILES) $(INSTALL_DRIVERKIT_MI_INC_GEN_FILES) \
298 $(INSTALL_KF_MI_FILES) $(INSTALL_KF_MI_GEN_FILES) \
299 $(INSTALL_MI_LCL_FILES) $(INSTALL_MI_LCL_GEN_FILES) \
300 $(INSTALL_DRIVERKIT_MI_LCL_FILES) $(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES) \
301 $(INSTALL_KF_MI_LCL_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES)
304 .PHONY: do_installhdrs_md
306 do_installhdrs_md: $(INSTALL_MD_INC_FILES) $(INSTALL_MD_INC_GEN_FILES) \
307 $(INSTALL_DRIVERKIT_MD_INC_FILES) $(INSTALL_DRIVERKIT_MD_INC_GEN_FILES) \
308 $(INSTALL_KF_MD_FILES) $(INSTALL_KF_MD_GEN_FILES) \
309 $(INSTALL_MD_LCL_FILES) $(INSTALL_MD_LCL_GEN_FILES) \
310 $(INSTALL_DRIVERKIT_MD_LCL_FILES) $(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES) \
311 $(INSTALL_KF_MD_LCL_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES)
315 # Generic Export rules
317 EXPORT_MI_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_LIST))
318 EXPORT_MI_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_GEN_LIST))
320 .PHONY: EXP_MI_INC_DIR
323 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)
325 $(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : % | EXP_MI_INC_DIR
326 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@
328 $(EXPORT_MI_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : $(SOURCE)/% | EXP_MI_INC_DIR
329 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@
331 EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST))
332 EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST))
334 .PHONY: EXP_MD_INC_DIR
337 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)
339 $(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : % | EXP_MD_INC_DIR
340 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@
342 $(EXPORT_MD_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : $(SOURCE)/% | EXP_MD_INC_DIR
343 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@
345 .PHONY: do_exporthdrs_mi
347 do_exporthdrs_mi: $(EXPORT_MI_GEN_INC_FILES) $(EXPORT_MI_INC_FILES)
350 .PHONY: do_exporthdrs_md
352 do_exporthdrs_md: $(EXPORT_MD_GEN_INC_FILES) $(EXPORT_MD_INC_FILES)
356 # Generic Compilation rules
360 # Compilation rules to generate .o from .s
363 S_RULE_0=$(call makelog,$(ColorC)AS$(Color0) $(ColorF)$@$(Color0))
364 S_RULE_1A=$(_v)${S_KCC} -c ${SFLAGS} -MD -MF $(@:o=d) -MP ${$@_SFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
369 # Compilation rules to generate .o from .c for normal files
371 C_RULE_0=$(call makelog,$(ColorC)CC$(Color0) $(ColorF)$@$(Color0))
372 C_RULE_1A=$(_v)${KCC} -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS}
381 # Compilation rules to generate .o from .c for driver files
383 C_RULE_0_D=${C_RULE_0}
384 C_RULE_1A_D=${C_RULE_1A}
385 C_RULE_1B_D=${C_RULE_1B}
386 C_RULE_2_D=${C_RULE_2}
387 C_RULE_3_D=${C_RULE_3}
388 C_RULE_4A_D=${C_RULE_4A}
389 C_RULE_4B_D=${C_RULE_4B}
392 # Compilation rules to generate .co from .cp or .cpo from .cpp
393 # The config tool slickly changes the last source filename char to 'o'
394 # for the object filename.
395 P_RULE_0=$(call makelog,$(ColorC)C++$(Color0) $(ColorF)$@$(Color0))
396 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}
405 # This isn't the right place to put this, but we need to := override some settings
406 # in Makefiles that include the generic helper fragments (like this file)
408 ifeq ($(BUILD_JSON_COMPILATION_DATABASE),1)
416 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
417 # in their local Makefiles. Those that do will use a "::" rule to augment this.
421 .PHONY: do_build_install_primary
423 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
424 # in their local Makefiles. Those that do will use a "::" rule to augment this.
425 do_build_install_primary::
428 .PHONY: do_build_install_non_primary
430 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
431 # in their local Makefiles. Those that do will use a "::" rule to augment this.
432 do_build_install_non_primary::
435 INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST))
437 .PHONY: INSTALL_MAN_DIR
440 $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)
442 $(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : % | INSTALL_MAN_DIR
443 $(call makelog,$(ColorH)MAN$(Color0) $(ColorF)$*$(Color0))
444 $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@
446 define MAN_LINKS_RULE_template
447 $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(2): $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(1)
448 $$(call makelog,$$(ColorH)MANLINK$$(Color0) $$(ColorF)$(2)$$(Color0))
452 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))))
454 INSTALL_MAN_FILES_LINKS = $(call function_generate_man_links_rules,$(INSTALL_MAN_LINKS))
456 .PHONY: do_installman
458 do_installman: $(INSTALL_MAN_FILES) $(INSTALL_MAN_FILES_LINKS)
461 .PHONY: do_textfiles_install
463 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
464 # in their local Makefiles. Those that do will use a "::" rule to augment this.
465 do_textfiles_install:: do_installman
468 .PHONY: do_build_setup
470 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
471 # in their local Makefiles. Those that do will use a "::" rule to augment this.
475 .PHONY: do_config_all
477 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
478 # in their local Makefiles. Those that do will use a "::" rule to augment this.
482 .PHONY: do_config_install
484 # Do-nothing rule, since not all levels of the recursive hierarchy might implement this
485 # in their local Makefiles. Those that do will use a "::" rule to augment this.