# Build host executable.

# Common parameters:
# - LOCAL_NAME
# Optional:
# - LOCAL_INCLUDE_DIRS
# - LOCAL_SRC_CPP
# - LOCAL_SRC_C
# - LOCAL_SRC_S
# - LOCAL_CFLAGS
# - LOCAL_CPPFLAGS
# - LOCAL_LDFLAGS
# - LOCAL_CUSTOM_LIBS
# - LOCAL_CC
# - LOCAL_CXX

_sdk_dir := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))

#######################
# Include common part #
#######################

include $(_sdk_dir)/build-host-common.mk

####################################
# Include final goal to get binary #
####################################

include $(_sdk_dir)/build-binary-goal-bin.mk

_local_trustlet_emulator := $(LOCAL_TRUSTLET_EMULATOR)
_local_uuid := $(LOCAL_UUID)

_local_link_gp_client := $(LOCAL_LINK_EMULATOR_GP_CLIENT)
_local_link_gp_tee := $(LOCAL_LINK_GP_TEE)
_local_group_id := $(LOCAL_GROUP_ID)
_local_fips_crypto := $(LOCAL_FIPS_CRYPTO)
_local_target_name := $(LOCAL_TARGET_NAME)
_local_out := $(LOCAL_OUT)
_local_cflags := $(LOCAL_CFLAGS)
_local_include_dirs := $(LOCAL_INCLUDE_DIRS)
##############
# Clear vars #
##############

include $(_sdk_dir)/clear-vars.mk

#####################################
# Include both TEE and client bases #
#####################################

ifeq ($(_local_link_gp_tee),y)
  ifneq ($(_host_gp_api_tee_$(_local_uuid)),included)
    LOCAL_UUID := $(_local_uuid)
    LOCAL_GROUP_ID := $(_local_group_id)

    LOCAL_FIPS_CRYPTO := $(_local_fips_crypto)

    LOCAL_TARGET_NAME := $(_local_target_name)
    LOCAL_OUT := $(_local_out)
    LOCAL_CFLAGS := $(_local_cflags)
    LOCAL_INCLUDE_DIRS := $(_local_include_dirs)
    include $(_sdk_dir)/../source/gp-api/tee-emulator.mk

    _host_gp_api_tee_$(_local_uuid) := included
  endif
endif

ifeq ($(_local_link_gp_client),y)
  ifneq ($(_host_gp_api_client),included)
    LOCAL_UUID := $(_local_uuid)
    LOCAL_GROUP_ID := $(_local_group_id)
    LOCAL_OUT := $(_local_out)
    LOCAL_CFLAGS := $(_local_cflags)
    include $(_sdk_dir)/../source/gp-api/client.mk

    _host_gp_api_client := included
  endif
endif
