################################################################################
#
# TEEGRIS Makefile Template
#
################################################################################

PWD := $(shell pwd)

ifeq ($(SEC_SDK), sdk4_1)
TOOLCHAIN_PATH=$(PWD)/../teegris_sdk_4/tools
CFLAGS += -DSEC_SDK4_1

else ifeq ($(SEC_SDK), sdk30)
TOOLCHAIN_PATH=$(PWD)/../teegris_sdk/tools
CFLAGS += -DSEC_SDK30
endif
TA_SIGN_CERT = $(TOOLCHAIN_PATH)/teegris_authority_scripts/ta_auth_dev_ta/cert.pem
TA_SIGN_KEY = $(TOOLCHAIN_PATH)/teegris_authority_scripts/ta_auth_dev_ta/private/key.pem

TA_AUTH_SCRIPTS_PATH := $(TOOLCHAIN_PATH)/teegris_authority_scripts/ta_auth_scripts
SIGN := $(TA_AUTH_SCRIPTS_PATH)/sign_file.sh -c $(TA_SIGN_CERT) -k $(TA_SIGN_KEY)

######################################## BUILD FLAG ########################################

CFLAGS += \
	-std=gnu11 \
	-O2 \
	-fpie \
	-fsigned-char

ifeq ($(USE_BF),true)
CFLAGS += -DUSE_BF
endif

CC  := $(TOOLCHAIN_PATH)/../toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86/bin/arm-secureos-gnueabi-gcc

ifeq ($(_TA_INFO_),)
    CFLAGS += -DTA_INFO=\"bc_tui\"
else
    CFLAGS += -DTA_INFO=\"$(_TA_INFO_)\"
endif


ifeq ($(SEC_PRODUCT), exynos9820)
CFLAGS += -DEXYNOS9820
else 
CFLAGS += -DEXYNOS9830
endif

ifeq ($(ENABLE_DBG_LOG),true)
    CFLAGS += -DENABLE_DBG_LOG
endif

ifeq ($(ENABLE_DEMO),true)
    CFLAGS += -DENABLE_DEMO
endif

ifeq ($(STAGING_ENV),true)
    CFLAGS += -DSTAGING_ENV
endif

CFLAGS += -DSPAY_TUI
CFLAGS += -DTA_INIT_REQUIRED

CFLAGS += -DTA_VERSION=\"$(_VERSION_)\"
CFLAGS += -DENABLE_TA_ERR_MSG
ifeq ($(ICCC_ENABLED),true)
CFLAGS += -DICCC_ENABLED
endif

CFLAGS += -DCOLD_WALLET

ifeq ($(DPI640),true)
CFLAGS += -DDPI640
endif

ifeq ($(DPI480),true)
CFLAGS += -DDPI480
endif

ifeq ($(DPI320),true)
CFLAGS += -DDPI320
endif

ifeq ($(UX3_0),true)
CFLAGS += -DUX3_0
endif

ifeq ($(SUPPORT_IRIS),true)
CFLAGS += -DIRIS_SUPPORTED
endif

ifeq ($(SOFT_KEY_EXIST),true)
CFLAGS += -DSOFT_KEY_EXIST
endif

ifeq ($(NOTCH_EXIST),true)
CFLAGS += -DNOTCH_EXIST
endif

ifeq ($(SUPPORT_SOFTKEY),true)
CFLAGS += -DSUPPORT_SOFTKEY
endif

ifeq ($(SUPPORT_SOFTKEY_PUNCHCUT),true)
CFLAGS += -DSUPPORT_SOFTKEY_PUNCHCUT
endif

ifeq ($(ENHANCED_UI),true)
CFLAGS += -DENHANCED_UI
endif

ifeq ($(SUPPORT_NOTCH_480DPI_H_2340),true)
CFLAGS += -DSUPPORT_NOTCH_480DPI_H_2340
endif

