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# Empty the export lists of headers when building for exclaves 15# 16 17ifeq ($(EXPORTHDRS_SKIP_EXCLAVES),YES) 18EXPORT_MI_LIST = 19EXPORT_MI_GEN_LIST = 20EXPORT_MD_LIST = 21EXPORT_MD_GEN_LIST = 22endif 23 24# 25# Generic Install rules 26# 27 28ifndef INSTALL_KF_MI_LCL_LIST 29 INSTALL_KF_MI_LCL_LIST = $(EXPORT_MI_LIST) 30endif 31 32ifndef INSTALL_KF_MI_LCL_GEN_LIST 33 INSTALL_KF_MI_LCL_GEN_LIST = $(EXPORT_MI_GEN_LIST) 34endif 35 36ifndef INSTALL_KF_MD_LCL_LIST 37 INSTALL_KF_MD_LCL_LIST = $(EXPORT_MD_LIST) 38endif 39 40ifndef INSTALL_KF_MD_LCL_GEN_LIST 41 INSTALL_KF_MD_LCL_GEN_LIST = $(EXPORT_MD_GEN_LIST) 42endif 43 44ifndef INSTALL_KF_MI_LIST 45 INSTALL_KF_MI_LIST = $(EXPORT_MI_LIST) 46endif 47 48ifndef INSTALL_KF_MI_GEN_LIST 49 INSTALL_KF_MI_GEN_LIST = $(EXPORT_MI_GEN_LIST) 50endif 51 52ifndef INSTALL_KF_MD_LIST 53 INSTALL_KF_MD_LIST = $(EXPORT_MD_LIST) 54endif 55 56ifndef INSTALL_KF_MD_GEN_LIST 57 INSTALL_KF_MD_GEN_LIST = $(EXPORT_MD_GEN_LIST) 58endif 59 60$(eval $(call _setup_build_log_colors)) 61 62.PHONY: ALWAYS 63 64ALWAYS: 65 66# $(1) is the list of install paths 67# $(2) is "1" if it's a "GEN"-style rule that looks locally, or else $(SOURCE) 68# $(3) is the local temp directory for processing 69# $(4) is the unifdef flags 70# 71# $$$$$$$$ is a double-escaped "$$" to represent the current pid 72# of the shell process for creating uniquely named temporary files 73 74define INSTALLHDRS_RULE_template 75 76.PHONY: $(3)_MKDIR 77 78$(3)_MKDIR: 79 $$(_v)$$(MKDIR) ./$(3) 80 $$(_v)$$(MKDIR) $(dir $(firstword $(1))) 81 82# Rebuild if unifdef flags change 83$(1): $(3)/.UNIFDEF_FLAGS 84$(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR 85 $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) $(4) 86 87$(1): $(dir $(firstword $(1)))% : $(if $(2),%,$$(SOURCE)/%) | $(3)_MKDIR 88 @$$(LOG_INSTALLHDR) "$$*" 89 $$(_v)$$(UNIFDEF) $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$; \ 90 if [ $$$$? -eq 2 ]; then \ 91 $(ERR) Parse failure for $$<; \ 92 exit 1; \ 93 fi; \ 94 $$(DECOMMENT) ./$(3)/$$*.unifdef.$$$$$$$$ r > \ 95 ./$(3)/$$*.strip.$$$$$$$$ || exit 1; \ 96 if [ -s ./$(3)/$$*.strip.$$$$$$$$ ]; then \ 97 $$(INSTALL) $$(INSTALL_FLAGS) ./$(3)/$$*.unifdef.$$$$$$$$ $$@ || exit 1; \ 98 fi; \ 99 $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$ ./$(3)/$$*.strip.$$$$$$$$ 100endef 101 102# $(1) is the list of install paths 103# $(2) is the source path pattern (using % to match with $(5)) or source file 104# $(3) is the local temp directory for processing 105# $(4) is the unifdef flags 106# $(5) is the destination directory (when pattern matching) or empty 107# 108# $$$$$$$$ is a double-escaped "$$" to represent the current pid 109# of the shell process for creating uniquely named temporary files 110 111define INSTALLPYTHON_RULE_template 112 113.PHONY: $(3)_MKDIR 114 115$(3)_MKDIR: 116 $$(_v)$$(MKDIR) ./$(3) 117 118# Rebuild if unifdef flags change 119$(1): $(3)/.UNIFDEF_FLAGS 120$(3)/.UNIFDEF_FLAGS: ALWAYS | $(3)_MKDIR 121 $$(_v)$$(REPLACECONTENTS) $$@ $$(UNIFDEF) -t $(4) 122 123$(1): $(5)% : $(2) | $(3)_MKDIR 124 @$$(LOG_INSTALLPY) "$$*" 125 $$(_v)$$(MKDIR) $$(dir $$@) $$(dir ./$(3)/$$*) 126 $$(_v)$$(UNIFDEF) -t $(4) $$< > ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*); \ 127 if [ $$$$? -eq 2 ]; then \ 128 $(ERR) Parse failure for $$<; \ 129 exit 1; \ 130 fi; \ 131 $$(INSTALL) $$(DATA_INSTALL_FLAGS) \ 132 ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$@ || exit 1; \ 133 $$(PYTHON) $$(LLDBMACROS_SOURCE)/lint/syntax_checker.py \ 134 ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) $$(_vstdout) || exit 1; \ 135 $$(RM) ./$(3)/$$*.unifdef.$$$$$$$$$$(suffix $$*) 136 $$(_v)if [ -n "$(5)" ]; then $$(TOUCH) "$(5)"; fi 137endef 138 139# Template for Libsyscall header unifdef postprocessing in DSTROOT 140# $(1) is the install path 141# $(2) is the unifdef flags 142 143define LIBSYSCALL_DO_UNIFDEF_HEADERS_RULE_template 144do_unifdef_headers:: 145 $$(_v)[ \! -d "$(1)" ] || $$(FIND) -x "$(1)" -type f \( -name \*.h -o \ 146 -name \*.defs -o -name \*.iig -o -name \*.modulemap \) \ 147 -execdir $$(UNIFDEF) $(2) -o {} {} \; 148.PHONY: do_unifdef_headers 149endef 150 151 152# 153# Empty the install lists of non-host and non-exclave headers if building the 154# host headers alias and exclave headers aliases. Separately, export headers 155# are also emptied for exclaves (but not for host headers) with 156# EXPORTHDRS_SKIP_EXCLAVES. 157# 158 159ifeq ($(INSTALLHDRS_SKIP_HOST),YES) 160 161INSTALL_MI_LIST = 162INSTALL_MI_GEN_LIST = 163INSTALL_IF_MI_LIST = 164INSTALL_IF_MI_GEN_LIST = 165INSTALL_DRIVERKIT_MI_LIST = 166INSTALL_DRIVERKIT_MI_GEN_LIST = 167INSTALL_KF_MI_LIST = 168INSTALL_KF_MI_GEN_LIST = 169INSTALL_MI_LCL_LIST = 170INSTALL_MI_LCL_GEN_LIST = 171INSTALL_IF_MI_LCL_LIST = 172INSTALL_IF_MI_LCL_GEN_LIST = 173INSTALL_SF_MI_LCL_LIST = 174INSTALL_SF_MI_LCL_GEN_LIST = 175INSTALL_DRIVERKIT_MI_LCL_LIST = 176INSTALL_DRIVERKIT_MI_LCL_GEN_LIST = 177INSTALL_KF_MI_LCL_LIST = 178INSTALL_KF_MI_LCL_GEN_LIST = 179INSTALL_MD_LIST = 180INSTALL_MD_GEN_LIST = 181INSTALL_DRIVERKIT_MD_LIST = 182INSTALL_DRIVERKIT_MD_GEN_LIST = 183INSTALL_KF_MD_LIST = 184INSTALL_KF_MD_GEN_LIST = 185INSTALL_MD_LCL_LIST = 186INSTALL_MD_LCL_GEN_LIST = 187INSTALL_SF_MD_LCL_LIST = 188INSTALL_SF_MD_LCL_GEN_LIST = 189INSTALL_DRIVERKIT_MD_LCL_LIST = 190INSTALL_DRIVERKIT_MD_LCL_GEN_LIST = 191INSTALL_KF_MD_LCL_LIST = 192INSTALL_KF_MD_LCL_GEN_LIST = 193INSTALL_KF_LIBCXX_MI_LIST = 194 195# If there are no headers then there can be no module maps. 196INSTALLHDRS_MODULEMAPS_SKIP_HOST = YES 197 198endif 199 200ifeq ($(INSTALLHDRS_MODULEMAPS_SKIP_HOST),YES) 201INSTALL_MODULEMAP_MI_LIST = 202INSTALL_MODULEMAP_MI_LCL_LIST = 203INSTALL_MODULEMAP_MD_LIST = 204INSTALL_MODULEMAP_MD_LCL_LIST = 205endif 206 207# 208# Machine-independent (public) files 209# 210 211INSTALL_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LIST)) 212INSTALL_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_GEN_LIST)) 213INSTALL_MODULEMAP_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MODULEMAP_MI_DIR)/,$(INSTALL_MODULEMAP_MI_LIST)) 214 215$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_FILES),,incmidir,$(SINCFRAME_UNIFDEF))) 216$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_GEN_FILES),1,incmigendir,$(SINCFRAME_UNIFDEF))) 217$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MI_INC_FILES),,mmincmidir,-t $(DATA_UNIFDEF))) 218 219INSTALL_IF_MI_FILES = $(addprefix $(DSTROOT)/$(IINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LIST)) 220INSTALL_IF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(IINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_GEN_LIST)) 221 222$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_FILES),,iincmidir,$(SINCFRAME_UNIFDEF))) 223$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_GEN_FILES),1,iincmigendir,$(SINCFRAME_UNIFDEF))) 224 225ifeq ($(DRIVERKIT),1) 226INSTALL_DRIVERKIT_MI_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LIST)) 227INSTALL_DRIVERKIT_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_GEN_LIST)) 228 229$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_FILES),,dkincmidir,$(DKINCFRAME_UNIFDEF))) 230$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_GEN_FILES),1,dkincmigendir,$(DKINCFRAME_UNIFDEF))) 231endif 232 233ifeq ($(EXCLAVEKIT),1) 234INSTALL_EXCLAVEKIT_MI_INC_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVEKIT_MI_LIST)) 235INSTALL_EXCLAVEKIT_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVEKIT_MI_GEN_LIST)) 236 237$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MI_INC_FILES),,ekincmidir,$(EKINCFRAME_UNIFDEF))) 238$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MI_INC_GEN_FILES),1,ekincmigendir,$(EKINCFRAME_UNIFDEF))) 239endif 240 241ifeq ($(EXCLAVECORE),1) 242INSTALL_EXCLAVECORE_MI_INC_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECOREINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVECORE_MI_LIST)) 243INSTALL_EXCLAVECORE_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECOREINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVECORE_MI_GEN_LIST)) 244 245$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MI_INC_FILES),,ecincmidir,$(ECINCFRAME_UNIFDEF))) 246$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MI_INC_GEN_FILES),1,ecincmigendir,$(ECINCFRAME_UNIFDEF))) 247endif 248 249INSTALL_KF_MI_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LIST)) 250INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST)) 251 252$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_FILES),,kincmidir,$(KINCFRAME_UNIFDEF))) 253$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_GEN_FILES),1,kincmigendir,$(KINCFRAME_UNIFDEF))) 254 255INSTALL_LIBCXX_MI_FILES = $(addprefix $(DSTROOT)/$(KLIBCXXINCDIR)/, $(INSTALL_KF_LIBCXX_MI_LIST)) 256 257$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_LIBCXX_MI_FILES),,cxxmidir,$(LIBCXXINCFRAME_UNIFDEF))) 258 259# 260# Machine-independent local (private) files 261# 262 263INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_LIST)) 264INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_GEN_LIST)) 265INSTALL_MODULEMAP_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MODULEMAP_MI_DIR)/,$(INSTALL_MODULEMAP_MI_LCL_LIST)) 266 267$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_FILES),,pincmidir,$(SPINCFRAME_UNIFDEF))) 268$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_GEN_FILES),1,pincmigendir,$(SPINCFRAME_UNIFDEF))) 269$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MI_LCL_FILES),,mmpincmidir,-t $(PDATA_UNIFDEF))) 270 271INSTALL_IF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(IPINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LCL_LIST)) 272INSTALL_IF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(IPINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LCL_GEN_LIST)) 273 274$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_LCL_FILES),,ipincmidir,$(SPINCFRAME_UNIFDEF))) 275$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_LCL_GEN_FILES),1,ipincmigendir,$(SPINCFRAME_UNIFDEF))) 276 277INSTALL_SF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_SF_MI_LCL_LIST))) 278INSTALL_SF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_SF_MI_LCL_GEN_LIST))) 279 280$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MI_LCL_FILES),,spincmidir,$(SPINCFRAME_UNIFDEF))) 281$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MI_LCL_GEN_FILES),1,spincmigendir,$(SPINCFRAME_UNIFDEF))) 282 283ifeq ($(DRIVERKIT),1) 284INSTALL_DRIVERKIT_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_LIST)) 285INSTALL_DRIVERKIT_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_GEN_LIST)) 286 287$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_FILES),,dkpincmidir,$(DKPINCFRAME_UNIFDEF))) 288$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES),1,dkpincmigendir,$(DKPINCFRAME_UNIFDEF))) 289endif 290 291ifeq ($(EXCLAVEKIT),1) 292INSTALL_EXCLAVEKIT_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVEKIT_MI_LCL_LIST)) 293INSTALL_EXCLAVEKIT_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVEKIT_MI_LCL_GEN_LIST)) 294 295$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MI_LCL_FILES),,ekpincmidir,$(EKPINCFRAME_UNIFDEF))) 296$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MI_LCL_GEN_FILES),1,ekpincmigendir,$(EKPINCFRAME_UNIFDEF))) 297endif 298 299ifeq ($(EXCLAVECORE),1) 300INSTALL_EXCLAVECORE_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECORELCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVECORE_MI_LCL_LIST)) 301INSTALL_EXCLAVECORE_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECORELCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVECORE_MI_LCL_GEN_LIST)) 302 303$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MI_LCL_FILES),,ecpincmidir,$(ECPINCFRAME_UNIFDEF))) 304$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MI_LCL_GEN_FILES),1,ecpincmigendir,$(ECPINCFRAME_UNIFDEF))) 305endif 306 307INSTALL_KF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_LIST)) 308INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST)) 309 310$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_FILES),,kpincmidir,$(KPINCFRAME_UNIFDEF))) 311$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_GEN_FILES),1,kpincmigendir,$(KPINCFRAME_UNIFDEF))) 312 313# 314# Machine-dependent (public) files 315# 316 317INSTALL_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LIST)) 318INSTALL_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_GEN_LIST)) 319INSTALL_MODULEMAP_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MODULEMAP_MD_DIR)/,$(INSTALL_MODULEMAP_MD_LIST)) 320 321$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_FILES),,incdir,$(SINCFRAME_UNIFDEF))) 322$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_GEN_FILES),1,incgendir,$(SINCFRAME_UNIFDEF))) 323$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MD_INC_FILES),,mmincdir,-t $(DATA_UNIFDEF))) 324 325ifeq ($(DRIVERKIT),1) 326INSTALL_DRIVERKIT_MD_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LIST)) 327INSTALL_DRIVERKIT_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_GEN_LIST)) 328 329$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_FILES),,dkincdir,$(DKINCFRAME_UNIFDEF))) 330$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_GEN_FILES),1,dkincgendir,$(DKINCFRAME_UNIFDEF))) 331endif 332 333ifeq ($(EXCLAVEKIT),1) 334INSTALL_EXCLAVEKIT_MD_INC_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVEKIT_MD_LIST)) 335INSTALL_EXCLAVEKIT_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVEKIT_MD_GEN_LIST)) 336 337$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MD_INC_FILES),,ekincdir,$(EKINCFRAME_UNIFDEF))) 338$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MD_INC_GEN_FILES),1,ekincgendir,$(EKINCFRAME_UNIFDEF))) 339endif 340 341ifeq ($(EXCLAVECORE),1) 342INSTALL_EXCLAVECORE_MD_INC_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECOREINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVECORE_MD_LIST)) 343INSTALL_EXCLAVECORE_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECOREINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVECORE_MD_GEN_LIST)) 344 345$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MD_INC_FILES),,ecincdir,$(ECINCFRAME_UNIFDEF))) 346$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MD_INC_GEN_FILES),1,ecincgendir,$(ECINCFRAME_UNIFDEF))) 347endif 348 349INSTALL_KF_MD_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LIST)) 350INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST)) 351 352$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_FILES),,kincdir,$(KINCFRAME_UNIFDEF))) 353$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_GEN_FILES),1,kincgendir,$(KINCFRAME_UNIFDEF))) 354 355# 356# Machine-dependent local (private) files 357# 358 359INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_LIST))) 360INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_GEN_LIST))) 361INSTALL_MODULEMAP_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MODULEMAP_MD_DIR)/,$(INSTALL_MODULEMAP_MD_LCL_LIST)) 362 363$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_FILES),,pincdir,$(SPINCFRAME_UNIFDEF))) 364$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_GEN_FILES),1,pincgendir,$(SPINCFRAME_UNIFDEF))) 365$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MD_LCL_FILES),,mmpincdir,-t $(PDATA_UNIFDEF))) 366 367INSTALL_SF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_SF_MD_LCL_LIST))) 368INSTALL_SF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_SF_MD_LCL_GEN_LIST))) 369 370$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MD_LCL_FILES),,spincdir,$(SPINCFRAME_UNIFDEF))) 371$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MD_LCL_GEN_FILES),1,spincgendir,$(SPINCFRAME_UNIFDEF))) 372 373ifeq ($(DRIVERKIT),1) 374INSTALL_DRIVERKIT_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_LIST)) 375INSTALL_DRIVERKIT_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_GEN_LIST)) 376 377$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_FILES),,dkpincdir,$(DKPINCFRAME_UNIFDEF))) 378$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES),1,dkpincgendir,$(DKPINCFRAME_UNIFDEF))) 379endif 380 381ifeq ($(EXCLAVEKIT),1) 382INSTALL_EXCLAVEKIT_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVEKIT_MD_LCL_LIST)) 383INSTALL_EXCLAVEKIT_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVEKIT_MD_LCL_GEN_LIST)) 384 385$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MD_LCL_FILES),,ekpincdir,$(EKPINCFRAME_UNIFDEF))) 386$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MD_LCL_GEN_FILES),1,ekpincgendir,$(EKPINCFRAME_UNIFDEF))) 387endif 388 389ifeq ($(EXCLAVECORE),1) 390INSTALL_EXCLAVECORE_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECORELCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVECORE_MD_LCL_LIST)) 391INSTALL_EXCLAVECORE_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECORELCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVECORE_MD_LCL_GEN_LIST)) 392 393$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MD_LCL_FILES),,ecpincdir,$(ECPINCFRAME_UNIFDEF))) 394$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MD_LCL_GEN_FILES),1,ecpincgendir,$(ECPINCFRAME_UNIFDEF))) 395endif 396 397INSTALL_KF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_LIST)) 398INSTALL_KF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_GEN_LIST)) 399 400$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_FILES),,kpincdir,$(KPINCFRAME_UNIFDEF))) 401$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_GEN_FILES),1,kpincgendir,$(KPINCFRAME_UNIFDEF))) 402 403.PHONY: do_installhdrs_mi 404 405# Double-colon rule so that MakeInc.kernel can add custom behaviors 406do_installhdrs_mi:: $(INSTALL_MI_INC_FILES) $(INSTALL_MI_INC_GEN_FILES) $(INSTALL_MODULEMAP_MI_INC_FILES) \ 407 $(INSTALL_IF_MI_FILES) $(INSTALL_IF_MI_GEN_FILES) \ 408 $(INSTALL_DRIVERKIT_MI_INC_FILES) $(INSTALL_DRIVERKIT_MI_INC_GEN_FILES) \ 409 $(INSTALL_EXCLAVEKIT_MI_INC_FILES) $(INSTALL_EXCLAVEKIT_MI_INC_GEN_FILES) \ 410 $(INSTALL_EXCLAVECORE_MI_INC_FILES) $(INSTALL_EXCLAVECORE_MI_INC_GEN_FILES) \ 411 $(INSTALL_KF_MI_FILES) $(INSTALL_KF_MI_GEN_FILES) \ 412 $(INSTALL_MI_LCL_FILES) $(INSTALL_MI_LCL_GEN_FILES) $(INSTALL_MODULEMAP_MI_LCL_FILES) \ 413 $(INSTALL_IF_MI_LCL_FILES) $(INSTALL_IF_MI_LCL_GEN_FILES) \ 414 $(INSTALL_SF_MI_LCL_FILES) $(INSTALL_SF_MI_LCL_GEN_FILES) \ 415 $(INSTALL_DRIVERKIT_MI_LCL_FILES) $(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES) \ 416 $(INSTALL_KF_MI_LCL_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES) \ 417 $(INSTALL_LIBCXX_MI_FILES) \ 418 $(INSTALL_EXCLAVEKIT_MI_LCL_FILES) $(INSTALL_EXCLAVEKIT_MI_LCL_GEN_FILES) \ 419 $(INSTALL_EXCLAVECORE_MI_LCL_FILES) $(INSTALL_EXCLAVECORE_MI_LCL_GEN_FILES) 420 @: 421 422.PHONY: do_installhdrs_md 423 424do_installhdrs_md: $(INSTALL_MD_INC_FILES) $(INSTALL_MD_INC_GEN_FILES) $(INSTALL_MODULEMAP_MD_INC_FILES) \ 425 $(INSTALL_DRIVERKIT_MD_INC_FILES) $(INSTALL_DRIVERKIT_MD_INC_GEN_FILES) \ 426 $(INSTALL_EXCLAVEKIT_MD_INC_FILES) $(INSTALL_EXCLAVEKIT_MD_INC_GEN_FILES) \ 427 $(INSTALL_EXCLAVECORE_MD_INC_FILES) $(INSTALL_EXCLAVECORE_MD_INC_GEN_FILES) \ 428 $(INSTALL_KF_MD_FILES) $(INSTALL_KF_MD_GEN_FILES) \ 429 $(INSTALL_MD_LCL_FILES) $(INSTALL_MD_LCL_GEN_FILES) $(INSTALL_MODULEMAP_MD_LCL_FILES) \ 430 $(INSTALL_SF_MD_LCL_FILES) $(INSTALL_SF_MD_LCL_GEN_FILES) \ 431 $(INSTALL_DRIVERKIT_MD_LCL_FILES) $(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES) \ 432 $(INSTALL_EXCLAVEKIT_MD_LCL_FILES) $(INSTALL_EXCLAVEKIT_MD_LCL_GEN_FILES) \ 433 $(INSTALL_EXCLAVECORE_MD_LCL_FILES) $(INSTALL_EXCLAVECORE_MD_LCL_GEN_FILES) \ 434 $(INSTALL_KF_MD_LCL_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES) 435 @: 436 437# 438# Generic Export rules 439# 440EXPORT_MI_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_LIST)) 441EXPORT_MI_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_GEN_LIST)) 442 443.PHONY: EXP_MI_INC_DIR 444 445EXP_MI_INC_DIR: 446 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR) 447 448$(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : % | EXP_MI_INC_DIR 449 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 450 451$(EXPORT_MI_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : $(SOURCE)/% | EXP_MI_INC_DIR 452 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 453 454EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST)) 455EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST)) 456 457.PHONY: EXP_MD_INC_DIR 458 459EXP_MD_INC_DIR: 460 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR) 461 462$(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : % | EXP_MD_INC_DIR 463 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 464 465$(EXPORT_MD_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : $(SOURCE)/% | EXP_MD_INC_DIR 466 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 467 468.PHONY: do_exporthdrs_mi 469 470do_exporthdrs_mi: $(EXPORT_MI_GEN_INC_FILES) $(EXPORT_MI_INC_FILES) 471 @: 472 473.PHONY: do_exporthdrs_md 474 475do_exporthdrs_md: $(EXPORT_MD_GEN_INC_FILES) $(EXPORT_MD_INC_FILES) 476 @: 477 478# 479# Generic Compilation rules 480# 481 482# 483# Compilation rules to generate .o from .s 484# 485 486S_RULE_0=@$(LOG_AS) "$@" 487S_RULE_1A=$(_v)$(S_KCC) -c $(SFLAGS) -MD -MF $(@:o=d) -MJ $(@:o=o.json) -MP $($@_SFLAGS_ADD) $(INCFLAGS) $($@_INCFLAGS) 488S_RULE_1B=$(<F) 489S_RULE_2= 490 491# 492# Compilation rules to generate .o from .c for normal files 493# 494C_RULE_0=@$(LOG_CC) "$@" 495C_RULE_1A=$(_v)$(KCC) -c $(filter-out $($@_CFLAGS_RM), $(CFLAGS) $(CWARNFLAGS)) -MD -MF $(@:o=d) -MJ $(@:o=o.json) -MP $($@_CFLAGS_ADD) $($@_CWARNFLAGS_ADD) $(INCFLAGS) $($@_INCFLAGS) 496C_RULE_1B=$(<F) 497C_RULE_2= 498 499C_RULE_3= 500C_RULE_4A= 501C_RULE_4B= 502 503# 504# Compilation rules to generate .o from .c for driver files 505# 506C_RULE_0_D=$(C_RULE_0) 507C_RULE_1A_D=$(C_RULE_1A) 508C_RULE_1B_D=$(C_RULE_1B) 509C_RULE_2_D=$(C_RULE_2) 510C_RULE_3_D=$(C_RULE_3) 511C_RULE_4A_D=$(C_RULE_4A) 512C_RULE_4B_D=$(C_RULE_4B) 513 514# 515# Compilation rules to generate .co from .cp or .cpo from .cpp 516# The config tool slickly changes the last source filename char to 'o' 517# for the object filename. 518P_RULE_0=@$(LOG_CXX) "$@" 519P_RULE_1A=$(_v)$(KC++) -o $@ -c $(CXXFLAGS) $(filter-out $($@_CFLAGS_RM), $(CFLAGS) $(CXXWARNFLAGS)) -MD -MF $(@:o=d) -MJ $(@:o=o.json) -MP $($@_CFLAGS_ADD) $($@_CXXWARNFLAGS_ADD) $(INCFLAGS) $($@_INCFLAGS) 520P_RULE_1B=$(<F) 521P_RULE_2= 522 523P_RULE_3= 524P_RULE_4A= 525P_RULE_4B= 526 527# 528# Explain how to make the bsd syscall list 529# 530$(TARGET)/bsd.syscalls.master: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) 531 @$(LOG_GENERATE) "$(@F)$(Color0) from $(ColorF)$<$(Color0)" 532 $(_v)$(UNIFDEF) $(SEED_DEFINES) $< > $@; \ 533 if [ $$? -eq 2 ]; then \ 534 $(ERR) Parse failure for $<; \ 535 exit 1; \ 536 fi 537 538.PHONY: do_build_all 539 540# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 541# in their local Makefiles. Those that do will use a "::" rule to augment this. 542do_build_all:: 543 @: 544 545.PHONY: do_build_install_primary 546 547# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 548# in their local Makefiles. Those that do will use a "::" rule to augment this. 549do_build_install_primary:: 550 @: 551 552.PHONY: do_build_install_non_primary 553 554# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 555# in their local Makefiles. Those that do will use a "::" rule to augment this. 556do_build_install_non_primary:: 557 @: 558 559INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST)) 560 561.PHONY: INSTALL_MAN_DIR 562 563INSTALL_MAN_DIR: 564 $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR) 565 566$(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : % | INSTALL_MAN_DIR 567 @$(LOG_MAN) "$*" 568 $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ 569 570define MAN_LINKS_RULE_template 571$$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(2): $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(1) 572 @$$(LOG_MANLINK) "$(2)" 573 $(_v)ln -f $$< $$@ 574endef 575 576function_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)))) 577 578INSTALL_MAN_FILES_LINKS = $(call function_generate_man_links_rules,$(INSTALL_MAN_LINKS)) 579 580.PHONY: do_installman 581 582do_installman: $(INSTALL_MAN_FILES) $(INSTALL_MAN_FILES_LINKS) 583 @: 584 585.PHONY: do_textfiles_install do_textfiles_install_mi do_textfiles_install_md 586 587# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 588# in their local Makefiles. Those that do will use a "::" rule to augment this. 589do_textfiles_install_mi:: do_installman 590 @: 591 592# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 593# in their local Makefiles. Those that do will use a "::" rule to augment this. 594do_textfiles_install_md:: 595 @: 596 597.PHONY: do_build_setup 598 599# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 600# in their local Makefiles. Those that do will use a "::" rule to augment this. 601do_build_setup:: 602 @: 603 604.PHONY: do_config_all 605 606# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 607# in their local Makefiles. Those that do will use a "::" rule to augment this. 608do_config_all:: 609 @: 610 611.PHONY: do_config_install_primary 612 613# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 614# in their local Makefiles. Those that do will use a "::" rule to augment this. 615do_config_install_primary:: 616 @: 617 618.PHONY: do_config_install_variant 619 620# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 621# in their local Makefiles. Those that do will use a "::" rule to augment this. 622do_config_install_variant:: 623 @: 624 625.PHONY: do_config_install 626 627# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 628# in their local Makefiles. Those that do will use a "::" rule to augment this. 629do_config_install:: 630 @: 631 632# vim: set ft=make: 633