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