# Board specific SELinux policy variable definitions
ifeq ($(call is-vendor-board-platform,QCOM),true)
SEPOLICY_PATH:= device/qcom/sepolicy
LOCAL_PATH := $(call my-dir)
BOARD_SYSTEM_EXT_PREBUILT_DIR := device/qcom/sepolicy/generic
BOARD_PRODUCT_PREBUILT_DIR := device/qcom/sepolicy/generic/product
BOARD_PLAT_PUB_VERSIONED_POLICY := device/qcom/sepolicy
$(shell $(SEPOLICY_PATH)/append.sh)

SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS := \
    $(SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS) \
    $(SEPOLICY_PATH)/generic/public

SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS := \
    $(SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS) \
    $(SEPOLICY_PATH)/generic/private

#once all the services are moved to Product /ODM above lines will be removed.
# sepolicy rules for product images
PRODUCT_PUBLIC_SEPOLICY_DIRS := \
    $(PRODUCT_PUBLIC_SEPOLICY_DIRS) \
    $(SEPOLICY_PATH)/generic/product/public

PRODUCT_PRIVATE_SEPOLICY_DIRS := \
    $(PRODUCT_PRIVATE_SEPOLICY_DIRS) \
    $(SEPOLICY_PATH)/generic/product/private

#if defined(PXLW_IRIS)
ifeq ($(findstring PXLW_IRIS,$(IRIS_CFLAGS)),PXLW_IRIS)
    BOARD_SEPOLICY_DIRS += \
       vendor/pixelworks/irisdbgd/sepolicy \
       vendor/pixelworks/libirisservice/sepolicy
endif
#endif /* defined(PXLW_IRIS) */

############## + add t2m sepolicy path ###################
#liquan.zhou.t2m,20210414

T2M_SEPOLICY_PATH := device/qcom/lito/sepolicy

#### sepolicy in /system_ext
#BOARD_PLAT_PUBLIC_SEPOLICY_DIR += \
	#$(T2M_SEPOLICY_PATH)/public

#BOARD_PLAT_PRIVATE_SEPOLICY_DIR += \
	#$(T2M_SEPOLICY_PATH)/private

#### sepolicy in /product
#PRODUCT_PUBLIC_SEPOLICY_DIRS += \
	#$(T2M_SEPOLICY_PATH)/product/public

#PRODUCT_PRIVATE_POLICY += \
	#$(T2M_SEPOLICY_PATH)/product/private

endif
