################################################################################
#
# ifbio Trusted Application
#
################################################################################

#TA_HOME := $(PWD)
TA_HOME := ${TRUSTED_APP_DIR}

$(info  ++++ TA_HOME = ${TA_HOME} ++++)
# output binary name without path or extension
OUTPUT_NAME := ifbio
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 ($(IFBIO_TOOLCHAIN),)
TOOLCHAIN := $(IFBIO_TOOLCHAIN)
endif

ifneq ($(IFBIO_PLATFORM),)
PLATFORM := $(IFBIO_PLATFORM)
endif

ifneq ($(IFBIO_RUNTYPE),)
RUNTYPE := $(IFBIO_RUNTYPE)
endif

ifneq ($(IFBIO_BUILD_MODE),)
MODE := $(IFBIO_BUILD_MODE)
endif

ifneq ($(IFBIO_UUID),)
TRUSTLET_UUID := $(IFBIO_UUID)
endif

ifneq ($(IFBIO_SIGN_CONF),)
TRUSTLET_SIGN_CONF := "$(IFBIO_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 ?= $(IFBIO_INIT_HEAP_SIZE)
HEAP_SIZE_MAX ?= $(IFBIO_MAX_HEAP_SIZE)

#-------------------------------------------------------------------------------
# CFLAGS
#-------------------------------------------------------------------------------
IFBIO_CFLAGS := -DIFBIO_TZ_MODEL_Kinibi -DTZ_MODEL_Kinibi -D__TA_LOG_TAG__=\"IFBIO\"

#-----------------------Wall----------------------------------------------------
IFBIO_CFLAGS += \
    -Wno-format-extra-args  \
    -Wno-unused-variable    \
    -Wno-unused-value       \
    -Wno-unused-parameter   \
    -Wno-sign-compare       \
    -Wno-format-truncation  \

IFBIO_CFLAGS +=                                     \
    -D__CHIPSET__=\"$(CHIPSET_NAME)\"                   \
    -D__COMMIT_SHA1__=\"${COMMIT_SHA1}\"            \
    -D__USER__=\"$(USER)\"                          \
    -U__DEV_DEBUG__                                 \
    # -D__BYPASS_BIO_AUTH__                         \

ifeq ($(BUILD_DEBUG),1)
IFBIO_CFLAGS +=       \
    -UTA_RELEASE      \
    -UIFBIO_RELEASE   \
    -D__IFAA_TEST_MODE \

else
IFBIO_CFLAGS +=       \
    -DTA_RELEASE      \
    -DIFBIO_RELEASE   \
    -U__IFAA_TEST_MODE \

endif

IFBIO_CFLAGS +=       \
    -Iinc             \
    -Isrc/tzWrappers  \


ifdef IFBIO_TA_VERSION_NAME
VERSION_NAME = $(shell echo $(IFBIO_TA_VERSION_NAME) | tr A-Z a-z)
IFBIO_CFLAGS += -D__IFBIO_TA_VERSION_NAME__=\"$(VERSION_NAME)\"
else
IFBIO_CFLAGS += -D__IFBIO_TA_VERSION_NAME__=\"v1\"
endif

TA_CC_OPTS += ${IFBIO_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/ifaa_kinibi_main.c               \
    $(TA_HOME)/src/gp_oem.c                         \
    $(TA_HOME)/src/ifaa_device_config.c             \
    $(TA_HOME)/src/ifaa_fingerprint_id_table.c      \
    $(TA_HOME)/src/ifaa_mem_utils.c                 \
    $(TA_HOME)/src/ifaa_ta_biz.c                    \
    $(TA_HOME)/src/ifaa_ta_common.c                 \
    $(TA_HOME)/src/ifaa_ta_impl.c                   \
    $(TA_HOME)/src/ifaa_ta_vendor.c                 \
    $(TA_HOME)/src/ifaa_tlv_parser.c                \
    $(TA_HOME)/src/ifaa_stub_func.c                 \
    $(TA_HOME)/src/ta_banner_print.c                \
    $(TA_HOME)/src/ta_logger.c                      \
    $(TA_HOME)/src/tzWrappers/TzwAuth.c             \
    $(TA_HOME)/src/tzWrappers/TzwMemory.c           \
    $(TA_HOME)/src/tzWrappers/TzwSerialNumber.c     \
    $(TA_HOME)/src/tzWrappers/TzwString.c           \
    $(TA_HOME)/src/tzWrappers/TzwStorage.c          \
    $(TA_HOME)/src/tzWrappers/TzwTimer.c            \

#-------------------------------------------------------------------------------
# dependency for library specified - Add your files here
#-------------------------------------------------------------------------------
IFAA_KM_VER=v1.2
#ifeq ($(BUILD_DEBUG),1)
#LIB_IFAA_KM:=libifaakm_$(IFAA_KM_VER)_debug
#else
LIB_IFAA_KM:=libifaakm_$(IFAA_KM_VER)_release
#endif

LOCAL_STATIC_LIBRARIES := \
    $(LIB_IFAA_KM).a    \

#-------------------------------------------------------------------------------
# User defined Macros - Put here
#-------------------------------------------------------------------------------

ifeq ($(CHIPNAME), MT6768)
    TA_PIE := NON_PIE
endif

#-------------------------------------------------------------------------------
# use generic make file
TRUSTED_APP_DIR ?= ${TA_HOME}
CC_OPTS_LIB_SPECIFIC += \
    -v \

STD_LIBS += -lc -lgcc -lnosys

LOCAL_STATIC_LIBS := \
    ${TA_HOME}/libraries/LibIfaaKm/${CHIPSET_NAME}/${LOCAL_STATIC_LIBRARIES}

LOCAL_STATIC_LIBS += \
    $(wildcard ${TA_HOME}/libraries/BioAuth/${CHIPSET_NAME}/*.lib)

LOCAL_STATIC_LIBS += \
    $(wildcard ${TA_HOME}/libraries/LibSecDrv/${CHIPSET_NAME}/*.lib)

CUSTOMER_DRIVER_LIBS += ${LOCAL_STATIC_LIBS}

TASDK_DIR ?= ${COMP_PATH_TlSdk}

include $(TLSDK_DIR_SRC)/trusted_application.mk