ifeq ($(SUPPORT_NOTCH_320DPI_H_1560),true)
CFLAGS += -DSUPPORT_NOTCH_320DPI_H_1560
endif

######################################## BUILD FLAG ########################################
ifeq ($(SEC_SDK), sdk4_1)
SW_LIB_PATH := $(PWD)/../teegris_sdk_4/platforms/TEEGRIS-4.1/swd/arch-arm/usr/lib
SW_LIB_INCLUDE := $(PWD)/../teegris_sdk_4/platforms/TEEGRIS-4.1/swd/arch-arm/usr/include
else ifeq ($(SEC_SDK), sdk30)
SW_LIB_PATH := $(PWD)/../teegris_sdk/platforms/TEEGRIS-3.0/swd/arch-arm/usr/lib
SW_LIB_INCLUDE := $(PWD)/../teegris_sdk/platforms/TEEGRIS-3.0/swd/arch-arm/usr/include
endif


BC_TUI_SRC = $(PWD)/src
BC_TUI_SRC_CONTROL = $(BC_TUI_SRC)/control
BC_TUI_SRC_PNG = $(BC_TUI_SRC)/png
BC_TUI_SRC_SCREEN = $(BC_TUI_SRC)/screen
BC_TUI_SRC_TOUCH = $(BC_TUI_SRC)/touch
BC_TUI_SRC_MNEMONIC = $(BC_TUI_SRC)/mnemonic
BC_TUI_SRC_SECURE_OBJECT = $(BC_TUI_SRC)/secure_object
BC_TUI_SRC_PINPAD = $(BC_TUI_SRC)/pinpad
BC_TUI_INC = $(PWD)/inc
BC_TUI_MSG = $(PWD)/inc/msgs
BC_TUI_RSRC_INC = $(PWD)/inc/rsrc
BC_TUI_RSRC_INC_720_LAYOUT = $(BC_TUI_RSRC_INC)/tui_bc_resource/resolution_w720_HD/layout_include
BC_TUI_RSRC_INC_720_RESOURCE = $(BC_TUI_RSRC_INC)/tui_bc_resource/resolution_w720_HD/resource_include
BC_TUI_RSRC_INC_1080_LAYOUT = $(BC_TUI_RSRC_INC)/tui_bc_resource/resolution_w1080_FHD/layout_include
BC_TUI_RSRC_INC_1080_RESOURCE = $(BC_TUI_RSRC_INC)/tui_bc_resource/resolution_w1080_FHD/resource_include
BC_TUI_RSRC_INC_1440_LAYOUT = $(BC_TUI_RSRC_INC)/tui_bc_resource/resolution_w1440_WQHD/layout_include
BC_TUI_RSRC_INC_1440_RESOURCE = $(BC_TUI_RSRC_INC)/tui_bc_resource/resolution_w1440_WQHD/resource_include
BC_TUI_OUT = $(PWD)/Out

TZ_SPAY_COMMON_INC = $(PWD)/../tz_spay_common/public
TZ_PLATFORM_INC = $(PWD)/../tz_platform/public/tl
TZ_PLATFORM_VENDOR_INC = $(PWD)/../tz_platform/vendor/TEEGRIS/inc
TIMA_COMMON_INC = $(PWD)/../tima_common/inc
TZ_PLATFORM_ICCC_INC = $(PWD)/../tz_platform/vendor/iccc/inc

