Add support for Android 2.3+
[oweals/minetest.git] / build / android / jni / Android.mk
1 LOCAL_PATH := $(call my-dir)/..
2
3 #LOCAL_ADDRESS_SANITIZER:=true
4
5 include $(CLEAR_VARS)
6 LOCAL_MODULE := Irrlicht
7 LOCAL_SRC_FILES := deps/irrlicht/lib/Android/libIrrlicht.a
8 include $(PREBUILT_STATIC_LIBRARY)
9
10 #include $(CLEAR_VARS)
11 #LOCAL_MODULE := LevelDB
12 #LOCAL_SRC_FILES := deps/leveldb/libleveldb.a
13 #include $(PREBUILT_STATIC_LIBRARY)
14
15 include $(CLEAR_VARS)
16 LOCAL_MODULE := curl
17 LOCAL_SRC_FILES := deps/curl-7.35.0/lib/.libs/libcurl.a
18 include $(PREBUILT_STATIC_LIBRARY)
19
20 include $(CLEAR_VARS)
21 LOCAL_MODULE := freetype
22 LOCAL_SRC_FILES := deps/freetype2-android/Android/obj/local/$(TARGET_ARCH_ABI)/libfreetype2-static.a
23 include $(PREBUILT_STATIC_LIBRARY)
24
25 include $(CLEAR_VARS)
26 LOCAL_MODULE := openal
27 LOCAL_SRC_FILES := deps/openal-soft/libs/$(TARGET_LIBDIR)/libopenal.so
28 include $(PREBUILT_SHARED_LIBRARY)
29
30 include $(CLEAR_VARS)
31 LOCAL_MODULE := ogg
32 LOCAL_SRC_FILES := deps/libvorbis-libogg-android/libs/$(TARGET_LIBDIR)/libogg.so
33 include $(PREBUILT_SHARED_LIBRARY)
34
35 include $(CLEAR_VARS)
36 LOCAL_MODULE := vorbis
37 LOCAL_SRC_FILES := deps/libvorbis-libogg-android/libs/$(TARGET_LIBDIR)/libvorbis.so
38 include $(PREBUILT_SHARED_LIBRARY)
39
40 include $(CLEAR_VARS)
41 LOCAL_MODULE := ssl
42 LOCAL_SRC_FILES := deps/openssl-android/libs/$(TARGET_LIBDIR)/libssl.so
43 include $(PREBUILT_SHARED_LIBRARY)
44
45 include $(CLEAR_VARS)
46 LOCAL_MODULE := crypto
47 LOCAL_SRC_FILES := deps/openssl-android/libs/$(TARGET_LIBDIR)/libcrypto.so
48 include $(PREBUILT_SHARED_LIBRARY)
49
50
51 include $(CLEAR_VARS)
52 LOCAL_MODULE := minetest
53
54 LOCAL_CPP_FEATURES += exceptions
55
56 ifdef GPROF
57 GPROF_DEF=-DGPROF
58 endif
59
60 LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ \
61                                 -DHAVE_TOUCHSCREENGUI    \
62                                 -DUSE_CURL=1             \
63                                 -DUSE_SOUND=1            \
64                                 -DUSE_FREETYPE=1         \
65                                 $(GPROF_DEF)             \
66                                 -pipe -fstrict-aliasing
67
68 ifndef NDEBUG
69 LOCAL_CFLAGS += -g -D_DEBUG -O0 -fno-omit-frame-pointer
70 else
71 LOCAL_CFLAGS += -fexpensive-optimizations -O3
72 endif
73
74 ifdef GPROF
75 PROFILER_LIBS := android-ndk-profiler
76 LOCAL_CFLAGS += -pg
77 endif
78
79 # LOCAL_CFLAGS += -fsanitize=address
80 # LOCAL_LDFLAGS += -fsanitize=address
81
82 ifeq ($(TARGET_ARCH_ABI),x86)
83 LOCAL_CFLAGS += -fno-stack-protector
84 endif
85
86 LOCAL_C_INCLUDES :=                               \
87                 jni/src jni/src/sqlite                    \
88                 jni/src/script                            \
89                 jni/src/lua/src                           \
90                 jni/src/json                              \
91                 jni/src/cguittfont                        \
92                 deps/irrlicht/include                     \
93                 deps/freetype2-android/include            \
94                 deps/curl-7.35.0/include                  \
95                 deps/openal-soft/jni/OpenAL/include       \
96                 deps/libvorbis-libogg-android/jni/include
97                 
98 #               deps/leveldb/include                      \
99
100 LOCAL_SRC_FILES :=                                \
101                 jni/src/ban.cpp                           \
102                 jni/src/base64.cpp                        \
103                 jni/src/biome.cpp                         \
104                 jni/src/camera.cpp                        \
105                 jni/src/cavegen.cpp                       \
106                 jni/src/chat.cpp                          \
107                 jni/src/client.cpp                        \
108                 jni/src/clientiface.cpp                   \
109                 jni/src/clientmap.cpp                     \
110                 jni/src/clientmedia.cpp                   \
111                 jni/src/clientobject.cpp                  \
112                 jni/src/clouds.cpp                        \
113                 jni/src/collision.cpp                     \
114                 jni/src/connection.cpp                    \
115                 jni/src/content_abm.cpp                   \
116                 jni/src/content_cao.cpp                   \
117                 jni/src/content_cso.cpp                   \
118                 jni/src/content_mapblock.cpp              \
119                 jni/src/content_mapnode.cpp               \
120                 jni/src/content_nodemeta.cpp              \
121                 jni/src/content_sao.cpp                   \
122                 jni/src/convert_json.cpp                  \
123                 jni/src/craftdef.cpp                      \
124                 jni/src/database-dummy.cpp                \
125                 jni/src/database-sqlite3.cpp              \
126                 jni/src/database.cpp                      \
127                 jni/src/debug.cpp                         \
128                 jni/src/defaultsettings.cpp               \
129                 jni/src/drawscene.cpp                     \
130                 jni/src/dungeongen.cpp                    \
131                 jni/src/emerge.cpp                        \
132                 jni/src/environment.cpp                   \
133                 jni/src/filecache.cpp                     \
134                 jni/src/filesys.cpp                       \
135                 jni/src/game.cpp                          \
136                 jni/src/genericobject.cpp                 \
137                 jni/src/gettext.cpp                       \
138                 jni/src/guiChatConsole.cpp                \
139                 jni/src/guiEngine.cpp                     \
140                 jni/src/guiFileSelectMenu.cpp             \
141                 jni/src/guiFormSpecMenu.cpp               \
142                 jni/src/guiKeyChangeMenu.cpp              \
143                 jni/src/guiPasswordChange.cpp             \
144                 jni/src/guiTable.cpp                      \
145                 jni/src/guiVolumeChange.cpp               \
146                 jni/src/httpfetch.cpp                     \
147                 jni/src/hud.cpp                           \
148                 jni/src/inventory.cpp                     \
149                 jni/src/inventorymanager.cpp              \
150                 jni/src/itemdef.cpp                       \
151                 jni/src/keycode.cpp                       \
152                 jni/src/light.cpp                         \
153                 jni/src/localplayer.cpp                   \
154                 jni/src/log.cpp                           \
155                 jni/src/main.cpp                          \
156                 jni/src/map.cpp                           \
157                 jni/src/mapblock.cpp                      \
158                 jni/src/mapblock_mesh.cpp                 \
159                 jni/src/mapgen.cpp                        \
160                 jni/src/mapgen_indev.cpp                  \
161                 jni/src/mapgen_math.cpp                   \
162                 jni/src/mapgen_singlenode.cpp             \
163                 jni/src/mapgen_v6.cpp                     \
164                 jni/src/mapgen_v7.cpp                     \
165                 jni/src/mapnode.cpp                       \
166                 jni/src/mapsector.cpp                     \
167                 jni/src/mesh.cpp                          \
168                 jni/src/mods.cpp                          \
169                 jni/src/nameidmapping.cpp                 \
170                 jni/src/nodedef.cpp                       \
171                 jni/src/nodemetadata.cpp                  \
172                 jni/src/nodetimer.cpp                     \
173                 jni/src/noise.cpp                         \
174                 jni/src/object_properties.cpp             \
175                 jni/src/particles.cpp                     \
176                 jni/src/pathfinder.cpp                    \
177                 jni/src/player.cpp                        \
178                 jni/src/porting_android.cpp               \
179                 jni/src/porting.cpp                       \
180                 jni/src/quicktune.cpp                     \
181                 jni/src/rollback.cpp                      \
182                 jni/src/rollback_interface.cpp            \
183                 jni/src/serialization.cpp                 \
184                 jni/src/server.cpp                        \
185                 jni/src/serverlist.cpp                    \
186                 jni/src/serverobject.cpp                  \
187                 jni/src/sha1.cpp                          \
188                 jni/src/shader.cpp                        \
189                 jni/src/sky.cpp                           \
190                 jni/src/socket.cpp                        \
191                 jni/src/sound.cpp                         \
192                 jni/src/sound_openal.cpp                  \
193                 jni/src/staticobject.cpp                  \
194                 jni/src/subgame.cpp                       \
195                 jni/src/test.cpp                          \
196                 jni/src/tile.cpp                          \
197                 jni/src/tool.cpp                          \
198                 jni/src/treegen.cpp                       \
199                 jni/src/version.cpp                       \
200                 jni/src/voxel.cpp                         \
201                 jni/src/voxelalgorithms.cpp               \
202                 jni/src/util/directiontables.cpp          \
203                 jni/src/util/numeric.cpp                  \
204                 jni/src/util/pointedthing.cpp             \
205                 jni/src/util/serialize.cpp                \
206                 jni/src/util/string.cpp                   \
207                 jni/src/util/timetaker.cpp                \
208                 jni/src/touchscreengui.cpp
209                 
210 #               jni/src/database-leveldb.cpp              \
211
212 # lua api
213 LOCAL_SRC_FILES +=                                \
214                 jni/src/script/common/c_content.cpp       \
215                 jni/src/script/common/c_converter.cpp     \
216                 jni/src/script/common/c_internal.cpp      \
217                 jni/src/script/common/c_types.cpp         \
218                 jni/src/script/cpp_api/s_base.cpp         \
219                 jni/src/script/cpp_api/s_entity.cpp       \
220                 jni/src/script/cpp_api/s_env.cpp          \
221                 jni/src/script/cpp_api/s_inventory.cpp    \
222                 jni/src/script/cpp_api/s_item.cpp         \
223                 jni/src/script/cpp_api/s_mainmenu.cpp     \
224                 jni/src/script/cpp_api/s_node.cpp         \
225                 jni/src/script/cpp_api/s_nodemeta.cpp     \
226                 jni/src/script/cpp_api/s_player.cpp       \
227                 jni/src/script/cpp_api/s_server.cpp       \
228                 jni/src/script/cpp_api/s_async.cpp        \
229                 jni/src/script/lua_api/l_base.cpp         \
230                 jni/src/script/lua_api/l_craft.cpp        \
231                 jni/src/script/lua_api/l_env.cpp          \
232                 jni/src/script/lua_api/l_inventory.cpp    \
233                 jni/src/script/lua_api/l_item.cpp         \
234                 jni/src/script/lua_api/l_mainmenu.cpp     \
235                 jni/src/script/lua_api/l_mapgen.cpp       \
236                 jni/src/script/lua_api/l_nodemeta.cpp     \
237                 jni/src/script/lua_api/l_nodetimer.cpp    \
238                 jni/src/script/lua_api/l_noise.cpp        \
239                 jni/src/script/lua_api/l_object.cpp       \
240                 jni/src/script/lua_api/l_particles.cpp    \
241                 jni/src/script/lua_api/l_rollback.cpp     \
242                 jni/src/script/lua_api/l_server.cpp       \
243                 jni/src/script/lua_api/l_settings.cpp     \
244                 jni/src/script/lua_api/l_util.cpp         \
245                 jni/src/script/lua_api/l_vmanip.cpp       \
246                 jni/src/script/scripting_game.cpp         \
247                 jni/src/script/scripting_mainmenu.cpp
248                 
249 #freetype2 support
250 LOCAL_SRC_FILES +=                                \
251                 jni/src/cguittfont/xCGUITTFont.cpp
252
253 # lua
254 LOCAL_SRC_FILES +=                                \
255                 jni/src/lua/src/lapi.c                    \
256                 jni/src/lua/src/lauxlib.c                 \
257                 jni/src/lua/src/lbaselib.c                \
258                 jni/src/lua/src/lcode.c                   \
259                 jni/src/lua/src/ldblib.c                  \
260                 jni/src/lua/src/ldebug.c                  \
261                 jni/src/lua/src/ldo.c                     \
262                 jni/src/lua/src/ldump.c                   \
263                 jni/src/lua/src/lfunc.c                   \
264                 jni/src/lua/src/lgc.c                     \
265                 jni/src/lua/src/linit.c                   \
266                 jni/src/lua/src/liolib.c                  \
267                 jni/src/lua/src/llex.c                    \
268                 jni/src/lua/src/lmathlib.c                \
269                 jni/src/lua/src/lmem.c                    \
270                 jni/src/lua/src/loadlib.c                 \
271                 jni/src/lua/src/lobject.c                 \
272                 jni/src/lua/src/lopcodes.c                \
273                 jni/src/lua/src/loslib.c                  \
274                 jni/src/lua/src/lparser.c                 \
275                 jni/src/lua/src/lstate.c                  \
276                 jni/src/lua/src/lstring.c                 \
277                 jni/src/lua/src/lstrlib.c                 \
278                 jni/src/lua/src/ltable.c                  \
279                 jni/src/lua/src/ltablib.c                 \
280                 jni/src/lua/src/ltm.c                     \
281                 jni/src/lua/src/lundump.c                 \
282                 jni/src/lua/src/lvm.c                     \
283                 jni/src/lua/src/lzio.c                    \
284                 jni/src/lua/src/print.c
285
286 # sqlite
287 LOCAL_SRC_FILES += jni/src/sqlite/sqlite3.c
288
289 # jthread
290 LOCAL_SRC_FILES +=                                \
291                 jni/src/jthread/pthread/jevent.cpp        \
292                 jni/src/jthread/pthread/jmutex.cpp        \
293                 jni/src/jthread/pthread/jsemaphore.cpp    \
294                 jni/src/jthread/pthread/jthread.cpp
295
296 # json
297 LOCAL_SRC_FILES += jni/src/json/jsoncpp.cpp
298
299 LOCAL_SHARED_LIBRARIES := openal ogg vorbis ssl crypto
300 LOCAL_STATIC_LIBRARIES := Irrlicht freetype curl android_native_app_glue $(PROFILER_LIBS)
301 # LevelDB
302 LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid
303
304 include $(BUILD_SHARED_LIBRARY)
305
306 # at the end of Android.mk
307 ifdef GPROF
308 $(call import-module,android-ndk-profiler)
309 endif
310 $(call import-module,android/native_app_glue)