]> git.lizzy.rs Git - minetest.git/blob - build/android/Makefile
Fix many Android build issues
[minetest.git] / build / android / Makefile
1 # build options
2
3 OS := $(shell uname)
4
5 # compile with GPROF
6 # GPROF = 1
7
8 # build for build platform
9 API = 14
10 APP_PLATFORM = android-$(API)
11
12 ANDR_ROOT = $(shell pwd)
13 PROJ_ROOT = $(shell realpath $(ANDR_ROOT)/../..)
14 APP_ROOT = $(ANDR_ROOT)/src/main
15
16 GAMES_TO_COPY = minetest_game
17 MODS_TO_COPY =
18
19
20 VERSION_MAJOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
21         grep ^set\(VERSION_MAJOR\ | sed 's/)/ /' | cut -f2 -d' ')
22 VERSION_MINOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
23         grep ^set\(VERSION_MINOR\ | sed 's/)/ /' | cut -f2 -d' ')
24 VERSION_PATCH := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
25         grep ^set\(VERSION_PATCH\ | sed 's/)/ /' | cut -f2 -d' ')
26
27 ################################################################################
28 # toolchain config for arm new processors
29 ################################################################################
30 TARGET_HOST = arm-linux
31 TARGET_ABI = armeabi-v7a
32 TARGET_LIBDIR = armeabi-v7a
33 TARGET_TOOLCHAIN = arm-linux-androideabi-
34 TARGET_CFLAGS_ADDON = -mfloat-abi=softfp -mfpu=vfpv3 -O3
35 TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON)
36 TARGET_ARCH = armv7
37 CROSS_CC = clang
38 CROSS_CXX = clang++
39 COMPILER_VERSION = clang
40 HAVE_LEVELDB = 0
41
42 ################################################################################
43 # toolchain config for little endian mips
44 ################################################################################
45 #TARGET_HOST = mipsel-linux
46 #TARGET_ABI = mips
47 #TARGET_LIBDIR = mips
48 #TARGET_TOOLCHAIN = mipsel-linux-android-
49 #TARGET_ARCH = mips32
50 #CROSS_CC = mipsel-linux-android-gcc
51 #CROSS_CXX = mipsel-linux-android-g++
52 #COMPILER_VERSION = 4.9
53 #HAVE_LEVELDB = 0
54
55 ################################################################################
56 # toolchain config for x86
57 ################################################################################
58 #TARGET_HOST = x86-linux
59 #TARGET_ABI = x86
60 #TARGET_LIBDIR = x86
61 #TARGET_TOOLCHAIN = x86-
62 #TARGET_ARCH = x86
63 #CROSS_CC = clang
64 #CROSS_CXX = clang++
65 #COMPILER_VERSION = clang
66 #HAVE_LEVELDB = 0
67
68 ################################################################################
69 ASSETS_TIMESTAMP = deps/assets_timestamp
70
71 LEVELDB_DIR = $(ANDR_ROOT)/deps/leveldb/
72 LEVELDB_LIB = $(LEVELDB_DIR)libleveldb.a
73 LEVELDB_TIMESTAMP = $(LEVELDB_DIR)/timestamp
74 LEVELDB_TIMESTAMP_INT = $(ANDR_ROOT)/deps/leveldb_timestamp
75 LEVELDB_URL_GIT = https://github.com/google/leveldb
76 LEVELDB_COMMIT = 2d0320a458d0e6a20fff46d5f80b18bfdcce7018
77
78 OPENAL_DIR = $(ANDR_ROOT)/deps/openal-soft/
79 OPENAL_LIB = $(OPENAL_DIR)libs/$(TARGET_ABI)/libopenal.so
80 OPENAL_TIMESTAMP = $(OPENAL_DIR)/timestamp
81 OPENAL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openal_timestamp
82 OPENAL_URL_GIT = https://github.com/apportable/openal-soft
83
84 OGG_DIR = $(ANDR_ROOT)/deps/libvorbis-libogg-android/
85 OGG_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so
86 VORBIS_LIB = $(OGG_DIR)libs/$(TARGET_ABI)/libogg.so
87 OGG_TIMESTAMP = $(OGG_DIR)timestamp
88 OGG_TIMESTAMP_INT = $(ANDR_ROOT)/deps/ogg_timestamp
89 OGG_URL_GIT = https://gitlab.com/minetest/libvorbis-libogg-android
90
91 IRRLICHT_REVISION = 5145
92 IRRLICHT_DIR = $(ANDR_ROOT)/deps/irrlicht/
93 IRRLICHT_LIB = $(IRRLICHT_DIR)lib/Android/libIrrlicht.a
94 IRRLICHT_TIMESTAMP = $(IRRLICHT_DIR)timestamp
95 IRRLICHT_TIMESTAMP_INT = $(ANDR_ROOT)/deps/irrlicht_timestamp
96 IRRLICHT_URL_SVN = https://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@$(IRRLICHT_REVISION)
97
98 OPENSSL_VERSION = 1.0.2k
99 OPENSSL_BASEDIR = openssl-$(OPENSSL_VERSION)
100 OPENSSL_DIR = $(ANDR_ROOT)/deps/$(OPENSSL_BASEDIR)/
101 OPENSSL_LIB = $(OPENSSL_DIR)/libssl.a
102 OPENSSL_TIMESTAMP = $(OPENSSL_DIR)timestamp
103 OPENSSL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openssl_timestamp
104 OPENSSL_URL = https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz
105
106 CURL_VERSION = 7.54.0
107 CURL_DIR = $(ANDR_ROOT)/deps/curl-$(CURL_VERSION)
108 CURL_LIB = $(CURL_DIR)/lib/.libs/libcurl.a
109 CURL_TIMESTAMP = $(CURL_DIR)/timestamp
110 CURL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/curl_timestamp
111 CURL_URL_HTTP = https://curl.haxx.se/download/curl-${CURL_VERSION}.tar.bz2
112
113 GMP_VERSION = 6.1.2
114 GMP_DIR = $(ANDR_ROOT)/deps/gmp-$(GMP_VERSION)
115 GMP_LIB = $(GMP_DIR)/usr/lib/libgmp.so
116 GMP_TIMESTAMP = $(GMP_DIR)/timestamp
117 GMP_TIMESTAMP_INT = $(ANDR_ROOT)/deps/gmp_timestamp
118 GMP_URL_HTTP = https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2
119
120 FREETYPE_DIR = $(ANDR_ROOT)/deps/freetype2-android/
121 FREETYPE_LIB = $(FREETYPE_DIR)/Android/obj/local/$(TARGET_ABI)/libfreetype2-static.a
122 FREETYPE_TIMESTAMP = $(FREETYPE_DIR)timestamp
123 FREETYPE_TIMESTAMP_INT = $(ANDR_ROOT)/deps/freetype_timestamp
124 FREETYPE_URL_GIT = https://github.com/cdave1/freetype2-android
125
126 ICONV_VERSION = 1.14
127 ICONV_DIR = $(ANDR_ROOT)/deps/libiconv/
128 ICONV_LIB = $(ICONV_DIR)/lib/.libs/libiconv.so
129 ICONV_TIMESTAMP = $(ICONV_DIR)timestamp
130 ICONV_TIMESTAMP_INT = $(ANDR_ROOT)/deps/iconv_timestamp
131 ICONV_URL_HTTP = https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).tar.gz
132
133 SQLITE3_FOLDER = sqlite-amalgamation-3180000
134 SQLITE3_URL = https://www.sqlite.org/2017/$(SQLITE3_FOLDER).zip
135
136 ANDROID_SDK = $(shell grep '^sdk\.dir' local.properties | sed 's/^.*=[[:space:]]*//')
137 ANDROID_NDK = $(shell grep '^ndk\.dir' local.properties | sed 's/^.*=[[:space:]]*//')
138
139 #use interim target variable to switch leveldb on or off
140 ifeq ($(HAVE_LEVELDB),1)
141         LEVELDB_TARGET = $(LEVELDB_LIB)
142 endif
143
144 .PHONY : debug release reconfig delconfig \
145         leveldb_download clean_leveldb leveldb\
146         irrlicht_download clean_irrlicht irrlicht \
147         clean_assets assets sqlite3_download \
148         freetype_download clean_freetype freetype \
149         apk clean_apk \
150         clean_all clean prep_srcdir \
151         install_debug install_release envpaths all \
152         $(ASSETS_TIMESTAMP) $(LEVELDB_TIMESTAMP) \
153         $(OPENAL_TIMESTAMP) $(OGG_TIMESTAMP) \
154         $(IRRLICHT_TIMESTAMP) $(CURL_TIMESTAMP) \
155         $(OPENSSL_TIMESTAMP) \
156         $(ANDR_ROOT)/jni/src/android_version.h \
157         $(ANDR_ROOT)/jni/src/android_version_githash.h
158
159 debug : local.properties
160         export NDEBUG=;                                                            \
161         export BUILD_TYPE=debug;                                                   \
162         $(MAKE) apk
163
164 all : debug release
165
166 release : local.properties
167         @export NDEBUG=1;                                                          \
168         export BUILD_TYPE=release;                                                 \
169         $(MAKE) apk
170
171 reconfig: delconfig
172         @$(MAKE) local.properties
173
174 delconfig:
175         $(RM) local.properties
176
177 local.properties:
178         @echo "Please specify path of ANDROID NDK";                                \
179         echo "e.g. $$HOME/Android/Sdk/ndk-bundle/";                                \
180         read ANDROID_NDK ;                                                         \
181         if [ ! -d $$ANDROID_NDK ] ; then                                           \
182                 echo "$$ANDROID_NDK is not a valid folder";                            \
183                 exit 1;                                                                \
184         fi;                                                                        \
185         echo "ndk.dir = $$ANDROID_NDK" > local.properties;                         \
186         echo "Please specify path of ANDROID SDK";                                 \
187         echo "e.g. $$HOME/Android/Sdk/";                                           \
188         read SDKFLDR ;                                                             \
189         if [ ! -d $$SDKFLDR ] ; then                                               \
190                 echo "$$SDKFLDR is not a valid folder";                                \
191                 exit 1;                                                                \
192         fi;                                                                        \
193         echo "sdk.dir = $$SDKFLDR" >> local.properties;
194
195
196 $(OPENAL_TIMESTAMP) : openal_download
197         @LAST_MODIF=$$(find ${OPENAL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
198         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
199                 touch ${OPENAL_TIMESTAMP};                                            \
200         fi
201
202 openal_download :
203         @if [ ! -d ${OPENAL_DIR} ] ; then                                          \
204                 echo "openal sources missing, downloading...";                         \
205                 mkdir -p ${ANDR_ROOT}/deps;                                            \
206                 cd ${ANDR_ROOT}/deps ;                                                 \
207                 git clone ${OPENAL_URL_GIT} || exit 1;                                 \
208         fi
209
210 openal : $(OPENAL_LIB)
211
212 $(OPENAL_LIB): $(OPENAL_TIMESTAMP)
213         + @REFRESH=0;                                                                \
214         if [ ! -e ${OPENAL_TIMESTAMP_INT} ] ; then                                 \
215                 REFRESH=1;                                                             \
216         fi;                                                                        \
217         if [ ${OPENAL_TIMESTAMP} -nt ${OPENAL_TIMESTAMP_INT} ] ; then              \
218                 REFRESH=1;                                                             \
219         fi;                                                                        \
220         if [ $$REFRESH -ne 0 ] ; then                                              \
221         echo "changed timestamp for openal detected building...";                  \
222         cd ${OPENAL_DIR};                                                          \
223         export APP_PLATFORM=${APP_PLATFORM};                                       \
224         export TARGET_ABI=${TARGET_ABI};                                           \
225         export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}";                       \
226         export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}";                   \
227         export COMPILER_VERSION=${COMPILER_VERSION};                               \
228         ${ANDROID_NDK}/ndk-build                                                   \
229                 NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1;                 \
230         touch ${OPENAL_TIMESTAMP};                                                 \
231         touch ${OPENAL_TIMESTAMP_INT};                                             \
232         else                                                                       \
233                 echo "nothing to be done for openal";                                  \
234         fi
235
236 clean_openal :
237         $(RM) -rf ${OPENAL_DIR}
238
239 $(OGG_TIMESTAMP) : ogg_download
240         @LAST_MODIF=$$(find ${OGG_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
241         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
242                 touch ${OGG_TIMESTAMP};                                                \
243         fi
244
245 ogg_download :
246         @if [ ! -d ${OGG_DIR} ] ; then                                             \
247                 echo "ogg sources missing, downloading...";                            \
248                 mkdir -p ${ANDR_ROOT}/deps;                                            \
249                 cd ${ANDR_ROOT}/deps ;                                                 \
250                 git clone ${OGG_URL_GIT}|| exit 1;                                     \
251                 cd libvorbis-libogg-android ;                                          \
252                 patch -p1 < ${ANDR_ROOT}/patches/libvorbis-libogg-fpu.patch || exit 1; \
253         fi
254
255 ogg : $(OGG_LIB)
256
257 $(OGG_LIB): $(OGG_TIMESTAMP)
258         + @REFRESH=0;                                                                \
259         if [ ! -e ${OGG_TIMESTAMP_INT} ] ; then                                    \
260                 echo "${OGG_TIMESTAMP_INT} doesn't exist";                             \
261                 REFRESH=1;                                                             \
262         fi;                                                                        \
263         if [ ${OGG_TIMESTAMP} -nt ${OGG_TIMESTAMP_INT} ] ; then                    \
264                 REFRESH=1;                                                             \
265         fi;                                                                        \
266         if [ $$REFRESH -ne 0 ] ; then                                              \
267         echo "changed timestamp for ogg detected building...";                     \
268         cd ${OGG_DIR};                                                             \
269         export APP_PLATFORM=${APP_PLATFORM};                                       \
270         export TARGET_ABI=${TARGET_ABI};                                           \
271         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
272                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
273                 --platform=${APP_PLATFORM}                                             \
274                 --install-dir=$${TOOLCHAIN};                                           \
275         touch ${OGG_TIMESTAMP};                                                    \
276         touch ${OGG_TIMESTAMP_INT};                                                \
277         else                                                                       \
278                 echo "nothing to be done for libogg/libvorbis";                        \
279         fi
280
281 clean_ogg :
282         $(RM) -rf ${OGG_DIR}
283
284 $(OPENSSL_TIMESTAMP) : openssl_download
285         @LAST_MODIF=$$(find ${OPENSSL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
286         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
287                 touch ${OPENSSL_TIMESTAMP};                                            \
288         fi
289
290 openssl_download :
291         @if [ ! -d ${OPENSSL_DIR} ] ; then                                         \
292                 echo "openssl sources missing, downloading...";                        \
293                 mkdir -p ${ANDR_ROOT}/deps;                                            \
294                 cd ${ANDR_ROOT}/deps ;                                                 \
295                 wget ${OPENSSL_URL} || exit 1;                                         \
296                 tar -xzf ${OPENSSL_BASEDIR}.tar.gz;                                    \
297                 cd ${OPENSSL_BASEDIR};                                                 \
298                 patch -p1 < ${ANDR_ROOT}/patches/openssl_arch.patch;                   \
299                 sed -i 's/-mandroid //g' Configure;                                    \
300         fi
301
302 openssl : $(OPENSSL_LIB)
303
304 $(OPENSSL_LIB): $(OPENSSL_TIMESTAMP) $(GMP_LIB)
305         @REFRESH=0;                                                                \
306         if [ ! -e ${OPENSSL_TIMESTAMP_INT} ] ; then                                \
307                 echo "${OPENSSL_TIMESTAMP_INT} doesn't exist";                         \
308                 REFRESH=1;                                                             \
309         fi;                                                                        \
310         if [ ${OPENSSL_TIMESTAMP} -nt ${OPENSSL_TIMESTAMP_INT} ] ; then            \
311                 REFRESH=1;                                                             \
312         fi;                                                                        \
313         if [ $$REFRESH -ne 0 ] ; then                                              \
314         echo "changed timestamp for openssl detected building...";                 \
315         cd ${OPENSSL_DIR};                                                         \
316         ln -s ${OPENSSL_DIR} ../openssl;                                           \
317         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-openssl;                          \
318         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
319                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
320                 --platform=${APP_PLATFORM}                                             \
321                 --stl=libc++                                                           \
322                 --install-dir=$${TOOLCHAIN};                                           \
323         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
324         export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
325         export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}";                      \
326         CC=${CROSS_CC} ./Configure enable-gmp no-asm -DL_ENDIAN -I${GMP_DIR}       \
327                 -L${GMP_DIR}/usr/lib android-${TARGET_ARCH} -D__ANDROID_API__=$(API);  \
328         CC=${CROSS_CC} ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make depend;            \
329         CC=${CROSS_CC} ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make build_libs;        \
330         touch ${OPENSSL_TIMESTAMP};                                                \
331         touch ${OPENSSL_TIMESTAMP_INT};                                            \
332         $(RM) -rf $${TOOLCHAIN};                                                   \
333         else                                                                       \
334                 echo "nothing to be done for openssl";                        \
335         fi
336
337 clean_openssl :
338         $(RM) -rf ${OPENSSL_DIR};                                                  \
339         $(RM) -rf $(ANDR_ROOT)/deps/${OPENSSL_BASEDIR}.tar.gz;                     \
340         $(RM) -rf $(ANDR_ROOT)/deps/openssl
341
342 $(LEVELDB_TIMESTAMP) : leveldb_download
343         @LAST_MODIF=$$(find ${LEVELDB_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
344         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
345                 touch ${LEVELDB_TIMESTAMP};                                            \
346         fi
347
348 leveldb_download :
349         @if [ ! -d ${LEVELDB_DIR} ] ; then                                         \
350                 echo "leveldb sources missing, downloading...";                        \
351                 mkdir -p ${ANDR_ROOT}/deps;                                            \
352                 cd ${ANDR_ROOT}/deps ;                                                 \
353                 git clone ${LEVELDB_URL_GIT} || exit 1;                                \
354                 cd ${LEVELDB_DIR} || exit 1;                                           \
355                 git checkout ${LEVELDB_COMMIT} || exit 1;                              \
356         fi
357
358 leveldb : $(LEVELDB_LIB)
359 ifeq ($(HAVE_LEVELDB),1)
360 $(LEVELDB_LIB): $(LEVELDB_TIMESTAMP)
361         @REFRESH=0;                                                                \
362         if [ ! -e ${LEVELDB_TIMESTAMP_INT} ] ; then                                \
363                 REFRESH=1;                                                             \
364         fi;                                                                        \
365         if [ ${LEVELDB_TIMESTAMP} -nt ${LEVELDB_TIMESTAMP_INT} ] ; then            \
366                 REFRESH=1;                                                             \
367         fi;                                                                        \
368         if [ $$REFRESH -ne 0 ] ; then                                              \
369         echo "changed timestamp for leveldb detected building...";                 \
370         cd deps/leveldb;                                                           \
371         export CROSS_PREFIX=${TARGET_TOOLCHAIN};                                   \
372         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-leveldb;                          \
373         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
374                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
375                 --platform=${APP_PLATFORM}                                             \
376                 --stl=libc++                                                           \
377                 --install-dir=$${TOOLCHAIN};                                           \
378         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
379         export CC=${CROSS_CC};                                                     \
380         export CXX=${CROSS_CXX};                                                   \
381         export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
382         export CPPFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}";                   \
383         export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}";                      \
384         export TARGET_OS=OS_ANDROID_CROSSCOMPILE;                                  \
385         $(MAKE) || exit 1;                                                      \
386         touch ${LEVELDB_TIMESTAMP};                                                \
387         touch ${LEVELDB_TIMESTAMP_INT};                                            \
388         $(RM) -rf $${TOOLCHAIN};                                                   \
389         else                                                                       \
390                 echo "nothing to be done for leveldb";                                 \
391         fi
392 endif
393
394 clean_leveldb :
395         $(RM) -rf deps/leveldb
396
397 $(FREETYPE_TIMESTAMP) : freetype_download
398         @LAST_MODIF=$$(find ${FREETYPE_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
399         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
400                 touch ${FREETYPE_TIMESTAMP};                                           \
401         fi
402
403 freetype_download :
404         @if [ ! -d ${FREETYPE_DIR} ] ; then                                        \
405                 echo "freetype sources missing, downloading...";                       \
406                 mkdir -p ${ANDR_ROOT}/deps;                                            \
407                 cd deps;                                                               \
408                 git clone ${FREETYPE_URL_GIT} || exit 1;                               \
409         fi
410
411 freetype : $(FREETYPE_LIB)
412
413 $(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP)
414         + @REFRESH=0;                                                                \
415         if [ ! -e ${FREETYPE_TIMESTAMP_INT} ] ; then                               \
416                 REFRESH=1;                                                             \
417         fi;                                                                        \
418         if [ ! -e ${FREETYPE_LIB} ] ; then                                         \
419                 REFRESH=1;                                                             \
420         fi;                                                                        \
421         if [ ${FREETYPE_TIMESTAMP} -nt ${FREETYPE_TIMESTAMP_INT} ] ; then          \
422                 REFRESH=1;                                                             \
423         fi;                                                                        \
424         if [ $$REFRESH -ne 0 ] ; then                                              \
425         mkdir -p ${FREETYPE_DIR};                                                  \
426         echo "changed timestamp for freetype detected building...";                \
427         cd ${FREETYPE_DIR}/Android/jni;                                            \
428         export APP_PLATFORM=${APP_PLATFORM};                                       \
429         export TARGET_ABI=${TARGET_ABI};                                           \
430         export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}";                       \
431         export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}";                   \
432         export COMPILER_VERSION=${COMPILER_VERSION};                               \
433         ${ANDROID_NDK}/ndk-build                                                   \
434                 NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1;                 \
435         touch ${FREETYPE_TIMESTAMP};                                               \
436         touch ${FREETYPE_TIMESTAMP_INT};                                           \
437         else                                                                       \
438                 echo "nothing to be done for freetype";                                \
439         fi
440
441 clean_freetype :
442         $(RM) -rf ${FREETYPE_DIR}
443
444 $(ICONV_TIMESTAMP) : iconv_download
445         @LAST_MODIF=$$(find ${ICONV_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
446         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
447                 touch ${ICONV_TIMESTAMP};                                           \
448         fi
449
450 iconv_download :
451         @if [ ! -d ${ICONV_DIR} ] ; then                                           \
452                 echo "iconv sources missing, downloading...";                      \
453                 mkdir -p ${ANDR_ROOT}/deps;                                        \
454                 cd ${ANDR_ROOT}/deps;                                              \
455                 wget ${ICONV_URL_HTTP} || exit 1;                                  \
456                 tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1;               \
457                 rm libiconv-${ICONV_VERSION}.tar.gz;                               \
458                 ln -s libiconv-${ICONV_VERSION} libiconv;                          \
459                 cd ${ICONV_DIR};                                                   \
460                 patch -p1 < ${ANDR_ROOT}/patches/libiconv_android.patch;           \
461                 patch -p1 < ${ANDR_ROOT}/patches/libiconv_stdio.patch;             \
462         fi
463
464 iconv : $(ICONV_LIB)
465
466 $(ICONV_LIB) : $(ICONV_TIMESTAMP)
467         @REFRESH=0;                                                                \
468         if [ ! -e ${ICONV_TIMESTAMP_INT} ] ; then                                  \
469                 REFRESH=1;                                                         \
470         fi;                                                                        \
471         if [ ! -e ${ICONV_LIB} ] ; then                                            \
472                 REFRESH=1;                                                         \
473         fi;                                                                        \
474         if [ ${ICONV_TIMESTAMP} -nt ${ICONV_TIMESTAMP_INT} ] ; then                \
475                 REFRESH=1;                                                         \
476         fi;                                                                        \
477         if [ $$REFRESH -ne 0 ] ; then                                              \
478         mkdir -p ${ICONV_DIR};                                                     \
479         echo "changed timestamp for iconv detected building...";                   \
480         cd ${ICONV_DIR};                                                           \
481         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv;                            \
482         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
483                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
484                 --platform=${APP_PLATFORM}                                             \
485                 --stl=libc++                                                           \
486                 --install-dir=$${TOOLCHAIN};                                           \
487         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
488         export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
489         export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON} -lstdc++";             \
490         export CC=${CROSS_CC};                                                     \
491         export CXX=${CROSS_CXX};                                                   \
492         export TARGET_OS=OS_ANDROID_CROSSCOMPILE;                                  \
493         ./configure --host=${TARGET_HOST} || exit 1;                               \
494         sed -i 's/LIBICONV_VERSION_INFO) /LIBICONV_VERSION_INFO) -avoid-version /g' lib/Makefile; \
495         grep "iconv_LDFLAGS" src/Makefile;                                         \
496         $(MAKE) -s || exit 1;                                                      \
497         touch ${ICONV_TIMESTAMP};                                                  \
498         touch ${ICONV_TIMESTAMP_INT};                                              \
499         rm -rf ${TOOLCHAIN};                                                       \
500         else                                                                       \
501                 echo "nothing to be done for iconv";                               \
502         fi
503
504 clean_iconv :
505         $(RM) -rf ${ICONV_DIR}
506
507 #Note: Texturehack patch is required for gpu's not supporting color format
508 #      correctly. Known bad GPU:
509 #      -geforce on emulator
510 #      -Vivante Corporation GC1000 core (e.g. Galaxy Tab 3)
511
512 irrlicht_download :
513         @if [ ! -d "deps/irrlicht" ] ; then                                        \
514                 echo "irrlicht sources missing, downloading...";                       \
515                 mkdir -p ${ANDR_ROOT}/deps;                                            \
516                 cd deps;                                                               \
517                 svn co ${IRRLICHT_URL_SVN} irrlicht || exit 1;                         \
518                 cd irrlicht;                                                           \
519                 patch -p1 < ${ANDR_ROOT}/patches/irrlicht-touchcount.patch || exit 1;  \
520                 patch -p1 < ${ANDR_ROOT}/patches/irrlicht-back_button.patch || exit 1; \
521                 patch -p1 < ${ANDR_ROOT}/patches/irrlicht-texturehack.patch || exit 1; \
522                 patch -p1 < ${ANDR_ROOT}/patches/irrlicht-native_activity.patch || exit 1; \
523         fi
524
525 $(IRRLICHT_TIMESTAMP) : irrlicht_download
526         @LAST_MODIF=$$(find ${IRRLICHT_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
527         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
528                 touch ${IRRLICHT_TIMESTAMP};                                           \
529         fi
530
531 irrlicht : $(IRRLICHT_LIB)
532
533 $(IRRLICHT_LIB): $(IRRLICHT_TIMESTAMP) $(FREETYPE_LIB)
534         + @REFRESH=0;                                                                \
535         if [ ! -e ${IRRLICHT_TIMESTAMP_INT} ] ; then                               \
536                 REFRESH=1;                                                             \
537         fi;                                                                        \
538         if [ ! -e ${IRRLICHT_LIB} ] ; then                                         \
539                 REFRESH=1;                                                             \
540         fi;                                                                        \
541         if [ ${IRRLICHT_TIMESTAMP} -nt ${IRRLICHT_TIMESTAMP_INT} ] ; then          \
542                 REFRESH=1;                                                             \
543         fi;                                                                        \
544         if [ $$REFRESH -ne 0 ] ; then                                              \
545         mkdir -p ${IRRLICHT_DIR};                                                  \
546         echo "changed timestamp for irrlicht detected building...";                \
547         cd deps/irrlicht/source/Irrlicht/Android;                                  \
548         export APP_PLATFORM=${APP_PLATFORM};                                       \
549         export TARGET_ABI=${TARGET_ABI};                                           \
550         export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}";                       \
551         export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}";                   \
552         export COMPILER_VERSION=${COMPILER_VERSION};                               \
553         ${ANDROID_NDK}/ndk-build                                                   \
554                 NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1;                 \
555         touch ${IRRLICHT_TIMESTAMP};                                               \
556         touch ${IRRLICHT_TIMESTAMP_INT};                                           \
557         else                                                                       \
558                 echo "nothing to be done for irrlicht";                                \
559         fi
560
561 clean_irrlicht :
562         $(RM) -rf deps/irrlicht
563
564 $(CURL_TIMESTAMP) : curl_download
565         @LAST_MODIF=$$(find ${CURL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
566         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
567                 touch ${CURL_TIMESTAMP};                                               \
568         fi
569
570 curl_download :
571         @if [ ! -d "deps/curl-${CURL_VERSION}" ] ; then                            \
572                 echo "curl sources missing, downloading...";                           \
573                 mkdir -p ${ANDR_ROOT}/deps;                                            \
574                 cd deps;                                                               \
575                 wget ${CURL_URL_HTTP} || exit 1;                                       \
576                 tar -xjf curl-${CURL_VERSION}.tar.bz2 || exit 1;                       \
577                 rm curl-${CURL_VERSION}.tar.bz2;                                       \
578                 ln -s curl-${CURL_VERSION} curl;                                       \
579         fi
580
581 curl : $(CURL_LIB)
582
583 $(CURL_LIB): $(CURL_TIMESTAMP) $(OPENSSL_LIB)
584         @REFRESH=0;                                                                \
585         if [ ! -e ${CURL_TIMESTAMP_INT} ] ; then                                   \
586                 REFRESH=1;                                                             \
587         fi;                                                                        \
588         if [ ! -e ${CURL_LIB} ] ; then                                             \
589                 REFRESH=1;                                                             \
590         fi;                                                                        \
591         if [ ${CURL_TIMESTAMP} -nt ${CURL_TIMESTAMP_INT} ] ; then                  \
592                 REFRESH=1;                                                             \
593         fi;                                                                        \
594         if [ $$REFRESH -ne 0 ] ; then                                              \
595         mkdir -p ${CURL_DIR};                                                      \
596         echo "changed timestamp for curl detected building...";                    \
597         cd deps/curl-${CURL_VERSION};                                              \
598         export CROSS_PREFIX=${TARGET_TOOLCHAIN};                                   \
599         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-curl;                             \
600         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
601                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
602                 --platform=${APP_PLATFORM}                                             \
603                 --stl=libc++                                                           \
604                 --install-dir=$${TOOLCHAIN};                                           \
605         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
606         export CC=${CROSS_CC};                                                     \
607         export CXX=${CROSS_CXX};                                                   \
608         export TARGET_OS=OS_ANDROID_CROSSCOMPILE;                                  \
609         export CPPFLAGS="$${CPPFLAGS} -I${OPENSSL_DIR}/include ${TARGET_CFLAGS_ADDON}"; \
610         export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
611         export LDFLAGS="$${LDFLAGS} -L${OPENSSL_DIR} ${TARGET_LDFLAGS_ADDON}";     \
612         ./configure --host=${TARGET_HOST} --disable-shared --enable-static --with-ssl;  \
613         $(MAKE) -s || exit 1;                                                      \
614         touch ${CURL_TIMESTAMP};                                                   \
615         touch ${CURL_TIMESTAMP_INT};                                               \
616         $(RM) -rf $${TOOLCHAIN};                                                   \
617         else                                                                       \
618                 echo "nothing to be done for curl";                                    \
619         fi
620
621 clean_curl :
622         $(RM) -rf deps/curl-${CURL_VERSION}                                        \
623         $(RM) -f deps/curl
624
625 $(GMP_TIMESTAMP) : gmp_download
626         @LAST_MODIF=$$(find ${GMP_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
627         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
628                 touch ${GMP_TIMESTAMP};                                            \
629         fi
630
631 gmp_download :
632         @if [ ! -d "${GMP_DIR}" ] ; then                                           \
633                 echo "gmp sources missing, downloading...";                        \
634                 mkdir -p ${ANDR_ROOT}/deps;                                        \
635                 cd deps;                                                           \
636                 wget ${GMP_URL_HTTP} || exit 1;                                    \
637                 tar -xjf gmp-${GMP_VERSION}.tar.bz2 || exit 1;                     \
638                 rm gmp-${GMP_VERSION}.tar.bz2;                                     \
639                 ln -s gmp-${GMP_VERSION} gmp;                                      \
640         fi
641
642 gmp : $(GMP_LIB)
643
644 $(GMP_LIB): $(GMP_TIMESTAMP)
645         @REFRESH=0;                                                                \
646         if [ ! -e ${GMP_TIMESTAMP_INT} ] ; then                                    \
647                 REFRESH=1;                                                         \
648         fi;                                                                        \
649         if [ ! -e ${GMP_LIB} ] ; then                                              \
650                 REFRESH=1;                                                         \
651         fi;                                                                        \
652         if [ ${GMP_TIMESTAMP} -nt ${GMP_TIMESTAMP_INT} ] ; then                    \
653                 REFRESH=1;                                                         \
654         fi;                                                                        \
655         if [ $$REFRESH -ne 0 ] ; then                                              \
656         mkdir -p ${GMP_DIR};                                                       \
657         echo "changed timestamp for gmp detected building...";                     \
658         cd deps/gmp-${GMP_VERSION};                                                \
659         export CROSS_PREFIX=${TARGET_TOOLCHAIN};                                   \
660         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-gmp;                              \
661         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
662                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
663                 --platform=${APP_PLATFORM}                                             \
664                 --stl=libc++                                                           \
665                 --install-dir=$${TOOLCHAIN};                                           \
666         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
667         export CC=${CROSS_CC};                                                     \
668         export CXX=${CROSS_CXX};                                                   \
669         export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}";                      \
670         export LIBGMP_LDFLAGS="-avoid-version";                                    \
671         export LIBGMPXX_LDFLAGS="-avoid-version";                                  \
672         ./configure --disable-static --host=${TARGET_HOST} --prefix=/usr;          \
673         $(MAKE) install DESTDIR=/${GMP_DIR} || exit 1;                             \
674         touch ${GMP_TIMESTAMP};                                                    \
675         touch ${GMP_TIMESTAMP_INT};                                                \
676         $(RM) -rf $${TOOLCHAIN};                                                   \
677         else                                                                       \
678                 echo "nothing to be done for gmp";                                 \
679         fi
680
681 clean_gmp:
682         $(RM) -rf deps/gmp-${GMP_VERSION}                                          \
683         $(RM) -f deps/gmp
684
685 sqlite3_download: deps/${SQLITE3_FOLDER}/sqlite3.c
686
687 deps/${SQLITE3_FOLDER}/sqlite3.c :
688         cd deps;                                                                    \
689         wget ${SQLITE3_URL};                                                        \
690         unzip ${SQLITE3_FOLDER}.zip;                                                \
691         ln -s ${SQLITE3_FOLDER} sqlite;                                             \
692         cd ${SQLITE3_FOLDER};
693
694 clean_sqlite3:
695         cd deps && $(RM) -rf ${SQLITE3_FOLDER} && $(RM) -f ${SQLITE3_FOLDER}.zip && \
696         $(RM) -f sqlite
697
698 $(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB)
699         @mkdir -p ${ANDR_ROOT}/deps;                                                \
700         for DIRNAME in {builtin,client,doc,fonts,games,mods,po,textures}; do        \
701                 LAST_MODIF=$$(find ${PROJ_ROOT}/${DIRNAME} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
702                 if [ $$(basename $$LAST_MODIF) != "timestamp" ]; then               \
703                         touch ${PROJ_ROOT}/${DIRNAME}/timestamp;                   \
704                         touch ${ASSETS_TIMESTAMP};                                  \
705                         echo ${DIRNAME} changed $$LAST_MODIF;                       \
706                 fi;                                                                 \
707         done;                                                                       \
708         LAST_MODIF=$$(find ${IRRLICHT_DIR}/media -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
709         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
710                 touch ${IRRLICHT_DIR}/media/timestamp;                                 \
711                 touch ${ASSETS_TIMESTAMP};                                             \
712         fi;                                                                        \
713         if [ ${PROJ_ROOT}/minetest.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then   \
714                 echo "conf changed";                                                   \
715                 touch ${ASSETS_TIMESTAMP};                                             \
716         fi;                                                                        \
717         if [ ${PROJ_ROOT}/README.txt -nt ${ASSETS_TIMESTAMP} ] ; then              \
718                 touch ${ASSETS_TIMESTAMP};                                             \
719         fi;                                                                        \
720         if [ ! -e $(ASSETS_TIMESTAMP) ] ; then                                     \
721                 touch $(ASSETS_TIMESTAMP);                                             \
722         fi
723
724 assets : $(ASSETS_TIMESTAMP)
725         @REFRESH=0;                                                                \
726         if [ ! -e ${ASSETS_TIMESTAMP}.old ] ; then                                 \
727                 REFRESH=1;                                                             \
728         fi;                                                                        \
729         if [ ${ASSETS_TIMESTAMP} -nt ${ASSETS_TIMESTAMP}.old ] ; then              \
730                 REFRESH=1;                                                             \
731         fi;                                                                        \
732         if [ ! -d ${APP_ROOT}/assets ] ; then                                      \
733                 REFRESH=1;                                                             \
734         fi;                                                                        \
735         if [ $$REFRESH -ne 0 ] ; then                                              \
736         echo "assets changed, refreshing...";                                      \
737         $(MAKE) clean_assets;                                                      \
738         mkdir -p ${APP_ROOT}/assets/Minetest;                                      \
739         cp ${PROJ_ROOT}/minetest.conf.example ${APP_ROOT}/assets/Minetest;         \
740         cp ${PROJ_ROOT}/README.md ${APP_ROOT}/assets/Minetest;                     \
741         cp -r ${PROJ_ROOT}/builtin ${APP_ROOT}/assets/Minetest;                    \
742         mkdir -p ${APP_ROOT}/assets/Minetest/client;                                  \
743         cp -r ${PROJ_ROOT}/client/shaders ${APP_ROOT}/assets/Minetest/client;      \
744         cp ${PROJ_ROOT}/doc/lgpl-2.1.txt ${APP_ROOT}/assets/Minetest/LICENSE.txt;  \
745         mkdir -p ${APP_ROOT}/assets/Minetest/fonts;                                   \
746         cp -r ${PROJ_ROOT}/fonts/*.ttf ${APP_ROOT}/assets/Minetest/fonts/;         \
747         mkdir -p ${APP_ROOT}/assets/Minetest/games;                                   \
748         for game in ${GAMES_TO_COPY}; do                                           \
749             cp -r ${PROJ_ROOT}/games/$$game ${APP_ROOT}/assets/Minetest/games/;    \
750         done;                                                                      \
751         mkdir -p ${APP_ROOT}/assets/Minetest/mods;                                    \
752         for mod in ${MODS_TO_COPY}; do                                             \
753             cp -r ${PROJ_ROOT}/mods/$$mod ${APP_ROOT}/assets/Minetest/mods/;       \
754         done;                                                                      \
755         cp -r ${PROJ_ROOT}/po ${APP_ROOT}/assets/Minetest;                         \
756         cp -r ${PROJ_ROOT}/textures ${APP_ROOT}/assets/Minetest;                   \
757         mkdir -p ${APP_ROOT}/assets/Minetest/media;                                \
758         cp -r ${IRRLICHT_DIR}/media/Shaders ${APP_ROOT}/assets/Minetest/media;     \
759         cd ${APP_ROOT}/assets ||  exit 1;                                          \
760         find . -name "timestamp" -exec rm {} \; ;                                  \
761         find . -name "*.blend" -exec rm {} \; ;                                    \
762         find . -name "*~" -exec rm {} \; ;                                         \
763         find . -type d -path "*.git" -exec rm -rf {} \; ;                          \
764         find . -type d -path "*.svn" -exec rm -rf {} \; ;                          \
765         find . -type f -path "*.gitignore" -exec rm -rf {} \; ;                    \
766         ls -R | grep ":$$" | sed -e 's/:$$//' -e 's/\.//' -e 's/^\///' > "index.txt"; \
767         find -L Minetest > filelist.txt;                                             \
768         cp ${ANDR_ROOT}/${ASSETS_TIMESTAMP} ${ANDR_ROOT}/${ASSETS_TIMESTAMP}.old;  \
769         else                                                                       \
770                 echo "nothing to be done for assets";                                  \
771         fi
772
773 clean_assets :
774         @$(RM) -r assets
775
776 apk: local.properties assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET)       \
777         $(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ANDR_ROOT)/jni/src/android_version.h    \
778         $(ANDR_ROOT)/jni/src/android_version_githash.h sqlite3_download
779         + @export TARGET_LIBDIR=${TARGET_LIBDIR};                                  \
780         export HAVE_LEVELDB=${HAVE_LEVELDB};                                       \
781         export APP_PLATFORM=${APP_PLATFORM};                                       \
782         export TARGET_ABI=${TARGET_ABI};                                           \
783         export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}";                       \
784         export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}";                   \
785         export COMPILER_VERSION=${COMPILER_VERSION};                               \
786         export GPROF=${GPROF};                                                     \
787         ${ANDROID_NDK}/ndk-build || exit 1;                                        \
788         if [ ! -e ${APP_ROOT}/jniLibs ]; then                                      \
789                 ln -s ${ANDR_ROOT}/libs ${APP_ROOT}/jniLibs || exit 1;             \
790         fi;                                                                        \
791         export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" && \
792         export BUILD_TYPE_C=$$(echo "$${BUILD_TYPE}" | sed 's/./\U&/') &&          \
793         ./gradlew assemble$$BUILD_TYPE_C &&                                           \
794         echo "APK stored at: build/outputs/apk/$$BUILD_TYPE/Minetest-$$BUILD_TYPE.apk" && \
795         echo "You can install it with \`make install_$$BUILD_TYPE\`"
796
797 # These Intentionally doesn't depend on their respective build steps,
798 # because it takes a while to verify that everything's up-to-date.
799 install_debug:
800         ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/debug/Minetest-debug.apk
801
802 install_release:
803         ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/release/Minetest-release.apk
804
805 prep_srcdir :
806         @if [ ! -e ${ANDR_ROOT}/jni/src ]; then                                    \
807                 ln -s ${PROJ_ROOT}/src ${ANDR_ROOT}/jni/src;                       \
808         fi;                                                                        \
809         if [ ! -e ${ANDR_ROOT}/jni/lib ]; then                                     \
810                 ln -s ${PROJ_ROOT}/lib ${ANDR_ROOT}/jni/lib;                       \
811         fi
812
813 clean_apk :
814         ./gradlew clean
815
816 clean_all :
817         @$(MAKE) clean_apk;                                                        \
818         $(MAKE) clean_assets clean_iconv clean_irrlicht clean_leveldb clean_curl   \
819         clean_openssl clean_openal clean_ogg clean_gmp;                            \
820         sleep 1;                                                                   \
821         $(RM) -r gen libs obj deps bin Debug and_env
822
823 $(ANDR_ROOT)/jni/src/android_version_githash.h : prep_srcdir
824         @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version_githash.h;        \
825         export VERSION_FILE_NEW=$${VERSION_FILE}.new;                              \
826         {                                                                          \
827         echo "#ifndef ANDROID_MT_VERSION_GITHASH_H";                               \
828         echo "#define ANDROID_MT_VERSION_GITHASH_H";                               \
829         export GITHASH=$$(git rev-parse --short=8 HEAD);                           \
830         export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}";   \
831         echo "#define VERSION_GITHASH \"$$VERSION_STR-$$GITHASH-Android\"";        \
832         echo "#endif";                                                             \
833         } > "$${VERSION_FILE_NEW}";                                                \
834         if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then                    \
835                 echo "android_version_githash.h changed, updating...";             \
836                 mv "$${VERSION_FILE_NEW}" "$${VERSION_FILE}";                      \
837         else                                                                       \
838                 rm "$${VERSION_FILE_NEW}";                                         \
839         fi
840
841
842 $(ANDR_ROOT)/jni/src/android_version.h : prep_srcdir
843         @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version.h;                \
844         export VERSION_FILE_NEW=$${VERSION_FILE}.new;                              \
845         {                                                                          \
846         echo "#ifndef ANDROID_MT_VERSION_H";                                       \
847         echo "#define ANDROID_MT_VERSION_H";                                       \
848         echo "#define VERSION_MAJOR ${VERSION_MAJOR}";                             \
849         echo "#define VERSION_MINOR ${VERSION_MINOR}";                             \
850         echo "#define VERSION_PATCH ${VERSION_PATCH}";                             \
851         echo "#define VERSION_STRING STR(VERSION_MAJOR) \".\" STR(VERSION_MINOR) \
852         \".\" STR(VERSION_PATCH)";                                                 \
853         echo "#endif";                                                             \
854         } > $${VERSION_FILE_NEW};                                                  \
855         if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then                    \
856                 echo "android_version.h changed, updating...";                     \
857                 mv "$${VERSION_FILE_NEW}" "$${VERSION_FILE}";                      \
858         else                                                                       \
859                 rm "$${VERSION_FILE_NEW}";                                         \
860         fi
861
862 clean : clean_apk clean_assets