From 602e54c2109e125f73fb214d691d9f4fffba37f5 Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Thu, 1 Aug 2013 23:00:45 +0300 Subject: [PATCH] Fixed VCMI compilation, it crashes yay. --- project/java/MainActivity.java | 4 ++- project/jni/application/vcmi/AndroidBuild.sh | 2 +- project/jni/application/vcmi/Makefile | 32 ++++++++++++----- .../jni/application/vcmi/vcmi-android.diff | 35 +++++++++++++------ 4 files changed, 51 insertions(+), 22 deletions(-) diff --git a/project/java/MainActivity.java b/project/java/MainActivity.java index 55e32eadb..f94942c9d 100644 --- a/project/java/MainActivity.java +++ b/project/java/MainActivity.java @@ -864,7 +864,9 @@ public class MainActivity extends Activity out.flush(); out.close(); - Settings.nativeChmod(path, 0755); + //Settings.nativeChmod(path, 0755); + String chmod[] = { "/system/bin/chmod", "0755", path }; + Runtime.getRuntime().exec(chmod).waitFor(); } } catch ( Exception eee ) diff --git a/project/jni/application/vcmi/AndroidBuild.sh b/project/jni/application/vcmi/AndroidBuild.sh index 24a20a632..65bd0a6aa 100755 --- a/project/jni/application/vcmi/AndroidBuild.sh +++ b/project/jni/application/vcmi/AndroidBuild.sh @@ -1,7 +1,7 @@ #!/bin/sh # With default -O3 optimization each G++ process eats 2Gb RAM, so tone optimization down to -O2, and limit make to two jobs -make -j2 2>&1 | tee build.log +{ make -j2 2>&1 || exit 1 ; } | tee build.log [ -f libapplication.so ] || exit 1 mv -f libapplication.so libapplication-armeabi-v7a.so exit 0 diff --git a/project/jni/application/vcmi/Makefile b/project/jni/application/vcmi/Makefile index 0ec273b44..6ce7adb4a 100644 --- a/project/jni/application/vcmi/Makefile +++ b/project/jni/application/vcmi/Makefile @@ -1,9 +1,10 @@ $(shell mkdir -p AI debug/AI \ out/vcmi/lib out/vcmi/lib/logging out/vcmi/lib/filesystem \ - out/vcmi/lib/mapping out/vcmi/lib/rmg out/vcmi/lib/minigzip \ - out/vcmi/server out/vcmi/AI/StupidAI out/vcmi/AI/BattleAI \ - out/vcmi/AI/VCAI out/vcmi/scripting/erm out/vcmi/client \ + out/vcmi/lib/mapping out/vcmi/lib/rmg out/vcmi/lib/minizip \ + out/vcmi/server out/vcmi/AI/StupidAI out/vcmi/AI/BattleAI \ + out/vcmi/AI/VCAI out/vcmi/AI/FuzzyLite \ + out/vcmi/scripting/erm out/vcmi/client \ out/vcmi/client/gui out/vcmi/client/battle) LOCAL_PATH=$(shell dirname $0) @@ -12,9 +13,12 @@ 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 vcmi/lib/minigzip/*.c vcmi/CCallback.cpp) +SOURCES_LIB=$(wildcard vcmi/lib/*.cpp vcmi/lib/logging/*.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 +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)) @@ -39,6 +43,9 @@ OBJS_STUPIDAI:=$(patsubst %.cpp, out/%.o, $(SOURCES_STUPIDAI)) SOURCES_VCAI:=$(wildcard vcmi/AI/VCAI/*.cpp) OBJS_VCAI:=$(patsubst %.cpp, out/%.o, $(SOURCES_VCAI)) +SOURCES_FUZZYLITE:=$(wildcard vcmi/AI/FuzzyLite/*.cpp) +OBJS_FUZZYLITE:=$(patsubst %.cpp, out/%.o, $(SOURCES_FUZZYLITE)) + SOURCES_ERM:=$(wildcard vcmi/scripting/erm/*.cpp) OBJS_ERM:=$(patsubst %.cpp, out/%.o, $(SOURCES_ERM)) @@ -49,7 +56,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_EMPTYAI) $(OBJS_FUZZYLITE) $(OBJS_VCAI) $(OBJS_CLIENT) $(OBJS_ERM): out/%.o: %.cpp +$(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 env GCCVER=$(GCC_VERSION) ../setEnvironment-armeabi-v7a.sh sh -c \ "$(GCC_PREFIX)-g++ \ -c \$$CXXFLAGS -O2 -Ivcmi -std=c++11 -Ivcmi/lib \ @@ -60,12 +67,19 @@ $(OBJS_SERVER) $(OBJS_LIB) $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_MAPPING) $(OBJS_LIB $< -o $@" # -Werror=strict-aliasing -Werror=cast-align -Werror=pointer-arith -Werror=address +$(OBJS_MINIZIP): out/%.o: %.c + env GCCVER=$(GCC_VERSION) ../setEnvironment-armeabi-v7a.sh sh -c \ + "$(GCC_PREFIX)-gcc \ + -c \$$CFLAGS -O2 -DDLL_EXPORT= -DIOAPI_NO_64 \ + -Wstrict-aliasing -Wcast-align -Wpointer-arith -Waddress \ + $< -o $@" + vcmiserver: $(OBJS_SERVER) -lvcmi env BUILD_EXECUTABLE=1 NO_SHARED_LIBS=1 GCCVER=$(GCC_VERSION) ../setEnvironment-armeabi-v7a.sh sh -c \ "$(GCC_PREFIX)-g++ \ $^ -o $@ \ \$$LDFLAGS -L. -L../../boost/lib/arm-linux-androideabi-4.6 \ - -lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread -lgnustl_static" && \ + -lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread -lboost_program_options -lgnustl_static" && \ cp $@ debug/$@ && \ $(GCC_PREFIX)-strip $@ @@ -74,7 +88,7 @@ LINK_LIB= \ "$(GCC_PREFIX)-g++ \ $^ -o $@ \ -shared \$$LDFLAGS -L. -L../../boost/lib/arm-linux-androideabi-4.6 \ - -lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread -lgnustl_static" && \ + -lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread -lboost_program_options -lgnustl_static" && \ cp $@ debug/$@ && \ $(GCC_PREFIX)-strip $@ @@ -87,7 +101,7 @@ AI/libBattleAI.so: $(OBJS_BATTLEAI) -lvcmi AI/libEmptyAI.so: $(OBJS_EMPTYAI) -lvcmi $(LINK_LIB) -AI/libStupidAI.so: $(OBJS_STUPID) -lvcmi +AI/libStupidAI.so: $(OBJS_STUPIDAI) -lvcmi $(LINK_LIB) AI/libVCAI.so: $(OBJS_VCAI) $(OBJS_FUZZYLITE) -lvcmi @@ -96,7 +110,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) +libvcmi.so: $(OBJS_LIB) $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_MAPPING) $(OBJS_LIB_RMG) $(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 cfe80de43..46f682687 100644 --- a/project/jni/application/vcmi/vcmi-android.diff +++ b/project/jni/application/vcmi/vcmi-android.diff @@ -1,16 +1,16 @@ -Index: lib/vcmi_endian.h +Index: client/battle/CBattleInterface.cpp =================================================================== ---- lib/vcmi_endian.h (revision 3490) -+++ lib/vcmi_endian.h (working copy) -@@ -19,7 +19,7 @@ - * memory. On big endian machines, the value will be byteswapped. - */ +--- client/battle/CBattleInterface.cpp (revision 3490) ++++ client/battle/CBattleInterface.cpp (working copy) +@@ -34,7 +34,7 @@ + #include "../gui/CGuiHandler.h" + #include "../CMT.h" --#if defined(linux) && (defined(sparc) || defined(__arm__)) -+#if defined(ANDROID) || defined(linux) && (defined(sparc) || defined(__arm__)) - /* SPARC does not support unaligned memory access. Let gcc know when - * to emit the right code. */ - struct unaligned_Uint16 { ui16 val __attribute__(( packed )); }; +-#if defined(_MSC_VER) && _MSC_VER >= 1800 ++#if (defined(_MSC_VER) && _MSC_VER >= 1800) || defined(ANDROID) + #define _USE_MATH_DEFINES + #include + #else Index: client/CMT.cpp =================================================================== --- client/CMT.cpp (revision 3490) @@ -24,3 +24,16 @@ Index: client/CMT.cpp int SDL_main(int argc, char *argv[]) #else int main(int argc, char** argv) +Index: lib/vcmi_endian.h +=================================================================== +--- lib/vcmi_endian.h (revision 3490) ++++ lib/vcmi_endian.h (working copy) +@@ -19,7 +19,7 @@ + * memory. On big endian machines, the value will be byteswapped. + */ + +-#if defined(linux) && (defined(sparc) || defined(__arm__)) ++#if defined(ANDROID) || defined(linux) && (defined(sparc) || defined(__arm__)) + /* SPARC does not support unaligned memory access. Let gcc know when + * to emit the right code. */ + struct unaligned_Uint16 { ui16 val __attribute__(( packed )); };