############################################################################################################################################
#                                                                                                                                          #
# 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, TEEGRIS_BUILD_MODEL, (optional)CONFIG_SIGN_CLIENT_ARG                                          #
# (QSee only)    QSEE_TA_BASE_PATH, SSROOT, (optional)QSEE_TA_DST_PATH                                                                     #
# (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

# Workaround for WiFi Market VOC issues on R OS
ifeq ($(TEEGRIS_BUILD_MODEL),exynos9820)
$(info Disable integrity checking on system_server process)
Skip_auth_system_server := yes
endif

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),)
  include ../../build/teegris_config.mk

  TA_DESTINATION_DIR:=$(TEEGRIS_TA_DIST_PATH)
  SECURE_TOOLCHAIN:=GCC

  export SIGNCLIENT_JAR=$(CONFIG_SIGN_CLIENT)
  export CONFIG_SIGNCLIENT_ARG=$(CONFIG_SIGN_CLIENT_ARG)
  CONFIG_TEEGRIS_$(shell echo $(TEEGRIS_BUILD_MODEL) | tr a-z A-Z)_SDK_PATH := $(CONFIG_SW_COMPILER_PATH)

  DELIVER_PROCA:=deliver_signed
else ifneq ($(QSEE_TA_BASE_PATH),)
  export PROCA_TZ_SCRYPTO_LIB:=$(TZ_SCRYPTO_LIB$(if $(findstring _32,$(SEC_RIL_CHIPNAME)),32,64))
  export PROCA_TZ_SCRYPTO_HEADER_PATH=$(TZ_SCRYPTO_HEADER_PATH)
  export PROCA_TZ_SCRYPTO_TOOLS_IMPRINT=$(TZ_SCRYPTO_TOOLS_IMPRINT)
  CONFIG_QSEE_$(SEC_RIL_CHIPNAME_UPPER)_SDK_PATH := $(SSROOT)/nhlos
  TA_BASE_DIR:=$(QSEE_TA_BASE_PATH)
  ifeq ($(SEC_BUILD_OPTION_KNOX_CSB),true)
    DELIVER_PROCA:=deliver_unsigned
  else
    DELIVER_PROCA:=deliver_signed_qsee
  endif
else ifneq ($(TBASE_TA_DIST_PATH),)
  export SIGNCLIENT_JAR=$(TA_BUILD_ROOT)/tools/signclient.jar
  CONFIG_TBASE_$(SEC_RIL_CHIPNAME_UPPER)_SDK_PATH := $(TBASE_SDK_PATH)
  TA_DESTINATION_DIR:=$(TBASE_TA_DIST_PATH)
  DELIVER_PROCA:=deliver_signed
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)
	mkdir -p $(TA_DESTINATION_DIR)
	cp -f $(_local_output) $(TA_DESTINATION_DIR)

### Used for QSee
ifeq ($(QSEE_TA_DST_PATH),)
  ifeq ($(QTEE_TAS_BUILD_ENABLED),true)
    QSEE_TA_DST_PATH=$(TA_BASE_DIR)/build/ms/bin/$(_local_build_id)/
  else
    QSEE_TA_DST_PATH=$(TA_BASE_DIR)/bin/$(_local_build_id)/unsigned/
  endif
endif

.PHONY: deliver_unsigned
deliver_unsigned: proca $(_local_input)
	@echo [PROCA] copy unsigned $(_local_input) $(QSEE_TA_DST_PATH)
	cp -f $(_local_input) $(QSEE_TA_DST_PATH)

.PHONY: deliver_signed_qsee
deliver_signed_qsee: proca-sign $(_local_output)
	@echo "[PROCA] copy signed_qsee" $(dir $(_local_output))proca.mbn $(QSEE_TA_DST_PATH)../
	cp -f $(dir $(_local_output))proca.mbn $(QSEE_TA_DST_PATH)../
