Fixed VCMI compilation, it crashes yay.

This commit is contained in:
Sergii Pylypenko
2013-08-01 23:00:45 +03:00
parent 062c3ff22c
commit 602e54c210
4 changed files with 51 additions and 22 deletions

View File

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

View File

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

View File

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

View File

@@ -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 <cmath>
#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 )); };