## to execute single make use syntax "make -f Makefile.Single"

#Arch
CONFIG_TA_ARCH=32

include ./../../build/teegris_config.mk

##############
### CONFIG ###
OS_TYPE           = android
CONFIG_CC_SW      = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86/bin/arm*-secureos-gnueabi-gcc
CONFIG_STRIP_SW   = ${CONFIG_SW_TOOLCHAIN_ROOT}/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86/bin/arm*-secureos-gnueabi-strip

CONFIG_MODEL_NAME_DRV = TEEGRIS_$(shell echo $(TEEGRIS_BUILD_MODEL) | tr [a-z] [A-Z])_SAMSUNG_DRV
signing_drv_command = java -jar $(CONFIG_SIGN_CLIENT) -runtype $(CONFIG_SIGN_TYPE) -model $(CONFIG_MODEL_NAME_DRV) -input $< -output $@
########

ifeq ($(BUILD_MODE),dbg)
CONFIG_LDFLAGS_NW += -DUSE_DEBUG_MESSAGE
CONFIG_LDFLAGS_SW += -DUSE_DEBUG_MESSAGE
endif
CONFIG_LDFLAGS_NW += -Dv$(TEEGRIS_PLATFORM_VERSION_MAJOR)_$(TEEGRIS_PLATFORM_VERSION_MINOR)
CONFIG_LDFLAGS_SW += -Dv$(TEEGRIS_PLATFORM_VERSION_MAJOR)_$(TEEGRIS_PLATFORM_VERSION_MINOR)

#################
### DIR & SRC ###


#TARGET_CA_NAME = tee_test_driver
#TARGET_TA_NAME = 00000000-0000-0000-000-303049464141
TARGET_DRV_NAME = 00000000-0000-0000-0000-42494f415448


OBJ_DIR := $(CURRENT_PATH)/dist/obj
OUTPUT_DIR := $(CURRENT_PATH)/dist
#OUTPUTDRV_DIR := $(CURRENT_PATH)/output_$(CHIP_NAME)_$(TEEGRIS_SDK_VERSION)_$(BUILD_MODE)
OUTPUTDRV_DIR := $(TEEGRIS_TA_DIST_PATH)/driver


#TA_DIR := $(CURRENT_PATH)/testdriver_tl
#CA_DIR := $(CURRENT_PATH)/testdriver_tlc
#DRV_DIR := $(CURRENT_PATH)/driver_tl
DRV_DIR := $(CURRENT_PATH)/src

#SRC_TA := $(wildcard $(TA_DIR)/*.c)
#OBJ_TA := $(patsubst $(TA_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRC_TA))

SRC_DRV := $(wildcard $(DRV_DIR)/*.c)
OBJ_DRV := $(patsubst $(DRV_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRC_DRV))

SRC_CA := $(wildcard $(CA_DIR)/*.c)

#CA := $(OBJ_DIR)/$(TARGET_CA_NAME)
#TA := $(OBJ_DIR)/unsigned_TA
#STRIPPED_TA := $(TA).stripped
#SIGNED_TA := $(OBJ_DIR)/$(TARGET_TA_NAME)

#DRV := $(OBJ_DIR)/unsigned_DRV_TA
DRV := $(OBJ_DIR)/unsigned_TA
STRIPPED_DRV := $(DRV).stripped
SIGNED_DRV := $(OBJ_DIR)/$(TARGET_DRV_NAME)



################
### COMMANDS ###
# PHONY
.PHONY: all build_done clean make_dist copy_dist
all: make_dist build_done

build_done: copy_dist
	@echo 'Build Done.'

clean:
	@$(RM) $(OUTPUT_DIR)
#	@$(RM) $(OUTPUTDRV_DIR)

make_dist:
	@$(MKDIR) $(OBJ_DIR)
#	@$(MKDIR) $(OUTPUTDRV_DIR)


copy_dist: $(SIGNED_DRV)
	@echo Copy $(SIGNED_DRV) $(OUTPUTDRV_DIR)
	@$(CP) $(SIGNED_DRV) $(OUTPUTDRV_DIR)
#copy_dist: $(SIGNED_TA) $(CA) $(SIGNED_DRV)
#	@$(CP) -t $(OUTPUTDRV_DIR) $(SIGNED_DRV)
#	@$(CP) -t $(OUTPUTDRV_DIR) $^

#$(SIGNED_TA): $(STRIPPED_TA) $(test_TA_with_keys)
#	@echo 'Signing TA $(TARGET_TA_NAME)'
#	@$(signing_command)

$(SIGNED_DRV): $(STRIPPED_DRV) $(test_TA_with_keys)
	@echo 'Signing'
	@$(signing_drv_command)

#$(CA): $(SRC_CA) | make_dist
#	@echo 'Building CA: $(TARGET_CA_NAME)'
#	@$(CONFIG_CC_NW) $(CONFIG_LDFLAGS_NW) -o $@ $(SRC_CA)

#$(TA): $(SRC_TA) | make_dist
#	@echo 'Building TA: $(TARGET_TA_NAME)'
#	@$(CONFIG_CC_SW) $(CONFIG_LDFLAGS_SW) -o $@ $(SRC_TA)



# 1 ###
$(DRV): $(SRC_DRV) | make_dist
	@echo 'Building'
	@$(CONFIG_CC_SW) $(CONFIG_LDFLAGS_SW) -o $@ $(SRC_DRV)

# 2
#$(DRV): $(OBJ_DRV)
#	echo 'OBJ_DRV !!'
#	$(CONFIG_CC_SW) $(CFLAGS) $(CONFIG_LDFLAGS_SW) -o $(DRV) $(OBJ_DRV) $(LIBS) $(INCLUDE_DIRS) $(LIB_DIRS)
	
#$(OBJ_DRV)/%.o: %.c
#	@echo "================================================"
#	@echo "= Compiling $@ "
#	@echo "================================================"
#	@`[ -d $(OBJ_DRV) ] || $(MKDIR) $(OBJ_DRV)`
#	$(CONFIG_CC_SW) -c -o $*.o $(CFLAGS) $(INCLUDE_DIRS) $<
#	$(CONFIG_CC_SW) -c -o $@ $(CFLAGS) $(INCLUDE_DIRS) $<

#$(STRIPPED_TA): $(TA)
#	@echo 'Stripping TA $(TARGET_TA_NAME)'
#	@$(CONFIG_STRIP_SW) $(CONFIG_STRIP_FLAGS_SW) $< -o $@




$(STRIPPED_DRV): $(DRV)
	@echo 'Stripping'
	@$(CONFIG_STRIP_SW) $(CONFIG_STRIP_FLAGS_SW) $< -o $@

# make obj .....
#$(OBJ_DIR)/%.o: $(TA_DIR)/%.c
#	@$(CONFIG_CC_SW) $(CONFIG_LDFLAGS_SW) -c -o $@ $<


#$(OBJ_DIR)/%.o: $(DRV_DIR)/%.c
#	@$(CONFIG_CC_SW) $(CONFIG_LDFLAGS_SW) -c -o $@ $<
