CONTRIB := $(shell test -d ../maxs && echo true)

ifeq ($(CONTRIB), true)
BASE := $(shell readlink -f ../)/maxs
else
BASE := $(shell readlink -f ../)
endif

MAIN := $(BASE)/main
SHARED := $(BASE)/shared
SHARED_SOURCE := src/org/projectmaxs/shared
SHARED_GLOBAL_SOURCE := $(SHARED_SOURCE)/global
SHARED_MODULE_SOURCE := $(SHARED_SOURCE)/module
SHARED_MAINMODULE_SOURCE := $(SHARED_SOURCE)/mainmodule
MODULE_NAME := $(shell basename `pwd`)

DEBUG_APK := build/outputs/apk/debug/$(MODULE_NAME)-debug.apk

BUILD_TARGET ?= debug

.PHONY: all clean distclean prebuild release resources setupResourceLinks shared $(DEBUG_APK)

all: module

include $(BASE)/build/common.mk

# Android lint needs to be run *after* the project has been build
module: prebuild
	$(MAKE) lint-results.html
# Ugly hack to capitalize first letter included. See https://stackoverflow.com/a/50114483/194894
	$(GRADLE) $(GRADLE_EXTRA_ARGS) assemble$(shell BUILD_TARGET=$(BUILD_TARGET); echo $${BUILD_TARGET^})

release:
	BUILD_TARGET=release make module

$(DEBUG_APK):
	$(MAKE) module BUILD_TARGET=debug

clean:
	$(GRADLE) clean

distclean: clean lintClean
	[ ! -f res-src/Makefile ] || cd res-src && $(MAKE) clean
	rm -f $(VERSION_XML)

prebuild: lint.xml resources shared $(VERSION_XML) .gitignore

resources: shared setupResourceLinks
	cd res-src && $(MAKE)

shared: $(SHARED_GLOBAL_SOURCE) $(SHARED_MAINMODULE_SOURCE) $(SHARED_MODULE_SOURCE) gradlew-symlinks

$(SHARED_SOURCE):
	mkdir $@

$(SHARED_GLOBAL_SOURCE): | $(SHARED_SOURCE)
	ln -rs $(MAIN)/$@ $(SHARED_SOURCE)

$(SHARED_MAINMODULE_SOURCE): | $(SHARED_SOURCE)
	ln -rs $(MAIN)/$@ $(SHARED_SOURCE)

$(SHARED_MODULE_SOURCE): | $(SHARED_SOURCE)
	ln -rs $(SHARED)/module $(SHARED_SOURCE)

setupResourceLinks:
	$(BASE)/scripts/setupResourceLinks.sh -c $(CURDIR)

.gitignore: $(SHARED)/module-gitignore
	cp $< $@
