# Build ant-based module.

# Common parameters:
# - LOCAL_NAME
# - LOCAL_SDK_PATH
# Optional parameters:
# - LOCAL_ANT_TARGET

_sdk_dir := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))

include $(_sdk_dir)/path-utilities.mk

####################################
# Check necessary input parameters #
####################################

ifeq ($(LOCAL_NAME),)
  $(error LOCAL_NAME is not specified)
endif

ifeq ($(LOCAL_ANDROID),y)
  ifeq ($(LOCAL_SDK_PATH),)
    $(error LOCAL_SDK_PATH is not specified)
  endif
endif

ifeq ($(LOCAL_ANT_TARGET),)
  LOCAL_ANT_TARGET := debug
endif

##########################
# Strip input parameters #
##########################

LOCAL_SDK_PATH:=$(strip $(LOCAL_SDK_PATH))
LOCAL_NAME:=$(strip $(LOCAL_NAME))

############################
# Default build parameters #
############################

_local_output_dir := $(strip $(call get-absolute-path,./out/ant))

ifeq ($(LOCAL_ANDROID),y)
  _local_android_update_project := $(LOCAL_SDK_PATH)/tools/android update project -p $(LOCAL_NAME)
  _local_output_dir := $(strip $(call get-absolute-path,./out/android))
  _local_android_install := cp $(LOCAL_NAME)/bin/*.apk $(_local_output_dir) || :
endif

###################
# Default targets #
###################

.PHONY: build
build: $(LOCAL_NAME)

.PHONY: $(LOCAL_NAME)
$(LOCAL_NAME): _local_ant_target := $(LOCAL_ANT_TARGET)
$(LOCAL_NAME): _local_project_dir := $(LOCAL_NAME)
$(LOCAL_NAME): _local_output_dir := $(_local_output_dir)
$(LOCAL_NAME): _local_android_update_project := $(_local_android_update_project)
$(LOCAL_NAME): _local_android_install := $(_local_android_install)
$(LOCAL_NAME):
	mkdir -p $(_local_output_dir)
	$(_local_android_update_project)
	ant -f $(_local_project_dir)/build.xml $(_local_ant_target)
	$(_local_android_install)

.PHONY: clean
clean: $(LOCAL_NAME)-clean

.PHONY: $(LOCAL_NAME)-clean
$(LOCAL_NAME)-clean: _local_project_dir := $(LOCAL_NAME)
$(LOCAL_NAME)-clean:
	ant -f $(_local_project_dir)/build.xml clean

##############
# Clear vars #
##############

include $(_sdk_dir)/clear-vars.mk
