Skip to content
Snippets Groups Projects
Android.mk 58.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    $(LOCAL_BUILT_MODULE): $(built_vendor_fc)
    
    ##################################
    include $(CLEAR_VARS)
    LOCAL_MODULE := odm_file_contexts.recovery
    LOCAL_MODULE_STEM := odm_file_contexts
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    $(LOCAL_BUILT_MODULE): $(built_odm_fc)
    	$(hide) cp -f $< $@
    
    
    Ying Wang's avatar
    Ying Wang committed
    ##################################
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := plat_seapp_contexts
    
    Ying Wang's avatar
    Ying Wang committed
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
    else
    
    Ying Wang's avatar
    Ying Wang committed
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    
    Ying Wang's avatar
    Ying Wang committed
    
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    plat_sc_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY))
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(plat_sc_files)
    $(LOCAL_BUILT_MODULE): $(built_sepolicy) $(plat_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp
    
    	@mkdir -p $(dir $@)
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES)
    
    Ying Wang's avatar
    Ying Wang committed
    
    
    built_plat_sc := $(LOCAL_BUILT_MODULE)
    plat_sc_files :=
    
    ##################################
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := vendor_seapp_contexts
    
    LOCAL_MODULE_CLASS := ETC
    
    LOCAL_MODULE_TAGS := optional
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
    else
    
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    vendor_sc_files := $(call build_policy, seapp_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    plat_sc_neverallow_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY))
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(vendor_sc_files)
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SC_NEVERALLOW_FILES := $(plat_sc_neverallow_files)
    
    $(LOCAL_BUILT_MODULE): $(built_sepolicy) $(vendor_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp $(plat_sc_neverallow_files)
    
    	$(hide) grep -ihe '^neverallow' $(PRIVATE_SC_NEVERALLOW_FILES) > $@.tmp
    
    Xin Li's avatar
    Xin Li committed
    	$(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES) $@.tmp
    
    built_vendor_sc := $(LOCAL_BUILT_MODULE)
    vendor_sc_files :=
    
    ##################################
    include $(CLEAR_VARS)
    LOCAL_MODULE := odm_seapp_contexts
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    odm_sc_files := $(call build_policy, seapp_contexts, $(BOARD_ODM_SEPOLICY_DIRS))
    plat_sc_neverallow_files := $(call build_policy, seapp_contexts, $(PLAT_PRIVATE_POLICY))
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    $(LOCAL_BUILT_MODULE): PRIVATE_SC_FILES := $(odm_sc_files)
    $(LOCAL_BUILT_MODULE): PRIVATE_SC_NEVERALLOW_FILES := $(plat_sc_neverallow_files)
    $(LOCAL_BUILT_MODULE): $(built_sepolicy) $(odm_sc_files) $(HOST_OUT_EXECUTABLES)/checkseapp $(plat_sc_neverallow_files)
    	@mkdir -p $(dir $@)
    	$(hide) grep -ihe '^neverallow' $(PRIVATE_SC_NEVERALLOW_FILES) > $@.tmp
    	$(hide) $(HOST_OUT_EXECUTABLES)/checkseapp -p $(PRIVATE_SEPOLICY) -o $@ $(PRIVATE_SC_FILES) $@.tmp
    
    built_odm_sc := $(LOCAL_BUILT_MODULE)
    odm_sc_files :=
    
    
    ##################################
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := plat_seapp_neverallows
    
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := tests
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    $(LOCAL_BUILT_MODULE): $(plat_sc_neverallow_files)
    
    	@mkdir -p $(dir $@)
    
    	- $(hide) grep -ihe '^neverallow' $< > $@
    
    plat_sc_neverallow_files :=
    
    ##################################
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := plat_property_contexts
    
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
    else
    
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    plat_pcfiles := $(call build_policy, property_contexts, $(PLAT_PRIVATE_POLICY))
    
    ifeq ($(PRODUCT_COMPATIBLE_PROPERTY),true)
    plat_pcfiles += $(LOCAL_PATH)/public/property_contexts
    endif
    
    plat_property_contexts.tmp := $(intermediates)/plat_property_contexts.tmp
    $(plat_property_contexts.tmp): PRIVATE_PC_FILES := $(plat_pcfiles)
    $(plat_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(plat_property_contexts.tmp): $(plat_pcfiles)
    
    	@mkdir -p $(dir $@)
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
    
    $(LOCAL_BUILT_MODULE): $(plat_property_contexts.tmp) $(HOST_OUT_EXECUTABLES)/property_info_checker
    
    	@mkdir -p $(dir $@)
    
    	$(hide) cp -f $< $@
    	$(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $@
    
    built_plat_pc := $(LOCAL_BUILT_MODULE)
    plat_pcfiles :=
    plat_property_contexts.tmp :=
    
    ##################################
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := vendor_property_contexts
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
    else
    
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    vendor_pcfiles := $(call build_policy, property_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    vendor_property_contexts.tmp := $(intermediates)/vendor_property_contexts.tmp
    $(vendor_property_contexts.tmp): PRIVATE_PC_FILES := $(vendor_pcfiles)
    $(vendor_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(vendor_property_contexts.tmp): $(vendor_pcfiles)
    
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
    
    $(LOCAL_BUILT_MODULE): $(vendor_property_contexts.tmp) $(HOST_OUT_EXECUTABLES)/property_info_checker
    
    	$(hide) cp -f $< $@
    	$(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $@
    
    built_vendor_pc := $(LOCAL_BUILT_MODULE)
    vendor_pcfiles :=
    vendor_property_contexts.tmp :=
    
    ##################################
    include $(CLEAR_VARS)
    LOCAL_MODULE := odm_property_contexts
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    odm_pcfiles := $(call build_policy, property_contexts, $(BOARD_ODM_SEPOLICY_DIRS))
    
    odm_property_contexts.tmp := $(intermediates)/odm_property_contexts.tmp
    $(odm_property_contexts.tmp): PRIVATE_PC_FILES := $(odm_pcfiles)
    $(odm_property_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(odm_property_contexts.tmp): $(odm_pcfiles)
    	@mkdir -p $(dir $@)
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_PC_FILES) > $@
    
    
    $(LOCAL_BUILT_MODULE): $(odm_property_contexts.tmp) $(HOST_OUT_EXECUTABLES)/property_info_checker
    	@mkdir -p $(dir $@)
    	$(hide) cp -f $< $@
    	$(hide) $(HOST_OUT_EXECUTABLES)/property_info_checker $@
    
    built_odm_pc := $(LOCAL_BUILT_MODULE)
    odm_pcfiles :=
    odm_property_contexts.tmp :=
    
    
    ##################################
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := plat_property_contexts.recovery
    LOCAL_MODULE_STEM := plat_property_contexts
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    $(LOCAL_BUILT_MODULE): $(built_plat_pc)
    	$(hide) cp -f $< $@
    
    ##################################
    include $(CLEAR_VARS)
    
    LOCAL_MODULE := vendor_property_contexts.recovery
    LOCAL_MODULE_STEM := vendor_property_contexts
    
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    $(LOCAL_BUILT_MODULE): $(built_vendor_pc)
    
    	$(hide) cp -f $< $@
    
    
    ##################################
    include $(CLEAR_VARS)
    LOCAL_MODULE := odm_property_contexts.recovery
    LOCAL_MODULE_STEM := odm_property_contexts
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    $(LOCAL_BUILT_MODULE): $(built_odm_pc)
    	$(hide) cp -f $< $@
    
    
    ##################################
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := plat_service_contexts
    
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
    else
    
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    plat_svcfiles := $(call build_policy, service_contexts, $(PLAT_PRIVATE_POLICY))
    
    plat_service_contexts.tmp := $(intermediates)/plat_service_contexts.tmp
    $(plat_service_contexts.tmp): PRIVATE_SVC_FILES := $(plat_svcfiles)
    $(plat_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(plat_service_contexts.tmp): $(plat_svcfiles)
    
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
    
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(LOCAL_BUILT_MODULE): $(plat_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
    
    	sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
    
    	$(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
    
    built_plat_svc := $(LOCAL_BUILT_MODULE)
    plat_svcfiles :=
    plat_service_contexts.tmp :=
    
    rpcraig's avatar
    rpcraig committed
    ##################################
    
    # nonplat_service_contexts is only allowed on non-full-treble devices
    
    ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    rpcraig's avatar
    rpcraig committed
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := vendor_service_contexts
    
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    
    vendor_svcfiles := $(call build_policy, service_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    vendor_service_contexts.tmp := $(intermediates)/vendor_service_contexts.tmp
    $(vendor_service_contexts.tmp): PRIVATE_SVC_FILES := $(vendor_svcfiles)
    $(vendor_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(vendor_service_contexts.tmp): $(vendor_svcfiles)
    
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(LOCAL_BUILT_MODULE): $(vendor_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
    
    	sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
    
    built_vendor_svc := $(LOCAL_BUILT_MODULE)
    vendor_svcfiles :=
    vendor_service_contexts.tmp :=
    
    ##################################
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := plat_hwservice_contexts
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
    else
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    endif
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    plat_hwsvcfiles := $(call build_policy, hwservice_contexts, $(PLAT_PRIVATE_POLICY))
    
    plat_hwservice_contexts.tmp := $(intermediates)/plat_hwservice_contexts.tmp
    $(plat_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(plat_hwsvcfiles)
    $(plat_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(plat_hwservice_contexts.tmp): $(plat_hwsvcfiles)
    	@mkdir -p $(dir $@)
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    $(LOCAL_BUILT_MODULE): $(plat_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
    	@mkdir -p $(dir $@)
    	sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
    	$(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
    
    plat_hwsvcfiles :=
    plat_hwservice_contexts.tmp :=
    
    ##################################
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := vendor_hwservice_contexts
    
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
    else
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    endif
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    vendor_hwsvcfiles := $(call build_policy, hwservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    vendor_hwservice_contexts.tmp := $(intermediates)/vendor_hwservice_contexts.tmp
    $(vendor_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(vendor_hwsvcfiles)
    $(vendor_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(vendor_hwservice_contexts.tmp): $(vendor_hwsvcfiles)
    
    	@mkdir -p $(dir $@)
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(LOCAL_BUILT_MODULE): $(vendor_hwservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
    
    	@mkdir -p $(dir $@)
    	sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
    	$(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -l $(PRIVATE_SEPOLICY) $@
    
    
    vendor_hwsvcfiles :=
    vendor_hwservice_contexts.tmp :=
    
    
    
    ##################################
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := vndservice_contexts
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
    else
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    endif
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    vnd_svcfiles := $(call build_policy, vndservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    
    vndservice_contexts.tmp := $(intermediates)/vndservice_contexts.tmp
    $(vndservice_contexts.tmp): PRIVATE_SVC_FILES := $(vnd_svcfiles)
    $(vndservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(vndservice_contexts.tmp): $(vnd_svcfiles)
    	@mkdir -p $(dir $@)
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    $(LOCAL_BUILT_MODULE): $(vndservice_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
    	@mkdir -p $(dir $@)
    	sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/checkfc -e -v $(PRIVATE_SEPOLICY) $@
    
    
    vnd_svcfiles :=
    vndservice_contexts.tmp :=
    ##################################
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := plat_mac_permissions.xml
    
    rpcraig's avatar
    rpcraig committed
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    
    LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/selinux
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    plat_mac_perms_keys.tmp := $(intermediates)/plat_keys.tmp
    $(plat_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(plat_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PLAT_PRIVATE_POLICY))
    
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
    
    all_plat_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PLAT_PRIVATE_POLICY))
    
    # Should be synced with keys.conf.
    
    all_plat_keys := platform media shared testkey
    all_plat_keys := $(all_keys:%=$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))/%.x509.pem)
    
    $(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_plat_mac_perms_files)
    $(LOCAL_BUILT_MODULE): $(plat_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
    $(all_plat_mac_perms_files) $(all_plat_keys)
    
    	$(hide) DEFAULT_SYSTEM_DEV_CERTIFICATE="$(dir $(DEFAULT_SYSTEM_DEV_CERTIFICATE))" \
    
    		$(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
    
    all_mac_perms_files :=
    
    all_plat_keys :=
    plat_mac_perms_keys.tmp :=
    
    ##################################
    include $(CLEAR_VARS)
    
    
    LOCAL_MODULE := vendor_mac_permissions.xml
    
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := optional
    
    LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
    
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    # Build keys.conf
    
    vendor_mac_perms_keys.tmp := $(intermediates)/vendor_keys.tmp
    $(vendor_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(vendor_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    	@mkdir -p $(dir $@)
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
    
    
    all_vendor_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    $(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_vendor_mac_perms_files)
    $(LOCAL_BUILT_MODULE): $(vendor_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
    $(all_vendor_mac_perms_files)
    
    	@mkdir -p $(dir $@)
    	$(hide) $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
    
    
    vendor_mac_perms_keys.tmp :=
    all_vendor_mac_perms_files :=
    
    #################################
    include $(CLEAR_VARS)
    LOCAL_MODULE := sepolicy_tests
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := tests
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    all_fc_files := $(built_plat_fc) $(built_vendor_fc)
    
    ifdef BOARD_ODM_SEPOLICY_DIRS
    all_fc_files += $(built_odm_fc)
    endif
    
    all_fc_args := $(foreach file, $(all_fc_files), -f $(file))
    
    
    sepolicy_tests := $(intermediates)/sepolicy_tests
    
    $(sepolicy_tests): ALL_FC_ARGS := $(all_fc_args)
    
    $(sepolicy_tests): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(sepolicy_tests): $(HOST_OUT_EXECUTABLES)/sepolicy_tests $(all_fc_files) $(built_sepolicy)
    
    	@mkdir -p $(dir $@)
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/sepolicy_tests -l $(HOST_OUT)/lib64/libsepolwrap.$(SHAREDLIB_EXT) \
    
    		$(ALL_FC_ARGS)  -p $(PRIVATE_SEPOLICY)
    
    ##################################
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    intermediates := $(call intermediates-dir-for,ETC,built_plat_sepolicy,,,,)
    
    
    # plat_sepolicy - the current platform policy only, built into a policy binary.
    # TODO - this currently excludes partner extensions, but support should be added
    # to enable partners to add their own compatibility mapping
    BASE_PLAT_PUBLIC_POLICY := $(filter-out $(BOARD_PLAT_PUBLIC_SEPOLICY_DIR), $(PLAT_PUBLIC_POLICY))
    BASE_PLAT_PRIVATE_POLICY := $(filter-out $(BOARD_PLAT_PRIVATE_SEPOLICY_DIR), $(PLAT_PRIVATE_POLICY))
    base_plat_policy.conf := $(intermediates)/base_plat_policy.conf
    $(base_plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
    $(base_plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
    
    $(base_plat_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
    
    $(base_plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
    $(base_plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
    $(base_plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    
    $(base_plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := true
    
    $(base_plat_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
    
    $(base_plat_policy.conf): $(call build_policy, $(sepolicy_build_files), \
    $(BASE_PLAT_PUBLIC_POLICY) $(BASE_PLAT_PRIVATE_POLICY))
    	$(transform-policy-to-conf)
    	$(hide) sed '/dontaudit/d' $@ > $@.dontaudit
    
    built_plat_sepolicy := $(intermediates)/built_plat_sepolicy
    $(built_plat_sepolicy): PRIVATE_ADDITIONAL_CIL_FILES := \
      $(call build_policy, $(sepolicy_build_cil_workaround_files), $(BASE_PLAT_PRIVATE_POLICY))
    
    $(built_plat_sepolicy): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
    
    $(built_plat_sepolicy): $(base_plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
    $(HOST_OUT_EXECUTABLES)/secilc \
    
    $(call build_policy, $(sepolicy_build_cil_workaround_files), $(BASE_PLAT_PRIVATE_POLICY)) \
    $(built_sepolicy_neverallows)
    
    	@mkdir -p $(dir $@)
    	$(hide) $(CHECKPOLICY_ASAN_OPTIONS) $(HOST_OUT_EXECUTABLES)/checkpolicy -M -C -c \
    		$(POLICYVERS) -o $@ $<
    	$(hide) cat $(PRIVATE_ADDITIONAL_CIL_FILES) >> $@
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -c $(POLICYVERS) $(PRIVATE_NEVERALLOW_ARG) $@ -o $@ -f /dev/null
    
    all_fc_files := $(built_plat_fc) $(built_vendor_fc)
    
    ifdef BOARD_ODM_SEPOLICY_DIRS
    all_fc_files += $(built_odm_fc)
    endif
    
    all_fc_args := $(foreach file, $(all_fc_files), -f $(file))
    
    
    # Tests for Treble compatibility of current platform policy and vendor policy of
    # given release version.
    version_under_treble_tests := 26.0
    include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
    
    version_under_treble_tests := 27.0
    include $(LOCAL_PATH)/treble_sepolicy_tests_for_release.mk
    
    
    BASE_PLAT_PUBLIC_POLICY :=
    BASE_PLAT_PRIVATE_POLICY :=
    base_plat_policy.conf :=
    plat_sepolicy :=
    
    
    endif # ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    #################################
    
    build_vendor_policy :=
    
    build_odm_policy :=
    
    built_plat_fc :=
    
    built_vendor_fc :=
    
    built_odm_fc :=
    
    built_plat_cil :=
    
    built_plat_pub_vers_cil :=
    
    built_mapping_cil :=
    
    built_vendor_cil :=
    built_vendor_pc :=
    built_vendor_sc :=
    
    built_odm_cil :=
    
    built_odm_pc :=
    
    built_odm_sc :=
    
    built_precompiled_sepolicy :=
    
    built_vendor_svc :=
    
    mapping_policy :=
    
    plat_pub_policy.cil :=
    reqd_policy_mask.cil :=
    
    sepolicy_build_cil_workaround_files :=
    
    
    include $(call all-makefiles-under,$(LOCAL_PATH))