include ../../build/teegris_config.mk
TARGET_TA_NAME    = 00000000-0000-0000-0000-000048444350
OUT_DIR           = $(CURRENT_PATH)/dist/obj
OS_TYPE           = android
USE_SCRYPTO       = FALSE
CONFIG_SW_SYSROOT = $(PLATFORM_ROOT)/swd/arch-arm
CONFIG_CC_SW      = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86/bin/arm*-secureos-gnueabi-gcc
CONFIG_STRIP_SW   = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86/bin/arm*-secureos-gnueabi-strip
CONFIG_MODEL_NAME = 

UNSIGNED_TA := $(OUT_DIR)/unsigned_TA
STRIPPED_TA := $(OUT_DIR)/stripped_TA
SIGNED_TA   := $(OUT_DIR)/$(TARGET_TA_NAME)

TRUSTLET_DIR = .
CONFIG_LDFLAGS_SW = 

$(info [hdcp2] Used TEEGRIS ver $(TEEGRIS_PLATFORM_VERSION_MAJOR))
$(info [hdcp2] TEEGRIS_BUILD_MODEL = $(TEEGRIS_BUILD_MODEL))

ifneq ($(filter $(TEEGRIS_BUILD_MODEL), s5e9925 s5e8825),)
TG_64BIT_ADDR=true
endif

ifneq ($(filter $(TEEGRIS_PLATFORM_VERSION_MAJOR), 3 4),)
	CFLAGS += -DTEEGRIS_SDK_VER=$(TEEGRIS_PLATFORM_VERSION_MAJOR)
	ifneq ($(filter $(TEEGRIS_PLATFORM_VERSION_MAJOR), 3),)
		CFLAGS += -DTEEGRIS_V3
	else
		CFLAGS += -DTEEGRIS_V4
	endif
	CONFIG_SIGN_TYPE = ss_teegris_ta

	ifneq ($(filter $(TEEGRIS_BUILD_MODEL), exynos9820 exynos9830 exynos2100 s5e9925 exynos3830),)
		CFLAGS += -DUSE_SET_DRM_FLAG
	endif

	ifeq ($(TG_64BIT_ADDR),true)
		CFLAGS += -DCONFIG_HDCP_64BIT
	endif

	ifneq ($(filter $(TEEGRIS_BUILD_MODEL), exynos9820 exynos9610 exynos9611 exynos9630 exynos9830 exynos3830 exynos9810 exynos7904 exynos2100 s5e9925 s5e8825 MT6853 MT6769T MT6877 MT6833),)
		ifeq ($(CONFIG_MODEL_NAME),)
			CONFIG_MODEL_NAME = TEEGRIS_$(shell echo $(TEEGRIS_BUILD_MODEL) | tr [a-z] [A-Z])_SAMSUNG_DRV
		endif
	endif
else
	CFLAGS += -DTEEGRIS_SDK_VER=2
	CONFIG_SIGN_TYPE = ss_bf_ta
	CONFIG_MODEL_NAME = BF_SAMSUNG_DRV
endif

CFLAGS += \
	-Wno-unused \
	-D_FORTIFY_SOURCE=2

ifeq ($(TG_64BIT_ADDR),true)
	CONFIG_CC_SW = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/aarch64-secureos-gnueabi-gcc_6_3-linux-x86/bin/aarch64-secureos-gnueabi-gcc
	CONFIG_STRIP_SW = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/aarch64-secureos-gnueabi-gcc_6_3-linux-x86/bin/aarch64-secureos-gnueabi-strip
endif

ifeq ($(USE_MTK),true)
	CFLAGS += -DUSE_MTK
	CONFIG_LDFLAGS_SW += -lpthread

	INCLUDE_DIRS += \
		-I../../../../../../mediatek/proprietary/trustzone/common/hal/source/trustlets/secmem/common/drv_api_inc
	LIB_DIRS += \
		-L$(TRUSTLET_DIR)/MTK/libs/$(TA_TARGET_SOC)
	LIBS += \
		-l:drutils_api.teegris.lib \
		-l:msee_fwk_ta.lib
