blob: 8afd5a81af300698b14a8428cd08967fc1249910 [file] [log] [blame]
Stephen Smalley2dd4e512012-01-04 12:33:27 -05001LOCAL_PATH:= $(call my-dir)
William Robertsf0e0a942012-08-27 15:41:15 -07002
Dan Cashman36ee91d2017-07-07 14:59:51 -07003include $(LOCAL_PATH)/definitions.mk
Jeff Vander Stoepecd288f2019-02-15 12:18:15 -08004include $(LOCAL_PATH)/policy_version.mk
Dan Cashman36ee91d2017-07-07 14:59:51 -07005
Stephen Smalley2dd4e512012-01-04 12:33:27 -05006include $(CLEAR_VARS)
Stephen Smalley2dd4e512012-01-04 12:33:27 -05007
8MLS_SENS=1
9MLS_CATS=1024
10
Stephen Smalley8e0ca882015-04-01 10:14:56 -040011ifdef BOARD_SEPOLICY_UNION
12$(warning BOARD_SEPOLICY_UNION is no longer required - all files found in BOARD_SEPOLICY_DIRS are implicitly unioned; please remove from your BoardConfig.mk or other .mk file.)
13endif
Robert Craig6b0ff472014-01-29 13:10:58 -050014
William Robertsd2185582015-07-16 11:28:02 -070015ifdef BOARD_SEPOLICY_M4DEFS
16LOCAL_ADDITIONAL_M4DEFS := $(addprefix -D, $(BOARD_SEPOLICY_M4DEFS))
Dan Cashman36ee91d2017-07-07 14:59:51 -070017else
18LOCAL_ADDITIONAL_M4DEFS :=
William Robertsd2185582015-07-16 11:28:02 -070019endif
20
dcashmancc39f632016-07-22 13:13:11 -070021# sepolicy is now divided into multiple portions:
22# public - policy exported on which non-platform policy developers may write
23# additional policy. types and attributes are versioned and included in
24# delivered non-platform policy, which is to be combined with platform policy.
25# private - platform-only policy required for platform functionality but which
26# is not exported to vendor policy developers and as such may not be assumed
27# to exist.
Alex Klyubin55961722017-01-30 18:44:59 -080028# vendor - vendor-only policy required for vendor functionality. This policy can
29# reference the public policy but cannot reference the private policy. This
30# policy is for components which are produced from the core/non-vendor tree and
31# placed into a vendor partition.
dcashman07791552016-12-07 11:27:47 -080032# mapping - This contains policy statements which map the attributes
dcashmancc39f632016-07-22 13:13:11 -070033# exposed in the public policy of previous versions to the concrete types used
34# in this policy to ensure that policy targeting attributes from public
35# policy from an older platform version continues to work.
36
dcashman2e00e632016-10-12 14:58:09 -070037# build process for device:
dcashmancc39f632016-07-22 13:13:11 -070038# 1) convert policies to CIL:
39# - private + public platform policy to CIL
40# - mapping file to CIL (should already be in CIL form)
41# - non-platform public policy to CIL
42# - non-platform public + private policy to CIL
43# 2) attributize policy
dcashmancc39f632016-07-22 13:13:11 -070044# - run script which takes non-platform public and non-platform combined
45# private + public policy and produces attributized and versioned
46# non-platform policy
47# 3) combine policy files
48# - combine mapping, platform and non-platform policy.
49# - compile output binary policy file
50
51PLAT_PUBLIC_POLICY := $(LOCAL_PATH)/public
52PLAT_PRIVATE_POLICY := $(LOCAL_PATH)/private
Alex Klyubin55961722017-01-30 18:44:59 -080053PLAT_VENDOR_POLICY := $(LOCAL_PATH)/vendor
dcashman2e00e632016-10-12 14:58:09 -070054REQD_MASK_POLICY := $(LOCAL_PATH)/reqd_mask
Felix8c53a332020-07-14 21:28:51 +020055
56SYSTEM_EXT_PUBLIC_POLICY := $(SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS)
57ifneq (,$(BOARD_PLAT_PUBLIC_SEPOLICY_DIR))
Bowgo Tsai72b2acb2020-10-28 05:01:17 +000058 # TODO: Disallow BOARD_PLAT_*
Felix8c53a332020-07-14 21:28:51 +020059 SYSTEM_EXT_PUBLIC_POLICY += $(BOARD_PLAT_PUBLIC_SEPOLICY_DIR)
60endif
61SYSTEM_EXT_PRIVATE_POLICY := $(SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS)
62ifneq (,$(BOARD_PLAT_PRIVATE_SEPOLICY_DIR))
Bowgo Tsai72b2acb2020-10-28 05:01:17 +000063 # TODO: Disallow BOARD_PLAT_*
Felix8c53a332020-07-14 21:28:51 +020064 SYSTEM_EXT_PRIVATE_POLICY += $(BOARD_PLAT_PRIVATE_SEPOLICY_DIR)
65endif
66
Tri Vo9918f282019-02-01 11:41:08 -080067PRODUCT_PUBLIC_POLICY := $(PRODUCT_PUBLIC_SEPOLICY_DIRS)
68PRODUCT_PRIVATE_POLICY := $(PRODUCT_PRIVATE_SEPOLICY_DIRS)
Tri Vo75887dd2018-12-14 14:30:56 -080069
Yiming Jingd4103ee2020-10-08 14:39:42 -070070# Extra sepolicy and prebuilts directories for sepolicy_freeze_test
71FREEZE_TEST_EXTRA_DIRS := $(SEPOLICY_FREEZE_TEST_EXTRA_DIRS)
72FREEZE_TEST_EXTRA_PREBUILT_DIRS := $(SEPOLICY_FREEZE_TEST_EXTRA_PREBUILT_DIRS)
73
Bowgo Tsai948934b2019-08-29 17:12:11 +080074ifneq (,$(SYSTEM_EXT_PUBLIC_POLICY)$(SYSTEM_EXT_PRIVATE_POLICY))
Bowgo Tsaiac381252019-10-04 14:34:18 +080075HAS_SYSTEM_EXT_SEPOLICY_DIR := true
Bowgo Tsai948934b2019-08-29 17:12:11 +080076endif
77
Tri Vo75887dd2018-12-14 14:30:56 -080078# TODO(b/119305624): Currently if the device doesn't have a product partition,
79# we install product sepolicy into /system/product. We do that because bits of
80# product sepolicy that's still in /system might depend on bits that have moved
81# to /product. Once we finish migrating product sepolicy out of system, change
82# it so that if no product partition is present, product sepolicy artifacts are
83# not built and installed at all.
84ifneq (,$(PRODUCT_PUBLIC_POLICY)$(PRODUCT_PRIVATE_POLICY))
Bowgo Tsai7c4150c2019-10-04 15:36:05 +080085HAS_PRODUCT_SEPOLICY_DIR := true
Tri Vo75887dd2018-12-14 14:30:56 -080086endif
dcashman2e00e632016-10-12 14:58:09 -070087
88# TODO: move to README when doing the README update and finalizing versioning.
Sandeep Patil42f95982017-04-07 14:18:48 -070089# BOARD_SEPOLICY_VERS must take the format "NN.m" and contain the sepolicy
90# version identifier corresponding to the sepolicy on which the non-platform
91# policy is to be based. If unspecified, this will build against the current
92# public platform policy in tree
dcashman2e00e632016-10-12 14:58:09 -070093ifndef BOARD_SEPOLICY_VERS
Sandeep Patil42f95982017-04-07 14:18:48 -070094# The default platform policy version.
Dan Cashman6f14f6b2017-04-07 16:36:23 -070095BOARD_SEPOLICY_VERS := $(PLATFORM_SEPOLICY_VERSION)
dcashman2e00e632016-10-12 14:58:09 -070096endif
dcashmancc39f632016-07-22 13:13:11 -070097
Inseob Kim8ada8a72020-11-09 20:58:58 +090098# If BOARD_SEPOLICY_VERS is set to a value other than PLATFORM_SEPOLICY_VERSION,
99# policy files of platform (system, system_ext, product) can't be mixed with
100# policy files of vendor (vendor, odm). If it's the case, platform policies and
101# vendor policies are separately built. More specifically,
102#
103# - Platform policy files needed to build vendor policies, such as plat_policy,
104# plat_mapping_cil, plat_pub_policy, reqd_policy_mask, are built from the
105# prebuilts (copy of platform policy files of version BOARD_SEPOLICY_VERS).
106#
107# - sepolicy_neverallows only checks platform policies, and a new module
108# sepolicy_neverallows_vendor checks vendor policies.
109#
110# - neverallow checks are turned off while compiling precompiled_sepolicy module
111# and sepolicy module.
112#
113# - Vendor policies are not checked on the compat test (compat.mk).
114#
115# In such scenario, we can grab platform policy files from the prebuilts/api
116# directory. But we need more than that: prebuilts of system_ext, product,
117# system/sepolicy/reqd_mask, and system/sepolicy/vendor. The following variables
118# are introduced to specify such prebuilts.
119#
120# - BOARD_REQD_MASK_POLICY (prebuilt of system/sepolicy/reqd_mask)
121# - BOARD_PLAT_VENDOR_POLICY (prebuilt of system/sepolicy/vendor)
122# - BOARD_SYSTEM_EXT_PUBLIC_PREBUILT_DIRS (prebuilt of system_ext public)
123# - BOARD_SYSTEM_EXT_PRIVATE_PREBUILT_DIRS (prebuilt of system_ext private)
124# - BOARD_PRODUCT_PUBLIC_PREBUILT_DIRS (prebuilt of product public)
125# - BOARD_PRODUCT_PRIVATE_PREBUILT_DIRS (prebuilt of product private)
126#
127# Vendors are responsible for copying policy files from the old version of the
128# source tree as prebuilts, and for setting BOARD_*_POLICY variables so they can
129# be used to build vendor policies. See prebuilt_policy.mk for more details.
130#
131# To support both mixed build and normal build, platform policy files are
132# indirectly referred by {partition}_{public|private}_policy_$(ver) variables
133# when building vendor policies. See vendor_sepolicy.cil and odm_sepolicy.cil
134# for more details.
135#
136# sepolicy.recovery is also compiled from vendor and plat prebuilt policies.
137ifneq ($(PLATFORM_SEPOLICY_VERSION),$(BOARD_SEPOLICY_VERS))
138mixed_sepolicy_build := true
139else
140mixed_sepolicy_build :=
141endif
142
Joel Galenson5988b562018-01-03 16:53:24 -0800143NEVERALLOW_ARG :=
144ifeq ($(SELINUX_IGNORE_NEVERALLOWS),true)
145ifeq ($(TARGET_BUILD_VARIANT),user)
146$(error SELINUX_IGNORE_NEVERALLOWS := true cannot be used in user builds)
147endif
148$(warning Be careful when using the SELINUX_IGNORE_NEVERALLOWS flag. \
149 It does not work in user builds and using it will \
150 not stop you from failing CTS.)
151NEVERALLOW_ARG := -N
152endif
153
Bowgo Tsai45457e32017-11-27 11:41:33 +0800154# BOARD_SEPOLICY_DIRS was used for vendor/odm sepolicy customization before.
155# It has been replaced by BOARD_VENDOR_SEPOLICY_DIRS (mandatory) and
156# BOARD_ODM_SEPOLICY_DIRS (optional). BOARD_SEPOLICY_DIRS is still allowed for
157# backward compatibility, which will be merged into BOARD_VENDOR_SEPOLICY_DIRS.
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800158ifdef BOARD_SEPOLICY_DIRS
159BOARD_VENDOR_SEPOLICY_DIRS += $(BOARD_SEPOLICY_DIRS)
160endif
Dan Cashman4d24a772017-04-12 14:28:34 -0700161
Inseob Kim8ada8a72020-11-09 20:58:58 +0900162# Set default values for these prebuilt directories
163ifeq (,$(BOARD_REQD_MASK_POLICY))
164BOARD_REQD_MASK_POLICY := $(REQD_MASK_POLICY)
165endif
166
167ifeq (,$(BOARD_PLAT_VENDOR_POLICY))
168BOARD_PLAT_VENDOR_POLICY := $(PLAT_VENDOR_POLICY)
169endif
170
171$(foreach p,SYSTEM_EXT PRODUCT,$(foreach q,PUBLIC PRIVATE,$(eval \
172 $(if $(BOARD_$(p)_$(q)_PREBUILT_DIRS),,\
173 BOARD_$(p)_$(q)_PREBUILT_DIRS := $($(p)_$(q)_POLICY) \
174 ) \
175)))
176
Bowgo Tsai45457e32017-11-27 11:41:33 +0800177ifdef BOARD_ODM_SEPOLICY_DIRS
178ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
179$(error PRODUCT_SEPOLICY_SPLIT needs to be true when using BOARD_ODM_SEPOLICY_DIRS)
180endif
181endif
182
dcashmancc39f632016-07-22 13:13:11 -0700183###########################################################
184# Compute policy files to be used in policy build.
185# $(1): files to include
186# $(2): directories in which to find files
187###########################################################
188
189define build_policy
190$(foreach type, $(1), $(foreach file, $(addsuffix /$(type), $(2)), $(sort $(wildcard $(file)))))
191endef
William Roberts29d14682016-01-04 12:20:57 -0800192
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800193# Builds paths for all policy files found in BOARD_VENDOR_SEPOLICY_DIRS.
William Roberts49693f12016-01-04 12:20:57 -0800194# $(1): the set of policy name paths to build
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800195build_vendor_policy = $(call build_policy, $(1), $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS))
William Roberts49693f12016-01-04 12:20:57 -0800196
Bowgo Tsaibae15172017-11-29 16:14:53 +0800197# Builds paths for all policy files found in BOARD_ODM_SEPOLICY_DIRS.
198build_odm_policy = $(call build_policy, $(1), $(BOARD_ODM_SEPOLICY_DIRS))
199
dcashman704741a2014-07-25 19:11:52 -0700200sepolicy_build_files := security_classes \
201 initial_sids \
202 access_vectors \
203 global_macros \
Nick Kralevicha17a2662014-11-05 15:30:41 -0800204 neverallow_macros \
dcashman704741a2014-07-25 19:11:52 -0700205 mls_macros \
dcashman2e00e632016-10-12 14:58:09 -0700206 mls_decl \
dcashman704741a2014-07-25 19:11:52 -0700207 mls \
208 policy_capabilities \
209 te_macros \
210 attributes \
Jeff Vander Stoepcbaa2b72015-12-22 10:39:34 -0800211 ioctl_defines \
Jeff Vander Stoepde9b5302015-06-05 15:28:55 -0700212 ioctl_macros \
dcashman704741a2014-07-25 19:11:52 -0700213 *.te \
dcashman2e00e632016-10-12 14:58:09 -0700214 roles_decl \
dcashman704741a2014-07-25 19:11:52 -0700215 roles \
216 users \
217 initial_sid_contexts \
218 fs_use \
219 genfs_contexts \
220 port_contexts
221
Chris Gross12c0b242020-09-21 15:32:16 -0700222sepolicy_compat_files := $(foreach ver, $(PLATFORM_SEPOLICY_COMPAT_VERSIONS), \
223 $(addprefix compat/$(ver)/, $(addsuffix .cil, $(ver))))
224
Tri Vo71f12392019-10-07 16:31:40 -0700225# Security classes and permissions defined outside of system/sepolicy.
226security_class_extension_files := $(call build_policy, security_classes access_vectors, \
227 $(SYSTEM_EXT_PUBLIC_POLICY) $(SYSTEM_EXT_PRIVATE_POLICY) \
228 $(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY) \
229 $(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
230
231ifneq (,$(strip $(security_class_extension_files)))
232 $(error Only platform SELinux policy may define classes and permissions: $(strip $(security_class_extension_files)))
233endif
234
Bowgo Tsaiac381252019-10-04 14:34:18 +0800235ifdef HAS_SYSTEM_EXT_SEPOLICY_DIR
236 # Checks if there are public system_ext policy files.
237 policy_files := $(call build_policy, $(sepolicy_build_files), $(SYSTEM_EXT_PUBLIC_POLICY))
238 ifneq (,$(strip $(policy_files)))
239 HAS_SYSTEM_EXT_PUBLIC_SEPOLICY := true
240 endif
241 # Checks if there are public/private system_ext policy files.
242 policy_files := $(call build_policy, $(sepolicy_build_files), $(SYSTEM_EXT_PUBLIC_POLICY) $(SYSTEM_EXT_PRIVATE_POLICY))
243 ifneq (,$(strip $(policy_files)))
244 HAS_SYSTEM_EXT_SEPOLICY := true
245 endif
246endif # ifdef HAS_SYSTEM_EXT_SEPOLICY_DIR
247
Bowgo Tsai7c4150c2019-10-04 15:36:05 +0800248ifdef HAS_PRODUCT_SEPOLICY_DIR
249 # Checks if there are public product policy files.
250 policy_files := $(call build_policy, $(sepolicy_build_files), $(PRODUCT_PUBLIC_POLICY))
251 ifneq (,$(strip $(policy_files)))
252 HAS_PRODUCT_PUBLIC_SEPOLICY := true
253 endif
254 # Checks if there are public/private product policy files.
255 policy_files := $(call build_policy, $(sepolicy_build_files), $(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY))
256 ifneq (,$(strip $(policy_files)))
257 HAS_PRODUCT_SEPOLICY := true
258 endif
259endif # ifdef HAS_PRODUCT_SEPOLICY_DIR
260
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700261# CIL files which contain workarounds for current limitation of human-readable
262# module policy language. These files are appended to the CIL files produced
263# from module language files.
264sepolicy_build_cil_workaround_files := technical_debt.cil
265
Dan Cashman1c040272016-12-15 15:28:44 -0800266my_target_arch := $(TARGET_ARCH)
267ifneq (,$(filter mips mips64,$(TARGET_ARCH)))
268 my_target_arch := mips
269endif
270
Jeff Vander Stoepd2053bd2017-03-15 13:37:35 -0700271intermediates := $(TARGET_OUT_INTERMEDIATES)/ETC/sepolicy_intermediates
272
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700273with_asan := false
274ifneq (,$(filter address,$(SANITIZE_TARGET)))
275 with_asan := true
276endif
277
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700278with_native_coverage := false
279ifeq ($(NATIVE_COVERAGE),true)
280 with_native_coverage := true
281endif
Oliver Nguyenfad5f812019-12-09 16:37:59 -0800282ifeq ($(CLANG_COVERAGE),true)
283 with_native_coverage := true
284endif
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700285
Inseob Kimed59c222019-09-26 15:14:55 +0900286treble_sysprop_neverallow := true
287ifeq ($(BUILD_BROKEN_TREBLE_SYSPROP_NEVERALLOW),true)
288 treble_sysprop_neverallow := false
289endif
290
291ifeq ($(PRODUCT_SHIPPING_API_LEVEL),)
292 #$(warning no product shipping level defined)
293else ifneq ($(call math_lt,29,$(PRODUCT_SHIPPING_API_LEVEL)),)
294 ifneq ($(BUILD_BROKEN_TREBLE_SYSPROP_NEVERALLOW),)
295 $(error BUILD_BROKEN_TREBLE_SYSPROP_NEVERALLOW cannot be set on a device shipping with R or later, and this is tested by CTS.)
296 endif
297endif
298
Inseob Kimafc09932020-09-28 13:32:43 +0900299enforce_sysprop_owner := true
300ifeq ($(BUILD_BROKEN_ENFORCE_SYSPROP_OWNER),true)
301 enforce_sysprop_owner := false
302endif
303
304ifeq ($(PRODUCT_SHIPPING_API_LEVEL),)
305 #$(warning no product shipping level defined)
306else ifneq ($(call math_lt,30,$(PRODUCT_SHIPPING_API_LEVEL)),)
307 ifneq ($(BUILD_BROKEN_ENFORCE_SYSPROP_OWNER),)
308 $(error BUILD_BROKEN_ENFORCE_SYSPROP_OWNER cannot be set on a device shipping with S or later, and this is tested by CTS.)
309 endif
310endif
311
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -0700312# Library extension for host-side tests
Jeff Vander Stoepe06e4c12017-10-04 18:15:44 -0700313ifeq ($(HOST_OS),darwin)
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -0700314SHAREDLIB_EXT=dylib
315else
316SHAREDLIB_EXT=so
317endif
318
Jiyong Parke7fab182019-01-24 16:41:47 +0900319# Convert a file_context file for a non-flattened APEX into a file for
320# flattened APEX. /system/apex/<apex_name> path is prepended to the original paths
321# $(1): path to the input file_contexts file for non-flattened APEX
Jooyung Hana9324742019-11-20 17:54:34 +0900322# $(2): path to the flattened APEX
323# $(3): path to the generated file_contexts file for flattened APEX
Jiyong Parke7fab182019-01-24 16:41:47 +0900324# $(4): variable where $(3) is added to
325define build_flattened_apex_file_contexts
326$(4) += $(3)
Jooyung Hana9324742019-11-20 17:54:34 +0900327$(3): PRIVATE_APEX_PATH := $(subst .,\\.,$(2))
Jiyong Parke7fab182019-01-24 16:41:47 +0900328$(3): $(1)
329 $(hide) awk '/object_r/{printf("$$(PRIVATE_APEX_PATH)%s\n",$$$$0)}' $$< > $$@
330endef
331
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100332#################################
333
Dan Cashman4f9a6482017-04-10 12:27:18 -0700334include $(CLEAR_VARS)
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100335
Dan Cashman4f9a6482017-04-10 12:27:18 -0700336LOCAL_MODULE := selinux_policy
337LOCAL_MODULE_TAGS := optional
Tri Vo1f4a28b2018-05-08 18:52:11 -0700338LOCAL_REQUIRED_MODULES += \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100339 selinux_policy_nonsystem \
340 selinux_policy_system \
Tri Vo1f4a28b2018-05-08 18:52:11 -0700341
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100342include $(BUILD_PHONY_PACKAGE)
Tri Vo1f4a28b2018-05-08 18:52:11 -0700343
Jooyung Han749cf932019-05-30 01:05:43 +0900344# selinux_policy is a main goal and triggers lots of tests.
345# Most tests are FAKE modules, so aren'triggered on normal builds. (e.g. 'm')
346# By setting as droidcore's dependency, tests will run on normal builds.
347droidcore: selinux_policy
Tri Vo1f4a28b2018-05-08 18:52:11 -0700348
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100349include $(CLEAR_VARS)
350LOCAL_MODULE := selinux_policy_system
Tri Vo1f4a28b2018-05-08 18:52:11 -0700351# These build targets are not used on non-Treble devices. However, we build these to avoid
352# divergence between Treble and non-Treble devices.
Dan Cashman4f9a6482017-04-10 12:27:18 -0700353LOCAL_REQUIRED_MODULES += \
Tri Vo937e6642019-01-15 15:16:55 -0800354 plat_mapping_file \
Tri Vo61178552019-10-10 16:29:40 -0700355 $(addprefix plat_,$(addsuffix .cil,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS))) \
Jeff Vander Stoep564e2922019-05-02 13:48:44 -0700356 $(addsuffix .compat.cil,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
Dan Cashman4f9a6482017-04-10 12:27:18 -0700357 plat_sepolicy.cil \
Dan Cashman4f9a6482017-04-10 12:27:18 -0700358 secilc \
Dan Cashman91d398d2017-09-26 12:58:29 -0700359
Inseob Kim8ada8a72020-11-09 20:58:58 +0900360ifneq ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
361LOCAL_REQUIRED_MODULES += plat_sepolicy_and_mapping.sha256
362endif
363
Jeff Vander Stoep7a68c5a2017-06-08 13:24:15 -0700364LOCAL_REQUIRED_MODULES += \
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800365 build_sepolicy \
Jeff Vander Stoep13fb5ed2017-08-22 13:29:53 -0700366 plat_file_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900367 plat_file_contexts_test \
Janis Danisevskisc40681f2020-07-25 13:02:29 -0700368 plat_keystore2_key_contexts \
Jeff Vander Stoep13fb5ed2017-08-22 13:29:53 -0700369 plat_mac_permissions.xml \
370 plat_property_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900371 plat_property_contexts_test \
Jeff Vander Stoep13fb5ed2017-08-22 13:29:53 -0700372 plat_seapp_contexts \
373 plat_service_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900374 plat_service_contexts_test \
Jeff Vander Stoep13fb5ed2017-08-22 13:29:53 -0700375 plat_hwservice_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900376 plat_hwservice_contexts_test \
Dan Cashman91d398d2017-09-26 12:58:29 -0700377 searchpolicy \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100378
379# This conditional inclusion closely mimics the conditional logic
380# inside init/init.cpp for loading SELinux policy from files.
381ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
382# The following files are only allowed for non-Treble devices.
383LOCAL_REQUIRED_MODULES += \
384 sepolicy \
385 vendor_service_contexts \
386
387endif # ($(PRODUCT_SEPOLICY_SPLIT),true)
Jeff Vander Stoep7a68c5a2017-06-08 13:24:15 -0700388
Dan Cashman91d398d2017-09-26 12:58:29 -0700389ifneq ($(with_asan),true)
Jeff Vander Stoep3d4965b2018-02-13 20:29:55 -0800390ifneq ($(SELINUX_IGNORE_NEVERALLOWS),true)
Dan Cashman91d398d2017-09-26 12:58:29 -0700391LOCAL_REQUIRED_MODULES += \
392 sepolicy_tests \
Jeff Vander Stoep564e2922019-05-02 13:48:44 -0700393 $(addsuffix _compat_test,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
Dan Cashman91d398d2017-09-26 12:58:29 -0700394
Steven Moreland1cb64c42019-09-20 11:16:29 -0700395ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
396LOCAL_REQUIRED_MODULES += \
397 $(addprefix treble_sepolicy_tests_,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
398
399endif # PRODUCT_SEPOLICY_SPLIT
400endif # SELINUX_IGNORE_NEVERALLOWS
401endif # with_asan
Dan Cashman91d398d2017-09-26 12:58:29 -0700402
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100403ifneq ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
404LOCAL_REQUIRED_MODULES += \
405 sepolicy_freeze_test \
406
Yiming Jingd4103ee2020-10-08 14:39:42 -0700407else
408ifneq (,$(FREEZE_TEST_EXTRA_DIRS)$(FREEZE_TEST_EXTRA_PREBUILT_DIRS))
409$(error SEPOLICY_FREEZE_TEST_EXTRA_DIRS or SEPOLICY_FREEZE_TEST_EXTRA_PREBUILT_DIRS\
410cannot be set before system/sepolicy freezes.)
411endif # (,$(FREEZE_TEST_EXTRA_DIRS)$(FREEZE_TEST_EXTRA_PREBUILT_DIRS))
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100412endif # ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
413
414include $(BUILD_PHONY_PACKAGE)
415
416#################################
417
418include $(CLEAR_VARS)
419
Justin Yun0f722692020-10-07 18:28:47 +0900420LOCAL_MODULE := selinux_policy_system_ext
421# Include precompiled policy, unless told otherwise.
422ifneq ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
423LOCAL_REQUIRED_MODULES += system_ext_sepolicy_and_mapping.sha256
424endif
425
426ifdef HAS_SYSTEM_EXT_SEPOLICY
427LOCAL_REQUIRED_MODULES += system_ext_sepolicy.cil
428endif
429
430ifdef HAS_SYSTEM_EXT_PUBLIC_SEPOLICY
431LOCAL_REQUIRED_MODULES += \
432 system_ext_mapping_file
433
434system_ext_compat_files := $(call build_policy, $(sepolicy_compat_files), $(SYSTEM_EXT_PRIVATE_POLICY))
435
436LOCAL_REQUIRED_MODULES += $(addprefix system_ext_, $(notdir $(system_ext_compat_files)))
437
438endif
439
440ifdef HAS_SYSTEM_EXT_SEPOLICY_DIR
441LOCAL_REQUIRED_MODULES += \
442 system_ext_file_contexts \
443 system_ext_file_contexts_test \
444 system_ext_hwservice_contexts \
445 system_ext_hwservice_contexts_test \
446 system_ext_property_contexts \
447 system_ext_property_contexts_test \
448 system_ext_seapp_contexts \
449 system_ext_service_contexts \
450 system_ext_service_contexts_test \
451 system_ext_mac_permissions.xml \
452
453endif
454
455include $(BUILD_PHONY_PACKAGE)
456
457#################################
458
459include $(CLEAR_VARS)
460
461LOCAL_MODULE := selinux_policy_product
462# Include precompiled policy, unless told otherwise.
463ifneq ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
464LOCAL_REQUIRED_MODULES += product_sepolicy_and_mapping.sha256
465endif
466
467ifdef HAS_PRODUCT_SEPOLICY
468LOCAL_REQUIRED_MODULES += product_sepolicy.cil
469endif
470
471ifdef HAS_PRODUCT_PUBLIC_SEPOLICY
472LOCAL_REQUIRED_MODULES += \
473 product_mapping_file
474
475product_compat_files := $(call build_policy, $(sepolicy_compat_files), $(PRODUCT_PRIVATE_POLICY))
476
477LOCAL_REQUIRED_MODULES += $(addprefix product_, $(notdir $(product_compat_files)))
478
479endif
480
481ifdef HAS_PRODUCT_SEPOLICY_DIR
482LOCAL_REQUIRED_MODULES += \
483 product_file_contexts \
484 product_file_contexts_test \
485 product_hwservice_contexts \
486 product_hwservice_contexts_test \
487 product_property_contexts \
488 product_property_contexts_test \
489 product_seapp_contexts \
490 product_service_contexts \
491 product_service_contexts_test \
492 product_mac_permissions.xml \
493
494endif
495
496include $(BUILD_PHONY_PACKAGE)
497
498#################################
499
500include $(CLEAR_VARS)
501
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100502LOCAL_MODULE := selinux_policy_nonsystem
503# Include precompiled policy, unless told otherwise.
504ifneq ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
505LOCAL_REQUIRED_MODULES += \
506 precompiled_sepolicy \
Tri Vo1824e252019-01-22 18:07:58 -0800507 precompiled_sepolicy.plat_sepolicy_and_mapping.sha256 \
Bowgo Tsai948934b2019-08-29 17:12:11 +0800508 precompiled_sepolicy.system_ext_sepolicy_and_mapping.sha256 \
Tri Vo1824e252019-01-22 18:07:58 -0800509 precompiled_sepolicy.product_sepolicy_and_mapping.sha256 \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100510
511endif # ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
512
513
514# These build targets are not used on non-Treble devices. However, we build these to avoid
515# divergence between Treble and non-Treble devices.
516LOCAL_REQUIRED_MODULES += \
517 plat_pub_versioned.cil \
518 vendor_sepolicy.cil \
519 plat_sepolicy_vers.txt \
520
521LOCAL_REQUIRED_MODULES += \
522 vendor_file_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900523 vendor_file_contexts_test \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100524 vendor_mac_permissions.xml \
525 vendor_property_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900526 vendor_property_contexts_test \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100527 vendor_seapp_contexts \
linpeter87c72612020-06-12 16:25:41 +0800528 vendor_service_contexts \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100529 vendor_hwservice_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900530 vendor_hwservice_contexts_test \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100531 vndservice_contexts \
532
Bowgo Tsai45457e32017-11-27 11:41:33 +0800533ifdef BOARD_ODM_SEPOLICY_DIRS
Bowgo Tsaibae15172017-11-29 16:14:53 +0800534LOCAL_REQUIRED_MODULES += \
535 odm_sepolicy.cil \
Bowgo Tsaiecf656b2017-11-29 16:15:28 +0800536 odm_file_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900537 odm_file_contexts_test \
Bowgo Tsai1f717b12017-11-29 16:15:55 +0800538 odm_seapp_contexts \
Bowgo Tsaiad6231f2017-11-29 16:16:26 +0800539 odm_property_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900540 odm_property_contexts_test \
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +0800541 odm_hwservice_contexts \
Inseob Kimb554e592019-04-15 20:10:46 +0900542 odm_hwservice_contexts_test \
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +0800543 odm_mac_permissions.xml
Bowgo Tsai45457e32017-11-27 11:41:33 +0800544endif
Tri Vo75887dd2018-12-14 14:30:56 -0800545
Justin Yun0f722692020-10-07 18:28:47 +0900546LOCAL_REQUIRED_MODULES += selinux_policy_system_ext
547LOCAL_REQUIRED_MODULES += selinux_policy_product
Tri Vo4eb68152019-01-23 09:47:05 -0800548
Tri Vo4eb68152019-01-23 09:47:05 -0800549LOCAL_REQUIRED_MODULES += \
550 selinux_denial_metadata \
551
Bowgo Tsaie7636672019-04-19 22:03:33 +0800552# Builds an addtional userdebug sepolicy into the debug ramdisk.
553LOCAL_REQUIRED_MODULES += \
554 userdebug_plat_sepolicy.cil \
555
Dan Cashman4f9a6482017-04-10 12:27:18 -0700556include $(BUILD_PHONY_PACKAGE)
557
Joel Galenson5988b562018-01-03 16:53:24 -0800558#################################
Inseob Kim8ada8a72020-11-09 20:58:58 +0900559
560ifeq ($(mixed_sepolicy_build),true)
561include $(LOCAL_PATH)/prebuilt_policy.mk
562else
563reqd_policy_$(PLATFORM_SEPOLICY_VERSION) := $(REQD_MASK_POLICY)
564plat_public_policy_$(PLATFORM_SEPOLICY_VERSION) := $(LOCAL_PATH)/public
565plat_private_policy_$(PLATFORM_SEPOLICY_VERSION) := $(LOCAL_PATH)/private
566system_ext_public_policy_$(PLATFORM_SEPOLICY_VERSION) := $(SYSTEM_EXT_PUBLIC_POLICY)
567system_ext_private_policy_$(PLATFORM_SEPOLICY_VERSION) := $(SYSTEM_EXT_PRIVATE_POLICY)
568product_public_policy_$(PLATFORM_SEPOLICY_VERSION) := $(PRODUCT_PUBLIC_POLICY)
569product_private_policy_$(PLATFORM_SEPOLICY_VERSION) := $(PRODUCT_PRIVATE_POLICY)
570endif
571
572#################################
Joel Galenson5988b562018-01-03 16:53:24 -0800573include $(CLEAR_VARS)
574
575LOCAL_MODULE := sepolicy_neverallows
Jooyung Han749cf932019-05-30 01:05:43 +0900576LOCAL_MODULE_CLASS := FAKE
Joel Galenson5988b562018-01-03 16:53:24 -0800577LOCAL_MODULE_TAGS := optional
Joel Galenson5988b562018-01-03 16:53:24 -0800578
579include $(BUILD_SYSTEM)/base_rules.mk
580
581# sepolicy_policy.conf - All of the policy for the device. This is only used to
582# check neverallow rules.
Inseob Kim8ada8a72020-11-09 20:58:58 +0900583# In a mixed build target, vendor policies are checked separately, on the module
584# sepolicy_neverallows_vendor.
585
586all_plat_policy := $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) $(PLAT_VENDOR_POLICY) \
Bowgo Tsai948934b2019-08-29 17:12:11 +0800587 $(SYSTEM_EXT_PUBLIC_POLICY) $(SYSTEM_EXT_PRIVATE_POLICY) \
Inseob Kim8ada8a72020-11-09 20:58:58 +0900588 $(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY)
589ifeq ($(mixed_sepolicy_build),true)
590policy_files := $(call build_policy, $(sepolicy_build_files), $(all_plat_policy))
591else
592policy_files := $(call build_policy, $(sepolicy_build_files), \
593 $(all_plat_policy) $(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
594endif
595
Joel Galenson5988b562018-01-03 16:53:24 -0800596sepolicy_policy.conf := $(intermediates)/policy.conf
597$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
598$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800599$(sepolicy_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
Joel Galenson5988b562018-01-03 16:53:24 -0800600$(sepolicy_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
601$(sepolicy_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700602$(sepolicy_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Joel Galenson5988b562018-01-03 16:53:24 -0800603$(sepolicy_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
604$(sepolicy_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700605$(sepolicy_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
606$(sepolicy_policy.conf): $(policy_files) $(M4)
Joel Galenson5988b562018-01-03 16:53:24 -0800607 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800608 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Joel Galenson5988b562018-01-03 16:53:24 -0800609
Nick Kralevich94c88932018-11-27 13:45:47 -0800610# sepolicy_policy_2.conf - All of the policy for the device. This is only used to
611# check neverallow rules using sepolicy-analyze, similar to CTS.
612sepolicy_policy_2.conf := $(intermediates)/policy_2.conf
613$(sepolicy_policy_2.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
614$(sepolicy_policy_2.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
615$(sepolicy_policy_2.conf): PRIVATE_TARGET_BUILD_VARIANT := user
616$(sepolicy_policy_2.conf): PRIVATE_EXCLUDE_BUILD_TEST := true
617$(sepolicy_policy_2.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
618$(sepolicy_policy_2.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700619$(sepolicy_policy_2.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Nick Kralevich94c88932018-11-27 13:45:47 -0800620$(sepolicy_policy_2.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
621$(sepolicy_policy_2.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700622$(sepolicy_policy_2.conf): PRIVATE_POLICY_FILES := $(policy_files)
623$(sepolicy_policy_2.conf): $(policy_files) $(M4)
Nick Kralevich94c88932018-11-27 13:45:47 -0800624 $(transform-policy-to-conf)
625 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
626
627$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_1 := $(sepolicy_policy.conf)
628$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_2 := $(sepolicy_policy_2.conf)
629$(LOCAL_BUILT_MODULE): $(sepolicy_policy.conf) $(sepolicy_policy_2.conf) \
630 $(HOST_OUT_EXECUTABLES)/checkpolicy $(HOST_OUT_EXECUTABLES)/sepolicy-analyze
Joel Galenson5988b562018-01-03 16:53:24 -0800631ifneq ($(SELINUX_IGNORE_NEVERALLOWS),true)
632 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c \
Nick Kralevich94c88932018-11-27 13:45:47 -0800633 $(POLICYVERS) -o $@.tmp $(PRIVATE_SEPOLICY_1)
634 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp neverallow -w -f $(PRIVATE_SEPOLICY_2) || \
635 ( echo "" 1>&2; \
636 echo "sepolicy-analyze failed. This is most likely due to the use" 1>&2; \
637 echo "of an expanded attribute in a neverallow assertion. Please fix" 1>&2; \
638 echo "the policy." 1>&2; \
639 exit 1 )
Joel Galenson5988b562018-01-03 16:53:24 -0800640endif # ($(SELINUX_IGNORE_NEVERALLOWS),true)
Nick Kralevich94c88932018-11-27 13:45:47 -0800641 $(hide) touch $@.tmp
642 $(hide) mv $@.tmp $@
Joel Galenson5988b562018-01-03 16:53:24 -0800643
644sepolicy_policy.conf :=
Nick Kralevich94c88932018-11-27 13:45:47 -0800645sepolicy_policy_2.conf :=
Joel Galenson5988b562018-01-03 16:53:24 -0800646built_sepolicy_neverallows := $(LOCAL_BUILT_MODULE)
647
Inseob Kim8ada8a72020-11-09 20:58:58 +0900648#################################
649# sepolicy_neverallows_vendor: neverallow check module for vendors in a mixed build target
650ifeq ($(mixed_sepolicy_build),true)
651include $(CLEAR_VARS)
652
653LOCAL_MODULE := sepolicy_neverallows_vendor
654LOCAL_MODULE_CLASS := FAKE
655LOCAL_MODULE_TAGS := optional
656
657include $(BUILD_SYSTEM)/base_rules.mk
658
659# Check neverallow with prebuilt policy files
660policy_files := $(call build_policy, $(sepolicy_build_files), \
661 $(plat_public_policy_$(BOARD_SEPOLICY_VERS)) $(plat_private_policy_$(BOARD_SEPOLICY_VERS)) \
662 $(system_ext_public_policy_$(BOARD_SEPOLICY_VERS)) $(system_ext_private_policy_$(BOARD_SEPOLICY_VERS)) \
663 $(product_public_policy_$(BOARD_SEPOLICY_VERS)) $(product_private_policy_$(BOARD_SEPOLICY_VERS)) \
664 $(BOARD_PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
665
666# sepolicy_policy.conf - All of the policy for the device. This is only used to
667# check neverallow rules.
668sepolicy_policy.conf := $(intermediates)/policy_vendor.conf
669$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
670$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
671$(sepolicy_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
672$(sepolicy_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
673$(sepolicy_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
674$(sepolicy_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
675$(sepolicy_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
676$(sepolicy_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
677$(sepolicy_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
678$(sepolicy_policy.conf): $(policy_files) $(M4)
679 $(transform-policy-to-conf)
680 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
681
682# sepolicy_policy_2.conf - All of the policy for the device. This is only used to
683# check neverallow rules using sepolicy-analyze, similar to CTS.
684sepolicy_policy_2.conf := $(intermediates)/policy_vendor_2.conf
685$(sepolicy_policy_2.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
686$(sepolicy_policy_2.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
687$(sepolicy_policy_2.conf): PRIVATE_TARGET_BUILD_VARIANT := user
688$(sepolicy_policy_2.conf): PRIVATE_EXCLUDE_BUILD_TEST := true
689$(sepolicy_policy_2.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
690$(sepolicy_policy_2.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
691$(sepolicy_policy_2.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
692$(sepolicy_policy_2.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
693$(sepolicy_policy_2.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
694$(sepolicy_policy_2.conf): PRIVATE_POLICY_FILES := $(policy_files)
695$(sepolicy_policy_2.conf): $(policy_files) $(M4)
696 $(transform-policy-to-conf)
697 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
698
699$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_1 := $(sepolicy_policy.conf)
700$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_2 := $(sepolicy_policy_2.conf)
701$(LOCAL_BUILT_MODULE): $(sepolicy_policy.conf) $(sepolicy_policy_2.conf) \
702 $(HOST_OUT_EXECUTABLES)/checkpolicy $(HOST_OUT_EXECUTABLES)/sepolicy-analyze
703ifneq ($(SELINUX_IGNORE_NEVERALLOWS),true)
704 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c \
705 $(POLICYVERS) -o $@.tmp $(PRIVATE_SEPOLICY_1)
706 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp neverallow -w -f $(PRIVATE_SEPOLICY_2) || \
707 ( echo "" 1>&2; \
708 echo "sepolicy-analyze failed. This is most likely due to the use" 1>&2; \
709 echo "of an expanded attribute in a neverallow assertion. Please fix" 1>&2; \
710 echo "the policy." 1>&2; \
711 exit 1 )
712endif # ($(SELINUX_IGNORE_NEVERALLOWS),true)
713 $(hide) touch $@.tmp
714 $(hide) mv $@.tmp $@
715
716sepolicy_policy.conf :=
717sepolicy_policy_2.conf :=
718built_sepolicy_neverallows += $(LOCAL_BUILT_MODULE)
719
720endif # ifeq ($(mixed_sepolicy_build),true)
721
Ying Wang02fb5f32012-01-17 17:51:09 -0800722##################################
dcashman2e00e632016-10-12 14:58:09 -0700723# reqd_policy_mask - a policy.conf file which contains only the bare minimum
724# policy necessary to use checkpolicy. This bare-minimum policy needs to be
725# present in all policy.conf files, but should not necessarily be exported as
726# part of the public policy. The rules generated by reqd_policy_mask will allow
727# the compilation of public policy and subsequent removal of CIL policy that
728# should not be exported.
729
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700730policy_files := $(call build_policy, $(sepolicy_build_files), $(REQD_MASK_POLICY))
dcashman2e00e632016-10-12 14:58:09 -0700731reqd_policy_mask.conf := $(intermediates)/reqd_policy_mask.conf
732$(reqd_policy_mask.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
733$(reqd_policy_mask.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800734$(reqd_policy_mask.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashman1c040272016-12-15 15:28:44 -0800735$(reqd_policy_mask.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700736$(reqd_policy_mask.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700737$(reqd_policy_mask.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
dcashman2e00e632016-10-12 14:58:09 -0700738$(reqd_policy_mask.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -0800739$(reqd_policy_mask.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Jaekyun Seoke4971452017-10-19 16:54:49 +0900740$(reqd_policy_mask.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +0900741$(reqd_policy_mask.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +0900742$(reqd_policy_mask.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700743$(reqd_policy_mask.conf): PRIVATE_POLICY_FILES := $(policy_files)
744$(reqd_policy_mask.conf): $(policy_files) $(M4)
Dan Cashman36ee91d2017-07-07 14:59:51 -0700745 $(transform-policy-to-conf)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700746# b/37755687
747CHECKPOLICY_ASAN_OPTIONS := ASAN_OPTIONS=detect_leaks=0
748
dcashman2e00e632016-10-12 14:58:09 -0700749reqd_policy_mask.cil := $(intermediates)/reqd_policy_mask.cil
750$(reqd_policy_mask.cil): $(reqd_policy_mask.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
751 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700752 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -C -M -c \
753 $(POLICYVERS) -o $@ $<
dcashman2e00e632016-10-12 14:58:09 -0700754
dcashman1faa6442016-11-28 07:20:28 -0800755reqd_policy_mask.conf :=
Inseob Kim8ada8a72020-11-09 20:58:58 +0900756reqd_policy_mask_$(PLATFORM_SEPOLICY_VERSION).cil := $(reqd_policy_mask.cil)
dcashman1faa6442016-11-28 07:20:28 -0800757
758##################################
Tri Voe68ba592019-01-15 13:31:03 -0800759# pub_policy - policy that will be exported to be a part of non-platform
dcashman2e00e632016-10-12 14:58:09 -0700760# policy corresponding to this platform version. This is a limited subset of
761# policy that would not compile in checkpolicy on its own. To get around this
762# limitation, add only the required files from private policy, which will
763# generate CIL policy that will then be filtered out by the reqd_policy_mask.
Bowgo Tsai948934b2019-08-29 17:12:11 +0800764#
765# There are three pub_policy.cil files below:
766# - pub_policy.cil: exported 'product', 'system_ext' and 'system' policy.
767# - system_ext_pub_policy.cil: exported 'system_ext' and 'system' policy.
768# - plat_pub_policy.cil: exported 'system' policy.
769#
770# Those above files will in turn be used to generate the following versioned cil files:
771# - product_mapping_file: the versioned, exported 'product' policy in product partition.
772# - system_ext_mapping_file: the versioned, exported 'system_ext' policy in system_ext partition.
773# - plat_mapping_file: the versioned, exported 'system' policy in system partition.
774# - plat_pub_versioned.cil: the versioned, exported 'product', 'system_ext' and 'system'
775# policy in vendor partition.
776#
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700777policy_files := $(call build_policy, $(sepolicy_build_files), \
Bowgo Tsai948934b2019-08-29 17:12:11 +0800778 $(PLAT_PUBLIC_POLICY) $(SYSTEM_EXT_PUBLIC_POLICY) $(PRODUCT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
Tri Voe68ba592019-01-15 13:31:03 -0800779pub_policy.conf := $(intermediates)/pub_policy.conf
780$(pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
781$(pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
782$(pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
783$(pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
784$(pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700785$(pub_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Tri Voe68ba592019-01-15 13:31:03 -0800786$(pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
787$(pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
788$(pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +0900789$(pub_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +0900790$(pub_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700791$(pub_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
792$(pub_policy.conf): $(policy_files) $(M4)
Dan Cashman36ee91d2017-07-07 14:59:51 -0700793 $(transform-policy-to-conf)
Tri Voe68ba592019-01-15 13:31:03 -0800794pub_policy.cil := $(intermediates)/pub_policy.cil
795$(pub_policy.cil): PRIVATE_POL_CONF := $(pub_policy.conf)
796$(pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
797$(pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
798$(HOST_OUT_EXECUTABLES)/build_sepolicy $(pub_policy.conf) $(reqd_policy_mask.cil)
dcashman2e00e632016-10-12 14:58:09 -0700799 @mkdir -p $(dir $@)
Tri Vod57789f2018-12-17 16:35:41 -0800800 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
801 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
802 -f $(PRIVATE_REQD_MASK) -t $@
dcashman2e00e632016-10-12 14:58:09 -0700803
Inseob Kim8ada8a72020-11-09 20:58:58 +0900804pub_policy_$(PLATFORM_SEPOLICY_VERSION).cil := $(pub_policy.cil)
805
Tri Voe68ba592019-01-15 13:31:03 -0800806pub_policy.conf :=
Dan Cashman1c040272016-12-15 15:28:44 -0800807
dcashman1faa6442016-11-28 07:20:28 -0800808##################################
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700809policy_files := $(call build_policy, $(sepolicy_build_files), \
Bowgo Tsai948934b2019-08-29 17:12:11 +0800810 $(PLAT_PUBLIC_POLICY) $(SYSTEM_EXT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
811system_ext_pub_policy.conf := $(intermediates)/system_ext_pub_policy.conf
812$(system_ext_pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
813$(system_ext_pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
814$(system_ext_pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
815$(system_ext_pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
816$(system_ext_pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
817$(system_ext_pub_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
818$(system_ext_pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
819$(system_ext_pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
820$(system_ext_pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kime2ef86f2019-10-16 11:46:50 +0900821$(system_ext_pub_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +0900822$(system_ext_pub_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Bowgo Tsai948934b2019-08-29 17:12:11 +0800823$(system_ext_pub_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
824$(system_ext_pub_policy.conf): $(policy_files) $(M4)
825 $(transform-policy-to-conf)
826
827system_ext_pub_policy.cil := $(intermediates)/system_ext_pub_policy.cil
828$(system_ext_pub_policy.cil): PRIVATE_POL_CONF := $(system_ext_pub_policy.conf)
829$(system_ext_pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
830$(system_ext_pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
831$(HOST_OUT_EXECUTABLES)/build_sepolicy $(system_ext_pub_policy.conf) $(reqd_policy_mask.cil)
832 @mkdir -p $(dir $@)
833 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
834 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
835 -f $(PRIVATE_REQD_MASK) -t $@
836
Inseob Kim8ada8a72020-11-09 20:58:58 +0900837system_ext_pub_policy_$(PLATFORM_SEPOLICY_VERSION).cil := $(system_ext_pub_policy.cil)
838
Bowgo Tsai948934b2019-08-29 17:12:11 +0800839system_ext_pub_policy.conf :=
840
841##################################
842policy_files := $(call build_policy, $(sepolicy_build_files), \
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700843 $(PLAT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
Tri Vo937e6642019-01-15 15:16:55 -0800844plat_pub_policy.conf := $(intermediates)/plat_pub_policy.conf
845$(plat_pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
846$(plat_pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
847$(plat_pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
848$(plat_pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
849$(plat_pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700850$(plat_pub_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Tri Vo937e6642019-01-15 15:16:55 -0800851$(plat_pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
852$(plat_pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
853$(plat_pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +0900854$(plat_pub_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +0900855$(plat_pub_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700856$(plat_pub_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
857$(plat_pub_policy.conf): $(policy_files) $(M4)
Tri Vo937e6642019-01-15 15:16:55 -0800858 $(transform-policy-to-conf)
859
860plat_pub_policy.cil := $(intermediates)/plat_pub_policy.cil
861$(plat_pub_policy.cil): PRIVATE_POL_CONF := $(plat_pub_policy.conf)
862$(plat_pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
863$(plat_pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
864$(HOST_OUT_EXECUTABLES)/build_sepolicy $(plat_pub_policy.conf) $(reqd_policy_mask.cil)
865 @mkdir -p $(dir $@)
866 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
867 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
868 -f $(PRIVATE_REQD_MASK) -t $@
869
Inseob Kim8ada8a72020-11-09 20:58:58 +0900870plat_pub_policy_$(PLATFORM_SEPOLICY_VERSION).cil := $(plat_pub_policy.cil)
871
Tri Vo937e6642019-01-15 15:16:55 -0800872plat_pub_policy.conf :=
873
dcashman1faa6442016-11-28 07:20:28 -0800874#################################
875include $(CLEAR_VARS)
876
877LOCAL_MODULE := plat_sepolicy.cil
878LOCAL_MODULE_CLASS := ETC
879LOCAL_MODULE_TAGS := optional
Alex Klyubin052b0bb2017-03-02 12:39:25 -0800880LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -0800881
882include $(BUILD_SYSTEM)/base_rules.mk
dcashman2e00e632016-10-12 14:58:09 -0700883
884# plat_policy.conf - A combination of the private and public platform policy
885# which will ship with the device. The platform will always reflect the most
886# recent platform version and is not currently being attributized.
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700887policy_files := $(call build_policy, $(sepolicy_build_files), \
888 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
dcashman2e00e632016-10-12 14:58:09 -0700889plat_policy.conf := $(intermediates)/plat_policy.conf
890$(plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
891$(plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800892$(plat_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashman1c040272016-12-15 15:28:44 -0800893$(plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700894$(plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700895$(plat_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
dcashman2e00e632016-10-12 14:58:09 -0700896$(plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -0800897$(plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Jaekyun Seoke4971452017-10-19 16:54:49 +0900898$(plat_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +0900899$(plat_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +0900900$(plat_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700901$(plat_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
902$(plat_policy.conf): $(policy_files) $(M4)
Dan Cashman36ee91d2017-07-07 14:59:51 -0700903 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800904 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
dcashmancc39f632016-07-22 13:13:11 -0700905
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700906$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_CIL_FILES := \
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700907 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY))
Joel Galenson5988b562018-01-03 16:53:24 -0800908$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700909$(LOCAL_BUILT_MODULE): $(plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
910 $(HOST_OUT_EXECUTABLES)/secilc \
Joel Galenson5988b562018-01-03 16:53:24 -0800911 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY)) \
912 $(built_sepolicy_neverallows)
dcashman2e00e632016-10-12 14:58:09 -0700913 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700914 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
Nick Kralevich6b2a4ae2018-11-26 14:29:06 -0800915 $(POLICYVERS) -o $@.tmp $<
916 $(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@.tmp
917 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) $@.tmp -o /dev/null -f /dev/null
918 $(hide) mv $@.tmp $@
dcashman1faa6442016-11-28 07:20:28 -0800919
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800920built_plat_cil := $(LOCAL_BUILT_MODULE)
Inseob Kim8ada8a72020-11-09 20:58:58 +0900921built_plat_cil_$(PLATFORM_SEPOLICY_VERSION) := $(built_plat_cil)
dcashman1faa6442016-11-28 07:20:28 -0800922plat_policy.conf :=
923
924#################################
925include $(CLEAR_VARS)
926
Bowgo Tsaie7636672019-04-19 22:03:33 +0800927LOCAL_MODULE := userdebug_plat_sepolicy.cil
928LOCAL_MODULE_CLASS := ETC
929LOCAL_MODULE_TAGS := optional
930LOCAL_MODULE_PATH := $(TARGET_DEBUG_RAMDISK_OUT)
931
932include $(BUILD_SYSTEM)/base_rules.mk
933
934# userdebug_plat_policy.conf - the userdebug version plat_sepolicy.cil
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700935policy_files := $(call build_policy, $(sepolicy_build_files), \
936 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
Bowgo Tsaie7636672019-04-19 22:03:33 +0800937userdebug_plat_policy.conf := $(intermediates)/userdebug_plat_policy.conf
938$(userdebug_plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
939$(userdebug_plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
940$(userdebug_plat_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := userdebug
941$(userdebug_plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
942$(userdebug_plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -0700943$(userdebug_plat_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Bowgo Tsaie7636672019-04-19 22:03:33 +0800944$(userdebug_plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
945$(userdebug_plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
946$(userdebug_plat_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +0900947$(userdebug_plat_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +0900948$(userdebug_plat_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -0700949$(userdebug_plat_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
950$(userdebug_plat_policy.conf): $(policy_files) $(M4)
Bowgo Tsaie7636672019-04-19 22:03:33 +0800951 $(transform-policy-to-conf)
952 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
953
954$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_CIL_FILES := \
955 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY))
956$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
957$(LOCAL_BUILT_MODULE): $(userdebug_plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
958 $(HOST_OUT_EXECUTABLES)/secilc \
959 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY)) \
960 $(built_sepolicy_neverallows)
961 @mkdir -p $(dir $@)
962 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
963 $(POLICYVERS) -o $@.tmp $<
964 $(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@.tmp
965 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) $@.tmp -o /dev/null -f /dev/null
966 $(hide) mv $@.tmp $@
967
968userdebug_plat_policy.conf :=
969
970#################################
971include $(CLEAR_VARS)
972
Bowgo Tsai948934b2019-08-29 17:12:11 +0800973ifdef HAS_SYSTEM_EXT_SEPOLICY
974LOCAL_MODULE := system_ext_sepolicy.cil
975LOCAL_MODULE_CLASS := ETC
976LOCAL_MODULE_TAGS := optional
977LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_EXT)/etc/selinux
978
979include $(BUILD_SYSTEM)/base_rules.mk
980
981# system_ext_policy.conf - A combination of the private and public system_ext policy
982# which will ship with the device. System_ext policy is not attributized.
983policy_files := $(call build_policy, $(sepolicy_build_files), \
984 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) \
985 $(SYSTEM_EXT_PUBLIC_POLICY) $(SYSTEM_EXT_PRIVATE_POLICY))
986system_ext_policy.conf := $(intermediates)/system_ext_policy.conf
987$(system_ext_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
988$(system_ext_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
989$(system_ext_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
990$(system_ext_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
991$(system_ext_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
992$(system_ext_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
993$(system_ext_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
994$(system_ext_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
995$(system_ext_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kime2ef86f2019-10-16 11:46:50 +0900996$(system_ext_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +0900997$(system_ext_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Bowgo Tsai948934b2019-08-29 17:12:11 +0800998$(system_ext_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
999$(system_ext_policy.conf): $(policy_files) $(M4)
1000 $(transform-policy-to-conf)
1001 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
1002
1003$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
1004$(LOCAL_BUILT_MODULE): PRIVATE_PLAT_CIL := $(built_plat_cil)
1005$(LOCAL_BUILT_MODULE): $(system_ext_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
1006$(HOST_OUT_EXECUTABLES)/build_sepolicy $(HOST_OUT_EXECUTABLES)/secilc $(built_plat_cil)
1007 @mkdir -p $(dir $@)
1008 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
1009 $(POLICYVERS) -o $@ $<
1010 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
1011 -f $(PRIVATE_PLAT_CIL) -t $@
1012 # Line markers (denoted by ;;) are malformed after above cmd. They are only
1013 # used for debugging, so we remove them.
1014 $(hide) grep -v ';;' $@ > $@.tmp
1015 $(hide) mv $@.tmp $@
1016 # Combine plat_sepolicy.cil and system_ext_sepolicy.cil to make sure that the
1017 # latter doesn't accidentally depend on vendor/odm policies.
1018 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) \
1019 $(PRIVATE_NEVERALLOW_ARG) $(PRIVATE_PLAT_CIL) $@ -o /dev/null -f /dev/null
1020
1021
1022built_system_ext_cil := $(LOCAL_BUILT_MODULE)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001023built_system_ext_cil_$(PLATFORM_SEPOLICY_VERSION) := $(built_system_ext_cil)
Bowgo Tsai948934b2019-08-29 17:12:11 +08001024system_ext_policy.conf :=
1025endif # ifdef HAS_SYSTEM_EXT_SEPOLICY
1026
1027#################################
1028include $(CLEAR_VARS)
1029
Tri Vo75887dd2018-12-14 14:30:56 -08001030ifdef HAS_PRODUCT_SEPOLICY
1031LOCAL_MODULE := product_sepolicy.cil
1032LOCAL_MODULE_CLASS := ETC
1033LOCAL_MODULE_TAGS := optional
1034LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
1035
1036include $(BUILD_SYSTEM)/base_rules.mk
1037
1038# product_policy.conf - A combination of the private and public product policy
1039# which will ship with the device. Product policy is not attributized.
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001040policy_files := $(call build_policy, $(sepolicy_build_files), \
1041 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001042 $(SYSTEM_EXT_PUBLIC_POLICY) $(SYSTEM_EXT_PRIVATE_POLICY) \
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001043 $(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY))
Tri Vo75887dd2018-12-14 14:30:56 -08001044product_policy.conf := $(intermediates)/product_policy.conf
1045$(product_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1046$(product_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
1047$(product_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
1048$(product_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1049$(product_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -07001050$(product_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Tri Vo75887dd2018-12-14 14:30:56 -08001051$(product_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1052$(product_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
1053$(product_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +09001054$(product_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +09001055$(product_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001056$(product_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
1057$(product_policy.conf): $(policy_files) $(M4)
Tri Vo75887dd2018-12-14 14:30:56 -08001058 $(transform-policy-to-conf)
1059 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
1060
1061$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Bowgo Tsai948934b2019-08-29 17:12:11 +08001062$(LOCAL_BUILT_MODULE): PRIVATE_PLAT_CIL_FILES := $(built_plat_cil) $(built_system_ext_cil)
Tri Vo75887dd2018-12-14 14:30:56 -08001063$(LOCAL_BUILT_MODULE): $(product_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001064$(HOST_OUT_EXECUTABLES)/build_sepolicy $(HOST_OUT_EXECUTABLES)/secilc \
1065$(built_plat_cil) $(built_system_ext_cil)
Tri Vo75887dd2018-12-14 14:30:56 -08001066 @mkdir -p $(dir $@)
1067 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
1068 $(POLICYVERS) -o $@ $<
1069 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001070 -f $(PRIVATE_PLAT_CIL_FILES) -t $@
Tri Vo75887dd2018-12-14 14:30:56 -08001071 # Line markers (denoted by ;;) are malformed after above cmd. They are only
1072 # used for debugging, so we remove them.
Tri Voebf3eac2018-12-19 12:22:05 -08001073 $(hide) grep -v ';;' $@ > $@.tmp
1074 $(hide) mv $@.tmp $@
Bowgo Tsai948934b2019-08-29 17:12:11 +08001075 # Combine plat_sepolicy.cil, system_ext_sepolicy.cil and product_sepolicy.cil to
1076 # make sure that the latter doesn't accidentally depend on vendor/odm policies.
Tri Vo75887dd2018-12-14 14:30:56 -08001077 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001078 $(PRIVATE_NEVERALLOW_ARG) $(PRIVATE_PLAT_CIL_FILES) $@ -o /dev/null -f /dev/null
Tri Vo75887dd2018-12-14 14:30:56 -08001079
1080
1081built_product_cil := $(LOCAL_BUILT_MODULE)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001082built_product_cil_$(PLATFORM_SEPOLICY_VERSION) := $(built_product_cil)
Tri Vo75887dd2018-12-14 14:30:56 -08001083product_policy.conf :=
1084endif # ifdef HAS_PRODUCT_SEPOLICY
1085
1086#################################
1087include $(CLEAR_VARS)
1088
Dan Cashman4f9a6482017-04-10 12:27:18 -07001089LOCAL_MODULE := plat_sepolicy_vers.txt
dcashman1faa6442016-11-28 07:20:28 -08001090LOCAL_MODULE_CLASS := ETC
1091LOCAL_MODULE_TAGS := optional
Dan Cashman4f9a6482017-04-10 12:27:18 -07001092LOCAL_PROPRIETARY_MODULE := true
1093LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1094
1095include $(BUILD_SYSTEM)/base_rules.mk
1096
1097$(LOCAL_BUILT_MODULE) : PRIVATE_PLAT_SEPOL_VERS := $(BOARD_SEPOLICY_VERS)
1098$(LOCAL_BUILT_MODULE) :
1099 mkdir -p $(dir $@)
1100 echo $(PRIVATE_PLAT_SEPOL_VERS) > $@
1101
1102#################################
1103include $(CLEAR_VARS)
1104
Tri Vo937e6642019-01-15 15:16:55 -08001105LOCAL_MODULE := plat_mapping_file
1106LOCAL_MODULE_STEM := $(PLATFORM_SEPOLICY_VERSION).cil
Dan Cashman4f9a6482017-04-10 12:27:18 -07001107LOCAL_MODULE_CLASS := ETC
1108LOCAL_MODULE_TAGS := optional
1109LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux/mapping
dcashman1faa6442016-11-28 07:20:28 -08001110
1111include $(BUILD_SYSTEM)/base_rules.mk
1112
1113# auto-generate the mapping file for current platform policy, since it needs to
1114# track platform policy development
Tri Vo8a2b6522019-01-14 17:25:17 -08001115$(LOCAL_BUILT_MODULE) : PRIVATE_VERS := $(PLATFORM_SEPOLICY_VERSION)
Tri Vo937e6642019-01-15 15:16:55 -08001116$(LOCAL_BUILT_MODULE) : $(plat_pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy
dcashman1faa6442016-11-28 07:20:28 -08001117 @mkdir -p $(dir $@)
1118 $(hide) $(HOST_OUT_EXECUTABLES)/version_policy -b $< -m -n $(PRIVATE_VERS) -o $@
1119
Tri Vo937e6642019-01-15 15:16:55 -08001120built_plat_mapping_cil := $(LOCAL_BUILT_MODULE)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001121built_plat_mapping_cil_$(PLATFORM_SEPOLICY_VERSION) := $(built_plat_mapping_cil)
Tri Vo937e6642019-01-15 15:16:55 -08001122
1123#################################
1124include $(CLEAR_VARS)
1125
Bowgo Tsaiac381252019-10-04 14:34:18 +08001126ifdef HAS_SYSTEM_EXT_PUBLIC_SEPOLICY
Bowgo Tsai948934b2019-08-29 17:12:11 +08001127LOCAL_MODULE := system_ext_mapping_file
1128LOCAL_MODULE_STEM := $(PLATFORM_SEPOLICY_VERSION).cil
1129LOCAL_MODULE_CLASS := ETC
1130LOCAL_MODULE_TAGS := optional
1131LOCAL_MODULE_PATH := $(TARGET_OUT_SYSTEM_EXT)/etc/selinux/mapping
1132
1133include $(BUILD_SYSTEM)/base_rules.mk
1134
1135$(LOCAL_BUILT_MODULE) : PRIVATE_VERS := $(PLATFORM_SEPOLICY_VERSION)
1136$(LOCAL_BUILT_MODULE) : PRIVATE_PLAT_MAPPING_CIL := $(built_plat_mapping_cil)
1137$(LOCAL_BUILT_MODULE) : $(system_ext_pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy \
1138$(built_plat_mapping_cil)
1139 @mkdir -p $(dir $@)
1140 # Generate system_ext mapping file as mapping file of 'system' (plat) and 'system_ext'
1141 # sepolicy minus plat_mapping_file.
1142 $(hide) $(HOST_OUT_EXECUTABLES)/version_policy -b $< -m -n $(PRIVATE_VERS) -o $@
1143 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
1144 -f $(PRIVATE_PLAT_MAPPING_CIL) -t $@
1145
1146built_system_ext_mapping_cil := $(LOCAL_BUILT_MODULE)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001147built_system_ext_mapping_cil_$(PLATFORM_SEPOLICY_VERSION) := $(built_system_ext_mapping_cil)
Bowgo Tsaiac381252019-10-04 14:34:18 +08001148endif # ifdef HAS_SYSTEM_EXT_PUBLIC_SEPOLICY
Bowgo Tsai948934b2019-08-29 17:12:11 +08001149
1150#################################
1151include $(CLEAR_VARS)
1152
Bowgo Tsai7c4150c2019-10-04 15:36:05 +08001153ifdef HAS_PRODUCT_PUBLIC_SEPOLICY
Tri Vo937e6642019-01-15 15:16:55 -08001154LOCAL_MODULE := product_mapping_file
1155LOCAL_MODULE_STEM := $(PLATFORM_SEPOLICY_VERSION).cil
1156LOCAL_MODULE_CLASS := ETC
1157LOCAL_MODULE_TAGS := optional
1158LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux/mapping
1159
1160include $(BUILD_SYSTEM)/base_rules.mk
1161
1162$(LOCAL_BUILT_MODULE) : PRIVATE_VERS := $(PLATFORM_SEPOLICY_VERSION)
Bowgo Tsai948934b2019-08-29 17:12:11 +08001163$(LOCAL_BUILT_MODULE) : PRIVATE_FILTER_CIL_FILES := $(built_plat_mapping_cil) $(built_system_ext_mapping_cil)
Tri Vo937e6642019-01-15 15:16:55 -08001164$(LOCAL_BUILT_MODULE) : $(pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001165$(built_plat_mapping_cil) $(built_system_ext_mapping_cil)
Tri Vo937e6642019-01-15 15:16:55 -08001166 @mkdir -p $(dir $@)
1167 # Generate product mapping file as mapping file of all public sepolicy minus
Bowgo Tsai948934b2019-08-29 17:12:11 +08001168 # plat_mapping_file and system_ext_mapping_file.
Tri Vo937e6642019-01-15 15:16:55 -08001169 $(hide) $(HOST_OUT_EXECUTABLES)/version_policy -b $< -m -n $(PRIVATE_VERS) -o $@
1170 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001171 -f $(PRIVATE_FILTER_CIL_FILES) -t $@
Tri Vo937e6642019-01-15 15:16:55 -08001172
1173built_product_mapping_cil := $(LOCAL_BUILT_MODULE)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001174built_product_mapping_cil_$(PLATFORM_SEPOLICY_VERSION) := $(built_product_mapping_cil)
Bowgo Tsai7c4150c2019-10-04 15:36:05 +08001175endif # ifdef HAS_PRODUCT_PUBLIC_SEPOLICY
dcashman1faa6442016-11-28 07:20:28 -08001176
1177#################################
1178include $(CLEAR_VARS)
1179
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001180# plat_pub_versioned.cil - the exported platform policy associated with the version
1181# that non-platform policy targets.
1182LOCAL_MODULE := plat_pub_versioned.cil
dcashman1faa6442016-11-28 07:20:28 -08001183LOCAL_MODULE_CLASS := ETC
1184LOCAL_MODULE_TAGS := optional
Alex Klyubin052b0bb2017-03-02 12:39:25 -08001185LOCAL_PROPRIETARY_MODULE := true
1186LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -08001187
1188include $(BUILD_SYSTEM)/base_rules.mk
1189
Inseob Kim8ada8a72020-11-09 20:58:58 +09001190$(LOCAL_BUILT_MODULE) : PRIVATE_VERS := $(PLATFORM_SEPOLICY_VERSION)
Tri Voe68ba592019-01-15 13:31:03 -08001191$(LOCAL_BUILT_MODULE) : PRIVATE_TGT_POL := $(pub_policy.cil)
Bowgo Tsai948934b2019-08-29 17:12:11 +08001192$(LOCAL_BUILT_MODULE) : PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_system_ext_cil) \
1193$(built_product_cil) $(built_plat_mapping_cil) $(built_system_ext_mapping_cil) \
1194$(built_product_mapping_cil)
Tri Voe68ba592019-01-15 13:31:03 -08001195$(LOCAL_BUILT_MODULE) : $(pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001196 $(HOST_OUT_EXECUTABLES)/secilc $(built_plat_cil) $(built_system_ext_cil) $(built_product_cil) \
1197 $(built_plat_mapping_cil) $(built_system_ext_mapping_cil) $(built_product_mapping_cil)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001198 @mkdir -p $(dir $@)
1199 $(HOST_OUT_EXECUTABLES)/version_policy -b $< -t $(PRIVATE_TGT_POL) -n $(PRIVATE_VERS) -o $@
1200 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -N -c $(POLICYVERS) \
1201 $(PRIVATE_DEP_CIL_FILES) $@ -o /dev/null -f /dev/null
1202
Tri Voe68ba592019-01-15 13:31:03 -08001203built_pub_vers_cil := $(LOCAL_BUILT_MODULE)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001204built_pub_vers_cil_$(PLATFORM_SEPOLICY_VERSION) := $(built_pub_vers_cil)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001205
1206#################################
1207include $(CLEAR_VARS)
1208
1209# vendor_policy.cil - the vendor sepolicy. This needs attributization and to be combined
1210# with the platform-provided policy. It makes use of the reqd_policy_mask files from private
1211# policy and the platform public policy files in order to use checkpolicy.
1212LOCAL_MODULE := vendor_sepolicy.cil
1213LOCAL_MODULE_CLASS := ETC
1214LOCAL_MODULE_TAGS := optional
1215LOCAL_PROPRIETARY_MODULE := true
1216LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1217
1218include $(BUILD_SYSTEM)/base_rules.mk
1219
Inseob Kim8ada8a72020-11-09 20:58:58 +09001220# Use either prebuilt policy files or current policy files, depending on BOARD_SEPOLICY_VERS
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001221policy_files := $(call build_policy, $(sepolicy_build_files), \
Inseob Kim8ada8a72020-11-09 20:58:58 +09001222 $(plat_public_policy_$(BOARD_SEPOLICY_VERS)) $(system_ext_public_policy_$(BOARD_SEPOLICY_VERS)) \
1223 $(product_public_policy_$(BOARD_SEPOLICY_VERS)) $(reqd_policy_$(BOARD_SEPOLICY_VERS)) \
1224 $(BOARD_PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS))
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001225vendor_policy.conf := $(intermediates)/vendor_policy.conf
1226$(vendor_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1227$(vendor_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -08001228$(vendor_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001229$(vendor_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1230$(vendor_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -07001231$(vendor_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001232$(vendor_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1233$(vendor_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
1234$(vendor_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +09001235$(vendor_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +09001236$(vendor_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001237$(vendor_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
1238$(vendor_policy.conf): $(policy_files) $(M4)
Dan Cashman36ee91d2017-07-07 14:59:51 -07001239 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +08001240 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Stephen Smalley2dd4e512012-01-04 12:33:27 -05001241
Bowgo Tsai741a70a2018-02-05 17:41:02 +08001242$(LOCAL_BUILT_MODULE): PRIVATE_POL_CONF := $(vendor_policy.conf)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001243$(LOCAL_BUILT_MODULE): PRIVATE_REQD_MASK := $(reqd_policy_mask_$(BOARD_SEPOLICY_VERS).cil)
1244$(LOCAL_BUILT_MODULE): PRIVATE_BASE_CIL := $(pub_policy_$(BOARD_SEPOLICY_VERS).cil)
Bowgo Tsai741a70a2018-02-05 17:41:02 +08001245$(LOCAL_BUILT_MODULE): PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001246$(LOCAL_BUILT_MODULE): PRIVATE_DEP_CIL_FILES := $(built_plat_cil_$(BOARD_SEPOLICY_VERS)) \
1247$(built_system_ext_cil_$(BOARD_SEPOLICY_VERS)) $(built_product_cil_$(BOARD_SEPOLICY_VERS)) \
1248$(built_pub_vers_cil_$(BOARD_SEPOLICY_VERS)) $(built_plat_mapping_cil_$(BOARD_SEPOLICY_VERS)) \
1249$(built_system_ext_mapping_cil_$(BOARD_SEPOLICY_VERS)) $(built_product_mapping_cil_$(BOARD_SEPOLICY_VERS))
1250$(LOCAL_BUILT_MODULE): PRIVATE_FILTER_CIL := $(built_pub_vers_cil_$(BOARD_SEPOLICY_VERS))
Bowgo Tsai741a70a2018-02-05 17:41:02 +08001251$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/build_sepolicy \
Inseob Kim8ada8a72020-11-09 20:58:58 +09001252 $(vendor_policy.conf) $(reqd_policy_mask_$(BOARD_SEPOLICY_VERS).cil) \
1253 $(pub_policy_$(BOARD_SEPOLICY_VERS).cil) $(built_plat_cil_$(BOARD_SEPOLICY_VERS)) \
1254 $(built_system_ext_cil_$(BOARD_SEPOLICY_VERS)) $(built_product_cil_$(BOARD_SEPOLICY_VERS)) \
1255 $(built_pub_vers_cil_$(BOARD_SEPOLICY_VERS)) $(built_plat_mapping_cil_$(BOARD_SEPOLICY_VERS)) \
1256 $(built_system_ext_mapping_cil_$(BOARD_SEPOLICY_VERS)) $(built_product_mapping_cil_$(BOARD_SEPOLICY_VERS))
dcashman2e00e632016-10-12 14:58:09 -07001257 @mkdir -p $(dir $@)
Bowgo Tsai741a70a2018-02-05 17:41:02 +08001258 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) build_cil \
1259 -i $(PRIVATE_POL_CONF) -m $(PRIVATE_REQD_MASK) -c $(CHECKPOLICY_ASAN_OPTIONS) \
1260 -b $(PRIVATE_BASE_CIL) -d $(PRIVATE_DEP_CIL_FILES) -f $(PRIVATE_FILTER_CIL) \
1261 -t $(PRIVATE_VERS) -p $(POLICYVERS) -o $@
dcashman2e00e632016-10-12 14:58:09 -07001262
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001263built_vendor_cil := $(LOCAL_BUILT_MODULE)
1264vendor_policy.conf :=
dcashman1faa6442016-11-28 07:20:28 -08001265
1266#################################
1267include $(CLEAR_VARS)
Alex Klyubin193dccd2017-03-07 14:05:57 -08001268
Nick Kralevich1b2ea492018-09-25 11:03:48 -07001269ifdef BOARD_ODM_SEPOLICY_DIRS
Bowgo Tsai45457e32017-11-27 11:41:33 +08001270# odm_policy.cil - the odm sepolicy. This needs attributization and to be combined
1271# with the platform-provided policy. It makes use of the reqd_policy_mask files from private
1272# policy and the platform public policy files in order to use checkpolicy.
1273LOCAL_MODULE := odm_sepolicy.cil
1274LOCAL_MODULE_CLASS := ETC
1275LOCAL_MODULE_TAGS := optional
1276LOCAL_PROPRIETARY_MODULE := true
1277LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1278
1279include $(BUILD_SYSTEM)/base_rules.mk
1280
Inseob Kim8ada8a72020-11-09 20:58:58 +09001281# Use either prebuilt policy files or current policy files, depending on BOARD_SEPOLICY_VERS
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001282policy_files := $(call build_policy, $(sepolicy_build_files), \
Inseob Kim8ada8a72020-11-09 20:58:58 +09001283 $(plat_public_policy_$(BOARD_SEPOLICY_VERS)) $(system_ext_public_policy_$(BOARD_SEPOLICY_VERS)) \
1284 $(product_public_policy_$(BOARD_SEPOLICY_VERS)) $(reqd_policy_$(BOARD_SEPOLICY_VERS)) \
1285 $(BOARD_PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
Bowgo Tsai45457e32017-11-27 11:41:33 +08001286odm_policy.conf := $(intermediates)/odm_policy.conf
1287$(odm_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1288$(odm_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
1289$(odm_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
1290$(odm_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1291$(odm_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -07001292$(odm_policy.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Bowgo Tsai45457e32017-11-27 11:41:33 +08001293$(odm_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1294$(odm_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
1295$(odm_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +09001296$(odm_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +09001297$(odm_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001298$(odm_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
1299$(odm_policy.conf): $(policy_files) $(M4)
Bowgo Tsai45457e32017-11-27 11:41:33 +08001300 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +08001301 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Bowgo Tsai45457e32017-11-27 11:41:33 +08001302
1303$(LOCAL_BUILT_MODULE): PRIVATE_POL_CONF := $(odm_policy.conf)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001304$(LOCAL_BUILT_MODULE): PRIVATE_REQD_MASK := $(reqd_policy_mask_$(BOARD_SEPOLICY_VERS).cil)
1305$(LOCAL_BUILT_MODULE): PRIVATE_BASE_CIL := $(pub_policy_$(BOARD_SEPOLICY_VERS).cil)
Bowgo Tsai45457e32017-11-27 11:41:33 +08001306$(LOCAL_BUILT_MODULE): PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001307$(LOCAL_BUILT_MODULE): PRIVATE_DEP_CIL_FILES := $(built_plat_cil_$(BOARD_SEPOLICY_VERS)) \
1308$(built_system_ext_cil_$(BOARD_SEPOLICY_VERS)) $(built_product_cil_$(BOARD_SEPOLICY_VERS)) \
1309$(built_pub_vers_cil_$(BOARD_SEPOLICY_VERS)) $(built_plat_mapping_cil_$(BOARD_SEPOLICY_VERS)) \
1310$(built_system_ext_mapping_cil_$(BOARD_SEPOLICY_VERS)) $(built_product_mapping_cil_$(BOARD_SEPOLICY_VERS)) \
1311$(built_vendor_cil)
1312$(LOCAL_BUILT_MODULE) : PRIVATE_FILTER_CIL_FILES := $(built_pub_vers_cil_$(BOARD_SEPOLICY_VERS)) $(built_vendor_cil)
Bowgo Tsai45457e32017-11-27 11:41:33 +08001313$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/build_sepolicy \
Inseob Kim8ada8a72020-11-09 20:58:58 +09001314 $(odm_policy.conf) $(reqd_policy_mask_$(BOARD_SEPOLICY_VERS).cil) \
1315 $(pub_policy_$(BOARD_SEPOLICY_VERS).cil) $(built_plat_cil_$(BOARD_SEPOLICY_VERS)) \
1316 $(built_system_ext_cil_$(BOARD_SEPOLICY_VERS)) $(built_product_cil_$(BOARD_SEPOLICY_VERS)) \
1317 $(built_pub_vers_cil_$(BOARD_SEPOLICY_VERS)) $(built_plat_mapping_cil_$(BOARD_SEPOLICY_VERS)) \
1318 $(built_system_ext_mapping_cil_$(BOARD_SEPOLICY_VERS)) $(built_product_mapping_cil_$(BOARD_SEPOLICY_VERS)) \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001319 $(built_vendor_cil)
Bowgo Tsai45457e32017-11-27 11:41:33 +08001320 @mkdir -p $(dir $@)
1321 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) build_cil \
1322 -i $(PRIVATE_POL_CONF) -m $(PRIVATE_REQD_MASK) -c $(CHECKPOLICY_ASAN_OPTIONS) \
1323 -b $(PRIVATE_BASE_CIL) -d $(PRIVATE_DEP_CIL_FILES) -f $(PRIVATE_FILTER_CIL_FILES) \
1324 -t $(PRIVATE_VERS) -p $(POLICYVERS) -o $@
1325
1326built_odm_cil := $(LOCAL_BUILT_MODULE)
1327odm_policy.conf :=
1328odm_policy_raw :=
Nick Kralevich1b2ea492018-09-25 11:03:48 -07001329endif
Bowgo Tsai45457e32017-11-27 11:41:33 +08001330
1331#################################
1332include $(CLEAR_VARS)
1333
Alex Klyubin193dccd2017-03-07 14:05:57 -08001334LOCAL_MODULE := precompiled_sepolicy
1335LOCAL_MODULE_CLASS := ETC
1336LOCAL_MODULE_TAGS := optional
1337LOCAL_PROPRIETARY_MODULE := true
Bowgo Tsai45457e32017-11-27 11:41:33 +08001338
1339ifeq ($(BOARD_USES_ODMIMAGE),true)
1340LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1341else
Alex Klyubin193dccd2017-03-07 14:05:57 -08001342LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Bowgo Tsai45457e32017-11-27 11:41:33 +08001343endif
Alex Klyubin193dccd2017-03-07 14:05:57 -08001344
1345include $(BUILD_SYSTEM)/base_rules.mk
1346
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001347all_cil_files := \
1348 $(built_plat_cil) \
Inseob Kim8ada8a72020-11-09 20:58:58 +09001349 $(TARGET_OUT)/etc/selinux/mapping/$(BOARD_SEPOLICY_VERS).cil \
1350 $(built_pub_vers_cil_$(BOARD_SEPOLICY_VERS)) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001351 $(built_vendor_cil)
1352
Bowgo Tsai948934b2019-08-29 17:12:11 +08001353ifdef HAS_SYSTEM_EXT_SEPOLICY
Bowgo Tsaiac381252019-10-04 14:34:18 +08001354all_cil_files += $(built_system_ext_cil)
1355endif
Bowgo Tsai948934b2019-08-29 17:12:11 +08001356
Bowgo Tsaiac381252019-10-04 14:34:18 +08001357ifdef HAS_SYSTEM_EXT_PUBLIC_SEPOLICY
Inseob Kim8ada8a72020-11-09 20:58:58 +09001358all_cil_files += $(TARGET_OUT_SYSTEM_EXT)/etc/selinux/mapping/$(BOARD_SEPOLICY_VERS).cil
Bowgo Tsai948934b2019-08-29 17:12:11 +08001359endif
1360
Tri Vo75887dd2018-12-14 14:30:56 -08001361ifdef HAS_PRODUCT_SEPOLICY
Bowgo Tsai7c4150c2019-10-04 15:36:05 +08001362all_cil_files += $(built_product_cil)
1363endif
Tri Vo937e6642019-01-15 15:16:55 -08001364
Bowgo Tsai7c4150c2019-10-04 15:36:05 +08001365ifdef HAS_PRODUCT_PUBLIC_SEPOLICY
Inseob Kim8ada8a72020-11-09 20:58:58 +09001366all_cil_files += $(TARGET_OUT_PRODUCT)/etc/selinux/mapping/$(BOARD_SEPOLICY_VERS).cil
Tri Vo75887dd2018-12-14 14:30:56 -08001367endif
1368
Bowgo Tsai45457e32017-11-27 11:41:33 +08001369ifdef BOARD_ODM_SEPOLICY_DIRS
1370all_cil_files += $(built_odm_cil)
1371endif
1372
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001373$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001374# Neverallow checks are skipped in a mixed build target.
1375$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(if $(filter $(PLATFORM_SEPOLICY_VERSION),$(BOARD_SEPOLICY_VERS)),$(NEVERALLOW_ARG),-N)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001376$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(all_cil_files) $(built_sepolicy_neverallows)
Joel Galenson5988b562018-01-03 16:53:24 -08001377 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) \
Alex Klyubin193dccd2017-03-07 14:05:57 -08001378 $(PRIVATE_CIL_FILES) -o $@ -f /dev/null
1379
1380built_precompiled_sepolicy := $(LOCAL_BUILT_MODULE)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001381all_cil_files :=
Alex Klyubin193dccd2017-03-07 14:05:57 -08001382
1383#################################
Tri Vo1824e252019-01-22 18:07:58 -08001384# Precompiled sepolicy is loaded if and only if:
1385# - plat_sepolicy_and_mapping.sha256 equals
1386# precompiled_sepolicy.plat_sepolicy_and_mapping.sha256
1387# AND
Bowgo Tsai948934b2019-08-29 17:12:11 +08001388# - system_ext_sepolicy_and_mapping.sha256 equals
1389# precompiled_sepolicy.system_ext_sepolicy_and_mapping.sha256
1390# AND
Tri Vo1824e252019-01-22 18:07:58 -08001391# - product_sepolicy_and_mapping.sha256 equals
1392# precompiled_sepolicy.product_sepolicy_and_mapping.sha256
1393# See system/core/init/selinux.cpp for details.
1394#################################
1395include $(CLEAR_VARS)
1396
1397LOCAL_MODULE := plat_sepolicy_and_mapping.sha256
1398LOCAL_MODULE_CLASS := ETC
1399LOCAL_MODULE_TAGS := optional
1400LOCAL_MODULE_PATH = $(TARGET_OUT)/etc/selinux
1401
1402include $(BUILD_SYSTEM)/base_rules.mk
1403
1404$(LOCAL_BUILT_MODULE): $(built_plat_cil) $(built_plat_mapping_cil)
1405 cat $^ | sha256sum | cut -d' ' -f1 > $@
1406
1407#################################
1408include $(CLEAR_VARS)
1409
Bowgo Tsai948934b2019-08-29 17:12:11 +08001410LOCAL_MODULE := system_ext_sepolicy_and_mapping.sha256
1411LOCAL_MODULE_CLASS := ETC
1412LOCAL_MODULE_TAGS := optional
1413LOCAL_MODULE_PATH = $(TARGET_OUT_SYSTEM_EXT)/etc/selinux
1414
1415include $(BUILD_SYSTEM)/base_rules.mk
1416
1417$(LOCAL_BUILT_MODULE): $(built_system_ext_cil) $(built_system_ext_mapping_cil)
1418 cat $^ | sha256sum | cut -d' ' -f1 > $@
1419
1420#################################
1421include $(CLEAR_VARS)
1422
Tri Vo1824e252019-01-22 18:07:58 -08001423LOCAL_MODULE := product_sepolicy_and_mapping.sha256
1424LOCAL_MODULE_CLASS := ETC
1425LOCAL_MODULE_TAGS := optional
1426LOCAL_MODULE_PATH = $(TARGET_OUT_PRODUCT)/etc/selinux
1427
1428include $(BUILD_SYSTEM)/base_rules.mk
1429
1430$(LOCAL_BUILT_MODULE): $(built_product_cil) $(built_product_mapping_cil)
1431 cat $^ | sha256sum | cut -d' ' -f1 > $@
1432
1433#################################
1434# SHA-256 digest of the plat_sepolicy.cil and plat_mapping_file against
Dan Cashman0e9c47c2017-04-04 14:27:41 -07001435# which precompiled_policy was built.
Alex Klyubin193dccd2017-03-07 14:05:57 -08001436#################################
1437include $(CLEAR_VARS)
Tri Vo1824e252019-01-22 18:07:58 -08001438LOCAL_MODULE := precompiled_sepolicy.plat_sepolicy_and_mapping.sha256
Alex Klyubin193dccd2017-03-07 14:05:57 -08001439LOCAL_MODULE_CLASS := ETC
1440LOCAL_MODULE_TAGS := optional
Bowgo Tsai45457e32017-11-27 11:41:33 +08001441
1442ifeq ($(BOARD_USES_ODMIMAGE),true)
1443LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1444else
Alex Klyubin193dccd2017-03-07 14:05:57 -08001445LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Bowgo Tsai45457e32017-11-27 11:41:33 +08001446endif
Alex Klyubin193dccd2017-03-07 14:05:57 -08001447
1448include $(BUILD_SYSTEM)/base_rules.mk
1449
Tri Vo1824e252019-01-22 18:07:58 -08001450$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(built_plat_cil) $(built_plat_mapping_cil)
1451$(LOCAL_BUILT_MODULE): $(built_precompiled_sepolicy) $(built_plat_cil) $(built_plat_mapping_cil)
1452 cat $(PRIVATE_CIL_FILES) | sha256sum | cut -d' ' -f1 > $@
1453
1454#################################
Bowgo Tsai948934b2019-08-29 17:12:11 +08001455# SHA-256 digest of the system_ext_sepolicy.cil and system_ext_mapping_file against
1456# which precompiled_policy was built.
1457#################################
1458include $(CLEAR_VARS)
1459LOCAL_MODULE := precompiled_sepolicy.system_ext_sepolicy_and_mapping.sha256
1460LOCAL_MODULE_CLASS := ETC
1461LOCAL_MODULE_TAGS := optional
1462
1463ifeq ($(BOARD_USES_ODMIMAGE),true)
1464LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1465else
1466LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1467endif
1468
1469include $(BUILD_SYSTEM)/base_rules.mk
1470
1471$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(built_system_ext_cil) $(built_system_ext_mapping_cil)
1472$(LOCAL_BUILT_MODULE): $(built_precompiled_sepolicy) $(built_system_ext_cil) $(built_system_ext_mapping_cil)
1473 cat $(PRIVATE_CIL_FILES) | sha256sum | cut -d' ' -f1 > $@
1474
1475#################################
Tri Vo1824e252019-01-22 18:07:58 -08001476# SHA-256 digest of the product_sepolicy.cil and product_mapping_file against
1477# which precompiled_policy was built.
1478#################################
1479include $(CLEAR_VARS)
1480LOCAL_MODULE := precompiled_sepolicy.product_sepolicy_and_mapping.sha256
1481LOCAL_MODULE_CLASS := ETC
1482LOCAL_MODULE_TAGS := optional
1483
1484ifeq ($(BOARD_USES_ODMIMAGE),true)
1485LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1486else
1487LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1488endif
1489
1490include $(BUILD_SYSTEM)/base_rules.mk
1491
1492$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(built_product_cil) $(built_product_mapping_cil)
1493$(LOCAL_BUILT_MODULE): $(built_precompiled_sepolicy) $(built_product_cil) $(built_product_mapping_cil)
Dan Cashman0e9c47c2017-04-04 14:27:41 -07001494 cat $(PRIVATE_CIL_FILES) | sha256sum | cut -d' ' -f1 > $@
Alex Klyubin193dccd2017-03-07 14:05:57 -08001495
1496#################################
1497include $(CLEAR_VARS)
Dan Cashman1c040272016-12-15 15:28:44 -08001498# build this target so that we can still perform neverallow checks
dcashman1faa6442016-11-28 07:20:28 -08001499
1500LOCAL_MODULE := sepolicy
1501LOCAL_MODULE_CLASS := ETC
1502LOCAL_MODULE_TAGS := optional
Daniel Cashman65d01342016-12-17 00:53:26 +00001503LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
dcashman2e00e632016-10-12 14:58:09 -07001504
dcashman1faa6442016-11-28 07:20:28 -08001505include $(BUILD_SYSTEM)/base_rules.mk
1506
dcashman2e00e632016-10-12 14:58:09 -07001507all_cil_files := \
Jeff Vander Stoepb8787692017-04-21 15:57:07 -07001508 $(built_plat_cil) \
Inseob Kim8ada8a72020-11-09 20:58:58 +09001509 $(TARGET_OUT)/etc/selinux/mapping/$(BOARD_SEPOLICY_VERS).cil \
1510 $(built_pub_vers_cil_$(BOARD_SEPOLICY_VERS)) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001511 $(built_vendor_cil)
dcashman2e00e632016-10-12 14:58:09 -07001512
Bowgo Tsai948934b2019-08-29 17:12:11 +08001513ifdef HAS_SYSTEM_EXT_SEPOLICY
Bowgo Tsaiac381252019-10-04 14:34:18 +08001514all_cil_files += $(built_system_ext_cil)
1515endif
Bowgo Tsai948934b2019-08-29 17:12:11 +08001516
Bowgo Tsaiac381252019-10-04 14:34:18 +08001517ifdef HAS_SYSTEM_EXT_PUBLIC_SEPOLICY
Inseob Kim8ada8a72020-11-09 20:58:58 +09001518all_cil_files += $(TARGET_OUT_SYSTEM_EXT)/etc/selinux/mapping/$(BOARD_SEPOLICY_VERS).cil
Bowgo Tsai948934b2019-08-29 17:12:11 +08001519endif
1520
Tri Vo75887dd2018-12-14 14:30:56 -08001521ifdef HAS_PRODUCT_SEPOLICY
Bowgo Tsai7c4150c2019-10-04 15:36:05 +08001522all_cil_files += $(built_product_cil)
1523endif
Tri Vo937e6642019-01-15 15:16:55 -08001524
Bowgo Tsai7c4150c2019-10-04 15:36:05 +08001525ifdef HAS_PRODUCT_PUBLIC_SEPOLICY
Inseob Kim8ada8a72020-11-09 20:58:58 +09001526all_cil_files += $(TARGET_OUT_PRODUCT)/etc/selinux/mapping/$(BOARD_SEPOLICY_VERS).cil
Tri Vo75887dd2018-12-14 14:30:56 -08001527endif
1528
Bowgo Tsai45457e32017-11-27 11:41:33 +08001529ifdef BOARD_ODM_SEPOLICY_DIRS
1530all_cil_files += $(built_odm_cil)
1531endif
1532
dcashman2e00e632016-10-12 14:58:09 -07001533$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
Inseob Kim8ada8a72020-11-09 20:58:58 +09001534# Neverallow checks are skipped in a mixed build target.
1535$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(if $(filter $(PLATFORM_SEPOLICY_VERSION),$(BOARD_SEPOLICY_VERS)),$(NEVERALLOW_ARG),-N)
Joel Galenson5988b562018-01-03 16:53:24 -08001536$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $(all_cil_files) \
1537$(built_sepolicy_neverallows)
dcashman2e00e632016-10-12 14:58:09 -07001538 @mkdir -p $(dir $@)
Joel Galenson5988b562018-01-03 16:53:24 -08001539 $(hide) $< -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) $(PRIVATE_CIL_FILES) -o $@.tmp -f /dev/null
Nick Kralevichbca98ef2016-02-26 20:06:52 -08001540 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp permissive > $@.permissivedomains
1541 $(hide) if [ "$(TARGET_BUILD_VARIANT)" = "user" -a -s $@.permissivedomains ]; then \
1542 echo "==========" 1>&2; \
1543 echo "ERROR: permissive domains not allowed in user builds" 1>&2; \
1544 echo "List of invalid domains:" 1>&2; \
1545 cat $@.permissivedomains 1>&2; \
1546 exit 1; \
1547 fi
1548 $(hide) mv $@.tmp $@
Ying Wang02fb5f32012-01-17 17:51:09 -08001549
Ying Wangd8b122c2012-10-25 19:01:31 -07001550built_sepolicy := $(LOCAL_BUILT_MODULE)
dcashman2e00e632016-10-12 14:58:09 -07001551all_cil_files :=
Stephen Smalley01a58af2012-10-02 12:46:37 -04001552
Alex Klyubin84aa7422017-03-10 09:36:07 -08001553#################################
1554include $(CLEAR_VARS)
1555
1556# keep concrete sepolicy for neverallow checks
Joel Galenson5988b562018-01-03 16:53:24 -08001557# If SELINUX_IGNORE_NEVERALLOWS is set, we use sed to remove the neverallow lines before compiling.
Alex Klyubin84aa7422017-03-10 09:36:07 -08001558
1559LOCAL_MODULE := sepolicy.recovery
Alex Klyubinec78c372017-03-10 12:44:16 -08001560LOCAL_MODULE_STEM := sepolicy
Alex Klyubin84aa7422017-03-10 09:36:07 -08001561LOCAL_MODULE_CLASS := ETC
1562LOCAL_MODULE_TAGS := optional
Alex Klyubinec78c372017-03-10 12:44:16 -08001563LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
Alex Klyubin84aa7422017-03-10 09:36:07 -08001564
1565include $(BUILD_SYSTEM)/base_rules.mk
1566
Inseob Kim8ada8a72020-11-09 20:58:58 +09001567# We use vendor version's policy files because recovery partition is vendor-owned.
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001568policy_files := $(call build_policy, $(sepolicy_build_files), \
Inseob Kim8ada8a72020-11-09 20:58:58 +09001569 $(plat_public_policy_$(BOARD_SEPOLICY_VERS)) $(plat_private_policy_$(BOARD_SEPOLICY_VERS)) \
1570 $(system_ext_public_policy_$(BOARD_SEPOLICY_VERS)) $(system_ext_private_policy_$(BOARD_SEPOLICY_VERS)) \
1571 $(product_public_policy_$(BOARD_SEPOLICY_VERS)) $(product_private_policy_$(BOARD_SEPOLICY_VERS)) \
1572 $(BOARD_PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
Dan Cashmanc8d45352017-04-11 07:38:48 -07001573sepolicy.recovery.conf := $(intermediates)/sepolicy.recovery.conf
1574$(sepolicy.recovery.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1575$(sepolicy.recovery.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -08001576$(sepolicy.recovery.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashmanc8d45352017-04-11 07:38:48 -07001577$(sepolicy.recovery.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1578$(sepolicy.recovery.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Pirama Arumuga Nainarce9c0c52019-06-13 15:05:15 -07001579$(sepolicy.recovery.conf): PRIVATE_TGT_WITH_NATIVE_COVERAGE := $(with_native_coverage)
Dan Cashmanc8d45352017-04-11 07:38:48 -07001580$(sepolicy.recovery.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Dan Cashman36ee91d2017-07-07 14:59:51 -07001581$(sepolicy.recovery.conf): PRIVATE_TGT_RECOVERY := -D target_recovery=true
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001582$(sepolicy.recovery.conf): PRIVATE_POLICY_FILES := $(policy_files)
1583$(sepolicy.recovery.conf): $(policy_files) $(M4)
Dan Cashman36ee91d2017-07-07 14:59:51 -07001584 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +08001585 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
1586
Joel Galenson5988b562018-01-03 16:53:24 -08001587ifeq ($(SELINUX_IGNORE_NEVERALLOWS),true)
1588 $(hide) sed -z 's/\n\s*neverallow[^;]*;/\n/g' $@ > $@.neverallow
1589 $(hide) mv $@.neverallow $@
1590endif
Dan Cashman1c040272016-12-15 15:28:44 -08001591
Dan Cashmanc8d45352017-04-11 07:38:48 -07001592$(LOCAL_BUILT_MODULE): $(sepolicy.recovery.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
1593 $(HOST_OUT_EXECUTABLES)/sepolicy-analyze
Dan Cashman1c040272016-12-15 15:28:44 -08001594 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -07001595 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c \
1596 $(POLICYVERS) -o $@.tmp $<
Nick Kralevichbca98ef2016-02-26 20:06:52 -08001597 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp permissive > $@.permissivedomains
1598 $(hide) if [ "$(TARGET_BUILD_VARIANT)" = "user" -a -s $@.permissivedomains ]; then \
1599 echo "==========" 1>&2; \
1600 echo "ERROR: permissive domains not allowed in user builds" 1>&2; \
1601 echo "List of invalid domains:" 1>&2; \
1602 cat $@.permissivedomains 1>&2; \
1603 exit 1; \
1604 fi
1605 $(hide) mv $@.tmp $@
Stephen Smalleye60723a2014-05-29 16:40:15 -04001606
Dan Cashmanc8d45352017-04-11 07:38:48 -07001607sepolicy.recovery.conf :=
Stephen Smalleye60723a2014-05-29 16:40:15 -04001608
dcashman704741a2014-07-25 19:11:52 -07001609##################################
Alex Klyubin446279a2017-04-06 14:45:50 -07001610# SELinux policy embedded into CTS.
1611# CTS checks neverallow rules of this policy against the policy of the device under test.
1612##################################
dcashman704741a2014-07-25 19:11:52 -07001613include $(CLEAR_VARS)
1614
1615LOCAL_MODULE := general_sepolicy.conf
1616LOCAL_MODULE_CLASS := ETC
1617LOCAL_MODULE_TAGS := tests
1618
1619include $(BUILD_SYSTEM)/base_rules.mk
1620
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001621policy_files := $(call build_policy, $(sepolicy_build_files), \
1622 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
dcashman704741a2014-07-25 19:11:52 -07001623$(LOCAL_BUILT_MODULE): PRIVATE_MLS_SENS := $(MLS_SENS)
1624$(LOCAL_BUILT_MODULE): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -08001625$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_BUILD_VARIANT := user
Dan Cashman1c040272016-12-15 15:28:44 -08001626$(LOCAL_BUILT_MODULE): PRIVATE_TGT_ARCH := $(my_target_arch)
Dan Cashman36ee91d2017-07-07 14:59:51 -07001627$(LOCAL_BUILT_MODULE): PRIVATE_WITH_ASAN := false
Steven Moreland763697d2017-11-09 11:24:56 -08001628$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_SPLIT := cts
Jaekyun Seok64ade652018-01-30 17:23:58 +09001629$(LOCAL_BUILT_MODULE): PRIVATE_COMPATIBLE_PROPERTY := cts
Inseob Kimed59c222019-09-26 15:14:55 +09001630$(LOCAL_BUILT_MODULE): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := cts
Inseob Kimafc09932020-09-28 13:32:43 +09001631$(LOCAL_BUILT_MODULE): PRIVATE_ENFORCE_SYSPROP_OWNER := cts
Tri Vo77c44fc2018-06-05 14:11:08 -07001632$(LOCAL_BUILT_MODULE): PRIVATE_EXCLUDE_BUILD_TEST := true
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001633$(LOCAL_BUILT_MODULE): PRIVATE_POLICY_FILES := $(policy_files)
1634$(LOCAL_BUILT_MODULE): $(policy_files) $(M4)
Dan Cashman36ee91d2017-07-07 14:59:51 -07001635 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +08001636 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
dcashman704741a2014-07-25 19:11:52 -07001637
William Robertsb8769932015-06-29 16:31:23 -07001638##################################
dcashmand225b692016-12-12 09:29:04 -08001639# TODO - remove this. Keep around until we get the filesystem creation stuff taken care of.
1640#
William Robertsb8769932015-06-29 16:31:23 -07001641include $(CLEAR_VARS)
1642
Richard Hainesc2d01912015-08-06 17:43:52 +01001643LOCAL_MODULE := file_contexts.bin
Ying Wang02fb5f32012-01-17 17:51:09 -08001644LOCAL_MODULE_CLASS := ETC
1645LOCAL_MODULE_TAGS := optional
1646LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
1647
Stephen Smalley5b340be2012-03-06 11:12:41 -05001648include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -08001649
William Roberts49693f12016-01-04 12:20:57 -08001650# The file_contexts.bin is built in the following way:
1651# 1. Collect all file_contexts files in THIS repository and process them with
1652# m4 into a tmp file called file_contexts.local.tmp.
Jooyung Han0606ce72020-09-23 19:16:10 +09001653# 2. Collect all file_contexts files from LOCAL_FILE_CONTEXTS of installed
1654# modules with m4 with a tmp file called file_contexts.modules.tmp.
1655# 3. Collect all device specific file_contexts files and process them with m4
William Roberts49693f12016-01-04 12:20:57 -08001656# into a tmp file called file_contexts.device.tmp.
Jooyung Han0606ce72020-09-23 19:16:10 +09001657# 4. Run checkfc -e (allow no device fc entries ie empty) and fc_sort on
William Roberts49693f12016-01-04 12:20:57 -08001658# file_contexts.device.tmp and output to file_contexts.device.sorted.tmp.
Jooyung Han0606ce72020-09-23 19:16:10 +09001659# 5. Concatenate file_contexts.local.tmp, file_contexts.modules.tmp and
Inseob Kim8ada8a72020-11-09 20:58:58 +09001660# file_contexts.device.sorted.tmp into file_contexts.concat.tmp.
Jooyung Han0606ce72020-09-23 19:16:10 +09001661# 6. Run checkfc and sefcontext_compile on file_contexts.concat.tmp to produce
William Roberts49693f12016-01-04 12:20:57 -08001662# file_contexts.bin.
1663#
1664# Note: That a newline file is placed between each file_context file found to
1665# ensure a proper build when an fc file is missing an ending newline.
William Roberts29d14682016-01-04 12:20:57 -08001666
Dan Cashman1b0a71f2017-05-08 14:26:52 -07001667local_fc_files := $(call build_policy, file_contexts, $(PLAT_PRIVATE_POLICY))
1668
Bowgo Tsaiac381252019-10-04 14:34:18 +08001669ifdef HAS_SYSTEM_EXT_SEPOLICY_DIR
Bowgo Tsai86a048d2019-09-09 22:04:06 +08001670local_fc_files += $(call build_policy, file_contexts, $(SYSTEM_EXT_PRIVATE_POLICY))
1671endif
1672
Bowgo Tsai7c4150c2019-10-04 15:36:05 +08001673ifdef HAS_PRODUCT_SEPOLICY_DIR
Tri Vo75887dd2018-12-14 14:30:56 -08001674local_fc_files += $(call build_policy, file_contexts, $(PRODUCT_PRIVATE_POLICY))
1675endif
1676
William Roberts49693f12016-01-04 12:20:57 -08001677ifneq ($(filter address,$(SANITIZE_TARGET)),)
Mark Salyzyn9b398f32018-06-13 08:02:29 -07001678 local_fc_files += $(wildcard $(addsuffix /file_contexts_asan, $(PLAT_PRIVATE_POLICY)))
1679endif
1680ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
1681 local_fc_files += $(wildcard $(addsuffix /file_contexts_overlayfs, $(PLAT_PRIVATE_POLICY)))
William Roberts49693f12016-01-04 12:20:57 -08001682endif
Jooyung Hana9324742019-11-20 17:54:34 +09001683
William Roberts49693f12016-01-04 12:20:57 -08001684file_contexts.local.tmp := $(intermediates)/file_contexts.local.tmp
Jooyung Han0606ce72020-09-23 19:16:10 +09001685$(call merge-fc-files,$(local_fc_files),$(file_contexts.local.tmp))
1686
1687# The rule for file_contexts.modules.tmp is defined in build/make/core/Makefile.
1688# it gathers LOCAL_FILE_CONTEXTS from product_MODULES
1689file_contexts.modules.tmp := $(intermediates)/file_contexts.modules.tmp
William Roberts49693f12016-01-04 12:20:57 -08001690
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001691device_fc_files := $(call build_vendor_policy, file_contexts)
Bowgo Tsaibae15172017-11-29 16:14:53 +08001692
1693ifdef BOARD_ODM_SEPOLICY_DIRS
1694device_fc_files += $(call build_odm_policy, file_contexts)
1695endif
1696
William Roberts49693f12016-01-04 12:20:57 -08001697file_contexts.device.tmp := $(intermediates)/file_contexts.device.tmp
1698$(file_contexts.device.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001699$(file_contexts.device.tmp): PRIVATE_DEVICE_FC_FILES := $(device_fc_files)
1700$(file_contexts.device.tmp): $(device_fc_files) $(M4)
William Roberts49693f12016-01-04 12:20:57 -08001701 @mkdir -p $(dir $@)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001702 $(hide) $(M4) --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_DEVICE_FC_FILES) > $@
William Roberts49693f12016-01-04 12:20:57 -08001703
1704file_contexts.device.sorted.tmp := $(intermediates)/file_contexts.device.sorted.tmp
1705$(file_contexts.device.sorted.tmp): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001706$(file_contexts.device.sorted.tmp): $(file_contexts.device.tmp) $(built_sepolicy) \
1707 $(HOST_OUT_EXECUTABLES)/fc_sort $(HOST_OUT_EXECUTABLES)/checkfc
William Roberts49693f12016-01-04 12:20:57 -08001708 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -08001709 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e $(PRIVATE_SEPOLICY) $<
Jeff Vander Stoep1ca7a4c2019-04-10 16:53:17 -07001710 $(hide) $(HOST_OUT_EXECUTABLES)/fc_sort -i $< -o $@
William Roberts49693f12016-01-04 12:20:57 -08001711
1712file_contexts.concat.tmp := $(intermediates)/file_contexts.concat.tmp
Jooyung Han0606ce72020-09-23 19:16:10 +09001713$(call merge-fc-files,\
1714 $(file_contexts.local.tmp) $(file_contexts.modules.tmp) $(file_contexts.device.sorted.tmp),\
1715 $(file_contexts.concat.tmp))
Stephen Smalley5b340be2012-03-06 11:12:41 -05001716
William Roberts3746a0a2015-09-25 10:18:44 -07001717$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
William Roberts49693f12016-01-04 12:20:57 -08001718$(LOCAL_BUILT_MODULE): $(file_contexts.concat.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/sefcontext_compile $(HOST_OUT_EXECUTABLES)/checkfc
Richard Hainesc2d01912015-08-06 17:43:52 +01001719 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -08001720 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc $(PRIVATE_SEPOLICY) $<
Richard Hainesc2d01912015-08-06 17:43:52 +01001721 $(hide) $(HOST_OUT_EXECUTABLES)/sefcontext_compile -o $@ $<
1722
Robert Craig8b7545b2014-03-20 09:35:08 -04001723built_fc := $(LOCAL_BUILT_MODULE)
William Roberts49693f12016-01-04 12:20:57 -08001724local_fc_files :=
1725local_fcfiles_with_nl :=
1726device_fc_files :=
1727device_fcfiles_with_nl :=
1728file_contexts.concat.tmp :=
1729file_contexts.device.sorted.tmp :=
1730file_contexts.device.tmp :=
1731file_contexts.local.tmp :=
Jooyung Han0606ce72020-09-23 19:16:10 +09001732file_contexts.modules.tmp :=
William Roberts171a0622012-08-16 10:55:05 -07001733
Ying Wang02fb5f32012-01-17 17:51:09 -08001734##################################
Dan Cashman91d398d2017-09-26 12:58:29 -07001735include $(CLEAR_VARS)
1736
1737LOCAL_MODULE := selinux_denial_metadata
1738LOCAL_MODULE_CLASS := ETC
Tri Vo4eb68152019-01-23 09:47:05 -08001739LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Dan Cashman91d398d2017-09-26 12:58:29 -07001740
1741include $(BUILD_SYSTEM)/base_rules.mk
1742
Tri Vofd3c3e22019-06-06 17:09:29 -07001743bug_files := $(call build_policy, bug_map, $(LOCAL_PATH) $(PLAT_PRIVATE_POLICY) $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(PLAT_PUBLIC_POLICY))
Dan Cashman91d398d2017-09-26 12:58:29 -07001744
1745$(LOCAL_BUILT_MODULE) : $(bug_files)
1746 @mkdir -p $(dir $@)
1747 cat $^ > $@
1748
1749bug_files :=
dcashmand225b692016-12-12 09:29:04 -08001750
1751##################################
Tri Vo8b3016b2019-01-07 16:43:31 -08001752include $(LOCAL_PATH)/seapp_contexts.mk
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001753
1754##################################
Inseob Kimb554e592019-04-15 20:10:46 +09001755include $(LOCAL_PATH)/contexts_tests.mk
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001756
1757##################################
1758include $(CLEAR_VARS)
1759
Martijn Coenen6676c232017-03-31 17:29:53 -07001760LOCAL_MODULE := vndservice_contexts
1761LOCAL_MODULE_CLASS := ETC
1762LOCAL_MODULE_TAGS := optional
Martijn Coenen6676c232017-03-31 17:29:53 -07001763LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Martijn Coenen6676c232017-03-31 17:29:53 -07001764
1765include $(BUILD_SYSTEM)/base_rules.mk
1766
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001767vnd_svcfiles := $(call build_policy, vndservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Martijn Coenen6676c232017-03-31 17:29:53 -07001768
1769vndservice_contexts.tmp := $(intermediates)/vndservice_contexts.tmp
1770$(vndservice_contexts.tmp): PRIVATE_SVC_FILES := $(vnd_svcfiles)
1771$(vndservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001772$(vndservice_contexts.tmp): $(vnd_svcfiles) $(M4)
Martijn Coenen6676c232017-03-31 17:29:53 -07001773 @mkdir -p $(dir $@)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001774 $(hide) $(M4) --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Martijn Coenen6676c232017-03-31 17:29:53 -07001775
1776$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1777$(LOCAL_BUILT_MODULE): $(vndservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
1778 @mkdir -p $(dir $@)
1779 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
Martijn Coenenee976622017-04-07 10:08:55 -07001780 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -v $(PRIVATE_SEPOLICY) $@
Martijn Coenen6676c232017-03-31 17:29:53 -07001781
1782vnd_svcfiles :=
1783vndservice_contexts.tmp :=
dcashman90b3b942016-12-14 13:47:55 -08001784
1785##################################
Tri Vo8b3016b2019-01-07 16:43:31 -08001786include $(LOCAL_PATH)/mac_permissions.mk
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +08001787
Dan Cashman91d398d2017-09-26 12:58:29 -07001788#################################
1789include $(CLEAR_VARS)
1790LOCAL_MODULE := sepolicy_tests
Jooyung Han749cf932019-05-30 01:05:43 +09001791LOCAL_MODULE_CLASS := FAKE
1792LOCAL_MODULE_TAGS := optional
Dan Cashman91d398d2017-09-26 12:58:29 -07001793
1794include $(BUILD_SYSTEM)/base_rules.mk
1795
Inseob Kimb554e592019-04-15 20:10:46 +09001796all_fc_files := $(TARGET_OUT)/etc/selinux/plat_file_contexts
1797all_fc_files += $(TARGET_OUT_VENDOR)/etc/selinux/vendor_file_contexts
Bowgo Tsaiac381252019-10-04 14:34:18 +08001798ifdef HAS_SYSTEM_EXT_SEPOLICY_DIR
Bowgo Tsai86a048d2019-09-09 22:04:06 +08001799all_fc_files += $(TARGET_OUT_SYSTEM_EXT)/etc/selinux/system_ext_file_contexts
1800endif
Bowgo Tsai7c4150c2019-10-04 15:36:05 +08001801ifdef HAS_PRODUCT_SEPOLICY_DIR
Inseob Kimb554e592019-04-15 20:10:46 +09001802all_fc_files += $(TARGET_OUT_PRODUCT)/etc/selinux/product_file_contexts
Tri Vo3361ec42018-12-18 19:51:19 -08001803endif
Bowgo Tsaibae15172017-11-29 16:14:53 +08001804ifdef BOARD_ODM_SEPOLICY_DIRS
Inseob Kimb554e592019-04-15 20:10:46 +09001805all_fc_files += $(TARGET_OUT_ODM)/etc/selinux/odm_file_contexts
Bowgo Tsaibae15172017-11-29 16:14:53 +08001806endif
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001807all_fc_args := $(foreach file, $(all_fc_files), -f $(file))
1808
Jooyung Han749cf932019-05-30 01:05:43 +09001809$(LOCAL_BUILT_MODULE): ALL_FC_ARGS := $(all_fc_args)
1810$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1811$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/sepolicy_tests $(all_fc_files) $(built_sepolicy)
Dan Cashman91d398d2017-09-26 12:58:29 -07001812 @mkdir -p $(dir $@)
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -07001813 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy_tests -l $(HOST_OUT)/lib64/libsepolwrap.$(SHAREDLIB_EXT) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001814 $(ALL_FC_ARGS) -p $(PRIVATE_SEPOLICY)
Dan Cashman91d398d2017-09-26 12:58:29 -07001815 $(hide) touch $@
1816
rpcraigb19665c2012-07-30 09:33:03 -04001817##################################
Tri Vo14069262018-01-31 16:22:35 -08001818intermediates := $(call intermediates-dir-for,ETC,built_plat_sepolicy,,,,)
Dan Cashman91d398d2017-09-26 12:58:29 -07001819
1820# plat_sepolicy - the current platform policy only, built into a policy binary.
1821# TODO - this currently excludes partner extensions, but support should be added
1822# to enable partners to add their own compatibility mapping
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001823policy_files := $(call build_policy, $(sepolicy_build_files), \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001824 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
Dan Cashman91d398d2017-09-26 12:58:29 -07001825base_plat_policy.conf := $(intermediates)/base_plat_policy.conf
1826$(base_plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1827$(base_plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galensonc1486212018-03-23 12:40:26 -07001828$(base_plat_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
Dan Cashman91d398d2017-09-26 12:58:29 -07001829$(base_plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1830$(base_plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
1831$(base_plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -08001832$(base_plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := true
Jaekyun Seoke4971452017-10-19 16:54:49 +09001833$(base_plat_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +09001834$(base_plat_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +09001835$(base_plat_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001836$(base_plat_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
1837$(base_plat_policy.conf): $(policy_files) $(M4)
Dan Cashman91d398d2017-09-26 12:58:29 -07001838 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +08001839 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Dan Cashman91d398d2017-09-26 12:58:29 -07001840
1841built_plat_sepolicy := $(intermediates)/built_plat_sepolicy
1842$(built_plat_sepolicy): PRIVATE_ADDITIONAL_CIL_FILES := \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001843 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY))
Joel Galenson5988b562018-01-03 16:53:24 -08001844$(built_plat_sepolicy): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Dan Cashman91d398d2017-09-26 12:58:29 -07001845$(built_plat_sepolicy): $(base_plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
1846$(HOST_OUT_EXECUTABLES)/secilc \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001847$(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY)) \
Joel Galenson5988b562018-01-03 16:53:24 -08001848$(built_sepolicy_neverallows)
Dan Cashman91d398d2017-09-26 12:58:29 -07001849 @mkdir -p $(dir $@)
1850 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
1851 $(POLICYVERS) -o $@ $<
1852 $(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@
Joel Galenson5988b562018-01-03 16:53:24 -08001853 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) $@ -o $@ -f /dev/null
Dan Cashman91d398d2017-09-26 12:58:29 -07001854
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001855policy_files := $(call build_policy, $(sepolicy_build_files), \
Bowgo Tsai948934b2019-08-29 17:12:11 +08001856 $(PLAT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
Tri Voe3f4f772018-09-28 17:21:08 -07001857base_plat_pub_policy.conf := $(intermediates)/base_plat_pub_policy.conf
1858$(base_plat_pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1859$(base_plat_pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
1860$(base_plat_pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
1861$(base_plat_pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1862$(base_plat_pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
1863$(base_plat_pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1864$(base_plat_pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := true
1865$(base_plat_pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Inseob Kimed59c222019-09-26 15:14:55 +09001866$(base_plat_pub_policy.conf): PRIVATE_TREBLE_SYSPROP_NEVERALLOW := $(treble_sysprop_neverallow)
Inseob Kimafc09932020-09-28 13:32:43 +09001867$(base_plat_pub_policy.conf): PRIVATE_ENFORCE_SYSPROP_OWNER := $(enforce_sysprop_owner)
Dan Willemsen3c3e59b2019-06-19 10:52:50 -07001868$(base_plat_pub_policy.conf): PRIVATE_POLICY_FILES := $(policy_files)
1869$(base_plat_pub_policy.conf): $(policy_files) $(M4)
Tri Voe3f4f772018-09-28 17:21:08 -07001870 $(transform-policy-to-conf)
1871
1872base_plat_pub_policy.cil := $(intermediates)/base_plat_pub_policy.cil
1873$(base_plat_pub_policy.cil): PRIVATE_POL_CONF := $(base_plat_pub_policy.conf)
1874$(base_plat_pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
Tri Vod57789f2018-12-17 16:35:41 -08001875$(base_plat_pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
1876$(HOST_OUT_EXECUTABLES)/build_sepolicy $(base_plat_pub_policy.conf) $(reqd_policy_mask.cil)
Tri Voe3f4f772018-09-28 17:21:08 -07001877 @mkdir -p $(dir $@)
Tri Vod57789f2018-12-17 16:35:41 -08001878 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
1879 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
1880 -f $(PRIVATE_REQD_MASK) -t $@
Tri Voe3f4f772018-09-28 17:21:08 -07001881
Steven Moreland1cb64c42019-09-20 11:16:29 -07001882ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Tri Vo14069262018-01-31 16:22:35 -08001883# Tests for Treble compatibility of current platform policy and vendor policy of
1884# given release version.
1885version_under_treble_tests := 26.0
1886include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
Tri Vo9299d932018-01-31 16:50:28 -08001887version_under_treble_tests := 27.0
1888include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
Jae Shin1fa96342018-07-11 18:30:44 +09001889version_under_treble_tests := 28.0
1890include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
Tri Vo50aa0292019-06-01 17:04:13 -07001891version_under_treble_tests := 29.0
1892include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
Inseob Kimace36ab2020-05-07 20:19:05 +09001893version_under_treble_tests := 30.0
1894include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
Steven Moreland1cb64c42019-09-20 11:16:29 -07001895endif # PRODUCT_SEPOLICY_SPLIT
Jae Shin1fa96342018-07-11 18:30:44 +09001896
Jeff Vander Stoep564e2922019-05-02 13:48:44 -07001897version_under_treble_tests := 26.0
1898include $(LOCAL_PATH)/compat.mk
1899version_under_treble_tests := 27.0
1900include $(LOCAL_PATH)/compat.mk
1901version_under_treble_tests := 28.0
1902include $(LOCAL_PATH)/compat.mk
Tri Vo50aa0292019-06-01 17:04:13 -07001903version_under_treble_tests := 29.0
1904include $(LOCAL_PATH)/compat.mk
Inseob Kimace36ab2020-05-07 20:19:05 +09001905version_under_treble_tests := 30.0
1906include $(LOCAL_PATH)/compat.mk
Jeff Vander Stoep564e2922019-05-02 13:48:44 -07001907
Dan Cashman91d398d2017-09-26 12:58:29 -07001908base_plat_policy.conf :=
Tri Voe3f4f772018-09-28 17:21:08 -07001909base_plat_pub_policy.conf :=
Dan Cashman91d398d2017-09-26 12:58:29 -07001910plat_sepolicy :=
Inseob Kimb554e592019-04-15 20:10:46 +09001911all_fc_files :=
1912all_fc_args :=
Dan Cashman91d398d2017-09-26 12:58:29 -07001913
Jeff Vander Stoep1fc06822017-05-31 15:36:07 -07001914#################################
Tri Vo81198bb2018-03-15 11:38:08 -07001915include $(CLEAR_VARS)
1916LOCAL_MODULE := sepolicy_freeze_test
Jooyung Han749cf932019-05-30 01:05:43 +09001917LOCAL_MODULE_CLASS := FAKE
1918LOCAL_MODULE_TAGS := optional
Tri Vo81198bb2018-03-15 11:38:08 -07001919
1920include $(BUILD_SYSTEM)/base_rules.mk
1921
Yiming Jingd4103ee2020-10-08 14:39:42 -07001922define ziplist
1923$(if $(and $1,$2), "$(firstword $1) $(firstword $2)"\
1924 $(call ziplist,$(wordlist 2,$(words $1),$1),$(wordlist 2,$(words $2),$2)))
1925endef
1926
Tri Vo81198bb2018-03-15 11:38:08 -07001927base_plat_public := $(LOCAL_PATH)/public
1928base_plat_private := $(LOCAL_PATH)/private
1929base_plat_public_prebuilt := \
1930 $(LOCAL_PATH)/prebuilts/api/$(PLATFORM_SEPOLICY_VERSION)/public
1931base_plat_private_prebuilt := \
1932 $(LOCAL_PATH)/prebuilts/api/$(PLATFORM_SEPOLICY_VERSION)/private
1933
1934all_frozen_files := $(call build_policy,$(sepolicy_build_files), \
1935$(base_plat_public) $(base_plat_private) $(base_plat_public_prebuilt) $(base_plat_private_prebuilt))
1936
1937$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PUBLIC := $(base_plat_public)
1938$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PRIVATE := $(base_plat_private)
1939$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PUBLIC_PREBUILT := $(base_plat_public_prebuilt)
1940$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PRIVATE_PREBUILT := $(base_plat_private_prebuilt)
Yiming Jingd4103ee2020-10-08 14:39:42 -07001941$(LOCAL_BUILT_MODULE): PRIVATE_EXTRA := $(sort $(FREEZE_TEST_EXTRA_DIRS))
1942$(LOCAL_BUILT_MODULE): PRIVATE_EXTRA_PREBUILT := $(sort $(FREEZE_TEST_EXTRA_PREBUILT_DIRS))
Tri Vo81198bb2018-03-15 11:38:08 -07001943$(LOCAL_BUILT_MODULE): $(all_frozen_files)
1944ifneq ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
Joel Galenson98f83b62018-05-22 09:22:41 -07001945 @diff -rq -x bug_map $(PRIVATE_BASE_PLAT_PUBLIC_PREBUILT) $(PRIVATE_BASE_PLAT_PUBLIC)
1946 @diff -rq -x bug_map $(PRIVATE_BASE_PLAT_PRIVATE_PREBUILT) $(PRIVATE_BASE_PLAT_PRIVATE)
Yiming Jingd4103ee2020-10-08 14:39:42 -07001947ifneq (,$(FREEZE_TEST_EXTRA_DIRS)$(FREEZE_TEST_EXTRA_PREBUILT_DIRS))
1948 @for pair in $(call ziplist, $(PRIVATE_EXTRA_PREBUILT), $(PRIVATE_EXTRA)); \
1949 do diff -rq -x bug_map $$pair; done
1950endif # (,$(FREEZE_TEST_EXTRA_DIRS)$(FREEZE_TEST_EXTRA_PREBUILT_DIRS))
Tri Vo81198bb2018-03-15 11:38:08 -07001951endif # ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
1952 $(hide) touch $@
1953
1954base_plat_public :=
1955base_plat_private :=
1956base_plat_public_prebuilt :=
1957base_plat_private_prebuilt :=
1958all_frozen_files :=
1959
1960#################################
1961
rpcraig47cd3962012-10-17 21:09:52 -04001962
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001963build_vendor_policy :=
Bowgo Tsaibae15172017-11-29 16:14:53 +08001964build_odm_policy :=
Dan Cashman1c040272016-12-15 15:28:44 -08001965build_policy :=
Alex Klyubin8f7173b2017-02-25 14:47:53 -08001966built_plat_cil :=
Bowgo Tsai948934b2019-08-29 17:12:11 +08001967built_system_ext_cil :=
1968built_product_cil :=
Tri Voe68ba592019-01-15 13:31:03 -08001969built_pub_vers_cil :=
Tri Vo937e6642019-01-15 15:16:55 -08001970built_plat_mapping_cil :=
Bowgo Tsai948934b2019-08-29 17:12:11 +08001971built_system_ext_mapping_cil :=
Tri Vo937e6642019-01-15 15:16:55 -08001972built_product_mapping_cil :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001973built_vendor_cil :=
Bowgo Tsai45457e32017-11-27 11:41:33 +08001974built_odm_cil :=
Alex Klyubin193dccd2017-03-07 14:05:57 -08001975built_precompiled_sepolicy :=
Dan Cashman1c040272016-12-15 15:28:44 -08001976built_sepolicy :=
Joel Galenson5988b562018-01-03 16:53:24 -08001977built_sepolicy_neverallows :=
Sandeep Patila058b562016-12-27 15:10:48 -08001978built_plat_svc :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001979built_vendor_svc :=
Joel Galensonc1486212018-03-23 12:40:26 -07001980built_plat_sepolicy :=
Inseob Kimed59c222019-09-26 15:14:55 +09001981treble_sysprop_neverallow :=
Inseob Kimafc09932020-09-28 13:32:43 +09001982enforce_sysprop_owner :=
Jeff Vander Stoepb8787692017-04-21 15:57:07 -07001983mapping_policy :=
Dan Cashman1c040272016-12-15 15:28:44 -08001984my_target_arch :=
Tri Voe68ba592019-01-15 13:31:03 -08001985pub_policy.cil :=
Bowgo Tsai948934b2019-08-29 17:12:11 +08001986system_ext_pub_policy.cil :=
1987plat_pub_policy.cil :=
dcashman1faa6442016-11-28 07:20:28 -08001988reqd_policy_mask.cil :=
Dan Cashman1c040272016-12-15 15:28:44 -08001989sepolicy_build_files :=
Alex Klyubin7cda44f2017-03-21 14:28:53 -07001990sepolicy_build_cil_workaround_files :=
Jeff Vander Stoep74434842017-03-13 12:22:15 -07001991with_asan :=
Alice Chucdfb06f2012-11-01 11:33:04 -07001992
1993include $(call all-makefiles-under,$(LOCAL_PATH))