diff --git a/project/jni/application/vcmi/Makefile b/project/jni/application/vcmi/Makefile index 6ce7adb4a..9d8c427f8 100644 --- a/project/jni/application/vcmi/Makefile +++ b/project/jni/application/vcmi/Makefile @@ -13,7 +13,7 @@ LOCAL_PATH=`cd $LOCAL_PATH && pwd` GCC_PREFIX=arm-linux-androideabi GCC_VERSION=4.8 -SOURCES_LIB=$(wildcard vcmi/lib/*.cpp vcmi/lib/logging/*.cpp) +SOURCES_LIB=$(wildcard vcmi/lib/*.cpp) OBJS_LIB=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB)) SOURCES_MINIZIP=vcmi/lib/minizip/zip.c vcmi/lib/minizip/unzip.c vcmi/lib/minizip/ioapi.c @@ -22,6 +22,9 @@ OBJS_MINIZIP=$(patsubst %.c, out/%.o, $(SOURCES_MINIZIP)) SOURCES_LIB_FILESYSTEM:=$(wildcard vcmi/lib/filesystem/*.cpp) OBJS_LIB_FILESYSTEM:=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB_FILESYSTEM)) +SOURCES_LIB_LOGGING:=$(wildcard vcmi/lib/logging/*.cpp) +OBJS_LIB_LOGGING:=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB_LOGGING)) + SOURCES_LIB_MAPPING:=$(wildcard vcmi/lib/mapping/*.cpp) OBJS_LIB_MAPPING:=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB_MAPPING)) @@ -56,7 +59,7 @@ AndroidData/binaries.zip: vcmiserver libvcmi.so AI/libBattleAI.so AI/libStupidAI zip -r $@ $^ # With default -O3 optimization each G++ process eats 2Gb RAM, so tone optimization down to -O2, and limit make to two jobs -$(OBJS_SERVER) $(OBJS_LIB) $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_MAPPING) $(OBJS_LIB_RMG) $(OBJS_BATTLEAI) $(OBJS_STUPIDAI) $(OBJS_FUZZYLITE) $(OBJS_VCAI) $(OBJS_CLIENT) $(OBJS_ERM): out/%.o: %.cpp +$(OBJS_SERVER) $(OBJS_LIB) $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_LOGGING) $(OBJS_LIB_MAPPING) $(OBJS_LIB_RMG) $(OBJS_BATTLEAI) $(OBJS_STUPIDAI) $(OBJS_FUZZYLITE) $(OBJS_VCAI) $(OBJS_CLIENT) $(OBJS_ERM): out/%.o: %.cpp env GCCVER=$(GCC_VERSION) ../setEnvironment-armeabi-v7a.sh sh -c \ "$(GCC_PREFIX)-g++ \ -c \$$CXXFLAGS -O2 -Ivcmi -std=c++11 -Ivcmi/lib \ @@ -87,7 +90,7 @@ LINK_LIB= \ env BUILD_EXECUTABLE=1 NO_SHARED_LIBS=1 GCCVER=$(GCC_VERSION) ../setEnvironment-armeabi-v7a.sh sh -c \ "$(GCC_PREFIX)-g++ \ $^ -o $@ \ - -shared \$$LDFLAGS -L. -L../../boost/lib/arm-linux-androideabi-4.6 \ + -shared \$$LDFLAGS -L. -L../../boost/lib/arm-linux-androideabi-4.6 -Wl,-soname,libvcmi.so \ -lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread -lboost_program_options -lgnustl_static" && \ cp $@ debug/$@ && \ $(GCC_PREFIX)-strip $@ @@ -110,7 +113,7 @@ AI/libVCAI.so: $(OBJS_VCAI) $(OBJS_FUZZYLITE) -lvcmi Scripting/libvcmiERM.so: $(OBJS_ERM) -lvcmi $(LINK_LIB) -libvcmi.so: $(OBJS_LIB) $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_MAPPING) $(OBJS_LIB_RMG) $(OBJS_MINIZIP) +libvcmi.so: $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_LOGGING) $(OBJS_LIB_MAPPING) $(OBJS_LIB_RMG) $(OBJS_LIB) $(OBJS_MINIZIP) $(LINK_LIB) libapplication.so: $(OBJS_CLIENT) libvcmi.so diff --git a/project/jni/application/vcmi/vcmi-android.diff b/project/jni/application/vcmi/vcmi-android.diff index 46f682687..384c52d00 100644 --- a/project/jni/application/vcmi/vcmi-android.diff +++ b/project/jni/application/vcmi/vcmi-android.diff @@ -24,6 +24,20 @@ Index: client/CMT.cpp int SDL_main(int argc, char *argv[]) #else int main(int argc, char** argv) +Index: CMakeLists.txt +=================================================================== +--- CMakeLists.txt (revision 3490) ++++ CMakeLists.txt (working copy) +@@ -117,6 +117,9 @@ + add_definitions(-DM_BIN_DIR="${CMAKE_INSTALL_PREFIX}/${BIN_DIR}") + add_definitions(-DM_LIB_DIR="${CMAKE_INSTALL_PREFIX}/${LIB_DIR}") + ++#add_definitions(-DDLL_EXPORT=) ++add_definitions(-DIOAPI_NO_64) ++ + SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/vcmi") + SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + Index: lib/vcmi_endian.h =================================================================== --- lib/vcmi_endian.h (revision 3490) @@ -37,3 +51,37 @@ Index: lib/vcmi_endian.h /* SPARC does not support unaligned memory access. Let gcc know when * to emit the right code. */ struct unaligned_Uint16 { ui16 val __attribute__(( packed )); }; +Index: lib/logging/CLogger.cpp +=================================================================== +--- lib/logging/CLogger.cpp (revision 3490) ++++ lib/logging/CLogger.cpp (working copy) +@@ -1,6 +1,10 @@ + #include "StdInc.h" + #include "CLogger.h" ++#ifdef ANDROID ++#include ++#endif + ++ + const std::string CLoggerDomain::DOMAIN_GLOBAL = "global"; + + CLoggerDomain::CLoggerDomain(const std::string & name) : name(name) +@@ -379,6 +383,8 @@ + + CLogConsoleTarget::CLogConsoleTarget(CConsoleHandler * console) : console(console), threshold(ELogLevel::INFO), coloredOutputEnabled(true) + { ++ __android_log_print(ANDROID_LOG_INFO, "VCMI", "CLogConsoleTarget::CLogConsoleTarget()"); ++ + formatter.setPattern("%m"); + } + +@@ -387,6 +393,9 @@ + if(threshold > record.level) return; + + std::string message = formatter.format(record); ++#ifdef ANDROID ++ __android_log_print(ANDROID_LOG_INFO, "VCMI", "%s", message.c_str()); ++#endif + bool printToStdErr = record.level >= ELogLevel::WARN; + if(console) + { diff --git a/project/project.properties b/project/project.properties index a3ee5ab64..0840b4a05 100644 --- a/project/project.properties +++ b/project/project.properties @@ -11,4 +11,4 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-17 +target=android-15