# Build Android projects recursively

# Mandatory parameters:
# - LOCAL_SDK_PATH
# - LOCAL_PROJECTS
# Optional parameters:
# - LOCAL_PLATFORM_VERSION
# - LOCAL_TOOLCHAIN_VERSION
# - LOCAL_PLATFORM_TYPE
# - LOCAL_OUT
# - LOCAL_PROJECT_ROOT

_sdk_dir := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))

include $(_sdk_dir)/path-utilities.mk

ifeq ($(LOCAL_SDK_PATH),)
  $(error LOCAL_SDK_PATH is empty)
endif

ifeq ($(LOCAL_PROJECTS),)
  $(error LOCAL_PROJECTS is empty)
endif

ifeq ($(LOCAL_PLATFORM_VERSION),)
  LOCAL_PLATFORM_VERSION := 2.3.1
endif

ifeq ($(LOCAL_TOOLCHAIN_VERSION),)
  LOCAL_TOOLCHAIN_VERSION := 4.6
endif

ifeq ($(LOCAL_PLATFORM_TYPE),)
  LOCAL_PLATFORM_TYPE := wearable
endif

ifeq ($(LOCAL_OUT),)
  LOCAL_OUT := ./out/tizen
endif

ifeq ($(LOCAL_PROJECT_ROOT),)
  LOCAL_PROJECT_ROOT := $(_sdk_dir)/../..
endif

# Remove a possible leading slash.
LOCAL_PROJECTS := $(LOCAL_PROJECTS:/=)

# FLAGS to be exported to CMake
LOCAL_CFLAGS := $(strip $(LOCAL_CFLAGS:-D%=%))

.PHONY: build
build: _sdk_action = all
build: $(LOCAL_PROJECTS)

.PHONY: clean
clean: _sdk_action = clean
clean: $(LOCAL_PROJECTS)

.PHONY: $(LOCAL_PROJECTS)
$(LOCAL_PROJECTS): LOCAL_SDK_PATH := $(LOCAL_SDK_PATH)
$(LOCAL_PROJECTS): LOCAL_PLATFORM_VERSION := $(LOCAL_PLATFORM_VERSION)
$(LOCAL_PROJECTS): LOCAL_TOOLCHAIN_VERSION := $(LOCAL_TOOLCHAIN_VERSION)
$(LOCAL_PROJECTS): LOCAL_PLATFORM_TYPE := $(LOCAL_PLATFORM_TYPE)
$(LOCAL_PROJECTS): LOCAL_OUT := $(LOCAL_OUT)
$(LOCAL_PROJECTS): LOCAL_CFLAGS := $(LOCAL_CFLAGS)
$(LOCAL_PROJECTS): LOCAL_PROJECT_ROOT := $(LOCAL_PROJECT_ROOT)
$(LOCAL_PROJECTS):
	for x in $(LOCAL_CFLAGS); do \
		IFS=\'\' export $$x; \
	done; \
	export LOCAL_SDK_PATH=$(LOCAL_SDK_PATH); \
	export LOCAL_PLATFORM_VERSION=$(LOCAL_PLATFORM_VERSION); \
	export LOCAL_TOOLCHAIN_VERSION=$(LOCAL_TOOLCHAIN_VERSION); \
	export LOCAL_PLATFORM_TYPE=$(LOCAL_PLATFORM_TYPE); \
	mkdir -p $(LOCAL_OUT); \
	cd $(LOCAL_OUT); \
	cmake $(LOCAL_PROJECT_ROOT)/ -DCMAKE_TOOLCHAIN_FILE=$(_sdk_dir)/../tools/templates/cmake/tizen-arm-gcc.cmake; \
	make $(_sdk_action)

##############
# Clear vars #
##############

include $(_sdk_dir)/clear-vars.mk
