LOCAL_PATH := $(call my-dir)/..

#LOCAL_ADDRESS_SANITIZER:=true

include $(CLEAR_VARS)
LOCAL_MODULE := Curl
LOCAL_SRC_FILES := deps/Android/Curl/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libcurl.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := Freetype
LOCAL_SRC_FILES := deps/Android/Freetype/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libfreetype.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := deps/Android/Irrlicht/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libIrrlichtMt.a
include $(PREBUILT_STATIC_LIBRARY)

#include $(CLEAR_VARS)
#LOCAL_MODULE := LevelDB
#LOCAL_SRC_FILES := deps/Android/LevelDB/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libleveldb.a
#include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := LuaJIT
LOCAL_SRC_FILES := deps/Android/LuaJIT/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libluajit.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := mbedTLS
LOCAL_SRC_FILES := deps/Android/mbedTLS/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libmbedtls.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := mbedx509
LOCAL_SRC_FILES := deps/Android/mbedTLS/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libmbedx509.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := mbedcrypto
LOCAL_SRC_FILES := deps/Android/mbedTLS/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libmbedcrypto.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := OpenAL
LOCAL_SRC_FILES := deps/Android/OpenAL-Soft/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libopenal.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := GetText
LOCAL_SRC_FILES := deps/Android/GetText/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libintl.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := Vorbis
LOCAL_SRC_FILES := deps/Android/Vorbis/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libvorbis.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := Zstd
LOCAL_SRC_FILES := deps/Android/Zstd/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libzstd.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := Minetest

LOCAL_CFLAGS += \
	-DJSONCPP_NO_LOCALE_SUPPORT     \
	-DHAVE_TOUCHSCREENGUI           \
	-DENABLE_GLES=1                 \
	-DUSE_CURL=1                    \
	-DUSE_SOUND=1                   \
	-DUSE_FREETYPE=1                \
	-DUSE_LEVELDB=0                 \
	-DUSE_LUAJIT=1                  \
	-DUSE_GETTEXT=1                 \
	-DVERSION_MAJOR=${versionMajor} \
	-DVERSION_MINOR=${versionMinor} \
	-DVERSION_PATCH=${versionPatch} \
	-DVERSION_EXTRA=${versionExtra} \
	$(GPROF_DEF)

ifdef NDEBUG
	LOCAL_CFLAGS += -DNDEBUG=1
endif

ifdef GPROF
	GPROF_DEF := -DGPROF
	PROFILER_LIBS := android-ndk-profiler
	LOCAL_CFLAGS += -pg
endif

LOCAL_C_INCLUDES := \
	../../src                                    \
	../../src/script                             \
	../../lib/gmp                                \
	../../lib/jsoncpp                            \
	deps/Android/Curl/include                       \
	deps/Android/Freetype/include                   \
	deps/Android/Irrlicht/include                   \
	deps/Android/LevelDB/include                    \
	deps/Android/GetText/include                    \
	deps/Android/libiconv/include                   \
	deps/Android/libiconv/libcharset/include        \
	deps/Android/LuaJIT/src                         \
	deps/Android/OpenAL-Soft/include                \
	deps/Android/sqlite                             \
	deps/Android/Vorbis/include                     \
	deps/Android/Zstd/include

