#########################
## 1. Set NW/SW Toolchain Path
CONFIG_SW_TOOLCHAIN_ROOT = ../..
#CONFIG_SW_COMPILER_PATH = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/arm-secureos-gnueabi-5.2-linux_x86
#CONFIG_SW_COMPILER_PATH = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/arm-secureos-gnueabi-gcc_5_2-linux-x86
CONFIG_SW_COMPILER_PATH = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86
CONFIG_NW_TOOLCHAIN_PREFIX_AARCH64 = aarch64-linux-android-
CONFIG_NDK_ROOT = $(dir $(shell which $(CONFIG_NW_TOOLCHAIN_PREFIX_AARCH64)gcc))/../../../../../

## Target architecture in normal world to build for.
CONFIG_NW_TARGET = AARCH64
#CONFIG_NW_TARGET = ARM

## Target architecture in secure world to build f
#CONFIG_SW_TARGET = AARCH64
CONFIG_SW_TARGET = ARM

## 32-bit Setting
CONFIG_NW_TOOLCHAIN_PREFIX = arm-linux-androideabi-
CONFIG_NW_SYSROOT = $(CONFIG_NDK_ROOT)/platforms/android-21/arch-arm/

CONFIG_NW_LIB = $(CONFIG_SW_TOOLCHAIN_ROOT)/platforms/BF-3.0/nwd/android/arch-arm
CONFIG_NW_INCLUDES = $(CONFIG_SW_TOOLCHAIN_ROOT)/platforms/BF-3.0/nwd/android/includes

## 64-bit Setting
CONFIG_NW_LIB_AARCH64 = $(CONFIG_SW_TOOLCHAIN_ROOT)/platforms/BF-3.0/nwd/android/arch-arm64
CONFIG_NW_SYSROOT_AARCH64 = $(CONFIG_NDK_ROOT)/platforms/android-21/arch-arm64

## SW toolchain prefix
CONFIG_SW_TOOLCHAIN_PREFIX = $(CONFIG_SW_COMPILER_PATH)/bin/arm-secureos-gnueabi-
CONFIG_SW_SYSROOT = $(CONFIG_SW_TOOLCHAIN_ROOT)/platforms/BF-3.0/swd/arch-arm

## NW flags
CONFIG_CFLAGS = -lteecl
CONFIG_CFLAGS_AARCH64 = -lteecl -fPIE -pie -llog -lc -ldl

## 2. Set Path to TA authority scripts
#CONFIG_TA_AUTH = dev_drv
#CONFIG_TA_AUTH = dev_ta
#CONFIG_TA_SIGN_CERT = ${CONFIG_SW_TOOLCHAIN_ROOT}/tools/bf_authority_scripts/release/cert.pem
#CONFIG_TA_SIGN_KEY = ${CONFIG_SW_TOOLCHAIN_ROOT}/tools/bf_authority_scripts/release/private/key.pem
CONFIG_TA_SIGN_CERT = ${CONFIG_SW_TOOLCHAIN_ROOT}/tools/bf_authority_scripts/ta_auth_dev_ta/cert.pem
CONFIG_TA_SIGN_KEY = ${CONFIG_SW_TOOLCHAIN_ROOT}/tools/bf_authority_scripts/ta_auth_dev_ta/private/key.pem

CONFIG_DRV_TA_SIGN_CERT = ${CONFIG_SW_TOOLCHAIN_ROOT}/tools/bf_authority_scripts/ta_auth_dev_drv/cert.pem
CONFIG_DRV_TA_SIGN_KEY = ${CONFIG_SW_TOOLCHAIN_ROOT}/tools/bf_authority_scripts/ta_auth_dev_drv/private/key.pem

CONFIG_TA_AUTH_SCRIPTS_PATH = ${CONFIG_SW_TOOLCHAIN_ROOT}/tools/bf_authority_scripts

CONFIG_TA_SIGN = $(CONFIG_TA_AUTH_SCRIPTS_PATH)/sign_file.sh -a -c $(CONFIG_TA_SIGN_CERT) -k $(CONFIG_TA_SIGN_KEY)
CONFIG_DRV_SIGN = $(CONFIG_TA_AUTH_SCRIPTS_PATH)/sign_file.sh -a -c $(CONFIG_DRV_TA_SIGN_CERT) -k $(CONFIG_DRV_TA_SIGN_KEY)

