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