xref: /xnu-8792.81.2/makedefs/MakeInc.san (revision 19c3b8c28c31cb8130e034cfb5df6bf9ba342d90)
1*19c3b8c2SApple OSS Distributions# -*- mode: makefile;-*-
2*19c3b8c2SApple OSS Distributions#
3*19c3b8c2SApple OSS Distributions# Copyright (C) 2021 Apple Inc. All rights reserved.
4*19c3b8c2SApple OSS Distributions#
5*19c3b8c2SApple OSS Distributions# MakeInc.san contains global definitions for building,
6*19c3b8c2SApple OSS Distributions# linking and installing sanitizer runtime support.
7*19c3b8c2SApple OSS Distributions#
8*19c3b8c2SApple OSS Distributions
9*19c3b8c2SApple OSS Distributions#
10*19c3b8c2SApple OSS Distributions# Generates rule to build symbolset file from specific export file.
11*19c3b8c2SApple OSS Distributions#
12*19c3b8c2SApple OSS Distributions#     $(1) - Kext name (without .symbolset suffix)
13*19c3b8c2SApple OSS Distributions#     $(2) - Exports name (without .exports suffix)
14*19c3b8c2SApple OSS Distributions
15*19c3b8c2SApple OSS Distributionsdefine san_symbolset_template
16*19c3b8c2SApple OSS Distributions
17*19c3b8c2SApple OSS DistributionsSYMBOL_SET_BUILD_$(1) := $$(OBJPATH)/config/$(1).symbolset
18*19c3b8c2SApple OSS Distributions
19*19c3b8c2SApple OSS Distributions# Our external dependency on config/allsymbols from config hierarchy config_all is hardcoded in the toplevel Makefile!
20*19c3b8c2SApple OSS Distributions$$(SYMBOL_SET_BUILD_$(1)): $$(SRCROOT)/config/$(2).exports $$(OBJPATH)/config/allsymbols $$(KEXT_CREATE_SYMBOL_SET)
21*19c3b8c2SApple OSS Distributions	@$$(LOG_SYMBOLSET) "$(1)$$(Color0) ($$(ColorLF)$$(CURRENT_ARCH_CONFIG_LC), $$(CURRENT_KERNEL_CONFIG_LC) $$(Color0))"
22*19c3b8c2SApple OSS Distributions	$$(_v)$$(KEXT_CREATE_SYMBOL_SET)			\
23*19c3b8c2SApple OSS Distributions		$$(ARCH_FLAGS_$$(CURRENT_ARCH_CONFIG))	\
24*19c3b8c2SApple OSS Distributions		-import $$(OBJPATH)/config/allsymbols		\
25*19c3b8c2SApple OSS Distributions		-export $$<		                \
26*19c3b8c2SApple OSS Distributions		-output $$@ $(_vstdout)
27*19c3b8c2SApple OSS Distributions
28*19c3b8c2SApple OSS Distributionsendef
29*19c3b8c2SApple OSS Distributions
30*19c3b8c2SApple OSS Distributions#
31*19c3b8c2SApple OSS Distributions# Generate rule to build System.kext plugin for give sanitizer.
32*19c3b8c2SApple OSS Distributions#
33*19c3b8c2SApple OSS Distributions#     $(1) - Name of the kext plugin
34*19c3b8c2SApple OSS Distributions#     $(2) - Name of the kext variant binary (Kasan_kasan, Kcov, ...)
35*19c3b8c2SApple OSS Distributions#
36*19c3b8c2SApple OSS Distributions
37*19c3b8c2SApple OSS Distributionsdefine san_kext_dstroot_rule_template
38*19c3b8c2SApple OSS Distributions
39*19c3b8c2SApple OSS DistributionsDSTROOT_KEXT_$(2) := $$(DSTROOT_SYSTEM_KEXT_PATH)/$(1)/$(2)
40*19c3b8c2SApple OSS Distributions
41*19c3b8c2SApple OSS Distributions$$(DSTROOT_KEXT_$(2)): $$(DSTROOT_SYSTEM_KEXT_PATH)/$(1)/% : $$(SYMROOT_SYSTEM_KEXT_PATH)/$(1)/%
42*19c3b8c2SApple OSS Distributions	$$(_v)$$(MKDIR) $$(@D)
43*19c3b8c2SApple OSS Distributions	@$$(LOG_INSTALLVARIANT) "$$(Color0)symbolset $$(ColorF)$$(@F)$$(Color0) ($$(ColorLF)$$(CURRENT_KERNEL_CONFIG_LC)$$(Color0))"
44*19c3b8c2SApple OSS Distributions	$$(_v)$$(INSTALL) $$(EXEC_INSTALL_FLAGS) $$< $$@
45*19c3b8c2SApple OSS Distributions
46*19c3b8c2SApple OSS Distributionsendef
47*19c3b8c2SApple OSS Distributions
48*19c3b8c2SApple OSS Distributions#
49*19c3b8c2SApple OSS Distributions# Generate rule to build System.kext plugin in SYMROOT
50*19c3b8c2SApple OSS Distributions#
51*19c3b8c2SApple OSS Distributions#     $(1) - Name of the kext plugin
52*19c3b8c2SApple OSS Distributions#     $(2) - Name of the kext variant binary (Kasan_kasan, Kcov, ...)
53*19c3b8c2SApple OSS Distributions#     $(3) - build configs to get symbolset binaries from corresponding OBJDIR
54*19c3b8c2SApple OSS Distributions#
55*19c3b8c2SApple OSS Distributions
56*19c3b8c2SApple OSS Distributionsdefine san_kext_symroot_rule_template
57*19c3b8c2SApple OSS Distributions
58*19c3b8c2SApple OSS DistributionsSYMROOT_KEXT_$(2) := $$(SYMROOT_SYSTEM_KEXT_PATH)/$(1)/$(2)
59*19c3b8c2SApple OSS Distributions
60*19c3b8c2SApple OSS Distributions$$(SYMROOT_KEXT_$(2)): $$(addsuffix /config/$(2).symbolset, \
61*19c3b8c2SApple OSS Distributions		$$(addprefix $$(OBJROOT)/,$$(foreach bc,$(3),$$(call function_convert_build_config_to_objdir,$$(bc)))))
62*19c3b8c2SApple OSS Distributions	@$$(LOG_INSTALLSYM) "$$(Color0)symbolset $$(ColorF)$(2)$$(Color0) ($$(ColorLF)$$(CURRENT_KERNEL_CONFIG_LC)$$(Color0))"
63*19c3b8c2SApple OSS Distributions	$$(_v)$$(MKDIR) $$(@D)
64*19c3b8c2SApple OSS Distributions	$$(_v)$$(LIPO) -create `(echo $$^ | xargs -L 1 lipo -detailed_info) | \
65*19c3b8c2SApple OSS Distributions		awk '/is architecture/ {s[$$$$6]=$$$$3} END {for (a in s) {print s[a]}}'` -output $$@ $$(_vstdout)
66*19c3b8c2SApple OSS Distributions
67*19c3b8c2SApple OSS Distributionsendef
68