]> git.lizzy.rs Git - dragonfireclient.git/blob - build/android/Makefile
Gradle now copy most of assets
[dragonfireclient.git] / build / android / Makefile
1 # build options
2
3 OS := $(shell uname)
4
5 # compile with GPROF
6 # GPROF = 1
7
8 # build for build platform
9 API = 14
10 APP_PLATFORM = android-$(API)
11
12 ANDR_ROOT = $(shell pwd)
13 PROJ_ROOT = $(shell realpath $(ANDR_ROOT)/../..)
14 APP_ROOT = $(ANDR_ROOT)/src/main
15
16 VERSION_MAJOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
17         grep ^set\(VERSION_MAJOR\ | sed 's/)/ /' | cut -f2 -d' ')
18 VERSION_MINOR := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
19         grep ^set\(VERSION_MINOR\ | sed 's/)/ /' | cut -f2 -d' ')
20 VERSION_PATCH := $(shell cat $(PROJ_ROOT)/CMakeLists.txt | \
21         grep ^set\(VERSION_PATCH\ | sed 's/)/ /' | cut -f2 -d' ')
22
23 ################################################################################
24 # toolchain config for arm new processors
25 ################################################################################
26 TARGET_HOST = arm-linux
27 TARGET_ABI = armeabi-v7a
28 TARGET_LIBDIR = armeabi-v7a
29 TARGET_TOOLCHAIN = arm-linux-androideabi-
30 TARGET_CFLAGS_ADDON = -mfloat-abi=softfp -mfpu=vfpv3 -O3
31 TARGET_CXXFLAGS_ADDON = $(TARGET_CFLAGS_ADDON)
32 TARGET_ARCH = armv7
33 CROSS_CC = clang
34 CROSS_CXX = clang++
35 COMPILER_VERSION = clang
36 HAVE_LEVELDB = 0
37
38 ################################################################################
39 # toolchain config for little endian mips
40 ################################################################################
41 #TARGET_HOST = mipsel-linux
42 #TARGET_ABI = mips
43 #TARGET_LIBDIR = mips
44 #TARGET_TOOLCHAIN = mipsel-linux-android-
45 #TARGET_ARCH = mips32
46 #CROSS_CC = mipsel-linux-android-gcc
47 #CROSS_CXX = mipsel-linux-android-g++
48 #COMPILER_VERSION = 4.9
49 #HAVE_LEVELDB = 0
50
51 ################################################################################
52 # toolchain config for x86
53 ################################################################################
54 #TARGET_HOST = x86-linux
55 #TARGET_ABI = x86
56 #TARGET_LIBDIR = x86
57 #TARGET_TOOLCHAIN = x86-
58 #TARGET_ARCH = x86
59 #CROSS_CC = clang
60 #CROSS_CXX = clang++
61 #COMPILER_VERSION = clang
62 #HAVE_LEVELDB = 0
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://gitlab.com/minetest/libvorbis-libogg-android
86
87 IRRLICHT_REVISION = 5150
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 = https://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@$(IRRLICHT_REVISION)
93
94 OPENSSL_VERSION = 1.0.2n
95 OPENSSL_BASEDIR = openssl-$(OPENSSL_VERSION)
96 OPENSSL_DIR = $(ANDR_ROOT)/deps/$(OPENSSL_BASEDIR)/
97 OPENSSL_LIB = $(OPENSSL_DIR)/libssl.a
98 OPENSSL_TIMESTAMP = $(OPENSSL_DIR)timestamp
99 OPENSSL_TIMESTAMP_INT = $(ANDR_ROOT)/deps/openssl_timestamp
100 OPENSSL_URL = https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz
101
102 CURL_VERSION = 7.60.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 = https://curl.haxx.se/download/curl-${CURL_VERSION}.tar.bz2
108
109 GMP_VERSION = 6.1.2
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 = https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$(ICONV_VERSION).tar.gz
128
129 SQLITE3_FOLDER = sqlite-amalgamation-3240000
130 SQLITE3_URL = https://www.sqlite.org/2018/$(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
135 #use interim target variable to switch leveldb on or off
136 ifeq ($(HAVE_LEVELDB),1)
137         LEVELDB_TARGET = $(LEVELDB_LIB)
138 endif
139
140 .PHONY : debug release reconfig delconfig \
141         leveldb_download clean_leveldb leveldb\
142         irrlicht_download clean_irrlicht irrlicht \
143         clean_assets assets sqlite3_download \
144         freetype_download clean_freetype freetype \
145         apk clean_apk \
146         clean_all clean prep_srcdir \
147         install_debug install_release envpaths all \
148         $(ASSETS_TIMESTAMP) $(LEVELDB_TIMESTAMP) \
149         $(OPENAL_TIMESTAMP) $(OGG_TIMESTAMP) \
150         $(IRRLICHT_TIMESTAMP) $(CURL_TIMESTAMP) \
151         $(OPENSSL_TIMESTAMP) \
152         $(ANDR_ROOT)/jni/src/android_version.h \
153         $(ANDR_ROOT)/jni/src/android_version_githash.h
154
155 debug : local.properties
156         export NDEBUG=;                                                            \
157         export BUILD_TYPE=debug;                                                   \
158         $(MAKE) apk
159
160 all : debug release
161
162 release : local.properties
163         @export NDEBUG=1;                                                          \
164         export BUILD_TYPE=release;                                                 \
165         $(MAKE) apk
166
167 reconfig: delconfig
168         @$(MAKE) local.properties
169
170 delconfig:
171         $(RM) local.properties
172
173 local.properties:
174         @echo "Please specify path of ANDROID NDK";                                \
175         echo "e.g. $$HOME/Android/Sdk/ndk-bundle/";                                \
176         read ANDROID_NDK ;                                                         \
177         if [ ! -d $$ANDROID_NDK ] ; then                                           \
178                 echo "$$ANDROID_NDK is not a valid folder";                            \
179                 exit 1;                                                                \
180         fi;                                                                        \
181         echo "ndk.dir = $$ANDROID_NDK" > local.properties;                         \
182         echo "Please specify path of ANDROID SDK";                                 \
183         echo "e.g. $$HOME/Android/Sdk/";                                           \
184         read SDKFLDR ;                                                             \
185         if [ ! -d $$SDKFLDR ] ; then                                               \
186                 echo "$$SDKFLDR is not a valid folder";                                \
187                 exit 1;                                                                \
188         fi;                                                                        \
189         echo "sdk.dir = $$SDKFLDR" >> local.properties;
190
191
192 $(OPENAL_TIMESTAMP) : openal_download
193         @LAST_MODIF=$$(find ${OPENAL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
194         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
195                 touch ${OPENAL_TIMESTAMP};                                            \
196         fi
197
198 openal_download :
199         @if [ ! -d ${OPENAL_DIR} ] ; then                                          \
200                 echo "openal sources missing, downloading...";                         \
201                 mkdir -p ${ANDR_ROOT}/deps;                                            \
202                 cd ${ANDR_ROOT}/deps ;                                                 \
203                 git clone ${OPENAL_URL_GIT} || exit 1;                                 \
204         fi
205
206 openal : $(OPENAL_LIB)
207
208 $(OPENAL_LIB): $(OPENAL_TIMESTAMP)
209         + @REFRESH=0;                                                                \
210         if [ ! -e ${OPENAL_TIMESTAMP_INT} ] ; then                                 \
211                 REFRESH=1;                                                             \
212         fi;                                                                        \
213         if [ ${OPENAL_TIMESTAMP} -nt ${OPENAL_TIMESTAMP_INT} ] ; then              \
214                 REFRESH=1;                                                             \
215         fi;                                                                        \
216         if [ $$REFRESH -ne 0 ] ; then                                              \
217         echo "changed timestamp for openal detected building...";                  \
218         cd ${OPENAL_DIR};                                                          \
219         export APP_PLATFORM=${APP_PLATFORM};                                       \
220         export TARGET_ABI=${TARGET_ABI};                                           \
221         export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}";                       \
222         export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}";                   \
223         export COMPILER_VERSION=${COMPILER_VERSION};                               \
224         ${ANDROID_NDK}/ndk-build                                                   \
225                 NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || 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         fi
250
251 ogg : $(OGG_LIB)
252
253 $(OGG_LIB): $(OGG_TIMESTAMP)
254         + @REFRESH=0;                                                                \
255         if [ ! -e ${OGG_TIMESTAMP_INT} ] ; then                                    \
256                 echo "${OGG_TIMESTAMP_INT} doesn't exist";                             \
257                 REFRESH=1;                                                             \
258         fi;                                                                        \
259         if [ ${OGG_TIMESTAMP} -nt ${OGG_TIMESTAMP_INT} ] ; then                    \
260                 REFRESH=1;                                                             \
261         fi;                                                                        \
262         if [ $$REFRESH -ne 0 ] ; then                                              \
263         echo "changed timestamp for ogg detected building...";                     \
264         cd ${OGG_DIR};                                                             \
265         export APP_PLATFORM=${APP_PLATFORM};                                       \
266         export TARGET_ABI=${TARGET_ABI};                                           \
267         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
268                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
269                 --platform=${APP_PLATFORM}                                             \
270                 --install-dir=$${TOOLCHAIN};                                           \
271         touch ${OGG_TIMESTAMP};                                                    \
272         touch ${OGG_TIMESTAMP_INT};                                                \
273         else                                                                       \
274                 echo "nothing to be done for libogg/libvorbis";                        \
275         fi
276
277 clean_ogg :
278         $(RM) -rf ${OGG_DIR}
279
280 $(OPENSSL_TIMESTAMP) : openssl_download
281         @LAST_MODIF=$$(find ${OPENSSL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
282         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
283                 touch ${OPENSSL_TIMESTAMP};                                            \
284         fi
285
286 openssl_download :
287         @if [ ! -d ${OPENSSL_DIR} ] ; then                                         \
288                 echo "openssl sources missing, downloading...";                        \
289                 mkdir -p ${ANDR_ROOT}/deps;                                            \
290                 cd ${ANDR_ROOT}/deps ;                                                 \
291                 wget ${OPENSSL_URL} || exit 1;                                         \
292                 tar -xzf ${OPENSSL_BASEDIR}.tar.gz;                                    \
293                 cd ${OPENSSL_BASEDIR};                                                 \
294                 patch -p1 < ${ANDR_ROOT}/patches/openssl_arch.patch;                   \
295                 sed -i 's/-mandroid //g' Configure;                                    \
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                 --platform=${APP_PLATFORM}                                             \
317                 --stl=libc++                                                           \
318                 --install-dir=$${TOOLCHAIN};                                           \
319         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
320         export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
321         export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}";                      \
322         CC=${CROSS_CC} ./Configure enable-gmp no-asm -DL_ENDIAN -I${GMP_DIR}       \
323                 -L${GMP_DIR}/usr/lib android-${TARGET_ARCH} -D__ANDROID_API__=$(API);  \
324         CC=${CROSS_CC} ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make depend;            \
325         CC=${CROSS_CC} ANDROID_DEV=/tmp/ndk-${TARGET_HOST} make build_libs;        \
326         touch ${OPENSSL_TIMESTAMP};                                                \
327         touch ${OPENSSL_TIMESTAMP_INT};                                            \
328         $(RM) -rf $${TOOLCHAIN};                                                   \
329         else                                                                       \
330                 echo "nothing to be done for openssl";                        \
331         fi
332
333 clean_openssl :
334         $(RM) -rf ${OPENSSL_DIR};                                                  \
335         $(RM) -rf $(ANDR_ROOT)/deps/${OPENSSL_BASEDIR}.tar.gz;                     \
336         $(RM) -rf $(ANDR_ROOT)/deps/openssl
337
338 $(LEVELDB_TIMESTAMP) : leveldb_download
339         @LAST_MODIF=$$(find ${LEVELDB_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
340         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
341                 touch ${LEVELDB_TIMESTAMP};                                            \
342         fi
343
344 leveldb_download :
345         @if [ ! -d ${LEVELDB_DIR} ] ; then                                         \
346                 echo "leveldb sources missing, downloading...";                        \
347                 mkdir -p ${ANDR_ROOT}/deps;                                            \
348                 cd ${ANDR_ROOT}/deps ;                                                 \
349                 git clone ${LEVELDB_URL_GIT} || exit 1;                                \
350                 cd ${LEVELDB_DIR} || exit 1;                                           \
351                 git checkout ${LEVELDB_COMMIT} || exit 1;                              \
352         fi
353
354 leveldb : $(LEVELDB_LIB)
355 ifeq ($(HAVE_LEVELDB),1)
356 $(LEVELDB_LIB): $(LEVELDB_TIMESTAMP)
357         @REFRESH=0;                                                                \
358         if [ ! -e ${LEVELDB_TIMESTAMP_INT} ] ; then                                \
359                 REFRESH=1;                                                             \
360         fi;                                                                        \
361         if [ ${LEVELDB_TIMESTAMP} -nt ${LEVELDB_TIMESTAMP_INT} ] ; then            \
362                 REFRESH=1;                                                             \
363         fi;                                                                        \
364         if [ $$REFRESH -ne 0 ] ; then                                              \
365         echo "changed timestamp for leveldb detected building...";                 \
366         cd deps/leveldb;                                                           \
367         export CROSS_PREFIX=${TARGET_TOOLCHAIN};                                   \
368         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-leveldb;                          \
369         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
370                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
371                 --platform=${APP_PLATFORM}                                             \
372                 --stl=libc++                                                           \
373                 --install-dir=$${TOOLCHAIN};                                           \
374         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
375         export CC=${CROSS_CC};                                                     \
376         export CXX=${CROSS_CXX};                                                   \
377         export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
378         export CPPFLAGS="$${CPPFLAGS} ${TARGET_CXXFLAGS_ADDON}";                   \
379         export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}";                      \
380         export TARGET_OS=OS_ANDROID_CROSSCOMPILE;                                  \
381         $(MAKE) || exit 1;                                                      \
382         touch ${LEVELDB_TIMESTAMP};                                                \
383         touch ${LEVELDB_TIMESTAMP_INT};                                            \
384         $(RM) -rf $${TOOLCHAIN};                                                   \
385         else                                                                       \
386                 echo "nothing to be done for leveldb";                                 \
387         fi
388 endif
389
390 clean_leveldb :
391         ./gradlew cleanLevelDB
392
393 $(FREETYPE_TIMESTAMP) : freetype_download
394         @LAST_MODIF=$$(find ${FREETYPE_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
395         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
396                 touch ${FREETYPE_TIMESTAMP};                                           \
397         fi
398
399 freetype_download :
400         @if [ ! -d ${FREETYPE_DIR} ] ; then                                        \
401                 echo "freetype sources missing, downloading...";                       \
402                 mkdir -p ${ANDR_ROOT}/deps;                                            \
403                 cd deps;                                                               \
404                 git clone ${FREETYPE_URL_GIT} || exit 1;                               \
405         fi
406
407 freetype : $(FREETYPE_LIB)
408
409 $(FREETYPE_LIB) : $(FREETYPE_TIMESTAMP)
410         + @REFRESH=0;                                                                \
411         if [ ! -e ${FREETYPE_TIMESTAMP_INT} ] ; then                               \
412                 REFRESH=1;                                                             \
413         fi;                                                                        \
414         if [ ! -e ${FREETYPE_LIB} ] ; then                                         \
415                 REFRESH=1;                                                             \
416         fi;                                                                        \
417         if [ ${FREETYPE_TIMESTAMP} -nt ${FREETYPE_TIMESTAMP_INT} ] ; then          \
418                 REFRESH=1;                                                             \
419         fi;                                                                        \
420         if [ $$REFRESH -ne 0 ] ; then                                              \
421         mkdir -p ${FREETYPE_DIR};                                                  \
422         echo "changed timestamp for freetype detected building...";                \
423         cd ${FREETYPE_DIR}/Android/jni;                                            \
424         export APP_PLATFORM=${APP_PLATFORM};                                       \
425         export TARGET_ABI=${TARGET_ABI};                                           \
426         export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}";                       \
427         export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}";                   \
428         export COMPILER_VERSION=${COMPILER_VERSION};                               \
429         ${ANDROID_NDK}/ndk-build                                                   \
430                 NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1;                 \
431         touch ${FREETYPE_TIMESTAMP};                                               \
432         touch ${FREETYPE_TIMESTAMP_INT};                                           \
433         else                                                                       \
434                 echo "nothing to be done for freetype";                                \
435         fi
436
437 clean_freetype :
438         ./gradlew cleanFreetype
439
440 $(ICONV_TIMESTAMP) : iconv_download
441         @LAST_MODIF=$$(find ${ICONV_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
442         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
443                 touch ${ICONV_TIMESTAMP};                                           \
444         fi
445
446 iconv_download :
447         @if [ ! -d ${ICONV_DIR} ] ; then                                           \
448                 echo "iconv sources missing, downloading...";                      \
449                 mkdir -p ${ANDR_ROOT}/deps;                                        \
450                 cd ${ANDR_ROOT}/deps;                                              \
451                 wget ${ICONV_URL_HTTP} || exit 1;                                  \
452                 tar -xzf libiconv-${ICONV_VERSION}.tar.gz || exit 1;               \
453                 rm libiconv-${ICONV_VERSION}.tar.gz;                               \
454                 ln -s libiconv-${ICONV_VERSION} libiconv;                          \
455                 cd ${ICONV_DIR};                                                   \
456                 patch -p1 < ${ANDR_ROOT}/patches/libiconv_android.patch;           \
457                 patch -p1 < ${ANDR_ROOT}/patches/libiconv_stdio.patch;             \
458         fi
459
460 iconv : $(ICONV_LIB)
461
462 $(ICONV_LIB) : $(ICONV_TIMESTAMP)
463         @REFRESH=0;                                                                \
464         if [ ! -e ${ICONV_TIMESTAMP_INT} ] ; then                                  \
465                 REFRESH=1;                                                         \
466         fi;                                                                        \
467         if [ ! -e ${ICONV_LIB} ] ; then                                            \
468                 REFRESH=1;                                                         \
469         fi;                                                                        \
470         if [ ${ICONV_TIMESTAMP} -nt ${ICONV_TIMESTAMP_INT} ] ; then                \
471                 REFRESH=1;                                                         \
472         fi;                                                                        \
473         if [ $$REFRESH -ne 0 ] ; then                                              \
474         mkdir -p ${ICONV_DIR};                                                     \
475         echo "changed timestamp for iconv detected building...";                   \
476         cd ${ICONV_DIR};                                                           \
477         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-iconv;                            \
478         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
479                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
480                 --platform=${APP_PLATFORM}                                             \
481                 --stl=libc++                                                           \
482                 --install-dir=$${TOOLCHAIN};                                           \
483         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
484         export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
485         export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON} -lstdc++";             \
486         export CC=${CROSS_CC};                                                     \
487         export CXX=${CROSS_CXX};                                                   \
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         ./gradlew cleanIconv
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 ${ANDR_ROOT}/deps;                                            \
512                 cd deps;                                                               \
513                 svn co ${IRRLICHT_URL_SVN} irrlicht || exit 1;                         \
514                 cd irrlicht;                                                           \
515                 patch -p1 < ${ANDR_ROOT}/patches/irrlicht-touchcount.patch || exit 1;  \
516                 patch -p1 < ${ANDR_ROOT}/patches/irrlicht-back_button.patch || exit 1; \
517                 patch -p1 < ${ANDR_ROOT}/patches/irrlicht-texturehack.patch || exit 1; \
518                 patch -p1 < ${ANDR_ROOT}/patches/irrlicht-native_activity.patch || exit 1; \
519         fi
520
521 $(IRRLICHT_TIMESTAMP) : irrlicht_download
522         @LAST_MODIF=$$(find ${IRRLICHT_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
523         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
524                 touch ${IRRLICHT_TIMESTAMP};                                           \
525         fi
526
527 irrlicht : $(IRRLICHT_LIB)
528
529 $(IRRLICHT_LIB): $(IRRLICHT_TIMESTAMP) $(FREETYPE_LIB)
530         + @REFRESH=0;                                                                \
531         if [ ! -e ${IRRLICHT_TIMESTAMP_INT} ] ; then                               \
532                 REFRESH=1;                                                             \
533         fi;                                                                        \
534         if [ ! -e ${IRRLICHT_LIB} ] ; then                                         \
535                 REFRESH=1;                                                             \
536         fi;                                                                        \
537         if [ ${IRRLICHT_TIMESTAMP} -nt ${IRRLICHT_TIMESTAMP_INT} ] ; then          \
538                 REFRESH=1;                                                             \
539         fi;                                                                        \
540         if [ $$REFRESH -ne 0 ] ; then                                              \
541         mkdir -p ${IRRLICHT_DIR};                                                  \
542         echo "changed timestamp for irrlicht detected building...";                \
543         cd deps/irrlicht/source/Irrlicht/Android;                                  \
544         export APP_PLATFORM=${APP_PLATFORM};                                       \
545         export TARGET_ABI=${TARGET_ABI};                                           \
546         export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}";                       \
547         export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}";                   \
548         export COMPILER_VERSION=${COMPILER_VERSION};                               \
549         ${ANDROID_NDK}/ndk-build                                                   \
550                 NDK_APPLICATION_MK=${ANDR_ROOT}/jni/Deps.mk || exit 1;                 \
551         touch ${IRRLICHT_TIMESTAMP};                                               \
552         touch ${IRRLICHT_TIMESTAMP_INT};                                           \
553         else                                                                       \
554                 echo "nothing to be done for irrlicht";                                \
555         fi
556
557 clean_irrlicht :
558         ./gradlew cleanIrrlicht
559
560 $(CURL_TIMESTAMP) : curl_download
561         @LAST_MODIF=$$(find ${CURL_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
562         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
563                 touch ${CURL_TIMESTAMP};                                               \
564         fi
565
566 curl_download :
567         @if [ ! -d "deps/curl-${CURL_VERSION}" ] ; then                            \
568                 echo "curl sources missing, downloading...";                           \
569                 mkdir -p ${ANDR_ROOT}/deps;                                            \
570                 cd deps;                                                               \
571                 wget ${CURL_URL_HTTP} || exit 1;                                       \
572                 tar -xjf curl-${CURL_VERSION}.tar.bz2 || exit 1;                       \
573                 rm curl-${CURL_VERSION}.tar.bz2;                                       \
574                 ln -s curl-${CURL_VERSION} curl;                                       \
575         fi
576
577 curl : $(CURL_LIB)
578
579 $(CURL_LIB): $(CURL_TIMESTAMP) $(OPENSSL_LIB)
580         @REFRESH=0;                                                                \
581         if [ ! -e ${CURL_TIMESTAMP_INT} ] ; then                                   \
582                 REFRESH=1;                                                             \
583         fi;                                                                        \
584         if [ ! -e ${CURL_LIB} ] ; then                                             \
585                 REFRESH=1;                                                             \
586         fi;                                                                        \
587         if [ ${CURL_TIMESTAMP} -nt ${CURL_TIMESTAMP_INT} ] ; then                  \
588                 REFRESH=1;                                                             \
589         fi;                                                                        \
590         if [ $$REFRESH -ne 0 ] ; then                                              \
591         mkdir -p ${CURL_DIR};                                                      \
592         echo "changed timestamp for curl detected building...";                    \
593         cd deps/curl-${CURL_VERSION};                                              \
594         export CROSS_PREFIX=${TARGET_TOOLCHAIN};                                   \
595         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-curl;                             \
596         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
597                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
598                 --platform=${APP_PLATFORM}                                             \
599                 --stl=libc++                                                           \
600                 --install-dir=$${TOOLCHAIN};                                           \
601         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
602         export CC=${CROSS_CC};                                                     \
603         export CXX=${CROSS_CXX};                                                   \
604         export TARGET_OS=OS_ANDROID_CROSSCOMPILE;                                  \
605         export CPPFLAGS="$${CPPFLAGS} -I${OPENSSL_DIR}/include ${TARGET_CFLAGS_ADDON}"; \
606         export CFLAGS="$${CFLAGS} ${TARGET_CFLAGS_ADDON}";                         \
607         export LDFLAGS="$${LDFLAGS} -L${OPENSSL_DIR} ${TARGET_LDFLAGS_ADDON}";     \
608         ./configure --host=${TARGET_HOST} --disable-shared --enable-static --with-ssl;  \
609         $(MAKE) -s || exit 1;                                                      \
610         touch ${CURL_TIMESTAMP};                                                   \
611         touch ${CURL_TIMESTAMP_INT};                                               \
612         $(RM) -rf $${TOOLCHAIN};                                                   \
613         else                                                                       \
614                 echo "nothing to be done for curl";                                    \
615         fi
616
617 clean_curl :
618         ./gradlew cleanCURL
619
620 $(GMP_TIMESTAMP) : gmp_download
621         @LAST_MODIF=$$(find ${GMP_DIR} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
622         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
623                 touch ${GMP_TIMESTAMP};                                            \
624         fi
625
626 gmp_download :
627         @if [ ! -d "${GMP_DIR}" ] ; then                                           \
628                 echo "gmp sources missing, downloading...";                        \
629                 mkdir -p ${ANDR_ROOT}/deps;                                        \
630                 cd deps;                                                           \
631                 wget ${GMP_URL_HTTP} || exit 1;                                    \
632                 tar -xjf gmp-${GMP_VERSION}.tar.bz2 || exit 1;                     \
633                 rm gmp-${GMP_VERSION}.tar.bz2;                                     \
634                 ln -s gmp-${GMP_VERSION} gmp;                                      \
635         fi
636
637 gmp : $(GMP_LIB)
638
639 $(GMP_LIB): $(GMP_TIMESTAMP)
640         @REFRESH=0;                                                                \
641         if [ ! -e ${GMP_TIMESTAMP_INT} ] ; then                                    \
642                 REFRESH=1;                                                         \
643         fi;                                                                        \
644         if [ ! -e ${GMP_LIB} ] ; then                                              \
645                 REFRESH=1;                                                         \
646         fi;                                                                        \
647         if [ ${GMP_TIMESTAMP} -nt ${GMP_TIMESTAMP_INT} ] ; then                    \
648                 REFRESH=1;                                                         \
649         fi;                                                                        \
650         if [ $$REFRESH -ne 0 ] ; then                                              \
651         mkdir -p ${GMP_DIR};                                                       \
652         echo "changed timestamp for gmp detected building...";                     \
653         cd deps/gmp-${GMP_VERSION};                                                \
654         export CROSS_PREFIX=${TARGET_TOOLCHAIN};                                   \
655         export TOOLCHAIN=/tmp/ndk-${TARGET_HOST}-gmp;                              \
656         ${ANDROID_NDK}/build/tools/make-standalone-toolchain.sh                    \
657                 --toolchain=${TARGET_TOOLCHAIN}${COMPILER_VERSION}                     \
658                 --platform=${APP_PLATFORM}                                             \
659                 --stl=libc++                                                           \
660                 --install-dir=$${TOOLCHAIN};                                           \
661         export PATH="$${TOOLCHAIN}/bin:$${PATH}";                                  \
662         export CC=${CROSS_CC};                                                     \
663         export CXX=${CROSS_CXX};                                                   \
664         export LDFLAGS="$${LDFLAGS} ${TARGET_LDFLAGS_ADDON}";                      \
665         export LIBGMP_LDFLAGS="-avoid-version";                                    \
666         export LIBGMPXX_LDFLAGS="-avoid-version";                                  \
667         ./configure --disable-static --host=${TARGET_HOST} --prefix=/usr;          \
668         $(MAKE) install DESTDIR=/${GMP_DIR} || exit 1;                             \
669         touch ${GMP_TIMESTAMP};                                                    \
670         touch ${GMP_TIMESTAMP_INT};                                                \
671         $(RM) -rf $${TOOLCHAIN};                                                   \
672         else                                                                       \
673                 echo "nothing to be done for gmp";                                 \
674         fi
675
676 clean_gmp:
677         ./gradlew cleanGMP
678
679 sqlite3_download: deps/${SQLITE3_FOLDER}/sqlite3.c
680
681 deps/${SQLITE3_FOLDER}/sqlite3.c :
682         cd deps;                                                                    \
683         wget ${SQLITE3_URL};                                                        \
684         unzip ${SQLITE3_FOLDER}.zip;                                                \
685         ln -s ${SQLITE3_FOLDER} sqlite;                                             \
686         cd ${SQLITE3_FOLDER};
687
688 clean_sqlite3:
689         ./gradlew cleanSQLite3
690
691 $(ASSETS_TIMESTAMP) : $(IRRLICHT_LIB)
692         @mkdir -p ${ANDR_ROOT}/deps;                                                \
693         for DIRNAME in {builtin,client,doc,fonts,games,mods,po,textures}; do        \
694                 LAST_MODIF=$$(find ${PROJ_ROOT}/${DIRNAME} -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
695                 if [ $$(basename $$LAST_MODIF) != "timestamp" ]; then               \
696                         touch ${PROJ_ROOT}/${DIRNAME}/timestamp;                   \
697                         touch ${ASSETS_TIMESTAMP};                                  \
698                         echo ${DIRNAME} changed $$LAST_MODIF;                       \
699                 fi;                                                                 \
700         done;                                                                       \
701         LAST_MODIF=$$(find ${IRRLICHT_DIR}/media -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "); \
702         if [ $$(basename $$LAST_MODIF) != "timestamp" ] ; then                     \
703                 touch ${IRRLICHT_DIR}/media/timestamp;                                 \
704                 touch ${ASSETS_TIMESTAMP};                                             \
705         fi;                                                                        \
706         if [ ${PROJ_ROOT}/minetest.conf.example -nt ${ASSETS_TIMESTAMP} ] ; then   \
707                 echo "conf changed";                                                   \
708                 touch ${ASSETS_TIMESTAMP};                                             \
709         fi;                                                                        \
710         if [ ${PROJ_ROOT}/README.txt -nt ${ASSETS_TIMESTAMP} ] ; then              \
711                 touch ${ASSETS_TIMESTAMP};                                             \
712         fi;                                                                        \
713         if [ ! -e $(ASSETS_TIMESTAMP) ] ; then                                     \
714                 touch $(ASSETS_TIMESTAMP);                                             \
715         fi
716
717 assets : $(ASSETS_TIMESTAMP)
718         @REFRESH=0;                                                                \
719         if [ ! -e ${ASSETS_TIMESTAMP}.old ] ; then                                 \
720                 REFRESH=1;                                                             \
721         fi;                                                                        \
722         if [ ${ASSETS_TIMESTAMP} -nt ${ASSETS_TIMESTAMP}.old ] ; then              \
723                 REFRESH=1;                                                             \
724         fi;                                                                        \
725         if [ ! -d ${APP_ROOT}/assets ] ; then                                      \
726                 REFRESH=1;                                                             \
727         fi;                                                                        \
728         if [ $$REFRESH -ne 0 ] ; then                                              \
729         echo "assets changed, refreshing...";                                      \
730         $(MAKE) clean_assets;                                                      \
731         ./gradlew copyAssets;                                                      \
732         cp -r ${IRRLICHT_DIR}/media/Shaders ${APP_ROOT}/assets/Minetest/media;     \
733         cd ${APP_ROOT}/assets ||  exit 1;                                          \
734         find . -name "timestamp" -exec rm {} \; ;                                  \
735         find . -name "*.blend" -exec rm {} \; ;                                    \
736         find . -name "*~" -exec rm {} \; ;                                         \
737         find . -type d -path "*.git" -exec rm -rf {} \; ;                          \
738         find . -type d -path "*.svn" -exec rm -rf {} \; ;                          \
739         find . -type f -path "*.gitignore" -exec rm -rf {} \; ;                    \
740         ls -R | grep ":$$" | sed -e 's/:$$//' -e 's/\.//' -e 's/^\///' > "index.txt"; \
741         find -L Minetest > filelist.txt;                                             \
742         cp ${ANDR_ROOT}/${ASSETS_TIMESTAMP} ${ANDR_ROOT}/${ASSETS_TIMESTAMP}.old;  \
743         else                                                                       \
744                 echo "nothing to be done for assets";                                  \
745         fi
746
747 clean_assets :
748         ./gradlew cleanAssets
749
750 apk: local.properties assets $(ICONV_LIB) $(IRRLICHT_LIB) $(CURL_LIB) $(GMP_LIB) $(LEVELDB_TARGET)       \
751         $(OPENAL_LIB) $(OGG_LIB) prep_srcdir $(ANDR_ROOT)/jni/src/android_version.h    \
752         $(ANDR_ROOT)/jni/src/android_version_githash.h sqlite3_download
753         + @export TARGET_LIBDIR=${TARGET_LIBDIR};                                  \
754         export HAVE_LEVELDB=${HAVE_LEVELDB};                                       \
755         export APP_PLATFORM=${APP_PLATFORM};                                       \
756         export TARGET_ABI=${TARGET_ABI};                                           \
757         export TARGET_CFLAGS_ADDON="${TARGET_CFLAGS_ADDON}";                       \
758         export TARGET_CXXFLAGS_ADDON="${TARGET_CXXFLAGS_ADDON}";                   \
759         export COMPILER_VERSION=${COMPILER_VERSION};                               \
760         export GPROF=${GPROF};                                                     \
761         ${ANDROID_NDK}/ndk-build || 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         ./gradlew assemble$$BUILD_TYPE_C &&                                           \
768         echo "APK stored at: build/outputs/apk/$$BUILD_TYPE/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/debug/Minetest-debug.apk
775
776 install_release:
777         ${ANDROID_SDK}/platform-tools/adb install -r build/outputs/apk/release/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         if [ ! -e ${ANDR_ROOT}/jni/lib ]; then                                     \
784                 ln -s ${PROJ_ROOT}/lib ${ANDR_ROOT}/jni/lib;                           \
785         fi
786
787 clean_apk :
788         ./gradlew clean
789
790 clean_all :
791         ./gradlew cleanAll
792
793 $(ANDR_ROOT)/jni/src/android_version_githash.h : prep_srcdir
794         @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version_githash.h;       \
795         export VERSION_FILE_NEW=$${VERSION_FILE}.new;                              \
796         {                                                                          \
797         echo "#ifndef ANDROID_MT_VERSION_GITHASH_H";                               \
798         echo "#define ANDROID_MT_VERSION_GITHASH_H";                               \
799         export GITHASH=$$(git rev-parse --short=8 HEAD);                           \
800         export VERSION_STR="${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}";   \
801         echo "#define VERSION_GITHASH \"$$VERSION_STR-$$GITHASH-Android\"";        \
802         echo "#endif";                                                             \
803         } > "$${VERSION_FILE_NEW}";                                                \
804         if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then                    \
805                 echo "android_version_githash.h changed, updating...";             \
806                 mv "$${VERSION_FILE_NEW}" "$${VERSION_FILE}";                      \
807         else                                                                       \
808                 rm "$${VERSION_FILE_NEW}";                                         \
809         fi
810
811
812 $(ANDR_ROOT)/jni/src/android_version.h : prep_srcdir
813         @export VERSION_FILE=${ANDR_ROOT}/jni/src/android_version.h;                \
814         export VERSION_FILE_NEW=$${VERSION_FILE}.new;                              \
815         {                                                                          \
816         echo "#ifndef ANDROID_MT_VERSION_H";                                       \
817         echo "#define ANDROID_MT_VERSION_H";                                       \
818         echo "#define VERSION_MAJOR ${VERSION_MAJOR}";                             \
819         echo "#define VERSION_MINOR ${VERSION_MINOR}";                             \
820         echo "#define VERSION_PATCH ${VERSION_PATCH}";                             \
821         echo "#define VERSION_STRING STR(VERSION_MAJOR) \".\" STR(VERSION_MINOR) \
822         \".\" STR(VERSION_PATCH)";                                                 \
823         echo "#endif";                                                             \
824         } > $${VERSION_FILE_NEW};                                                  \
825         if ! cmp -s $${VERSION_FILE} $${VERSION_FILE_NEW}; then                    \
826                 echo "android_version.h changed, updating...";                     \
827                 mv "$${VERSION_FILE_NEW}" "$${VERSION_FILE}";                      \
828         else                                                                       \
829                 rm "$${VERSION_FILE_NEW}";                                         \
830         fi
831
832 clean : clean_apk clean_assets