LOCAL_SRC_FILES := \
	$(wildcard ../../src/client/*.cpp)           \
	$(wildcard ../../src/client/*/*.cpp)         \
	$(wildcard ../../src/content/*.cpp)          \
	../../src/database/database.cpp              \
	../../src/database/database-dummy.cpp        \
	../../src/database/database-files.cpp        \
	../../src/database/database-sqlite3.cpp      \
	$(wildcard ../../src/gui/*.cpp)              \
	$(wildcard ../../src/irrlicht_changes/*.cpp) \
	$(wildcard ../../src/mapgen/*.cpp)           \
	$(wildcard ../../src/network/*.cpp)          \
	$(wildcard ../../src/script/*.cpp)           \
	$(wildcard ../../src/script/*/*.cpp)         \
	$(wildcard ../../src/server/*.cpp)           \
	$(wildcard ../../src/threading/*.cpp)        \
	$(wildcard ../../src/util/*.c)               \
	$(wildcard ../../src/util/*.cpp)             \
	../../src/ban.cpp                            \
	../../src/chat.cpp                           \
	../../src/clientiface.cpp                    \
	../../src/collision.cpp                      \
	../../src/content_mapnode.cpp                \
	../../src/content_nodemeta.cpp               \
	../../src/convert_json.cpp                   \
	../../src/craftdef.cpp                       \
	../../src/debug.cpp                          \
	../../src/defaultsettings.cpp                \
	../../src/emerge.cpp                         \
	../../src/environment.cpp                    \
	../../src/face_position_cache.cpp            \
	../../src/filesys.cpp                        \
	../../src/gettext.cpp                        \
	../../src/httpfetch.cpp                      \
	../../src/hud.cpp                            \
	../../src/inventory.cpp                      \
	../../src/inventorymanager.cpp               \
	../../src/itemdef.cpp                        \
	../../src/itemstackmetadata.cpp              \
	../../src/light.cpp                          \
	../../src/log.cpp                            \
	../../src/main.cpp                           \
	../../src/map.cpp                            \
	../../src/map_settings_manager.cpp           \
	../../src/mapblock.cpp                       \
	../../src/mapnode.cpp                        \
	../../src/mapsector.cpp                      \
	../../src/metadata.cpp                       \
	../../src/modchannels.cpp                    \
	../../src/nameidmapping.cpp                  \
	../../src/nodedef.cpp                        \
	../../src/nodemetadata.cpp                   \
	../../src/nodetimer.cpp                      \
	../../src/noise.cpp                          \
	../../src/objdef.cpp                         \
	../../src/object_properties.cpp              \
	../../src/particles.cpp                      \
	../../src/pathfinder.cpp                     \
	../../src/player.cpp                         \
	../../src/porting.cpp                        \
	../../src/porting_android.cpp                \
	../../src/profiler.cpp                       \
	../../src/raycast.cpp                        \
	../../src/reflowscan.cpp                     \
	../../src/remoteplayer.cpp                   \
	../../src/rollback.cpp                       \
	../../src/rollback_interface.cpp             \
	../../src/serialization.cpp                  \
	../../src/server.cpp                         \
	../../src/serverenvironment.cpp              \
	../../src/serverlist.cpp                     \
	../../src/settings.cpp                       \
	../../src/staticobject.cpp                   \
	../../src/texture_override.cpp               \
	../../src/tileanimation.cpp                  \
	../../src/tool.cpp                           \
	../../src/translation.cpp                    \
	../../src/version.cpp                        \
	../../src/voxel.cpp                          \
	../../src/voxelalgorithms.cpp

# LevelDB backend is disabled
#	../../src/database/database-leveldb.cpp

# GMP
LOCAL_SRC_FILES += ../../lib/gmp/mini-gmp.c

# JSONCPP
LOCAL_SRC_FILES += ../../lib/jsoncpp/jsoncpp.cpp

# iconv
LOCAL_SRC_FILES += \
	deps/Android/libiconv/lib/iconv.c               \
	deps/Android/libiconv/libcharset/lib/localcharset.c

# SQLite3
LOCAL_SRC_FILES += deps/Android/sqlite/sqlite3.c

LOCAL_STATIC_LIBRARIES += Curl Freetype Irrlicht OpenAL mbedTLS mbedx509 mbedcrypto Vorbis LuaJIT GetText Zstd android_native_app_glue $(PROFILER_LIBS) #LevelDB

LOCAL_LDLIBS := -lEGL -lGLESv1_CM -lGLESv2 -landroid -lOpenSLES

include $(BUILD_SHARED_LIBRARY)

ifdef GPROF
$(call import-module,android-ndk-profiler)
endif
$(call import-module,android/native_app_glue)