blob: f7d103cce5b03f9aafc3c28b56c85eb10d4803af [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)
4
5# SELinux policy version.
Stephen Smalleyb4f17062015-03-13 10:03:52 -04006# Must be <= /sys/fs/selinux/policyvers reported by the Android kernel.
Stephen Smalley2dd4e512012-01-04 12:33:27 -05007# Must be within the compatibility range reported by checkpolicy -V.
Stephen Smalleye543a8b2013-04-01 10:07:43 -04008POLICYVERS ?= 26
Stephen Smalley2dd4e512012-01-04 12:33:27 -05009
10MLS_SENS=1
11MLS_CATS=1024
12
Stephen Smalleyb4f17062015-03-13 10:03:52 -040013ifdef BOARD_SEPOLICY_REPLACE
14$(error BOARD_SEPOLICY_REPLACE is no longer supported; please remove from your BoardConfig.mk or other .mk file.)
15endif
16
17ifdef BOARD_SEPOLICY_IGNORE
18$(error BOARD_SEPOLICY_IGNORE is no longer supported; please remove from your BoardConfig.mk or other .mk file.)
19endif
Stephen Smalley5b340be2012-03-06 11:12:41 -050020
Robert Craig6b0ff472014-01-29 13:10:58 -050021# Quick edge case error detection for BOARD_SEPOLICY_UNION.
22# This ensures that a requested union file exists somewhere
23# in one of the listed BOARD_SEPOLICY_DIRS.
24$(foreach pf, $(BOARD_SEPOLICY_UNION), \
25 $(if $(filter 0, $(words $(wildcard $(addsuffix /$(pf), $(BOARD_SEPOLICY_DIRS))))), \
26 $(error No sepolicy file found for $(pf) in $(BOARD_SEPOLICY_DIRS)), \
27 ) \
28)
29
rpcraig47cd3962012-10-17 21:09:52 -040030# Builds paths for all requested policy files w.r.t
Stephen Smalleyb4f17062015-03-13 10:03:52 -040031# BOARD_SEPOLICY_UNION variables.
rpcraig47cd3962012-10-17 21:09:52 -040032# $(1): the set of policy name paths to build
33build_policy = $(foreach type, $(1), \
William Roberts15b3ced2013-02-12 13:30:47 +090034 $(foreach expanded_type, $(notdir $(wildcard $(addsuffix /$(type), $(LOCAL_PATH)))), \
William Roberts15b3ced2013-02-12 13:30:47 +090035 $(LOCAL_PATH)/$(expanded_type) \
36 ) \
William Roberts15b3ced2013-02-12 13:30:47 +090037 $(foreach union_policy, $(wildcard $(addsuffix /$(type), $(BOARD_SEPOLICY_DIRS))), \
38 $(if $(filter $(notdir $(union_policy)), $(BOARD_SEPOLICY_UNION)), \
39 $(union_policy), \
40 ) \
rpcraig47cd3962012-10-17 21:09:52 -040041 ) \
Stephen Smalleyb4f17062015-03-13 10:03:52 -040042 )
Stephen Smalley5b340be2012-03-06 11:12:41 -050043
dcashman704741a2014-07-25 19:11:52 -070044sepolicy_build_files := security_classes \
45 initial_sids \
46 access_vectors \
47 global_macros \
Nick Kralevicha17a2662014-11-05 15:30:41 -080048 neverallow_macros \
dcashman704741a2014-07-25 19:11:52 -070049 mls_macros \
50 mls \
51 policy_capabilities \
52 te_macros \
53 attributes \
54 *.te \
55 roles \
56 users \
57 initial_sid_contexts \
58 fs_use \
59 genfs_contexts \
60 port_contexts
61
Ying Wang02fb5f32012-01-17 17:51:09 -080062##################################
63include $(CLEAR_VARS)
Stephen Smalley2dd4e512012-01-04 12:33:27 -050064
Ying Wang02fb5f32012-01-17 17:51:09 -080065LOCAL_MODULE := sepolicy
66LOCAL_MODULE_CLASS := ETC
67LOCAL_MODULE_TAGS := optional
Ying Wang02fb5f32012-01-17 17:51:09 -080068LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
Stephen Smalley2dd4e512012-01-04 12:33:27 -050069
Ying Wang02fb5f32012-01-17 17:51:09 -080070include $(BUILD_SYSTEM)/base_rules.mk
Stephen Smalley2dd4e512012-01-04 12:33:27 -050071
Ying Wang02fb5f32012-01-17 17:51:09 -080072sepolicy_policy.conf := $(intermediates)/policy.conf
73$(sepolicy_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
74$(sepolicy_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
dcashman704741a2014-07-25 19:11:52 -070075$(sepolicy_policy.conf) : $(call build_policy, $(sepolicy_build_files))
Ying Wang02fb5f32012-01-17 17:51:09 -080076 @mkdir -p $(dir $@)
Nick Kralevich623975f2014-01-11 01:31:03 -080077 $(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
78 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Nick Kralevich623975f2014-01-11 01:31:03 -080079 -s $^ > $@
Robert Craig65d4f442013-03-27 06:30:25 -040080 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
Stephen Smalley2dd4e512012-01-04 12:33:27 -050081
Stephen Smalley2b826fc2012-01-24 08:46:13 -050082$(LOCAL_BUILT_MODULE) : $(sepolicy_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
Ying Wang02fb5f32012-01-17 17:51:09 -080083 @mkdir -p $(dir $@)
Ying Wangf4ea5b22012-04-09 15:31:03 -070084 $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c $(POLICYVERS) -o $@ $<
Robert Craig65d4f442013-03-27 06:30:25 -040085 $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c $(POLICYVERS) -o $(dir $<)/$(notdir $@).dontaudit $<.dontaudit
Ying Wang02fb5f32012-01-17 17:51:09 -080086
Ying Wangd8b122c2012-10-25 19:01:31 -070087built_sepolicy := $(LOCAL_BUILT_MODULE)
Ying Wang02fb5f32012-01-17 17:51:09 -080088sepolicy_policy.conf :=
Stephen Smalley01a58af2012-10-02 12:46:37 -040089
Stephen Smalleye60723a2014-05-29 16:40:15 -040090##################################
91include $(CLEAR_VARS)
92
93LOCAL_MODULE := sepolicy.recovery
94LOCAL_MODULE_CLASS := ETC
95LOCAL_MODULE_TAGS := eng
96
97include $(BUILD_SYSTEM)/base_rules.mk
98
99sepolicy_policy_recovery.conf := $(intermediates)/policy_recovery.conf
100$(sepolicy_policy_recovery.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
101$(sepolicy_policy_recovery.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
dcashman704741a2014-07-25 19:11:52 -0700102$(sepolicy_policy_recovery.conf) : $(call build_policy, $(sepolicy_build_files))
Stephen Smalleye60723a2014-05-29 16:40:15 -0400103 @mkdir -p $(dir $@)
104 $(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
105 -D target_build_variant=$(TARGET_BUILD_VARIANT) \
Stephen Smalleye60723a2014-05-29 16:40:15 -0400106 -D target_recovery=true \
107 -s $^ > $@
108
109$(LOCAL_BUILT_MODULE) : $(sepolicy_policy_recovery.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy
110 @mkdir -p $(dir $@)
111 $(hide) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -c $(POLICYVERS) -o $@ $<
112
113built_sepolicy_recovery := $(LOCAL_BUILT_MODULE)
114sepolicy_policy_recovery.conf :=
115
dcashman704741a2014-07-25 19:11:52 -0700116##################################
117include $(CLEAR_VARS)
118
119LOCAL_MODULE := general_sepolicy.conf
120LOCAL_MODULE_CLASS := ETC
121LOCAL_MODULE_TAGS := tests
122
123include $(BUILD_SYSTEM)/base_rules.mk
124
125exp_sepolicy_build_files :=\
126 $(wildcard $(addprefix $(LOCAL_PATH)/, $(sepolicy_build_files)))
127
128$(LOCAL_BUILT_MODULE): PRIVATE_MLS_SENS := $(MLS_SENS)
129$(LOCAL_BUILT_MODULE): PRIVATE_MLS_CATS := $(MLS_CATS)
130$(LOCAL_BUILT_MODULE): $(exp_sepolicy_build_files)
131 mkdir -p $(dir $@)
132 $(hide) m4 -D mls_num_sens=$(PRIVATE_MLS_SENS) -D mls_num_cats=$(PRIVATE_MLS_CATS) \
133 -D target_build_variant=user \
dcashman704741a2014-07-25 19:11:52 -0700134 -s $^ > $@
135 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
136
137GENERAL_SEPOLICY_POLICY.CONF = $(LOCAL_BUILT_MODULE)
138
139exp_sepolicy_build_files :=
140
141##################################
Stephen Smalley01a58af2012-10-02 12:46:37 -0400142include $(CLEAR_VARS)
143
Ying Wang02fb5f32012-01-17 17:51:09 -0800144LOCAL_MODULE := file_contexts
Ying Wang02fb5f32012-01-17 17:51:09 -0800145LOCAL_MODULE_CLASS := ETC
146LOCAL_MODULE_TAGS := optional
147LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
148
Stephen Smalley5b340be2012-03-06 11:12:41 -0500149include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -0800150
rpcraig47cd3962012-10-17 21:09:52 -0400151ALL_FC_FILES := $(call build_policy, file_contexts)
Stephen Smalley01a58af2012-10-02 12:46:37 -0400152
Ying Wangd8b122c2012-10-25 19:01:31 -0700153$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
154$(LOCAL_BUILT_MODULE): $(ALL_FC_FILES) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
Stephen Smalley5b340be2012-03-06 11:12:41 -0500155 @mkdir -p $(dir $@)
Stephen Smalley01a58af2012-10-02 12:46:37 -0400156 $(hide) m4 -s $(ALL_FC_FILES) > $@
Ying Wangd8b122c2012-10-25 19:01:31 -0700157 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc $(PRIVATE_SEPOLICY) $@
Stephen Smalley5b340be2012-03-06 11:12:41 -0500158
Robert Craig8b7545b2014-03-20 09:35:08 -0400159built_fc := $(LOCAL_BUILT_MODULE)
William Roberts171a0622012-08-16 10:55:05 -0700160
Ying Wang02fb5f32012-01-17 17:51:09 -0800161##################################
162include $(CLEAR_VARS)
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400163
164LOCAL_MODULE := general_file_contexts
165LOCAL_MODULE_CLASS := ETC
166LOCAL_MODULE_TAGS := tests
167
168include $(BUILD_SYSTEM)/base_rules.mk
169
170$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
171$(LOCAL_BUILT_MODULE) : $(addprefix $(LOCAL_PATH)/, file_contexts) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
172 @mkdir -p $(dir $@)
173 $(hide) m4 -s $< > $@
174 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc $(PRIVATE_SEPOLICY) $@
175
176GENERAL_FILE_CONTEXTS := $(LOCAL_BUILT_MODULE)
177
178##################################
179include $(CLEAR_VARS)
Ying Wang02fb5f32012-01-17 17:51:09 -0800180LOCAL_MODULE := seapp_contexts
Ying Wang02fb5f32012-01-17 17:51:09 -0800181LOCAL_MODULE_CLASS := ETC
182LOCAL_MODULE_TAGS := optional
183LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
184
William Roberts171a0622012-08-16 10:55:05 -0700185include $(BUILD_SYSTEM)/base_rules.mk
Ying Wang02fb5f32012-01-17 17:51:09 -0800186
William Roberts98ed3922012-09-05 11:19:07 -0700187seapp_contexts.tmp := $(intermediates)/seapp_contexts.tmp
rpcraig47cd3962012-10-17 21:09:52 -0400188$(seapp_contexts.tmp): $(call build_policy, seapp_contexts)
William Roberts171a0622012-08-16 10:55:05 -0700189 @mkdir -p $(dir $@)
190 $(hide) m4 -s $^ > $@
191
Ying Wangd8b122c2012-10-25 19:01:31 -0700192$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
193$(LOCAL_BUILT_MODULE) : $(seapp_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkseapp
William Robertsf0e0a942012-08-27 15:41:15 -0700194 @mkdir -p $(dir $@)
Ying Wangd8b122c2012-10-25 19:01:31 -0700195 $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $<
Ying Wang02fb5f32012-01-17 17:51:09 -0800196
Robert Craig8b7545b2014-03-20 09:35:08 -0400197built_sc := $(LOCAL_BUILT_MODULE)
William Roberts98ed3922012-09-05 11:19:07 -0700198seapp_contexts.tmp :=
Robert Craig8b7545b2014-03-20 09:35:08 -0400199
Ying Wang02fb5f32012-01-17 17:51:09 -0800200##################################
Stephen Smalley124720a2012-04-04 10:11:16 -0400201include $(CLEAR_VARS)
Stephen Smalley37712872015-03-12 15:46:36 -0400202LOCAL_MODULE := general_seapp_contexts
203LOCAL_MODULE_CLASS := ETC
204LOCAL_MODULE_TAGS := tests
205
206include $(BUILD_SYSTEM)/base_rules.mk
207
208general_seapp_contexts.tmp := $(intermediates)/general_seapp_contexts.tmp
209$(general_seapp_contexts.tmp): $(addprefix $(LOCAL_PATH)/, seapp_contexts)
210 @mkdir -p $(dir $@)
211 $(hide) m4 -s $^ > $@
212
213$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
214$(LOCAL_BUILT_MODULE) : $(general_seapp_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkseapp
215 @mkdir -p $(dir $@)
216 $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $<
217
218GENERAL_SEAPP_CONTEXTS := $(LOCAL_BUILT_MODULE)
219general_seapp_contexts.tmp :=
220
221##################################
222include $(CLEAR_VARS)
Stephen Smalley124720a2012-04-04 10:11:16 -0400223
224LOCAL_MODULE := property_contexts
225LOCAL_MODULE_CLASS := ETC
226LOCAL_MODULE_TAGS := optional
227LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
228
229include $(BUILD_SYSTEM)/base_rules.mk
230
Robert Craigd98d26e2013-01-23 14:04:50 -0500231ALL_PC_FILES := $(call build_policy, property_contexts)
232
233$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
234$(LOCAL_BUILT_MODULE): $(ALL_PC_FILES) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
Stephen Smalley124720a2012-04-04 10:11:16 -0400235 @mkdir -p $(dir $@)
Robert Craigd98d26e2013-01-23 14:04:50 -0500236 $(hide) m4 -s $(ALL_PC_FILES) > $@
237 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -p $(PRIVATE_SEPOLICY) $@
Stephen Smalley124720a2012-04-04 10:11:16 -0400238
Robert Craig8b7545b2014-03-20 09:35:08 -0400239built_pc := $(LOCAL_BUILT_MODULE)
240
Stephen Smalley124720a2012-04-04 10:11:16 -0400241##################################
Riley Spahnf90c41f2014-06-05 15:52:02 -0700242include $(CLEAR_VARS)
243
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400244LOCAL_MODULE := general_property_contexts
245LOCAL_MODULE_CLASS := ETC
246LOCAL_MODULE_TAGS := tests
247
Stephen Smalleyc9361732015-03-13 09:36:57 -0400248include $(BUILD_SYSTEM)/base_rules.mk
249
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400250$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
251$(LOCAL_BUILT_MODULE) : $(addprefix $(LOCAL_PATH)/, property_contexts) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
252 @mkdir -p $(dir $@)
253 $(hide) m4 -s $< > $@
254 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -p $(PRIVATE_SEPOLICY) $@
255
256GENERAL_PROPERTY_CONTEXTS := $(LOCAL_BUILT_MODULE)
257
258##################################
259include $(CLEAR_VARS)
260
Riley Spahnf90c41f2014-06-05 15:52:02 -0700261LOCAL_MODULE := service_contexts
262LOCAL_MODULE_CLASS := ETC
263LOCAL_MODULE_TAGS := optional
264LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
265
266include $(BUILD_SYSTEM)/base_rules.mk
267
268ALL_SVC_FILES := $(call build_policy, service_contexts)
269
270$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
271$(LOCAL_BUILT_MODULE): $(ALL_SVC_FILES) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
272 @mkdir -p $(dir $@)
273 $(hide) m4 -s $(ALL_SVC_FILES) > $@
274 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -p $(PRIVATE_SEPOLICY) $@
275
276built_svc := $(LOCAL_BUILT_MODULE)
277
278##################################
rpcraigb19665c2012-07-30 09:33:03 -0400279include $(CLEAR_VARS)
280
Stephen Smalley2e0cd5a2015-03-12 17:45:03 -0400281LOCAL_MODULE := general_service_contexts
282LOCAL_MODULE_CLASS := ETC
283LOCAL_MODULE_TAGS := tests
284
285include $(BUILD_SYSTEM)/base_rules.mk
286
287$(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
288$(LOCAL_BUILT_MODULE) : $(addprefix $(LOCAL_PATH)/, service_contexts) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc
289 @mkdir -p $(dir $@)
290 $(hide) m4 -s $< > $@
291 $(hide) $(HOST_OUT_EXECUTABLES)/checkfc -p $(PRIVATE_SEPOLICY) $@
292
293GENERAL_SERVICE_CONTEXTS := $(LOCAL_BUILT_MODULE)
294
295##################################
296include $(CLEAR_VARS)
297
Robert Craig7f2392e2013-03-27 08:35:39 -0400298LOCAL_MODULE := mac_permissions.xml
rpcraigb19665c2012-07-30 09:33:03 -0400299LOCAL_MODULE_CLASS := ETC
300LOCAL_MODULE_TAGS := optional
301LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/security
302
William Roberts2c8a55d2012-11-30 14:59:09 -0800303include $(BUILD_SYSTEM)/base_rules.mk
rpcraigb19665c2012-07-30 09:33:03 -0400304
Geremy Condracd4104e2013-03-26 18:19:12 +0000305# Build keys.conf
306mac_perms_keys.tmp := $(intermediates)/keys.tmp
307$(mac_perms_keys.tmp) : $(call build_policy, keys.conf)
308 @mkdir -p $(dir $@)
309 $(hide) m4 -s $^ > $@
310
Robert Craig7f2392e2013-03-27 08:35:39 -0400311ALL_MAC_PERMS_FILES := $(call build_policy, $(LOCAL_MODULE))
rpcraigb19665c2012-07-30 09:33:03 -0400312
Robert Craig7f2392e2013-03-27 08:35:39 -0400313$(LOCAL_BUILT_MODULE) : $(mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py $(ALL_MAC_PERMS_FILES)
Geremy Condracd4104e2013-03-26 18:19:12 +0000314 @mkdir -p $(dir $@)
Nick Kralevichc3c90522013-10-25 12:25:36 -0700315 $(hide) DEFAULT_SYSTEM_DEV_CERTIFICATE="$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))" \
316 $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(ALL_MAC_PERMS_FILES)
Geremy Condracd4104e2013-03-26 18:19:12 +0000317
Robert Craig7f2392e2013-03-27 08:35:39 -0400318mac_perms_keys.tmp :=
rpcraigb19665c2012-07-30 09:33:03 -0400319##################################
Robert Craig8b7545b2014-03-20 09:35:08 -0400320include $(CLEAR_VARS)
321
322LOCAL_MODULE := selinux_version
323LOCAL_MODULE_CLASS := ETC
324LOCAL_MODULE_TAGS := optional
325LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
326
327include $(BUILD_SYSTEM)/base_rules.mk
Riley Spahnf90c41f2014-06-05 15:52:02 -0700328$(LOCAL_BUILT_MODULE) : $(built_sepolicy) $(built_pc) $(built_fc) $(built_sc) $(built_svc)
Robert Craig8b7545b2014-03-20 09:35:08 -0400329 @mkdir -p $(dir $@)
330 $(hide) echo -n $(BUILD_FINGERPRINT) > $@
331
332##################################
rpcraig47cd3962012-10-17 21:09:52 -0400333
334build_policy :=
dcashman704741a2014-07-25 19:11:52 -0700335sepolicy_build_files :=
Robert Craig8b7545b2014-03-20 09:35:08 -0400336built_sepolicy :=
337built_sc :=
338built_fc :=
339built_pc :=
Riley Spahnf90c41f2014-06-05 15:52:02 -0700340built_svc :=
Alice Chucdfb06f2012-11-01 11:33:04 -0700341
342include $(call all-makefiles-under,$(LOCAL_PATH))