###############################################################################
#
# HDCP Trusted Application
#
################################################################################

TRUSTLET_NAME := $(TA_NAME)
TRUSTLET_DIR := $(KINIBI_TA_BUILD_ROOT)/kinibi_source/$(TRUSTLET_NAME)/Locals/Code

ifneq ($(findstring r7, $(TARGET_PRODUCT)),)
    SECDRIVER_DIR := $(TRUSTLET_DIR)/driver/$(shell echo $(TARGET_SOC) | tr [A-Z] [a-z])_500
else
    SECDRIVER_DIR := $(TRUSTLET_DIR)/driver/$(shell echo $(TARGET_SOC) | tr [A-Z] [a-z])
endif

# output binary name without path or extension
OUTPUT_NAME := tz_hdcp2_receiver

#protect_stack
ENABLE_STACK_PROTECTION := TRUE

#-------------------------------------------------------------------------------
# MobiConvert parameters, see manual for details
#-------------------------------------------------------------------------------
TRUSTLET_UUID := ffffffff000000000000000000000005
TRUSTLET_SERVICE_TYPE := 3
TRUSTLET_KEYFILE := ./key.xml
TRUSTLET_FLAGS := 0
TRUSTLET_INSTANCES := 1
TRUSTLET_NO_OF_THREADS := 1
TRUSTLET_MEMTYPE := 2

TRUSTLET_OPTS += \
    -DUSE_MOBICORE \
    -D$(shell echo $(TARGET_SOC) | tr [a-z] [A-Z])

ifeq ($(TARGET_BUILD_VARIANT),eng)
    TRUSTLET_OPTS += -D__DEBUG__
endif

ifneq ($(filter exynos9810 mt6768, $(TA_TARGET_SOC)), )
    TRUSTLET_OPTS += \
        -DUSE_TOOLCHAIN_GNU \
        -DUSE_64BIT_ADDR

    HEAP_SIZE_INIT := 1024*1025
    HEAP_SIZE_MAX := 1024*1025
endif

ifneq ($(filter exynos9810, $(TA_TARGET_SOC)), )
    TRUSTLET_OPTS += -DUSE_WFD_TS_MUX_HW
endif

ifneq ($(filter mt6768, $(TA_TARGET_SOC)), )
    TRUSTLET_OPTS += -DUSE_MTK
endif

ifeq ($(TARGET_BUILD_VARIANT),eng)
    MODE := Debug
else
    MODE := Release
endif

# tbase default is 11
ifneq ($(filter exynos9810, $(TA_TARGET_SOC)), )
    TBASE_API_LEVEL := 8
endif

#-------------------------------------------------------------------------------
# Files and include paths - Add your files here
#-------------------------------------------------------------------------------

### Add include path here
INCLUDE_DIRS += \
    $(TRUSTLET_DIR) \
    $(TRUSTLET_DIR)/src/public \
    $(SECDRIVER_DIR) \
    $(TLSDK_DIR_SRC)/Public \
    $(TLSDK_DIR_SRC)/Public/MobiCore/inc \
    $(TLSDK_DIR_SRC)/Public/MobiCore/inc/TlApi \

### Add source code files for C++ compiler here
SRC_CPP += \
    $(TRUSTLET_DIR)/src/tz_hdcp2.c \
    $(TRUSTLET_DIR)/src/tz_hdcp2_key.c \
    $(TRUSTLET_DIR)/src/tz_hdcp2_crypto.c \
    $(TRUSTLET_DIR)/src/tz_hdcp2_receiver.c \
    $(TRUSTLET_DIR)/src/tz_hdcp2_transmitter.c \

SCRYPTO_LIB := $(TZ_SCRYPTO_LIB32)

### Add source code files for C compiler here
SRC_C += # nothing

### Add source code files for assembler here
SRC_S += # nothing

### Add library files for linker here
CUSTOMER_DRIVER_LIBS += \
    $(SCRYPTO_LIB) \
    $(SECDRIVER_DIR)/secdrv_keyman.lib \

### Add S.LSI & MTK drv
CUSTOMER_DRIVER_LIBS += \
    $(SECDRIVER_DIR)/secdrv.lib \
    $(SECDRIVER_DIR)/fcdrv.lib

ifneq ($(filter mt6768, $(TA_TARGET_SOC)), )
    CUSTOMER_DRIVER_LIBS += \
        $(KINIBI_TA_BUILD_ROOT)/../../../../mediatek/proprietary/trustzone/common/hal/secure_lib/drutils_api.trustonic/$(TA_TARGET_SOC)/arm/drutils_api.trustonic.lib \
        $(KINIBI_TA_BUILD_ROOT)/../../../../mediatek/proprietary/trustzone/trustonic/secure_lib/trustlets/$(TA_TARGET_SOC)/msee_fwk/common/ta/Release/msee_fwk_ta.lib \
        $(KINIBI_TA_BUILD_ROOT)/../../../../mediatek/proprietary/trustzone/trustonic/secure_lib/trustlets/$(TA_TARGET_SOC)/msee_fwk/common/drv/Release/msee_fwk_drv.lib \
        $(KINIBI_TA_BUILD_ROOT)/kinibi_source/HDCP_DRV/Out/Bin/${MODE}/hdcpdrv.lib \
        $(SECDRIVER_DIR)/DrAtfGetOemFlag.lib
endif

# relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
# drutils_api.lib: error adding symbols: Bad value
ifneq ($(filter mt6768, $(TA_TARGET_SOC)), )
    TA_PIE := NON_PIE
endif

### Setup configure for signing
ifneq ($(filter mt6768, $(TA_TARGET_SOC)), )
    RUNTYPE := gd_mobicore410_trustlet
else
    RUNTYPE := gd_mobicore400_trustlet
endif

TRUSTLET_SIGN_CONF := "-s 3 -n 1 -i 1 -m 2 -f 8 -mh 303104"

#-------------------------------------------------------------------------------
# use generic make file
include $(TLSDK_DIR_SRC)/trustlet.mk

