#Arch
CONFIG_TA_ARCH=32

include ../../build/teegris_config.mk
#include ./SoftsimLogic/Makefile

ifndef KBUILD_VERBOSE
  KBUILD_VERBOSE = 0
endif

## softsim-TA sign approach
CONFIG_SERVER=ON
#CONFIG_SERVER=OFF

ANDROID_SYSROOT = $(CONFIG_NW_SYSROOT)
ANDROID_TOOLCHAIN_PREFIX = ${CONFIG_NW_TOOLCHAIN_PREFIX}gcc
LIB =$(CONFIG_NW_LIB)
CFLAGS=$(CONFIG_CFLAGS)

ifeq ($(CONFIG_NW_TARGET),AARCH64)
  ANDROID_SYSROOT = $(CONFIG_NW_SYSROOT_AARCH64)
  ANDROID_TOOLCHAIN_PREFIX = $(CONFIG_NW_TOOLCHAIN_PREFIX_AARCH64)gcc
  LIB =$(CONFIG_NW_LIB_AARCH64)
  CFLAGS = $(CONFIG_CFLAGS_AARCH64)
endif

TARGET_GCC = $(ANDROID_TOOLCHAIN_PREFIX) --sysroot=$(ANDROID_SYSROOT) $(CFLAGS)
DIST=00000000-0000-0000-0000-53465453494d
PREBUILD=00000000-4d54-4b5f-4246-53465453494d

OUT_DIR = $(CURRENT_PATH)/dist/obj
UNSIGNED_TA := $(OUT_DIR)/unsigned_TA
STRIPPED_TA := $(OUT_DIR)/stripped_TA
SIGNED_TA   := $(OUT_DIR)/$(DIST)


CONFIG_OPTIMIZATION_CFLAGS := -O2
CFLAGS_COMMON= -I.

CONFIG_CFLAGS_TA := \
	$(CFLAGS_COMMON) \
	$(CONFIG_OPTIMIZATION_CFLAGS) \
	-Wall \
	-Wunused-parameter \
	-Wextra \
	-lteesl \
	-ltzsl


CONFIG_SW_INCLUDES += -I. \
					 -Ix509/ \
					 -Iinclude/softsim-logic/ \
					 -Iinclude/crypto-core/   \
					 -Iusr

CONFIG_CFLAGS_TA += -DUSE_BLOWFISH  -DLOGIC_PROVIDER_samsung

ifeq ($(APDU_ENCRYPTION),yes)
CONFIG_CFLAGS_TA += -D__APDU_ENCRYPT__
endif

ifeq ($(TARGET_BUILD_VARIANT),eng)
CONFIG_CFLAGS_TA += -D_UNIT_TEST_
endif

#[SI-15083]
CONFIG_CFLAGS_TA += -fvisibility=hidden

all: make_dist softsim_TA $(SIGNED_TA) copy_dist build_done

build_done: make_dist $(SIGNED_TA) copy_dist
	$(info Build Done.)

$(STRIPPED_TA): make_dist
	@$(CONFIG_STRIP_SW) $(STRIP_FLAGS_SW) $(UNSIGNED_TA) -o $(STRIPPED_TA)

$(SIGNED_TA): $(UNSIGNED_TA) make_dist $(test_TA_with_keys)
	@$(signing_command)

make_dist:
	@$(MKDIR) $(OUT_DIR)

copy_dist: make_dist $(SIGNED_TA)
	@echo Copy $(SIGNED_TA) $(TEEGRIS_TA_DIST_PATH)
	@$(CP) $(SIGNED_TA) $(TEEGRIS_TA_DIST_PATH)

clean:
	@$(RM) $(OUT_DIR)
	@$(RM) $(DIST_DIR)
	@echo 'Clean Done.'


CONFIG_SW_SOURCE := \
	target/bf/app_entry.c \
	target/bf/target.c    \
	x509/asn1.c    \
	x509/asn1rsa.c \
	x509/x509v3.c  \
	json/cJSON.c   \
	softsim_main.c \
	tl_aes_crypto.c  \
	tl_certificate.c \
	tl_fs.c   \
	tl_heap.c \
	tl_inter_app_msg.c \
	tl_json.c \
	tl_log.c  \
	tl_process_cmd.c \
	tl_rsa_crypto.c  \
	tl_softsim_logic.c    \
	tl_softsim_logic_op.c \
	tl_usim_op.c \
	tl_utils.c

ifeq ($(TARGET_BUILD_VARIANT),eng)
CONFIG_SW_SOURCE += \
	target/bf/sample/tee_aes_TA.c                        \
	target/bf/sample/tee_dh_key_derive_TA.c              \
	target/bf/sample/tee_ecdsa_sign_verif_TA.c           \
	target/bf/sample/tee_hmac_sha256_digest_TA.c         \
	target/bf/sample/tee_rsa_enc_dec_TA.c                \
	target/bf/sample/tee_rsa_enc_dec_ext_TA.c            \
	target/bf/sample/tee_rsa_sign_verif_TA.c             \
	target/bf/sample/tee_sha256_digest_TA.c              \
	target/bf/sample/tee_hacc_TA.c                       \
	target/bf/sample/test_TA_crypto_samples.c
else
CONFIG_CFLAGS_TA += -D_NDEBUG_
endif


CONFIG_SW_OBJECT=$(patsubst %.c, %.o, $(CONFIG_SW_SOURCE))

.PHONY: softsim_TA
softsim_TA: \
	$(CONFIG_SW_OBJECT)
	$(CONFIG_SW_TOOLCHAIN_PREFIX)gcc --sysroot=$(CONFIG_SW_SYSROOT) -lmath -lteesl -Wall -Wextra -Werror -s $^ ./lib/libsoftsim-samsung.a ./lib/libmath.a -o $(UNSIGNED_TA)
	#$(CONFIG_SW_TOOLCHAIN_PREFIX)gcc --sysroot=$(CONFIG_SW_SYSROOT) -lmath -lteesl -Wall -Wextra -Werror -s $^ ../lib/libsoftsim-samsung.a ../lib/libmath.a -o2 $@

%.o:%.c
	echo $^
	${CONFIG_SW_TOOLCHAIN_PREFIX}gcc --sysroot=$(CONFIG_SW_SYSROOT) ${CONFIG_SW_INCLUDES} ${CONFIG_CFLAGS_TA} -o $@  -c $<
	#${CONFIG_SW_TOOLCHAIN_PREFIX}gcc --sysroot=$(CONFIG_SW_SYSROOT) ${CONFIG_SW_INCLUDES} ${CONFIG_CFLAGS_TA} -o2 $@  -c $<
