# Add target configuration to build every project for each target.

# Each target is added into "_global_target_names" variable and as a set of "_global_target_[name]_*" variables.
# Then build is processed for each target configuration.

# Mandatory parameters:
# - LOCAL_NAME
# - LOCAL_PLATFORM

_sdk_dir := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))

include $(_sdk_dir)/target.mk

####################################
# Check necessary input parameters #
####################################

ifeq ($(LOCAL_NAME),)
  $(error LOCAL_NAME is not specified.)
endif

ifeq ($(findstring $(LOCAL_PLATFORM),$(_global_target_supported_platforms:,=)),)
  $(error LOCAL_PLATFORM is not specified correctly. Supported platforms: $(_global_target_supported_platforms))
endif

ifneq ($(findstring $(LOCAL_PLATFORM),$(_global_target_$(LOCAL_NAME)_platforms)),)
  $(error Platform $(LOCAL_PLATFORM) is already defined for target $(LOCAL_NAME).)
endif

################################
# Add new target configuration #
################################

# Add target into the list only once
ifeq ($(filter $(LOCAL_NAME),$(_global_target_names)),)
  _global_target_names := $(_global_target_names) $(LOCAL_NAME)
endif

_global_target_$(LOCAL_NAME)_platforms := $(_global_target_$(LOCAL_NAME)_platforms) $(LOCAL_PLATFORM)

#####################################################
# Save all recognized variables into global context #
#####################################################

$(call save-all-target-parameters,$(LOCAL_NAME),$(LOCAL_PLATFORM))

##############
# Clear vars #
##############

include $(_sdk_dir)/clear-vars.mk
