# Sources and objects

export ANDROID_HOME=$(ANDROID_SDK)

ARCH = $(ANDROID_ABI)

PSRC=ring-android
SRC=$(PSRC)/app/src/main
LIBRINGJNI_H=ring-daemon/src/dring/dring.h
LIBRINGJNI=$(SRC)/obj/local/${ANDROID_ABI}/libring.so

JAVA_SOURCES=$(shell find $(SRC)/java/cx/ring/ -type f -name "*.java")

ifneq ($(V),)
GRADLE_OPTS += -d
VERBOSE =
GEN =
else
VERBOSE = @
GEN = @echo "Generating" $@;
endif

ifeq ($(RELEASE),1)
GRADLE_TARGET = assembleRelease
RING_APK=$(SRC)/bin/Ring-release-unsigned.apk
NDK_DEBUG=0
else
GRADLE_TARGET = assembleDebug
RING_APK=$(SRC)/bin/Ring-debug.apk
NDK_DEBUG=1
endif

define build_apk
	@echo
	@echo "=== Building $(RING_APK) for $(ARCH) ==="
	@echo
	date +"%Y-%m-%d" > $(SRC)/assets/builddate.txt
	echo `id -u -n`@`hostname` > $(SRC)/assets/builder.txt
	git rev-parse --short HEAD > $(SRC)/assets/revision.txt
	./gen-env.sh $(SRC)
	# many times the gradlew script is not executable by default
	$(VERBOSE)cd $(PSRC) && chmod +x ./gradlew && ./gradlew $(GRADLE_OPTS) $(GRADLE_TARGET)
endef

$(RING_APK): $(LIBRINGJNI) $(JAVA_SOURCES)
	@echo
	@echo "=== Building $@ for $(ARCH) ==="
	@echo
	date +"%Y-%m-%d" > $(SRC)/assets/builddate.txt
	echo `id -u -n`@`hostname` > $(SRC)/assets/builder.txt
	git rev-parse --short HEAD > $(SRC)/assets/revision.txt
	# many times the gradlew script is not executable by default
	$(VERBOSE)cd $(PSRC) && chmod +x ./gradlew && ./gradlew $(GRADLE_OPTS) $(GRADLE_TARGET)

$(LIBRINGJNI): $(LIBRINGJNI_H)
	@if [ -z "$(RING_BUILD_DIR)" ]; then echo "RING_BUILD_DIR not defined" ; exit 1; fi
	@if [ -z "$(ANDROID_NDK)" ]; then echo "ANDROID_NDK not defined" ; exit 1; fi
	@echo
	@echo "=== Building libringjni ==="
	@echo
	$(VERBOSE)if [ -z "$(RING_SRC_DIR)" ] ; then RING_SRC_DIR=./ring-daemon; fi ; \
	if [ -z "$(RING_CONTRIB)" ] ; then RING_CONTRIB="$$RING_SRC_DIR/contrib/$(TARGET_TUPLE)"; fi ; \
	if [ `echo "$(RING_BUILD_DIR)" | head -c 1` != "/" ] ; then \
        RING_BUILD_DIR="../$(RING_BUILD_DIR)"; \
	fi ; \
	[ `echo "$$RING_CONTRIB" | head -c 1` != "/" ] && RING_CONTRIB="../$$RING_CONTRIB"; \
	[ `echo "$$RING_SRC_DIR" | head -c 1` != "/" ] && RING_SRC_DIR="../$$RING_SRC_DIR"; \
	$(ANDROID_NDK)/ndk-build -C $(SRC) \
		RING_SRC_DIR="$$RING_SRC_DIR" \
		RING_CONTRIB="$$RING_CONTRIB" \
		RING_BUILD_DIR="$$RING_BUILD_DIR" \
		NDK_DEBUG=$(NDK_DEBUG) \
		TARGET_CFLAGS="$$RING_EXTRA_CFLAGS"

apk:
	$(call build_apk)

apkclean:
	rm -f $(RING_APK)

lightclean:
	cd $(SRC) && rm -rf libs/armeabi-v7a libs/x86 libs/mips obj bin $(RING_APK)

clean: lightclean
	rm -rf $(SRC)/gen java-libs/*/gen java-libs/*/bin .sdk

jniclean: lightclean
	rm -f $(LIBRINGJNI)

distclean: clean jniclean

install: $(RING_APK)
	@echo "=== Installing Ring on device ==="
	adb wait-for-device
	adb install -r $(RING_APK)

uninstall:
	adb wait-for-device
	adb uninstall cx.ring

run:
	@echo "=== Running Ring on device ==="
	adb wait-for-device
	adb shell am start -n cx.ring/cx.ring.client.HomeActivity

build-and-run: install run

apkclean-run: apkclean build-and-run
	adb logcat -c

distclean-run: distclean build-and-run
	adb logcat -c

vlc-sdk.7z: .sdk
	7z a $@ vlc-sdk/

.sdk:
	mkdir -p vlc-sdk/libs
	cd vlc-android; cp -r libs/* ../vlc-sdk/libs
	mkdir -p vlc-sdk/src/org/videolan
	cp -r vlc-android/src/org/videolan/libvlc vlc-sdk/src/org/videolan
	touch $@

.PHONY: lightclean clean jniclean distclean distclean-run apkclean apkclean-run install run build-and-run
