################################################################################
#
# tigerfp Trusted Application
#
################################################################################

#TA_HOME := $(PWD)
TA_HOME := ${TRUSTED_APP_DIR}

$(info  ++++ TA_HOME = ${TA_HOME} ++++)

# output binary name without path or extension
OUTPUT_NAME := tigerfp
TA_UUID_LOWER_CASE := Y

#-------------------------------------------------------------------------------
# MobiConvert parameters, see manual for details
#-------------------------------------------------------------------------------
#CROSS_GCC_PATH_BIN := ${CROSS_GCC_PATH}/bin/arm-eabi-

TA_SERVICE_TYPE := SYS

ifneq ($(BUILD_MODE),)
TA_DEBUGGABLE := Y
endif

ifneq ($(TIGERFP_TOOLCHAIN),)
TOOLCHAIN := $(TIGERFP_TOOLCHAIN)
endif

ifneq ($(TIGERFP_PLATFORM),)
PLATFORM := $(TIGERFP_PLATFORM)
endif

ifneq ($(TIGERFP_RUNTYPE),)
RUNTYPE := $(TIGERFP_RUNTYPE)
endif

ifneq ($(TIGERFP_BUILD_MODE),)
MODE := $(TIGERFP_BUILD_MODE)
endif

ifneq ($(TIGERFP_UUID),)
TRUSTLET_UUID := $(TIGERFP_UUID)
endif

ifneq ($(TIGERFP_SIGN_CONF),)
TRUSTLET_SIGN_CONF := "$(TIGERFP_SIGN_CONF)"
endif

ifeq ($(TOOLCHAIN),GNU)
    #TA_OPTS += -Werror
ifeq ($(CROSS_GCC_PATH),)
$(error CROSS_GCC_PATH is not defined)
endif ## CROSS_GCC_PATH
endif
ifeq ($(TOOLCHAIN),ARM)
   TA_OPTS += --diag_error=warning
endif

#-------------------------------------------------------------------------------
# Mobiconvert Config
#-------------------------------------------------------------------------------
TRUSTLET_FLAGS := 8
HEAP_SIZE_INIT ?= $(TIGERFP_INIT_HEAP_SIZE)
HEAP_SIZE_MAX ?= $(TIGERFP_MAX_HEAP_SIZE)


#-------------------------------------------------------------------------------
# CFLAGS
#-------------------------------------------------------------------------------
TIGER_CFLAGS := -DTIGER_TZ_MODEL_Kinibi -DTZ_MODEL_Kinibi -D__TA_LOG_TAG__=\"TIGER\"

#-------------------------------------------------------------------------------
# Feature Macros
TIGER_CFLAGS += \
    -DCONFIG_SRPMB \

#-----------------------Wall----------------------------------------------------
TIGER_CFLAGS +=  \
    -Wno-format-extra-args  \
    -Wno-unused-variable    \
    -Wno-unused-value       \
    -Wno-unused-parameter   \
    -Wno-sign-compare       \
    -Wno-format-truncation  \

TIGER_CFLAGS +=                                     \
    -D__CHIPSET__=\"$(TIGER_CHIPSET_NAME)\"               \
    -D__COMMIT_SHA1__=\"${COMMIT_SHA1}\"            \
    -D__USER__=\"$(USER)\"                          \
    -U__DEV_DEBUG__                                 \

ifeq ($(BUILD_DEBUG),1)
TIGER_CFLAGS +=       \
    -UTA_RELEASE      \
    -UTIGER_RELEASE   \

else
TIGER_CFLAGS +=       \
    -DTA_RELEASE      \
    -DTIGER_RELEASE   \

endif

TIGER_CFLAGS += -U__DEV_DEBUG__
TIGER_CFLAGS += -U__SSKDS_DEBUG__
# TIGER_CFLAGS += -D__BYPASS_BIO_AUTH__

TA_CC_OPTS += ${TIGER_CFLAGS}

#-------------------------------------------------------------------------------
# Files and include paths - Add your files here
#-------------------------------------------------------------------------------

### Add include path here
INCLUDE_DIRS += \
    $(TA_HOME)/inc                      \
    $(TA_HOME)/src                      \
    $(TA_HOME)/src/tzWrappers           \

### Add source code files for C++ compiler here
SRC_CPP += # nothing

