#include ../../BUILD/TEEGRIS/teegris_config.mk
include gatekeeper.version
CONFIG_GATEKEEPER_VERSION = ${TEEGRIS_GATEKEEPER_VERSION_MAJOR}.${TEEGRIS_GATEKEEPER_VERSION_MINOR}
CONFIG_ANDROID_VERSION = 11 
## efs or data
CONFIG_TRUSTED_STORAGE = efs

$(info $(shell pwd))
include $(GK_TEEGRIS_CONFIG)
## Path to root directory of android ndk
TARGET_TA_NAME = 00000000-0000-0000-0000-474154454b45

MKDIR := -mkdir -p
RM := rm -rf
CP := cp -f


SRC_TA := \
	swd/src/teegris/gatekeeper_ta.c \
	swd/src/teegris/gatekeeper_hal.c \
	swd/src/gatekeeper_common.c \
	swd/src/gatekeeper_records.c

SRC_CA := nwd/src/gatekeeper_teegris.c

CONFIG_CFLAGS_SW += \
	-DGATEKEEPER_VERSION=$(CONFIG_GATEKEEPER_VERSION) \
	-DANDROID_VERSION=$(CONFIG_ANDROID_VERSION) \
	-I android/include \
	-I common/include \
	-I swd/include \
	-Wno-error=deprecated-declarations

ifeq ($(CONFIG_TRUSTED_STORAGE),efs)
CONFIG_CFLAGS_SW += \
	-DUSE_EFS_STORAGE
endif

ifneq ($(filter a22x% m32x% f42x%, $(TARGET_PRODUCT)),)
CONFIG_CFLAGS_SW += \
	-DWINGTECH
endif

ifneq ($(filter gta7lite% a03s%, $(TARGET_PRODUCT)),)
CONFIG_CFLAGS_SW += \
	-DHUAQIN
endif

# for PROCA
ifeq ($(TEEGRIS_VERSION),4)
ifneq ($(filter , $(TARGET_SOC)),)
ifeq ($(GK_PROCA_ENABLE),TRUE)
CONFIG_CFLAGS_SW += \
	-DPROCA \
	-I$(TZ_PROCA_HEADER_PATH)
CONFIG_LIB_SW += \
	-L$(TZ_PROCA_LIB_PATH)
ifeq ($(CONFIG_TA_ARCH),32)
CONFIG_LIB_SW += -l:./armeabi-v7a/pa_tz_api.a
else
CONFIG_LIB_SW += -l:./arm64-v8a/pa_tz_api.a
endif
endif
endif
endif

$(info GK_SIG_WITH_UID=$(GK_SIG_WITH_UID))
ifeq ($(GK_SIG_WITH_UID),TRUE)
CONFIG_CFLAGS_SW += \
	-DSIG_WITH_UID
endif

CONFIG_LDFLAGS_SW += \
	-Wl,-z,relro,-z,now

OBJ_DIR := $(TEEGRIS_TA_BUILD_ROOT)/teegris_source/gatekeeper/dist/obj
DIST_DIR := $(TEEGRIS_TA_BUILD_ROOT)/teegris_source/gatekeeper/dist

TA := $(OBJ_DIR)/unsigned_TA
STRIPPED_TA := $(OBJ_DIR)/stripped_TA
SIGNED_TA = $(DIST_DIR)/$(TARGET_TA_NAME)
SIGNED_TAs = $(CONFIG_MODEL_NAME)
test_TA_with_keys := $(TAGET_TA_NAME)

.PHONY: all
all: $(STRIPPED_TA) $(SIGNED_TA) build_done

.PHONY: ta
ta: $(SIGNED_TA)

.PHONY: ta_without_sign
ta_without_sign: $(TA)


.PHONY: build_done
build_done: make_dist $(SIGNED_TA)
	@$(CP) $(SIGNED_TA) $(TEEGRIS_TA_DIST_PATH)
	@echo 'Copy $(SIGNED_TA) $(TEEGRIS_TA_DIST_PATH)'
	@echo 'Build Done.'

.PHONY: info_ta
info_ta:
	@echo 'Building TA: $(TARGET_TA_NAME)'

.PHONY: info_ca
info_ca:
	@echo 'Building CA: $(TARGET_CA_NAME)'

.PHONY: clean
clean:
	@$(RM) $(DIST_DIR)
	@echo 'Clean Done.'

.PHONY: make_dist
make_dist:
	@$(MKDIR) $(OBJ_DIR)

$(STRIPPED_TA): $(TA)
	@echo 'Stripped TA'
	@$(CONFIG_STRIP_SW) $(STRIP_FLAGS_SW) $(TA) -o $(STRIPPED_TA)

$(SIGNED_TA): $(STRIPPED_TA)
	@$(MKDIR) $(DIST_DIR)/$@
	@echo 'Signing cmd : $(signing_command_drv)'
	$(signing_command_drv)

$(TA): info_ta | make_dist
	@echo 'compile TA'
	$(CONFIG_CC_SW) $(CONFIG_CFLAGS_SW) $(CONFIG_LDFLAGS_SW) -o $@ $(SRC_TA) $(CONFIG_LIB_SW)