#OFF/ON
CONFIG_SERVER = OFF
CHIPSET_NAME_UPPERCASE = $(shell echo $(CHIPSET_NAME) | tr a-z A-Z)
CONFIG_SIGN_CLIENT = ${CONFIG_SW_TOOLCHAIN_ROOT}/src/signclient.jar
CONFIG_TA_SIGN_SERVER = java -jar $(CONFIG_SIGN_CLIENT) -model TEEGRIS_${CHIPSET_NAME_UPPERCASE}_SAMSUNG_TA -runtype ss_teegris_ta -input
CONFIG_DRV_SIGN_SERVER = java -jar $(CONFIG_SIGN_CLIENT) -model BF_SAMSUNG_DRV -runtype ss_bf_ta -input

## 3. Target environment to build for.
#CONFIG_TARGET_ENV = tizen
CONFIG_TARGET_ENV = android

## 4. Set Debug info in TA
CONFIG_DEBUG = on
#CONFIG_DEBUG = off

##################################################################################

## 5. Target environment to build for.
#CONFIG_TARGET_ENV = tizen
CONFIG_TARGET_ENV = android

## 6. Set dist, output, ta and ca dirs
CONFIG_BASE_DIR             = $(PWD)/..
CONFIG_DIST_DIR             = $(CONFIG_BASE_DIR)/dist
CONFIG_CUR_DIR		= $(PWD)

CONFIG_SRC_DIR_TA := $(CONFIG_CUR_DIR)/ta
CONFIG_SRC_DIR_CA := $(CONFIG_CUR_DIR)/ca
CONFIG_OUT_DIR    := $(CONFIG_CUR_DIR)/out

## 7. Sorce and objetc files
CONFIG_SRC_TA	:= $(wildcard $(CONFIG_SRC_DIR_TA)/*.c)
CONFIG_OBJ_TA	:= $(patsubst $(CONFIG_SRC_DIR_TA)/%.c,$(CONFIG_OUT_DIR)/%.o,$(CONFIG_SRC_TA))

CONFIG_SRC_CA	:= $(wildcard $(CONFIG_SRC_DIR_CA)/*.c)

## 8. Options for compiler and linker
CONFIG_CFLAGS_COMMON = -ggdb -std=gnu99 -DTARGET=$(CONFIG_TARGET)
CONFIG_OPTIMIZATION_CFLAGS := -O2
CONFIG_LIB_PATH	:= $(CONFIG_SW_COMPILER_PATH)/nw_libs
ifeq ($(CONFIG_TARGET_ENV),tizen)
  NORMAL_SYSROOT = $(shell $(CC) -print-sysroot)
endif
ifeq ($(CONFIG_TARGET_ENV),android)
  NORMAL_SYSROOT = $(CONFIG_NW_SYSROOT)
endif

CONFIG_CFLAGS_NW := \
	$(CONFIG_CFLAGS_COMMON) \
	$(CONFIG_OPTIMIZATION_CONFIG_CFLAGS_NW) \
	-I$(CONFIG_LIB_PATH) \
	-Wall -Werror -Wextra

CFLAGS_COMMON= -I.

CONFIG_CFLAGS_TA := \
	$(CFLAGS_COMMON) \
	$(CONFIG_OPTIMIZATION_CFLAGS) \
	-Wall \
	-Wunused-parameter \
	-Wextra \
	-lteesl \
	-ltzsl

#COMMIT_SHA1=${shell git log --format='%H' -1}
CONFIG_CFLAGS_TA +=                       \
	-D__COMMIT_SHA1__=\"${COMMIT_SHA1}\"  \
	-D__USER__=\"${USER}\"                \

CONFIG_LIBS_NW := \
		-lteecl \
		-lgcc \
		-llog \
		-lm

## 9. Set compilers
CONFIG_CC_NW := $(CONFIG_NW_TOOLCHAIN_PREFIX)gcc
CONFIG_CC_SW := $(CONFIG_SW_TOOLCHAIN_PREFIX)gcc

MKDIR := -mkdir -p
RM := rm -rf
CP := cp -f
