blob: be1fd72d169d591697e3098ea4f756bfd2e14ef0 [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
4
Stephen Smalley2dd4e512012-01-04 12:33:27 -05005include $(CLEAR_VARS)
Stephen Smalley2dd4e512012-01-04 12:33:27 -05006# SELinux policy version.
Stephen Smalleyb4f17062015-03-13 10:03:52 -04007# Must be <= /sys/fs/selinux/policyvers reported by the Android kernel.
Stephen Smalley2dd4e512012-01-04 12:33:27 -05008# Must be within the compatibility range reported by checkpolicy -V.
Jeff Vander Stoep3a0ce492015-12-07 08:30:43 -08009POLICYVERS ?= 30
Stephen Smalley2dd4e512012-01-04 12:33:27 -050010
11MLS_SENS=1
12MLS_CATS=1024
13
Stephen Smalley8e0ca882015-04-01 10:14:56 -040014ifdef BOARD_SEPOLICY_UNION
15$(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.)
16endif
Robert Craig6b0ff472014-01-29 13:10:58 -050017
William Robertsd2185582015-07-16 11:28:02 -070018ifdef BOARD_SEPOLICY_M4DEFS
19LOCAL_ADDITIONAL_M4DEFS := $(addprefix -D, $(BOARD_SEPOLICY_M4DEFS))
Dan Cashman36ee91d2017-07-07 14:59:51 -070020else
21LOCAL_ADDITIONAL_M4DEFS :=
William Robertsd2185582015-07-16 11:28:02 -070022endif
23
dcashmancc39f632016-07-22 13:13:11 -070024# sepolicy is now divided into multiple portions:
25# public - policy exported on which non-platform policy developers may write
26# additional policy. types and attributes are versioned and included in
27# delivered non-platform policy, which is to be combined with platform policy.
28# private - platform-only policy required for platform functionality but which
29# is not exported to vendor policy developers and as such may not be assumed
30# to exist.
Alex Klyubin55961722017-01-30 18:44:59 -080031# vendor - vendor-only policy required for vendor functionality. This policy can
32# reference the public policy but cannot reference the private policy. This
33# policy is for components which are produced from the core/non-vendor tree and
34# placed into a vendor partition.
dcashman07791552016-12-07 11:27:47 -080035# mapping - This contains policy statements which map the attributes
dcashmancc39f632016-07-22 13:13:11 -070036# exposed in the public policy of previous versions to the concrete types used
37# in this policy to ensure that policy targeting attributes from public
38# policy from an older platform version continues to work.
39
dcashman2e00e632016-10-12 14:58:09 -070040# build process for device:
dcashmancc39f632016-07-22 13:13:11 -070041# 1) convert policies to CIL:
42# - private + public platform policy to CIL
43# - mapping file to CIL (should already be in CIL form)
44# - non-platform public policy to CIL
45# - non-platform public + private policy to CIL
46# 2) attributize policy
dcashmancc39f632016-07-22 13:13:11 -070047# - run script which takes non-platform public and non-platform combined
48# private + public policy and produces attributized and versioned
49# non-platform policy
50# 3) combine policy files
51# - combine mapping, platform and non-platform policy.
52# - compile output binary policy file
53
54PLAT_PUBLIC_POLICY := $(LOCAL_PATH)/public
55PLAT_PRIVATE_POLICY := $(LOCAL_PATH)/private
Alex Klyubin55961722017-01-30 18:44:59 -080056PLAT_VENDOR_POLICY := $(LOCAL_PATH)/vendor
dcashman2e00e632016-10-12 14:58:09 -070057REQD_MASK_POLICY := $(LOCAL_PATH)/reqd_mask
Tri Vo75887dd2018-12-14 14:30:56 -080058PRODUCT_PUBLIC_POLICY := $(BOARD_PLAT_PUBLIC_SEPOLICY_DIR)
59PRODUCT_PRIVATE_POLICY := $(BOARD_PLAT_PRIVATE_SEPOLICY_DIR)
60
61# TODO(b/119305624): Currently if the device doesn't have a product partition,
62# we install product sepolicy into /system/product. We do that because bits of
63# product sepolicy that's still in /system might depend on bits that have moved
64# to /product. Once we finish migrating product sepolicy out of system, change
65# it so that if no product partition is present, product sepolicy artifacts are
66# not built and installed at all.
67ifneq (,$(PRODUCT_PUBLIC_POLICY)$(PRODUCT_PRIVATE_POLICY))
68HAS_PRODUCT_SEPOLICY := true
69endif
dcashman2e00e632016-10-12 14:58:09 -070070
71# TODO: move to README when doing the README update and finalizing versioning.
Sandeep Patil42f95982017-04-07 14:18:48 -070072# BOARD_SEPOLICY_VERS must take the format "NN.m" and contain the sepolicy
73# version identifier corresponding to the sepolicy on which the non-platform
74# policy is to be based. If unspecified, this will build against the current
75# public platform policy in tree
dcashman2e00e632016-10-12 14:58:09 -070076ifndef BOARD_SEPOLICY_VERS
77$(warning BOARD_SEPOLICY_VERS not specified, assuming current platform version)
Sandeep Patil42f95982017-04-07 14:18:48 -070078# The default platform policy version.
Dan Cashman6f14f6b2017-04-07 16:36:23 -070079BOARD_SEPOLICY_VERS := $(PLATFORM_SEPOLICY_VERSION)
dcashman2e00e632016-10-12 14:58:09 -070080endif
dcashmancc39f632016-07-22 13:13:11 -070081
Joel Galenson5988b562018-01-03 16:53:24 -080082NEVERALLOW_ARG :=
83ifeq ($(SELINUX_IGNORE_NEVERALLOWS),true)
84ifeq ($(TARGET_BUILD_VARIANT),user)
85$(error SELINUX_IGNORE_NEVERALLOWS := true cannot be used in user builds)
86endif
87$(warning Be careful when using the SELINUX_IGNORE_NEVERALLOWS flag. \
88 It does not work in user builds and using it will \
89 not stop you from failing CTS.)
90NEVERALLOW_ARG := -N
91endif
92
Bowgo Tsai45457e32017-11-27 11:41:33 +080093# BOARD_SEPOLICY_DIRS was used for vendor/odm sepolicy customization before.
94# It has been replaced by BOARD_VENDOR_SEPOLICY_DIRS (mandatory) and
95# BOARD_ODM_SEPOLICY_DIRS (optional). BOARD_SEPOLICY_DIRS is still allowed for
96# backward compatibility, which will be merged into BOARD_VENDOR_SEPOLICY_DIRS.
Bowgo Tsaiafbcf212018-02-05 17:34:52 +080097ifdef BOARD_SEPOLICY_DIRS
98BOARD_VENDOR_SEPOLICY_DIRS += $(BOARD_SEPOLICY_DIRS)
99endif
Dan Cashman4d24a772017-04-12 14:28:34 -0700100
Bowgo Tsai45457e32017-11-27 11:41:33 +0800101ifdef BOARD_ODM_SEPOLICY_DIRS
102ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
103$(error PRODUCT_SEPOLICY_SPLIT needs to be true when using BOARD_ODM_SEPOLICY_DIRS)
104endif
105endif
106
Dan Cashman4d24a772017-04-12 14:28:34 -0700107platform_mapping_file := $(BOARD_SEPOLICY_VERS).cil
108
dcashmancc39f632016-07-22 13:13:11 -0700109###########################################################
110# Compute policy files to be used in policy build.
111# $(1): files to include
112# $(2): directories in which to find files
113###########################################################
114
115define build_policy
116$(foreach type, $(1), $(foreach file, $(addsuffix /$(type), $(2)), $(sort $(wildcard $(file)))))
117endef
William Roberts29d14682016-01-04 12:20:57 -0800118
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800119# Builds paths for all policy files found in BOARD_VENDOR_SEPOLICY_DIRS.
William Roberts49693f12016-01-04 12:20:57 -0800120# $(1): the set of policy name paths to build
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800121build_vendor_policy = $(call build_policy, $(1), $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS))
William Roberts49693f12016-01-04 12:20:57 -0800122
Bowgo Tsaibae15172017-11-29 16:14:53 +0800123# Builds paths for all policy files found in BOARD_ODM_SEPOLICY_DIRS.
124build_odm_policy = $(call build_policy, $(1), $(BOARD_ODM_SEPOLICY_DIRS))
125
Richard Hainesc8801fe2015-12-11 10:39:19 +0000126# Add a file containing only a newline in-between each policy configuration
127# 'contexts' file. This will allow OEM policy configuration files without a
128# final newline (0x0A) to be built correctly by the m4(1) macro processor.
129# $(1): the set of contexts file names.
130# $(2): the file containing only 0x0A.
131add_nl = $(foreach entry, $(1), $(subst $(entry), $(entry) $(2), $(entry)))
132
dcashman704741a2014-07-25 19:11:52 -0700133sepolicy_build_files := security_classes \
134 initial_sids \
135 access_vectors \
136 global_macros \
Nick Kralevicha17a2662014-11-05 15:30:41 -0800137 neverallow_macros \
dcashman704741a2014-07-25 19:11:52 -0700138 mls_macros \
dcashman2e00e632016-10-12 14:58:09 -0700139 mls_decl \
dcashman704741a2014-07-25 19:11:52 -0700140 mls \
141 policy_capabilities \
142 te_macros \
143 attributes \
Jeff Vander Stoepcbaa2b72015-12-22 10:39:34 -0800144 ioctl_defines \
Jeff Vander Stoepde9b5302015-06-05 15:28:55 -0700145 ioctl_macros \
dcashman704741a2014-07-25 19:11:52 -0700146 *.te \
dcashman2e00e632016-10-12 14:58:09 -0700147 roles_decl \
dcashman704741a2014-07-25 19:11:52 -0700148 roles \
149 users \
150 initial_sid_contexts \
151 fs_use \
152 genfs_contexts \
153 port_contexts
154
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700155# CIL files which contain workarounds for current limitation of human-readable
156# module policy language. These files are appended to the CIL files produced
157# from module language files.
158sepolicy_build_cil_workaround_files := technical_debt.cil
159
Dan Cashman1c040272016-12-15 15:28:44 -0800160my_target_arch := $(TARGET_ARCH)
161ifneq (,$(filter mips mips64,$(TARGET_ARCH)))
162 my_target_arch := mips
163endif
164
Jeff Vander Stoepd2053bd2017-03-15 13:37:35 -0700165intermediates := $(TARGET_OUT_INTERMEDIATES)/ETC/sepolicy_intermediates
166
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700167with_asan := false
168ifneq (,$(filter address,$(SANITIZE_TARGET)))
169 with_asan := true
170endif
171
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -0700172# Library extension for host-side tests
Jeff Vander Stoepe06e4c12017-10-04 18:15:44 -0700173ifeq ($(HOST_OS),darwin)
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -0700174SHAREDLIB_EXT=dylib
175else
176SHAREDLIB_EXT=so
177endif
178
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100179#################################
180
Dan Cashman4f9a6482017-04-10 12:27:18 -0700181include $(CLEAR_VARS)
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100182
Dan Cashman4f9a6482017-04-10 12:27:18 -0700183LOCAL_MODULE := selinux_policy
184LOCAL_MODULE_TAGS := optional
Tri Vo1f4a28b2018-05-08 18:52:11 -0700185LOCAL_REQUIRED_MODULES += \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100186 selinux_policy_nonsystem \
187 selinux_policy_system \
Tri Vo1f4a28b2018-05-08 18:52:11 -0700188
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100189include $(BUILD_PHONY_PACKAGE)
Tri Vo1f4a28b2018-05-08 18:52:11 -0700190
Tri Vo1f4a28b2018-05-08 18:52:11 -0700191
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100192include $(CLEAR_VARS)
193LOCAL_MODULE := selinux_policy_system
Tri Vo1f4a28b2018-05-08 18:52:11 -0700194# These build targets are not used on non-Treble devices. However, we build these to avoid
195# divergence between Treble and non-Treble devices.
Dan Cashman4f9a6482017-04-10 12:27:18 -0700196LOCAL_REQUIRED_MODULES += \
197 $(platform_mapping_file) \
Yifan Hong617e8532018-02-07 11:13:57 -0800198 $(addsuffix .cil,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
Dan Cashman4f9a6482017-04-10 12:27:18 -0700199 plat_sepolicy.cil \
200 plat_and_mapping_sepolicy.cil.sha256 \
201 secilc \
Dan Cashman91d398d2017-09-26 12:58:29 -0700202
Jeff Vander Stoep7a68c5a2017-06-08 13:24:15 -0700203LOCAL_REQUIRED_MODULES += \
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800204 build_sepolicy \
Jeff Vander Stoep13fb5ed2017-08-22 13:29:53 -0700205 plat_file_contexts \
206 plat_mac_permissions.xml \
207 plat_property_contexts \
208 plat_seapp_contexts \
209 plat_service_contexts \
210 plat_hwservice_contexts \
Dan Cashman91d398d2017-09-26 12:58:29 -0700211 searchpolicy \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100212
213# This conditional inclusion closely mimics the conditional logic
214# inside init/init.cpp for loading SELinux policy from files.
215ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
216# The following files are only allowed for non-Treble devices.
217LOCAL_REQUIRED_MODULES += \
218 sepolicy \
219 vendor_service_contexts \
220
221endif # ($(PRODUCT_SEPOLICY_SPLIT),true)
Jeff Vander Stoep7a68c5a2017-06-08 13:24:15 -0700222
Dan Cashman91d398d2017-09-26 12:58:29 -0700223ifneq ($(TARGET_BUILD_VARIANT), user)
224LOCAL_REQUIRED_MODULES += \
225 selinux_denial_metadata \
226
227endif
228
229ifneq ($(with_asan),true)
Jeff Vander Stoep3d4965b2018-02-13 20:29:55 -0800230ifneq ($(SELINUX_IGNORE_NEVERALLOWS),true)
Dan Cashman91d398d2017-09-26 12:58:29 -0700231LOCAL_REQUIRED_MODULES += \
232 sepolicy_tests \
Jae Shin1fa96342018-07-11 18:30:44 +0900233 $(addprefix treble_sepolicy_tests_,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
Dan Cashman91d398d2017-09-26 12:58:29 -0700234
235endif
Jeff Vander Stoep3d4965b2018-02-13 20:29:55 -0800236endif
Dan Cashman91d398d2017-09-26 12:58:29 -0700237
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100238ifneq ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
239LOCAL_REQUIRED_MODULES += \
240 sepolicy_freeze_test \
241
242endif # ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
243
244include $(BUILD_PHONY_PACKAGE)
245
246#################################
247
248include $(CLEAR_VARS)
249
250LOCAL_MODULE := selinux_policy_nonsystem
251# Include precompiled policy, unless told otherwise.
252ifneq ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
253LOCAL_REQUIRED_MODULES += \
254 precompiled_sepolicy \
255 precompiled_sepolicy.plat_and_mapping.sha256 \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100256
257endif # ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
258
259
260# These build targets are not used on non-Treble devices. However, we build these to avoid
261# divergence between Treble and non-Treble devices.
262LOCAL_REQUIRED_MODULES += \
263 plat_pub_versioned.cil \
264 vendor_sepolicy.cil \
265 plat_sepolicy_vers.txt \
266
267LOCAL_REQUIRED_MODULES += \
268 vendor_file_contexts \
269 vendor_mac_permissions.xml \
270 vendor_property_contexts \
271 vendor_seapp_contexts \
272 vendor_hwservice_contexts \
273 vndservice_contexts \
274
Bowgo Tsai45457e32017-11-27 11:41:33 +0800275ifdef BOARD_ODM_SEPOLICY_DIRS
Bowgo Tsaibae15172017-11-29 16:14:53 +0800276LOCAL_REQUIRED_MODULES += \
277 odm_sepolicy.cil \
Bowgo Tsaiecf656b2017-11-29 16:15:28 +0800278 odm_file_contexts \
Bowgo Tsai1f717b12017-11-29 16:15:55 +0800279 odm_seapp_contexts \
Bowgo Tsaiad6231f2017-11-29 16:16:26 +0800280 odm_property_contexts \
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +0800281 odm_hwservice_contexts \
282 odm_mac_permissions.xml
Bowgo Tsai45457e32017-11-27 11:41:33 +0800283endif
Tri Vo75887dd2018-12-14 14:30:56 -0800284
285ifdef HAS_PRODUCT_SEPOLICY
286LOCAL_REQUIRED_MODULES += \
287 product_sepolicy.cil \
288
289endif
Dan Cashman4f9a6482017-04-10 12:27:18 -0700290include $(BUILD_PHONY_PACKAGE)
291
Joel Galenson5988b562018-01-03 16:53:24 -0800292#################################
293include $(CLEAR_VARS)
294
295LOCAL_MODULE := sepolicy_neverallows
296LOCAL_MODULE_CLASS := ETC
297LOCAL_MODULE_TAGS := optional
298LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
299
300include $(BUILD_SYSTEM)/base_rules.mk
301
302# sepolicy_policy.conf - All of the policy for the device. This is only used to
303# check neverallow rules.
304sepolicy_policy.conf := $(intermediates)/policy.conf
305$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
306$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800307$(sepolicy_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
Joel Galenson5988b562018-01-03 16:53:24 -0800308$(sepolicy_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
309$(sepolicy_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
310$(sepolicy_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
311$(sepolicy_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
312$(sepolicy_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo5dbaa242018-12-13 13:36:10 -0800313$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) $(PLAT_VENDOR_POLICY) \
Tri Vo75887dd2018-12-14 14:30:56 -0800314$(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY) \
Tri Vo5dbaa242018-12-13 13:36:10 -0800315$(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
Joel Galenson5988b562018-01-03 16:53:24 -0800316 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800317 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Joel Galenson5988b562018-01-03 16:53:24 -0800318
Nick Kralevich94c88932018-11-27 13:45:47 -0800319# sepolicy_policy_2.conf - All of the policy for the device. This is only used to
320# check neverallow rules using sepolicy-analyze, similar to CTS.
321sepolicy_policy_2.conf := $(intermediates)/policy_2.conf
322$(sepolicy_policy_2.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
323$(sepolicy_policy_2.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
324$(sepolicy_policy_2.conf): PRIVATE_TARGET_BUILD_VARIANT := user
325$(sepolicy_policy_2.conf): PRIVATE_EXCLUDE_BUILD_TEST := true
326$(sepolicy_policy_2.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
327$(sepolicy_policy_2.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
328$(sepolicy_policy_2.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
329$(sepolicy_policy_2.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
330$(sepolicy_policy_2.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo5dbaa242018-12-13 13:36:10 -0800331$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) $(PLAT_VENDOR_POLICY) \
Tri Vo75887dd2018-12-14 14:30:56 -0800332$(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY) \
Tri Vo5dbaa242018-12-13 13:36:10 -0800333$(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
Nick Kralevich94c88932018-11-27 13:45:47 -0800334 $(transform-policy-to-conf)
335 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
336
337$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_1 := $(sepolicy_policy.conf)
338$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_2 := $(sepolicy_policy_2.conf)
339$(LOCAL_BUILT_MODULE): $(sepolicy_policy.conf) $(sepolicy_policy_2.conf) \
340 $(HOST_OUT_EXECUTABLES)/checkpolicy $(HOST_OUT_EXECUTABLES)/sepolicy-analyze
Joel Galenson5988b562018-01-03 16:53:24 -0800341ifneq ($(SELINUX_IGNORE_NEVERALLOWS),true)
342 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c \
Nick Kralevich94c88932018-11-27 13:45:47 -0800343 $(POLICYVERS) -o $@.tmp $(PRIVATE_SEPOLICY_1)
344 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp neverallow -w -f $(PRIVATE_SEPOLICY_2) || \
345 ( echo "" 1>&2; \
346 echo "sepolicy-analyze failed. This is most likely due to the use" 1>&2; \
347 echo "of an expanded attribute in a neverallow assertion. Please fix" 1>&2; \
348 echo "the policy." 1>&2; \
349 exit 1 )
Joel Galenson5988b562018-01-03 16:53:24 -0800350endif # ($(SELINUX_IGNORE_NEVERALLOWS),true)
Nick Kralevich94c88932018-11-27 13:45:47 -0800351 $(hide) touch $@.tmp
352 $(hide) mv $@.tmp $@
Joel Galenson5988b562018-01-03 16:53:24 -0800353
354sepolicy_policy.conf :=
Nick Kralevich94c88932018-11-27 13:45:47 -0800355sepolicy_policy_2.conf :=
Joel Galenson5988b562018-01-03 16:53:24 -0800356built_sepolicy_neverallows := $(LOCAL_BUILT_MODULE)
357
Ying Wang02fb5f32012-01-17 17:51:09 -0800358##################################
dcashman2e00e632016-10-12 14:58:09 -0700359# reqd_policy_mask - a policy.conf file which contains only the bare minimum
360# policy necessary to use checkpolicy. This bare-minimum policy needs to be
361# present in all policy.conf files, but should not necessarily be exported as
362# part of the public policy. The rules generated by reqd_policy_mask will allow
363# the compilation of public policy and subsequent removal of CIL policy that
364# should not be exported.
365
366reqd_policy_mask.conf := $(intermediates)/reqd_policy_mask.conf
367$(reqd_policy_mask.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
368$(reqd_policy_mask.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800369$(reqd_policy_mask.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashman1c040272016-12-15 15:28:44 -0800370$(reqd_policy_mask.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700371$(reqd_policy_mask.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700372$(reqd_policy_mask.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -0800373$(reqd_policy_mask.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Jaekyun Seoke4971452017-10-19 16:54:49 +0900374$(reqd_policy_mask.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
dcashman2e00e632016-10-12 14:58:09 -0700375$(reqd_policy_mask.conf): $(call build_policy, $(sepolicy_build_files), $(REQD_MASK_POLICY))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700376 $(transform-policy-to-conf)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700377# b/37755687
378CHECKPOLICY_ASAN_OPTIONS := ASAN_OPTIONS=detect_leaks=0
379
dcashman2e00e632016-10-12 14:58:09 -0700380reqd_policy_mask.cil := $(intermediates)/reqd_policy_mask.cil
381$(reqd_policy_mask.cil): $(reqd_policy_mask.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
382 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700383 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -C -M -c \
384 $(POLICYVERS) -o $@ $<
dcashman2e00e632016-10-12 14:58:09 -0700385
dcashman1faa6442016-11-28 07:20:28 -0800386reqd_policy_mask.conf :=
387
388##################################
dcashman2e00e632016-10-12 14:58:09 -0700389# plat_pub_policy - policy that will be exported to be a part of non-platform
390# policy corresponding to this platform version. This is a limited subset of
391# policy that would not compile in checkpolicy on its own. To get around this
392# limitation, add only the required files from private policy, which will
393# generate CIL policy that will then be filtered out by the reqd_policy_mask.
394plat_pub_policy.conf := $(intermediates)/plat_pub_policy.conf
395$(plat_pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
396$(plat_pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800397$(plat_pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashman1c040272016-12-15 15:28:44 -0800398$(plat_pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700399$(plat_pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700400$(plat_pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -0800401$(plat_pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Jaekyun Seoke4971452017-10-19 16:54:49 +0900402$(plat_pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
dcashman2e00e632016-10-12 14:58:09 -0700403$(plat_pub_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo75887dd2018-12-14 14:30:56 -0800404$(PLAT_PUBLIC_POLICY) $(PRODUCT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700405 $(transform-policy-to-conf)
dcashman2e00e632016-10-12 14:58:09 -0700406plat_pub_policy.cil := $(intermediates)/plat_pub_policy.cil
dcashman1faa6442016-11-28 07:20:28 -0800407$(plat_pub_policy.cil): PRIVATE_POL_CONF := $(plat_pub_policy.conf)
408$(plat_pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
Tri Vod57789f2018-12-17 16:35:41 -0800409$(plat_pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
410$(HOST_OUT_EXECUTABLES)/build_sepolicy $(plat_pub_policy.conf) $(reqd_policy_mask.cil)
dcashman2e00e632016-10-12 14:58:09 -0700411 @mkdir -p $(dir $@)
Tri Vod57789f2018-12-17 16:35:41 -0800412 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
413 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
414 -f $(PRIVATE_REQD_MASK) -t $@
dcashman2e00e632016-10-12 14:58:09 -0700415
dcashman1faa6442016-11-28 07:20:28 -0800416plat_pub_policy.conf :=
Dan Cashman1c040272016-12-15 15:28:44 -0800417
dcashman1faa6442016-11-28 07:20:28 -0800418##################################
419include $(CLEAR_VARS)
420
421LOCAL_MODULE := sectxfile_nl
422LOCAL_MODULE_CLASS := ETC
423LOCAL_MODULE_TAGS := optional
424
425# Create a file containing newline only to add between context config files
426include $(BUILD_SYSTEM)/base_rules.mk
427$(LOCAL_BUILT_MODULE):
dcashman2e00e632016-10-12 14:58:09 -0700428 @mkdir -p $(dir $@)
dcashman1faa6442016-11-28 07:20:28 -0800429 $(hide) echo > $@
430
431built_nl := $(LOCAL_BUILT_MODULE)
432
433#################################
434include $(CLEAR_VARS)
435
436LOCAL_MODULE := plat_sepolicy.cil
437LOCAL_MODULE_CLASS := ETC
438LOCAL_MODULE_TAGS := optional
Alex Klyubin052b0bb2017-03-02 12:39:25 -0800439LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -0800440
441include $(BUILD_SYSTEM)/base_rules.mk
dcashman2e00e632016-10-12 14:58:09 -0700442
443# plat_policy.conf - A combination of the private and public platform policy
444# which will ship with the device. The platform will always reflect the most
445# recent platform version and is not currently being attributized.
446plat_policy.conf := $(intermediates)/plat_policy.conf
447$(plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
448$(plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800449$(plat_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashman1c040272016-12-15 15:28:44 -0800450$(plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700451$(plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700452$(plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -0800453$(plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Jaekyun Seoke4971452017-10-19 16:54:49 +0900454$(plat_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
dcashman2e00e632016-10-12 14:58:09 -0700455$(plat_policy.conf): $(call build_policy, $(sepolicy_build_files), \
dcashmancc39f632016-07-22 13:13:11 -0700456$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700457 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800458 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
dcashmancc39f632016-07-22 13:13:11 -0700459
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700460$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_CIL_FILES := \
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700461 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY))
Joel Galenson5988b562018-01-03 16:53:24 -0800462$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700463$(LOCAL_BUILT_MODULE): $(plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
464 $(HOST_OUT_EXECUTABLES)/secilc \
Joel Galenson5988b562018-01-03 16:53:24 -0800465 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY)) \
466 $(built_sepolicy_neverallows)
dcashman2e00e632016-10-12 14:58:09 -0700467 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700468 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
Nick Kralevich6b2a4ae2018-11-26 14:29:06 -0800469 $(POLICYVERS) -o $@.tmp $<
470 $(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@.tmp
471 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) $@.tmp -o /dev/null -f /dev/null
472 $(hide) mv $@.tmp $@
dcashman1faa6442016-11-28 07:20:28 -0800473
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800474built_plat_cil := $(LOCAL_BUILT_MODULE)
dcashman1faa6442016-11-28 07:20:28 -0800475plat_policy.conf :=
476
477#################################
478include $(CLEAR_VARS)
479
Tri Vo75887dd2018-12-14 14:30:56 -0800480ifdef HAS_PRODUCT_SEPOLICY
481LOCAL_MODULE := product_sepolicy.cil
482LOCAL_MODULE_CLASS := ETC
483LOCAL_MODULE_TAGS := optional
484LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
485
486include $(BUILD_SYSTEM)/base_rules.mk
487
488# product_policy.conf - A combination of the private and public product policy
489# which will ship with the device. Product policy is not attributized.
490product_policy.conf := $(intermediates)/product_policy.conf
491$(product_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
492$(product_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
493$(product_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
494$(product_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
495$(product_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
496$(product_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
497$(product_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
498$(product_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
499$(product_policy.conf): $(call build_policy, $(sepolicy_build_files), \
500$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) \
501$(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY))
502 $(transform-policy-to-conf)
503 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
504
505$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
506$(LOCAL_BUILT_MODULE): PRIVATE_PLAT_CIL := $(built_plat_cil)
507$(LOCAL_BUILT_MODULE): $(product_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
508$(HOST_OUT_EXECUTABLES)/build_sepolicy $(HOST_OUT_EXECUTABLES)/secilc $(built_plat_cil)
509 @mkdir -p $(dir $@)
510 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
511 $(POLICYVERS) -o $@ $<
512 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
513 -f $(PRIVATE_PLAT_CIL) -t $@
514 # Line markers (denoted by ;;) are malformed after above cmd. They are only
515 # used for debugging, so we remove them.
516 $(hide) sed -i '/;;/d' $@
517 # Combine plat_sepolicy.cil and product_sepolicy.cil to make sure that the
518 # latter doesn't accidentally depend on vendor/odm policies.
519 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) \
520 $(PRIVATE_NEVERALLOW_ARG) $(PRIVATE_PLAT_CIL) $@ -o /dev/null -f /dev/null
521
522
523built_product_cil := $(LOCAL_BUILT_MODULE)
524product_policy.conf :=
525endif # ifdef HAS_PRODUCT_SEPOLICY
526
527#################################
528include $(CLEAR_VARS)
529
Dan Cashman4f9a6482017-04-10 12:27:18 -0700530LOCAL_MODULE := plat_sepolicy_vers.txt
dcashman1faa6442016-11-28 07:20:28 -0800531LOCAL_MODULE_CLASS := ETC
532LOCAL_MODULE_TAGS := optional
Dan Cashman4f9a6482017-04-10 12:27:18 -0700533LOCAL_PROPRIETARY_MODULE := true
534LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
535
536include $(BUILD_SYSTEM)/base_rules.mk
537
538$(LOCAL_BUILT_MODULE) : PRIVATE_PLAT_SEPOL_VERS := $(BOARD_SEPOLICY_VERS)
539$(LOCAL_BUILT_MODULE) :
540 mkdir -p $(dir $@)
541 echo $(PRIVATE_PLAT_SEPOL_VERS) > $@
542
543#################################
544include $(CLEAR_VARS)
545
546LOCAL_MODULE := $(platform_mapping_file)
547LOCAL_MODULE_CLASS := ETC
548LOCAL_MODULE_TAGS := optional
549LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux/mapping
dcashman1faa6442016-11-28 07:20:28 -0800550
551include $(BUILD_SYSTEM)/base_rules.mk
552
Dan Cashman1b0a71f2017-05-08 14:26:52 -0700553current_mapping.cil := $(intermediates)/mapping/$(PLATFORM_SEPOLICY_VERSION).cil
554ifeq ($(BOARD_SEPOLICY_VERS), $(PLATFORM_SEPOLICY_VERSION))
dcashman1faa6442016-11-28 07:20:28 -0800555# auto-generate the mapping file for current platform policy, since it needs to
556# track platform policy development
Dan Cashman6f14f6b2017-04-07 16:36:23 -0700557$(current_mapping.cil) : PRIVATE_VERS := $(PLATFORM_SEPOLICY_VERSION)
dcashman1faa6442016-11-28 07:20:28 -0800558$(current_mapping.cil) : $(plat_pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy
559 @mkdir -p $(dir $@)
560 $(hide) $(HOST_OUT_EXECUTABLES)/version_policy -b $< -m -n $(PRIVATE_VERS) -o $@
561
Dan Cashman1b0a71f2017-05-08 14:26:52 -0700562else # ifeq ($(BOARD_SEPOLICY_VERS), $(PLATFORM_SEPOLICY_VERSION))
Tri Vo75887dd2018-12-14 14:30:56 -0800563# TODO(b/119305624): Move product-specific sepolicy out of mapping files.
Tri Vobbb8f5b2018-03-20 18:06:37 -0700564prebuilt_mapping_files := $(wildcard \
Tri Vo75887dd2018-12-14 14:30:56 -0800565 $(addsuffix /compat/$(BOARD_SEPOLICY_VERS)/$(BOARD_SEPOLICY_VERS).cil, \
566 $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY)))
Dan Cashman1b0a71f2017-05-08 14:26:52 -0700567$(current_mapping.cil) : $(prebuilt_mapping_files)
568 @mkdir -p $(dir $@)
569 cat $^ > $@
Sandeep Patil42f95982017-04-07 14:18:48 -0700570
Dan Cashman1b0a71f2017-05-08 14:26:52 -0700571prebuilt_mapping_files :=
dcashman1faa6442016-11-28 07:20:28 -0800572endif
573
Dan Cashman1b0a71f2017-05-08 14:26:52 -0700574$(LOCAL_BUILT_MODULE): $(current_mapping.cil) $(ACP)
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700575 $(hide) $(ACP) $< $@
dcashman1faa6442016-11-28 07:20:28 -0800576
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800577built_mapping_cil := $(LOCAL_BUILT_MODULE)
dcashman1faa6442016-11-28 07:20:28 -0800578current_mapping.cil :=
579
580#################################
581include $(CLEAR_VARS)
582
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700583LOCAL_MODULE := plat_and_mapping_sepolicy.cil.sha256
584LOCAL_MODULE_CLASS := ETC
585LOCAL_MODULE_TAGS := optional
586LOCAL_MODULE_PATH = $(TARGET_OUT)/etc/selinux
587
588include $(BUILD_SYSTEM)/base_rules.mk
589
Tri Vo75887dd2018-12-14 14:30:56 -0800590$(LOCAL_BUILT_MODULE): $(built_plat_cil) $(built_mapping_cil) $(built_product_cil)
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700591 cat $^ | sha256sum | cut -d' ' -f1 > $@
592
593#################################
594include $(CLEAR_VARS)
595
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800596# plat_pub_versioned.cil - the exported platform policy associated with the version
597# that non-platform policy targets.
598LOCAL_MODULE := plat_pub_versioned.cil
dcashman1faa6442016-11-28 07:20:28 -0800599LOCAL_MODULE_CLASS := ETC
600LOCAL_MODULE_TAGS := optional
Alex Klyubin052b0bb2017-03-02 12:39:25 -0800601LOCAL_PROPRIETARY_MODULE := true
602LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -0800603
604include $(BUILD_SYSTEM)/base_rules.mk
605
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800606$(LOCAL_BUILT_MODULE) : PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
607$(LOCAL_BUILT_MODULE) : PRIVATE_TGT_POL := $(plat_pub_policy.cil)
608$(LOCAL_BUILT_MODULE) : PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_mapping_cil)
609$(LOCAL_BUILT_MODULE) : $(plat_pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy \
610 $(HOST_OUT_EXECUTABLES)/secilc $(built_plat_cil) $(built_mapping_cil)
611 @mkdir -p $(dir $@)
612 $(HOST_OUT_EXECUTABLES)/version_policy -b $< -t $(PRIVATE_TGT_POL) -n $(PRIVATE_VERS) -o $@
613 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -N -c $(POLICYVERS) \
614 $(PRIVATE_DEP_CIL_FILES) $@ -o /dev/null -f /dev/null
615
616built_plat_pub_vers_cil := $(LOCAL_BUILT_MODULE)
617
618#################################
619include $(CLEAR_VARS)
620
621# vendor_policy.cil - the vendor sepolicy. This needs attributization and to be combined
622# with the platform-provided policy. It makes use of the reqd_policy_mask files from private
623# policy and the platform public policy files in order to use checkpolicy.
624LOCAL_MODULE := vendor_sepolicy.cil
625LOCAL_MODULE_CLASS := ETC
626LOCAL_MODULE_TAGS := optional
627LOCAL_PROPRIETARY_MODULE := true
628LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
629
630include $(BUILD_SYSTEM)/base_rules.mk
631
632vendor_policy.conf := $(intermediates)/vendor_policy.conf
633$(vendor_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
634$(vendor_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800635$(vendor_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800636$(vendor_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
637$(vendor_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
638$(vendor_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
639$(vendor_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
640$(vendor_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
641$(vendor_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo75887dd2018-12-14 14:30:56 -0800642$(PLAT_PUBLIC_POLICY) $(PRODUCT_PUBLIC_POLICY) $(REQD_MASK_POLICY) $(PLAT_VENDOR_POLICY) \
643$(BOARD_VENDOR_SEPOLICY_DIRS))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700644 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800645 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Stephen Smalley2dd4e512012-01-04 12:33:27 -0500646
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800647$(LOCAL_BUILT_MODULE): PRIVATE_POL_CONF := $(vendor_policy.conf)
648$(LOCAL_BUILT_MODULE): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
649$(LOCAL_BUILT_MODULE): PRIVATE_BASE_CIL := $(plat_pub_policy.cil)
650$(LOCAL_BUILT_MODULE): PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
651$(LOCAL_BUILT_MODULE): PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_plat_pub_vers_cil) $(built_mapping_cil)
652$(LOCAL_BUILT_MODULE): PRIVATE_FILTER_CIL := $(built_plat_pub_vers_cil)
653$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/build_sepolicy \
654 $(vendor_policy.conf) $(reqd_policy_mask.cil) $(plat_pub_policy.cil) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800655 $(built_plat_cil) $(built_plat_pub_vers_cil) $(built_mapping_cil)
dcashman2e00e632016-10-12 14:58:09 -0700656 @mkdir -p $(dir $@)
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800657 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) build_cil \
658 -i $(PRIVATE_POL_CONF) -m $(PRIVATE_REQD_MASK) -c $(CHECKPOLICY_ASAN_OPTIONS) \
659 -b $(PRIVATE_BASE_CIL) -d $(PRIVATE_DEP_CIL_FILES) -f $(PRIVATE_FILTER_CIL) \
660 -t $(PRIVATE_VERS) -p $(POLICYVERS) -o $@
dcashman2e00e632016-10-12 14:58:09 -0700661
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800662built_vendor_cil := $(LOCAL_BUILT_MODULE)
663vendor_policy.conf :=
dcashman1faa6442016-11-28 07:20:28 -0800664
665#################################
666include $(CLEAR_VARS)
Alex Klyubin193dccd2017-03-07 14:05:57 -0800667
Nick Kralevich1b2ea492018-09-25 11:03:48 -0700668ifdef BOARD_ODM_SEPOLICY_DIRS
Bowgo Tsai45457e32017-11-27 11:41:33 +0800669# odm_policy.cil - the odm sepolicy. This needs attributization and to be combined
670# with the platform-provided policy. It makes use of the reqd_policy_mask files from private
671# policy and the platform public policy files in order to use checkpolicy.
672LOCAL_MODULE := odm_sepolicy.cil
673LOCAL_MODULE_CLASS := ETC
674LOCAL_MODULE_TAGS := optional
675LOCAL_PROPRIETARY_MODULE := true
676LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
677
678include $(BUILD_SYSTEM)/base_rules.mk
679
680odm_policy.conf := $(intermediates)/odm_policy.conf
681$(odm_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
682$(odm_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
683$(odm_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
684$(odm_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
685$(odm_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
686$(odm_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
687$(odm_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
688$(odm_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
689$(odm_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo75887dd2018-12-14 14:30:56 -0800690 $(PLAT_PUBLIC_POLICY) $(PRODUCT_PUBLIC_POLICY) $(REQD_MASK_POLICY) $(PLAT_VENDOR_POLICY) \
Bowgo Tsai45457e32017-11-27 11:41:33 +0800691 $(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
692 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800693 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Bowgo Tsai45457e32017-11-27 11:41:33 +0800694
695$(LOCAL_BUILT_MODULE): PRIVATE_POL_CONF := $(odm_policy.conf)
696$(LOCAL_BUILT_MODULE): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
697$(LOCAL_BUILT_MODULE): PRIVATE_BASE_CIL := $(plat_pub_policy.cil)
698$(LOCAL_BUILT_MODULE): PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
699$(LOCAL_BUILT_MODULE): PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_plat_pub_vers_cil) \
700 $(built_mapping_cil) $(built_vendor_cil)
701$(LOCAL_BUILT_MODULE) : PRIVATE_FILTER_CIL_FILES := $(built_plat_pub_vers_cil) $(built_vendor_cil)
702$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/build_sepolicy \
703 $(odm_policy.conf) $(reqd_policy_mask.cil) $(plat_pub_policy.cil) \
704 $(built_plat_cil) $(built_plat_pub_vers_cil) $(built_mapping_cil) $(built_vendor_cil)
705 @mkdir -p $(dir $@)
706 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) build_cil \
707 -i $(PRIVATE_POL_CONF) -m $(PRIVATE_REQD_MASK) -c $(CHECKPOLICY_ASAN_OPTIONS) \
708 -b $(PRIVATE_BASE_CIL) -d $(PRIVATE_DEP_CIL_FILES) -f $(PRIVATE_FILTER_CIL_FILES) \
709 -t $(PRIVATE_VERS) -p $(POLICYVERS) -o $@
710
711built_odm_cil := $(LOCAL_BUILT_MODULE)
712odm_policy.conf :=
713odm_policy_raw :=
Nick Kralevich1b2ea492018-09-25 11:03:48 -0700714endif
Bowgo Tsai45457e32017-11-27 11:41:33 +0800715
716#################################
717include $(CLEAR_VARS)
718
Alex Klyubin193dccd2017-03-07 14:05:57 -0800719LOCAL_MODULE := precompiled_sepolicy
720LOCAL_MODULE_CLASS := ETC
721LOCAL_MODULE_TAGS := optional
722LOCAL_PROPRIETARY_MODULE := true
Bowgo Tsai45457e32017-11-27 11:41:33 +0800723
724ifeq ($(BOARD_USES_ODMIMAGE),true)
725LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
726else
Alex Klyubin193dccd2017-03-07 14:05:57 -0800727LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Bowgo Tsai45457e32017-11-27 11:41:33 +0800728endif
Alex Klyubin193dccd2017-03-07 14:05:57 -0800729
730include $(BUILD_SYSTEM)/base_rules.mk
731
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800732all_cil_files := \
733 $(built_plat_cil) \
734 $(built_mapping_cil) \
735 $(built_plat_pub_vers_cil) \
736 $(built_vendor_cil)
737
Tri Vo75887dd2018-12-14 14:30:56 -0800738ifdef HAS_PRODUCT_SEPOLICY
739all_cil_files += $(built_product_cil)
740endif
741
Bowgo Tsai45457e32017-11-27 11:41:33 +0800742ifdef BOARD_ODM_SEPOLICY_DIRS
743all_cil_files += $(built_odm_cil)
744endif
745
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800746$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
Joel Galenson5988b562018-01-03 16:53:24 -0800747$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800748$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(all_cil_files) $(built_sepolicy_neverallows)
Joel Galenson5988b562018-01-03 16:53:24 -0800749 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) \
Alex Klyubin193dccd2017-03-07 14:05:57 -0800750 $(PRIVATE_CIL_FILES) -o $@ -f /dev/null
751
752built_precompiled_sepolicy := $(LOCAL_BUILT_MODULE)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800753all_cil_files :=
Alex Klyubin193dccd2017-03-07 14:05:57 -0800754
755#################################
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700756# SHA-256 digest of the plat_sepolicy.cil and mapping_sepolicy.cil files against
757# which precompiled_policy was built.
Alex Klyubin193dccd2017-03-07 14:05:57 -0800758#################################
759include $(CLEAR_VARS)
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700760LOCAL_MODULE := precompiled_sepolicy.plat_and_mapping.sha256
Alex Klyubin193dccd2017-03-07 14:05:57 -0800761LOCAL_MODULE_CLASS := ETC
762LOCAL_MODULE_TAGS := optional
763LOCAL_PROPRIETARY_MODULE := true
Bowgo Tsai45457e32017-11-27 11:41:33 +0800764
765ifeq ($(BOARD_USES_ODMIMAGE),true)
766LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
767else
Alex Klyubin193dccd2017-03-07 14:05:57 -0800768LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Bowgo Tsai45457e32017-11-27 11:41:33 +0800769endif
Alex Klyubin193dccd2017-03-07 14:05:57 -0800770
771include $(BUILD_SYSTEM)/base_rules.mk
772
Tri Vo75887dd2018-12-14 14:30:56 -0800773$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(built_plat_cil) $(built_mapping_cil) $(built_product_cil)
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700774$(LOCAL_BUILT_MODULE): $(built_precompiled_sepolicy) $(built_plat_cil) $(built_mapping_cil)
775 cat $(PRIVATE_CIL_FILES) | sha256sum | cut -d' ' -f1 > $@
Alex Klyubin193dccd2017-03-07 14:05:57 -0800776
777#################################
778include $(CLEAR_VARS)
Dan Cashman1c040272016-12-15 15:28:44 -0800779# build this target so that we can still perform neverallow checks
dcashman1faa6442016-11-28 07:20:28 -0800780
781LOCAL_MODULE := sepolicy
782LOCAL_MODULE_CLASS := ETC
783LOCAL_MODULE_TAGS := optional
Daniel Cashman65d01342016-12-17 00:53:26 +0000784LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
dcashman2e00e632016-10-12 14:58:09 -0700785
dcashman1faa6442016-11-28 07:20:28 -0800786include $(BUILD_SYSTEM)/base_rules.mk
787
dcashman2e00e632016-10-12 14:58:09 -0700788all_cil_files := \
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700789 $(built_plat_cil) \
790 $(built_mapping_cil) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800791 $(built_plat_pub_vers_cil) \
792 $(built_vendor_cil)
dcashman2e00e632016-10-12 14:58:09 -0700793
Tri Vo75887dd2018-12-14 14:30:56 -0800794ifdef HAS_PRODUCT_SEPOLICY
795all_cil_files += $(built_product_cil)
796endif
797
Bowgo Tsai45457e32017-11-27 11:41:33 +0800798ifdef BOARD_ODM_SEPOLICY_DIRS
799all_cil_files += $(built_odm_cil)
800endif
801
dcashman2e00e632016-10-12 14:58:09 -0700802$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
Joel Galenson5988b562018-01-03 16:53:24 -0800803$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
804$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $(all_cil_files) \
805$(built_sepolicy_neverallows)
dcashman2e00e632016-10-12 14:58:09 -0700806 @mkdir -p $(dir $@)
Joel Galenson5988b562018-01-03 16:53:24 -0800807 $(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 -0800808 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp permissive > $@.permissivedomains
809 $(hide) if [ "$(TARGET_BUILD_VARIANT)" = "user" -a -s $@.permissivedomains ]; then \
810 echo "==========" 1>&2; \
811 echo "ERROR: permissive domains not allowed in user builds" 1>&2; \
812 echo "List of invalid domains:" 1>&2; \
813 cat $@.permissivedomains 1>&2; \
814 exit 1; \
815 fi
816 $(hide) mv $@.tmp $@
Ying Wang02fb5f32012-01-17 17:51:09 -0800817
Ying Wangd8b122c2012-10-25 19:01:31 -0700818built_sepolicy := $(LOCAL_BUILT_MODULE)
dcashman2e00e632016-10-12 14:58:09 -0700819all_cil_files :=
Stephen Smalley01a58af2012-10-02 12:46:37 -0400820
Alex Klyubin84aa7422017-03-10 09:36:07 -0800821#################################
822include $(CLEAR_VARS)
823
824# keep concrete sepolicy for neverallow checks
Joel Galenson5988b562018-01-03 16:53:24 -0800825# If SELINUX_IGNORE_NEVERALLOWS is set, we use sed to remove the neverallow lines before compiling.
Alex Klyubin84aa7422017-03-10 09:36:07 -0800826
827LOCAL_MODULE := sepolicy.recovery
Alex Klyubinec78c372017-03-10 12:44:16 -0800828LOCAL_MODULE_STEM := sepolicy
Alex Klyubin84aa7422017-03-10 09:36:07 -0800829LOCAL_MODULE_CLASS := ETC
830LOCAL_MODULE_TAGS := optional
Alex Klyubinec78c372017-03-10 12:44:16 -0800831LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
Alex Klyubin84aa7422017-03-10 09:36:07 -0800832
833include $(BUILD_SYSTEM)/base_rules.mk
834
Dan Cashmanc8d45352017-04-11 07:38:48 -0700835sepolicy.recovery.conf := $(intermediates)/sepolicy.recovery.conf
836$(sepolicy.recovery.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
837$(sepolicy.recovery.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800838$(sepolicy.recovery.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashmanc8d45352017-04-11 07:38:48 -0700839$(sepolicy.recovery.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
840$(sepolicy.recovery.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
841$(sepolicy.recovery.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Dan Cashman36ee91d2017-07-07 14:59:51 -0700842$(sepolicy.recovery.conf): PRIVATE_TGT_RECOVERY := -D target_recovery=true
Dan Cashmanc8d45352017-04-11 07:38:48 -0700843$(sepolicy.recovery.conf): $(call build_policy, $(sepolicy_build_files), \
844 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) \
Tri Vo75887dd2018-12-14 14:30:56 -0800845 $(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY) \
Bowgo Tsai45457e32017-11-27 11:41:33 +0800846 $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) \
847 $(BOARD_ODM_SEPOLICY_DIRS))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700848 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800849 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
850
Joel Galenson5988b562018-01-03 16:53:24 -0800851ifeq ($(SELINUX_IGNORE_NEVERALLOWS),true)
852 $(hide) sed -z 's/\n\s*neverallow[^;]*;/\n/g' $@ > $@.neverallow
853 $(hide) mv $@.neverallow $@
854endif
Dan Cashman1c040272016-12-15 15:28:44 -0800855
Dan Cashmanc8d45352017-04-11 07:38:48 -0700856$(LOCAL_BUILT_MODULE): $(sepolicy.recovery.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
857 $(HOST_OUT_EXECUTABLES)/sepolicy-analyze
Dan Cashman1c040272016-12-15 15:28:44 -0800858 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700859 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c \
860 $(POLICYVERS) -o $@.tmp $<
Nick Kralevichbca98ef2016-02-26 20:06:52 -0800861 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp permissive > $@.permissivedomains
862 $(hide) if [ "$(TARGET_BUILD_VARIANT)" = "user" -a -s $@.permissivedomains ]; then \
863 echo "==========" 1>&2; \
864 echo "ERROR: permissive domains not allowed in user builds" 1>&2; \
865 echo "List of invalid domains:" 1>&2; \
866 cat $@.permissivedomains 1>&2; \
867 exit 1; \
868 fi
869 $(hide) mv $@.tmp $@
Stephen Smalleye60723a2014-05-29 16:40:15 -0400870
Dan Cashmanc8d45352017-04-11 07:38:48 -0700871sepolicy.recovery.conf :=
Stephen Smalleye60723a2014-05-29 16:40:15 -0400872
dcashman704741a2014-07-25 19:11:52 -0700873##################################
Alex Klyubin446279a2017-04-06 14:45:50 -0700874# SELinux policy embedded into CTS.
875# CTS checks neverallow rules of this policy against the policy of the device under test.
876##################################
dcashman704741a2014-07-25 19:11:52 -0700877include $(CLEAR_VARS)
878
879LOCAL_MODULE := general_sepolicy.conf
880LOCAL_MODULE_CLASS := ETC
881LOCAL_MODULE_TAGS := tests
882
883include $(BUILD_SYSTEM)/base_rules.mk
884
dcashman704741a2014-07-25 19:11:52 -0700885$(LOCAL_BUILT_MODULE): PRIVATE_MLS_SENS := $(MLS_SENS)
886$(LOCAL_BUILT_MODULE): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800887$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_BUILD_VARIANT := user
Dan Cashman1c040272016-12-15 15:28:44 -0800888$(LOCAL_BUILT_MODULE): PRIVATE_TGT_ARCH := $(my_target_arch)
Dan Cashman36ee91d2017-07-07 14:59:51 -0700889$(LOCAL_BUILT_MODULE): PRIVATE_WITH_ASAN := false
Steven Moreland763697d2017-11-09 11:24:56 -0800890$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_SPLIT := cts
Jaekyun Seok64ade652018-01-30 17:23:58 +0900891$(LOCAL_BUILT_MODULE): PRIVATE_COMPATIBLE_PROPERTY := cts
Tri Vo77c44fc2018-06-05 14:11:08 -0700892$(LOCAL_BUILT_MODULE): PRIVATE_EXCLUDE_BUILD_TEST := true
dcashmancc39f632016-07-22 13:13:11 -0700893$(LOCAL_BUILT_MODULE): $(call build_policy, $(sepolicy_build_files), \
894$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700895 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800896 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
dcashman704741a2014-07-25 19:11:52 -0700897
William Robertsb8769932015-06-29 16:31:23 -0700898##################################
dcashmand225b692016-12-12 09:29:04 -0800899# TODO - remove this. Keep around until we get the filesystem creation stuff taken care of.
900#
William Robertsb8769932015-06-29 16:31:23 -0700901include $(CLEAR_VARS)
902
Richard Hainesc2d01912015-08-06 17:43:52 +0100903LOCAL_MODULE := file_contexts.bin
Ying Wang02fb5f32012-01-17 17:51:09 -0800904LOCAL_MODULE_CLASS := ETC
905LOCAL_MODULE_TAGS := optional
906LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
907
Stephen Smalley5b340be2012-03-06 11:12:41 -0500908include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -0800909
William Roberts49693f12016-01-04 12:20:57 -0800910# The file_contexts.bin is built in the following way:
911# 1. Collect all file_contexts files in THIS repository and process them with
912# m4 into a tmp file called file_contexts.local.tmp.
913# 2. Collect all device specific file_contexts files and process them with m4
914# into a tmp file called file_contexts.device.tmp.
915# 3. Run checkfc -e (allow no device fc entries ie empty) and fc_sort on
916# file_contexts.device.tmp and output to file_contexts.device.sorted.tmp.
917# 4. Concatenate file_contexts.local.tmp and file_contexts.device.tmp into
918# file_contexts.concat.tmp.
919# 5. Run checkfc and sefcontext_compile on file_contexts.concat.tmp to produce
920# file_contexts.bin.
921#
922# Note: That a newline file is placed between each file_context file found to
923# ensure a proper build when an fc file is missing an ending newline.
William Roberts29d14682016-01-04 12:20:57 -0800924
Dan Cashman1b0a71f2017-05-08 14:26:52 -0700925local_fc_files := $(call build_policy, file_contexts, $(PLAT_PRIVATE_POLICY))
926
Tri Vo75887dd2018-12-14 14:30:56 -0800927ifdef HAS_PRODUCT_SEPOLICY
928local_fc_files += $(call build_policy, file_contexts, $(PRODUCT_PRIVATE_POLICY))
929endif
930
William Roberts49693f12016-01-04 12:20:57 -0800931ifneq ($(filter address,$(SANITIZE_TARGET)),)
Mark Salyzyn9b398f32018-06-13 08:02:29 -0700932 local_fc_files += $(wildcard $(addsuffix /file_contexts_asan, $(PLAT_PRIVATE_POLICY)))
933endif
934ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
935 local_fc_files += $(wildcard $(addsuffix /file_contexts_overlayfs, $(PLAT_PRIVATE_POLICY)))
William Roberts49693f12016-01-04 12:20:57 -0800936endif
937local_fcfiles_with_nl := $(call add_nl, $(local_fc_files), $(built_nl))
938
939file_contexts.local.tmp := $(intermediates)/file_contexts.local.tmp
940$(file_contexts.local.tmp): $(local_fcfiles_with_nl)
Stephen Smalley5b340be2012-03-06 11:12:41 -0500941 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -0700942 $(hide) m4 --fatal-warnings -s $^ > $@
William Roberts49693f12016-01-04 12:20:57 -0800943
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800944device_fc_files := $(call build_vendor_policy, file_contexts)
Bowgo Tsaibae15172017-11-29 16:14:53 +0800945
946ifdef BOARD_ODM_SEPOLICY_DIRS
947device_fc_files += $(call build_odm_policy, file_contexts)
948endif
949
William Roberts49693f12016-01-04 12:20:57 -0800950device_fcfiles_with_nl := $(call add_nl, $(device_fc_files), $(built_nl))
951
952file_contexts.device.tmp := $(intermediates)/file_contexts.device.tmp
953$(file_contexts.device.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
954$(file_contexts.device.tmp): $(device_fcfiles_with_nl)
955 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -0700956 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
William Roberts49693f12016-01-04 12:20:57 -0800957
958file_contexts.device.sorted.tmp := $(intermediates)/file_contexts.device.sorted.tmp
959$(file_contexts.device.sorted.tmp): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800960$(file_contexts.device.sorted.tmp): $(file_contexts.device.tmp) $(built_sepolicy) \
961 $(HOST_OUT_EXECUTABLES)/fc_sort $(HOST_OUT_EXECUTABLES)/checkfc
William Roberts49693f12016-01-04 12:20:57 -0800962 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -0800963 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e $(PRIVATE_SEPOLICY) $<
William Roberts49693f12016-01-04 12:20:57 -0800964 $(hide) $(HOST_OUT_EXECUTABLES)/fc_sort $< $@
965
966file_contexts.concat.tmp := $(intermediates)/file_contexts.concat.tmp
967$(file_contexts.concat.tmp): $(file_contexts.local.tmp) $(file_contexts.device.sorted.tmp)
968 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -0700969 $(hide) m4 --fatal-warnings -s $^ > $@
Stephen Smalley5b340be2012-03-06 11:12:41 -0500970
William Roberts3746a0a2015-09-25 10:18:44 -0700971$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
William Roberts49693f12016-01-04 12:20:57 -0800972$(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 +0100973 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -0800974 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc $(PRIVATE_SEPOLICY) $<
Richard Hainesc2d01912015-08-06 17:43:52 +0100975 $(hide) $(HOST_OUT_EXECUTABLES)/sefcontext_compile -o $@ $<
976
Robert Craig8b7545b2014-03-20 09:35:08 -0400977built_fc := $(LOCAL_BUILT_MODULE)
William Roberts49693f12016-01-04 12:20:57 -0800978local_fc_files :=
979local_fcfiles_with_nl :=
980device_fc_files :=
981device_fcfiles_with_nl :=
982file_contexts.concat.tmp :=
983file_contexts.device.sorted.tmp :=
984file_contexts.device.tmp :=
985file_contexts.local.tmp :=
William Roberts171a0622012-08-16 10:55:05 -0700986
Ying Wang02fb5f32012-01-17 17:51:09 -0800987##################################
Dan Cashman91d398d2017-09-26 12:58:29 -0700988ifneq ($(TARGET_BUILD_VARIANT), user)
989include $(CLEAR_VARS)
990
991LOCAL_MODULE := selinux_denial_metadata
992LOCAL_MODULE_CLASS := ETC
993LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
994
995include $(BUILD_SYSTEM)/base_rules.mk
996
997bug_files := $(call build_policy, bug_map, $(LOCAL_PATH) $(PLAT_PRIVATE_POLICY) $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(PLAT_PUBLIC_POLICY))
998
999$(LOCAL_BUILT_MODULE) : $(bug_files)
1000 @mkdir -p $(dir $@)
1001 cat $^ > $@
1002
1003bug_files :=
1004endif
1005##################################
Ying Wang02fb5f32012-01-17 17:51:09 -08001006include $(CLEAR_VARS)
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001007
dcashmand225b692016-12-12 09:29:04 -08001008LOCAL_MODULE := plat_file_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001009LOCAL_MODULE_CLASS := ETC
dcashmand225b692016-12-12 09:29:04 -08001010LOCAL_MODULE_TAGS := optional
Steven Moreland763697d2017-11-09 11:24:56 -08001011ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Jeff Vander Stoep0cb417a2017-03-08 14:12:54 -08001012LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
Jeff Vander Stoep7a68c5a2017-06-08 13:24:15 -07001013else
1014LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
1015endif
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001016
1017include $(BUILD_SYSTEM)/base_rules.mk
1018
Tri Vo75887dd2018-12-14 14:30:56 -08001019# TODO(b/119305624): Move product-specific sepolicy out of plat_file_contexts
1020local_fc_files := $(call build_policy, file_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
dcashmand225b692016-12-12 09:29:04 -08001021ifneq ($(filter address,$(SANITIZE_TARGET)),)
Dan Cashman1b0a71f2017-05-08 14:26:52 -07001022 local_fc_files += $(wildcard $(addsuffix /file_contexts_asan, $(PLAT_PRIVATE_POLICY)))
dcashmand225b692016-12-12 09:29:04 -08001023endif
Mark Salyzyn9b398f32018-06-13 08:02:29 -07001024ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
1025 local_fc_files += $(wildcard $(addsuffix /file_contexts_overlayfs, $(PLAT_PRIVATE_POLICY)))
1026endif
Alex Klyubine4665d72017-01-19 19:58:34 -08001027local_fcfiles_with_nl := $(call add_nl, $(local_fc_files), $(built_nl))
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001028
Alex Klyubine4665d72017-01-19 19:58:34 -08001029$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(local_fcfiles_with_nl)
dcashmand225b692016-12-12 09:29:04 -08001030$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Alex Klyubine4665d72017-01-19 19:58:34 -08001031$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
1032$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
1033$(local_fcfiles_with_nl) $(built_sepolicy)
Richard Hainesc2d01912015-08-06 17:43:52 +01001034 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001035 $(hide) m4 --fatal-warnings -s $(PRIVATE_FC_FILES) > $@.tmp
Alex Klyubine4665d72017-01-19 19:58:34 -08001036 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
1037 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
Richard Hainesc2d01912015-08-06 17:43:52 +01001038
dcashmand225b692016-12-12 09:29:04 -08001039built_plat_fc := $(LOCAL_BUILT_MODULE)
1040local_fc_files :=
Alex Klyubine4665d72017-01-19 19:58:34 -08001041local_fcfiles_with_nl :=
dcashmand225b692016-12-12 09:29:04 -08001042
1043##################################
1044include $(CLEAR_VARS)
1045
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001046LOCAL_MODULE := vendor_file_contexts
dcashmand225b692016-12-12 09:29:04 -08001047LOCAL_MODULE_CLASS := ETC
1048LOCAL_MODULE_TAGS := optional
Steven Moreland763697d2017-11-09 11:24:56 -08001049ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Jeff Vander Stoep0cb417a2017-03-08 14:12:54 -08001050LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Jeff Vander Stoep7a68c5a2017-06-08 13:24:15 -07001051else
1052LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
1053endif
dcashmand225b692016-12-12 09:29:04 -08001054
1055include $(BUILD_SYSTEM)/base_rules.mk
1056
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001057vendor_fc_files := $(call build_vendor_policy, file_contexts)
1058vendor_fcfiles_with_nl := $(call add_nl, $(vendor_fc_files), $(built_nl))
dcashmand225b692016-12-12 09:29:04 -08001059
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001060$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(vendor_fcfiles_with_nl)
dcashmand225b692016-12-12 09:29:04 -08001061$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Mustafa Yigit Bilgen1cffee62018-11-07 18:03:31 -08001062$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
dcashmand225b692016-12-12 09:29:04 -08001063$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
1064$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001065$(vendor_fcfiles_with_nl) $(built_sepolicy)
dcashmand225b692016-12-12 09:29:04 -08001066 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001067 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_FC_FILES) > $@.tmp
dcashmand225b692016-12-12 09:29:04 -08001068 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
1069 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
1070
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001071built_vendor_fc := $(LOCAL_BUILT_MODULE)
1072vendor_fc_files :=
1073vendor_fcfiles_with_nl :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001074
1075##################################
1076include $(CLEAR_VARS)
Jeff Vander Stoepb236eb62017-06-13 08:24:17 -07001077
Bowgo Tsaibae15172017-11-29 16:14:53 +08001078LOCAL_MODULE := odm_file_contexts
1079LOCAL_MODULE_CLASS := ETC
1080LOCAL_MODULE_TAGS := optional
1081LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1082
1083include $(BUILD_SYSTEM)/base_rules.mk
1084
1085odm_fc_files := $(call build_odm_policy, file_contexts)
1086odm_fcfiles_with_nl := $(call add_nl, $(odm_fc_files), $(built_nl))
1087
1088$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(odm_fcfiles_with_nl)
1089$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Mustafa Yigit Bilgen1cffee62018-11-07 18:03:31 -08001090$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Bowgo Tsaibae15172017-11-29 16:14:53 +08001091$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
1092$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
1093$(odm_fcfiles_with_nl) $(built_sepolicy)
1094 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001095 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_FC_FILES) > $@.tmp
Bowgo Tsaibae15172017-11-29 16:14:53 +08001096 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
1097 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
1098
1099built_odm_fc := $(LOCAL_BUILT_MODULE)
1100odm_fc_files :=
1101odm_fcfiles_with_nl :=
1102
1103##################################
1104include $(CLEAR_VARS)
1105
Jeff Vander Stoepb236eb62017-06-13 08:24:17 -07001106LOCAL_MODULE := plat_file_contexts.recovery
1107LOCAL_MODULE_STEM := plat_file_contexts
1108LOCAL_MODULE_CLASS := ETC
1109LOCAL_MODULE_TAGS := optional
1110LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1111
1112include $(BUILD_SYSTEM)/base_rules.mk
1113
1114$(LOCAL_BUILT_MODULE): $(built_plat_fc)
1115 $(hide) cp -f $< $@
1116
1117##################################
1118include $(CLEAR_VARS)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001119LOCAL_MODULE := vendor_file_contexts.recovery
1120LOCAL_MODULE_STEM := vendor_file_contexts
Jeff Vander Stoepb236eb62017-06-13 08:24:17 -07001121LOCAL_MODULE_CLASS := ETC
1122LOCAL_MODULE_TAGS := optional
1123LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1124
1125include $(BUILD_SYSTEM)/base_rules.mk
1126
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001127$(LOCAL_BUILT_MODULE): $(built_vendor_fc)
Jeff Vander Stoepb236eb62017-06-13 08:24:17 -07001128 $(hide) cp -f $< $@
1129
1130##################################
1131include $(CLEAR_VARS)
Bowgo Tsaibae15172017-11-29 16:14:53 +08001132LOCAL_MODULE := odm_file_contexts.recovery
1133LOCAL_MODULE_STEM := odm_file_contexts
1134LOCAL_MODULE_CLASS := ETC
1135LOCAL_MODULE_TAGS := optional
1136LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1137
1138include $(BUILD_SYSTEM)/base_rules.mk
1139
1140$(LOCAL_BUILT_MODULE): $(built_odm_fc)
1141 $(hide) cp -f $< $@
1142
1143##################################
1144include $(CLEAR_VARS)
Dan Cashman9c038072016-12-22 07:15:18 -08001145LOCAL_MODULE := plat_seapp_contexts
Ying Wang02fb5f32012-01-17 17:51:09 -08001146LOCAL_MODULE_CLASS := ETC
1147LOCAL_MODULE_TAGS := optional
Steven Moreland763697d2017-11-09 11:24:56 -08001148ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001149LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
1150else
Ying Wang02fb5f32012-01-17 17:51:09 -08001151LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001152endif
Ying Wang02fb5f32012-01-17 17:51:09 -08001153
William Roberts171a0622012-08-16 10:55:05 -07001154include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -08001155
Tri Vo75887dd2018-12-14 14:30:56 -08001156# TODO(b/119305624): Move product-specific sepolicy out of plat_seapp_contexts
1157plat_sc_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
William Roberts171a0622012-08-16 10:55:05 -07001158
Ying Wangd8b122c2012-10-25 19:01:31 -07001159$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Dan Cashman9c038072016-12-22 07:15:18 -08001160$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(plat_sc_files)
1161$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(plat_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp
William Robertsf0e0a942012-08-27 15:41:15 -07001162 @mkdir -p $(dir $@)
William Roberts99fe8df2015-06-30 13:53:51 -07001163 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES)
Ying Wang02fb5f32012-01-17 17:51:09 -08001164
Dan Cashman9c038072016-12-22 07:15:18 -08001165built_plat_sc := $(LOCAL_BUILT_MODULE)
1166plat_sc_files :=
Robert Craig8b7545b2014-03-20 09:35:08 -04001167
Ying Wang02fb5f32012-01-17 17:51:09 -08001168##################################
Stephen Smalley124720a2012-04-04 10:11:16 -04001169include $(CLEAR_VARS)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001170LOCAL_MODULE := vendor_seapp_contexts
Stephen Smalley37712872015-03-12 15:46:36 -04001171LOCAL_MODULE_CLASS := ETC
Dan Cashman9c038072016-12-22 07:15:18 -08001172LOCAL_MODULE_TAGS := optional
Steven Moreland763697d2017-11-09 11:24:56 -08001173ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001174LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1175else
Dan Cashman9c038072016-12-22 07:15:18 -08001176LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001177endif
Stephen Smalley37712872015-03-12 15:46:36 -04001178
1179include $(BUILD_SYSTEM)/base_rules.mk
1180
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001181vendor_sc_files := $(call build_policy, seapp_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Tri Vo75887dd2018-12-14 14:30:56 -08001182plat_sc_neverallow_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Stephen Smalley37712872015-03-12 15:46:36 -04001183
Dan Cashman9c038072016-12-22 07:15:18 -08001184$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001185$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(vendor_sc_files)
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -08001186$(LOCAL_BUILT_MODULE): PRIVATE_SC_NEVERALLOW_FILES := $(plat_sc_neverallow_files)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001187$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(vendor_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp $(plat_sc_neverallow_files)
Stephen Smalley37712872015-03-12 15:46:36 -04001188 @mkdir -p $(dir $@)
Dan Cashman91d398d2017-09-26 12:58:29 -07001189 $(hide) grep -ihe '^neverallow' $(PRIVATE_SC_NEVERALLOW_FILES) > $@.tmp
Xin Liec6f3932017-03-14 16:51:13 -07001190 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES) $@.tmp
Stephen Smalley37712872015-03-12 15:46:36 -04001191
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001192built_vendor_sc := $(LOCAL_BUILT_MODULE)
1193vendor_sc_files :=
Stephen Smalley37712872015-03-12 15:46:36 -04001194
1195##################################
1196include $(CLEAR_VARS)
Bowgo Tsaiecf656b2017-11-29 16:15:28 +08001197LOCAL_MODULE := odm_seapp_contexts
1198LOCAL_MODULE_CLASS := ETC
1199LOCAL_MODULE_TAGS := optional
1200LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1201
1202include $(BUILD_SYSTEM)/base_rules.mk
1203
1204odm_sc_files := $(call build_policy, seapp_contexts, $(BOARD_ODM_SEPOLICY_DIRS))
Tri Vo75887dd2018-12-14 14:30:56 -08001205plat_sc_neverallow_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Bowgo Tsaiecf656b2017-11-29 16:15:28 +08001206
1207$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1208$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(odm_sc_files)
1209$(LOCAL_BUILT_MODULE): PRIVATE_SC_NEVERALLOW_FILES := $(plat_sc_neverallow_files)
1210$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(odm_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp $(plat_sc_neverallow_files)
1211 @mkdir -p $(dir $@)
1212 $(hide) grep -ihe '^neverallow' $(PRIVATE_SC_NEVERALLOW_FILES) > $@.tmp
1213 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES) $@.tmp
1214
1215built_odm_sc := $(LOCAL_BUILT_MODULE)
1216odm_sc_files :=
1217
1218##################################
1219include $(CLEAR_VARS)
Dan Cashman9c038072016-12-22 07:15:18 -08001220LOCAL_MODULE := plat_seapp_neverallows
William Roberts4ee71312015-06-25 11:59:30 -07001221LOCAL_MODULE_CLASS := ETC
1222LOCAL_MODULE_TAGS := tests
1223
1224include $(BUILD_SYSTEM)/base_rules.mk
1225
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -08001226$(LOCAL_BUILT_MODULE): $(plat_sc_neverallow_files)
William Roberts4ee71312015-06-25 11:59:30 -07001227 @mkdir -p $(dir $@)
Dan Cashman91d398d2017-09-26 12:58:29 -07001228 - $(hide) grep -ihe '^neverallow' $< > $@
William Roberts4ee71312015-06-25 11:59:30 -07001229
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -08001230plat_sc_neverallow_files :=
William Roberts4ee71312015-06-25 11:59:30 -07001231
1232##################################
1233include $(CLEAR_VARS)
Stephen Smalley124720a2012-04-04 10:11:16 -04001234
Sandeep Patila86316e2016-12-27 16:08:44 -08001235LOCAL_MODULE := plat_property_contexts
Stephen Smalley124720a2012-04-04 10:11:16 -04001236LOCAL_MODULE_CLASS := ETC
1237LOCAL_MODULE_TAGS := optional
Alex Klyubin9d590412017-03-08 13:10:05 -08001238
Steven Moreland763697d2017-11-09 11:24:56 -08001239ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Alex Klyubin9d590412017-03-08 13:10:05 -08001240LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
1241else
Stephen Smalley124720a2012-04-04 10:11:16 -04001242LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Alex Klyubin9d590412017-03-08 13:10:05 -08001243endif
Stephen Smalley124720a2012-04-04 10:11:16 -04001244
1245include $(BUILD_SYSTEM)/base_rules.mk
1246
Tri Vo75887dd2018-12-14 14:30:56 -08001247# TODO(b/119305624): Move product-specific sepolicy out of plat_property_contexts.
1248plat_pcfiles := $(call build_policy, property_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Jaekyun Seoke4971452017-10-19 16:54:49 +09001249ifeq ($(PRODUCT_COMPATIBLE_PROPERTY),true)
1250plat_pcfiles += $(LOCAL_PATH)/public/property_contexts
1251endif
William Roberts6aabc1c2015-07-30 11:44:26 -07001252
Sandeep Patila86316e2016-12-27 16:08:44 -08001253plat_property_contexts.tmp := $(intermediates)/plat_property_contexts.tmp
1254$(plat_property_contexts.tmp): PRIVATE_PC_FILES := $(plat_pcfiles)
1255$(plat_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1256$(plat_property_contexts.tmp): $(plat_pcfiles)
William Roberts7f81b332015-09-29 13:52:37 -07001257 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001258 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
Tom Cherrya15df752018-03-23 14:15:23 -07001259$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1260$(LOCAL_BUILT_MODULE): $(plat_property_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/property_info_checker
William Robertsdcffd2b2015-09-29 13:52:37 -07001261 @mkdir -p $(dir $@)
Tom Cherryf68b4c62018-01-04 09:46:48 -08001262 $(hide) cp -f $< $@
Tom Cherrya15df752018-03-23 14:15:23 -07001263 $(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $(PRIVATE_SEPOLICY) $@
Stephen Smalley124720a2012-04-04 10:11:16 -04001264
Sandeep Patila86316e2016-12-27 16:08:44 -08001265built_plat_pc := $(LOCAL_BUILT_MODULE)
1266plat_pcfiles :=
1267plat_property_contexts.tmp :=
Robert Craig8b7545b2014-03-20 09:35:08 -04001268
Stephen Smalley124720a2012-04-04 10:11:16 -04001269##################################
Riley Spahnf90c41f2014-06-05 15:52:02 -07001270include $(CLEAR_VARS)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001271LOCAL_MODULE := vendor_property_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001272LOCAL_MODULE_CLASS := ETC
Sandeep Patila86316e2016-12-27 16:08:44 -08001273LOCAL_MODULE_TAGS := optional
Alex Klyubin9d590412017-03-08 13:10:05 -08001274
Steven Moreland763697d2017-11-09 11:24:56 -08001275ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Alex Klyubin9d590412017-03-08 13:10:05 -08001276LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1277else
Sandeep Patila86316e2016-12-27 16:08:44 -08001278LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Alex Klyubin9d590412017-03-08 13:10:05 -08001279endif
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001280
Stephen Smalleyc9361732015-03-13 09:36:57 -04001281include $(BUILD_SYSTEM)/base_rules.mk
1282
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001283vendor_pcfiles := $(call build_policy, property_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Sandeep Patil262edc32016-12-27 16:08:44 -08001284
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001285vendor_property_contexts.tmp := $(intermediates)/vendor_property_contexts.tmp
1286$(vendor_property_contexts.tmp): PRIVATE_PC_FILES := $(vendor_pcfiles)
1287$(vendor_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1288$(vendor_property_contexts.tmp): $(vendor_pcfiles)
William Robertsdcffd2b2015-09-29 13:52:37 -07001289 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001290 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
Sandeep Patila86316e2016-12-27 16:08:44 -08001291
Tom Cherrya15df752018-03-23 14:15:23 -07001292$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1293$(LOCAL_BUILT_MODULE): PRIVATE_BUILT_PLAT_PC := $(built_plat_pc)
1294$(LOCAL_BUILT_MODULE): $(vendor_property_contexts.tmp) $(built_sepolicy) $(built_plat_pc) $(HOST_OUT_EXECUTABLES)/property_info_checker
Sandeep Patila86316e2016-12-27 16:08:44 -08001295 @mkdir -p $(dir $@)
Tom Cherryf68b4c62018-01-04 09:46:48 -08001296 $(hide) cp -f $< $@
Tom Cherrya15df752018-03-23 14:15:23 -07001297 $(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $(PRIVATE_SEPOLICY) $(PRIVATE_BUILT_PLAT_PC) $@
William Robertsdcffd2b2015-09-29 13:52:37 -07001298
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001299built_vendor_pc := $(LOCAL_BUILT_MODULE)
1300vendor_pcfiles :=
1301vendor_property_contexts.tmp :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001302
1303##################################
1304include $(CLEAR_VARS)
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001305LOCAL_MODULE := odm_property_contexts
1306LOCAL_MODULE_CLASS := ETC
1307LOCAL_MODULE_TAGS := optional
1308LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1309
1310include $(BUILD_SYSTEM)/base_rules.mk
1311
1312odm_pcfiles := $(call build_policy, property_contexts, $(BOARD_ODM_SEPOLICY_DIRS))
1313
1314odm_property_contexts.tmp := $(intermediates)/odm_property_contexts.tmp
1315$(odm_property_contexts.tmp): PRIVATE_PC_FILES := $(odm_pcfiles)
1316$(odm_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1317$(odm_property_contexts.tmp): $(odm_pcfiles)
1318 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001319 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001320
1321
Tom Cherrya15df752018-03-23 14:15:23 -07001322$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1323$(LOCAL_BUILT_MODULE): PRIVATE_BUILT_PLAT_PC := $(built_plat_pc)
1324$(LOCAL_BUILT_MODULE): PRIVATE_BUILT_VENDOR_PC := $(built_vendor_pc)
1325$(LOCAL_BUILT_MODULE): $(odm_property_contexts.tmp) $(built_sepolicy) $(built_plat_pc) $(built_vendor_pc) $(HOST_OUT_EXECUTABLES)/property_info_checker
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001326 @mkdir -p $(dir $@)
1327 $(hide) cp -f $< $@
Tom Cherrya15df752018-03-23 14:15:23 -07001328 $(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $(PRIVATE_SEPOLICY) $(PRIVATE_BUILT_PLAT_PC) $(PRIVATE_BUILT_VENDOR_PC) $@
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001329
1330built_odm_pc := $(LOCAL_BUILT_MODULE)
1331odm_pcfiles :=
1332odm_property_contexts.tmp :=
1333
1334##################################
1335include $(CLEAR_VARS)
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001336
Alex Klyubinec78c372017-03-10 12:44:16 -08001337LOCAL_MODULE := plat_property_contexts.recovery
1338LOCAL_MODULE_STEM := plat_property_contexts
1339LOCAL_MODULE_CLASS := ETC
1340LOCAL_MODULE_TAGS := optional
1341LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1342
1343include $(BUILD_SYSTEM)/base_rules.mk
1344
1345$(LOCAL_BUILT_MODULE): $(built_plat_pc)
1346 $(hide) cp -f $< $@
1347
1348##################################
1349include $(CLEAR_VARS)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001350LOCAL_MODULE := vendor_property_contexts.recovery
1351LOCAL_MODULE_STEM := vendor_property_contexts
Alex Klyubinec78c372017-03-10 12:44:16 -08001352LOCAL_MODULE_CLASS := ETC
1353LOCAL_MODULE_TAGS := optional
1354LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1355
1356include $(BUILD_SYSTEM)/base_rules.mk
1357
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001358$(LOCAL_BUILT_MODULE): $(built_vendor_pc)
Alex Klyubinec78c372017-03-10 12:44:16 -08001359 $(hide) cp -f $< $@
1360
1361##################################
1362include $(CLEAR_VARS)
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001363LOCAL_MODULE := odm_property_contexts.recovery
1364LOCAL_MODULE_STEM := odm_property_contexts
1365LOCAL_MODULE_CLASS := ETC
1366LOCAL_MODULE_TAGS := optional
1367LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1368
1369include $(BUILD_SYSTEM)/base_rules.mk
1370
1371$(LOCAL_BUILT_MODULE): $(built_odm_pc)
1372 $(hide) cp -f $< $@
1373
1374##################################
1375include $(CLEAR_VARS)
Alex Klyubinec78c372017-03-10 12:44:16 -08001376
Sandeep Patila058b562016-12-27 15:10:48 -08001377LOCAL_MODULE := plat_service_contexts
Riley Spahnf90c41f2014-06-05 15:52:02 -07001378LOCAL_MODULE_CLASS := ETC
1379LOCAL_MODULE_TAGS := optional
Steven Moreland763697d2017-11-09 11:24:56 -08001380ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001381LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
1382else
Riley Spahnf90c41f2014-06-05 15:52:02 -07001383LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001384endif
Riley Spahnf90c41f2014-06-05 15:52:02 -07001385
1386include $(BUILD_SYSTEM)/base_rules.mk
1387
Tri Vo75887dd2018-12-14 14:30:56 -08001388# TODO(b/119305624): Move product-specific sepolicy out of plat_service_contexts.
1389plat_svcfiles := $(call build_policy, service_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Riley Spahnf90c41f2014-06-05 15:52:02 -07001390
Sandeep Patila058b562016-12-27 15:10:48 -08001391plat_service_contexts.tmp := $(intermediates)/plat_service_contexts.tmp
1392$(plat_service_contexts.tmp): PRIVATE_SVC_FILES := $(plat_svcfiles)
1393$(plat_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1394$(plat_service_contexts.tmp): $(plat_svcfiles)
Riley Spahnf90c41f2014-06-05 15:52:02 -07001395 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001396 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
William Roberts7fc865a2015-09-29 14:17:38 -07001397
1398$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Sandeep Patila058b562016-12-27 15:10:48 -08001399$(LOCAL_BUILT_MODULE): $(plat_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
William Roberts7fc865a2015-09-29 14:17:38 -07001400 @mkdir -p $(dir $@)
William Robertsc9fce3f2016-04-06 11:53:04 -07001401 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
dcashman07791552016-12-07 11:27:47 -08001402 $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
Riley Spahnf90c41f2014-06-05 15:52:02 -07001403
Sandeep Patila058b562016-12-27 15:10:48 -08001404built_plat_svc := $(LOCAL_BUILT_MODULE)
1405plat_svcfiles :=
1406plat_service_contexts.tmp :=
Riley Spahnf90c41f2014-06-05 15:52:02 -07001407
1408##################################
Hung-ying Tyane83f1e52017-09-05 21:51:52 +08001409# nonplat_service_contexts is only allowed on non-full-treble devices
Steven Moreland763697d2017-11-09 11:24:56 -08001410ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
Hung-ying Tyane83f1e52017-09-05 21:51:52 +08001411
rpcraigb19665c2012-07-30 09:33:03 -04001412include $(CLEAR_VARS)
1413
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001414LOCAL_MODULE := vendor_service_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001415LOCAL_MODULE_CLASS := ETC
Sandeep Patila058b562016-12-27 15:10:48 -08001416LOCAL_MODULE_TAGS := optional
Sandeep Patila058b562016-12-27 15:10:48 -08001417LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001418
1419include $(BUILD_SYSTEM)/base_rules.mk
1420
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001421vendor_svcfiles := $(call build_policy, service_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001422
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001423vendor_service_contexts.tmp := $(intermediates)/vendor_service_contexts.tmp
1424$(vendor_service_contexts.tmp): PRIVATE_SVC_FILES := $(vendor_svcfiles)
1425$(vendor_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1426$(vendor_service_contexts.tmp): $(vendor_svcfiles)
Sandeep Patila058b562016-12-27 15:10:48 -08001427 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001428 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Sandeep Patila058b562016-12-27 15:10:48 -08001429
1430$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001431$(LOCAL_BUILT_MODULE): $(vendor_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
William Roberts7fc865a2015-09-29 14:17:38 -07001432 @mkdir -p $(dir $@)
William Robertsc9fce3f2016-04-06 11:53:04 -07001433 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
dcashman07791552016-12-07 11:27:47 -08001434 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
William Roberts7fc865a2015-09-29 14:17:38 -07001435
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001436built_vendor_svc := $(LOCAL_BUILT_MODULE)
1437vendor_svcfiles :=
1438vendor_service_contexts.tmp :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001439
Hung-ying Tyane83f1e52017-09-05 21:51:52 +08001440endif
1441
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001442##################################
1443include $(CLEAR_VARS)
1444
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001445LOCAL_MODULE := plat_hwservice_contexts
1446LOCAL_MODULE_CLASS := ETC
1447LOCAL_MODULE_TAGS := optional
Steven Moreland763697d2017-11-09 11:24:56 -08001448ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001449LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
1450else
1451LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
1452endif
1453
1454include $(BUILD_SYSTEM)/base_rules.mk
1455
Tri Vo75887dd2018-12-14 14:30:56 -08001456# TODO(b/119305624): Move product-specific sepolicy out of plat_hwservice_contexts.
1457plat_hwsvcfiles := $(call build_policy, hwservice_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001458
1459plat_hwservice_contexts.tmp := $(intermediates)/plat_hwservice_contexts.tmp
1460$(plat_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(plat_hwsvcfiles)
1461$(plat_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1462$(plat_hwservice_contexts.tmp): $(plat_hwsvcfiles)
1463 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001464 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001465
1466$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1467$(LOCAL_BUILT_MODULE): $(plat_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
1468 @mkdir -p $(dir $@)
1469 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1470 $(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
1471
1472plat_hwsvcfiles :=
1473plat_hwservice_contexts.tmp :=
1474
1475##################################
1476include $(CLEAR_VARS)
1477
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001478LOCAL_MODULE := vendor_hwservice_contexts
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001479LOCAL_MODULE_CLASS := ETC
1480LOCAL_MODULE_TAGS := optional
Steven Moreland763697d2017-11-09 11:24:56 -08001481ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001482LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1483else
1484LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
1485endif
1486
1487include $(BUILD_SYSTEM)/base_rules.mk
1488
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001489vendor_hwsvcfiles := $(call build_policy, hwservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001490
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001491vendor_hwservice_contexts.tmp := $(intermediates)/vendor_hwservice_contexts.tmp
1492$(vendor_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(vendor_hwsvcfiles)
1493$(vendor_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1494$(vendor_hwservice_contexts.tmp): $(vendor_hwsvcfiles)
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001495 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001496 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001497
1498$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001499$(LOCAL_BUILT_MODULE): $(vendor_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001500 @mkdir -p $(dir $@)
1501 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1502 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
1503
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001504vendor_hwsvcfiles :=
1505vendor_hwservice_contexts.tmp :=
1506
Bowgo Tsaiad6231f2017-11-29 16:16:26 +08001507##################################
1508include $(CLEAR_VARS)
1509
1510LOCAL_MODULE := odm_hwservice_contexts
1511LOCAL_MODULE_CLASS := ETC
1512LOCAL_MODULE_TAGS := optional
1513LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1514
1515include $(BUILD_SYSTEM)/base_rules.mk
1516
1517odm_hwsvcfiles := $(call build_policy, hwservice_contexts, $(BOARD_ODM_SEPOLICY_DIRS))
1518
1519odm_hwservice_contexts.tmp := $(intermediates)/odm_hwservice_contexts.tmp
1520$(odm_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(odm_hwsvcfiles)
1521$(odm_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1522$(odm_hwservice_contexts.tmp): $(odm_hwsvcfiles)
1523 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001524 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Bowgo Tsaiad6231f2017-11-29 16:16:26 +08001525
1526$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1527$(LOCAL_BUILT_MODULE): $(odm_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
1528 @mkdir -p $(dir $@)
1529 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1530 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
1531
1532odm_hwsvcfiles :=
1533odm_hwservice_contexts.tmp :=
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001534
1535##################################
1536include $(CLEAR_VARS)
1537
Martijn Coenen6676c232017-03-31 17:29:53 -07001538LOCAL_MODULE := vndservice_contexts
1539LOCAL_MODULE_CLASS := ETC
1540LOCAL_MODULE_TAGS := optional
Steven Moreland763697d2017-11-09 11:24:56 -08001541ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
Martijn Coenen6676c232017-03-31 17:29:53 -07001542LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1543else
1544LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
1545endif
1546
1547include $(BUILD_SYSTEM)/base_rules.mk
1548
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001549vnd_svcfiles := $(call build_policy, vndservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Martijn Coenen6676c232017-03-31 17:29:53 -07001550
1551vndservice_contexts.tmp := $(intermediates)/vndservice_contexts.tmp
1552$(vndservice_contexts.tmp): PRIVATE_SVC_FILES := $(vnd_svcfiles)
1553$(vndservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1554$(vndservice_contexts.tmp): $(vnd_svcfiles)
1555 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001556 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Martijn Coenen6676c232017-03-31 17:29:53 -07001557
1558$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1559$(LOCAL_BUILT_MODULE): $(vndservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
1560 @mkdir -p $(dir $@)
1561 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
Martijn Coenenee976622017-04-07 10:08:55 -07001562 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -v $(PRIVATE_SEPOLICY) $@
Martijn Coenen6676c232017-03-31 17:29:53 -07001563
1564vnd_svcfiles :=
1565vndservice_contexts.tmp :=
1566##################################
1567include $(CLEAR_VARS)
1568
dcashman90b3b942016-12-14 13:47:55 -08001569LOCAL_MODULE := plat_mac_permissions.xml
rpcraigb19665c2012-07-30 09:33:03 -04001570LOCAL_MODULE_CLASS := ETC
1571LOCAL_MODULE_TAGS := optional
Jeff Vander Stoepbba9e7b2017-03-10 15:51:23 -08001572LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
rpcraigb19665c2012-07-30 09:33:03 -04001573
William Roberts2c8a55d2012-11-30 14:59:09 -08001574include $(BUILD_SYSTEM)/base_rules.mk
rpcraigb19665c2012-07-30 09:33:03 -04001575
Geremy Condracd4104e2013-03-26 18:19:12 +00001576# Build keys.conf
dcashman90b3b942016-12-14 13:47:55 -08001577plat_mac_perms_keys.tmp := $(intermediates)/plat_keys.tmp
1578$(plat_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Tri Vo75887dd2018-12-14 14:30:56 -08001579$(plat_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Geremy Condracd4104e2013-03-26 18:19:12 +00001580 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001581 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
Geremy Condracd4104e2013-03-26 18:19:12 +00001582
Tri Vo75887dd2018-12-14 14:30:56 -08001583# TODO(b/119305624): Move product-specific sepolicy out of plat_mac_permissions.
1584all_plat_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
rpcraigb19665c2012-07-30 09:33:03 -04001585
Shinichiro Hamajief0c14d2016-05-13 16:04:58 +09001586# Should be synced with keys.conf.
dcashman90b3b942016-12-14 13:47:55 -08001587all_plat_keys := platform media shared testkey
1588all_plat_keys := $(all_keys:%=$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))/%.x509.pem)
Shinichiro Hamajief0c14d2016-05-13 16:04:58 +09001589
dcashman90b3b942016-12-14 13:47:55 -08001590$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_plat_mac_perms_files)
1591$(LOCAL_BUILT_MODULE): $(plat_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1592$(all_plat_mac_perms_files) $(all_plat_keys)
Geremy Condracd4104e2013-03-26 18:19:12 +00001593 @mkdir -p $(dir $@)
Nick Kralevichc3c90522013-10-25 12:25:36 -07001594 $(hide) DEFAULT_SYSTEM_DEV_CERTIFICATE="$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))" \
William Roberts6aabc1c2015-07-30 11:44:26 -07001595 $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
Geremy Condracd4104e2013-03-26 18:19:12 +00001596
William Roberts6aabc1c2015-07-30 11:44:26 -07001597all_mac_perms_files :=
dcashman90b3b942016-12-14 13:47:55 -08001598all_plat_keys :=
1599plat_mac_perms_keys.tmp :=
1600
1601##################################
1602include $(CLEAR_VARS)
1603
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001604LOCAL_MODULE := vendor_mac_permissions.xml
dcashman90b3b942016-12-14 13:47:55 -08001605LOCAL_MODULE_CLASS := ETC
1606LOCAL_MODULE_TAGS := optional
Jeff Vander Stoepbba9e7b2017-03-10 15:51:23 -08001607LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashman90b3b942016-12-14 13:47:55 -08001608
1609include $(BUILD_SYSTEM)/base_rules.mk
1610
1611# Build keys.conf
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001612vendor_mac_perms_keys.tmp := $(intermediates)/vendor_keys.tmp
1613$(vendor_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1614$(vendor_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
dcashman90b3b942016-12-14 13:47:55 -08001615 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001616 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
dcashman90b3b942016-12-14 13:47:55 -08001617
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001618all_vendor_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
dcashman90b3b942016-12-14 13:47:55 -08001619
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001620$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_vendor_mac_perms_files)
1621$(LOCAL_BUILT_MODULE): $(vendor_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1622$(all_vendor_mac_perms_files)
dcashman90b3b942016-12-14 13:47:55 -08001623 @mkdir -p $(dir $@)
1624 $(hide) $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
1625
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001626vendor_mac_perms_keys.tmp :=
1627all_vendor_mac_perms_files :=
William Roberts6aabc1c2015-07-30 11:44:26 -07001628
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +08001629##################################
1630include $(CLEAR_VARS)
1631
1632LOCAL_MODULE := odm_mac_permissions.xml
1633LOCAL_MODULE_CLASS := ETC
1634LOCAL_MODULE_TAGS := optional
1635LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1636
1637include $(BUILD_SYSTEM)/base_rules.mk
1638
1639# Build keys.conf
1640odm_mac_perms_keys.tmp := $(intermediates)/odm_keys.tmp
1641$(odm_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1642$(odm_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(BOARD_ODM_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
1643 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001644 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +08001645
1646all_odm_mac_perms_files := $(call build_policy, mac_permissions.xml, $(BOARD_ODM_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
1647
1648$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_odm_mac_perms_files)
1649$(LOCAL_BUILT_MODULE): $(odm_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1650$(all_odm_mac_perms_files)
1651 @mkdir -p $(dir $@)
1652 $(hide) $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
1653
1654odm_mac_perms_keys.tmp :=
1655all_odm_mac_perms_files :=
1656
Dan Cashman91d398d2017-09-26 12:58:29 -07001657#################################
1658include $(CLEAR_VARS)
1659LOCAL_MODULE := sepolicy_tests
1660LOCAL_MODULE_CLASS := ETC
1661LOCAL_MODULE_TAGS := tests
1662
1663include $(BUILD_SYSTEM)/base_rules.mk
1664
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001665all_fc_files := $(built_plat_fc) $(built_vendor_fc)
Bowgo Tsaibae15172017-11-29 16:14:53 +08001666ifdef BOARD_ODM_SEPOLICY_DIRS
1667all_fc_files += $(built_odm_fc)
1668endif
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001669all_fc_args := $(foreach file, $(all_fc_files), -f $(file))
1670
Dan Cashman91d398d2017-09-26 12:58:29 -07001671sepolicy_tests := $(intermediates)/sepolicy_tests
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001672$(sepolicy_tests): ALL_FC_ARGS := $(all_fc_args)
Dan Cashman91d398d2017-09-26 12:58:29 -07001673$(sepolicy_tests): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001674$(sepolicy_tests): $(HOST_OUT_EXECUTABLES)/sepolicy_tests $(all_fc_files) $(built_sepolicy)
Dan Cashman91d398d2017-09-26 12:58:29 -07001675 @mkdir -p $(dir $@)
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -07001676 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy_tests -l $(HOST_OUT)/lib64/libsepolwrap.$(SHAREDLIB_EXT) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001677 $(ALL_FC_ARGS) -p $(PRIVATE_SEPOLICY)
Dan Cashman91d398d2017-09-26 12:58:29 -07001678 $(hide) touch $@
1679
rpcraigb19665c2012-07-30 09:33:03 -04001680##################################
Tri Vo14069262018-01-31 16:22:35 -08001681intermediates := $(call intermediates-dir-for,ETC,built_plat_sepolicy,,,,)
Dan Cashman91d398d2017-09-26 12:58:29 -07001682
1683# plat_sepolicy - the current platform policy only, built into a policy binary.
1684# TODO - this currently excludes partner extensions, but support should be added
1685# to enable partners to add their own compatibility mapping
Tri Vo75887dd2018-12-14 14:30:56 -08001686BASE_PLAT_PUBLIC_POLICY := $(PLAT_PUBLIC_POLICY)
1687BASE_PLAT_PRIVATE_POLICY := $(PLAT_PRIVATE_POLICY)
Dan Cashman91d398d2017-09-26 12:58:29 -07001688base_plat_policy.conf := $(intermediates)/base_plat_policy.conf
1689$(base_plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1690$(base_plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galensonc1486212018-03-23 12:40:26 -07001691$(base_plat_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
Dan Cashman91d398d2017-09-26 12:58:29 -07001692$(base_plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1693$(base_plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
1694$(base_plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -08001695$(base_plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := true
Jaekyun Seoke4971452017-10-19 16:54:49 +09001696$(base_plat_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Dan Cashman91d398d2017-09-26 12:58:29 -07001697$(base_plat_policy.conf): $(call build_policy, $(sepolicy_build_files), \
1698$(BASE_PLAT_PUBLIC_POLICY) $(BASE_PLAT_PRIVATE_POLICY))
1699 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +08001700 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Dan Cashman91d398d2017-09-26 12:58:29 -07001701
1702built_plat_sepolicy := $(intermediates)/built_plat_sepolicy
1703$(built_plat_sepolicy): PRIVATE_ADDITIONAL_CIL_FILES := \
1704 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(BASE_PLAT_PRIVATE_POLICY))
Joel Galenson5988b562018-01-03 16:53:24 -08001705$(built_plat_sepolicy): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Dan Cashman91d398d2017-09-26 12:58:29 -07001706$(built_plat_sepolicy): $(base_plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
1707$(HOST_OUT_EXECUTABLES)/secilc \
Joel Galenson5988b562018-01-03 16:53:24 -08001708$(call build_policy, $(sepolicy_build_cil_workaround_files), $(BASE_PLAT_PRIVATE_POLICY)) \
1709$(built_sepolicy_neverallows)
Dan Cashman91d398d2017-09-26 12:58:29 -07001710 @mkdir -p $(dir $@)
1711 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
1712 $(POLICYVERS) -o $@ $<
1713 $(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@
Joel Galenson5988b562018-01-03 16:53:24 -08001714 $(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 -07001715
Tri Voe3f4f772018-09-28 17:21:08 -07001716base_plat_pub_policy.conf := $(intermediates)/base_plat_pub_policy.conf
1717$(base_plat_pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1718$(base_plat_pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
1719$(base_plat_pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
1720$(base_plat_pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1721$(base_plat_pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
1722$(base_plat_pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1723$(base_plat_pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := true
1724$(base_plat_pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
1725$(base_plat_pub_policy.conf): $(call build_policy, $(sepolicy_build_files), \
1726$(BASE_PLAT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
1727 $(transform-policy-to-conf)
1728
1729base_plat_pub_policy.cil := $(intermediates)/base_plat_pub_policy.cil
1730$(base_plat_pub_policy.cil): PRIVATE_POL_CONF := $(base_plat_pub_policy.conf)
1731$(base_plat_pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
Tri Vod57789f2018-12-17 16:35:41 -08001732$(base_plat_pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
1733$(HOST_OUT_EXECUTABLES)/build_sepolicy $(base_plat_pub_policy.conf) $(reqd_policy_mask.cil)
Tri Voe3f4f772018-09-28 17:21:08 -07001734 @mkdir -p $(dir $@)
Tri Vod57789f2018-12-17 16:35:41 -08001735 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
1736 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
1737 -f $(PRIVATE_REQD_MASK) -t $@
Tri Voe3f4f772018-09-28 17:21:08 -07001738
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001739all_fc_files := $(built_plat_fc) $(built_vendor_fc)
Bowgo Tsaibae15172017-11-29 16:14:53 +08001740ifdef BOARD_ODM_SEPOLICY_DIRS
1741all_fc_files += $(built_odm_fc)
1742endif
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001743all_fc_args := $(foreach file, $(all_fc_files), -f $(file))
1744
Tri Vo14069262018-01-31 16:22:35 -08001745# Tests for Treble compatibility of current platform policy and vendor policy of
1746# given release version.
1747version_under_treble_tests := 26.0
1748include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
Dan Cashman91d398d2017-09-26 12:58:29 -07001749
Tri Vo9299d932018-01-31 16:50:28 -08001750version_under_treble_tests := 27.0
1751include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
1752
Jae Shin1fa96342018-07-11 18:30:44 +09001753version_under_treble_tests := 28.0
1754include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
1755
Dan Cashman91d398d2017-09-26 12:58:29 -07001756BASE_PLAT_PUBLIC_POLICY :=
1757BASE_PLAT_PRIVATE_POLICY :=
1758base_plat_policy.conf :=
Tri Voe3f4f772018-09-28 17:21:08 -07001759base_plat_pub_policy.conf :=
Dan Cashman91d398d2017-09-26 12:58:29 -07001760plat_sepolicy :=
1761
Jeff Vander Stoep1fc06822017-05-31 15:36:07 -07001762#################################
Tri Vo81198bb2018-03-15 11:38:08 -07001763include $(CLEAR_VARS)
1764LOCAL_MODULE := sepolicy_freeze_test
1765LOCAL_MODULE_CLASS := ETC
1766LOCAL_MODULE_TAGS := tests
1767
1768include $(BUILD_SYSTEM)/base_rules.mk
1769
1770base_plat_public := $(LOCAL_PATH)/public
1771base_plat_private := $(LOCAL_PATH)/private
1772base_plat_public_prebuilt := \
1773 $(LOCAL_PATH)/prebuilts/api/$(PLATFORM_SEPOLICY_VERSION)/public
1774base_plat_private_prebuilt := \
1775 $(LOCAL_PATH)/prebuilts/api/$(PLATFORM_SEPOLICY_VERSION)/private
1776
1777all_frozen_files := $(call build_policy,$(sepolicy_build_files), \
1778$(base_plat_public) $(base_plat_private) $(base_plat_public_prebuilt) $(base_plat_private_prebuilt))
1779
1780$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PUBLIC := $(base_plat_public)
1781$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PRIVATE := $(base_plat_private)
1782$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PUBLIC_PREBUILT := $(base_plat_public_prebuilt)
1783$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PRIVATE_PREBUILT := $(base_plat_private_prebuilt)
1784$(LOCAL_BUILT_MODULE): $(all_frozen_files)
1785ifneq ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
Joel Galenson98f83b62018-05-22 09:22:41 -07001786 @diff -rq -x bug_map $(PRIVATE_BASE_PLAT_PUBLIC_PREBUILT) $(PRIVATE_BASE_PLAT_PUBLIC)
1787 @diff -rq -x bug_map $(PRIVATE_BASE_PLAT_PRIVATE_PREBUILT) $(PRIVATE_BASE_PLAT_PRIVATE)
Tri Vo81198bb2018-03-15 11:38:08 -07001788endif # ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
1789 $(hide) touch $@
1790
1791base_plat_public :=
1792base_plat_private :=
1793base_plat_public_prebuilt :=
1794base_plat_private_prebuilt :=
1795all_frozen_files :=
1796
1797#################################
1798
rpcraig47cd3962012-10-17 21:09:52 -04001799
Dan Cashman1c040272016-12-15 15:28:44 -08001800add_nl :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001801build_vendor_policy :=
Bowgo Tsaibae15172017-11-29 16:14:53 +08001802build_odm_policy :=
Dan Cashman1c040272016-12-15 15:28:44 -08001803build_policy :=
dcashmand225b692016-12-12 09:29:04 -08001804built_plat_fc :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001805built_vendor_fc :=
Bowgo Tsaibae15172017-11-29 16:14:53 +08001806built_odm_fc :=
Richard Hainesc8801fe2015-12-11 10:39:19 +00001807built_nl :=
Alex Klyubin8f7173b2017-02-25 14:47:53 -08001808built_plat_cil :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001809built_plat_pub_vers_cil :=
Alex Klyubin8f7173b2017-02-25 14:47:53 -08001810built_mapping_cil :=
Sandeep Patila86316e2016-12-27 16:08:44 -08001811built_plat_pc :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001812built_vendor_cil :=
1813built_vendor_pc :=
1814built_vendor_sc :=
Bowgo Tsai45457e32017-11-27 11:41:33 +08001815built_odm_cil :=
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001816built_odm_pc :=
Bowgo Tsaiecf656b2017-11-29 16:15:28 +08001817built_odm_sc :=
Dan Cashman9c038072016-12-22 07:15:18 -08001818built_plat_sc :=
Alex Klyubin193dccd2017-03-07 14:05:57 -08001819built_precompiled_sepolicy :=
Dan Cashman1c040272016-12-15 15:28:44 -08001820built_sepolicy :=
Joel Galenson5988b562018-01-03 16:53:24 -08001821built_sepolicy_neverallows :=
Sandeep Patila058b562016-12-27 15:10:48 -08001822built_plat_svc :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001823built_vendor_svc :=
Joel Galensonc1486212018-03-23 12:40:26 -07001824built_plat_sepolicy :=
Jeff Vander Stoepb8787692017-04-21 15:57:07 -07001825mapping_policy :=
Dan Cashman1c040272016-12-15 15:28:44 -08001826my_target_arch :=
dcashman1faa6442016-11-28 07:20:28 -08001827plat_pub_policy.cil :=
1828reqd_policy_mask.cil :=
Dan Cashman1c040272016-12-15 15:28:44 -08001829sepolicy_build_files :=
Alex Klyubin7cda44f2017-03-21 14:28:53 -07001830sepolicy_build_cil_workaround_files :=
Jeff Vander Stoep74434842017-03-13 12:22:15 -07001831with_asan :=
Alice Chucdfb06f2012-11-01 11:33:04 -07001832
1833include $(call all-makefiles-under,$(LOCAL_PATH))