Skip to content
Snippets Groups Projects
Android.mk 54.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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 := nonplat_property_contexts.recovery
    LOCAL_MODULE_STEM := nonplat_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_nonplat_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 := nonplat_service_contexts
    
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
    
    nonplat_svcfiles := $(call build_policy, service_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    nonplat_service_contexts.tmp := $(intermediates)/nonplat_service_contexts.tmp
    $(nonplat_service_contexts.tmp): PRIVATE_SVC_FILES := $(nonplat_svcfiles)
    $(nonplat_service_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(nonplat_service_contexts.tmp): $(nonplat_svcfiles)
    
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(LOCAL_BUILT_MODULE): $(nonplat_service_contexts.tmp) $(built_sepolicy) $(HOST_OUT_EXECUTABLES)/checkfc $(ACP)
    
    	sed -e 's/#.*$$//' -e '/^$$/d' $< > $@
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/checkfc -s $(PRIVATE_SEPOLICY) $@
    
    built_nonplat_svc := $(LOCAL_BUILT_MODULE)
    nonplat_svcfiles :=
    nonplat_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 := nonplat_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
    
    
    nonplat_hwsvcfiles := $(call build_policy, hwservice_contexts, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    nonplat_hwservice_contexts.tmp := $(intermediates)/nonplat_hwservice_contexts.tmp
    $(nonplat_hwservice_contexts.tmp): PRIVATE_SVC_FILES := $(nonplat_hwsvcfiles)
    $(nonplat_hwservice_contexts.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(nonplat_hwservice_contexts.tmp): $(nonplat_hwsvcfiles)
    
    	@mkdir -p $(dir $@)
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $(PRIVATE_SVC_FILES) > $@
    
    $(LOCAL_BUILT_MODULE): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(LOCAL_BUILT_MODULE): $(nonplat_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) $@
    
    
    nonplat_hwsvcfiles :=
    nonplat_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_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 := nonplat_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
    
    nonplat_mac_perms_keys.tmp := $(intermediates)/nonplat_keys.tmp
    $(nonplat_mac_perms_keys.tmp): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    $(nonplat_mac_perms_keys.tmp): $(call build_policy, keys.conf, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    	@mkdir -p $(dir $@)
    	$(hide) m4 -s $(PRIVATE_ADDITIONAL_M4DEFS) $^ > $@
    
    
    all_nonplat_mac_perms_files := $(call build_policy, mac_permissions.xml, $(PLAT_VENDOR_POLICY) $(BOARD_SEPOLICY_DIRS) $(REQD_MASK_POLICY))
    
    $(LOCAL_BUILT_MODULE): PRIVATE_MAC_PERMS_FILES := $(all_nonplat_mac_perms_files)
    $(LOCAL_BUILT_MODULE): $(nonplat_mac_perms_keys.tmp) $(HOST_OUT_EXECUTABLES)/insertkeys.py \
    $(all_nonplat_mac_perms_files)
    
    	@mkdir -p $(dir $@)
    	$(hide) $(HOST_OUT_EXECUTABLES)/insertkeys.py -t $(TARGET_BUILD_VARIANT) -c $(TOP) $< -o $@ $(PRIVATE_MAC_PERMS_FILES)
    
    
    nonplat_mac_perms_keys.tmp :=
    all_nonplat_mac_perms_files :=
    
    #################################
    include $(CLEAR_VARS)
    LOCAL_MODULE := sepolicy_tests
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := tests
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    sepolicy_tests := $(intermediates)/sepolicy_tests
    
    $(sepolicy_tests): PRIVATE_PLAT_FC := $(built_plat_fc)
    $(sepolicy_tests): PRIVATE_NONPLAT_FC := $(built_nonplat_fc)
    
    $(sepolicy_tests): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(sepolicy_tests): $(HOST_OUT_EXECUTABLES)/sepolicy_tests \
    $(built_plat_fc) $(built_nonplat_fc) $(built_sepolicy)
    
    	@mkdir -p $(dir $@)
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/sepolicy_tests -l $(HOST_OUT)/lib64/libsepolwrap.$(SHAREDLIB_EXT) \
    
    		-f $(PRIVATE_PLAT_FC) -f $(PRIVATE_NONPLAT_FC) -p $(PRIVATE_SEPOLICY)
    
    ##################################
    
    ifeq ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    include $(CLEAR_VARS)
    # For Treble builds run tests verifying that processes are properly labeled and
    
    # permissions granted do not violate the treble model.  Also ensure that treble
    # compatibility guarantees are upheld between SELinux version bumps.
    
    LOCAL_MODULE := treble_sepolicy_tests
    LOCAL_MODULE_CLASS := ETC
    LOCAL_MODULE_TAGS := tests
    
    include $(BUILD_SYSTEM)/base_rules.mk
    
    
    # 26.0_plat - the platform policy shipped as part of the 26.0 release.  This is
    # built to enable us to determine the diff between the current policy and the
    # 26.0 policy, which will be used in tests to make sure that compatibility has
    # been maintained by our mapping files.
    26.0_PLAT_PUBLIC_POLICY := $(LOCAL_PATH)/prebuilts/api/26.0/public
    26.0_PLAT_PRIVATE_POLICY := $(LOCAL_PATH)/prebuilts/api/26.0/private
    26.0_plat_policy.conf := $(intermediates)/26.0_plat_policy.conf
    $(26.0_plat_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
    $(26.0_plat_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
    $(26.0_plat_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
    $(26.0_plat_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
    $(26.0_plat_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
    
    $(26.0_plat_policy.conf): PRIVATE_SEPOLICY_SPLIT := true
    
    $(26.0_plat_policy.conf): $(call build_policy, $(sepolicy_build_files), \
    $(26.0_PLAT_PUBLIC_POLICY) $(26.0_PLAT_PRIVATE_POLICY))
    	$(transform-policy-to-conf)
    	$(hide) sed '/dontaudit/d' $@ > $@.dontaudit
    
    built_26.0_plat_sepolicy := $(intermediates)/built_26.0_plat_sepolicy
    $(built_26.0_plat_sepolicy): PRIVATE_ADDITIONAL_CIL_FILES := \
      $(call build_policy, technical_debt.cil , $(26.0_PLAT_PRIVATE_POLICY))
    
    $(built_26.0_plat_sepolicy): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
    
    $(built_26.0_plat_sepolicy): $(26.0_plat_policy.conf) $(HOST_OUT_EXECUTABLES)/checkpolicy \
      $(HOST_OUT_EXECUTABLES)/secilc \
    
      $(call build_policy, technical_debt.cil, $(26.0_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
    
    
    26.0_plat_policy.conf :=
    
    
    # 26.0_compat - the current plat_sepolicy.cil built with the compatibility file
    # targeting the 26.0 SELinux release.  This ensures that our policy will build
    # when used on a device that has non-platform policy targetting the 26.0 release.
    26.0_compat := $(intermediates)/26.0_compat
    26.0_mapping.cil := $(LOCAL_PATH)/private/compat/26.0/26.0.cil
    26.0_mapping.ignore.cil := $(LOCAL_PATH)/private/compat/26.0/26.0.ignore.cil
    26.0_nonplat := $(LOCAL_PATH)/prebuilts/api/26.0/nonplat_sepolicy.cil
    $(26.0_compat): PRIVATE_CIL_FILES := \
    $(built_plat_cil) $(26.0_mapping.cil) $(26.0_nonplat)
    $(26.0_compat): $(HOST_OUT_EXECUTABLES)/secilc \
    $(built_plat_cil) $(26.0_mapping.cil) $(26.0_nonplat)
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/secilc -m -M true -G -N -c $(POLICYVERS) \
    
    		$(PRIVATE_CIL_FILES) -o $@ -f /dev/null
    
    # 26.0_mapping.combined.cil - a combination of the mapping file used when
    # combining the current platform policy with nonplatform policy based on the
    # 26.0 policy release and also a special ignored file that exists purely for
    # these tests.
    26.0_mapping.combined.cil := $(intermediates)/26.0_mapping.combined.cil
    $(26.0_mapping.combined.cil): $(26.0_mapping.cil) $(26.0_mapping.ignore.cil)
    	mkdir -p $(dir $@)
    	cat $^ > $@
    
    # 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_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
    
    treble_sepolicy_tests := $(intermediates)/treble_sepolicy_tests
    
    $(treble_sepolicy_tests): PRIVATE_PLAT_FC := $(built_plat_fc)
    $(treble_sepolicy_tests): PRIVATE_NONPLAT_FC := $(built_nonplat_fc)
    
    $(treble_sepolicy_tests): PRIVATE_SEPOLICY := $(built_sepolicy)
    
    $(treble_sepolicy_tests): PRIVATE_SEPOLICY_OLD := $(built_26.0_plat_sepolicy)
    $(treble_sepolicy_tests): PRIVATE_COMBINED_MAPPING := $(26.0_mapping.combined.cil)
    $(treble_sepolicy_tests): PRIVATE_PLAT_SEPOLICY := $(built_plat_sepolicy)
    ifeq ($(PRODUCT_FULL_TREBLE_OVERRIDE),true)
    $(treble_sepolicy_tests): PRIVATE_FAKE_TREBLE := --fake-treble
    else
    $(treble_sepolicy_tests): PRIVATE_FAKE_TREBLE :=
    endif
    
    $(treble_sepolicy_tests): $(HOST_OUT_EXECUTABLES)/treble_sepolicy_tests \
    
    $(built_plat_fc) $(built_nonplat_fc) $(built_sepolicy) $(built_plat_sepolicy) \
    $(built_26.0_plat_sepolicy) $(26.0_compat) $(26.0_mapping.combined.cil)
    
    	@mkdir -p $(dir $@)
    
    	$(hide) $(HOST_OUT_EXECUTABLES)/treble_sepolicy_tests -l \
    
    		$(HOST_OUT)/lib64/libsepolwrap.$(SHAREDLIB_EXT) \
    		-f $(PRIVATE_PLAT_FC) -f $(PRIVATE_NONPLAT_FC) \
    
    		-b $(PRIVATE_PLAT_SEPOLICY) -m $(PRIVATE_COMBINED_MAPPING) \
    		-o $(PRIVATE_SEPOLICY_OLD) -p $(PRIVATE_SEPOLICY) \
    		$(PRIVATE_FAKE_TREBLE)
    
    
    26.0_PLAT_PUBLIC_POLICY :=
    26.0_PLAT_PRIVATE_POLICY :=
    26.0_compat :=
    26.0_mapping.cil :=
    26.0_mapping.combined.cil :=
    26.0_mapping.ignore.cil :=
    26.0_nonplat :=
    BASE_PLAT_PUBLIC_POLICY :=
    BASE_PLAT_PRIVATE_POLICY :=
    base_plat_policy.conf :=
    built_26.0_plat_sepolicy :=
    plat_sepolicy :=
    
    
    endif # ($(PRODUCT_SEPOLICY_SPLIT),true)
    
    #################################
    
    build_device_policy :=
    
    built_plat_fc :=
    
    built_nonplat_fc :=
    
    built_plat_cil :=
    built_mapping_cil :=
    
    built_nonplat_cil :=
    built_nonplat_pc :=
    built_nonplat_sc :=
    
    built_precompiled_sepolicy :=
    
    built_nonplat_svc :=
    
    mapping_policy :=
    
    plat_pub_policy.cil :=
    reqd_policy_mask.cil :=
    
    sepolicy_build_cil_workaround_files :=
    
    
    include $(call all-makefiles-under,$(LOCAL_PATH))