1# -*- mode: makefile;-*- 2# 3# Copyright (C) 1999-2020 Apple Inc. All rights reserved. 4# 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. 10# 11include $(SRCROOT)/makedefs/MakeInc.color 12 13# 14# Generic Install rules 15# 16 17ifndef INSTALL_KF_MI_LCL_LIST 18 INSTALL_KF_MI_LCL_LIST = $(EXPORT_MI_LIST) 19endif 20 21ifndef INSTALL_KF_MI_LCL_GEN_LIST 22 INSTALL_KF_MI_LCL_GEN_LIST = $(EXPORT_MI_GEN_LIST) 23endif 24 25ifndef INSTALL_KF_MD_LCL_LIST 26 INSTALL_KF_MD_LCL_LIST = $(EXPORT_MD_LIST) 27endif 28 29ifndef INSTALL_KF_MD_LCL_GEN_LIST 30 INSTALL_KF_MD_LCL_GEN_LIST = $(EXPORT_MD_GEN_LIST) 31endif 32 33ifndef INSTALL_KF_MI_LIST 34 INSTALL_KF_MI_LIST = $(EXPORT_MI_LIST) 35endif 36 37ifndef INSTALL_KF_MI_GEN_LIST 38 INSTALL_KF_MI_GEN_LIST = $(EXPORT_MI_GEN_LIST) 39endif 40 41ifndef INSTALL_KF_MD_LIST 42 INSTALL_KF_MD_LIST = $(EXPORT_MD_LIST) 43endif 44 45ifndef INSTALL_KF_MD_GEN_LIST 46 INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST) 47endif 48 49$(eval $(call _setup_build_log_colors)) 50 51.PHONY: ALWAYS 52 53ALWAYS: 54 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 59# 60# $$$$$$$$ is a double-escaped "$$" to represent the current pid 61# of the shell process for creating uniquely named temporary files 62 63define INSTALLHDRS_RULE_template 64 65.PHONY: $(3)_MKDIR 66 67$(3)_MKDIR: 68 $$(_v)$$(MKDIR) ./$(3) 69 $$(_v)$$(MKDIR) $(dir $(firstword $(1))) 70 71# Rebuild if unifdef flags change 72$(1): $(3)/.UNIFDEF_FLAGS 73$(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR 74 $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) $(4) 75 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 $$<; \ 81 exit 1; \ 82 fi; \ 83 $$(DECOMMENT) ./$(3)/$$*.unifdef.$$$$$$$$ r > \ 84 ./$(3)/$$*.strip.$$$$$$$$ || exit 1; \ 85 if [ -s ./$(3)/$$*.strip.$$$$$$$$ ]; then \ 86 $$(INSTALL) $$(INSTALL_FLAGS) ./$(3)/$$*.unifdef.$$$$$$$$ $$@ || exit 1; \ 87 fi; \ 88 $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$ ./$(3)/$$*.strip.$$$$$$$$ 89endef 90 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 96# 97# $$$$$$$$ is a double-escaped "$$" to represent the current pid 98# of the shell process for creating uniquely named temporary files 99 100define INSTALLPYTHON_RULE_template 101 102.PHONY: $(3)_MKDIR 103 104$(3)_MKDIR: 105 $$(_v)$$(MKDIR) ./$(3) 106 107# Rebuild if unifdef flags change 108$(1): $(3)/.UNIFDEF_FLAGS 109$(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR 110 $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) -t $(4) 111 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 $$<; \ 118 exit 1; \ 119 fi; \ 120 $$(INSTALL) $$(DATA_INSTALL_FLAGS) \ 121 ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$@ || exit 1; \ 122 $$(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 126endef 127 128# Template for Libsyscall header unifdef postprocessing in DSTROOT 129# $(1) is the install path 130# $(2) is the unifdef flags 131 132define LIBSYSCALL_DO_UNIFDEF_HEADERS_RULE_template 133do_unifdef_headers:: 134 $$(_v)[ \! -d "$(1)" ] || $$(FIND) -x "$(1)" -type f \( -name \*.h -o \ 135 -name \*.defs -o -name \*.iig -o -name \*.modulemap \) \ 136 -execdir $$(UNIFDEF) $(2) -o {} {} \; 137.PHONY: do_unifdef_headers 138endef 139 140 141# 142# Empty the install lists of non-host headers if building the host headers alias 143# 144 145ifeq ($(INSTALLHDRS_SKIP_HOST),YES) 146 147INSTALL_MI_LIST = 148INSTALL_MI_GEN_LIST = 149INSTALL_IF_MI_LIST = 150INSTALL_IF_MI_GEN_LIST = 151INSTALL_DRIVERKIT_MI_LIST = 152INSTALL_DRIVERKIT_MI_GEN_LIST = 153INSTALL_KF_MI_LIST = 154INSTALL_KF_MI_GEN_LIST = 155INSTALL_MI_LCL_LIST = 156INSTALL_MI_LCL_GEN_LIST = 157INSTALL_IF_MI_LCL_LIST = 158INSTALL_IF_MI_LCL_GEN_LIST = 159INSTALL_SF_MI_LCL_LIST = 160INSTALL_SF_MI_LCL_GEN_LIST = 161INSTALL_DRIVERKIT_MI_LCL_LIST = 162INSTALL_DRIVERKIT_MI_LCL_GEN_LIST = 163INSTALL_KF_MI_LCL_LIST = 164INSTALL_KF_MI_LCL_GEN_LIST = 165INSTALL_MD_LIST = 166INSTALL_MD_GEN_LIST = 167INSTALL_DRIVERKIT_MD_LIST = 168INSTALL_DRIVERKIT_MD_GEN_LIST = 169INSTALL_KF_MD_LIST = 170INSTALL_KF_MD_GEN_LIST = 171INSTALL_MD_LCL_LIST = 172INSTALL_MD_LCL_GEN_LIST = 173INSTALL_SF_MD_LCL_LIST = 174INSTALL_SF_MD_LCL_GEN_LIST = 175INSTALL_DRIVERKIT_MD_LCL_LIST = 176INSTALL_DRIVERKIT_MD_LCL_GEN_LIST = 177INSTALL_KF_MD_LCL_LIST = 178INSTALL_KF_MD_LCL_GEN_LIST = 179 180# If there are no headers then there can be no module maps. 181INSTALLHDRS_MODULEMAPS_SKIP_HOST = YES 182 183endif 184 185ifeq ($(INSTALLHDRS_MODULEMAPS_SKIP_HOST),YES) 186INSTALL_MODULEMAP_MI_LIST = 187INSTALL_MODULEMAP_MI_LCL_LIST = 188INSTALL_MODULEMAP_MD_LIST = 189INSTALL_MODULEMAP_MD_LCL_LIST = 190endif 191 192# 193# Machine-independent (public) files 194# 195 196INSTALL_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LIST)) 197INSTALL_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_GEN_LIST)) 198INSTALL_MODULEMAP_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MODULEMAP_MI_DIR)/,$(INSTALL_MODULEMAP_MI_LIST)) 199 200$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_FILES),,incmidir,$(SINCFRAME_UNIFDEF))) 201$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_GEN_FILES),1,incmigendir,$(SINCFRAME_UNIFDEF))) 202$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MI_INC_FILES),,mmincmidir,-t $(DATA_UNIFDEF))) 203 204INSTALL_IF_MI_FILES = $(addprefix $(DSTROOT)/$(IINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LIST)) 205INSTALL_IF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(IINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_GEN_LIST)) 206 207$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_FILES),,iincmidir,$(SINCFRAME_UNIFDEF))) 208$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_GEN_FILES),1,iincmigendir,$(SINCFRAME_UNIFDEF))) 209 210ifeq ($(DRIVERKIT),1) 211INSTALL_DRIVERKIT_MI_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LIST)) 212INSTALL_DRIVERKIT_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_GEN_LIST)) 213 214$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_FILES),,dkincmidir,$(DKINCFRAME_UNIFDEF))) 215$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_GEN_FILES),1,dkincmigendir,$(DKINCFRAME_UNIFDEF))) 216endif 217 218INSTALL_KF_MI_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LIST)) 219INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST)) 220 221$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_FILES),,kincmidir,$(KINCFRAME_UNIFDEF))) 222$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_GEN_FILES),1,kincmigendir,$(KINCFRAME_UNIFDEF))) 223 224# 225# Machine-independent local (private) files 226# 227 228INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_LIST)) 229INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_GEN_LIST)) 230INSTALL_MODULEMAP_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MODULEMAP_MI_DIR)/,$(INSTALL_MODULEMAP_MI_LCL_LIST)) 231 232$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_FILES),,pincmidir,$(SPINCFRAME_UNIFDEF))) 233$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_GEN_FILES),1,pincmigendir,$(SPINCFRAME_UNIFDEF))) 234$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MI_LCL_FILES),,mmpincmidir,-t $(PDATA_UNIFDEF))) 235 236INSTALL_IF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(IPINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LCL_LIST)) 237INSTALL_IF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(IPINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LCL_GEN_LIST)) 238 239$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_LCL_FILES),,ipincmidir,$(SPINCFRAME_UNIFDEF))) 240$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_LCL_GEN_FILES),1,ipincmigendir,$(SPINCFRAME_UNIFDEF))) 241 242INSTALL_SF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_SF_MI_LCL_LIST))) 243INSTALL_SF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_SF_MI_LCL_GEN_LIST))) 244 245$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MI_LCL_FILES),,spincmidir,$(SPINCFRAME_UNIFDEF))) 246$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MI_LCL_GEN_FILES),1,spincmigendir,$(SPINCFRAME_UNIFDEF))) 247 248ifeq ($(DRIVERKIT),1) 249INSTALL_DRIVERKIT_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_LIST)) 250INSTALL_DRIVERKIT_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_GEN_LIST)) 251 252$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_FILES),,dkpincmidir,$(DKPINCFRAME_UNIFDEF))) 253$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES),1,dkpincmigendir,$(DKPINCFRAME_UNIFDEF))) 254endif 255 256INSTALL_KF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_LIST)) 257INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST)) 258 259$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_FILES),,kpincmidir,$(KPINCFRAME_UNIFDEF))) 260$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_GEN_FILES),1,kpincmigendir,$(KPINCFRAME_UNIFDEF))) 261 262# 263# Machine-dependent (public) files 264# 265 266INSTALL_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LIST)) 267INSTALL_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_GEN_LIST)) 268INSTALL_MODULEMAP_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MODULEMAP_MD_DIR)/,$(INSTALL_MODULEMAP_MD_LIST)) 269 270$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_FILES),,incdir,$(SINCFRAME_UNIFDEF))) 271$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_GEN_FILES),1,incgendir,$(SINCFRAME_UNIFDEF))) 272$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MD_INC_FILES),,mmincdir,-t $(DATA_UNIFDEF))) 273 274ifeq ($(DRIVERKIT),1) 275INSTALL_DRIVERKIT_MD_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LIST)) 276INSTALL_DRIVERKIT_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_GEN_LIST)) 277 278$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_FILES),,dkincdir,$(DKINCFRAME_UNIFDEF))) 279$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_GEN_FILES),1,dkincgendir,$(DKINCFRAME_UNIFDEF))) 280endif 281 282INSTALL_KF_MD_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LIST)) 283INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST)) 284 285$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_FILES),,kincdir,$(KINCFRAME_UNIFDEF))) 286$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_GEN_FILES),1,kincgendir,$(KINCFRAME_UNIFDEF))) 287 288# 289# Machine-dependent local (private) files 290# 291 292INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_LIST))) 293INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_GEN_LIST))) 294INSTALL_MODULEMAP_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MODULEMAP_MD_DIR)/,$(INSTALL_MODULEMAP_MD_LCL_LIST)) 295 296$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_FILES),,pincdir,$(SPINCFRAME_UNIFDEF))) 297$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_GEN_FILES),1,pincgendir,$(SPINCFRAME_UNIFDEF))) 298$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MD_LCL_FILES),,mmpincdir,-t $(PDATA_UNIFDEF))) 299 300INSTALL_SF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_SF_MD_LCL_LIST))) 301INSTALL_SF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_SF_MD_LCL_GEN_LIST))) 302 303$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MD_LCL_FILES),,spincdir,$(SPINCFRAME_UNIFDEF))) 304$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MD_LCL_GEN_FILES),1,spincgendir,$(SPINCFRAME_UNIFDEF))) 305 306ifeq ($(DRIVERKIT),1) 307INSTALL_DRIVERKIT_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_LIST)) 308INSTALL_DRIVERKIT_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_GEN_LIST)) 309 310$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_FILES),,dkpincdir,$(DKPINCFRAME_UNIFDEF))) 311$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES),1,dkpincgendir,$(DKPINCFRAME_UNIFDEF))) 312endif 313 314INSTALL_KF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_LIST)) 315INSTALL_KF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_GEN_LIST)) 316 317$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_FILES),,kpincdir,$(KPINCFRAME_UNIFDEF))) 318$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_GEN_FILES),1,kpincgendir,$(KPINCFRAME_UNIFDEF))) 319 320.PHONY: do_installhdrs_mi 321 322# Double-colon rule so that MakeInc.kernel can add custom behaviors 323do_installhdrs_mi:: $(INSTALL_MI_INC_FILES) $(INSTALL_MI_INC_GEN_FILES) $(INSTALL_MODULEMAP_MI_INC_FILES) \ 324 $(INSTALL_IF_MI_FILES) $(INSTALL_IF_MI_GEN_FILES) \ 325 $(INSTALL_DRIVERKIT_MI_INC_FILES) $(INSTALL_DRIVERKIT_MI_INC_GEN_FILES) \ 326 $(INSTALL_KF_MI_FILES) $(INSTALL_KF_MI_GEN_FILES) \ 327 $(INSTALL_MI_LCL_FILES) $(INSTALL_MI_LCL_GEN_FILES) $(INSTALL_MODULEMAP_MI_LCL_FILES) \ 328 $(INSTALL_IF_MI_LCL_FILES) $(INSTALL_IF_MI_LCL_GEN_FILES) \ 329 $(INSTALL_SF_MI_LCL_FILES) $(INSTALL_SF_MI_LCL_GEN_FILES) \ 330 $(INSTALL_DRIVERKIT_MI_LCL_FILES) $(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES) \ 331 $(INSTALL_KF_MI_LCL_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES) 332 @: 333 334.PHONY: do_installhdrs_md 335 336do_installhdrs_md: $(INSTALL_MD_INC_FILES) $(INSTALL_MD_INC_GEN_FILES) $(INSTALL_MODULEMAP_MD_INC_FILES) \ 337 $(INSTALL_DRIVERKIT_MD_INC_FILES) $(INSTALL_DRIVERKIT_MD_INC_GEN_FILES) \ 338 $(INSTALL_KF_MD_FILES) $(INSTALL_KF_MD_GEN_FILES) \ 339 $(INSTALL_MD_LCL_FILES) $(INSTALL_MD_LCL_GEN_FILES) $(INSTALL_MODULEMAP_MD_LCL_FILES) \ 340 $(INSTALL_SF_MD_LCL_FILES) $(INSTALL_SF_MD_LCL_GEN_FILES) \ 341 $(INSTALL_DRIVERKIT_MD_LCL_FILES) $(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES) \ 342 $(INSTALL_KF_MD_LCL_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES) 343 @: 344 345# 346# Generic Export rules 347# 348EXPORT_MI_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_LIST)) 349EXPORT_MI_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_GEN_LIST)) 350 351.PHONY: EXP_MI_INC_DIR 352 353EXP_MI_INC_DIR: 354 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR) 355 356$(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : % | EXP_MI_INC_DIR 357 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 358 359$(EXPORT_MI_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : $(SOURCE)/% | EXP_MI_INC_DIR 360 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 361 362EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST)) 363EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST)) 364 365.PHONY: EXP_MD_INC_DIR 366 367EXP_MD_INC_DIR: 368 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR) 369 370$(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : % | EXP_MD_INC_DIR 371 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 372 373$(EXPORT_MD_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : $(SOURCE)/% | EXP_MD_INC_DIR 374 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 375 376.PHONY: do_exporthdrs_mi 377 378do_exporthdrs_mi: $(EXPORT_MI_GEN_INC_FILES) $(EXPORT_MI_INC_FILES) 379 @: 380 381.PHONY: do_exporthdrs_md 382 383do_exporthdrs_md: $(EXPORT_MD_GEN_INC_FILES) $(EXPORT_MD_INC_FILES) 384 @: 385 386# 387# Generic Compilation rules 388# 389 390# 391# Compilation rules to generate .o from .s 392# 393 394S_RULE_0=@$(LOG_AS) "$@" 395S_RULE_1A=$(_v)${S_KCC} -c ${SFLAGS} -MD -MF $(@:o=d) -MP ${$@_SFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} 396S_RULE_1B=$(<F) 397S_RULE_2= 398 399# 400# Compilation rules to generate .o from .c for normal files 401# 402C_RULE_0=@$(LOG_CC) "$@" 403C_RULE_1A=$(_v)${KCC} -c ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} 404C_RULE_1B=$(<F) 405C_RULE_2= 406 407C_RULE_3= 408C_RULE_4A= 409C_RULE_4B= 410 411# 412# Compilation rules to generate .o from .c for driver files 413# 414C_RULE_0_D=${C_RULE_0} 415C_RULE_1A_D=${C_RULE_1A} 416C_RULE_1B_D=${C_RULE_1B} 417C_RULE_2_D=${C_RULE_2} 418C_RULE_3_D=${C_RULE_3} 419C_RULE_4A_D=${C_RULE_4A} 420C_RULE_4B_D=${C_RULE_4B} 421 422# 423# Compilation rules to generate .co from .cp or .cpo from .cpp 424# The config tool slickly changes the last source filename char to 'o' 425# for the object filename. 426P_RULE_0=@$(LOG_CXX) "$@" 427P_RULE_1A=$(_v)${KC++} -o $@ -c ${CXXFLAGS} ${filter-out ${$@_CFLAGS_RM}, ${CFLAGS} ${CXXWARNFLAGS}} -MD -MF $(@:o=d) -MP ${$@_CFLAGS_ADD} ${$@_CXXWARNFLAGS_ADD} ${INCFLAGS} ${$@_INCFLAGS} 428P_RULE_1B=$(<F) 429P_RULE_2= 430 431P_RULE_3= 432P_RULE_4A= 433P_RULE_4B= 434 435# 436# Explain how to make the bsd syscall list 437# 438$(TARGET)/bsd.syscalls.master: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) 439 @$(LOG_GENERATE) "$(@F)$(Color0) from $(ColorF)$<$(Color0)" 440 $(_v)$(UNIFDEF) $(SEED_DEFINES) $< > $@; \ 441 if [ $$? -eq 2 ]; then \ 442 $(ERR) Parse failure for $<; \ 443 exit 1; \ 444 fi 445 446# 447# This isn't the right place to put this, but we need to := override some settings 448# in Makefiles that include the generic helper fragments (like this file) 449# 450ifeq ($(BUILD_JSON_COMPILATION_DATABASE),1) 451HIB_FILES := 452LAST_FILES := 453KLD_FILES := 454endif 455 456.PHONY: do_build_all 457 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. 460do_build_all:: 461 @: 462 463.PHONY: do_build_install_primary 464 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. 467do_build_install_primary:: 468 @: 469 470.PHONY: do_build_install_non_primary 471 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. 474do_build_install_non_primary:: 475 @: 476 477INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST)) 478 479.PHONY: INSTALL_MAN_DIR 480 481INSTALL_MAN_DIR: 482 $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR) 483 484$(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : % | INSTALL_MAN_DIR 485 @$(LOG_MAN) "$*" 486 $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ 487 488define MAN_LINKS_RULE_template 489$$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(2): $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(1) 490 @$$(LOG_MANLINK) "$(2)" 491 $(_v)ln -f $$< $$@ 492endef 493 494function_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)))) 495 496INSTALL_MAN_FILES_LINKS = $(call function_generate_man_links_rules,$(INSTALL_MAN_LINKS)) 497 498.PHONY: do_installman 499 500do_installman: $(INSTALL_MAN_FILES) $(INSTALL_MAN_FILES_LINKS) 501 @: 502 503.PHONY: do_textfiles_install do_textfiles_install_mi do_textfiles_install_md 504 505# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 506# in their local Makefiles. Those that do will use a "::" rule to augment this. 507do_textfiles_install_mi:: do_installman 508 @: 509 510# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 511# in their local Makefiles. Those that do will use a "::" rule to augment this. 512do_textfiles_install_md:: 513 @: 514 515.PHONY: do_build_setup 516 517# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 518# in their local Makefiles. Those that do will use a "::" rule to augment this. 519do_build_setup:: 520 @: 521 522.PHONY: do_config_all 523 524# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 525# in their local Makefiles. Those that do will use a "::" rule to augment this. 526do_config_all:: 527 @: 528 529.PHONY: do_config_install_primary 530 531# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 532# in their local Makefiles. Those that do will use a "::" rule to augment this. 533do_config_install_primary:: 534 @: 535 536.PHONY: do_config_install_variant 537 538# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 539# in their local Makefiles. Those that do will use a "::" rule to augment this. 540do_config_install_variant:: 541 @: 542 543.PHONY: do_config_install 544 545# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 546# in their local Makefiles. Those that do will use a "::" rule to augment this. 547do_config_install:: 548 @: 549 550# vim: set ft=make: 551