CFLAGS += -I. \
    -I$(SW_LIB_INCLUDE) \
    -I$(BC_TUI_INC) \
    -I$(BC_TUI_SRC_CONTROL) \
    -I$(BC_TUI_SRC_PNG) \
    -I$(BC_TUI_SRC_SCREEN) \
    -I$(BC_TUI_SRC_TOUCH) \
	-I$(BC_TUI_SRC_SECURE_OBJECT) \
	-I$(BC_TUI_SRC_PINPAD) \
    -I$(BC_TUI_RSRC_INC) \
    -I$(BC_TUI_RSRC_INC_720_LAYOUT) \
	-I$(BC_TUI_RSRC_INC_720_RESOURCE) \
	-I$(BC_TUI_RSRC_INC_1080_LAYOUT) \
	-I$(BC_TUI_RSRC_INC_1080_RESOURCE) \
	-I$(BC_TUI_RSRC_INC_1440_LAYOUT) \
	-I$(BC_TUI_RSRC_INC_1440_RESOURCE) \
    -I$(BC_TUI_SRC) \
    -I$(BC_TUI_MSG) \
    -I$(TZ_SPAY_COMMON_INC) \
    -I$(TIMA_COMMON_INC) \
    -I$(TZ_PLATFORM_INC) \
    -I$(TZ_PLATFORM_VENDOR_INC) \
    -L$(SW_LIB_PATH) \
    -I$(TZ_PLATFORM_ICCC_INC) \
    -lteesl \
    -ltzsl \
    -ltui \
    -lpthread \
#   -Wall \
    -Werror

SRCS := $(wildcard $(BC_TUI_SRC)/*.c $(BC_TUI_SRC_CONTROL)/*.c $(BC_TUI_SRC_PNG)/*.c $(BC_TUI_SRC_SCREEN)/*.c $(BC_TUI_SRC_TOUCH)/*.c $(BC_TUI_SRC_MNEMONIC)/*.c $(BC_TUI_SRC)/*.cxx $(BC_TUI_SRC_SECURE_OBJECT)/*.c $(BC_TUI_SRC_PINPAD)/*.c)
SRCS += \
    $(BC_TUI_SRC)/../../tz_platform/vendor/TEEGRIS/src/BF_TZ_vendor.c \
    $(BC_TUI_SRC)/../../tz_spay_common/tl/spay_init_tl.c \
    $(BC_TUI_SRC)/../../tz_spay_common/tl/spay_pin_random_util_tl.c \
    $(BC_TUI_SRC)/../../tz_spay_common/tl/spay_authenticate_transaction_tl.c \
    $(BC_TUI_SRC)/../../tz_spay_common/tl/spay_msk_tl.c

OBJS := $(patsubst %.cxx,%.o,$(patsubst %.c,%.o,$(SRCS)))

ifneq ($(filter exynos9830, $(SEC_PRODUCT)), )
    CFLAGS += -DICCC_v4
    CUSTOMER_DRIVER_LIB = $(PWD)/../tz_platform/vendor/iccc/libs/$(SEC_PRODUCT)$(ICCC_ADDITIONAL_DIR)/icccOperations.ol
else     
    ifneq ($(filter exynos7904 exynos7884B, $(SEC_PRODUCT)), )
    CUSTOMER_DRIVER_LIB = $(PWD)/../tz_platform/vendor/iccc/libs/$(SEC_PRODUCT)/icccOperations.ol \
                        $(PWD)/../tz_platform/vendor/iccc/libs/$(SEC_PRODUCT)/tl_tz_iccc_init.ol

    else
    CUSTOMER_DRIVER_LIB = $(PWD)/../tz_platform/vendor/iccc/libs/icccOperations.ol \
                        $(PWD)/../tz_platform/vendor/iccc/libs/tl_tz_iccc_init.ol

    endif
endif
DIST = $(BC_TUI_OUT)/0000000000000000000042434e545549
all: $(DIST)

$(DIST): $(BC_TUI_OUT)/bc_tui \
	$(TA_SIGN_CERT) \
	$(TA_SIGN_KEY)
	@$(SIGN) -a $< $@ $(DIST)
	
$(BC_TUI_OUT)/bc_tui:
	@mkdir -p $(BC_TUI_OUT) 
	@$(CC) $(CFLAGS) $(SRCS) $(CUSTOMER_DRIVER_LIB) -o $@

clean:
	@rm -f $(OBJS) $(DIST) $(BC_TUI_OUT)/bc_tui

