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