# Build Blowfish trustlet.

# Common parameters:
# - LOCAL_SDK_PATH
# - LOCAL_NAME
# - LOCAL_UUID
# Optional:
# - LOCAL_INCLUDE_DIRS
# - LOCAL_SRC_CPP
# - LOCAL_SRC_C
# - LOCAL_SRC_S
# - LOCAL_CFLAGS
# - LOCAL_CPPFLAGS
# - LOCAL_STATIC_LIBRARIES
# - LOCAL_CUSTOM_LIBS

_sdk_dir := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))

_local_blowfish_platform := $(strip $(_local_blowfish_platform))

ifeq ($(_local_blowfish_platform),)
  _local_blowfish_platform := blowfish
endif

include $(_sdk_dir)/blowfish-utils.mk

##########################
# Strip input parameters #
##########################

LOCAL_UUID := $(strip $(LOCAL_UUID))

####################################
# Check necessary input parameters #
####################################

ifeq ($(LOCAL_UUID),)
  $(error LOCAL_UUID is not specified)
endif

#######################
# Include common part #
#######################

include $(_sdk_dir)/build-blowfish-common.mk

###############################################
# Include final goal to get binary (trustlet) #
###############################################

include $(_sdk_dir)/build-binary-goal-bin.mk

_local_uuid := $(LOCAL_UUID)
_local_group_id := $(LOCAL_GROUP_ID)
_local_sdk_path := $(LOCAL_SDK_PATH)
_local_link_gp_tee := $(LOCAL_LINK_GP_TEE)
_local_target_name := $(LOCAL_TARGET_NAME)
_local_arch := $(strip $(call get-blowfish-swd-arch,$(LOCAL_SDK_PATH)))
_local_chip := $(LOCAL_CHIP)
_local_out := $(LOCAL_OUT)
_local_cflags := $(LOCAL_CFLAGS)
_local_include_dirs := $(LOCAL_INCLUDE_DIRS)

##############
# Clear vars #
##############

include $(_sdk_dir)/clear-vars.mk

####################
# Include TEE base #
####################

ifeq ($(_local_link_gp_tee),y)
  ifneq ($(_blowfish_gp_api_$(_local_uuid)_$(_local_arch)_$(_local_target_name)$(_local_blowfish_platform)),included)
    LOCAL_UUID := $(_local_uuid)
    LOCAL_GROUP_ID := $(_local_group_id)
    LOCAL_SDK_PATH := $(_local_sdk_path)
    LOCAL_ARCH := $(_local_arch)
    LOCAL_CHIP := $(_local_chip)
    LOCAL_TARGET_NAME := $(_local_target_name)
    LOCAL_INCLUDE_DIRS := $(_local_include_dirs)
    LOCAL_OUT := $(_local_out)
    LOCAL_CFLAGS := $(_local_cflags)
    include $(_sdk_dir)/../source/gp-api/tee-blowfish.mk

    _blowfish_gp_api_$(_local_uuid)_$(_local_arch)_$(_local_target_name)$(_local_blowfish_platform) := included
  endif
endif

