VCMI still crashes, and there's no way to debug or fix it

This commit is contained in:
Sergii Pylypenko
2013-08-02 17:36:34 +03:00
parent 602e54c210
commit badb381f3f
3 changed files with 56 additions and 5 deletions

View File

@@ -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

View File

@@ -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 <android/log.h>
+#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)
{

View File

@@ -11,4 +11,4 @@
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-17
target=android-15