1export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd 2export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def 3export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule 4export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir 5export MakeInc_san=${SRCROOT}/makedefs/MakeInc.san 6 7include $(MakeInc_cmd) 8include $(MakeInc_def) 9include $(MakeInc_san) 10 11DATAFILES = \ 12 13PRIVATE_DATAFILES = \ 14 15KERNELFILES = \ 16 17PRIVATE_KERNELFILES = \ 18 19# Available only in xnu proper 20PRIVATE_XNUFILES = \ 21 kcov.h \ 22 kcov_data.h \ 23 kcov_ksancov.h \ 24 kcov_ksancov_data.h \ 25 kcov_stksz.h \ 26 kcov_stksz_data.h 27 28INSTALL_MI_LIST = ${DATAFILES} 29INSTALL_SF_MI_LCL_LIST = ${DATAFILES} ${PRIVATE_DATAFILES} 30INSTALL_KF_MI_LIST = ${KERNELFILES} 31INSTALL_KF_MI_LCL_LIST = ${KERNELFILES} ${PRIVATE_KERNELFILES} 32 33EXPORT_MI_LIST = ${PRIVATE_XNUFILES} ${KERNELFILES} ${PRIVATE_KERNELFILES} 34 35INSTALL_MI_DIR = san 36EXPORT_MI_DIR = san 37 38# Generate blacklist 39.DELETE_ON_ERROR: 40$(OBJROOT)/san/kcov-blacklist-%: $(SOURCE)/kcov-blacklist $(SOURCE)/kcov-blacklist-% 41 @$(LOG_GENERATE) "$(notdir $@)" 42 $(_v)sed -e 's,^src:\./,src:'"$(SRCROOT)/," $^ > $@ 43 $(_v)$(SRCROOT)/san/tools/validate_blacklist.sh "$@" 44 45do_build_setup:: $(OBJROOT)/san/kcov-blacklist-x86_64 $(OBJROOT)/san/kcov-blacklist-arm64 46 47# 48# Kcov System.kext plugin 49# 50 51ifneq ($(RC_ProjectName),xnu_libraries) 52 53# 54# Primary build will always install kext without exported runtime. 55# 56# Note: Skipped when kasan only install is requested. 57# 58 59ifneq ($(INSTALL_KASAN_ONLY),1) 60 61KEXT := Kcov 62 63$(eval $(call san_symbolset_template,$(KEXT),Kcov_disabled)) 64$(eval $(call san_kext_dstroot_rule_template,Kcov.kext,$(KEXT))) 65$(eval $(call san_kext_symroot_rule_template,Kcov.kext,$(KEXT),$(BUILD_CONFIGS))) 66 67do_config_all:: $(SYMBOL_SET_BUILD_$(KEXT)) 68do_config_install:: $(SYMROOT_KEXT_$(KEXT)) $(DSTROOT_KEXT_$(KEXT)) 69 70endif 71 72# 73# Non-primary build variant install target. 74# 75# Include variant only when sanitizer runtime is enabled. 76# 77 78ifneq ($(filter $(CURRENT_KERNEL_CONFIG), $(KCOV_RUNTIME)),) 79 80# all build configs for the current variant 81CURRENT_VARIANT_BUILD_CONFIGS := $(strip $(call function_match_build_config_for_kernel_config, \ 82 $(BUILD_CONFIGS), $(CURRENT_KERNEL_CONFIG))) 83 84KEXT_VARIANT := Kcov_$(CURRENT_KERNEL_CONFIG_LC) 85 86$(eval $(call san_symbolset_template,$(KEXT_VARIANT),Kcov_enabled)) 87$(eval $(call san_kext_dstroot_rule_template,Kcov.kext,$(KEXT_VARIANT))) 88$(eval $(call san_kext_symroot_rule_template,Kcov.kext,$(KEXT_VARIANT),$(CURRENT_VARIANT_BUILD_CONFIGS))) 89 90do_config_all:: $(SYMBOL_SET_BUILD_$(KEXT_VARIANT)) 91do_config_install_variant:: $(SYMROOT_KEXT_$(KEXT_VARIANT)) $(DSTROOT_KEXT_$(KEXT_VARIANT)) 92 93endif 94 95else 96# We are building XNU as a static library - no need for the symbol kexts 97endif 98 99include $(MakeInc_rule) 100include $(MakeInc_dir) 101