if ANDROID
all_target=bin/AltosDroid-debug.apk
if ANDROID_RELEASE
all_target+=bin/AltosDroid-release.apk
endif
else
all_target=
endif

SDK=$(ANDROID_SDK)
SDK_TARGET=$(shell sed -ne 's/^target=//p' project.properties)

DX=$(SDK)/platform-tools/dx
ADB=$(SDK)/platform-tools/adb
AAPT=$(SDK)/platform-tools/aapt
APKBUILDER=$(SDK)/tools/apkbuilder
ZIPALIGN_A=$(SDK)/tools/zipalign
ZIPALIGN_B=$(shell ls $(SDK)/build-tools/*/zipalign | tail -1)

JAVA_SRC_DIR=src/org/altusmetrum/AltosDroid
EXT_LIBDIR=libs
DRAWABLE_DIR=res/drawable
LAYOUT_DIR=res/layout
MENU_DIR=res/menu
VALUES_DIR=res/values
XML_DIR=res/xml
ALTOSLIB_SRCDIR=../altoslib
ALTOSLIB_JAR=altoslib_$(ALTOSLIB_VERSION).jar

ALTOSLIB=$(EXT_LIBDIR)/$(ALTOSLIB_JAR)

SUPPORT_V4_SRCDIR=$(SDK)/extras/android/support/v4
SUPPORT_V4_JAR=android-support-v4.jar

SUPPORT_V4=$(EXT_LIBDIR)/$(SUPPORT_V4_JAR)

GOOGLE_PLAY_SERVICES_LIB_SRCDIR=$(SDK)/extras/google/google_play_services/libproject
GOOGLE_PLAY_SERVICES_LIB=google-play-services_lib

JAVA_SRC=$(JAVA_SRC_DIR)/*.java $(JAVA_SRC_DIR)/BuildInfo.java

DRAWABLES=\
    $(DRAWABLE_DIR)/redled.png \
    $(DRAWABLE_DIR)/greenled.png \
    $(DRAWABLE_DIR)/grayled.png

LAYOUTS=$(LAYOUT_DIR)/*.xml
MENUS=$(MENU_DIR)/*.xml
VALUES=$(VALUES_DIR)/*.xml
XMLS=$(XML_DIR)/*.xml AndroidManifest.xml

RES=$(LAYOUTS) $(MENUS) $(VALUES) $(XMLS)

SRC=$(JAVA_SRC) $(DRAWABLES) $(RES)

all: $(all_target)

.NOTPARALLEL:

$(ALTOSLIB): $(ALTOSLIB_SRCDIR)/$(ALTOSLIB_JAR)
	mkdir -p $(EXT_LIBDIR)
	cd $(EXT_LIBDIR) && ln -sf $(shell echo $(EXT_LIBDIR) | sed 's|[^/]\+|..|g')/$(ALTOSLIB_SRCDIR)/$(ALTOSLIB_JAR) .

$(SUPPORT_V4): $(SUPPORT_V4_SRCDIR)/$(SUPPORT_V4_JAR)
	mkdir -p $(EXT_LIBDIR)
	cd $(EXT_LIBDIR) && ln -sf $(SUPPORT_V4_SRCDIR)/$(SUPPORT_V4_JAR) .

$(GOOGLE_PLAY_SERVICES_LIB): $(GOOGLE_PLAY_SERVICES_LIB_SRCDIR)/$(GOOGLE_PLAY_SERVICES_LIB)
	cp -a $(GOOGLE_PLAY_SERVICES_LIB_SRCDIR)/$(GOOGLE_PLAY_SERVICES_LIB) .
	cd $(GOOGLE_PLAY_SERVICES_LIB) && $(SDK)/tools/android update project --target $(SDK_TARGET) --path .

$(JAVA_SRC_DIR)/BuildInfo.java: $(filter-out $(JAVA_SRC_DIR)/BuildInfo.java,$(shell echo $(JAVA_SRC)))
	./buildinfo.sh

$(DRAWABLE_DIR)/%.png: ../icon/%.png
	cd $(DRAWABLE_DIR) && ln -sf $(shell echo $(DRAWABLE_DIR) | sed 's|[^/]\+|..|g')/$< .

if ANDROID
install-release: bin/AltosDroid-release.apk
	$(ADB) install -r bin/AltosDroid-release.apk

install-debug: bin/AltosDroid-debug.apk
	$(ADB) install -r bin/AltosDroid-debug.apk

bin/AltosDroid-debug.apk: $(SRC) $(ALTOSLIB) $(SUPPORT_V4) $(GOOGLE_PLAY_SERVICES_LIB)
	ant debug

bin/AltosDroid-release-unsigned.apk: $(SRC) $(ALTOSLIB) $(SUPPORT_V4) $(GOOGLE_PLAY_SERVICES_LIB)
	ant release

bin/AltosDroid-release.apk: bin/AltosDroid-release-unsigned.apk
	jarsigner -sigalg SHA1withDSA -digestalg SHA1 \
	   -keystore ~/altusmetrumllc/google-play-release.keystore \
	   -storepass:file ~/altusmetrumllc/google-play-passphrase \
	   -signedjar bin/AltosDroid-release-signed.apk \
	   bin/AltosDroid-release-unsigned.apk AltosDroid
	if [ -f $(ZIPALIGN_A) ]; then \
		$(ZIPALIGN_A) -f 4 \
		   bin/AltosDroid-release-signed.apk \
		   bin/AltosDroid-release.apk; \
	else \
		$(ZIPALIGN_B) -f 4 \
		   bin/AltosDroid-release-signed.apk \
		   bin/AltosDroid-release.apk; \
	fi

release: bin/AltosDroid-release.apk

clean-local: $(GOOGLE_PLAY_SERVICES_LIB)
	ant clean
	rm -f $(JAVA_SRC_DIR)/BuildInfo.java
	rm -f $(DRAWABLES)
	rm -rf $(EXT_LIBDIR)
	rm -rf $(GOOGLE_PLAY_SERVICES_LIB)

else

clean-local:

endif

clean: clean-local
