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# Helper function to call a verifier 152# Generally, a verifier is a function that post-processes a .o file to validate 153# some characteristics. 154# 155# This ensures that the output .o file is renamed if the verifier rejects the 156# input or fails. This forces the .o file to be re-generated & re-verified if 157# another build is run. 158# 159# Note: currently, it is possible to end up in an inconsistent state by 160# Ctrl+C-ing in the middle of a verifier run, causing a .o file that would 161# have failed verification to still exist as a .o instead o a .o.unverified. 162# The next build should be a "clean" build to prevent the .o file avoiding 163# verification. 164# 165# Any stderr output from the verifier is printed with an "error:" prefix. 166# 167# $(1) is the name of the verifier to call 168# $(2) is the name of the .o file to pass to the verifier 169define VERIFY 170{ ERROR_OUTPUT="$$({ $(call $(1),$(2)) } 2>&1 1>&3)"; } 3>&1; \ 171RETURN=$$?; \ 172$(ERR) "$$($(SED) -e 's/^/error: /' <<< "$$ERROR_OUTPUT")"; \ 173if [ $$RETURN -ne 0 ]; then \ 174 UNVERIFIED_FILE=$(@:o=o.unverified) ; \ 175 $(MV) '$(2)' "$$UNVERIFIED_FILE"; \ 176 $(ERR) "error: Moved object file $(2) with verifier failures to $$PWD/$$UNVERIFIED_FILE"; \ 177 exit $$RETURN; \ 178fi; 179endef 180 181# Verifier to ensure no UBSan runtime calls generated in a file 182# Compile with -fsanitize=... and WITHOUT -fsanitize-trap 183# 184# On failure, the build will fail and any offending symbols will be printed 185# along with a partial disassembly. A full disassembly of the object file may 186# also be useful, e.g.: 187# $ objdump -dSrl BUILD/obj/DEVELOPMENT_.../osfmk/DEVELOPMENT/vm_sanitize.o 188# 189# Note that objdump will not work on builds with LTO enabled, since the 190# intermediate files are LLVM bitcode instead of traditional object files. 191# 192# $(1) is the name of the .o file to be verified 193define VERIFIER_NO_UBSAN_CHECKS 194MATCHES="$$($(NM) -j '$(1)' | $(GREP) '^___ubsan')"; \ 195if [[ ! -z "$$MATCHES" ]]; then \ 196 $(ECHO) 1>&2 'UBSan verifier failure for $<:'; \ 197 DISASM="$$($(OBJDUMP) -dSrl '$(1)' | $(GREP) -E '___ubsan|^;' | $(GREP) -B2 '___ubsan')"; \ 198 if [[ -z "$$DISASM" ]]; then \ 199 $(ECHO) 1>&2 "Failed to disassemble intermediate object file. It may be a bitcode file if LTO is enabled."; \ 200 else \ 201 $(ECHO) 1>&2 "$$($(SED) -e '/^--$$/d' -e 's/^/ /' <<< "$$DISASM")"; \ 202 fi; \ 203 exit 1; \ 204fi; 205endef 206 207# 208# Empty the install lists of non-host and non-exclave headers if building the 209# host headers alias and exclave headers aliases. Separately, export headers 210# are also emptied for exclaves (but not for host headers) with 211# EXPORTHDRS_SKIP_EXCLAVES. 212# 213 214ifeq ($(INSTALLHDRS_SKIP_HOST),YES) 215 216INSTALL_MI_LIST = 217INSTALL_MI_GEN_LIST = 218INSTALL_IF_MI_LIST = 219INSTALL_IF_MI_GEN_LIST = 220INSTALL_DRIVERKIT_MI_LIST = 221INSTALL_DRIVERKIT_MI_GEN_LIST = 222INSTALL_KF_MI_LIST = 223INSTALL_KF_MI_GEN_LIST = 224INSTALL_MI_LCL_LIST = 225INSTALL_MI_LCL_GEN_LIST = 226INSTALL_IF_MI_LCL_LIST = 227INSTALL_IF_MI_LCL_GEN_LIST = 228INSTALL_SF_MI_LCL_LIST = 229INSTALL_SF_MI_LCL_GEN_LIST = 230INSTALL_DRIVERKIT_MI_LCL_LIST = 231INSTALL_DRIVERKIT_MI_LCL_GEN_LIST = 232INSTALL_KF_MI_LCL_LIST = 233INSTALL_KF_MI_LCL_GEN_LIST = 234INSTALL_MD_LIST = 235INSTALL_MD_GEN_LIST = 236INSTALL_DRIVERKIT_MD_LIST = 237INSTALL_DRIVERKIT_MD_GEN_LIST = 238INSTALL_KF_MD_LIST = 239INSTALL_KF_MD_GEN_LIST = 240INSTALL_MD_LCL_LIST = 241INSTALL_MD_LCL_GEN_LIST = 242INSTALL_SF_MD_LCL_LIST = 243INSTALL_SF_MD_LCL_GEN_LIST = 244INSTALL_DRIVERKIT_MD_LCL_LIST = 245INSTALL_DRIVERKIT_MD_LCL_GEN_LIST = 246INSTALL_KF_MD_LCL_LIST = 247INSTALL_KF_MD_LCL_GEN_LIST = 248INSTALL_KF_LIBCXX_MI_LIST = 249 250# If there are no headers then there can be no module maps. 251INSTALLHDRS_MODULEMAPS_SKIP_HOST = YES 252 253endif 254 255ifeq ($(INSTALLHDRS_MODULEMAPS_SKIP_HOST),YES) 256INSTALL_MODULEMAP_MI_LIST = 257INSTALL_MODULEMAP_MI_LCL_LIST = 258INSTALL_MODULEMAP_MD_LIST = 259INSTALL_MODULEMAP_MD_LCL_LIST = 260endif 261 262# 263# Machine-independent (public) files 264# 265 266INSTALL_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LIST)) 267INSTALL_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_GEN_LIST)) 268INSTALL_MODULEMAP_MI_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MODULEMAP_MI_DIR)/,$(INSTALL_MODULEMAP_MI_LIST)) 269 270$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_FILES),,incmidir,$(SINCFRAME_UNIFDEF))) 271$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_INC_GEN_FILES),1,incmigendir,$(SINCFRAME_UNIFDEF))) 272$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MI_INC_FILES),,mmincmidir,-t $(DATA_UNIFDEF))) 273 274INSTALL_IF_MI_FILES = $(addprefix $(DSTROOT)/$(IINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LIST)) 275INSTALL_IF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(IINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_GEN_LIST)) 276 277$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_FILES),,iincmidir,$(SINCFRAME_UNIFDEF))) 278$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_GEN_FILES),1,iincmigendir,$(SINCFRAME_UNIFDEF))) 279 280ifeq ($(DRIVERKIT),1) 281INSTALL_DRIVERKIT_MI_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LIST)) 282INSTALL_DRIVERKIT_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_GEN_LIST)) 283 284$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_FILES),,dkincmidir,$(DKINCFRAME_UNIFDEF))) 285$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_INC_GEN_FILES),1,dkincmigendir,$(DKINCFRAME_UNIFDEF))) 286endif 287 288ifeq ($(EXCLAVEKIT),1) 289INSTALL_EXCLAVEKIT_MI_INC_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVEKIT_MI_LIST)) 290INSTALL_EXCLAVEKIT_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVEKIT_MI_GEN_LIST)) 291 292$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MI_INC_FILES),,ekincmidir,$(EKINCFRAME_UNIFDEF))) 293$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MI_INC_GEN_FILES),1,ekincmigendir,$(EKINCFRAME_UNIFDEF))) 294endif 295 296ifeq ($(EXCLAVECORE),1) 297INSTALL_EXCLAVECORE_MI_INC_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECOREINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVECORE_MI_LIST)) 298INSTALL_EXCLAVECORE_MI_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECOREINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVECORE_MI_GEN_LIST)) 299 300$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MI_INC_FILES),,ecincmidir,$(ECINCFRAME_UNIFDEF))) 301$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MI_INC_GEN_FILES),1,ecincmigendir,$(ECINCFRAME_UNIFDEF))) 302endif 303 304INSTALL_KF_MI_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LIST)) 305INSTALL_KF_MI_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_GEN_LIST)) 306 307$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_FILES),,kincmidir,$(KINCFRAME_UNIFDEF))) 308$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_GEN_FILES),1,kincmigendir,$(KINCFRAME_UNIFDEF))) 309 310INSTALL_LIBCXX_MI_FILES = $(addprefix $(DSTROOT)/$(KLIBCXXINCDIR)/, $(INSTALL_KF_LIBCXX_MI_LIST)) 311 312$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_LIBCXX_MI_FILES),,cxxmidir,$(LIBCXXINCFRAME_UNIFDEF))) 313 314# 315# Machine-independent local (private) files 316# 317 318INSTALL_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_LIST)) 319INSTALL_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_MI_LCL_GEN_LIST)) 320INSTALL_MODULEMAP_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MODULEMAP_MI_DIR)/,$(INSTALL_MODULEMAP_MI_LCL_LIST)) 321 322$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_FILES),,pincmidir,$(SPINCFRAME_UNIFDEF))) 323$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MI_LCL_GEN_FILES),1,pincmigendir,$(SPINCFRAME_UNIFDEF))) 324$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MI_LCL_FILES),,mmpincmidir,-t $(PDATA_UNIFDEF))) 325 326INSTALL_IF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(IPINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LCL_LIST)) 327INSTALL_IF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(IPINCDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_IF_MI_LCL_GEN_LIST)) 328 329$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_LCL_FILES),,ipincmidir,$(SPINCFRAME_UNIFDEF))) 330$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_IF_MI_LCL_GEN_FILES),1,ipincmigendir,$(SPINCFRAME_UNIFDEF))) 331 332INSTALL_SF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_SF_MI_LCL_LIST))) 333INSTALL_SF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MI_DIR)/, $(sort $(INSTALL_SF_MI_LCL_GEN_LIST))) 334 335$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MI_LCL_FILES),,spincmidir,$(SPINCFRAME_UNIFDEF))) 336$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MI_LCL_GEN_FILES),1,spincmigendir,$(SPINCFRAME_UNIFDEF))) 337 338ifeq ($(DRIVERKIT),1) 339INSTALL_DRIVERKIT_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_LIST)) 340INSTALL_DRIVERKIT_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_DRIVERKIT_MI_LCL_GEN_LIST)) 341 342$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_FILES),,dkpincmidir,$(DKPINCFRAME_UNIFDEF))) 343$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES),1,dkpincmigendir,$(DKPINCFRAME_UNIFDEF))) 344endif 345 346ifeq ($(EXCLAVEKIT),1) 347INSTALL_EXCLAVEKIT_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVEKIT_MI_LCL_LIST)) 348INSTALL_EXCLAVEKIT_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITLCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVEKIT_MI_LCL_GEN_LIST)) 349 350$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MI_LCL_FILES),,ekpincmidir,$(EKPINCFRAME_UNIFDEF))) 351$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MI_LCL_GEN_FILES),1,ekpincmigendir,$(EKPINCFRAME_UNIFDEF))) 352endif 353 354ifeq ($(EXCLAVECORE),1) 355INSTALL_EXCLAVECORE_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECORELCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVECORE_MI_LCL_LIST)) 356INSTALL_EXCLAVECORE_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECORELCLDIR)/$(INSTALL_MI_DIR)/, $(INSTALL_EXCLAVECORE_MI_LCL_GEN_LIST)) 357 358$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MI_LCL_FILES),,ecpincmidir,$(ECPINCFRAME_UNIFDEF))) 359$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MI_LCL_GEN_FILES),1,ecpincmigendir,$(ECPINCFRAME_UNIFDEF))) 360endif 361 362INSTALL_KF_MI_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_LIST)) 363INSTALL_KF_MI_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MI_DIR)/, $(INSTALL_KF_MI_LCL_GEN_LIST)) 364 365$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_FILES),,kpincmidir,$(KPINCFRAME_UNIFDEF))) 366$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MI_LCL_GEN_FILES),1,kpincmigendir,$(KPINCFRAME_UNIFDEF))) 367 368# 369# Machine-dependent (public) files 370# 371 372INSTALL_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_LIST)) 373INSTALL_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_MD_GEN_LIST)) 374INSTALL_MODULEMAP_MD_INC_FILES = $(addprefix $(DSTROOT)/$(INCDIR)/$(INSTALL_MODULEMAP_MD_DIR)/,$(INSTALL_MODULEMAP_MD_LIST)) 375 376$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_FILES),,incdir,$(SINCFRAME_UNIFDEF))) 377$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_INC_GEN_FILES),1,incgendir,$(SINCFRAME_UNIFDEF))) 378$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MD_INC_FILES),,mmincdir,-t $(DATA_UNIFDEF))) 379 380ifeq ($(DRIVERKIT),1) 381INSTALL_DRIVERKIT_MD_INC_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LIST)) 382INSTALL_DRIVERKIT_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_GEN_LIST)) 383 384$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_FILES),,dkincdir,$(DKINCFRAME_UNIFDEF))) 385$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_INC_GEN_FILES),1,dkincgendir,$(DKINCFRAME_UNIFDEF))) 386endif 387 388ifeq ($(EXCLAVEKIT),1) 389INSTALL_EXCLAVEKIT_MD_INC_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVEKIT_MD_LIST)) 390INSTALL_EXCLAVEKIT_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVEKIT_MD_GEN_LIST)) 391 392$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MD_INC_FILES),,ekincdir,$(EKINCFRAME_UNIFDEF))) 393$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MD_INC_GEN_FILES),1,ekincgendir,$(EKINCFRAME_UNIFDEF))) 394endif 395 396ifeq ($(EXCLAVECORE),1) 397INSTALL_EXCLAVECORE_MD_INC_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECOREINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVECORE_MD_LIST)) 398INSTALL_EXCLAVECORE_MD_INC_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECOREINCDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVECORE_MD_GEN_LIST)) 399 400$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MD_INC_FILES),,ecincdir,$(ECINCFRAME_UNIFDEF))) 401$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MD_INC_GEN_FILES),1,ecincgendir,$(ECINCFRAME_UNIFDEF))) 402endif 403 404INSTALL_KF_MD_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LIST)) 405INSTALL_KF_MD_GEN_FILES = $(addprefix $(DSTROOT)/$(KINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_GEN_LIST)) 406 407$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_FILES),,kincdir,$(KINCFRAME_UNIFDEF))) 408$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_GEN_FILES),1,kincgendir,$(KINCFRAME_UNIFDEF))) 409 410# 411# Machine-dependent local (private) files 412# 413 414INSTALL_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_LIST))) 415INSTALL_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_MD_LCL_GEN_LIST))) 416INSTALL_MODULEMAP_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(LCLDIR)/$(INSTALL_MODULEMAP_MD_DIR)/,$(INSTALL_MODULEMAP_MD_LCL_LIST)) 417 418$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_FILES),,pincdir,$(SPINCFRAME_UNIFDEF))) 419$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MD_LCL_GEN_FILES),1,pincgendir,$(SPINCFRAME_UNIFDEF))) 420$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_MODULEMAP_MD_LCL_FILES),,mmpincdir,-t $(PDATA_UNIFDEF))) 421 422INSTALL_SF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_SF_MD_LCL_LIST))) 423INSTALL_SF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(SPINCDIR)/$(INSTALL_MD_DIR)/, $(sort $(INSTALL_SF_MD_LCL_GEN_LIST))) 424 425$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MD_LCL_FILES),,spincdir,$(SPINCFRAME_UNIFDEF))) 426$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_SF_MD_LCL_GEN_FILES),1,spincgendir,$(SPINCFRAME_UNIFDEF))) 427 428ifeq ($(DRIVERKIT),1) 429INSTALL_DRIVERKIT_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_LIST)) 430INSTALL_DRIVERKIT_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(DRIVERKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_DRIVERKIT_MD_LCL_GEN_LIST)) 431 432$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_FILES),,dkpincdir,$(DKPINCFRAME_UNIFDEF))) 433$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES),1,dkpincgendir,$(DKPINCFRAME_UNIFDEF))) 434endif 435 436ifeq ($(EXCLAVEKIT),1) 437INSTALL_EXCLAVEKIT_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVEKIT_MD_LCL_LIST)) 438INSTALL_EXCLAVEKIT_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVEKITLCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVEKIT_MD_LCL_GEN_LIST)) 439 440$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MD_LCL_FILES),,ekpincdir,$(EKPINCFRAME_UNIFDEF))) 441$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVEKIT_MD_LCL_GEN_FILES),1,ekpincgendir,$(EKPINCFRAME_UNIFDEF))) 442endif 443 444ifeq ($(EXCLAVECORE),1) 445INSTALL_EXCLAVECORE_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECORELCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVECORE_MD_LCL_LIST)) 446INSTALL_EXCLAVECORE_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(EXCLAVECORELCLDIR)/$(INSTALL_MD_DIR)/, $(INSTALL_EXCLAVECORE_MD_LCL_GEN_LIST)) 447 448$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MD_LCL_FILES),,ecpincdir,$(ECPINCFRAME_UNIFDEF))) 449$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_EXCLAVECORE_MD_LCL_GEN_FILES),1,ecpincgendir,$(ECPINCFRAME_UNIFDEF))) 450endif 451 452INSTALL_KF_MD_LCL_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_LIST)) 453INSTALL_KF_MD_LCL_GEN_FILES = $(addprefix $(DSTROOT)/$(KPINCDIR)/$(EXPORT_MD_DIR)/, $(INSTALL_KF_MD_LCL_GEN_LIST)) 454 455$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_FILES),,kpincdir,$(KPINCFRAME_UNIFDEF))) 456$(eval $(call INSTALLHDRS_RULE_template,$(INSTALL_KF_MD_LCL_GEN_FILES),1,kpincgendir,$(KPINCFRAME_UNIFDEF))) 457 458.PHONY: do_installhdrs_mi 459 460# Double-colon rule so that MakeInc.kernel can add custom behaviors 461do_installhdrs_mi:: $(INSTALL_MI_INC_FILES) $(INSTALL_MI_INC_GEN_FILES) $(INSTALL_MODULEMAP_MI_INC_FILES) \ 462 $(INSTALL_IF_MI_FILES) $(INSTALL_IF_MI_GEN_FILES) \ 463 $(INSTALL_DRIVERKIT_MI_INC_FILES) $(INSTALL_DRIVERKIT_MI_INC_GEN_FILES) \ 464 $(INSTALL_EXCLAVEKIT_MI_INC_FILES) $(INSTALL_EXCLAVEKIT_MI_INC_GEN_FILES) \ 465 $(INSTALL_EXCLAVECORE_MI_INC_FILES) $(INSTALL_EXCLAVECORE_MI_INC_GEN_FILES) \ 466 $(INSTALL_KF_MI_FILES) $(INSTALL_KF_MI_GEN_FILES) \ 467 $(INSTALL_MI_LCL_FILES) $(INSTALL_MI_LCL_GEN_FILES) $(INSTALL_MODULEMAP_MI_LCL_FILES) \ 468 $(INSTALL_IF_MI_LCL_FILES) $(INSTALL_IF_MI_LCL_GEN_FILES) \ 469 $(INSTALL_SF_MI_LCL_FILES) $(INSTALL_SF_MI_LCL_GEN_FILES) \ 470 $(INSTALL_DRIVERKIT_MI_LCL_FILES) $(INSTALL_DRIVERKIT_MI_LCL_GEN_FILES) \ 471 $(INSTALL_KF_MI_LCL_FILES) $(INSTALL_KF_MI_LCL_GEN_FILES) \ 472 $(INSTALL_LIBCXX_MI_FILES) \ 473 $(INSTALL_EXCLAVEKIT_MI_LCL_FILES) $(INSTALL_EXCLAVEKIT_MI_LCL_GEN_FILES) \ 474 $(INSTALL_EXCLAVECORE_MI_LCL_FILES) $(INSTALL_EXCLAVECORE_MI_LCL_GEN_FILES) 475 @: 476 477.PHONY: do_installhdrs_md 478 479do_installhdrs_md: $(INSTALL_MD_INC_FILES) $(INSTALL_MD_INC_GEN_FILES) $(INSTALL_MODULEMAP_MD_INC_FILES) \ 480 $(INSTALL_DRIVERKIT_MD_INC_FILES) $(INSTALL_DRIVERKIT_MD_INC_GEN_FILES) \ 481 $(INSTALL_EXCLAVEKIT_MD_INC_FILES) $(INSTALL_EXCLAVEKIT_MD_INC_GEN_FILES) \ 482 $(INSTALL_EXCLAVECORE_MD_INC_FILES) $(INSTALL_EXCLAVECORE_MD_INC_GEN_FILES) \ 483 $(INSTALL_KF_MD_FILES) $(INSTALL_KF_MD_GEN_FILES) \ 484 $(INSTALL_MD_LCL_FILES) $(INSTALL_MD_LCL_GEN_FILES) $(INSTALL_MODULEMAP_MD_LCL_FILES) \ 485 $(INSTALL_SF_MD_LCL_FILES) $(INSTALL_SF_MD_LCL_GEN_FILES) \ 486 $(INSTALL_DRIVERKIT_MD_LCL_FILES) $(INSTALL_DRIVERKIT_MD_LCL_GEN_FILES) \ 487 $(INSTALL_EXCLAVEKIT_MD_LCL_FILES) $(INSTALL_EXCLAVEKIT_MD_LCL_GEN_FILES) \ 488 $(INSTALL_EXCLAVECORE_MD_LCL_FILES) $(INSTALL_EXCLAVECORE_MD_LCL_GEN_FILES) \ 489 $(INSTALL_KF_MD_LCL_FILES) $(INSTALL_KF_MD_LCL_GEN_FILES) 490 @: 491 492# 493# Generic Export rules 494# 495EXPORT_MI_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_LIST)) 496EXPORT_MI_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/, $(EXPORT_MI_GEN_LIST)) 497 498.PHONY: EXP_MI_INC_DIR 499 500EXP_MI_INC_DIR: 501 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR) 502 503$(EXPORT_MI_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : % | EXP_MI_INC_DIR 504 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 505 506$(EXPORT_MI_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MI_DIR)/% : $(SOURCE)/% | EXP_MI_INC_DIR 507 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 508 509EXPORT_MD_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_LIST)) 510EXPORT_MD_GEN_INC_FILES = $(addprefix $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/, $(EXPORT_MD_GEN_LIST)) 511 512.PHONY: EXP_MD_INC_DIR 513 514EXP_MD_INC_DIR: 515 $(_v)$(MKDIR) $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR) 516 517$(EXPORT_MD_GEN_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : % | EXP_MD_INC_DIR 518 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 519 520$(EXPORT_MD_INC_FILES): $(OBJROOT)/$(EXPDIR)/$(EXPORT_MD_DIR)/% : $(SOURCE)/% | EXP_MD_INC_DIR 521 $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS_RO) $< $@ 522 523.PHONY: do_exporthdrs_mi 524 525do_exporthdrs_mi: $(EXPORT_MI_GEN_INC_FILES) $(EXPORT_MI_INC_FILES) 526 @: 527 528.PHONY: do_exporthdrs_md 529 530do_exporthdrs_md: $(EXPORT_MD_GEN_INC_FILES) $(EXPORT_MD_INC_FILES) 531 @: 532 533# 534# Generic Compilation rules 535# 536 537# 538# Compilation rules to generate .o from .s 539# 540 541S_RULE_0=@$(LOG_AS) "$@" 542S_RULE_1A=$(_v)$(S_KCC) -c $(SFLAGS) -MD -MF $(@:o=d) -MJ $(@:o=o.json) -MP $($@_SFLAGS_ADD) $(INCFLAGS) $($@_INCFLAGS) 543S_RULE_1B=$(<F) 544S_RULE_2= 545 546# 547# Compilation rules to generate .o from .c for normal files 548# 549C_RULE_0=@$(LOG_CC) "$@" 550C_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) 551C_RULE_1B=$(<F) 552C_RULE_2= 553 554C_RULE_3=@$(if $($@_VERIFIER), $(LOG_VERIFIER) "$@") 555C_RULE_4=@$(if $($@_VERIFIER), $(call VERIFY,$($@_VERIFIER),$@)) 556 557# 558# Compilation rules to generate .o from .c for driver files 559# 560C_RULE_0_D=$(C_RULE_0) 561C_RULE_1A_D=$(C_RULE_1A) 562C_RULE_1B_D=$(C_RULE_1B) 563C_RULE_2_D=$(C_RULE_2) 564C_RULE_3_D=$(C_RULE_3) 565C_RULE_4_D=$(C_RULE_4) 566 567# 568# Compilation rules to generate .co from .cp or .cpo from .cpp 569# The config tool slickly changes the last source filename char to 'o' 570# for the object filename. 571P_RULE_0=@$(LOG_CXX) "$@" 572P_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) 573P_RULE_1B=$(<F) 574P_RULE_2= 575 576P_RULE_3=@$(if $($@_VERIFIER), $(LOG_VERIFIER) "$@") 577P_RULE_4=@$(if $($@_VERIFIER), $(call VERIFY,$($@_VERIFIER),$@)) 578 579# 580# Explain how to make the bsd syscall list 581# 582$(TARGET)/bsd.syscalls.master: $(SRCROOT)/bsd/kern/syscalls.master $(MAKESYSCALLS) 583 @$(LOG_GENERATE) "$(@F)$(Color0) from $(ColorF)$<$(Color0)" 584 $(_v)$(UNIFDEF) $(SEED_DEFINES) $< > $@; \ 585 if [ $$? -eq 2 ]; then \ 586 $(ERR) Parse failure for $<; \ 587 exit 1; \ 588 fi 589 590.PHONY: do_build_all 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_build_all:: 595 @: 596 597.PHONY: do_build_install_primary 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_install_primary:: 602 @: 603 604.PHONY: do_build_install_non_primary 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_build_install_non_primary:: 609 @: 610 611INSTALL_MAN_FILES = $(addprefix $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/, $(INSTALL_MAN_LIST)) 612 613.PHONY: INSTALL_MAN_DIR 614 615INSTALL_MAN_DIR: 616 $(_v)$(MKDIR) $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR) 617 618$(INSTALL_MAN_FILES): $(DSTROOT)/$(MANDIR)/$(INSTALL_MAN_DIR)/% : % | INSTALL_MAN_DIR 619 @$(LOG_MAN) "$*" 620 $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ 621 622define MAN_LINKS_RULE_template 623$$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(2): $$(DSTROOT)/$$(MANDIR)/$$(INSTALL_MAN_DIR)/$(1) 624 @$$(LOG_MANLINK) "$(2)" 625 $(_v)ln -f $$< $$@ 626endef 627 628function_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)))) 629 630INSTALL_MAN_FILES_LINKS = $(call function_generate_man_links_rules,$(INSTALL_MAN_LINKS)) 631 632.PHONY: do_installman 633 634do_installman: $(INSTALL_MAN_FILES) $(INSTALL_MAN_FILES_LINKS) 635 @: 636 637.PHONY: do_textfiles_install do_textfiles_install_mi do_textfiles_install_md 638 639# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 640# in their local Makefiles. Those that do will use a "::" rule to augment this. 641do_textfiles_install_mi:: do_installman 642 @: 643 644# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 645# in their local Makefiles. Those that do will use a "::" rule to augment this. 646do_textfiles_install_md:: 647 @: 648 649.PHONY: do_build_setup 650 651# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 652# in their local Makefiles. Those that do will use a "::" rule to augment this. 653do_build_setup:: 654 @: 655 656.PHONY: do_config_all 657 658# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 659# in their local Makefiles. Those that do will use a "::" rule to augment this. 660do_config_all:: 661 @: 662 663.PHONY: do_config_install_primary 664 665# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 666# in their local Makefiles. Those that do will use a "::" rule to augment this. 667do_config_install_primary:: 668 @: 669 670.PHONY: do_config_install_variant 671 672# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 673# in their local Makefiles. Those that do will use a "::" rule to augment this. 674do_config_install_variant:: 675 @: 676 677.PHONY: do_config_install 678 679# Do-nothing rule, since not all levels of the recursive hierarchy might implement this 680# in their local Makefiles. Those that do will use a "::" rule to augment this. 681do_config_install:: 682 @: 683 684# vim: set ft=make: 685