# Build jar from built java module.

# Common parameters:
# - LOCAL_NAME
# - LOCAL_JAR_PACKAGES
# Optional parameters:
# - LOCAL_JAR_NAME

_sdk_dir := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))

include $(_sdk_dir)/path-utilities.mk

####################################
# Check necessary input parameters #
####################################

ifeq ($(LOCAL_JAR_PACKAGES),)
  $(error LOCAL_JAR_PACKAGES is not specified)
endif

ifeq ($(LOCAL_NAME),)
  $(error LOCAL_NAME is not specified)
endif

ifeq ($(LOCAL_JAR_NAME),)
  LOCAL_JAR_NAME := $(LOCAL_NAME).jar
endif

##########################
# Strip input parameters #
##########################

LOCAL_NAME:=$(strip $(LOCAL_NAME))

LOCAL_JAR_PACKAGES:=$(strip $(LOCAL_JAR_PACKAGES))
LOCAL_JAR_NAME:=$(strip $(LOCAL_JAR_NAME))

############################
# Default build parameters #
############################

_local_output_dir := $(strip $(call get-absolute-path,./out/jar))

###################
# Default targets #
###################

.PHONY: build
build: $(LOCAL_NAME)-jar

.PHONY: $(LOCAL_NAME)-jar
$(LOCAL_NAME)-jar: _local_jar_packages := $(subst .,/,$(LOCAL_JAR_PACKAGES))
$(LOCAL_NAME)-jar: _local_jar_name := $(LOCAL_JAR_NAME)
$(LOCAL_NAME)-jar: _local_name := $(LOCAL_NAME)
$(LOCAL_NAME)-jar: _local_output_dir := $(_local_output_dir)
$(LOCAL_NAME)-jar:
	mkdir -p $(_local_output_dir)
	jar cvf $(_local_output_dir)/$(_local_jar_name) -C $(_local_name)/bin/classes $(_local_jar_packages)


.PHONY: clean
clean: $(LOCAL_NAME)-jar-clean

.PHONY: $(LOCAL_NAME)-jar-clean
$(LOCAL_NAME)-jar-clean: _local_jar_name := $(LOCAL_JAR_NAME)
$(LOCAL_NAME)-jar-clean: _local_output_dir := $(_local_output_dir)
$(LOCAL_NAME)-jar-clean:
	rm -rf $(_local_output_dir)/$(_local_jar_name)

##############
# Clear vars #
##############

include $(_sdk_dir)/clear-vars.mk