### Add source code files for C compiler here
SRC_C += \
    $(TA_HOME)/src/TigerTci.c                           \
    $(TA_HOME)/src/TigerTypeObjectId.c                  \
    $(TA_HOME)/src/TigerSession.c                       \
    $(TA_HOME)/src/TigerMainKinibi.c                    \
    $(TA_HOME)/src/TigerAttk.c                          \
    $(TA_HOME)/src/TigerLogging.c                       \
    $(TA_HOME)/src/TigerCore.c                          \
    $(TA_HOME)/src/TigerSignMessage.c                   \
    $(TA_HOME)/src/TigerMbedTlsExt.c                    \
    $(TA_HOME)/src/TigerMbedTlsHooks.c                  \
    $(TA_HOME)/src/TigerStorageUtils.c                  \
    $(TA_HOME)/src/TigerPemUtils.c                      \
    $(TA_HOME)/src/TigerKeyDataStore.c                  \
    $(TA_HOME)/src/TigerCounterDataStore.c              \
    $(TA_HOME)/src/TigerSskds.c                         \
    $(TA_HOME)/src/TigerTypeDynamicBuf.c                \
    $(TA_HOME)/src/TigerVersion.c                       \
    $(TA_HOME)/src/TigerDeviceConfig.c                  \
    $(TA_HOME)/src/TigerJson.c                          \
    $(TA_HOME)/src/TigerFingerprintIdTable.c            \
    $(TA_HOME)/src/TigerUtils.c                         \
    $(TA_HOME)/src/ta_logger.c                          \
    $(TA_HOME)/src/ta_banner_print.c                    \
    $(TA_HOME)/src/tzWrappers/TzwString.c               \
    $(TA_HOME)/src/tzWrappers/TzwRpmb.c                 \
    $(TA_HOME)/src/tzWrappers/TzwMemory.c               \
    $(TA_HOME)/src/tzWrappers/TzwHash.c                 \
    $(TA_HOME)/src/tzWrappers/TzwMisc.c                 \
    $(TA_HOME)/src/tzWrappers/TzwStorage.c              \
    $(TA_HOME)/src/tzWrappers/TzwAuth.c                 \
    $(TA_HOME)/src/tzWrappers/TzwSerialNumber.c         \
    $(TA_HOME)/src/tzWrappers/TzwTimer.c                \
    $(TA_HOME)/src/mbedtls/asn1parse.c                  \
    $(TA_HOME)/src/mbedtls/asn1write.c                  \
    $(TA_HOME)/src/mbedtls/base64.c                     \
    $(TA_HOME)/src/mbedtls/bignum.c                     \
    $(TA_HOME)/src/mbedtls/ecp.c                        \
    $(TA_HOME)/src/mbedtls/ecp_curves.c                 \
    $(TA_HOME)/src/mbedtls/error.c                      \
    $(TA_HOME)/src/mbedtls/md.c                         \
    $(TA_HOME)/src/mbedtls/md5.c                        \
    $(TA_HOME)/src/mbedtls/md_wrap.c                    \
    $(TA_HOME)/src/mbedtls/oid.c                        \
    $(TA_HOME)/src/mbedtls/pem.c                        \
    $(TA_HOME)/src/mbedtls/pk.c                         \
    $(TA_HOME)/src/mbedtls/pkparse.c                    \
    $(TA_HOME)/src/mbedtls/pk_wrap.c                    \
    $(TA_HOME)/src/mbedtls/pkwrite.c                    \
    $(TA_HOME)/src/mbedtls/platform.c                   \
    $(TA_HOME)/src/mbedtls/rsa.c                        \
    $(TA_HOME)/src/mbedtls/sha1.c                       \
    $(TA_HOME)/src/mbedtls/sha256.c                     \
    $(TA_HOME)/src/mbedtls/sha512.c                     \

ifeq ($(USE_TESTBED),YES)
SRC_C += \
    $(TA_HOME)/src/testbed/ProcCommand.c  \

INCLUDE_DIRS += \
    $(TA_HOME)/src/testbed    \

TESTBED_CFLAGS += -D__USE_TESTBED__

else
TESTBED_CFLAGS += -U__USE_TESTBED__
endif

TA_CC_OPTS += $(TESTBED_CFLAGS)


### Add source code files for assembler here
SRC_S += # nothing

#-------------------------------------------------------------------------------
# CC options put here
#TA_CC_OPTS := -v

#-------------------------------------------------------------------------------
# User defined Macros - Put here
#-------------------------------------------------------------------------------

ifeq ($(CHIPNAME), MT6768)
TA_PIE := NON_PIE

TA_CC_OPTS += \
   -D__USE_MT6768__=1
endif

#-------------------------------------------------------------------------------
# use generic make file
TRUSTED_APP_DIR ?= ${TA_HOME}
CC_OPTS_LIB_SPECIFIC += \
    -v \

STD_LIBS += -lc -lgcc -lnosys

LOCAL_STATIC_LIBS += \
    $(wildcard ${TA_HOME}/libraries/BioAuth/${TIGER_CHIPSET_NAME}/*.lib)

LOCAL_STATIC_LIBS += \
    $(wildcard ${TA_HOME}/libraries/LibSecDrv/${TIGER_CHIPSET_NAME}/*.lib)

CUSTOMER_DRIVER_LIBS += ${LOCAL_STATIC_LIBS}

TASDK_DIR ?= ${COMP_PATH_TlSdk}
include $(TLSDK_DIR_SRC)/trusted_application.mk

