LOCAL_PATH := $(call my-dir)/.. #LOCAL_ADDRESS_SANITIZER:=true include $(CLEAR_VARS) LOCAL_MODULE := Irrlicht LOCAL_SRC_FILES := deps/irrlicht/lib/Android/libIrrlicht.a include $(PREBUILT_STATIC_LIBRARY) ifeq ($(HAVE_LEVELDB), 1) include $(CLEAR_VARS) LOCAL_MODULE := LevelDB LOCAL_SRC_FILES := deps/leveldb/libleveldb.a include $(PREBUILT_STATIC_LIBRARY) endif include $(CLEAR_VARS) LOCAL_MODULE := curl LOCAL_SRC_FILES := deps/curl-7.35.0/lib/.libs/libcurl.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := freetype LOCAL_SRC_FILES := deps/freetype2-android/Android/obj/local/$(TARGET_ARCH_ABI)/libfreetype2-static.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := openal LOCAL_SRC_FILES := deps/openal-soft/libs/$(TARGET_LIBDIR)/libopenal.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := ogg LOCAL_SRC_FILES := deps/libvorbis-libogg-android/libs/$(TARGET_LIBDIR)/libogg.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := vorbis LOCAL_SRC_FILES := deps/libvorbis-libogg-android/libs/$(TARGET_LIBDIR)/libvorbis.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := ssl LOCAL_SRC_FILES := deps/openssl-android/libs/$(TARGET_LIBDIR)/libssl.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := crypto LOCAL_SRC_FILES := deps/openssl-android/libs/$(TARGET_LIBDIR)/libcrypto.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := minetest LOCAL_CPP_FEATURES += exceptions ifdef GPROF GPROF_DEF=-DGPROF endif LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ \ -DHAVE_TOUCHSCREENGUI \ -DUSE_CURL=1 \ -DUSE_SOUND=1 \ -DUSE_FREETYPE=1 \ -DUSE_LEVELDB=$(HAVE_LEVELDB) \ $(GPROF_DEF) \ -pipe -fstrict-aliasing ifndef NDEBUG LOCAL_CFLAGS += -g -D_DEBUG -O0 -fno-omit-frame-pointer else LOCAL_CFLAGS += -fexpensive-optimizations -O3 endif ifdef GPROF PROFILER_LIBS := android-ndk-profiler LOCAL_CFLAGS += -pg endif # LOCAL_CFLAGS += -fsanitize=address # LOCAL_LDFLAGS += -fsanitize=address ifeq ($(TARGET_ARCH_ABI),x86) LOCAL_CFLAGS += -fno-stack-protector endif LOCAL_C_INCLUDES := \ jni/src jni/src/sqlite \ jni/src/script \ jni/src/lua/src \ jni/src/json \ jni/src/cguittfont \ deps/irrlicht/include \ deps/freetype2-android/include \ deps/curl-7.35.0/include \ deps/openal-soft/jni/OpenAL/include \ deps/libvorbis-libogg-android/jni/include \ deps/leveldb/include \ LOCAL_SRC_FILES := \ jni/src/ban.cpp \ jni/src/base64.cpp \ jni/src/biome.cpp \ jni/src/camera.cpp \ jni/src/cavegen.cpp \ jni/src/chat.cpp \ jni/src/client.cpp \ jni/src/clientiface.cpp \ jni/src/clientmap.cpp \ jni/src/clientmedia.cpp \ jni/src/clientobject.cpp \ jni/src/clouds.cpp \ jni/src/collision.cpp \ jni/src/connection.cpp \ jni/src/content_abm.cpp \ jni/src/content_cao.cpp \ jni/src/content_cso.cpp \ jni/src/content_mapblock.cpp \ jni/src/content_mapnode.cpp \ jni/src/content_nodemeta.cpp \ jni/src/content_sao.cpp \ jni/src/convert_json.cpp \ jni/src/craftdef.cpp \ jni/src/database-dummy.cpp \ jni/src/database-sqlite3.cpp \ jni/src/database.cpp \ jni/src/debug.cpp \ jni/src/defaultsettings.cpp \ jni/src/drawscene.cpp \ jni/src/dungeongen.cpp \ jni/src/emerge.cpp \ jni/src/environment.cpp \ jni/src/filecache.cpp \ jni/src/filesys.cpp \ jni/src/game.cpp \ jni/src/genericobject.cpp \ jni/src/gettext.cpp \ jni/src/guiChatConsole.cpp \ jni/src/guiEngine.cpp \ jni/src/guiFileSelectMenu.cpp \ jni/src/guiFormSpecMenu.cpp \ jni/src/guiKeyChangeMenu.cpp \ jni/src/guiPasswordChange.cpp \ jni/src/guiTable.cpp \ jni/src/guiVolumeChange.cpp \ jni/src/httpfetch.cpp \ jni/src/hud.cpp \ jni/src/inventory.cpp \ jni/src/inventorymanager.cpp \ jni/src/itemdef.cpp \ jni/src/keycode.cpp \ jni/src/light.cpp \ jni/src/localplayer.cpp \ jni/src/log.cpp \ jni/src/main.cpp \ jni/src/map.cpp \ jni/src/mapblo_G.core = {} _G.setfenv = require 'busted.compatibility'.setfenv dofile("builtin/common/serialize.lua") dofile("builtin/common/vector.lua") describe("serialize", function() it("works", function() local test_in = {cat={sound="nyan", speed=400}, dog={sound="woof"}} local test_out = core.deserialize(core.serialize(test_in)) assert.same(test_in, test_out) end) it("handles characters", function() local test_in = {escape_chars="\n\r\t\v\\\"\'", non_european="θשׁ٩∂"} local test_out = core.deserialize(core.serialize(test_in)) assert.same(test_in, test_out) end) it("handles precise numbers", function() local test_in = 0.2695949158945771 local test_out = core.deserialize(core.serialize(test_in)) assert.same(test_in, test_out) end) it("handles big integers", function() local test_in = 269594915894577 local test_out = core.deserialize(core.serialize(test_in)) assert.same(test_in, test_out) end) it("handles recursive structures", function() local test_in = { hello = "world" } test_in.foo = test_in local test_out = core.deserialize(core.serialize(test_in)) assert.same(test_in, test_out) end) it("strips functions in safe mode", function