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