#	LIBS += \
#		-l:$(ANDROID_STATIC_LIBRARIES_OUT_DIR)/drutils_api_intermediates/drutils_api.teegris.lib
#		-l:$(MSEE_FWK_TA_OUT_DIR)/$(TEE_MODE)/msee_fwk_ta.lib
else
	CFLAGS += -DUSE_EXYNOS
endif

ifeq ($(TARGET_BUILD_VARIANT),eng)
	CFLAGS += -DDEBUG
else
	CFLAGS += -s
endif

ifneq (,$(filter $(strip $(TEEGRIS_BUILD_MODEL)), exynos9820 exynos9830 exynos9810 exynos2100 s5e9925 s5e8825))
	CFLAGS += -DUSE_WFD_TS_MUX_HW
endif

INCLUDE_DIRS += -I$(CONFIG_SW_SYSROOT)/usr/include
LIBS += -l:libscrypto.so
LIB_DIRS += -L$(CONFIG_SW_SYSROOT)/usr/lib

$(info PLATFORM_ROOT=$(PLATFORM_ROOT))
$(info CONFIG_SW_TOOLCHAIN_ROOT=$(CONFIG_SW_TOOLCHAIN_ROOT))
$(info OUT_DIR=$(OUT_DIR))
$(info CONFIG_SW_SYSROOT=$(CONFIG_SW_SYSROOT))

SRC += \
	$(TRUSTLET_DIR)/tz_hdcp2.c \
	$(TRUSTLET_DIR)/tz_hdcp2_crypto.c \
	$(TRUSTLET_DIR)/tz_hdcp2_key_WRAPAPI.c \
	$(TRUSTLET_DIR)/tz_hdcp2_transmitter.c \
	$(TRUSTLET_DIR)/tz_hdcp2_receiver.c \
	$(TRUSTLET_DIR)/tz_hdcp2_decode_key.c

OBJS := $(patsubst %.c,%.o,$(SRC))

# Prepare Includes
ifeq ($(TEEGRIS_TA_DIST_PATH),)
	TEEGRIS_TA_DIST_PATH := dist
endif

.PHONY:all
all : info_ta make_dist $(STRIPPED_TA) $(SIGNED_TA) copy_dist build_done

.PHONY: build_done
build_done: make_dist $(SIGNED_TA) copy_dist
	$(info Build Done.)

$(STRIPPED_TA): $(UNSIGNED_TA) make_dist
	@$(CONFIG_STRIP_SW) $(STRIP_FLAGS_SW) $(UNSIGNED_TA) -o $(STRIPPED_TA)

$(SIGNED_TA): $(STRIPPED_TA) make_dist $(test_TA_with_keys)
	@$(signing_command)

$(UNSIGNED_TA): $(OBJS)
	@$(CONFIG_CC_SW) $(CFLAGS) $(CONFIG_LDFLAGS_SW) -o $(UNSIGNED_TA) $(OBJS) $(USER_OBJS) $(LIBS) $(INCLUDE_DIRS) $(LIB_DIRS)

%.o: %.c
	@echo Compiling: $@
	@$(CONFIG_CC_SW) -c -o $*.o $(CFLAGS) $(INCLUDE_DIRS) $<

.PHONY: make_dist
make_dist:
	@$(MKDIR) $(OUT_DIR)

.PHONY: copy_dist
copy_dist: make_dist $(SIGNED_TA)
	@echo Copy $(SIGNED_TA) $(TEEGRIS_TA_DIST_PATH)
	@$(CP) $(SIGNED_TA) $(TEEGRIS_TA_DIST_PATH)

.PHONY: info_ta
info_ta:
	$(info [hdcp2] Building TA: $(TARGET_TA_NAME) ; $(CFLAGS))

.PHONY: clean
clean:
	@$(RM) $(OUT_DIR)
	@$(RM) $(DIST_DIR)
	@echo 'Clean Done.'
