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