blob: f9ffb5f265165d7f05f7caaf005b20734b73e387 [file] [log] [blame]
Alexandre Lision43b9aeb2014-07-15 14:21:19 -04001# Sources and objects
Tristan Matthewsccf51e32013-07-18 14:40:51 -04002
Alexandre Lision43b9aeb2014-07-15 14:21:19 -04003export ANDROID_HOME=$(ANDROID_SDK)
Tristan Matthews5bb1b5d2013-07-18 14:32:58 -04004
Alexandre Lision43b9aeb2014-07-15 14:21:19 -04005ARCH = $(ANDROID_ABI)
Tristan Matthews322b9fd2013-07-18 15:55:43 -04006
Adrien Béraudb00ed3f2015-06-07 15:36:06 -04007PSRC=ring-android
8SRC=$(PSRC)/app/src/main
Adrien Béraud7f97ca92015-06-07 15:36:06 -04009LIBRINGJNI_H=ring-daemon/src/dring/dring.h
Adrien Béraudb00ed3f2015-06-07 15:36:06 -040010LIBRINGJNI=$(SRC)/obj/local/${ANDROID_ABI}/libring.so
Alexandre Lisionec1f3ee2014-08-04 19:12:42 -040011
Adrien Béraudb00ed3f2015-06-07 15:36:06 -040012JAVA_SOURCES=$(shell find $(SRC)/java/cx/ring/ -type f -name "*.java")
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040013
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040014ifneq ($(V),)
Adrien Béraudb00ed3f2015-06-07 15:36:06 -040015GRADLE_OPTS += -d
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040016VERBOSE =
17GEN =
18else
19VERBOSE = @
20GEN = @echo "Generating" $@;
21endif
22
23ifeq ($(RELEASE),1)
Adrien Béraudb00ed3f2015-06-07 15:36:06 -040024GRADLE_TARGET = assembleRelease
Adrien Béraud04d822c2015-04-02 17:44:36 -040025RING_APK=$(SRC)/bin/Ring-release-unsigned.apk
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040026NDK_DEBUG=0
27else
Adrien Béraudb00ed3f2015-06-07 15:36:06 -040028GRADLE_TARGET = assembleDebug
Adrien Béraud04d822c2015-04-02 17:44:36 -040029RING_APK=$(SRC)/bin/Ring-debug.apk
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040030NDK_DEBUG=1
31endif
32
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040033define build_apk
34 @echo
Adrien Béraud04d822c2015-04-02 17:44:36 -040035 @echo "=== Building $(RING_APK) for $(ARCH) ==="
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040036 @echo
37 date +"%Y-%m-%d" > $(SRC)/assets/builddate.txt
38 echo `id -u -n`@`hostname` > $(SRC)/assets/builder.txt
39 git rev-parse --short HEAD > $(SRC)/assets/revision.txt
40 ./gen-env.sh $(SRC)
Adrien Béraudb00ed3f2015-06-07 15:36:06 -040041 # many times the gradlew script is not executable by default
42 $(VERBOSE)cd $(PSRC) && chmod +x ./gradlew && ./gradlew $(GRADLE_OPTS) $(GRADLE_TARGET)
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040043endef
44
Adrien Béraud04d822c2015-04-02 17:44:36 -040045$(RING_APK): $(LIBRINGJNI) $(JAVA_SOURCES)
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040046 @echo
47 @echo "=== Building $@ for $(ARCH) ==="
48 @echo
49 date +"%Y-%m-%d" > $(SRC)/assets/builddate.txt
50 echo `id -u -n`@`hostname` > $(SRC)/assets/builder.txt
51 git rev-parse --short HEAD > $(SRC)/assets/revision.txt
Adrien Béraudb00ed3f2015-06-07 15:36:06 -040052 # many times the gradlew script is not executable by default
53 $(VERBOSE)cd $(PSRC) && chmod +x ./gradlew && ./gradlew $(GRADLE_OPTS) $(GRADLE_TARGET)
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040054
Adrien Béraud04d822c2015-04-02 17:44:36 -040055$(LIBRINGJNI): $(LIBRINGJNI_H)
56 @if [ -z "$(RING_BUILD_DIR)" ]; then echo "RING_BUILD_DIR not defined" ; exit 1; fi
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040057 @if [ -z "$(ANDROID_NDK)" ]; then echo "ANDROID_NDK not defined" ; exit 1; fi
58 @echo
Adrien Béraud04d822c2015-04-02 17:44:36 -040059 @echo "=== Building libringjni ==="
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040060 @echo
Adrien Béraud7f97ca92015-06-07 15:36:06 -040061 $(VERBOSE)if [ -z "$(RING_SRC_DIR)" ] ; then RING_SRC_DIR=./ring-daemon; fi ; \
Adrien Béraud87d878d2015-06-03 15:09:19 -040062 if [ -z "$(RING_CONTRIB)" ] ; then RING_CONTRIB="$$RING_SRC_DIR/contrib/$(TARGET_TUPLE)"; fi ; \
Adrien Béraud04d822c2015-04-02 17:44:36 -040063 if [ `echo "$(RING_BUILD_DIR)" | head -c 1` != "/" ] ; then \
64 RING_BUILD_DIR="../$(RING_BUILD_DIR)"; \
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040065 fi ; \
Adrien Béraud04d822c2015-04-02 17:44:36 -040066 [ `echo "$$RING_CONTRIB" | head -c 1` != "/" ] && RING_CONTRIB="../$$RING_CONTRIB"; \
67 [ `echo "$$RING_SRC_DIR" | head -c 1` != "/" ] && RING_SRC_DIR="../$$RING_SRC_DIR"; \
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040068 $(ANDROID_NDK)/ndk-build -C $(SRC) \
Adrien Béraud04d822c2015-04-02 17:44:36 -040069 RING_SRC_DIR="$$RING_SRC_DIR" \
70 RING_CONTRIB="$$RING_CONTRIB" \
71 RING_BUILD_DIR="$$RING_BUILD_DIR" \
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040072 NDK_DEBUG=$(NDK_DEBUG) \
Adrien Béraud04d822c2015-04-02 17:44:36 -040073 TARGET_CFLAGS="$$RING_EXTRA_CFLAGS"
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040074
Alexandre Lision7d5df5d2014-10-27 13:10:01 -040075apk:
76 $(call build_apk)
77
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040078apkclean:
Adrien Béraud04d822c2015-04-02 17:44:36 -040079 rm -f $(RING_APK)
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040080
81lightclean:
Adrien Béraud04d822c2015-04-02 17:44:36 -040082 cd $(SRC) && rm -rf libs/armeabi-v7a libs/x86 libs/mips obj bin $(RING_APK)
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040083
84clean: lightclean
Tristan Matthews1b5d1322014-09-29 17:29:16 -040085 rm -rf $(SRC)/gen java-libs/*/gen java-libs/*/bin .sdk
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040086
87jniclean: lightclean
Adrien Béraud04d822c2015-04-02 17:44:36 -040088 rm -f $(LIBRINGJNI)
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040089
90distclean: clean jniclean
91
Adrien Béraud04d822c2015-04-02 17:44:36 -040092install: $(RING_APK)
Adrien Béraud87d878d2015-06-03 15:09:19 -040093 @echo "=== Installing Ring on device ==="
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040094 adb wait-for-device
Adrien Béraud04d822c2015-04-02 17:44:36 -040095 adb install -r $(RING_APK)
Tristan Matthews5bb1b5d2013-07-18 14:32:58 -040096
Tristan Matthewsfdd94e52013-07-19 16:44:44 -040097uninstall:
Alexandre Lision43b9aeb2014-07-15 14:21:19 -040098 adb wait-for-device
Adrien Béraud04d822c2015-04-02 17:44:36 -040099 adb uninstall cx.ring
Tristan Matthewsfdd94e52013-07-19 16:44:44 -0400100
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400101run:
Adrien Béraud87d878d2015-06-03 15:09:19 -0400102 @echo "=== Running Ring on device ==="
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400103 adb wait-for-device
Adrien Béraud04d822c2015-04-02 17:44:36 -0400104 adb shell am start -n cx.ring/cx.ring.client.HomeActivity
Alexandre Lision43b9aeb2014-07-15 14:21:19 -0400105
106build-and-run: install run
107
108apkclean-run: apkclean build-and-run
109 adb logcat -c
110
111distclean-run: distclean build-and-run
112 adb logcat -c
113
114vlc-sdk.7z: .sdk
115 7z a $@ vlc-sdk/
116
117.sdk:
118 mkdir -p vlc-sdk/libs
119 cd vlc-android; cp -r libs/* ../vlc-sdk/libs
120 mkdir -p vlc-sdk/src/org/videolan
121 cp -r vlc-android/src/org/videolan/libvlc vlc-sdk/src/org/videolan
122 touch $@
123
124.PHONY: lightclean clean jniclean distclean distclean-run apkclean apkclean-run install run build-and-run