blob: 4387090849de7c4af7e99fbea6995d25fdd3d98b [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
Sandeep Patil42f95982017-04-07 14:18:48 -070077# The default platform policy version.
Dan Cashman6f14f6b2017-04-07 16:36:23 -070078BOARD_SEPOLICY_VERS := $(PLATFORM_SEPOLICY_VERSION)
dcashman2e00e632016-10-12 14:58:09 -070079endif
dcashmancc39f632016-07-22 13:13:11 -070080
Joel Galenson5988b562018-01-03 16:53:24 -080081NEVERALLOW_ARG :=
82ifeq ($(SELINUX_IGNORE_NEVERALLOWS),true)
83ifeq ($(TARGET_BUILD_VARIANT),user)
84$(error SELINUX_IGNORE_NEVERALLOWS := true cannot be used in user builds)
85endif
86$(warning Be careful when using the SELINUX_IGNORE_NEVERALLOWS flag. \
87 It does not work in user builds and using it will \
88 not stop you from failing CTS.)
89NEVERALLOW_ARG := -N
90endif
91
Bowgo Tsai45457e32017-11-27 11:41:33 +080092# BOARD_SEPOLICY_DIRS was used for vendor/odm sepolicy customization before.
93# It has been replaced by BOARD_VENDOR_SEPOLICY_DIRS (mandatory) and
94# BOARD_ODM_SEPOLICY_DIRS (optional). BOARD_SEPOLICY_DIRS is still allowed for
95# backward compatibility, which will be merged into BOARD_VENDOR_SEPOLICY_DIRS.
Bowgo Tsaiafbcf212018-02-05 17:34:52 +080096ifdef BOARD_SEPOLICY_DIRS
97BOARD_VENDOR_SEPOLICY_DIRS += $(BOARD_SEPOLICY_DIRS)
98endif
Dan Cashman4d24a772017-04-12 14:28:34 -070099
Bowgo Tsai45457e32017-11-27 11:41:33 +0800100ifdef BOARD_ODM_SEPOLICY_DIRS
101ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
102$(error PRODUCT_SEPOLICY_SPLIT needs to be true when using BOARD_ODM_SEPOLICY_DIRS)
103endif
104endif
105
dcashmancc39f632016-07-22 13:13:11 -0700106###########################################################
107# Compute policy files to be used in policy build.
108# $(1): files to include
109# $(2): directories in which to find files
110###########################################################
111
112define build_policy
113$(foreach type, $(1), $(foreach file, $(addsuffix /$(type), $(2)), $(sort $(wildcard $(file)))))
114endef
William Roberts29d14682016-01-04 12:20:57 -0800115
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800116# Builds paths for all policy files found in BOARD_VENDOR_SEPOLICY_DIRS.
William Roberts49693f12016-01-04 12:20:57 -0800117# $(1): the set of policy name paths to build
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800118build_vendor_policy = $(call build_policy, $(1), $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS))
William Roberts49693f12016-01-04 12:20:57 -0800119
Bowgo Tsaibae15172017-11-29 16:14:53 +0800120# Builds paths for all policy files found in BOARD_ODM_SEPOLICY_DIRS.
121build_odm_policy = $(call build_policy, $(1), $(BOARD_ODM_SEPOLICY_DIRS))
122
Richard Hainesc8801fe2015-12-11 10:39:19 +0000123# Add a file containing only a newline in-between each policy configuration
124# 'contexts' file. This will allow OEM policy configuration files without a
125# final newline (0x0A) to be built correctly by the m4(1) macro processor.
126# $(1): the set of contexts file names.
127# $(2): the file containing only 0x0A.
128add_nl = $(foreach entry, $(1), $(subst $(entry), $(entry) $(2), $(entry)))
129
dcashman704741a2014-07-25 19:11:52 -0700130sepolicy_build_files := security_classes \
131 initial_sids \
132 access_vectors \
133 global_macros \
Nick Kralevicha17a2662014-11-05 15:30:41 -0800134 neverallow_macros \
dcashman704741a2014-07-25 19:11:52 -0700135 mls_macros \
dcashman2e00e632016-10-12 14:58:09 -0700136 mls_decl \
dcashman704741a2014-07-25 19:11:52 -0700137 mls \
138 policy_capabilities \
139 te_macros \
140 attributes \
Jeff Vander Stoepcbaa2b72015-12-22 10:39:34 -0800141 ioctl_defines \
Jeff Vander Stoepde9b5302015-06-05 15:28:55 -0700142 ioctl_macros \
dcashman704741a2014-07-25 19:11:52 -0700143 *.te \
dcashman2e00e632016-10-12 14:58:09 -0700144 roles_decl \
dcashman704741a2014-07-25 19:11:52 -0700145 roles \
146 users \
147 initial_sid_contexts \
148 fs_use \
149 genfs_contexts \
150 port_contexts
151
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700152# CIL files which contain workarounds for current limitation of human-readable
153# module policy language. These files are appended to the CIL files produced
154# from module language files.
155sepolicy_build_cil_workaround_files := technical_debt.cil
156
Dan Cashman1c040272016-12-15 15:28:44 -0800157my_target_arch := $(TARGET_ARCH)
158ifneq (,$(filter mips mips64,$(TARGET_ARCH)))
159 my_target_arch := mips
160endif
161
Jeff Vander Stoepd2053bd2017-03-15 13:37:35 -0700162intermediates := $(TARGET_OUT_INTERMEDIATES)/ETC/sepolicy_intermediates
163
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700164with_asan := false
165ifneq (,$(filter address,$(SANITIZE_TARGET)))
166 with_asan := true
167endif
168
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -0700169# Library extension for host-side tests
Jeff Vander Stoepe06e4c12017-10-04 18:15:44 -0700170ifeq ($(HOST_OS),darwin)
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -0700171SHAREDLIB_EXT=dylib
172else
173SHAREDLIB_EXT=so
174endif
175
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100176#################################
177
Dan Cashman4f9a6482017-04-10 12:27:18 -0700178include $(CLEAR_VARS)
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100179
Dan Cashman4f9a6482017-04-10 12:27:18 -0700180LOCAL_MODULE := selinux_policy
181LOCAL_MODULE_TAGS := optional
Tri Vo1f4a28b2018-05-08 18:52:11 -0700182LOCAL_REQUIRED_MODULES += \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100183 selinux_policy_nonsystem \
184 selinux_policy_system \
Tri Vo1f4a28b2018-05-08 18:52:11 -0700185
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100186include $(BUILD_PHONY_PACKAGE)
Tri Vo1f4a28b2018-05-08 18:52:11 -0700187
Tri Vo1f4a28b2018-05-08 18:52:11 -0700188
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100189include $(CLEAR_VARS)
190LOCAL_MODULE := selinux_policy_system
Tri Vo1f4a28b2018-05-08 18:52:11 -0700191# These build targets are not used on non-Treble devices. However, we build these to avoid
192# divergence between Treble and non-Treble devices.
Dan Cashman4f9a6482017-04-10 12:27:18 -0700193LOCAL_REQUIRED_MODULES += \
Tri Vo937e6642019-01-15 15:16:55 -0800194 plat_mapping_file \
Yifan Hong617e8532018-02-07 11:13:57 -0800195 $(addsuffix .cil,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
Dan Cashman4f9a6482017-04-10 12:27:18 -0700196 plat_sepolicy.cil \
197 plat_and_mapping_sepolicy.cil.sha256 \
198 secilc \
Dan Cashman91d398d2017-09-26 12:58:29 -0700199
Jeff Vander Stoep7a68c5a2017-06-08 13:24:15 -0700200LOCAL_REQUIRED_MODULES += \
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800201 build_sepolicy \
Jeff Vander Stoep13fb5ed2017-08-22 13:29:53 -0700202 plat_file_contexts \
203 plat_mac_permissions.xml \
204 plat_property_contexts \
205 plat_seapp_contexts \
206 plat_service_contexts \
207 plat_hwservice_contexts \
Dan Cashman91d398d2017-09-26 12:58:29 -0700208 searchpolicy \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100209
210# This conditional inclusion closely mimics the conditional logic
211# inside init/init.cpp for loading SELinux policy from files.
212ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
213# The following files are only allowed for non-Treble devices.
214LOCAL_REQUIRED_MODULES += \
215 sepolicy \
216 vendor_service_contexts \
217
218endif # ($(PRODUCT_SEPOLICY_SPLIT),true)
Jeff Vander Stoep7a68c5a2017-06-08 13:24:15 -0700219
Dan Cashman91d398d2017-09-26 12:58:29 -0700220ifneq ($(TARGET_BUILD_VARIANT), user)
221LOCAL_REQUIRED_MODULES += \
222 selinux_denial_metadata \
223
224endif
225
226ifneq ($(with_asan),true)
Jeff Vander Stoep3d4965b2018-02-13 20:29:55 -0800227ifneq ($(SELINUX_IGNORE_NEVERALLOWS),true)
Dan Cashman91d398d2017-09-26 12:58:29 -0700228LOCAL_REQUIRED_MODULES += \
229 sepolicy_tests \
Jae Shin1fa96342018-07-11 18:30:44 +0900230 $(addprefix treble_sepolicy_tests_,$(PLATFORM_SEPOLICY_COMPAT_VERSIONS)) \
Dan Cashman91d398d2017-09-26 12:58:29 -0700231
232endif
Jeff Vander Stoep3d4965b2018-02-13 20:29:55 -0800233endif
Dan Cashman91d398d2017-09-26 12:58:29 -0700234
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100235ifneq ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
236LOCAL_REQUIRED_MODULES += \
237 sepolicy_freeze_test \
238
239endif # ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
240
241include $(BUILD_PHONY_PACKAGE)
242
243#################################
244
245include $(CLEAR_VARS)
246
247LOCAL_MODULE := selinux_policy_nonsystem
248# Include precompiled policy, unless told otherwise.
249ifneq ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
250LOCAL_REQUIRED_MODULES += \
251 precompiled_sepolicy \
252 precompiled_sepolicy.plat_and_mapping.sha256 \
Anton Hansson8cfe1e62018-07-02 14:31:29 +0100253
254endif # ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
255
256
257# These build targets are not used on non-Treble devices. However, we build these to avoid
258# divergence between Treble and non-Treble devices.
259LOCAL_REQUIRED_MODULES += \
260 plat_pub_versioned.cil \
261 vendor_sepolicy.cil \
262 plat_sepolicy_vers.txt \
263
264LOCAL_REQUIRED_MODULES += \
265 vendor_file_contexts \
266 vendor_mac_permissions.xml \
267 vendor_property_contexts \
268 vendor_seapp_contexts \
269 vendor_hwservice_contexts \
270 vndservice_contexts \
271
Bowgo Tsai45457e32017-11-27 11:41:33 +0800272ifdef BOARD_ODM_SEPOLICY_DIRS
Bowgo Tsaibae15172017-11-29 16:14:53 +0800273LOCAL_REQUIRED_MODULES += \
274 odm_sepolicy.cil \
Bowgo Tsaiecf656b2017-11-29 16:15:28 +0800275 odm_file_contexts \
Bowgo Tsai1f717b12017-11-29 16:15:55 +0800276 odm_seapp_contexts \
Bowgo Tsaiad6231f2017-11-29 16:16:26 +0800277 odm_property_contexts \
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +0800278 odm_hwservice_contexts \
279 odm_mac_permissions.xml
Bowgo Tsai45457e32017-11-27 11:41:33 +0800280endif
Tri Vo75887dd2018-12-14 14:30:56 -0800281
282ifdef HAS_PRODUCT_SEPOLICY
283LOCAL_REQUIRED_MODULES += \
284 product_sepolicy.cil \
Tri Vo3361ec42018-12-18 19:51:19 -0800285 product_file_contexts \
Tri Voade74162018-12-20 16:13:10 -0800286 product_hwservice_contexts \
Tri Vo5da72002018-12-20 19:31:42 -0800287 product_property_contexts \
Tri Vo35076782018-12-21 10:46:45 -0800288 product_seapp_contexts \
Tri Vo6ac08962018-12-21 12:28:14 -0800289 product_service_contexts \
Tri Vo35650d52018-12-21 16:07:21 -0800290 product_mac_permissions.xml \
Tri Vo937e6642019-01-15 15:16:55 -0800291 product_mapping_file \
Tri Vo75887dd2018-12-14 14:30:56 -0800292
293endif
Dan Cashman4f9a6482017-04-10 12:27:18 -0700294include $(BUILD_PHONY_PACKAGE)
295
Joel Galenson5988b562018-01-03 16:53:24 -0800296#################################
297include $(CLEAR_VARS)
298
299LOCAL_MODULE := sepolicy_neverallows
300LOCAL_MODULE_CLASS := ETC
301LOCAL_MODULE_TAGS := optional
302LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
303
304include $(BUILD_SYSTEM)/base_rules.mk
305
306# sepolicy_policy.conf - All of the policy for the device. This is only used to
307# check neverallow rules.
308sepolicy_policy.conf := $(intermediates)/policy.conf
309$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
310$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800311$(sepolicy_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
Joel Galenson5988b562018-01-03 16:53:24 -0800312$(sepolicy_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
313$(sepolicy_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
314$(sepolicy_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
315$(sepolicy_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
316$(sepolicy_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo5dbaa242018-12-13 13:36:10 -0800317$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) $(PLAT_VENDOR_POLICY) \
Tri Vo75887dd2018-12-14 14:30:56 -0800318$(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY) \
Tri Vo5dbaa242018-12-13 13:36:10 -0800319$(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
Joel Galenson5988b562018-01-03 16:53:24 -0800320 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800321 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Joel Galenson5988b562018-01-03 16:53:24 -0800322
Nick Kralevich94c88932018-11-27 13:45:47 -0800323# sepolicy_policy_2.conf - All of the policy for the device. This is only used to
324# check neverallow rules using sepolicy-analyze, similar to CTS.
325sepolicy_policy_2.conf := $(intermediates)/policy_2.conf
326$(sepolicy_policy_2.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
327$(sepolicy_policy_2.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
328$(sepolicy_policy_2.conf): PRIVATE_TARGET_BUILD_VARIANT := user
329$(sepolicy_policy_2.conf): PRIVATE_EXCLUDE_BUILD_TEST := true
330$(sepolicy_policy_2.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
331$(sepolicy_policy_2.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
332$(sepolicy_policy_2.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
333$(sepolicy_policy_2.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
334$(sepolicy_policy_2.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo5dbaa242018-12-13 13:36:10 -0800335$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) $(PLAT_VENDOR_POLICY) \
Tri Vo75887dd2018-12-14 14:30:56 -0800336$(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY) \
Tri Vo5dbaa242018-12-13 13:36:10 -0800337$(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
Nick Kralevich94c88932018-11-27 13:45:47 -0800338 $(transform-policy-to-conf)
339 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
340
341$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_1 := $(sepolicy_policy.conf)
342$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_2 := $(sepolicy_policy_2.conf)
343$(LOCAL_BUILT_MODULE): $(sepolicy_policy.conf) $(sepolicy_policy_2.conf) \
344 $(HOST_OUT_EXECUTABLES)/checkpolicy $(HOST_OUT_EXECUTABLES)/sepolicy-analyze
Joel Galenson5988b562018-01-03 16:53:24 -0800345ifneq ($(SELINUX_IGNORE_NEVERALLOWS),true)
346 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c \
Nick Kralevich94c88932018-11-27 13:45:47 -0800347 $(POLICYVERS) -o $@.tmp $(PRIVATE_SEPOLICY_1)
348 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp neverallow -w -f $(PRIVATE_SEPOLICY_2) || \
349 ( echo "" 1>&2; \
350 echo "sepolicy-analyze failed. This is most likely due to the use" 1>&2; \
351 echo "of an expanded attribute in a neverallow assertion. Please fix" 1>&2; \
352 echo "the policy." 1>&2; \
353 exit 1 )
Joel Galenson5988b562018-01-03 16:53:24 -0800354endif # ($(SELINUX_IGNORE_NEVERALLOWS),true)
Nick Kralevich94c88932018-11-27 13:45:47 -0800355 $(hide) touch $@.tmp
356 $(hide) mv $@.tmp $@
Joel Galenson5988b562018-01-03 16:53:24 -0800357
358sepolicy_policy.conf :=
Nick Kralevich94c88932018-11-27 13:45:47 -0800359sepolicy_policy_2.conf :=
Joel Galenson5988b562018-01-03 16:53:24 -0800360built_sepolicy_neverallows := $(LOCAL_BUILT_MODULE)
361
Ying Wang02fb5f32012-01-17 17:51:09 -0800362##################################
dcashman2e00e632016-10-12 14:58:09 -0700363# reqd_policy_mask - a policy.conf file which contains only the bare minimum
364# policy necessary to use checkpolicy. This bare-minimum policy needs to be
365# present in all policy.conf files, but should not necessarily be exported as
366# part of the public policy. The rules generated by reqd_policy_mask will allow
367# the compilation of public policy and subsequent removal of CIL policy that
368# should not be exported.
369
370reqd_policy_mask.conf := $(intermediates)/reqd_policy_mask.conf
371$(reqd_policy_mask.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
372$(reqd_policy_mask.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800373$(reqd_policy_mask.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashman1c040272016-12-15 15:28:44 -0800374$(reqd_policy_mask.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700375$(reqd_policy_mask.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700376$(reqd_policy_mask.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -0800377$(reqd_policy_mask.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Jaekyun Seoke4971452017-10-19 16:54:49 +0900378$(reqd_policy_mask.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
dcashman2e00e632016-10-12 14:58:09 -0700379$(reqd_policy_mask.conf): $(call build_policy, $(sepolicy_build_files), $(REQD_MASK_POLICY))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700380 $(transform-policy-to-conf)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700381# b/37755687
382CHECKPOLICY_ASAN_OPTIONS := ASAN_OPTIONS=detect_leaks=0
383
dcashman2e00e632016-10-12 14:58:09 -0700384reqd_policy_mask.cil := $(intermediates)/reqd_policy_mask.cil
385$(reqd_policy_mask.cil): $(reqd_policy_mask.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
386 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700387 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -C -M -c \
388 $(POLICYVERS) -o $@ $<
dcashman2e00e632016-10-12 14:58:09 -0700389
dcashman1faa6442016-11-28 07:20:28 -0800390reqd_policy_mask.conf :=
391
392##################################
Tri Voe68ba592019-01-15 13:31:03 -0800393# pub_policy - policy that will be exported to be a part of non-platform
dcashman2e00e632016-10-12 14:58:09 -0700394# policy corresponding to this platform version. This is a limited subset of
395# policy that would not compile in checkpolicy on its own. To get around this
396# limitation, add only the required files from private policy, which will
397# generate CIL policy that will then be filtered out by the reqd_policy_mask.
Tri Voe68ba592019-01-15 13:31:03 -0800398pub_policy.conf := $(intermediates)/pub_policy.conf
399$(pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
400$(pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
401$(pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
402$(pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
403$(pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
404$(pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
405$(pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
406$(pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
407$(pub_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo75887dd2018-12-14 14:30:56 -0800408$(PLAT_PUBLIC_POLICY) $(PRODUCT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700409 $(transform-policy-to-conf)
Tri Voe68ba592019-01-15 13:31:03 -0800410pub_policy.cil := $(intermediates)/pub_policy.cil
411$(pub_policy.cil): PRIVATE_POL_CONF := $(pub_policy.conf)
412$(pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
413$(pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
414$(HOST_OUT_EXECUTABLES)/build_sepolicy $(pub_policy.conf) $(reqd_policy_mask.cil)
dcashman2e00e632016-10-12 14:58:09 -0700415 @mkdir -p $(dir $@)
Tri Vod57789f2018-12-17 16:35:41 -0800416 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
417 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
418 -f $(PRIVATE_REQD_MASK) -t $@
dcashman2e00e632016-10-12 14:58:09 -0700419
Tri Voe68ba592019-01-15 13:31:03 -0800420pub_policy.conf :=
Dan Cashman1c040272016-12-15 15:28:44 -0800421
dcashman1faa6442016-11-28 07:20:28 -0800422##################################
Tri Vo937e6642019-01-15 15:16:55 -0800423plat_pub_policy.conf := $(intermediates)/plat_pub_policy.conf
424$(plat_pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
425$(plat_pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
426$(plat_pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
427$(plat_pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
428$(plat_pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
429$(plat_pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
430$(plat_pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
431$(plat_pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
432$(plat_pub_policy.conf): $(call build_policy, $(sepolicy_build_files), \
433$(PLAT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
434 $(transform-policy-to-conf)
435
436plat_pub_policy.cil := $(intermediates)/plat_pub_policy.cil
437$(plat_pub_policy.cil): PRIVATE_POL_CONF := $(plat_pub_policy.conf)
438$(plat_pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
439$(plat_pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
440$(HOST_OUT_EXECUTABLES)/build_sepolicy $(plat_pub_policy.conf) $(reqd_policy_mask.cil)
441 @mkdir -p $(dir $@)
442 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
443 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
444 -f $(PRIVATE_REQD_MASK) -t $@
445
446plat_pub_policy.conf :=
447
448##################################
dcashman1faa6442016-11-28 07:20:28 -0800449include $(CLEAR_VARS)
450
451LOCAL_MODULE := sectxfile_nl
452LOCAL_MODULE_CLASS := ETC
453LOCAL_MODULE_TAGS := optional
454
455# Create a file containing newline only to add between context config files
456include $(BUILD_SYSTEM)/base_rules.mk
457$(LOCAL_BUILT_MODULE):
dcashman2e00e632016-10-12 14:58:09 -0700458 @mkdir -p $(dir $@)
dcashman1faa6442016-11-28 07:20:28 -0800459 $(hide) echo > $@
460
461built_nl := $(LOCAL_BUILT_MODULE)
462
463#################################
464include $(CLEAR_VARS)
465
466LOCAL_MODULE := plat_sepolicy.cil
467LOCAL_MODULE_CLASS := ETC
468LOCAL_MODULE_TAGS := optional
Alex Klyubin052b0bb2017-03-02 12:39:25 -0800469LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -0800470
471include $(BUILD_SYSTEM)/base_rules.mk
dcashman2e00e632016-10-12 14:58:09 -0700472
473# plat_policy.conf - A combination of the private and public platform policy
474# which will ship with the device. The platform will always reflect the most
475# recent platform version and is not currently being attributized.
476plat_policy.conf := $(intermediates)/plat_policy.conf
477$(plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
478$(plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800479$(plat_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashman1c040272016-12-15 15:28:44 -0800480$(plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700481$(plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700482$(plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -0800483$(plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
Jaekyun Seoke4971452017-10-19 16:54:49 +0900484$(plat_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
dcashman2e00e632016-10-12 14:58:09 -0700485$(plat_policy.conf): $(call build_policy, $(sepolicy_build_files), \
dcashmancc39f632016-07-22 13:13:11 -0700486$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700487 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800488 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
dcashmancc39f632016-07-22 13:13:11 -0700489
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700490$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_CIL_FILES := \
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700491 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY))
Joel Galenson5988b562018-01-03 16:53:24 -0800492$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700493$(LOCAL_BUILT_MODULE): $(plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
494 $(HOST_OUT_EXECUTABLES)/secilc \
Joel Galenson5988b562018-01-03 16:53:24 -0800495 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY)) \
496 $(built_sepolicy_neverallows)
dcashman2e00e632016-10-12 14:58:09 -0700497 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700498 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
Nick Kralevich6b2a4ae2018-11-26 14:29:06 -0800499 $(POLICYVERS) -o $@.tmp $<
500 $(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@.tmp
501 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) $@.tmp -o /dev/null -f /dev/null
502 $(hide) mv $@.tmp $@
dcashman1faa6442016-11-28 07:20:28 -0800503
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800504built_plat_cil := $(LOCAL_BUILT_MODULE)
dcashman1faa6442016-11-28 07:20:28 -0800505plat_policy.conf :=
506
507#################################
508include $(CLEAR_VARS)
509
Tri Vo75887dd2018-12-14 14:30:56 -0800510ifdef HAS_PRODUCT_SEPOLICY
511LOCAL_MODULE := product_sepolicy.cil
512LOCAL_MODULE_CLASS := ETC
513LOCAL_MODULE_TAGS := optional
514LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
515
516include $(BUILD_SYSTEM)/base_rules.mk
517
518# product_policy.conf - A combination of the private and public product policy
519# which will ship with the device. Product policy is not attributized.
520product_policy.conf := $(intermediates)/product_policy.conf
521$(product_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
522$(product_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
523$(product_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
524$(product_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
525$(product_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
526$(product_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
527$(product_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
528$(product_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
529$(product_policy.conf): $(call build_policy, $(sepolicy_build_files), \
530$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) \
531$(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY))
532 $(transform-policy-to-conf)
533 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
534
535$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
536$(LOCAL_BUILT_MODULE): PRIVATE_PLAT_CIL := $(built_plat_cil)
537$(LOCAL_BUILT_MODULE): $(product_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
538$(HOST_OUT_EXECUTABLES)/build_sepolicy $(HOST_OUT_EXECUTABLES)/secilc $(built_plat_cil)
539 @mkdir -p $(dir $@)
540 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
541 $(POLICYVERS) -o $@ $<
542 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
543 -f $(PRIVATE_PLAT_CIL) -t $@
544 # Line markers (denoted by ;;) are malformed after above cmd. They are only
545 # used for debugging, so we remove them.
Tri Voebf3eac2018-12-19 12:22:05 -0800546 $(hide) grep -v ';;' $@ > $@.tmp
547 $(hide) mv $@.tmp $@
Tri Vo75887dd2018-12-14 14:30:56 -0800548 # Combine plat_sepolicy.cil and product_sepolicy.cil to make sure that the
549 # latter doesn't accidentally depend on vendor/odm policies.
550 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) \
551 $(PRIVATE_NEVERALLOW_ARG) $(PRIVATE_PLAT_CIL) $@ -o /dev/null -f /dev/null
552
553
554built_product_cil := $(LOCAL_BUILT_MODULE)
555product_policy.conf :=
556endif # ifdef HAS_PRODUCT_SEPOLICY
557
558#################################
559include $(CLEAR_VARS)
560
Dan Cashman4f9a6482017-04-10 12:27:18 -0700561LOCAL_MODULE := plat_sepolicy_vers.txt
dcashman1faa6442016-11-28 07:20:28 -0800562LOCAL_MODULE_CLASS := ETC
563LOCAL_MODULE_TAGS := optional
Dan Cashman4f9a6482017-04-10 12:27:18 -0700564LOCAL_PROPRIETARY_MODULE := true
565LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
566
567include $(BUILD_SYSTEM)/base_rules.mk
568
569$(LOCAL_BUILT_MODULE) : PRIVATE_PLAT_SEPOL_VERS := $(BOARD_SEPOLICY_VERS)
570$(LOCAL_BUILT_MODULE) :
571 mkdir -p $(dir $@)
572 echo $(PRIVATE_PLAT_SEPOL_VERS) > $@
573
574#################################
575include $(CLEAR_VARS)
576
Tri Vo937e6642019-01-15 15:16:55 -0800577LOCAL_MODULE := plat_mapping_file
578LOCAL_MODULE_STEM := $(PLATFORM_SEPOLICY_VERSION).cil
Dan Cashman4f9a6482017-04-10 12:27:18 -0700579LOCAL_MODULE_CLASS := ETC
580LOCAL_MODULE_TAGS := optional
581LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux/mapping
dcashman1faa6442016-11-28 07:20:28 -0800582
583include $(BUILD_SYSTEM)/base_rules.mk
584
585# auto-generate the mapping file for current platform policy, since it needs to
586# track platform policy development
Tri Vo8a2b6522019-01-14 17:25:17 -0800587$(LOCAL_BUILT_MODULE) : PRIVATE_VERS := $(PLATFORM_SEPOLICY_VERSION)
Tri Vo937e6642019-01-15 15:16:55 -0800588$(LOCAL_BUILT_MODULE) : $(plat_pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy
dcashman1faa6442016-11-28 07:20:28 -0800589 @mkdir -p $(dir $@)
590 $(hide) $(HOST_OUT_EXECUTABLES)/version_policy -b $< -m -n $(PRIVATE_VERS) -o $@
591
Tri Vo937e6642019-01-15 15:16:55 -0800592built_plat_mapping_cil := $(LOCAL_BUILT_MODULE)
593
594#################################
595include $(CLEAR_VARS)
596
597ifdef HAS_PRODUCT_SEPOLICY
598LOCAL_MODULE := product_mapping_file
599LOCAL_MODULE_STEM := $(PLATFORM_SEPOLICY_VERSION).cil
600LOCAL_MODULE_CLASS := ETC
601LOCAL_MODULE_TAGS := optional
602LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux/mapping
603
604include $(BUILD_SYSTEM)/base_rules.mk
605
606$(LOCAL_BUILT_MODULE) : PRIVATE_VERS := $(PLATFORM_SEPOLICY_VERSION)
607$(LOCAL_BUILT_MODULE) : PRIVATE_PLAT_MAPPING_CIL := $(built_plat_mapping_cil)
608$(LOCAL_BUILT_MODULE) : $(pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy \
609$(built_plat_mapping_cil)
610 @mkdir -p $(dir $@)
611 # Generate product mapping file as mapping file of all public sepolicy minus
612 # plat_mapping_file.
613 $(hide) $(HOST_OUT_EXECUTABLES)/version_policy -b $< -m -n $(PRIVATE_VERS) -o $@
614 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
615 -f $(PRIVATE_PLAT_MAPPING_CIL) -t $@
616
617built_product_mapping_cil := $(LOCAL_BUILT_MODULE)
618endif # HAS_PRODUCT_SEPOLICY
dcashman1faa6442016-11-28 07:20:28 -0800619
620#################################
621include $(CLEAR_VARS)
622
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700623LOCAL_MODULE := plat_and_mapping_sepolicy.cil.sha256
624LOCAL_MODULE_CLASS := ETC
625LOCAL_MODULE_TAGS := optional
626LOCAL_MODULE_PATH = $(TARGET_OUT)/etc/selinux
627
628include $(BUILD_SYSTEM)/base_rules.mk
629
Tri Vo937e6642019-01-15 15:16:55 -0800630# TODO(b/119305624): Need one hash for system, one for product.
631$(LOCAL_BUILT_MODULE): $(built_plat_cil) $(built_product_cil) \
632$(built_plat_mapping_cil) $(built_product_mapping_cil)
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700633 cat $^ | sha256sum | cut -d' ' -f1 > $@
634
635#################################
636include $(CLEAR_VARS)
637
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800638# plat_pub_versioned.cil - the exported platform policy associated with the version
639# that non-platform policy targets.
640LOCAL_MODULE := plat_pub_versioned.cil
dcashman1faa6442016-11-28 07:20:28 -0800641LOCAL_MODULE_CLASS := ETC
642LOCAL_MODULE_TAGS := optional
Alex Klyubin052b0bb2017-03-02 12:39:25 -0800643LOCAL_PROPRIETARY_MODULE := true
644LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -0800645
646include $(BUILD_SYSTEM)/base_rules.mk
647
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800648$(LOCAL_BUILT_MODULE) : PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
Tri Voe68ba592019-01-15 13:31:03 -0800649$(LOCAL_BUILT_MODULE) : PRIVATE_TGT_POL := $(pub_policy.cil)
Tri Vo937e6642019-01-15 15:16:55 -0800650$(LOCAL_BUILT_MODULE) : PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_product_cil)\
651$(built_plat_mapping_cil) $(built_product_mapping_cil)
Tri Voe68ba592019-01-15 13:31:03 -0800652$(LOCAL_BUILT_MODULE) : $(pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy \
Tri Vo937e6642019-01-15 15:16:55 -0800653 $(HOST_OUT_EXECUTABLES)/secilc $(built_plat_cil) $(built_product_cil) \
654 $(built_plat_mapping_cil) $(built_product_mapping_cil)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800655 @mkdir -p $(dir $@)
656 $(HOST_OUT_EXECUTABLES)/version_policy -b $< -t $(PRIVATE_TGT_POL) -n $(PRIVATE_VERS) -o $@
657 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -N -c $(POLICYVERS) \
658 $(PRIVATE_DEP_CIL_FILES) $@ -o /dev/null -f /dev/null
659
Tri Voe68ba592019-01-15 13:31:03 -0800660built_pub_vers_cil := $(LOCAL_BUILT_MODULE)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800661
662#################################
663include $(CLEAR_VARS)
664
665# vendor_policy.cil - the vendor sepolicy. This needs attributization and to be combined
666# with the platform-provided policy. It makes use of the reqd_policy_mask files from private
667# policy and the platform public policy files in order to use checkpolicy.
668LOCAL_MODULE := vendor_sepolicy.cil
669LOCAL_MODULE_CLASS := ETC
670LOCAL_MODULE_TAGS := optional
671LOCAL_PROPRIETARY_MODULE := true
672LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
673
674include $(BUILD_SYSTEM)/base_rules.mk
675
676vendor_policy.conf := $(intermediates)/vendor_policy.conf
677$(vendor_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
678$(vendor_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800679$(vendor_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800680$(vendor_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
681$(vendor_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
682$(vendor_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
683$(vendor_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
684$(vendor_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
685$(vendor_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo75887dd2018-12-14 14:30:56 -0800686$(PLAT_PUBLIC_POLICY) $(PRODUCT_PUBLIC_POLICY) $(REQD_MASK_POLICY) $(PLAT_VENDOR_POLICY) \
687$(BOARD_VENDOR_SEPOLICY_DIRS))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700688 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800689 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Stephen Smalley2dd4e512012-01-04 12:33:27 -0500690
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800691$(LOCAL_BUILT_MODULE): PRIVATE_POL_CONF := $(vendor_policy.conf)
692$(LOCAL_BUILT_MODULE): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
Tri Voe68ba592019-01-15 13:31:03 -0800693$(LOCAL_BUILT_MODULE): PRIVATE_BASE_CIL := $(pub_policy.cil)
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800694$(LOCAL_BUILT_MODULE): PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
Tri Vo937e6642019-01-15 15:16:55 -0800695$(LOCAL_BUILT_MODULE): PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_product_cil)\
696$(built_pub_vers_cil) $(built_plat_mapping_cil) $(built_product_mapping_cil)
Tri Voe68ba592019-01-15 13:31:03 -0800697$(LOCAL_BUILT_MODULE): PRIVATE_FILTER_CIL := $(built_pub_vers_cil)
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800698$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/build_sepolicy \
Tri Voe68ba592019-01-15 13:31:03 -0800699 $(vendor_policy.conf) $(reqd_policy_mask.cil) $(pub_policy.cil) \
Tri Vo937e6642019-01-15 15:16:55 -0800700 $(built_plat_cil) $(built_product_cil) $(built_pub_vers_cil) \
701 $(built_plat_mapping_cil) $(built_product_mapping_cil)
dcashman2e00e632016-10-12 14:58:09 -0700702 @mkdir -p $(dir $@)
Bowgo Tsai741a70a2018-02-05 17:41:02 +0800703 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) build_cil \
704 -i $(PRIVATE_POL_CONF) -m $(PRIVATE_REQD_MASK) -c $(CHECKPOLICY_ASAN_OPTIONS) \
705 -b $(PRIVATE_BASE_CIL) -d $(PRIVATE_DEP_CIL_FILES) -f $(PRIVATE_FILTER_CIL) \
706 -t $(PRIVATE_VERS) -p $(POLICYVERS) -o $@
dcashman2e00e632016-10-12 14:58:09 -0700707
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800708built_vendor_cil := $(LOCAL_BUILT_MODULE)
709vendor_policy.conf :=
dcashman1faa6442016-11-28 07:20:28 -0800710
711#################################
712include $(CLEAR_VARS)
Alex Klyubin193dccd2017-03-07 14:05:57 -0800713
Nick Kralevich1b2ea492018-09-25 11:03:48 -0700714ifdef BOARD_ODM_SEPOLICY_DIRS
Bowgo Tsai45457e32017-11-27 11:41:33 +0800715# odm_policy.cil - the odm sepolicy. This needs attributization and to be combined
716# with the platform-provided policy. It makes use of the reqd_policy_mask files from private
717# policy and the platform public policy files in order to use checkpolicy.
718LOCAL_MODULE := odm_sepolicy.cil
719LOCAL_MODULE_CLASS := ETC
720LOCAL_MODULE_TAGS := optional
721LOCAL_PROPRIETARY_MODULE := true
722LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
723
724include $(BUILD_SYSTEM)/base_rules.mk
725
726odm_policy.conf := $(intermediates)/odm_policy.conf
727$(odm_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
728$(odm_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
729$(odm_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
730$(odm_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
731$(odm_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
732$(odm_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
733$(odm_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
734$(odm_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
735$(odm_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Tri Vo75887dd2018-12-14 14:30:56 -0800736 $(PLAT_PUBLIC_POLICY) $(PRODUCT_PUBLIC_POLICY) $(REQD_MASK_POLICY) $(PLAT_VENDOR_POLICY) \
Bowgo Tsai45457e32017-11-27 11:41:33 +0800737 $(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
738 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800739 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Bowgo Tsai45457e32017-11-27 11:41:33 +0800740
741$(LOCAL_BUILT_MODULE): PRIVATE_POL_CONF := $(odm_policy.conf)
742$(LOCAL_BUILT_MODULE): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
Tri Voe68ba592019-01-15 13:31:03 -0800743$(LOCAL_BUILT_MODULE): PRIVATE_BASE_CIL := $(pub_policy.cil)
Bowgo Tsai45457e32017-11-27 11:41:33 +0800744$(LOCAL_BUILT_MODULE): PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
Tri Vo937e6642019-01-15 15:16:55 -0800745$(LOCAL_BUILT_MODULE): PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_product_cil) \
746 $(built_pub_vers_cil) $(built_plat_mapping_cil) $(built_product_mapping_cil)\
747 $(built_vendor_cil)
Tri Voe68ba592019-01-15 13:31:03 -0800748$(LOCAL_BUILT_MODULE) : PRIVATE_FILTER_CIL_FILES := $(built_pub_vers_cil) $(built_vendor_cil)
Bowgo Tsai45457e32017-11-27 11:41:33 +0800749$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/build_sepolicy \
Tri Voe68ba592019-01-15 13:31:03 -0800750 $(odm_policy.conf) $(reqd_policy_mask.cil) $(pub_policy.cil) \
Tri Vo937e6642019-01-15 15:16:55 -0800751 $(built_plat_cil) $(built_product_cil) $(built_pub_vers_cil) \
752 $(built_plat_mapping_cil) $(built_product_mapping_cil) $(built_vendor_cil)
Bowgo Tsai45457e32017-11-27 11:41:33 +0800753 @mkdir -p $(dir $@)
754 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) build_cil \
755 -i $(PRIVATE_POL_CONF) -m $(PRIVATE_REQD_MASK) -c $(CHECKPOLICY_ASAN_OPTIONS) \
756 -b $(PRIVATE_BASE_CIL) -d $(PRIVATE_DEP_CIL_FILES) -f $(PRIVATE_FILTER_CIL_FILES) \
757 -t $(PRIVATE_VERS) -p $(POLICYVERS) -o $@
758
759built_odm_cil := $(LOCAL_BUILT_MODULE)
760odm_policy.conf :=
761odm_policy_raw :=
Nick Kralevich1b2ea492018-09-25 11:03:48 -0700762endif
Bowgo Tsai45457e32017-11-27 11:41:33 +0800763
764#################################
765include $(CLEAR_VARS)
766
Alex Klyubin193dccd2017-03-07 14:05:57 -0800767LOCAL_MODULE := precompiled_sepolicy
768LOCAL_MODULE_CLASS := ETC
769LOCAL_MODULE_TAGS := optional
770LOCAL_PROPRIETARY_MODULE := true
Bowgo Tsai45457e32017-11-27 11:41:33 +0800771
772ifeq ($(BOARD_USES_ODMIMAGE),true)
773LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
774else
Alex Klyubin193dccd2017-03-07 14:05:57 -0800775LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Bowgo Tsai45457e32017-11-27 11:41:33 +0800776endif
Alex Klyubin193dccd2017-03-07 14:05:57 -0800777
778include $(BUILD_SYSTEM)/base_rules.mk
779
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800780all_cil_files := \
781 $(built_plat_cil) \
Tri Vo937e6642019-01-15 15:16:55 -0800782 $(built_plat_mapping_cil) \
Tri Voe68ba592019-01-15 13:31:03 -0800783 $(built_pub_vers_cil) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800784 $(built_vendor_cil)
785
Tri Vo75887dd2018-12-14 14:30:56 -0800786ifdef HAS_PRODUCT_SEPOLICY
Tri Vo937e6642019-01-15 15:16:55 -0800787all_cil_files += \
788 $(built_product_cil) \
789 $(built_product_mapping_cil) \
790
Tri Vo75887dd2018-12-14 14:30:56 -0800791endif
792
Bowgo Tsai45457e32017-11-27 11:41:33 +0800793ifdef BOARD_ODM_SEPOLICY_DIRS
794all_cil_files += $(built_odm_cil)
795endif
796
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800797$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
Joel Galenson5988b562018-01-03 16:53:24 -0800798$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800799$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(all_cil_files) $(built_sepolicy_neverallows)
Joel Galenson5988b562018-01-03 16:53:24 -0800800 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) \
Alex Klyubin193dccd2017-03-07 14:05:57 -0800801 $(PRIVATE_CIL_FILES) -o $@ -f /dev/null
802
803built_precompiled_sepolicy := $(LOCAL_BUILT_MODULE)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800804all_cil_files :=
Alex Klyubin193dccd2017-03-07 14:05:57 -0800805
806#################################
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700807# SHA-256 digest of the plat_sepolicy.cil and mapping_sepolicy.cil files against
808# which precompiled_policy was built.
Alex Klyubin193dccd2017-03-07 14:05:57 -0800809#################################
810include $(CLEAR_VARS)
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700811LOCAL_MODULE := precompiled_sepolicy.plat_and_mapping.sha256
Alex Klyubin193dccd2017-03-07 14:05:57 -0800812LOCAL_MODULE_CLASS := ETC
813LOCAL_MODULE_TAGS := optional
814LOCAL_PROPRIETARY_MODULE := true
Bowgo Tsai45457e32017-11-27 11:41:33 +0800815
816ifeq ($(BOARD_USES_ODMIMAGE),true)
817LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
818else
Alex Klyubin193dccd2017-03-07 14:05:57 -0800819LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Bowgo Tsai45457e32017-11-27 11:41:33 +0800820endif
Alex Klyubin193dccd2017-03-07 14:05:57 -0800821
822include $(BUILD_SYSTEM)/base_rules.mk
823
Tri Vo937e6642019-01-15 15:16:55 -0800824# TODO(b/119305624): Need one hash for system, one for product.
825$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(built_plat_cil) $(built_product_cil) \
826$(built_plat_mapping_cil) $(built_product_mapping_cil)
827$(LOCAL_BUILT_MODULE): $(built_precompiled_sepolicy) $(built_plat_cil) $(built_product_cil)\
828$(built_plat_mapping_cil) $(built_product_cil)
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700829 cat $(PRIVATE_CIL_FILES) | sha256sum | cut -d' ' -f1 > $@
Alex Klyubin193dccd2017-03-07 14:05:57 -0800830
831#################################
832include $(CLEAR_VARS)
Dan Cashman1c040272016-12-15 15:28:44 -0800833# build this target so that we can still perform neverallow checks
dcashman1faa6442016-11-28 07:20:28 -0800834
835LOCAL_MODULE := sepolicy
836LOCAL_MODULE_CLASS := ETC
837LOCAL_MODULE_TAGS := optional
Daniel Cashman65d01342016-12-17 00:53:26 +0000838LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
dcashman2e00e632016-10-12 14:58:09 -0700839
dcashman1faa6442016-11-28 07:20:28 -0800840include $(BUILD_SYSTEM)/base_rules.mk
841
dcashman2e00e632016-10-12 14:58:09 -0700842all_cil_files := \
Jeff Vander Stoepb8787692017-04-21 15:57:07 -0700843 $(built_plat_cil) \
Tri Vo937e6642019-01-15 15:16:55 -0800844 $(built_plat_mapping_cil) \
Tri Voe68ba592019-01-15 13:31:03 -0800845 $(built_pub_vers_cil) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +0800846 $(built_vendor_cil)
dcashman2e00e632016-10-12 14:58:09 -0700847
Tri Vo75887dd2018-12-14 14:30:56 -0800848ifdef HAS_PRODUCT_SEPOLICY
Tri Vo937e6642019-01-15 15:16:55 -0800849all_cil_files += \
850 $(built_product_cil) \
851 $(built_product_mapping_cil) \
852
Tri Vo75887dd2018-12-14 14:30:56 -0800853endif
854
Bowgo Tsai45457e32017-11-27 11:41:33 +0800855ifdef BOARD_ODM_SEPOLICY_DIRS
856all_cil_files += $(built_odm_cil)
857endif
858
dcashman2e00e632016-10-12 14:58:09 -0700859$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
Joel Galenson5988b562018-01-03 16:53:24 -0800860$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
861$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $(all_cil_files) \
862$(built_sepolicy_neverallows)
dcashman2e00e632016-10-12 14:58:09 -0700863 @mkdir -p $(dir $@)
Joel Galenson5988b562018-01-03 16:53:24 -0800864 $(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 -0800865 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp permissive > $@.permissivedomains
866 $(hide) if [ "$(TARGET_BUILD_VARIANT)" = "user" -a -s $@.permissivedomains ]; then \
867 echo "==========" 1>&2; \
868 echo "ERROR: permissive domains not allowed in user builds" 1>&2; \
869 echo "List of invalid domains:" 1>&2; \
870 cat $@.permissivedomains 1>&2; \
871 exit 1; \
872 fi
873 $(hide) mv $@.tmp $@
Ying Wang02fb5f32012-01-17 17:51:09 -0800874
Ying Wangd8b122c2012-10-25 19:01:31 -0700875built_sepolicy := $(LOCAL_BUILT_MODULE)
dcashman2e00e632016-10-12 14:58:09 -0700876all_cil_files :=
Stephen Smalley01a58af2012-10-02 12:46:37 -0400877
Alex Klyubin84aa7422017-03-10 09:36:07 -0800878#################################
879include $(CLEAR_VARS)
880
881# keep concrete sepolicy for neverallow checks
Joel Galenson5988b562018-01-03 16:53:24 -0800882# If SELINUX_IGNORE_NEVERALLOWS is set, we use sed to remove the neverallow lines before compiling.
Alex Klyubin84aa7422017-03-10 09:36:07 -0800883
884LOCAL_MODULE := sepolicy.recovery
Alex Klyubinec78c372017-03-10 12:44:16 -0800885LOCAL_MODULE_STEM := sepolicy
Alex Klyubin84aa7422017-03-10 09:36:07 -0800886LOCAL_MODULE_CLASS := ETC
887LOCAL_MODULE_TAGS := optional
Alex Klyubinec78c372017-03-10 12:44:16 -0800888LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
Alex Klyubin84aa7422017-03-10 09:36:07 -0800889
890include $(BUILD_SYSTEM)/base_rules.mk
891
Dan Cashmanc8d45352017-04-11 07:38:48 -0700892sepolicy.recovery.conf := $(intermediates)/sepolicy.recovery.conf
893$(sepolicy.recovery.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
894$(sepolicy.recovery.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800895$(sepolicy.recovery.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
Dan Cashmanc8d45352017-04-11 07:38:48 -0700896$(sepolicy.recovery.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
897$(sepolicy.recovery.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
898$(sepolicy.recovery.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Dan Cashman36ee91d2017-07-07 14:59:51 -0700899$(sepolicy.recovery.conf): PRIVATE_TGT_RECOVERY := -D target_recovery=true
Dan Cashmanc8d45352017-04-11 07:38:48 -0700900$(sepolicy.recovery.conf): $(call build_policy, $(sepolicy_build_files), \
901 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) \
Tri Vo75887dd2018-12-14 14:30:56 -0800902 $(PRODUCT_PUBLIC_POLICY) $(PRODUCT_PRIVATE_POLICY) \
Bowgo Tsai45457e32017-11-27 11:41:33 +0800903 $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) \
904 $(BOARD_ODM_SEPOLICY_DIRS))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700905 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800906 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
907
Joel Galenson5988b562018-01-03 16:53:24 -0800908ifeq ($(SELINUX_IGNORE_NEVERALLOWS),true)
909 $(hide) sed -z 's/\n\s*neverallow[^;]*;/\n/g' $@ > $@.neverallow
910 $(hide) mv $@.neverallow $@
911endif
Dan Cashman1c040272016-12-15 15:28:44 -0800912
Dan Cashmanc8d45352017-04-11 07:38:48 -0700913$(LOCAL_BUILT_MODULE): $(sepolicy.recovery.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
914 $(HOST_OUT_EXECUTABLES)/sepolicy-analyze
Dan Cashman1c040272016-12-15 15:28:44 -0800915 @mkdir -p $(dir $@)
Andreas Gampe3ddc78b2017-04-27 17:16:13 -0700916 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c \
917 $(POLICYVERS) -o $@.tmp $<
Nick Kralevichbca98ef2016-02-26 20:06:52 -0800918 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp permissive > $@.permissivedomains
919 $(hide) if [ "$(TARGET_BUILD_VARIANT)" = "user" -a -s $@.permissivedomains ]; then \
920 echo "==========" 1>&2; \
921 echo "ERROR: permissive domains not allowed in user builds" 1>&2; \
922 echo "List of invalid domains:" 1>&2; \
923 cat $@.permissivedomains 1>&2; \
924 exit 1; \
925 fi
926 $(hide) mv $@.tmp $@
Stephen Smalleye60723a2014-05-29 16:40:15 -0400927
Dan Cashmanc8d45352017-04-11 07:38:48 -0700928sepolicy.recovery.conf :=
Stephen Smalleye60723a2014-05-29 16:40:15 -0400929
dcashman704741a2014-07-25 19:11:52 -0700930##################################
Alex Klyubin446279a2017-04-06 14:45:50 -0700931# SELinux policy embedded into CTS.
932# CTS checks neverallow rules of this policy against the policy of the device under test.
933##################################
dcashman704741a2014-07-25 19:11:52 -0700934include $(CLEAR_VARS)
935
936LOCAL_MODULE := general_sepolicy.conf
937LOCAL_MODULE_CLASS := ETC
938LOCAL_MODULE_TAGS := tests
939
940include $(BUILD_SYSTEM)/base_rules.mk
941
dcashman704741a2014-07-25 19:11:52 -0700942$(LOCAL_BUILT_MODULE): PRIVATE_MLS_SENS := $(MLS_SENS)
943$(LOCAL_BUILT_MODULE): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galenson8c72eea2018-03-07 15:36:29 -0800944$(LOCAL_BUILT_MODULE): PRIVATE_TARGET_BUILD_VARIANT := user
Dan Cashman1c040272016-12-15 15:28:44 -0800945$(LOCAL_BUILT_MODULE): PRIVATE_TGT_ARCH := $(my_target_arch)
Dan Cashman36ee91d2017-07-07 14:59:51 -0700946$(LOCAL_BUILT_MODULE): PRIVATE_WITH_ASAN := false
Steven Moreland763697d2017-11-09 11:24:56 -0800947$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY_SPLIT := cts
Jaekyun Seok64ade652018-01-30 17:23:58 +0900948$(LOCAL_BUILT_MODULE): PRIVATE_COMPATIBLE_PROPERTY := cts
Tri Vo77c44fc2018-06-05 14:11:08 -0700949$(LOCAL_BUILT_MODULE): PRIVATE_EXCLUDE_BUILD_TEST := true
dcashmancc39f632016-07-22 13:13:11 -0700950$(LOCAL_BUILT_MODULE): $(call build_policy, $(sepolicy_build_files), \
951$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
Dan Cashman36ee91d2017-07-07 14:59:51 -0700952 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +0800953 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
dcashman704741a2014-07-25 19:11:52 -0700954
William Robertsb8769932015-06-29 16:31:23 -0700955##################################
dcashmand225b692016-12-12 09:29:04 -0800956# TODO - remove this. Keep around until we get the filesystem creation stuff taken care of.
957#
William Robertsb8769932015-06-29 16:31:23 -0700958include $(CLEAR_VARS)
959
Richard Hainesc2d01912015-08-06 17:43:52 +0100960LOCAL_MODULE := file_contexts.bin
Ying Wang02fb5f32012-01-17 17:51:09 -0800961LOCAL_MODULE_CLASS := ETC
962LOCAL_MODULE_TAGS := optional
963LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
964
Stephen Smalley5b340be2012-03-06 11:12:41 -0500965include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -0800966
William Roberts49693f12016-01-04 12:20:57 -0800967# The file_contexts.bin is built in the following way:
968# 1. Collect all file_contexts files in THIS repository and process them with
969# m4 into a tmp file called file_contexts.local.tmp.
970# 2. Collect all device specific file_contexts files and process them with m4
971# into a tmp file called file_contexts.device.tmp.
972# 3. Run checkfc -e (allow no device fc entries ie empty) and fc_sort on
973# file_contexts.device.tmp and output to file_contexts.device.sorted.tmp.
974# 4. Concatenate file_contexts.local.tmp and file_contexts.device.tmp into
975# file_contexts.concat.tmp.
976# 5. Run checkfc and sefcontext_compile on file_contexts.concat.tmp to produce
977# file_contexts.bin.
978#
979# Note: That a newline file is placed between each file_context file found to
980# ensure a proper build when an fc file is missing an ending newline.
William Roberts29d14682016-01-04 12:20:57 -0800981
Dan Cashman1b0a71f2017-05-08 14:26:52 -0700982local_fc_files := $(call build_policy, file_contexts, $(PLAT_PRIVATE_POLICY))
983
Tri Vo75887dd2018-12-14 14:30:56 -0800984ifdef HAS_PRODUCT_SEPOLICY
985local_fc_files += $(call build_policy, file_contexts, $(PRODUCT_PRIVATE_POLICY))
986endif
987
William Roberts49693f12016-01-04 12:20:57 -0800988ifneq ($(filter address,$(SANITIZE_TARGET)),)
Mark Salyzyn9b398f32018-06-13 08:02:29 -0700989 local_fc_files += $(wildcard $(addsuffix /file_contexts_asan, $(PLAT_PRIVATE_POLICY)))
990endif
991ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
992 local_fc_files += $(wildcard $(addsuffix /file_contexts_overlayfs, $(PLAT_PRIVATE_POLICY)))
William Roberts49693f12016-01-04 12:20:57 -0800993endif
994local_fcfiles_with_nl := $(call add_nl, $(local_fc_files), $(built_nl))
995
996file_contexts.local.tmp := $(intermediates)/file_contexts.local.tmp
997$(file_contexts.local.tmp): $(local_fcfiles_with_nl)
Stephen Smalley5b340be2012-03-06 11:12:41 -0500998 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -0700999 $(hide) m4 --fatal-warnings -s $^ > $@
William Roberts49693f12016-01-04 12:20:57 -08001000
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001001device_fc_files := $(call build_vendor_policy, file_contexts)
Bowgo Tsaibae15172017-11-29 16:14:53 +08001002
1003ifdef BOARD_ODM_SEPOLICY_DIRS
1004device_fc_files += $(call build_odm_policy, file_contexts)
1005endif
1006
William Roberts49693f12016-01-04 12:20:57 -08001007device_fcfiles_with_nl := $(call add_nl, $(device_fc_files), $(built_nl))
1008
1009file_contexts.device.tmp := $(intermediates)/file_contexts.device.tmp
1010$(file_contexts.device.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1011$(file_contexts.device.tmp): $(device_fcfiles_with_nl)
1012 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001013 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
William Roberts49693f12016-01-04 12:20:57 -08001014
1015file_contexts.device.sorted.tmp := $(intermediates)/file_contexts.device.sorted.tmp
1016$(file_contexts.device.sorted.tmp): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001017$(file_contexts.device.sorted.tmp): $(file_contexts.device.tmp) $(built_sepolicy) \
1018 $(HOST_OUT_EXECUTABLES)/fc_sort $(HOST_OUT_EXECUTABLES)/checkfc
William Roberts49693f12016-01-04 12:20:57 -08001019 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -08001020 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e $(PRIVATE_SEPOLICY) $<
William Roberts49693f12016-01-04 12:20:57 -08001021 $(hide) $(HOST_OUT_EXECUTABLES)/fc_sort $< $@
1022
1023file_contexts.concat.tmp := $(intermediates)/file_contexts.concat.tmp
1024$(file_contexts.concat.tmp): $(file_contexts.local.tmp) $(file_contexts.device.sorted.tmp)
1025 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001026 $(hide) m4 --fatal-warnings -s $^ > $@
Stephen Smalley5b340be2012-03-06 11:12:41 -05001027
William Roberts3746a0a2015-09-25 10:18:44 -07001028$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
William Roberts49693f12016-01-04 12:20:57 -08001029$(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 +01001030 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -08001031 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc $(PRIVATE_SEPOLICY) $<
Richard Hainesc2d01912015-08-06 17:43:52 +01001032 $(hide) $(HOST_OUT_EXECUTABLES)/sefcontext_compile -o $@ $<
1033
Robert Craig8b7545b2014-03-20 09:35:08 -04001034built_fc := $(LOCAL_BUILT_MODULE)
William Roberts49693f12016-01-04 12:20:57 -08001035local_fc_files :=
1036local_fcfiles_with_nl :=
1037device_fc_files :=
1038device_fcfiles_with_nl :=
1039file_contexts.concat.tmp :=
1040file_contexts.device.sorted.tmp :=
1041file_contexts.device.tmp :=
1042file_contexts.local.tmp :=
William Roberts171a0622012-08-16 10:55:05 -07001043
Ying Wang02fb5f32012-01-17 17:51:09 -08001044##################################
Dan Cashman91d398d2017-09-26 12:58:29 -07001045ifneq ($(TARGET_BUILD_VARIANT), user)
1046include $(CLEAR_VARS)
1047
1048LOCAL_MODULE := selinux_denial_metadata
1049LOCAL_MODULE_CLASS := ETC
1050LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
1051
1052include $(BUILD_SYSTEM)/base_rules.mk
1053
1054bug_files := $(call build_policy, bug_map, $(LOCAL_PATH) $(PLAT_PRIVATE_POLICY) $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(PLAT_PUBLIC_POLICY))
1055
1056$(LOCAL_BUILT_MODULE) : $(bug_files)
1057 @mkdir -p $(dir $@)
1058 cat $^ > $@
1059
1060bug_files :=
1061endif
1062##################################
Ying Wang02fb5f32012-01-17 17:51:09 -08001063include $(CLEAR_VARS)
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001064
dcashmand225b692016-12-12 09:29:04 -08001065LOCAL_MODULE := plat_file_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001066LOCAL_MODULE_CLASS := ETC
dcashmand225b692016-12-12 09:29:04 -08001067LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep0cb417a2017-03-08 14:12:54 -08001068LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001069
1070include $(BUILD_SYSTEM)/base_rules.mk
1071
Tri Voade74162018-12-20 16:13:10 -08001072local_fc_files := $(call build_policy, file_contexts, $(PLAT_PRIVATE_POLICY))
dcashmand225b692016-12-12 09:29:04 -08001073ifneq ($(filter address,$(SANITIZE_TARGET)),)
Dan Cashman1b0a71f2017-05-08 14:26:52 -07001074 local_fc_files += $(wildcard $(addsuffix /file_contexts_asan, $(PLAT_PRIVATE_POLICY)))
dcashmand225b692016-12-12 09:29:04 -08001075endif
Mark Salyzyn9b398f32018-06-13 08:02:29 -07001076ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
1077 local_fc_files += $(wildcard $(addsuffix /file_contexts_overlayfs, $(PLAT_PRIVATE_POLICY)))
1078endif
Alex Klyubine4665d72017-01-19 19:58:34 -08001079local_fcfiles_with_nl := $(call add_nl, $(local_fc_files), $(built_nl))
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001080
Alex Klyubine4665d72017-01-19 19:58:34 -08001081$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(local_fcfiles_with_nl)
dcashmand225b692016-12-12 09:29:04 -08001082$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Alex Klyubine4665d72017-01-19 19:58:34 -08001083$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
1084$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
1085$(local_fcfiles_with_nl) $(built_sepolicy)
Richard Hainesc2d01912015-08-06 17:43:52 +01001086 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001087 $(hide) m4 --fatal-warnings -s $(PRIVATE_FC_FILES) > $@.tmp
Alex Klyubine4665d72017-01-19 19:58:34 -08001088 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
1089 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
Richard Hainesc2d01912015-08-06 17:43:52 +01001090
dcashmand225b692016-12-12 09:29:04 -08001091built_plat_fc := $(LOCAL_BUILT_MODULE)
1092local_fc_files :=
Alex Klyubine4665d72017-01-19 19:58:34 -08001093local_fcfiles_with_nl :=
dcashmand225b692016-12-12 09:29:04 -08001094
1095##################################
1096include $(CLEAR_VARS)
1097
Tri Vo3361ec42018-12-18 19:51:19 -08001098LOCAL_MODULE := product_file_contexts
1099LOCAL_MODULE_CLASS := ETC
1100LOCAL_MODULE_TAGS := optional
1101LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
1102
1103include $(BUILD_SYSTEM)/base_rules.mk
1104
1105product_fc_files := $(call build_policy, file_contexts, $(PRODUCT_PRIVATE_POLICY))
1106product_fcfiles_with_nl := $(call add_nl, $(product_fc_files), $(built_nl))
1107
1108$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(product_fcfiles_with_nl)
1109$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1110$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1111$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
1112$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
1113$(product_fcfiles_with_nl) $(built_sepolicy)
1114 @mkdir -p $(dir $@)
1115 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_FC_FILES) > $@.tmp
1116 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
1117 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
1118
1119built_product_fc := $(LOCAL_BUILT_MODULE)
1120product_fc_files :=
1121product_fcfiles_with_nl :=
1122
1123##################################
1124include $(CLEAR_VARS)
1125
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001126LOCAL_MODULE := vendor_file_contexts
dcashmand225b692016-12-12 09:29:04 -08001127LOCAL_MODULE_CLASS := ETC
1128LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep0cb417a2017-03-08 14:12:54 -08001129LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashmand225b692016-12-12 09:29:04 -08001130
1131include $(BUILD_SYSTEM)/base_rules.mk
1132
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001133vendor_fc_files := $(call build_vendor_policy, file_contexts)
1134vendor_fcfiles_with_nl := $(call add_nl, $(vendor_fc_files), $(built_nl))
dcashmand225b692016-12-12 09:29:04 -08001135
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001136$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(vendor_fcfiles_with_nl)
dcashmand225b692016-12-12 09:29:04 -08001137$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Mustafa Yigit Bilgen1cffee62018-11-07 18:03:31 -08001138$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
dcashmand225b692016-12-12 09:29:04 -08001139$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
1140$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001141$(vendor_fcfiles_with_nl) $(built_sepolicy)
dcashmand225b692016-12-12 09:29:04 -08001142 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001143 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_FC_FILES) > $@.tmp
dcashmand225b692016-12-12 09:29:04 -08001144 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
1145 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
1146
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001147built_vendor_fc := $(LOCAL_BUILT_MODULE)
1148vendor_fc_files :=
1149vendor_fcfiles_with_nl :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001150
1151##################################
1152include $(CLEAR_VARS)
Jeff Vander Stoepb236eb62017-06-13 08:24:17 -07001153
Bowgo Tsaibae15172017-11-29 16:14:53 +08001154LOCAL_MODULE := odm_file_contexts
1155LOCAL_MODULE_CLASS := ETC
1156LOCAL_MODULE_TAGS := optional
1157LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1158
1159include $(BUILD_SYSTEM)/base_rules.mk
1160
1161odm_fc_files := $(call build_odm_policy, file_contexts)
1162odm_fcfiles_with_nl := $(call add_nl, $(odm_fc_files), $(built_nl))
1163
1164$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(odm_fcfiles_with_nl)
1165$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Mustafa Yigit Bilgen1cffee62018-11-07 18:03:31 -08001166$(LOCAL_BUILT_MODULE): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Bowgo Tsaibae15172017-11-29 16:14:53 +08001167$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
1168$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
1169$(odm_fcfiles_with_nl) $(built_sepolicy)
1170 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001171 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_FC_FILES) > $@.tmp
Bowgo Tsaibae15172017-11-29 16:14:53 +08001172 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
1173 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
1174
1175built_odm_fc := $(LOCAL_BUILT_MODULE)
1176odm_fc_files :=
1177odm_fcfiles_with_nl :=
1178
1179##################################
1180include $(CLEAR_VARS)
1181
Jeff Vander Stoepb236eb62017-06-13 08:24:17 -07001182LOCAL_MODULE := plat_file_contexts.recovery
1183LOCAL_MODULE_STEM := plat_file_contexts
1184LOCAL_MODULE_CLASS := ETC
1185LOCAL_MODULE_TAGS := optional
1186LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1187
1188include $(BUILD_SYSTEM)/base_rules.mk
1189
1190$(LOCAL_BUILT_MODULE): $(built_plat_fc)
1191 $(hide) cp -f $< $@
1192
1193##################################
1194include $(CLEAR_VARS)
Tri Vo3361ec42018-12-18 19:51:19 -08001195
1196LOCAL_MODULE := product_file_contexts.recovery
1197LOCAL_MODULE_STEM := product_file_contexts
1198LOCAL_MODULE_CLASS := ETC
1199LOCAL_MODULE_TAGS := optional
1200LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1201
1202include $(BUILD_SYSTEM)/base_rules.mk
1203
1204$(LOCAL_BUILT_MODULE): $(built_product_fc)
1205 $(hide) cp -f $< $@
1206
1207##################################
1208include $(CLEAR_VARS)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001209LOCAL_MODULE := vendor_file_contexts.recovery
1210LOCAL_MODULE_STEM := vendor_file_contexts
Jeff Vander Stoepb236eb62017-06-13 08:24:17 -07001211LOCAL_MODULE_CLASS := ETC
1212LOCAL_MODULE_TAGS := optional
1213LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1214
1215include $(BUILD_SYSTEM)/base_rules.mk
1216
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001217$(LOCAL_BUILT_MODULE): $(built_vendor_fc)
Jeff Vander Stoepb236eb62017-06-13 08:24:17 -07001218 $(hide) cp -f $< $@
1219
1220##################################
1221include $(CLEAR_VARS)
Bowgo Tsaibae15172017-11-29 16:14:53 +08001222LOCAL_MODULE := odm_file_contexts.recovery
1223LOCAL_MODULE_STEM := odm_file_contexts
1224LOCAL_MODULE_CLASS := ETC
1225LOCAL_MODULE_TAGS := optional
1226LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1227
1228include $(BUILD_SYSTEM)/base_rules.mk
1229
1230$(LOCAL_BUILT_MODULE): $(built_odm_fc)
1231 $(hide) cp -f $< $@
1232
1233##################################
1234include $(CLEAR_VARS)
Dan Cashman9c038072016-12-22 07:15:18 -08001235LOCAL_MODULE := plat_seapp_contexts
Ying Wang02fb5f32012-01-17 17:51:09 -08001236LOCAL_MODULE_CLASS := ETC
1237LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001238LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
Ying Wang02fb5f32012-01-17 17:51:09 -08001239
William Roberts171a0622012-08-16 10:55:05 -07001240include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -08001241
Tri Vo35076782018-12-21 10:46:45 -08001242plat_sc_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY))
William Roberts171a0622012-08-16 10:55:05 -07001243
Ying Wangd8b122c2012-10-25 19:01:31 -07001244$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Dan Cashman9c038072016-12-22 07:15:18 -08001245$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(plat_sc_files)
1246$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(plat_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp
William Robertsf0e0a942012-08-27 15:41:15 -07001247 @mkdir -p $(dir $@)
William Roberts99fe8df2015-06-30 13:53:51 -07001248 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES)
Ying Wang02fb5f32012-01-17 17:51:09 -08001249
Dan Cashman9c038072016-12-22 07:15:18 -08001250built_plat_sc := $(LOCAL_BUILT_MODULE)
1251plat_sc_files :=
Robert Craig8b7545b2014-03-20 09:35:08 -04001252
Ying Wang02fb5f32012-01-17 17:51:09 -08001253##################################
Stephen Smalley124720a2012-04-04 10:11:16 -04001254include $(CLEAR_VARS)
Tri Vo35076782018-12-21 10:46:45 -08001255LOCAL_MODULE := product_seapp_contexts
1256LOCAL_MODULE_CLASS := ETC
1257LOCAL_MODULE_TAGS := optional
1258LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
1259
1260include $(BUILD_SYSTEM)/base_rules.mk
1261
1262product_sc_files := $(call build_policy, seapp_contexts, $(PRODUCT_PRIVATE_POLICY))
1263plat_sc_neverallow_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY))
1264
1265$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1266$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(product_sc_files)
1267$(LOCAL_BUILT_MODULE): PRIVATE_SC_NEVERALLOW_FILES := $(plat_sc_neverallow_files)
1268$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(product_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp $(plat_sc_neverallow_files)
1269 @mkdir -p $(dir $@)
1270 $(hide) grep -ihe '^neverallow' $(PRIVATE_SC_NEVERALLOW_FILES) > $@.tmp
1271 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES) $@.tmp
1272
1273product_sc_files :=
1274plat_sc_neverallow_files :=
1275
1276##################################
1277include $(CLEAR_VARS)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001278LOCAL_MODULE := vendor_seapp_contexts
Stephen Smalley37712872015-03-12 15:46:36 -04001279LOCAL_MODULE_CLASS := ETC
Dan Cashman9c038072016-12-22 07:15:18 -08001280LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001281LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Stephen Smalley37712872015-03-12 15:46:36 -04001282
1283include $(BUILD_SYSTEM)/base_rules.mk
1284
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001285vendor_sc_files := $(call build_policy, seapp_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Tri Vo75887dd2018-12-14 14:30:56 -08001286plat_sc_neverallow_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Stephen Smalley37712872015-03-12 15:46:36 -04001287
Dan Cashman9c038072016-12-22 07:15:18 -08001288$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001289$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(vendor_sc_files)
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -08001290$(LOCAL_BUILT_MODULE): PRIVATE_SC_NEVERALLOW_FILES := $(plat_sc_neverallow_files)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001291$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(vendor_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp $(plat_sc_neverallow_files)
Stephen Smalley37712872015-03-12 15:46:36 -04001292 @mkdir -p $(dir $@)
Dan Cashman91d398d2017-09-26 12:58:29 -07001293 $(hide) grep -ihe '^neverallow' $(PRIVATE_SC_NEVERALLOW_FILES) > $@.tmp
Xin Liec6f3932017-03-14 16:51:13 -07001294 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES) $@.tmp
Stephen Smalley37712872015-03-12 15:46:36 -04001295
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001296built_vendor_sc := $(LOCAL_BUILT_MODULE)
1297vendor_sc_files :=
Stephen Smalley37712872015-03-12 15:46:36 -04001298
1299##################################
1300include $(CLEAR_VARS)
Bowgo Tsaiecf656b2017-11-29 16:15:28 +08001301LOCAL_MODULE := odm_seapp_contexts
1302LOCAL_MODULE_CLASS := ETC
1303LOCAL_MODULE_TAGS := optional
1304LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1305
1306include $(BUILD_SYSTEM)/base_rules.mk
1307
1308odm_sc_files := $(call build_policy, seapp_contexts, $(BOARD_ODM_SEPOLICY_DIRS))
Tri Vo75887dd2018-12-14 14:30:56 -08001309plat_sc_neverallow_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Bowgo Tsaiecf656b2017-11-29 16:15:28 +08001310
1311$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1312$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(odm_sc_files)
1313$(LOCAL_BUILT_MODULE): PRIVATE_SC_NEVERALLOW_FILES := $(plat_sc_neverallow_files)
1314$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(odm_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp $(plat_sc_neverallow_files)
1315 @mkdir -p $(dir $@)
1316 $(hide) grep -ihe '^neverallow' $(PRIVATE_SC_NEVERALLOW_FILES) > $@.tmp
1317 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES) $@.tmp
1318
1319built_odm_sc := $(LOCAL_BUILT_MODULE)
1320odm_sc_files :=
1321
1322##################################
1323include $(CLEAR_VARS)
Dan Cashman9c038072016-12-22 07:15:18 -08001324LOCAL_MODULE := plat_seapp_neverallows
William Roberts4ee71312015-06-25 11:59:30 -07001325LOCAL_MODULE_CLASS := ETC
1326LOCAL_MODULE_TAGS := tests
1327
1328include $(BUILD_SYSTEM)/base_rules.mk
1329
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -08001330$(LOCAL_BUILT_MODULE): $(plat_sc_neverallow_files)
William Roberts4ee71312015-06-25 11:59:30 -07001331 @mkdir -p $(dir $@)
Dan Cashman91d398d2017-09-26 12:58:29 -07001332 - $(hide) grep -ihe '^neverallow' $< > $@
William Roberts4ee71312015-06-25 11:59:30 -07001333
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -08001334plat_sc_neverallow_files :=
William Roberts4ee71312015-06-25 11:59:30 -07001335
1336##################################
1337include $(CLEAR_VARS)
Stephen Smalley124720a2012-04-04 10:11:16 -04001338
Sandeep Patila86316e2016-12-27 16:08:44 -08001339LOCAL_MODULE := plat_property_contexts
Stephen Smalley124720a2012-04-04 10:11:16 -04001340LOCAL_MODULE_CLASS := ETC
1341LOCAL_MODULE_TAGS := optional
Alex Klyubin9d590412017-03-08 13:10:05 -08001342LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
Stephen Smalley124720a2012-04-04 10:11:16 -04001343
1344include $(BUILD_SYSTEM)/base_rules.mk
1345
Tri Vo5da72002018-12-20 19:31:42 -08001346plat_pcfiles := $(call build_policy, property_contexts, $(PLAT_PRIVATE_POLICY))
Jaekyun Seoke4971452017-10-19 16:54:49 +09001347ifeq ($(PRODUCT_COMPATIBLE_PROPERTY),true)
1348plat_pcfiles += $(LOCAL_PATH)/public/property_contexts
1349endif
William Roberts6aabc1c2015-07-30 11:44:26 -07001350
Sandeep Patila86316e2016-12-27 16:08:44 -08001351plat_property_contexts.tmp := $(intermediates)/plat_property_contexts.tmp
1352$(plat_property_contexts.tmp): PRIVATE_PC_FILES := $(plat_pcfiles)
1353$(plat_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1354$(plat_property_contexts.tmp): $(plat_pcfiles)
William Roberts7f81b332015-09-29 13:52:37 -07001355 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001356 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
Tom Cherrya15df752018-03-23 14:15:23 -07001357$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1358$(LOCAL_BUILT_MODULE): $(plat_property_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/property_info_checker
William Robertsdcffd2b2015-09-29 13:52:37 -07001359 @mkdir -p $(dir $@)
Tom Cherryf68b4c62018-01-04 09:46:48 -08001360 $(hide) cp -f $< $@
Tom Cherrya15df752018-03-23 14:15:23 -07001361 $(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $(PRIVATE_SEPOLICY) $@
Stephen Smalley124720a2012-04-04 10:11:16 -04001362
Sandeep Patila86316e2016-12-27 16:08:44 -08001363built_plat_pc := $(LOCAL_BUILT_MODULE)
1364plat_pcfiles :=
1365plat_property_contexts.tmp :=
Robert Craig8b7545b2014-03-20 09:35:08 -04001366
Stephen Smalley124720a2012-04-04 10:11:16 -04001367##################################
Riley Spahnf90c41f2014-06-05 15:52:02 -07001368include $(CLEAR_VARS)
Tri Vo5da72002018-12-20 19:31:42 -08001369LOCAL_MODULE := product_property_contexts
1370LOCAL_MODULE_CLASS := ETC
1371LOCAL_MODULE_TAGS := optional
1372LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
1373
1374include $(BUILD_SYSTEM)/base_rules.mk
1375
1376product_pcfiles := $(call build_policy, property_contexts, $(PRODUCT_PRIVATE_POLICY))
1377
1378product_property_contexts.tmp := $(intermediates)/product_property_contexts.tmp
1379$(product_property_contexts.tmp): PRIVATE_PC_FILES := $(product_pcfiles)
1380$(product_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1381$(product_property_contexts.tmp): $(product_pcfiles)
1382 @mkdir -p $(dir $@)
1383 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
1384
1385$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1386$(LOCAL_BUILT_MODULE): $(product_property_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/property_info_checker
1387 @mkdir -p $(dir $@)
1388 $(hide) cp -f $< $@
1389 $(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $(PRIVATE_SEPOLICY) $@
1390
1391built_product_pc := $(LOCAL_BUILT_MODULE)
1392product_pcfiles :=
1393product_property_contexts.tmp :=
1394
1395##################################
1396include $(CLEAR_VARS)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001397LOCAL_MODULE := vendor_property_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001398LOCAL_MODULE_CLASS := ETC
Sandeep Patila86316e2016-12-27 16:08:44 -08001399LOCAL_MODULE_TAGS := optional
Alex Klyubin9d590412017-03-08 13:10:05 -08001400LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001401
Stephen Smalleyc9361732015-03-13 09:36:57 -04001402include $(BUILD_SYSTEM)/base_rules.mk
1403
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001404vendor_pcfiles := $(call build_policy, property_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Sandeep Patil262edc32016-12-27 16:08:44 -08001405
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001406vendor_property_contexts.tmp := $(intermediates)/vendor_property_contexts.tmp
1407$(vendor_property_contexts.tmp): PRIVATE_PC_FILES := $(vendor_pcfiles)
1408$(vendor_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1409$(vendor_property_contexts.tmp): $(vendor_pcfiles)
William Robertsdcffd2b2015-09-29 13:52:37 -07001410 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001411 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
Sandeep Patila86316e2016-12-27 16:08:44 -08001412
Tom Cherrya15df752018-03-23 14:15:23 -07001413$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1414$(LOCAL_BUILT_MODULE): PRIVATE_BUILT_PLAT_PC := $(built_plat_pc)
1415$(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 -08001416 @mkdir -p $(dir $@)
Tom Cherryf68b4c62018-01-04 09:46:48 -08001417 $(hide) cp -f $< $@
Tom Cherrya15df752018-03-23 14:15:23 -07001418 $(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $(PRIVATE_SEPOLICY) $(PRIVATE_BUILT_PLAT_PC) $@
William Robertsdcffd2b2015-09-29 13:52:37 -07001419
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001420built_vendor_pc := $(LOCAL_BUILT_MODULE)
1421vendor_pcfiles :=
1422vendor_property_contexts.tmp :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001423
1424##################################
1425include $(CLEAR_VARS)
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001426LOCAL_MODULE := odm_property_contexts
1427LOCAL_MODULE_CLASS := ETC
1428LOCAL_MODULE_TAGS := optional
1429LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1430
1431include $(BUILD_SYSTEM)/base_rules.mk
1432
1433odm_pcfiles := $(call build_policy, property_contexts, $(BOARD_ODM_SEPOLICY_DIRS))
1434
1435odm_property_contexts.tmp := $(intermediates)/odm_property_contexts.tmp
1436$(odm_property_contexts.tmp): PRIVATE_PC_FILES := $(odm_pcfiles)
1437$(odm_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1438$(odm_property_contexts.tmp): $(odm_pcfiles)
1439 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001440 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001441
1442
Tom Cherrya15df752018-03-23 14:15:23 -07001443$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1444$(LOCAL_BUILT_MODULE): PRIVATE_BUILT_PLAT_PC := $(built_plat_pc)
1445$(LOCAL_BUILT_MODULE): PRIVATE_BUILT_VENDOR_PC := $(built_vendor_pc)
1446$(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 +08001447 @mkdir -p $(dir $@)
1448 $(hide) cp -f $< $@
Tom Cherrya15df752018-03-23 14:15:23 -07001449 $(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $(PRIVATE_SEPOLICY) $(PRIVATE_BUILT_PLAT_PC) $(PRIVATE_BUILT_VENDOR_PC) $@
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001450
1451built_odm_pc := $(LOCAL_BUILT_MODULE)
1452odm_pcfiles :=
1453odm_property_contexts.tmp :=
1454
1455##################################
1456include $(CLEAR_VARS)
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001457
Alex Klyubinec78c372017-03-10 12:44:16 -08001458LOCAL_MODULE := plat_property_contexts.recovery
1459LOCAL_MODULE_STEM := plat_property_contexts
1460LOCAL_MODULE_CLASS := ETC
1461LOCAL_MODULE_TAGS := optional
1462LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1463
1464include $(BUILD_SYSTEM)/base_rules.mk
1465
1466$(LOCAL_BUILT_MODULE): $(built_plat_pc)
1467 $(hide) cp -f $< $@
1468
1469##################################
1470include $(CLEAR_VARS)
Tri Vo5da72002018-12-20 19:31:42 -08001471LOCAL_MODULE := product_property_contexts.recovery
1472LOCAL_MODULE_STEM := product_property_contexts
1473LOCAL_MODULE_CLASS := ETC
1474LOCAL_MODULE_TAGS := optional
1475LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1476
1477include $(BUILD_SYSTEM)/base_rules.mk
1478
1479$(LOCAL_BUILT_MODULE): $(built_product_pc)
1480 $(hide) cp -f $< $@
1481
1482##################################
1483include $(CLEAR_VARS)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001484LOCAL_MODULE := vendor_property_contexts.recovery
1485LOCAL_MODULE_STEM := vendor_property_contexts
Alex Klyubinec78c372017-03-10 12:44:16 -08001486LOCAL_MODULE_CLASS := ETC
1487LOCAL_MODULE_TAGS := optional
1488LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1489
1490include $(BUILD_SYSTEM)/base_rules.mk
1491
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001492$(LOCAL_BUILT_MODULE): $(built_vendor_pc)
Alex Klyubinec78c372017-03-10 12:44:16 -08001493 $(hide) cp -f $< $@
1494
1495##################################
1496include $(CLEAR_VARS)
Bowgo Tsai1f717b12017-11-29 16:15:55 +08001497LOCAL_MODULE := odm_property_contexts.recovery
1498LOCAL_MODULE_STEM := odm_property_contexts
1499LOCAL_MODULE_CLASS := ETC
1500LOCAL_MODULE_TAGS := optional
1501LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
1502
1503include $(BUILD_SYSTEM)/base_rules.mk
1504
1505$(LOCAL_BUILT_MODULE): $(built_odm_pc)
1506 $(hide) cp -f $< $@
1507
1508##################################
1509include $(CLEAR_VARS)
Alex Klyubinec78c372017-03-10 12:44:16 -08001510
Sandeep Patila058b562016-12-27 15:10:48 -08001511LOCAL_MODULE := plat_service_contexts
Riley Spahnf90c41f2014-06-05 15:52:02 -07001512LOCAL_MODULE_CLASS := ETC
1513LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001514LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
Riley Spahnf90c41f2014-06-05 15:52:02 -07001515
1516include $(BUILD_SYSTEM)/base_rules.mk
1517
Tri Vo6ac08962018-12-21 12:28:14 -08001518plat_svcfiles := $(call build_policy, service_contexts, $(PLAT_PRIVATE_POLICY))
Riley Spahnf90c41f2014-06-05 15:52:02 -07001519
Sandeep Patila058b562016-12-27 15:10:48 -08001520plat_service_contexts.tmp := $(intermediates)/plat_service_contexts.tmp
1521$(plat_service_contexts.tmp): PRIVATE_SVC_FILES := $(plat_svcfiles)
1522$(plat_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1523$(plat_service_contexts.tmp): $(plat_svcfiles)
Riley Spahnf90c41f2014-06-05 15:52:02 -07001524 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001525 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
William Roberts7fc865a2015-09-29 14:17:38 -07001526
1527$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Sandeep Patila058b562016-12-27 15:10:48 -08001528$(LOCAL_BUILT_MODULE): $(plat_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
William Roberts7fc865a2015-09-29 14:17:38 -07001529 @mkdir -p $(dir $@)
William Robertsc9fce3f2016-04-06 11:53:04 -07001530 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
dcashman07791552016-12-07 11:27:47 -08001531 $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
Riley Spahnf90c41f2014-06-05 15:52:02 -07001532
Sandeep Patila058b562016-12-27 15:10:48 -08001533built_plat_svc := $(LOCAL_BUILT_MODULE)
1534plat_svcfiles :=
1535plat_service_contexts.tmp :=
Riley Spahnf90c41f2014-06-05 15:52:02 -07001536
1537##################################
Tri Vo6ac08962018-12-21 12:28:14 -08001538include $(CLEAR_VARS)
1539
1540LOCAL_MODULE := product_service_contexts
1541LOCAL_MODULE_CLASS := ETC
1542LOCAL_MODULE_TAGS := optional
1543LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
1544
1545include $(BUILD_SYSTEM)/base_rules.mk
1546
1547product_svcfiles := $(call build_policy, service_contexts, $(PRODUCT_PRIVATE_POLICY))
1548
1549product_service_contexts.tmp := $(intermediates)/product_service_contexts.tmp
1550$(product_service_contexts.tmp): PRIVATE_SVC_FILES := $(product_svcfiles)
1551$(product_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1552$(product_service_contexts.tmp): $(product_svcfiles)
1553 @mkdir -p $(dir $@)
1554 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
1555
1556$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1557$(LOCAL_BUILT_MODULE): $(product_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
1558 @mkdir -p $(dir $@)
1559 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1560 $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
1561
1562product_svcfiles :=
1563product_service_contexts.tmp :=
1564
1565##################################
Hung-ying Tyane83f1e52017-09-05 21:51:52 +08001566# nonplat_service_contexts is only allowed on non-full-treble devices
Steven Moreland763697d2017-11-09 11:24:56 -08001567ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
Hung-ying Tyane83f1e52017-09-05 21:51:52 +08001568
rpcraigb19665c2012-07-30 09:33:03 -04001569include $(CLEAR_VARS)
1570
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001571LOCAL_MODULE := vendor_service_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001572LOCAL_MODULE_CLASS := ETC
Sandeep Patila058b562016-12-27 15:10:48 -08001573LOCAL_MODULE_TAGS := optional
Sandeep Patila058b562016-12-27 15:10:48 -08001574LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001575
1576include $(BUILD_SYSTEM)/base_rules.mk
1577
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001578vendor_svcfiles := $(call build_policy, service_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001579
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001580vendor_service_contexts.tmp := $(intermediates)/vendor_service_contexts.tmp
1581$(vendor_service_contexts.tmp): PRIVATE_SVC_FILES := $(vendor_svcfiles)
1582$(vendor_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1583$(vendor_service_contexts.tmp): $(vendor_svcfiles)
Sandeep Patila058b562016-12-27 15:10:48 -08001584 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001585 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Sandeep Patila058b562016-12-27 15:10:48 -08001586
1587$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001588$(LOCAL_BUILT_MODULE): $(vendor_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
William Roberts7fc865a2015-09-29 14:17:38 -07001589 @mkdir -p $(dir $@)
William Robertsc9fce3f2016-04-06 11:53:04 -07001590 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
dcashman07791552016-12-07 11:27:47 -08001591 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
William Roberts7fc865a2015-09-29 14:17:38 -07001592
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001593built_vendor_svc := $(LOCAL_BUILT_MODULE)
1594vendor_svcfiles :=
1595vendor_service_contexts.tmp :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001596
Hung-ying Tyane83f1e52017-09-05 21:51:52 +08001597endif
1598
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001599##################################
1600include $(CLEAR_VARS)
1601
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001602LOCAL_MODULE := plat_hwservice_contexts
1603LOCAL_MODULE_CLASS := ETC
1604LOCAL_MODULE_TAGS := optional
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001605LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001606
1607include $(BUILD_SYSTEM)/base_rules.mk
1608
Tri Voade74162018-12-20 16:13:10 -08001609plat_hwsvcfiles := $(call build_policy, hwservice_contexts, $(PLAT_PRIVATE_POLICY))
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001610
1611plat_hwservice_contexts.tmp := $(intermediates)/plat_hwservice_contexts.tmp
1612$(plat_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(plat_hwsvcfiles)
1613$(plat_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1614$(plat_hwservice_contexts.tmp): $(plat_hwsvcfiles)
1615 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001616 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001617
1618$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1619$(LOCAL_BUILT_MODULE): $(plat_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
1620 @mkdir -p $(dir $@)
1621 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1622 $(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
1623
1624plat_hwsvcfiles :=
1625plat_hwservice_contexts.tmp :=
1626
1627##################################
1628include $(CLEAR_VARS)
1629
Tri Voade74162018-12-20 16:13:10 -08001630LOCAL_MODULE := product_hwservice_contexts
1631LOCAL_MODULE_CLASS := ETC
1632LOCAL_MODULE_TAGS := optional
1633LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
1634
1635include $(BUILD_SYSTEM)/base_rules.mk
1636
1637product_hwsvcfiles := $(call build_policy, hwservice_contexts, $(PRODUCT_PRIVATE_POLICY))
1638
1639product_hwservice_contexts.tmp := $(intermediates)/product_hwservice_contexts.tmp
1640$(product_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(product_hwsvcfiles)
1641$(product_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1642$(product_hwservice_contexts.tmp): $(product_hwsvcfiles)
1643 @mkdir -p $(dir $@)
1644 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
1645
1646$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1647$(LOCAL_BUILT_MODULE): $(product_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
1648 @mkdir -p $(dir $@)
1649 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1650 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
1651
1652product_hwsvcfiles :=
1653product_hwservice_contexts.tmp :=
1654
1655##################################
1656include $(CLEAR_VARS)
1657
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001658LOCAL_MODULE := vendor_hwservice_contexts
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001659LOCAL_MODULE_CLASS := ETC
1660LOCAL_MODULE_TAGS := optional
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001661LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001662
1663include $(BUILD_SYSTEM)/base_rules.mk
1664
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001665vendor_hwsvcfiles := $(call build_policy, hwservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001666
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001667vendor_hwservice_contexts.tmp := $(intermediates)/vendor_hwservice_contexts.tmp
1668$(vendor_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(vendor_hwsvcfiles)
1669$(vendor_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1670$(vendor_hwservice_contexts.tmp): $(vendor_hwsvcfiles)
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001671 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001672 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001673
1674$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001675$(LOCAL_BUILT_MODULE): $(vendor_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001676 @mkdir -p $(dir $@)
1677 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1678 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
1679
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001680vendor_hwsvcfiles :=
1681vendor_hwservice_contexts.tmp :=
1682
Bowgo Tsaiad6231f2017-11-29 16:16:26 +08001683##################################
1684include $(CLEAR_VARS)
1685
1686LOCAL_MODULE := odm_hwservice_contexts
1687LOCAL_MODULE_CLASS := ETC
1688LOCAL_MODULE_TAGS := optional
1689LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1690
1691include $(BUILD_SYSTEM)/base_rules.mk
1692
1693odm_hwsvcfiles := $(call build_policy, hwservice_contexts, $(BOARD_ODM_SEPOLICY_DIRS))
1694
1695odm_hwservice_contexts.tmp := $(intermediates)/odm_hwservice_contexts.tmp
1696$(odm_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(odm_hwsvcfiles)
1697$(odm_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1698$(odm_hwservice_contexts.tmp): $(odm_hwsvcfiles)
1699 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001700 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Bowgo Tsaiad6231f2017-11-29 16:16:26 +08001701
1702$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1703$(LOCAL_BUILT_MODULE): $(odm_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
1704 @mkdir -p $(dir $@)
1705 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1706 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
1707
1708odm_hwsvcfiles :=
1709odm_hwservice_contexts.tmp :=
Martijn Coenen3ea47b92017-04-07 16:14:43 -07001710
1711##################################
1712include $(CLEAR_VARS)
1713
Martijn Coenen6676c232017-03-31 17:29:53 -07001714LOCAL_MODULE := vndservice_contexts
1715LOCAL_MODULE_CLASS := ETC
1716LOCAL_MODULE_TAGS := optional
Martijn Coenen6676c232017-03-31 17:29:53 -07001717LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
Martijn Coenen6676c232017-03-31 17:29:53 -07001718
1719include $(BUILD_SYSTEM)/base_rules.mk
1720
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001721vnd_svcfiles := $(call build_policy, vndservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Martijn Coenen6676c232017-03-31 17:29:53 -07001722
1723vndservice_contexts.tmp := $(intermediates)/vndservice_contexts.tmp
1724$(vndservice_contexts.tmp): PRIVATE_SVC_FILES := $(vnd_svcfiles)
1725$(vndservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1726$(vndservice_contexts.tmp): $(vnd_svcfiles)
1727 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001728 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
Martijn Coenen6676c232017-03-31 17:29:53 -07001729
1730$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1731$(LOCAL_BUILT_MODULE): $(vndservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
1732 @mkdir -p $(dir $@)
1733 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
Martijn Coenenee976622017-04-07 10:08:55 -07001734 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -v $(PRIVATE_SEPOLICY) $@
Martijn Coenen6676c232017-03-31 17:29:53 -07001735
1736vnd_svcfiles :=
1737vndservice_contexts.tmp :=
1738##################################
1739include $(CLEAR_VARS)
1740
dcashman90b3b942016-12-14 13:47:55 -08001741LOCAL_MODULE := plat_mac_permissions.xml
rpcraigb19665c2012-07-30 09:33:03 -04001742LOCAL_MODULE_CLASS := ETC
1743LOCAL_MODULE_TAGS := optional
Jeff Vander Stoepbba9e7b2017-03-10 15:51:23 -08001744LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
rpcraigb19665c2012-07-30 09:33:03 -04001745
William Roberts2c8a55d2012-11-30 14:59:09 -08001746include $(BUILD_SYSTEM)/base_rules.mk
rpcraigb19665c2012-07-30 09:33:03 -04001747
Geremy Condracd4104e2013-03-26 18:19:12 +00001748# Build keys.conf
dcashman90b3b942016-12-14 13:47:55 -08001749plat_mac_perms_keys.tmp := $(intermediates)/plat_keys.tmp
1750$(plat_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Tri Vo75887dd2018-12-14 14:30:56 -08001751$(plat_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PLAT_PRIVATE_POLICY) $(PRODUCT_PRIVATE_POLICY))
Geremy Condracd4104e2013-03-26 18:19:12 +00001752 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001753 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
Geremy Condracd4104e2013-03-26 18:19:12 +00001754
Tri Vo35650d52018-12-21 16:07:21 -08001755all_plat_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PLAT_PRIVATE_POLICY))
rpcraigb19665c2012-07-30 09:33:03 -04001756
Shinichiro Hamajief0c14d2016-05-13 16:04:58 +09001757# Should be synced with keys.conf.
dcashman90b3b942016-12-14 13:47:55 -08001758all_plat_keys := platform media shared testkey
1759all_plat_keys := $(all_keys:%=$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))/%.x509.pem)
Shinichiro Hamajief0c14d2016-05-13 16:04:58 +09001760
dcashman90b3b942016-12-14 13:47:55 -08001761$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_plat_mac_perms_files)
1762$(LOCAL_BUILT_MODULE): $(plat_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1763$(all_plat_mac_perms_files) $(all_plat_keys)
Geremy Condracd4104e2013-03-26 18:19:12 +00001764 @mkdir -p $(dir $@)
Nick Kralevichc3c90522013-10-25 12:25:36 -07001765 $(hide) DEFAULT_SYSTEM_DEV_CERTIFICATE="$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))" \
William Roberts6aabc1c2015-07-30 11:44:26 -07001766 $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
Geremy Condracd4104e2013-03-26 18:19:12 +00001767
William Roberts6aabc1c2015-07-30 11:44:26 -07001768all_mac_perms_files :=
dcashman90b3b942016-12-14 13:47:55 -08001769all_plat_keys :=
1770plat_mac_perms_keys.tmp :=
1771
1772##################################
1773include $(CLEAR_VARS)
1774
Tri Vo35650d52018-12-21 16:07:21 -08001775LOCAL_MODULE := product_mac_permissions.xml
1776LOCAL_MODULE_CLASS := ETC
1777LOCAL_MODULE_TAGS := optional
1778LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/etc/selinux
1779
1780include $(BUILD_SYSTEM)/base_rules.mk
1781
1782# Build keys.conf
1783product_mac_perms_keys.tmp := $(intermediates)/product_keys.tmp
1784$(product_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1785$(product_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PRODUCT_PRIVATE_POLICY) $(REQD_MASK_POLICY))
1786 @mkdir -p $(dir $@)
1787 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
1788
1789all_product_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PRODUCT_PRIVATE_POLICY) $(REQD_MASK_POLICY))
1790
1791$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_product_mac_perms_files)
1792$(LOCAL_BUILT_MODULE): $(product_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1793$(all_product_mac_perms_files)
1794 @mkdir -p $(dir $@)
1795 $(hide) $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
1796
1797product_mac_perms_keys.tmp :=
1798all_product_mac_perms_files :=
1799
1800##################################
1801include $(CLEAR_VARS)
1802
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001803LOCAL_MODULE := vendor_mac_permissions.xml
dcashman90b3b942016-12-14 13:47:55 -08001804LOCAL_MODULE_CLASS := ETC
1805LOCAL_MODULE_TAGS := optional
Jeff Vander Stoepbba9e7b2017-03-10 15:51:23 -08001806LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashman90b3b942016-12-14 13:47:55 -08001807
1808include $(BUILD_SYSTEM)/base_rules.mk
1809
1810# Build keys.conf
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001811vendor_mac_perms_keys.tmp := $(intermediates)/vendor_keys.tmp
1812$(vendor_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1813$(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 -08001814 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001815 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
dcashman90b3b942016-12-14 13:47:55 -08001816
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001817all_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 -08001818
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001819$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_vendor_mac_perms_files)
1820$(LOCAL_BUILT_MODULE): $(vendor_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1821$(all_vendor_mac_perms_files)
dcashman90b3b942016-12-14 13:47:55 -08001822 @mkdir -p $(dir $@)
1823 $(hide) $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
1824
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001825vendor_mac_perms_keys.tmp :=
1826all_vendor_mac_perms_files :=
William Roberts6aabc1c2015-07-30 11:44:26 -07001827
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +08001828##################################
1829include $(CLEAR_VARS)
1830
1831LOCAL_MODULE := odm_mac_permissions.xml
1832LOCAL_MODULE_CLASS := ETC
1833LOCAL_MODULE_TAGS := optional
1834LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
1835
1836include $(BUILD_SYSTEM)/base_rules.mk
1837
1838# Build keys.conf
1839odm_mac_perms_keys.tmp := $(intermediates)/odm_keys.tmp
1840$(odm_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1841$(odm_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(BOARD_ODM_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
1842 @mkdir -p $(dir $@)
Nick Kralevich764cbd02018-08-15 09:55:27 -07001843 $(hide) m4 --fatal-warnings -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
Bowgo Tsaiaf7d85f2017-11-29 16:06:15 +08001844
1845all_odm_mac_perms_files := $(call build_policy, mac_permissions.xml, $(BOARD_ODM_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
1846
1847$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_odm_mac_perms_files)
1848$(LOCAL_BUILT_MODULE): $(odm_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1849$(all_odm_mac_perms_files)
1850 @mkdir -p $(dir $@)
1851 $(hide) $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
1852
1853odm_mac_perms_keys.tmp :=
1854all_odm_mac_perms_files :=
1855
Dan Cashman91d398d2017-09-26 12:58:29 -07001856#################################
1857include $(CLEAR_VARS)
1858LOCAL_MODULE := sepolicy_tests
1859LOCAL_MODULE_CLASS := ETC
1860LOCAL_MODULE_TAGS := tests
1861
1862include $(BUILD_SYSTEM)/base_rules.mk
1863
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001864all_fc_files := $(built_plat_fc) $(built_vendor_fc)
Tri Vo3361ec42018-12-18 19:51:19 -08001865ifdef HAS_PRODUCT_SEPOLICY
1866all_fc_args += $(built_product_fc)
1867endif
Bowgo Tsaibae15172017-11-29 16:14:53 +08001868ifdef BOARD_ODM_SEPOLICY_DIRS
1869all_fc_files += $(built_odm_fc)
1870endif
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001871all_fc_args := $(foreach file, $(all_fc_files), -f $(file))
1872
Dan Cashman91d398d2017-09-26 12:58:29 -07001873sepolicy_tests := $(intermediates)/sepolicy_tests
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001874$(sepolicy_tests): ALL_FC_ARGS := $(all_fc_args)
Dan Cashman91d398d2017-09-26 12:58:29 -07001875$(sepolicy_tests): PRIVATE_SEPOLICY := $(built_sepolicy)
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001876$(sepolicy_tests): $(HOST_OUT_EXECUTABLES)/sepolicy_tests $(all_fc_files) $(built_sepolicy)
Dan Cashman91d398d2017-09-26 12:58:29 -07001877 @mkdir -p $(dir $@)
Jeff Vander Stoep3ca843a2017-10-04 09:42:29 -07001878 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy_tests -l $(HOST_OUT)/lib64/libsepolwrap.$(SHAREDLIB_EXT) \
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001879 $(ALL_FC_ARGS) -p $(PRIVATE_SEPOLICY)
Dan Cashman91d398d2017-09-26 12:58:29 -07001880 $(hide) touch $@
1881
rpcraigb19665c2012-07-30 09:33:03 -04001882##################################
Tri Vo14069262018-01-31 16:22:35 -08001883intermediates := $(call intermediates-dir-for,ETC,built_plat_sepolicy,,,,)
Dan Cashman91d398d2017-09-26 12:58:29 -07001884
1885# plat_sepolicy - the current platform policy only, built into a policy binary.
1886# TODO - this currently excludes partner extensions, but support should be added
1887# to enable partners to add their own compatibility mapping
Tri Vo75887dd2018-12-14 14:30:56 -08001888BASE_PLAT_PUBLIC_POLICY := $(PLAT_PUBLIC_POLICY)
1889BASE_PLAT_PRIVATE_POLICY := $(PLAT_PRIVATE_POLICY)
Dan Cashman91d398d2017-09-26 12:58:29 -07001890base_plat_policy.conf := $(intermediates)/base_plat_policy.conf
1891$(base_plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1892$(base_plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Joel Galensonc1486212018-03-23 12:40:26 -07001893$(base_plat_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
Dan Cashman91d398d2017-09-26 12:58:29 -07001894$(base_plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1895$(base_plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
1896$(base_plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Steven Moreland763697d2017-11-09 11:24:56 -08001897$(base_plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := true
Jaekyun Seoke4971452017-10-19 16:54:49 +09001898$(base_plat_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
Dan Cashman91d398d2017-09-26 12:58:29 -07001899$(base_plat_policy.conf): $(call build_policy, $(sepolicy_build_files), \
1900$(BASE_PLAT_PUBLIC_POLICY) $(BASE_PLAT_PRIVATE_POLICY))
1901 $(transform-policy-to-conf)
huangyanjun25095722018-09-13 14:04:19 +08001902 $(hide) sed '/^\s*dontaudit.*;/d' $@ | sed '/^\s*dontaudit/,/;/d' > $@.dontaudit
Dan Cashman91d398d2017-09-26 12:58:29 -07001903
1904built_plat_sepolicy := $(intermediates)/built_plat_sepolicy
1905$(built_plat_sepolicy): PRIVATE_ADDITIONAL_CIL_FILES := \
1906 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(BASE_PLAT_PRIVATE_POLICY))
Joel Galenson5988b562018-01-03 16:53:24 -08001907$(built_plat_sepolicy): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
Dan Cashman91d398d2017-09-26 12:58:29 -07001908$(built_plat_sepolicy): $(base_plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
1909$(HOST_OUT_EXECUTABLES)/secilc \
Joel Galenson5988b562018-01-03 16:53:24 -08001910$(call build_policy, $(sepolicy_build_cil_workaround_files), $(BASE_PLAT_PRIVATE_POLICY)) \
1911$(built_sepolicy_neverallows)
Dan Cashman91d398d2017-09-26 12:58:29 -07001912 @mkdir -p $(dir $@)
1913 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
1914 $(POLICYVERS) -o $@ $<
1915 $(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@
Joel Galenson5988b562018-01-03 16:53:24 -08001916 $(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 -07001917
Tri Voe3f4f772018-09-28 17:21:08 -07001918base_plat_pub_policy.conf := $(intermediates)/base_plat_pub_policy.conf
1919$(base_plat_pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
1920$(base_plat_pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
1921$(base_plat_pub_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := user
1922$(base_plat_pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
1923$(base_plat_pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
1924$(base_plat_pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1925$(base_plat_pub_policy.conf): PRIVATE_SEPOLICY_SPLIT := true
1926$(base_plat_pub_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
1927$(base_plat_pub_policy.conf): $(call build_policy, $(sepolicy_build_files), \
1928$(BASE_PLAT_PUBLIC_POLICY) $(REQD_MASK_POLICY))
1929 $(transform-policy-to-conf)
1930
1931base_plat_pub_policy.cil := $(intermediates)/base_plat_pub_policy.cil
1932$(base_plat_pub_policy.cil): PRIVATE_POL_CONF := $(base_plat_pub_policy.conf)
1933$(base_plat_pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
Tri Vod57789f2018-12-17 16:35:41 -08001934$(base_plat_pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
1935$(HOST_OUT_EXECUTABLES)/build_sepolicy $(base_plat_pub_policy.conf) $(reqd_policy_mask.cil)
Tri Voe3f4f772018-09-28 17:21:08 -07001936 @mkdir -p $(dir $@)
Tri Vod57789f2018-12-17 16:35:41 -08001937 $(hide) $(CHECKPOLICY_ASAN_OPTIONS) $< -C -M -c $(POLICYVERS) -o $@ $(PRIVATE_POL_CONF)
1938 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) filter_out \
1939 -f $(PRIVATE_REQD_MASK) -t $@
Tri Voe3f4f772018-09-28 17:21:08 -07001940
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001941all_fc_files := $(built_plat_fc) $(built_vendor_fc)
Tri Vo3361ec42018-12-18 19:51:19 -08001942ifdef HAS_PRODUCT_SEPOLICY
1943all_fc_files += $(built_product_fc)
1944endif
Bowgo Tsaibae15172017-11-29 16:14:53 +08001945ifdef BOARD_ODM_SEPOLICY_DIRS
1946all_fc_files += $(built_odm_fc)
1947endif
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08001948all_fc_args := $(foreach file, $(all_fc_files), -f $(file))
1949
Tri Vo14069262018-01-31 16:22:35 -08001950# Tests for Treble compatibility of current platform policy and vendor policy of
1951# given release version.
1952version_under_treble_tests := 26.0
1953include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
Dan Cashman91d398d2017-09-26 12:58:29 -07001954
Tri Vo9299d932018-01-31 16:50:28 -08001955version_under_treble_tests := 27.0
1956include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
1957
Jae Shin1fa96342018-07-11 18:30:44 +09001958version_under_treble_tests := 28.0
1959include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
1960
Dan Cashman91d398d2017-09-26 12:58:29 -07001961BASE_PLAT_PUBLIC_POLICY :=
1962BASE_PLAT_PRIVATE_POLICY :=
1963base_plat_policy.conf :=
Tri Voe3f4f772018-09-28 17:21:08 -07001964base_plat_pub_policy.conf :=
Dan Cashman91d398d2017-09-26 12:58:29 -07001965plat_sepolicy :=
1966
Jeff Vander Stoep1fc06822017-05-31 15:36:07 -07001967#################################
Tri Vo81198bb2018-03-15 11:38:08 -07001968include $(CLEAR_VARS)
1969LOCAL_MODULE := sepolicy_freeze_test
1970LOCAL_MODULE_CLASS := ETC
1971LOCAL_MODULE_TAGS := tests
1972
1973include $(BUILD_SYSTEM)/base_rules.mk
1974
1975base_plat_public := $(LOCAL_PATH)/public
1976base_plat_private := $(LOCAL_PATH)/private
1977base_plat_public_prebuilt := \
1978 $(LOCAL_PATH)/prebuilts/api/$(PLATFORM_SEPOLICY_VERSION)/public
1979base_plat_private_prebuilt := \
1980 $(LOCAL_PATH)/prebuilts/api/$(PLATFORM_SEPOLICY_VERSION)/private
1981
1982all_frozen_files := $(call build_policy,$(sepolicy_build_files), \
1983$(base_plat_public) $(base_plat_private) $(base_plat_public_prebuilt) $(base_plat_private_prebuilt))
1984
1985$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PUBLIC := $(base_plat_public)
1986$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PRIVATE := $(base_plat_private)
1987$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PUBLIC_PREBUILT := $(base_plat_public_prebuilt)
1988$(LOCAL_BUILT_MODULE): PRIVATE_BASE_PLAT_PRIVATE_PREBUILT := $(base_plat_private_prebuilt)
1989$(LOCAL_BUILT_MODULE): $(all_frozen_files)
1990ifneq ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
Joel Galenson98f83b62018-05-22 09:22:41 -07001991 @diff -rq -x bug_map $(PRIVATE_BASE_PLAT_PUBLIC_PREBUILT) $(PRIVATE_BASE_PLAT_PUBLIC)
1992 @diff -rq -x bug_map $(PRIVATE_BASE_PLAT_PRIVATE_PREBUILT) $(PRIVATE_BASE_PLAT_PRIVATE)
Tri Vo81198bb2018-03-15 11:38:08 -07001993endif # ($(PLATFORM_SEPOLICY_VERSION),$(TOT_SEPOLICY_VERSION))
1994 $(hide) touch $@
1995
1996base_plat_public :=
1997base_plat_private :=
1998base_plat_public_prebuilt :=
1999base_plat_private_prebuilt :=
2000all_frozen_files :=
2001
2002#################################
2003
rpcraig47cd3962012-10-17 21:09:52 -04002004
Dan Cashman1c040272016-12-15 15:28:44 -08002005add_nl :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08002006build_vendor_policy :=
Bowgo Tsaibae15172017-11-29 16:14:53 +08002007build_odm_policy :=
Dan Cashman1c040272016-12-15 15:28:44 -08002008build_policy :=
dcashmand225b692016-12-12 09:29:04 -08002009built_plat_fc :=
Tri Vo3361ec42018-12-18 19:51:19 -08002010built_product_fc :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08002011built_vendor_fc :=
Bowgo Tsaibae15172017-11-29 16:14:53 +08002012built_odm_fc :=
Richard Hainesc8801fe2015-12-11 10:39:19 +00002013built_nl :=
Alex Klyubin8f7173b2017-02-25 14:47:53 -08002014built_plat_cil :=
Tri Voe68ba592019-01-15 13:31:03 -08002015built_pub_vers_cil :=
Tri Vo937e6642019-01-15 15:16:55 -08002016built_plat_mapping_cil :=
2017built_product_mapping_cil :=
Sandeep Patila86316e2016-12-27 16:08:44 -08002018built_plat_pc :=
Tri Vo5da72002018-12-20 19:31:42 -08002019built_product_pc :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08002020built_vendor_cil :=
2021built_vendor_pc :=
2022built_vendor_sc :=
Bowgo Tsai45457e32017-11-27 11:41:33 +08002023built_odm_cil :=
Bowgo Tsai1f717b12017-11-29 16:15:55 +08002024built_odm_pc :=
Bowgo Tsaiecf656b2017-11-29 16:15:28 +08002025built_odm_sc :=
Dan Cashman9c038072016-12-22 07:15:18 -08002026built_plat_sc :=
Alex Klyubin193dccd2017-03-07 14:05:57 -08002027built_precompiled_sepolicy :=
Dan Cashman1c040272016-12-15 15:28:44 -08002028built_sepolicy :=
Joel Galenson5988b562018-01-03 16:53:24 -08002029built_sepolicy_neverallows :=
Sandeep Patila058b562016-12-27 15:10:48 -08002030built_plat_svc :=
Bowgo Tsaiafbcf212018-02-05 17:34:52 +08002031built_vendor_svc :=
Joel Galensonc1486212018-03-23 12:40:26 -07002032built_plat_sepolicy :=
Jeff Vander Stoepb8787692017-04-21 15:57:07 -07002033mapping_policy :=
Dan Cashman1c040272016-12-15 15:28:44 -08002034my_target_arch :=
Tri Voe68ba592019-01-15 13:31:03 -08002035pub_policy.cil :=
dcashman1faa6442016-11-28 07:20:28 -08002036reqd_policy_mask.cil :=
Dan Cashman1c040272016-12-15 15:28:44 -08002037sepolicy_build_files :=
Alex Klyubin7cda44f2017-03-21 14:28:53 -07002038sepolicy_build_cil_workaround_files :=
Jeff Vander Stoep74434842017-03-13 12:22:15 -07002039with_asan :=
Alice Chucdfb06f2012-11-01 11:33:04 -07002040
2041include $(call all-makefiles-under,$(LOCAL_PATH))