############################################################################################################################################
#                                                                                                                                          #
# This file contains global environment variables for PROCA. Please set the according to                                                   #
# your environment and project settings. It used in QuickBuild for build and integrate PROCA TA into firmware. It defines:                 #
#                                                                                                                                          #
# 1) Target platform (refer to teamcity_defconfig.mk for details). For example:                                                            #
# CONFIG_TEEGRIS_EXYNOS7570_SDK_PATH := /opt/Blowfish_SDK/Teegris-SDK_2018-10-30/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86         #
#                                                                                                                                          #
# 2) Targets to build and integrate PROCA TA:                                                                                              #
# deliver_proca, deliver_signed, deliver_unsigned                                                                                          #
#                                                                                                                                          #
# Used variables, defined by QuickBuild/extarnally:                                                                                        #
# QB_COMMAND_EXECUTOR_SESSION, SEC_RIL_CHIPNAME                                                                                            #
# (Teegris only) TEEGRIS_TA_DIST_PATH, TOP                                                                                                 #
# (QSee only)    QSEE_TA_BASE_PATH, SSROOT                                                                                                 #
# (TBase only)   TBASE_TA_DIST_PATH, TBASE_SDK_PATH                                                                                        #
#    TODO: TBase is still under development                                                                                                #
#          select minimal set of external variables                                                                                        #
# Used variables, defined by PROCA/Multibuild:                                                                                             #
# _local_output   path to signed trustlet                                                                                                  #
# _local_input    path to unsigned trustlet                                                                                                #
# _local_build_id (QSee only)                                                                                                              #
############################################################################################################################################

# This variable not used, but expected to be defined
CONFIG_ANDROID_NDK_PATH := JustDefineSomething

ifndef QB_COMMAND_EXECUTOR_SESSION
  $(error This makefile may be used only in QuickBuild)
endif

# Only releases are built at QuickBuild
Release := yes

ifeq ($(SEC_RIL_CHIPNAME),)
  $(error SEC_RIL_CHIPNAME undefined)
endif

SEC_RIL_CHIPNAME_UPPER:=$(shell echo $(SEC_RIL_CHIPNAME) | tr a-z A-Z)

ifneq ($(TEEGRIS_TA_DIST_PATH),)
  ifeq ($(lastword $(SEC_RIL_CHIPNAME)), $(filter exynos7570 exynos7870 exynos7885 exynos7904 exynos9610 exynos9820 exynos9830 exynos9630, $(SEC_RIL_CHIPNAME)))
    CONFIG_TEEGRIS_$(SEC_RIL_CHIPNAME_UPPER)_SDK_PATH := $(TOP)/bootable/bootloader/secureOS/build/teegris_sdk/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86
    TA_DESTINATION_DIR:=$(TEEGRIS_TA_DIST_PATH)
    DELIVER_PROCA:=deliver_signed
  else
    $(error Unsupported chip $(SEC_RIL_CHIPNAME) for platform TEEGRIS)
  endif
else ifneq ($(QSEE_TA_BASE_PATH),)
  ifeq ($(lastword $(SEC_RIL_CHIPNAME)), $(filter sm8250 sm8250_32, $(SEC_RIL_CHIPNAME)))
    CONFIG_QSEE_$(SEC_RIL_CHIPNAME_UPPER)_SDK_PATH := $(SSROOT)/nhlos
    TA_BASE_DIR:=$(QSEE_TA_BASE_PATH)
    DELIVER_PROCA:=deliver_unsigned
  else
    $(error Unsupported chip $(SEC_RIL_CHIPNAME) for platform QSEE)
  endif
else ifneq ($(TBASE_TA_DIST_PATH),)
  ifeq ($(lastword $(SEC_RIL_CHIPNAME)), $(filter exynos9810 exynos7885 exynos7870 exynos7570, $(SEC_RIL_CHIPNAME)))
    CONFIG_TBASE_$(SEC_RIL_CHIPNAME_UPPER)_SDK_PATH := $(TBASE_SDK_PATH)
    TA_DESTINATION_DIR:=$(TBASE_TA_DIST_PATH)
    DELIVER_PROCA:=deliver_signed
  else
    $(error Unsupported chip $(SEC_RIL_CHIPNAME) for platform TBASE)
  endif
else
  $(error Cannot identify platform)
endif

.PHONY: deliver_proca
deliver_proca: $(DELIVER_PROCA)

# Used for Teegris and TBase
.PHONY: deliver_signed
deliver_signed: proca-sign $(_local_output)
	@echo Copy $(_local_output) $(TA_DESTINATION_DIR)
	cp -f $(_local_output) $(TA_DESTINATION_DIR)

### Used for QSee
.PHONY: deliver_unsigned
deliver_unsigned: proca $(_local_input)
	@echo Copy $(_local_input) $(TA_BASE_DIR)/bin/$(_local_build_id)/unsigned
	cp -f $(_local_input) $(TA_BASE_DIR)/bin/$(_local_build_id)/unsigned
