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