blob: 025347e2e6e797834ad1e2dcefbdf003eacacdfa [file] [log] [blame]
Stephen Smalley2dd4e512012-01-04 12:33:27 -05001LOCAL_PATH:= $(call my-dir)
William Robertsf0e0a942012-08-27 15:41:15 -07002
Stephen Smalley2dd4e512012-01-04 12:33:27 -05003include $(CLEAR_VARS)
Jeff Vander Stoepd4a3e9d2017-03-22 16:20:24 -07004LOCAL_MODULE := selinux_policy
5LOCAL_MODULE_TAGS := optional
6# Include SELinux policy. We do this here because different modules
7# need to be included based on the value of PRODUCT_FULL_TREBLE. This
8# type of conditional inclusion cannot be done in top-level files such
9# as build/target/product/embedded.mk.
10# This conditional inclusion closely mimics the conditional logic
11# inside init/init.cpp for loading SELinux policy from files.
12ifeq ($(PRODUCT_FULL_TREBLE),true)
13# Use split SELinux policy
14LOCAL_REQUIRED_MODULES += \
15 mapping_sepolicy.cil \
16 nonplat_sepolicy.cil \
17 plat_sepolicy.cil \
Dan Cashman0e9c47c2017-04-04 14:27:41 -070018 plat_and_mapping_sepolicy.cil.sha256 \
Jeff Vander Stoepd4a3e9d2017-03-22 16:20:24 -070019 secilc \
20 nonplat_file_contexts \
21 plat_file_contexts
Stephen Smalley2dd4e512012-01-04 12:33:27 -050022
Jeff Vander Stoepd4a3e9d2017-03-22 16:20:24 -070023# Include precompiled policy, unless told otherwise
24ifneq ($(PRODUCT_PRECOMPILED_SEPOLICY),false)
Dan Cashman0e9c47c2017-04-04 14:27:41 -070025LOCAL_REQUIRED_MODULES += precompiled_sepolicy precompiled_sepolicy.plat_and_mapping.sha256
Jeff Vander Stoepd4a3e9d2017-03-22 16:20:24 -070026endif
27
28else
29# Use monolithic SELinux policy
30LOCAL_REQUIRED_MODULES += sepolicy \
31 file_contexts.bin
32endif
33include $(BUILD_PHONY_PACKAGE)
34
35include $(CLEAR_VARS)
Stephen Smalley2dd4e512012-01-04 12:33:27 -050036# SELinux policy version.
Stephen Smalleyb4f17062015-03-13 10:03:52 -040037# Must be <= /sys/fs/selinux/policyvers reported by the Android kernel.
Stephen Smalley2dd4e512012-01-04 12:33:27 -050038# Must be within the compatibility range reported by checkpolicy -V.
Jeff Vander Stoep3a0ce492015-12-07 08:30:43 -080039POLICYVERS ?= 30
Stephen Smalley2dd4e512012-01-04 12:33:27 -050040
41MLS_SENS=1
42MLS_CATS=1024
43
Stephen Smalleyb4f17062015-03-13 10:03:52 -040044ifdef BOARD_SEPOLICY_REPLACE
45$(error BOARD_SEPOLICY_REPLACE is no longer supported; please remove from your BoardConfig.mk or other .mk file.)
46endif
47
48ifdef BOARD_SEPOLICY_IGNORE
49$(error BOARD_SEPOLICY_IGNORE is no longer supported; please remove from your BoardConfig.mk or other .mk file.)
50endif
Stephen Smalley5b340be2012-03-06 11:12:41 -050051
Stephen Smalley8e0ca882015-04-01 10:14:56 -040052ifdef BOARD_SEPOLICY_UNION
53$(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.)
54endif
Robert Craig6b0ff472014-01-29 13:10:58 -050055
William Robertsd2185582015-07-16 11:28:02 -070056ifdef BOARD_SEPOLICY_M4DEFS
57LOCAL_ADDITIONAL_M4DEFS := $(addprefix -D, $(BOARD_SEPOLICY_M4DEFS))
58endif
59
dcashmancc39f632016-07-22 13:13:11 -070060# sepolicy is now divided into multiple portions:
61# public - policy exported on which non-platform policy developers may write
62# additional policy. types and attributes are versioned and included in
63# delivered non-platform policy, which is to be combined with platform policy.
64# private - platform-only policy required for platform functionality but which
65# is not exported to vendor policy developers and as such may not be assumed
66# to exist.
Alex Klyubin55961722017-01-30 18:44:59 -080067# vendor - vendor-only policy required for vendor functionality. This policy can
68# reference the public policy but cannot reference the private policy. This
69# policy is for components which are produced from the core/non-vendor tree and
70# placed into a vendor partition.
dcashman07791552016-12-07 11:27:47 -080071# mapping - This contains policy statements which map the attributes
dcashmancc39f632016-07-22 13:13:11 -070072# exposed in the public policy of previous versions to the concrete types used
73# in this policy to ensure that policy targeting attributes from public
74# policy from an older platform version continues to work.
75
dcashman2e00e632016-10-12 14:58:09 -070076# build process for device:
dcashmancc39f632016-07-22 13:13:11 -070077# 1) convert policies to CIL:
78# - private + public platform policy to CIL
79# - mapping file to CIL (should already be in CIL form)
80# - non-platform public policy to CIL
81# - non-platform public + private policy to CIL
82# 2) attributize policy
dcashmancc39f632016-07-22 13:13:11 -070083# - run script which takes non-platform public and non-platform combined
84# private + public policy and produces attributized and versioned
85# non-platform policy
86# 3) combine policy files
87# - combine mapping, platform and non-platform policy.
88# - compile output binary policy file
89
90PLAT_PUBLIC_POLICY := $(LOCAL_PATH)/public
91PLAT_PRIVATE_POLICY := $(LOCAL_PATH)/private
Alex Klyubin55961722017-01-30 18:44:59 -080092PLAT_VENDOR_POLICY := $(LOCAL_PATH)/vendor
dcashman2e00e632016-10-12 14:58:09 -070093REQD_MASK_POLICY := $(LOCAL_PATH)/reqd_mask
94
95# TODO: move to README when doing the README update and finalizing versioning.
96# BOARD_SEPOLICY_VERS should contain the platform version identifier
97# corresponding to the platform on which the non-platform policy is to be
98# based. If unspecified, this will build against the current public platform
99# policy in tree.
100# BOARD_SEPOLICY_VERS_DIR should contain the public platform policy which
101# is associated with the given BOARD_SEPOLICY_VERS. The policy therein will be
102# versioned according to the BOARD_SEPOLICY_VERS identifier and included as
103# part of the non-platform policy to ensure removal of access in future
104# platform policy does not break non-platform policy.
105ifndef BOARD_SEPOLICY_VERS
106$(warning BOARD_SEPOLICY_VERS not specified, assuming current platform version)
107BOARD_SEPOLICY_VERS := current
108BOARD_SEPOLICY_VERS_DIR := $(PLAT_PUBLIC_POLICY)
109else
110ifndef BOARD_SEPOLICY_VERS_DIR
111$(error BOARD_SEPOLICY_VERS_DIR not specified for versioned sepolicy.)
112endif
113endif
dcashmancc39f632016-07-22 13:13:11 -0700114
115###########################################################
116# Compute policy files to be used in policy build.
117# $(1): files to include
118# $(2): directories in which to find files
119###########################################################
120
121define build_policy
122$(foreach type, $(1), $(foreach file, $(addsuffix /$(type), $(2)), $(sort $(wildcard $(file)))))
123endef
William Roberts29d14682016-01-04 12:20:57 -0800124
William Roberts49693f12016-01-04 12:20:57 -0800125# Builds paths for all policy files found in BOARD_SEPOLICY_DIRS.
126# $(1): the set of policy name paths to build
Alex Klyubin55961722017-01-30 18:44:59 -0800127build_device_policy = $(call build_policy, $(1), $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS))
William Roberts49693f12016-01-04 12:20:57 -0800128
Richard Hainesc8801fe2015-12-11 10:39:19 +0000129# Add a file containing only a newline in-between each policy configuration
130# 'contexts' file. This will allow OEM policy configuration files without a
131# final newline (0x0A) to be built correctly by the m4(1) macro processor.
132# $(1): the set of contexts file names.
133# $(2): the file containing only 0x0A.
134add_nl = $(foreach entry, $(1), $(subst $(entry), $(entry) $(2), $(entry)))
135
dcashman704741a2014-07-25 19:11:52 -0700136sepolicy_build_files := security_classes \
137 initial_sids \
138 access_vectors \
139 global_macros \
Nick Kralevicha17a2662014-11-05 15:30:41 -0800140 neverallow_macros \
dcashman704741a2014-07-25 19:11:52 -0700141 mls_macros \
dcashman2e00e632016-10-12 14:58:09 -0700142 mls_decl \
dcashman704741a2014-07-25 19:11:52 -0700143 mls \
144 policy_capabilities \
145 te_macros \
146 attributes \
Jeff Vander Stoepcbaa2b72015-12-22 10:39:34 -0800147 ioctl_defines \
Jeff Vander Stoepde9b5302015-06-05 15:28:55 -0700148 ioctl_macros \
dcashman704741a2014-07-25 19:11:52 -0700149 *.te \
dcashman2e00e632016-10-12 14:58:09 -0700150 roles_decl \
dcashman704741a2014-07-25 19:11:52 -0700151 roles \
152 users \
153 initial_sid_contexts \
154 fs_use \
155 genfs_contexts \
156 port_contexts
157
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700158# CIL files which contain workarounds for current limitation of human-readable
159# module policy language. These files are appended to the CIL files produced
160# from module language files.
161sepolicy_build_cil_workaround_files := technical_debt.cil
162
Dan Cashman1c040272016-12-15 15:28:44 -0800163my_target_arch := $(TARGET_ARCH)
164ifneq (,$(filter mips mips64,$(TARGET_ARCH)))
165 my_target_arch := mips
166endif
167
Jeff Vander Stoepd2053bd2017-03-15 13:37:35 -0700168intermediates := $(TARGET_OUT_INTERMEDIATES)/ETC/sepolicy_intermediates
169
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700170with_asan := false
171ifneq (,$(filter address,$(SANITIZE_TARGET)))
172 with_asan := true
173endif
174
Ying Wang02fb5f32012-01-17 17:51:09 -0800175##################################
dcashman2e00e632016-10-12 14:58:09 -0700176# reqd_policy_mask - a policy.conf file which contains only the bare minimum
177# policy necessary to use checkpolicy. This bare-minimum policy needs to be
178# present in all policy.conf files, but should not necessarily be exported as
179# part of the public policy. The rules generated by reqd_policy_mask will allow
180# the compilation of public policy and subsequent removal of CIL policy that
181# should not be exported.
182
183reqd_policy_mask.conf := $(intermediates)/reqd_policy_mask.conf
184$(reqd_policy_mask.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
185$(reqd_policy_mask.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Dan Cashman1c040272016-12-15 15:28:44 -0800186$(reqd_policy_mask.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700187$(reqd_policy_mask.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700188$(reqd_policy_mask.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
189$(reqd_policy_mask.conf): $(call build_policy, $(sepolicy_build_files), $(REQD_MASK_POLICY))
190 @mkdir -p $(dir $@)
191 $(hide) m4 $(PRIVATE_ADDITIONAL_M4DEFS) \
192 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
193 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800194 -D target_with_dexpreopt=$(WITH_DEXPREOPT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800195 -D target_arch=$(PRIVATE_TGT_ARCH) \
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700196 -D target_with_asan=$(PRIVATE_TGT_WITH_ASAN) \
Alex Klyubinf5446eb2017-03-23 14:27:32 -0700197 -D target_full_treble=$(PRODUCT_FULL_TREBLE) \
dcashman2e00e632016-10-12 14:58:09 -0700198 -s $^ > $@
199
200reqd_policy_mask.cil := $(intermediates)/reqd_policy_mask.cil
201$(reqd_policy_mask.cil): $(reqd_policy_mask.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
202 @mkdir -p $(dir $@)
203 $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -C -M -c $(POLICYVERS) -o $@ $<
204
dcashman1faa6442016-11-28 07:20:28 -0800205reqd_policy_mask.conf :=
206
207##################################
dcashman2e00e632016-10-12 14:58:09 -0700208# plat_pub_policy - policy that will be exported to be a part of non-platform
209# policy corresponding to this platform version. This is a limited subset of
210# policy that would not compile in checkpolicy on its own. To get around this
211# limitation, add only the required files from private policy, which will
212# generate CIL policy that will then be filtered out by the reqd_policy_mask.
213plat_pub_policy.conf := $(intermediates)/plat_pub_policy.conf
214$(plat_pub_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
215$(plat_pub_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Dan Cashman1c040272016-12-15 15:28:44 -0800216$(plat_pub_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700217$(plat_pub_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700218$(plat_pub_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
219$(plat_pub_policy.conf): $(call build_policy, $(sepolicy_build_files), \
220$(BOARD_SEPOLICY_VERS_DIR) $(REQD_MASK_POLICY))
221 @mkdir -p $(dir $@)
222 $(hide) m4 $(PRIVATE_ADDITIONAL_M4DEFS) \
223 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
224 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800225 -D target_with_dexpreopt=$(WITH_DEXPREOPT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800226 -D target_arch=$(PRIVATE_TGT_ARCH) \
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700227 -D target_with_asan=$(PRIVATE_TGT_WITH_ASAN) \
Alex Klyubinf5446eb2017-03-23 14:27:32 -0700228 -D target_full_treble=$(PRODUCT_FULL_TREBLE) \
dcashman2e00e632016-10-12 14:58:09 -0700229 -s $^ > $@
230
231plat_pub_policy.cil := $(intermediates)/plat_pub_policy.cil
dcashman1faa6442016-11-28 07:20:28 -0800232$(plat_pub_policy.cil): PRIVATE_POL_CONF := $(plat_pub_policy.conf)
233$(plat_pub_policy.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
234$(plat_pub_policy.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy $(plat_pub_policy.conf) $(reqd_policy_mask.cil)
dcashman2e00e632016-10-12 14:58:09 -0700235 @mkdir -p $(dir $@)
dcashman1faa6442016-11-28 07:20:28 -0800236 $(hide) $< -C -M -c $(POLICYVERS) -o $@.tmp $(PRIVATE_POL_CONF)
237 $(hide) grep -Fxv -f $(PRIVATE_REQD_MASK) $@.tmp > $@
dcashman2e00e632016-10-12 14:58:09 -0700238
dcashman1faa6442016-11-28 07:20:28 -0800239plat_pub_policy.conf :=
Dan Cashman1c040272016-12-15 15:28:44 -0800240
dcashman1faa6442016-11-28 07:20:28 -0800241##################################
242include $(CLEAR_VARS)
243
244LOCAL_MODULE := sectxfile_nl
245LOCAL_MODULE_CLASS := ETC
246LOCAL_MODULE_TAGS := optional
247
248# Create a file containing newline only to add between context config files
249include $(BUILD_SYSTEM)/base_rules.mk
250$(LOCAL_BUILT_MODULE):
dcashman2e00e632016-10-12 14:58:09 -0700251 @mkdir -p $(dir $@)
dcashman1faa6442016-11-28 07:20:28 -0800252 $(hide) echo > $@
253
254built_nl := $(LOCAL_BUILT_MODULE)
255
256#################################
257include $(CLEAR_VARS)
258
259LOCAL_MODULE := plat_sepolicy.cil
260LOCAL_MODULE_CLASS := ETC
261LOCAL_MODULE_TAGS := optional
Alex Klyubin052b0bb2017-03-02 12:39:25 -0800262LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -0800263
264include $(BUILD_SYSTEM)/base_rules.mk
dcashman2e00e632016-10-12 14:58:09 -0700265
266# plat_policy.conf - A combination of the private and public platform policy
267# which will ship with the device. The platform will always reflect the most
268# recent platform version and is not currently being attributized.
269plat_policy.conf := $(intermediates)/plat_policy.conf
270$(plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
271$(plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Dan Cashman1c040272016-12-15 15:28:44 -0800272$(plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700273$(plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700274$(plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
275$(plat_policy.conf): $(call build_policy, $(sepolicy_build_files), \
dcashmancc39f632016-07-22 13:13:11 -0700276$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
277 @mkdir -p $(dir $@)
278 $(hide) m4 $(PRIVATE_ADDITIONAL_M4DEFS) \
279 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
280 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Jorge Lucangeli Obes84db84e2016-11-18 08:42:35 -0500281 -D target_with_dexpreopt=$(WITH_DEXPREOPT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800282 -D target_arch=$(PRIVATE_TGT_ARCH) \
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700283 -D target_with_asan=$(PRIVATE_TGT_WITH_ASAN) \
Alex Klyubinf5446eb2017-03-23 14:27:32 -0700284 -D target_full_treble=$(PRODUCT_FULL_TREBLE) \
dcashmancc39f632016-07-22 13:13:11 -0700285 -s $^ > $@
286 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
287
dcashman1faa6442016-11-28 07:20:28 -0800288plat_policy_nvr := $(intermediates)/plat_policy_nvr.cil
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700289$(plat_policy_nvr): PRIVATE_ADDITIONAL_CIL_FILES := \
290 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY))
291$(plat_policy_nvr): $(plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
292 $(call build_policy, $(sepolicy_build_cil_workaround_files), $(PLAT_PRIVATE_POLICY))
dcashman2e00e632016-10-12 14:58:09 -0700293 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -0800294 $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c $(POLICYVERS) -o $@ $<
Alex Klyubin7cda44f2017-03-21 14:28:53 -0700295 $(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@
dcashmancc39f632016-07-22 13:13:11 -0700296
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800297$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(plat_policy_nvr)
298$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(plat_policy_nvr)
dcashman1faa6442016-11-28 07:20:28 -0800299 @mkdir -p $(dir $@)
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800300 # Strip out neverallow statements. They aren't needed on-device and their presence
301 # significantly slows down on-device compilation (e.g., from 400 ms to 6,400 ms on
302 # sailfish-eng).
303 grep -v '^(neverallow' $(PRIVATE_CIL_FILES) > $@
304 # Confirm that the resulting policy compiles
305 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -M true -c $(POLICYVERS) $@ -o /dev/null -f /dev/null
dcashman1faa6442016-11-28 07:20:28 -0800306
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800307built_plat_cil := $(LOCAL_BUILT_MODULE)
dcashman1faa6442016-11-28 07:20:28 -0800308plat_policy.conf :=
309
310#################################
311include $(CLEAR_VARS)
312
313LOCAL_MODULE := mapping_sepolicy.cil
314LOCAL_MODULE_CLASS := ETC
315LOCAL_MODULE_TAGS := optional
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700316LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -0800317
318include $(BUILD_SYSTEM)/base_rules.mk
319
320# auto-generate the mapping file for current platform policy, since it needs to
321# track platform policy development
322current_mapping.cil := $(intermediates)/mapping/current.cil
323$(current_mapping.cil) : PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
324$(current_mapping.cil) : $(plat_pub_policy.cil) $(HOST_OUT_EXECUTABLES)/version_policy
325 @mkdir -p $(dir $@)
326 $(hide) $(HOST_OUT_EXECUTABLES)/version_policy -b $< -m -n $(PRIVATE_VERS) -o $@
327
328ifeq ($(BOARD_SEPOLICY_VERS), current)
329mapping_policy_nvr := $(current_mapping.cil)
330else
331mapping_policy_nvr := $(addsuffix /$(BOARD_SEPOLICY_VERS).cil, $(PLAT_PRIVATE_POLICY)/mapping)
332endif
333
334$(LOCAL_BUILT_MODULE): $(mapping_policy_nvr)
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800335 # Strip out neverallow statements. They aren't needed on-device and their presence
336 # significantly slows down on-device compilation (e.g., from 400 ms to 6,400 ms on
337 # sailfish-eng).
338 grep -v '^(neverallow' $< > $@
dcashman1faa6442016-11-28 07:20:28 -0800339
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800340built_mapping_cil := $(LOCAL_BUILT_MODULE)
dcashman1faa6442016-11-28 07:20:28 -0800341current_mapping.cil :=
342
343#################################
344include $(CLEAR_VARS)
345
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700346LOCAL_MODULE := plat_and_mapping_sepolicy.cil.sha256
347LOCAL_MODULE_CLASS := ETC
348LOCAL_MODULE_TAGS := optional
349LOCAL_MODULE_PATH = $(TARGET_OUT)/etc/selinux
350
351include $(BUILD_SYSTEM)/base_rules.mk
352
353$(LOCAL_BUILT_MODULE): $(built_plat_cil) $(built_mapping_cil)
354 cat $^ | sha256sum | cut -d' ' -f1 > $@
355
356#################################
357include $(CLEAR_VARS)
358
dcashman1faa6442016-11-28 07:20:28 -0800359LOCAL_MODULE := nonplat_sepolicy.cil
360LOCAL_MODULE_CLASS := ETC
361LOCAL_MODULE_TAGS := optional
Alex Klyubin052b0bb2017-03-02 12:39:25 -0800362LOCAL_PROPRIETARY_MODULE := true
363LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashman1faa6442016-11-28 07:20:28 -0800364
365include $(BUILD_SYSTEM)/base_rules.mk
366
Alex Klyubin55961722017-01-30 18:44:59 -0800367# nonplat_policy.conf - A combination of the non-platform private, vendor and
368# the exported platform policy associated with the version the non-platform
369# policy targets. This needs attributization and to be combined with the
dcashman2e00e632016-10-12 14:58:09 -0700370# platform-provided policy. Like plat_pub_policy.conf, this needs to make use
371# of the reqd_policy_mask files from private policy in order to use checkpolicy.
372nonplat_policy.conf := $(intermediates)/nonplat_policy.conf
373$(nonplat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
374$(nonplat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
Dan Cashman1c040272016-12-15 15:28:44 -0800375$(nonplat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700376$(nonplat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
dcashman2e00e632016-10-12 14:58:09 -0700377$(nonplat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
378$(nonplat_policy.conf): $(call build_policy, $(sepolicy_build_files), \
Alex Klyubin55961722017-01-30 18:44:59 -0800379$(BOARD_SEPOLICY_VERS_DIR) $(REQD_MASK_POLICY) $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS))
Ying Wang02fb5f32012-01-17 17:51:09 -0800380 @mkdir -p $(dir $@)
William Robertsd2185582015-07-16 11:28:02 -0700381 $(hide) m4 $(PRIVATE_ADDITIONAL_M4DEFS) \
382 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
Nick Kralevich623975f2014-01-11 01:31:03 -0800383 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Jorge Lucangeli Obes84db84e2016-11-18 08:42:35 -0500384 -D target_with_dexpreopt=$(WITH_DEXPREOPT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800385 -D target_arch=$(PRIVATE_TGT_ARCH) \
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700386 -D target_with_asan=$(PRIVATE_TGT_WITH_ASAN) \
Alex Klyubinf5446eb2017-03-23 14:27:32 -0700387 -D target_full_treble=$(PRODUCT_FULL_TREBLE) \
Nick Kralevich623975f2014-01-11 01:31:03 -0800388 -s $^ > $@
Robert Craig65d4f442013-03-27 06:30:25 -0400389 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
Stephen Smalley2dd4e512012-01-04 12:33:27 -0500390
dcashman1faa6442016-11-28 07:20:28 -0800391nonplat_policy_raw := $(intermediates)/nonplat_policy_raw.cil
392$(nonplat_policy_raw): PRIVATE_POL_CONF := $(nonplat_policy.conf)
393$(nonplat_policy_raw): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
394$(nonplat_policy_raw): $(HOST_OUT_EXECUTABLES)/checkpolicy $(nonplat_policy.conf) \
395$(reqd_policy_mask.cil)
Ying Wang02fb5f32012-01-17 17:51:09 -0800396 @mkdir -p $(dir $@)
dcashman1faa6442016-11-28 07:20:28 -0800397 $(hide) $< -C -M -c $(POLICYVERS) -o $@.tmp $(PRIVATE_POL_CONF)
398 $(hide) grep -Fxv -f $(PRIVATE_REQD_MASK) $@.tmp > $@
dcashman2e00e632016-10-12 14:58:09 -0700399
dcashman1faa6442016-11-28 07:20:28 -0800400nonplat_policy_nvr := $(intermediates)/nonplat_policy_nvr.cil
401$(nonplat_policy_nvr) : PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
402$(nonplat_policy_nvr) : PRIVATE_TGT_POL := $(nonplat_policy_raw)
403$(nonplat_policy_nvr) : $(plat_pub_policy.cil) $(nonplat_policy_raw) \
dcashman2e00e632016-10-12 14:58:09 -0700404$(HOST_OUT_EXECUTABLES)/version_policy
405 @mkdir -p $(dir $@)
406 $(HOST_OUT_EXECUTABLES)/version_policy -b $< -t $(PRIVATE_TGT_POL) -n $(PRIVATE_VERS) -o $@
407
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800408$(LOCAL_BUILT_MODULE): PRIVATE_NONPLAT_CIL_FILES := $(nonplat_policy_nvr)
409$(LOCAL_BUILT_MODULE): PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_mapping_cil)
410$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(nonplat_policy_nvr) $(built_plat_cil) \
411$(built_mapping_cil)
dcashman2e00e632016-10-12 14:58:09 -0700412 @mkdir -p $(dir $@)
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800413 # Strip out neverallow statements. They aren't needed on-device and their presence
414 # significantly slows down on-device compilation (e.g., from 400 ms to 6,400 ms on
415 # sailfish-eng).
416 grep -v '^(neverallow' $(PRIVATE_NONPLAT_CIL_FILES) > $@
417 # Confirm that the resulting policy compiles combined with platform and mapping policies
418 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -M true -c $(POLICYVERS) \
419 $(PRIVATE_DEP_CIL_FILES) $@ -o /dev/null -f /dev/null
dcashman2e00e632016-10-12 14:58:09 -0700420
Alex Klyubin193dccd2017-03-07 14:05:57 -0800421built_nonplat_cil := $(LOCAL_BUILT_MODULE)
dcashman1faa6442016-11-28 07:20:28 -0800422nonplat_policy.conf :=
423nonplat_policy_raw :=
424
425#################################
426include $(CLEAR_VARS)
Alex Klyubin193dccd2017-03-07 14:05:57 -0800427
428LOCAL_MODULE := precompiled_sepolicy
429LOCAL_MODULE_CLASS := ETC
430LOCAL_MODULE_TAGS := optional
431LOCAL_PROPRIETARY_MODULE := true
432LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
433
434include $(BUILD_SYSTEM)/base_rules.mk
435
436$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := \
437$(built_plat_cil) $(built_mapping_cil) $(built_nonplat_cil)
438$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc \
439$(built_plat_cil) $(built_mapping_cil) $(built_nonplat_cil)
440 $(hide) $(HOST_OUT_EXECUTABLES)/secilc -M true -c $(POLICYVERS) \
441 $(PRIVATE_CIL_FILES) -o $@ -f /dev/null
442
443built_precompiled_sepolicy := $(LOCAL_BUILT_MODULE)
444
445#################################
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700446# SHA-256 digest of the plat_sepolicy.cil and mapping_sepolicy.cil files against
447# which precompiled_policy was built.
Alex Klyubin193dccd2017-03-07 14:05:57 -0800448#################################
449include $(CLEAR_VARS)
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700450LOCAL_MODULE := precompiled_sepolicy.plat_and_mapping.sha256
Alex Klyubin193dccd2017-03-07 14:05:57 -0800451LOCAL_MODULE_CLASS := ETC
452LOCAL_MODULE_TAGS := optional
453LOCAL_PROPRIETARY_MODULE := true
454LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
455
456include $(BUILD_SYSTEM)/base_rules.mk
457
Dan Cashman0e9c47c2017-04-04 14:27:41 -0700458$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(built_plat_cil) $(built_mapping_cil)
459$(LOCAL_BUILT_MODULE): $(built_precompiled_sepolicy) $(built_plat_cil) $(built_mapping_cil)
460 cat $(PRIVATE_CIL_FILES) | sha256sum | cut -d' ' -f1 > $@
Alex Klyubin193dccd2017-03-07 14:05:57 -0800461
462#################################
463include $(CLEAR_VARS)
Dan Cashman1c040272016-12-15 15:28:44 -0800464# build this target so that we can still perform neverallow checks
dcashman1faa6442016-11-28 07:20:28 -0800465
466LOCAL_MODULE := sepolicy
467LOCAL_MODULE_CLASS := ETC
468LOCAL_MODULE_TAGS := optional
Daniel Cashman65d01342016-12-17 00:53:26 +0000469LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
dcashman2e00e632016-10-12 14:58:09 -0700470
dcashman1faa6442016-11-28 07:20:28 -0800471include $(BUILD_SYSTEM)/base_rules.mk
472
dcashman2e00e632016-10-12 14:58:09 -0700473all_cil_files := \
dcashman1faa6442016-11-28 07:20:28 -0800474 $(plat_policy_nvr) \
475 $(mapping_policy_nvr) \
476 $(nonplat_policy_nvr) \
dcashman2e00e632016-10-12 14:58:09 -0700477
478$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
479$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $(all_cil_files)
480 @mkdir -p $(dir $@)
William Roberts5d0c2e42017-03-23 11:26:29 -0700481 $(hide) $< -M true -c $(POLICYVERS) $(PRIVATE_CIL_FILES) -o $@.tmp -f /dev/null
Nick Kralevichbca98ef2016-02-26 20:06:52 -0800482 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp permissive > $@.permissivedomains
483 $(hide) if [ "$(TARGET_BUILD_VARIANT)" = "user" -a -s $@.permissivedomains ]; then \
484 echo "==========" 1>&2; \
485 echo "ERROR: permissive domains not allowed in user builds" 1>&2; \
486 echo "List of invalid domains:" 1>&2; \
487 cat $@.permissivedomains 1>&2; \
488 exit 1; \
489 fi
490 $(hide) mv $@.tmp $@
Ying Wang02fb5f32012-01-17 17:51:09 -0800491
Ying Wangd8b122c2012-10-25 19:01:31 -0700492built_sepolicy := $(LOCAL_BUILT_MODULE)
dcashman2e00e632016-10-12 14:58:09 -0700493all_cil_files :=
Stephen Smalley01a58af2012-10-02 12:46:37 -0400494
Alex Klyubin84aa7422017-03-10 09:36:07 -0800495#################################
496include $(CLEAR_VARS)
497
498# keep concrete sepolicy for neverallow checks
499
500LOCAL_MODULE := sepolicy.recovery
Alex Klyubinec78c372017-03-10 12:44:16 -0800501LOCAL_MODULE_STEM := sepolicy
Alex Klyubin84aa7422017-03-10 09:36:07 -0800502LOCAL_MODULE_CLASS := ETC
503LOCAL_MODULE_TAGS := optional
Alex Klyubinec78c372017-03-10 12:44:16 -0800504LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
Alex Klyubin84aa7422017-03-10 09:36:07 -0800505
506include $(BUILD_SYSTEM)/base_rules.mk
507
Dan Cashman1c040272016-12-15 15:28:44 -0800508plat_pub_policy.recovery.conf := $(intermediates)/plat_pub_policy.recovery.conf
509$(plat_pub_policy.recovery.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
510$(plat_pub_policy.recovery.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
511$(plat_pub_policy.recovery.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700512$(plat_pub_policy.recovery.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Dan Cashman1c040272016-12-15 15:28:44 -0800513$(plat_pub_policy.recovery.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
514$(plat_pub_policy.recovery.conf): $(call build_policy, $(sepolicy_build_files), \
515$(BOARD_SEPOLICY_VERS_DIR) $(REQD_MASK_POLICY))
Stephen Smalleye60723a2014-05-29 16:40:15 -0400516 @mkdir -p $(dir $@)
William Robertsd2185582015-07-16 11:28:02 -0700517 $(hide) m4 $(PRIVATE_ADDITIONAL_M4DEFS) \
518 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
Stephen Smalleye60723a2014-05-29 16:40:15 -0400519 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Jorge Lucangeli Obes84db84e2016-11-18 08:42:35 -0500520 -D target_with_dexpreopt=$(WITH_DEXPREOPT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800521 -D target_arch=$(PRIVATE_TGT_ARCH) \
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700522 -D target_with_asan=$(PRIVATE_TGT_WITH_ASAN) \
Stephen Smalleye60723a2014-05-29 16:40:15 -0400523 -D target_recovery=true \
524 -s $^ > $@
525
Dan Cashman1c040272016-12-15 15:28:44 -0800526plat_pub_policy.recovery.cil := $(intermediates)/plat_pub_policy.recovery.cil
527$(plat_pub_policy.recovery.cil): PRIVATE_POL_CONF := $(plat_pub_policy.recovery.conf)
528$(plat_pub_policy.recovery.cil): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
529$(plat_pub_policy.recovery.cil): $(HOST_OUT_EXECUTABLES)/checkpolicy \
530$(plat_pub_policy.recovery.conf) $(reqd_policy_mask.cil)
Stephen Smalleye60723a2014-05-29 16:40:15 -0400531 @mkdir -p $(dir $@)
Dan Cashman1c040272016-12-15 15:28:44 -0800532 $(hide) $< -C -M -c $(POLICYVERS) -o $@.tmp $(PRIVATE_POL_CONF)
533 $(hide) grep -Fxv -f $(PRIVATE_REQD_MASK) $@.tmp > $@
534
535plat_pub_policy.recovery.conf :=
536
Dan Cashman1c040272016-12-15 15:28:44 -0800537plat_policy.recovery.conf := $(intermediates)/plat_policy.recovery.conf
538$(plat_policy.recovery.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
539$(plat_policy.recovery.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
540$(plat_policy.recovery.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700541$(plat_policy.recovery.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Dan Cashman1c040272016-12-15 15:28:44 -0800542$(plat_policy.recovery.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
543$(plat_policy.recovery.conf): $(call build_policy, $(sepolicy_build_files), \
544$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
545 @mkdir -p $(dir $@)
546 $(hide) m4 $(PRIVATE_ADDITIONAL_M4DEFS) \
547 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
548 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800549 -D target_with_dexpreopt=$(WITH_DEXPREOPT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800550 -D target_arch=$(PRIVATE_TGT_ARCH) \
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700551 -D target_with_asan=$(PRIVATE_TGT_WITH_ASAN) \
Dan Cashman1c040272016-12-15 15:28:44 -0800552 -D target_recovery=true \
553 -s $^ > $@
554 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
555
556plat_policy_nvr.recovery := $(intermediates)/plat_policy_nvr.recovery.cil
557$(plat_policy_nvr.recovery): $(plat_policy.recovery.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
558 @mkdir -p $(dir $@)
559 $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c $(POLICYVERS) -o $@ $<
560
Dan Cashman1c040272016-12-15 15:28:44 -0800561plat_policy.recovery.conf :=
562
Dan Cashman1c040272016-12-15 15:28:44 -0800563# auto-generate the mapping file for current platform policy, since it needs to
564# track platform policy development
565current_mapping.recovery.cil := $(intermediates)/mapping/current.recovery.cil
566$(current_mapping.recovery.cil) : PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
567$(current_mapping.recovery.cil) : $(plat_pub_policy.recovery.cil) $(HOST_OUT_EXECUTABLES)/version_policy
568 @mkdir -p $(dir $@)
569 $(hide) $(HOST_OUT_EXECUTABLES)/version_policy -b $< -m -n $(PRIVATE_VERS) -o $@
570
571ifeq ($(BOARD_SEPOLICY_VERS), current)
572mapping_policy_nvr.recovery := $(current_mapping.recovery.cil)
573else
574mapping_policy_nvr.recovery := $(addsuffix /$(BOARD_SEPOLICY_VERS).recovery.cil, \
575$(PLAT_PRIVATE_POLICY)/mapping)
576endif
577
Dan Cashman1c040272016-12-15 15:28:44 -0800578current_mapping.recovery.cil :=
579
Alex Klyubin8f7173b2017-02-25 14:47:53 -0800580# nonplat_policy.recovery.conf - A combination of the non-platform private,
581# vendor and the exported platform policy associated with the version the
582# non-platform policy targets. This needs attributization and to be combined
583# with the platform-provided policy. Like plat_pub_policy.recovery.conf, this
584# needs to make use of the reqd_policy_mask files from private policy in order
585# to use checkpolicy.
Dan Cashman1c040272016-12-15 15:28:44 -0800586nonplat_policy.recovery.conf := $(intermediates)/nonplat_policy.recovery.conf
587$(nonplat_policy.recovery.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
588$(nonplat_policy.recovery.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
589$(nonplat_policy.recovery.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700590$(nonplat_policy.recovery.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
Dan Cashman1c040272016-12-15 15:28:44 -0800591$(nonplat_policy.recovery.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
592$(nonplat_policy.recovery.conf): $(call build_policy, $(sepolicy_build_files), \
Alex Klyubin55961722017-01-30 18:44:59 -0800593$(BOARD_SEPOLICY_VERS_DIR) $(REQD_MASK_POLICY) $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS))
Dan Cashman1c040272016-12-15 15:28:44 -0800594 @mkdir -p $(dir $@)
595 $(hide) m4 $(PRIVATE_ADDITIONAL_M4DEFS) \
596 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
597 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800598 -D target_with_dexpreopt=$(WITH_DEXPREOPT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800599 -D target_arch=$(PRIVATE_TGT_ARCH) \
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700600 -D target_with_asan=$(PRIVATE_TGT_WITH_ASAN) \
Dan Cashman1c040272016-12-15 15:28:44 -0800601 -D target_recovery=true \
602 -s $^ > $@
603 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
604
605nonplat_policy_raw.recovery := $(intermediates)/nonplat_policy_raw.recovery.cil
606$(nonplat_policy_raw.recovery): PRIVATE_POL_CONF := $(nonplat_policy.recovery.conf)
607$(nonplat_policy_raw.recovery): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
608$(nonplat_policy_raw.recovery): $(HOST_OUT_EXECUTABLES)/checkpolicy $(nonplat_policy.recovery.conf) \
609$(reqd_policy_mask.cil)
610 @mkdir -p $(dir $@)
611 $(hide) $< -C -M -c $(POLICYVERS) -o $@.tmp $(PRIVATE_POL_CONF)
612 $(hide) grep -Fxv -f $(PRIVATE_REQD_MASK) $@.tmp > $@
613
614nonplat_policy_nvr.recovery := $(intermediates)/nonplat_policy_nvr.recovery.cil
615$(nonplat_policy_nvr.recovery) : PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
616$(nonplat_policy_nvr.recovery) : PRIVATE_TGT_POL := $(nonplat_policy_raw.recovery)
617$(nonplat_policy_nvr.recovery) : $(plat_pub_policy.recovery.cil) $(nonplat_policy_raw.recovery) \
618$(HOST_OUT_EXECUTABLES)/version_policy
619 @mkdir -p $(dir $@)
620 $(HOST_OUT_EXECUTABLES)/version_policy -b $< -t $(PRIVATE_TGT_POL) -n $(PRIVATE_VERS) -o $@
621
Dan Cashman1c040272016-12-15 15:28:44 -0800622nonplat_policy.recovery.conf :=
623nonplat_policy_raw.recovery :=
624
Dan Cashman1c040272016-12-15 15:28:44 -0800625all_cil_files.recovery := \
626 $(plat_policy_nvr.recovery) \
627 $(mapping_policy_nvr.recovery) \
628 $(nonplat_policy_nvr.recovery) \
629
630$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files.recovery)
631$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $(all_cil_files.recovery)
632 @mkdir -p $(dir $@)
William Roberts5d0c2e42017-03-23 11:26:29 -0700633 $(hide) $< -M true -c $(POLICYVERS) $(PRIVATE_CIL_FILES) -o $@.tmp -f /dev/null
Nick Kralevichbca98ef2016-02-26 20:06:52 -0800634 $(hide) $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $@.tmp permissive > $@.permissivedomains
635 $(hide) if [ "$(TARGET_BUILD_VARIANT)" = "user" -a -s $@.permissivedomains ]; then \
636 echo "==========" 1>&2; \
637 echo "ERROR: permissive domains not allowed in user builds" 1>&2; \
638 echo "List of invalid domains:" 1>&2; \
639 cat $@.permissivedomains 1>&2; \
640 exit 1; \
641 fi
642 $(hide) mv $@.tmp $@
Stephen Smalleye60723a2014-05-29 16:40:15 -0400643
Dan Cashman1c040272016-12-15 15:28:44 -0800644all_cil_files.recovery :=
Alex Klyubin84aa7422017-03-10 09:36:07 -0800645plat_pub_policy.recovery.cil :=
646plat_policy_nvr.recovery :=
647mapping_policy_nvr.recovery :=
648nonplat_policy_nvr.recovery :=
Stephen Smalleye60723a2014-05-29 16:40:15 -0400649
dcashman704741a2014-07-25 19:11:52 -0700650##################################
Alex Klyubin446279a2017-04-06 14:45:50 -0700651# SELinux policy embedded into CTS.
652# CTS checks neverallow rules of this policy against the policy of the device under test.
653##################################
dcashman704741a2014-07-25 19:11:52 -0700654include $(CLEAR_VARS)
655
656LOCAL_MODULE := general_sepolicy.conf
657LOCAL_MODULE_CLASS := ETC
658LOCAL_MODULE_TAGS := tests
659
660include $(BUILD_SYSTEM)/base_rules.mk
661
dcashman704741a2014-07-25 19:11:52 -0700662$(LOCAL_BUILT_MODULE): PRIVATE_MLS_SENS := $(MLS_SENS)
663$(LOCAL_BUILT_MODULE): PRIVATE_MLS_CATS := $(MLS_CATS)
Dan Cashman1c040272016-12-15 15:28:44 -0800664$(LOCAL_BUILT_MODULE): PRIVATE_TGT_ARCH := $(my_target_arch)
dcashmancc39f632016-07-22 13:13:11 -0700665$(LOCAL_BUILT_MODULE): $(call build_policy, $(sepolicy_build_files), \
666$(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY))
dcashman704741a2014-07-25 19:11:52 -0700667 mkdir -p $(dir $@)
668 $(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
669 -D target_build_variant=user \
Jorge Lucangeli Obes84db84e2016-11-18 08:42:35 -0500670 -D target_with_dexpreopt=$(WITH_DEXPREOPT) \
Dan Cashman1c040272016-12-15 15:28:44 -0800671 -D target_arch=$(PRIVATE_TGT_ARCH) \
Jeff Vander Stoep74434842017-03-13 12:22:15 -0700672 -D target_with_asan=false \
Alex Klyubin446279a2017-04-06 14:45:50 -0700673 -D target_full_treble=cts \
dcashman704741a2014-07-25 19:11:52 -0700674 -s $^ > $@
675 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
676
William Robertsb8769932015-06-29 16:31:23 -0700677##################################
dcashmand225b692016-12-12 09:29:04 -0800678# TODO - remove this. Keep around until we get the filesystem creation stuff taken care of.
679#
William Robertsb8769932015-06-29 16:31:23 -0700680include $(CLEAR_VARS)
681
Richard Hainesc2d01912015-08-06 17:43:52 +0100682LOCAL_MODULE := file_contexts.bin
Ying Wang02fb5f32012-01-17 17:51:09 -0800683LOCAL_MODULE_CLASS := ETC
684LOCAL_MODULE_TAGS := optional
685LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
686
Stephen Smalley5b340be2012-03-06 11:12:41 -0500687include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -0800688
William Roberts49693f12016-01-04 12:20:57 -0800689# The file_contexts.bin is built in the following way:
690# 1. Collect all file_contexts files in THIS repository and process them with
691# m4 into a tmp file called file_contexts.local.tmp.
692# 2. Collect all device specific file_contexts files and process them with m4
693# into a tmp file called file_contexts.device.tmp.
694# 3. Run checkfc -e (allow no device fc entries ie empty) and fc_sort on
695# file_contexts.device.tmp and output to file_contexts.device.sorted.tmp.
696# 4. Concatenate file_contexts.local.tmp and file_contexts.device.tmp into
697# file_contexts.concat.tmp.
698# 5. Run checkfc and sefcontext_compile on file_contexts.concat.tmp to produce
699# file_contexts.bin.
700#
701# Note: That a newline file is placed between each file_context file found to
702# ensure a proper build when an fc file is missing an ending newline.
William Roberts29d14682016-01-04 12:20:57 -0800703
dcashmancc39f632016-07-22 13:13:11 -0700704local_fc_files := $(PLAT_PRIVATE_POLICY)/file_contexts
William Roberts49693f12016-01-04 12:20:57 -0800705ifneq ($(filter address,$(SANITIZE_TARGET)),)
dcashmancc39f632016-07-22 13:13:11 -0700706 local_fc_files := $(local_fc_files) $(PLAT_PRIVATE_POLICY)/file_contexts_asan
William Roberts49693f12016-01-04 12:20:57 -0800707endif
708local_fcfiles_with_nl := $(call add_nl, $(local_fc_files), $(built_nl))
709
710file_contexts.local.tmp := $(intermediates)/file_contexts.local.tmp
711$(file_contexts.local.tmp): $(local_fcfiles_with_nl)
Stephen Smalley5b340be2012-03-06 11:12:41 -0500712 @mkdir -p $(dir $@)
William Roberts49693f12016-01-04 12:20:57 -0800713 $(hide) m4 -s $^ > $@
714
715device_fc_files := $(call build_device_policy, file_contexts)
716device_fcfiles_with_nl := $(call add_nl, $(device_fc_files), $(built_nl))
717
718file_contexts.device.tmp := $(intermediates)/file_contexts.device.tmp
719$(file_contexts.device.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
720$(file_contexts.device.tmp): $(device_fcfiles_with_nl)
721 @mkdir -p $(dir $@)
722 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
723
724file_contexts.device.sorted.tmp := $(intermediates)/file_contexts.device.sorted.tmp
725$(file_contexts.device.sorted.tmp): PRIVATE_SEPOLICY := $(built_sepolicy)
726$(file_contexts.device.sorted.tmp): $(file_contexts.device.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/fc_sort $(HOST_OUT_EXECUTABLES)/checkfc
727 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -0800728 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e $(PRIVATE_SEPOLICY) $<
William Roberts49693f12016-01-04 12:20:57 -0800729 $(hide) $(HOST_OUT_EXECUTABLES)/fc_sort $< $@
730
731file_contexts.concat.tmp := $(intermediates)/file_contexts.concat.tmp
732$(file_contexts.concat.tmp): $(file_contexts.local.tmp) $(file_contexts.device.sorted.tmp)
733 @mkdir -p $(dir $@)
734 $(hide) m4 -s $^ > $@
Stephen Smalley5b340be2012-03-06 11:12:41 -0500735
William Roberts3746a0a2015-09-25 10:18:44 -0700736$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
William Roberts49693f12016-01-04 12:20:57 -0800737$(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 +0100738 @mkdir -p $(dir $@)
dcashman07791552016-12-07 11:27:47 -0800739 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc $(PRIVATE_SEPOLICY) $<
Richard Hainesc2d01912015-08-06 17:43:52 +0100740 $(hide) $(HOST_OUT_EXECUTABLES)/sefcontext_compile -o $@ $<
741
Robert Craig8b7545b2014-03-20 09:35:08 -0400742built_fc := $(LOCAL_BUILT_MODULE)
William Roberts49693f12016-01-04 12:20:57 -0800743local_fc_files :=
744local_fcfiles_with_nl :=
745device_fc_files :=
746device_fcfiles_with_nl :=
747file_contexts.concat.tmp :=
748file_contexts.device.sorted.tmp :=
749file_contexts.device.tmp :=
750file_contexts.local.tmp :=
William Roberts171a0622012-08-16 10:55:05 -0700751
Ying Wang02fb5f32012-01-17 17:51:09 -0800752##################################
753include $(CLEAR_VARS)
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400754
Alex Klyubinec78c372017-03-10 12:44:16 -0800755LOCAL_MODULE := file_contexts.bin.recovery
756LOCAL_MODULE_STEM := file_contexts.bin
757LOCAL_MODULE_CLASS := ETC
758LOCAL_MODULE_TAGS := optional
759LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
760
761include $(BUILD_SYSTEM)/base_rules.mk
762
763$(LOCAL_BUILT_MODULE): $(built_fc)
764 $(hide) cp -f $< $@
765
766##################################
767include $(CLEAR_VARS)
768
dcashmand225b692016-12-12 09:29:04 -0800769LOCAL_MODULE := plat_file_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400770LOCAL_MODULE_CLASS := ETC
dcashmand225b692016-12-12 09:29:04 -0800771LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep0cb417a2017-03-08 14:12:54 -0800772LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400773
774include $(BUILD_SYSTEM)/base_rules.mk
775
dcashmand225b692016-12-12 09:29:04 -0800776local_fc_files := $(PLAT_PRIVATE_POLICY)/file_contexts
777ifneq ($(filter address,$(SANITIZE_TARGET)),)
778 local_fc_files += $(PLAT_PRIVATE_POLICY)/file_contexts_asan
779endif
Alex Klyubine4665d72017-01-19 19:58:34 -0800780local_fcfiles_with_nl := $(call add_nl, $(local_fc_files), $(built_nl))
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400781
Alex Klyubine4665d72017-01-19 19:58:34 -0800782$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(local_fcfiles_with_nl)
dcashmand225b692016-12-12 09:29:04 -0800783$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Alex Klyubine4665d72017-01-19 19:58:34 -0800784$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
785$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
786$(local_fcfiles_with_nl) $(built_sepolicy)
Richard Hainesc2d01912015-08-06 17:43:52 +0100787 @mkdir -p $(dir $@)
Alex Klyubine4665d72017-01-19 19:58:34 -0800788 $(hide) m4 -s $(PRIVATE_FC_FILES) > $@.tmp
789 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
790 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
Richard Hainesc2d01912015-08-06 17:43:52 +0100791
dcashmand225b692016-12-12 09:29:04 -0800792built_plat_fc := $(LOCAL_BUILT_MODULE)
793local_fc_files :=
Alex Klyubine4665d72017-01-19 19:58:34 -0800794local_fcfiles_with_nl :=
dcashmand225b692016-12-12 09:29:04 -0800795
796##################################
797include $(CLEAR_VARS)
798
799LOCAL_MODULE := nonplat_file_contexts
800LOCAL_MODULE_CLASS := ETC
801LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep0cb417a2017-03-08 14:12:54 -0800802LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashmand225b692016-12-12 09:29:04 -0800803
804include $(BUILD_SYSTEM)/base_rules.mk
805
806nonplat_fc_files := $(call build_device_policy, file_contexts)
807nonplat_fcfiles_with_nl := $(call add_nl, $(nonplat_fc_files), $(built_nl))
808
809$(LOCAL_BUILT_MODULE): PRIVATE_FC_FILES := $(nonplat_fcfiles_with_nl)
810$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
811$(LOCAL_BUILT_MODULE): PRIVATE_FC_SORT := $(HOST_OUT_EXECUTABLES)/fc_sort
812$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/checkfc $(HOST_OUT_EXECUTABLES)/fc_sort \
Alex Klyubine4665d72017-01-19 19:58:34 -0800813$(nonplat_fcfiles_with_nl) $(built_sepolicy)
dcashmand225b692016-12-12 09:29:04 -0800814 @mkdir -p $(dir $@)
815 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_FC_FILES) > $@.tmp
816 $(hide) $< $(PRIVATE_SEPOLICY) $@.tmp
817 $(hide) $(PRIVATE_FC_SORT) $@.tmp $@
818
819built_nonplat_fc := $(LOCAL_BUILT_MODULE)
820nonplat_fc_files :=
821nonplat_fcfiles_with_nl :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400822
823##################################
824include $(CLEAR_VARS)
Dan Cashman9c038072016-12-22 07:15:18 -0800825LOCAL_MODULE := plat_seapp_contexts
Ying Wang02fb5f32012-01-17 17:51:09 -0800826LOCAL_MODULE_CLASS := ETC
827LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -0800828ifeq ($(PRODUCT_FULL_TREBLE),true)
829LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
830else
Ying Wang02fb5f32012-01-17 17:51:09 -0800831LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -0800832endif
Ying Wang02fb5f32012-01-17 17:51:09 -0800833
William Roberts171a0622012-08-16 10:55:05 -0700834include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -0800835
Dan Cashman9c038072016-12-22 07:15:18 -0800836plat_sc_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY))
William Roberts171a0622012-08-16 10:55:05 -0700837
Ying Wangd8b122c2012-10-25 19:01:31 -0700838$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Dan Cashman9c038072016-12-22 07:15:18 -0800839$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(plat_sc_files)
840$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(plat_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp
William Robertsf0e0a942012-08-27 15:41:15 -0700841 @mkdir -p $(dir $@)
William Roberts99fe8df2015-06-30 13:53:51 -0700842 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES)
Ying Wang02fb5f32012-01-17 17:51:09 -0800843
Dan Cashman9c038072016-12-22 07:15:18 -0800844built_plat_sc := $(LOCAL_BUILT_MODULE)
845plat_sc_files :=
Robert Craig8b7545b2014-03-20 09:35:08 -0400846
Ying Wang02fb5f32012-01-17 17:51:09 -0800847##################################
Stephen Smalley124720a2012-04-04 10:11:16 -0400848include $(CLEAR_VARS)
Dan Cashman9c038072016-12-22 07:15:18 -0800849LOCAL_MODULE := nonplat_seapp_contexts
Stephen Smalley37712872015-03-12 15:46:36 -0400850LOCAL_MODULE_CLASS := ETC
Dan Cashman9c038072016-12-22 07:15:18 -0800851LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -0800852ifeq ($(PRODUCT_FULL_TREBLE),true)
853LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
854else
Dan Cashman9c038072016-12-22 07:15:18 -0800855LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -0800856endif
Stephen Smalley37712872015-03-12 15:46:36 -0400857
858include $(BUILD_SYSTEM)/base_rules.mk
859
Alex Klyubin55961722017-01-30 18:44:59 -0800860nonplat_sc_files := $(call build_policy, seapp_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -0800861plat_sc_neverallow_files := $(addprefix $(PLAT_PRIVATE_POLICY)/, seapp_contexts)
Stephen Smalley37712872015-03-12 15:46:36 -0400862
Dan Cashman9c038072016-12-22 07:15:18 -0800863$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
864$(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(nonplat_sc_files)
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -0800865$(LOCAL_BUILT_MODULE): PRIVATE_SC_NEVERALLOW_FILES := $(plat_sc_neverallow_files)
866$(LOCAL_BUILT_MODULE): $(built_sepolicy) $(nonplat_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp $(plat_sc_neverallow_files)
Stephen Smalley37712872015-03-12 15:46:36 -0400867 @mkdir -p $(dir $@)
Xin Liec6f3932017-03-14 16:51:13 -0700868 $(hide) grep -ie '^neverallow' $(PRIVATE_SC_NEVERALLOW_FILES) > $@.tmp
869 $(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES) $@.tmp
Stephen Smalley37712872015-03-12 15:46:36 -0400870
Dan Cashman9c038072016-12-22 07:15:18 -0800871built_nonplat_sc := $(LOCAL_BUILT_MODULE)
872nonplat_sc_files :=
Stephen Smalley37712872015-03-12 15:46:36 -0400873
874##################################
875include $(CLEAR_VARS)
Dan Cashman9c038072016-12-22 07:15:18 -0800876LOCAL_MODULE := plat_seapp_neverallows
William Roberts4ee71312015-06-25 11:59:30 -0700877LOCAL_MODULE_CLASS := ETC
878LOCAL_MODULE_TAGS := tests
879
880include $(BUILD_SYSTEM)/base_rules.mk
881
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -0800882$(LOCAL_BUILT_MODULE): $(plat_sc_neverallow_files)
William Roberts4ee71312015-06-25 11:59:30 -0700883 @mkdir -p $(dir $@)
884 - $(hide) grep -ie '^neverallow' $< > $@
885
Jeff Vander Stoep87ae5f72017-03-06 22:53:09 -0800886plat_sc_neverallow_files :=
William Roberts4ee71312015-06-25 11:59:30 -0700887
888##################################
889include $(CLEAR_VARS)
Stephen Smalley124720a2012-04-04 10:11:16 -0400890
Sandeep Patila86316e2016-12-27 16:08:44 -0800891LOCAL_MODULE := plat_property_contexts
Stephen Smalley124720a2012-04-04 10:11:16 -0400892LOCAL_MODULE_CLASS := ETC
893LOCAL_MODULE_TAGS := optional
Alex Klyubin9d590412017-03-08 13:10:05 -0800894
895ifeq ($(PRODUCT_FULL_TREBLE),true)
896LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
897else
Stephen Smalley124720a2012-04-04 10:11:16 -0400898LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Alex Klyubin9d590412017-03-08 13:10:05 -0800899endif
Stephen Smalley124720a2012-04-04 10:11:16 -0400900
901include $(BUILD_SYSTEM)/base_rules.mk
902
Sandeep Patila86316e2016-12-27 16:08:44 -0800903plat_pcfiles := $(call build_policy, property_contexts, $(PLAT_PRIVATE_POLICY))
William Roberts6aabc1c2015-07-30 11:44:26 -0700904
Sandeep Patila86316e2016-12-27 16:08:44 -0800905plat_property_contexts.tmp := $(intermediates)/plat_property_contexts.tmp
906$(plat_property_contexts.tmp): PRIVATE_PC_FILES := $(plat_pcfiles)
907$(plat_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
908$(plat_property_contexts.tmp): $(plat_pcfiles)
William Roberts7f81b332015-09-29 13:52:37 -0700909 @mkdir -p $(dir $@)
Colin Cross9eb6c872015-10-01 21:25:09 +0000910 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
William Robertsdcffd2b2015-09-29 13:52:37 -0700911
912
913$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Sandeep Patila86316e2016-12-27 16:08:44 -0800914$(LOCAL_BUILT_MODULE): $(plat_property_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
William Robertsdcffd2b2015-09-29 13:52:37 -0700915 @mkdir -p $(dir $@)
Sandeep Patila86316e2016-12-27 16:08:44 -0800916 $(hide) sed -e 's/#.*$$//' -e '/^$$/d' $< | sort -u -o $@
dcashman07791552016-12-07 11:27:47 -0800917 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -p $(PRIVATE_SEPOLICY) $@
Stephen Smalley124720a2012-04-04 10:11:16 -0400918
Sandeep Patila86316e2016-12-27 16:08:44 -0800919built_plat_pc := $(LOCAL_BUILT_MODULE)
920plat_pcfiles :=
921plat_property_contexts.tmp :=
Robert Craig8b7545b2014-03-20 09:35:08 -0400922
Stephen Smalley124720a2012-04-04 10:11:16 -0400923##################################
Riley Spahnf90c41f2014-06-05 15:52:02 -0700924include $(CLEAR_VARS)
925
Sandeep Patila86316e2016-12-27 16:08:44 -0800926LOCAL_MODULE := nonplat_property_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400927LOCAL_MODULE_CLASS := ETC
Sandeep Patila86316e2016-12-27 16:08:44 -0800928LOCAL_MODULE_TAGS := optional
Alex Klyubin9d590412017-03-08 13:10:05 -0800929
930ifeq ($(PRODUCT_FULL_TREBLE),true)
931LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
932else
Sandeep Patila86316e2016-12-27 16:08:44 -0800933LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Alex Klyubin9d590412017-03-08 13:10:05 -0800934endif
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400935
Stephen Smalleyc9361732015-03-13 09:36:57 -0400936include $(BUILD_SYSTEM)/base_rules.mk
937
Alex Klyubin55961722017-01-30 18:44:59 -0800938nonplat_pcfiles := $(call build_policy, property_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Sandeep Patil262edc32016-12-27 16:08:44 -0800939
Sandeep Patila86316e2016-12-27 16:08:44 -0800940nonplat_property_contexts.tmp := $(intermediates)/nonplat_property_contexts.tmp
941$(nonplat_property_contexts.tmp): PRIVATE_PC_FILES := $(nonplat_pcfiles)
942$(nonplat_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
943$(nonplat_property_contexts.tmp): $(nonplat_pcfiles)
William Robertsdcffd2b2015-09-29 13:52:37 -0700944 @mkdir -p $(dir $@)
Sandeep Patila86316e2016-12-27 16:08:44 -0800945 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
946
947
948$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
949$(LOCAL_BUILT_MODULE): $(nonplat_property_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
950 @mkdir -p $(dir $@)
951 $(hide) sed -e 's/#.*$$//' -e '/^$$/d' $< | sort -u -o $@
dcashman07791552016-12-07 11:27:47 -0800952 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -p $(PRIVATE_SEPOLICY) $@
William Robertsdcffd2b2015-09-29 13:52:37 -0700953
Sandeep Patila86316e2016-12-27 16:08:44 -0800954built_nonplat_pc := $(LOCAL_BUILT_MODULE)
955nonplat_pcfiles :=
956nonplat_property_contexts.tmp :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400957
958##################################
959include $(CLEAR_VARS)
960
Alex Klyubinec78c372017-03-10 12:44:16 -0800961LOCAL_MODULE := plat_property_contexts.recovery
962LOCAL_MODULE_STEM := plat_property_contexts
963LOCAL_MODULE_CLASS := ETC
964LOCAL_MODULE_TAGS := optional
965LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
966
967include $(BUILD_SYSTEM)/base_rules.mk
968
969$(LOCAL_BUILT_MODULE): $(built_plat_pc)
970 $(hide) cp -f $< $@
971
972##################################
973include $(CLEAR_VARS)
974
975LOCAL_MODULE := nonplat_property_contexts.recovery
976LOCAL_MODULE_STEM := nonplat_property_contexts
977LOCAL_MODULE_CLASS := ETC
978LOCAL_MODULE_TAGS := optional
979LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
980
981include $(BUILD_SYSTEM)/base_rules.mk
982
983$(LOCAL_BUILT_MODULE): $(built_nonplat_pc)
984 $(hide) cp -f $< $@
985
986##################################
987include $(CLEAR_VARS)
988
Sandeep Patila058b562016-12-27 15:10:48 -0800989LOCAL_MODULE := plat_service_contexts
Riley Spahnf90c41f2014-06-05 15:52:02 -0700990LOCAL_MODULE_CLASS := ETC
991LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -0800992ifeq ($(PRODUCT_FULL_TREBLE),true)
993LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
994else
Riley Spahnf90c41f2014-06-05 15:52:02 -0700995LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -0800996endif
Riley Spahnf90c41f2014-06-05 15:52:02 -0700997
998include $(BUILD_SYSTEM)/base_rules.mk
999
Sandeep Patila058b562016-12-27 15:10:48 -08001000plat_svcfiles := $(call build_policy, service_contexts, $(PLAT_PRIVATE_POLICY))
Riley Spahnf90c41f2014-06-05 15:52:02 -07001001
Sandeep Patila058b562016-12-27 15:10:48 -08001002plat_service_contexts.tmp := $(intermediates)/plat_service_contexts.tmp
1003$(plat_service_contexts.tmp): PRIVATE_SVC_FILES := $(plat_svcfiles)
1004$(plat_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1005$(plat_service_contexts.tmp): $(plat_svcfiles)
Riley Spahnf90c41f2014-06-05 15:52:02 -07001006 @mkdir -p $(dir $@)
William Roberts6aabc1c2015-07-30 11:44:26 -07001007 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
William Roberts7fc865a2015-09-29 14:17:38 -07001008
1009$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
Sandeep Patila058b562016-12-27 15:10:48 -08001010$(LOCAL_BUILT_MODULE): $(plat_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
William Roberts7fc865a2015-09-29 14:17:38 -07001011 @mkdir -p $(dir $@)
William Robertsc9fce3f2016-04-06 11:53:04 -07001012 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
dcashman07791552016-12-07 11:27:47 -08001013 $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
Riley Spahnf90c41f2014-06-05 15:52:02 -07001014
Sandeep Patila058b562016-12-27 15:10:48 -08001015built_plat_svc := $(LOCAL_BUILT_MODULE)
1016plat_svcfiles :=
1017plat_service_contexts.tmp :=
Riley Spahnf90c41f2014-06-05 15:52:02 -07001018
1019##################################
rpcraigb19665c2012-07-30 09:33:03 -04001020include $(CLEAR_VARS)
1021
Sandeep Patila058b562016-12-27 15:10:48 -08001022LOCAL_MODULE := nonplat_service_contexts
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001023LOCAL_MODULE_CLASS := ETC
Sandeep Patila058b562016-12-27 15:10:48 -08001024LOCAL_MODULE_TAGS := optional
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001025ifeq ($(PRODUCT_FULL_TREBLE),true)
1026LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1027else
Sandeep Patila058b562016-12-27 15:10:48 -08001028LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Jeff Vander Stoep4e3a4c72017-03-08 22:28:03 -08001029endif
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001030
1031include $(BUILD_SYSTEM)/base_rules.mk
1032
Alex Klyubin55961722017-01-30 18:44:59 -08001033nonplat_svcfiles := $(call build_policy, service_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001034
Sandeep Patila058b562016-12-27 15:10:48 -08001035nonplat_service_contexts.tmp := $(intermediates)/nonplat_service_contexts.tmp
1036$(nonplat_service_contexts.tmp): PRIVATE_SVC_FILES := $(nonplat_svcfiles)
1037$(nonplat_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1038$(nonplat_service_contexts.tmp): $(nonplat_svcfiles)
1039 @mkdir -p $(dir $@)
1040 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
1041
1042$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1043$(LOCAL_BUILT_MODULE): $(nonplat_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
William Roberts7fc865a2015-09-29 14:17:38 -07001044 @mkdir -p $(dir $@)
William Robertsc9fce3f2016-04-06 11:53:04 -07001045 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
dcashman07791552016-12-07 11:27:47 -08001046 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
William Roberts7fc865a2015-09-29 14:17:38 -07001047
Sandeep Patila058b562016-12-27 15:10:48 -08001048built_nonplat_svc := $(LOCAL_BUILT_MODULE)
1049nonplat_svcfiles :=
1050nonplat_service_contexts.tmp :=
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -04001051
1052##################################
1053include $(CLEAR_VARS)
1054
Martijn Coenen6676c232017-03-31 17:29:53 -07001055LOCAL_MODULE := vndservice_contexts
1056LOCAL_MODULE_CLASS := ETC
1057LOCAL_MODULE_TAGS := optional
1058ifeq ($(PRODUCT_FULL_TREBLE),true)
1059LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
1060else
1061LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
1062endif
1063
1064include $(BUILD_SYSTEM)/base_rules.mk
1065
1066vnd_svcfiles := $(call build_policy, vndservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
1067
1068vndservice_contexts.tmp := $(intermediates)/vndservice_contexts.tmp
1069$(vndservice_contexts.tmp): PRIVATE_SVC_FILES := $(vnd_svcfiles)
1070$(vndservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1071$(vndservice_contexts.tmp): $(vnd_svcfiles)
1072 @mkdir -p $(dir $@)
1073 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
1074
1075$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
1076$(LOCAL_BUILT_MODULE): $(vndservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
1077 @mkdir -p $(dir $@)
1078 sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
1079 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
1080
1081vnd_svcfiles :=
1082vndservice_contexts.tmp :=
1083##################################
1084include $(CLEAR_VARS)
1085
dcashman90b3b942016-12-14 13:47:55 -08001086LOCAL_MODULE := plat_mac_permissions.xml
rpcraigb19665c2012-07-30 09:33:03 -04001087LOCAL_MODULE_CLASS := ETC
1088LOCAL_MODULE_TAGS := optional
Jeff Vander Stoepbba9e7b2017-03-10 15:51:23 -08001089LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
rpcraigb19665c2012-07-30 09:33:03 -04001090
William Roberts2c8a55d2012-11-30 14:59:09 -08001091include $(BUILD_SYSTEM)/base_rules.mk
rpcraigb19665c2012-07-30 09:33:03 -04001092
Geremy Condracd4104e2013-03-26 18:19:12 +00001093# Build keys.conf
dcashman90b3b942016-12-14 13:47:55 -08001094plat_mac_perms_keys.tmp := $(intermediates)/plat_keys.tmp
1095$(plat_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
1096$(plat_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PLAT_PRIVATE_POLICY))
Geremy Condracd4104e2013-03-26 18:19:12 +00001097 @mkdir -p $(dir $@)
William Robertsd2185582015-07-16 11:28:02 -07001098 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
Geremy Condracd4104e2013-03-26 18:19:12 +00001099
dcashman90b3b942016-12-14 13:47:55 -08001100all_plat_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PLAT_PRIVATE_POLICY))
rpcraigb19665c2012-07-30 09:33:03 -04001101
Shinichiro Hamajief0c14d2016-05-13 16:04:58 +09001102# Should be synced with keys.conf.
dcashman90b3b942016-12-14 13:47:55 -08001103all_plat_keys := platform media shared testkey
1104all_plat_keys := $(all_keys:%=$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))/%.x509.pem)
Shinichiro Hamajief0c14d2016-05-13 16:04:58 +09001105
dcashman90b3b942016-12-14 13:47:55 -08001106$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_plat_mac_perms_files)
1107$(LOCAL_BUILT_MODULE): $(plat_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1108$(all_plat_mac_perms_files) $(all_plat_keys)
Geremy Condracd4104e2013-03-26 18:19:12 +00001109 @mkdir -p $(dir $@)
Nick Kralevichc3c90522013-10-25 12:25:36 -07001110 $(hide) DEFAULT_SYSTEM_DEV_CERTIFICATE="$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))" \
William Roberts6aabc1c2015-07-30 11:44:26 -07001111 $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
Geremy Condracd4104e2013-03-26 18:19:12 +00001112
William Roberts6aabc1c2015-07-30 11:44:26 -07001113all_mac_perms_files :=
dcashman90b3b942016-12-14 13:47:55 -08001114all_plat_keys :=
1115plat_mac_perms_keys.tmp :=
1116
1117##################################
1118include $(CLEAR_VARS)
1119
1120LOCAL_MODULE := nonplat_mac_permissions.xml
1121LOCAL_MODULE_CLASS := ETC
1122LOCAL_MODULE_TAGS := optional
Jeff Vander Stoepbba9e7b2017-03-10 15:51:23 -08001123LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
dcashman90b3b942016-12-14 13:47:55 -08001124
1125include $(BUILD_SYSTEM)/base_rules.mk
1126
1127# Build keys.conf
1128nonplat_mac_perms_keys.tmp := $(intermediates)/nonplat_keys.tmp
1129$(nonplat_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
Alex Klyubin55961722017-01-30 18:44:59 -08001130$(nonplat_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
dcashman90b3b942016-12-14 13:47:55 -08001131 @mkdir -p $(dir $@)
1132 $(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
1133
Alex Klyubin55961722017-01-30 18:44:59 -08001134all_nonplat_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
dcashman90b3b942016-12-14 13:47:55 -08001135
1136$(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_nonplat_mac_perms_files)
1137$(LOCAL_BUILT_MODULE): $(nonplat_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
1138$(all_nonplat_mac_perms_files)
1139 @mkdir -p $(dir $@)
1140 $(hide) $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
1141
1142nonplat_mac_perms_keys.tmp :=
1143all_nonplat_mac_perms_files :=
William Roberts6aabc1c2015-07-30 11:44:26 -07001144
rpcraigb19665c2012-07-30 09:33:03 -04001145##################################
rpcraig47cd3962012-10-17 21:09:52 -04001146
Dan Cashman1c040272016-12-15 15:28:44 -08001147add_nl :=
William Roberts49693f12016-01-04 12:20:57 -08001148build_device_policy :=
Dan Cashman1c040272016-12-15 15:28:44 -08001149build_policy :=
dcashmand225b692016-12-12 09:29:04 -08001150built_plat_fc :=
1151built_nonplat_fc :=
Richard Hainesc8801fe2015-12-11 10:39:19 +00001152built_nl :=
Alex Klyubin8f7173b2017-02-25 14:47:53 -08001153built_plat_cil :=
Alex Klyubin8f7173b2017-02-25 14:47:53 -08001154built_mapping_cil :=
Sandeep Patila86316e2016-12-27 16:08:44 -08001155built_plat_pc :=
Alex Klyubin193dccd2017-03-07 14:05:57 -08001156built_nonplat_cil :=
Sandeep Patila86316e2016-12-27 16:08:44 -08001157built_nonplat_pc :=
Dan Cashman9c038072016-12-22 07:15:18 -08001158built_nonplat_sc :=
1159built_plat_sc :=
Alex Klyubin193dccd2017-03-07 14:05:57 -08001160built_precompiled_sepolicy :=
Dan Cashman1c040272016-12-15 15:28:44 -08001161built_sepolicy :=
Sandeep Patila058b562016-12-27 15:10:48 -08001162built_plat_svc :=
1163built_nonplat_svc :=
Dan Cashman1c040272016-12-15 15:28:44 -08001164mapping_policy_nvr :=
Dan Cashman1c040272016-12-15 15:28:44 -08001165my_target_arch :=
1166nonplat_policy_nvr :=
Dan Cashman1c040272016-12-15 15:28:44 -08001167plat_policy_nvr :=
dcashman1faa6442016-11-28 07:20:28 -08001168plat_pub_policy.cil :=
1169reqd_policy_mask.cil :=
Dan Cashman1c040272016-12-15 15:28:44 -08001170sepolicy_build_files :=
Alex Klyubin7cda44f2017-03-21 14:28:53 -07001171sepolicy_build_cil_workaround_files :=
Jeff Vander Stoep74434842017-03-13 12:22:15 -07001172with_asan :=
Alice Chucdfb06f2012-11-01 11:33:04 -07001173
1174include $(call all-makefiles-under,$(LOCAL_PATH))