| # 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 |