Updated VCMI, added readme

This commit is contained in:
pelya
2011-06-10 13:27:16 +03:00
parent 22a4b5ac03
commit 538a0d0b3f
11 changed files with 100 additions and 27 deletions

View File

@@ -533,6 +533,7 @@ public class MainActivity extends Activity {
} }
} }
// ----- VCMI hack -----
try { try {
System.out.println("libSDL: Extracting VCMI server"); System.out.println("libSDL: Extracting VCMI server");
@@ -603,6 +604,7 @@ public class MainActivity extends Activity {
{ {
System.out.println("libSDL: Error: " + eee.toString()); System.out.println("libSDL: Error: " + eee.toString());
} }
// ----- VCMI hack -----
}; };

View File

@@ -264,6 +264,18 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
// Thread.currentThread().setPriority((Thread.currentThread().getPriority() + Thread.MIN_PRIORITY)/2); // Thread.currentThread().setPriority((Thread.currentThread().getPriority() + Thread.MIN_PRIORITY)/2);
mGlContextLost = false; mGlContextLost = false;
// ----- VCMI hack -----
try
{
File libpath = new File(context.getFilesDir(), "libvcmi.so");
System.load(libpath.getPath());
}
catch ( UnsatisfiedLinkError eee )
{
System.out.println("libSDL: error loading lib: " + eee.toString());
}
// ----- VCMI hack -----
String libs[] = { "application", "sdl_main" }; String libs[] = { "application", "sdl_main" };
try try
@@ -275,13 +287,21 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
} }
catch ( UnsatisfiedLinkError e ) catch ( UnsatisfiedLinkError e )
{ {
for(String l : libs) System.out.println("libSDL: error loading lib: " + e.toString());
try
{ {
String libname = System.mapLibraryName(l); for(String l : libs)
File libpath = new File(context.getCacheDir(), libname); {
System.out.println("libSDL: loading lib " + libpath.getPath()); String libname = System.mapLibraryName(l);
System.load(libpath.getPath()); File libpath = new File(context.getCacheDir(), libname);
libpath.delete(); System.out.println("libSDL: loading lib " + libpath.getPath());
System.load(libpath.getPath());
libpath.delete();
}
}
catch ( UnsatisfiedLinkError ee )
{
System.out.println("libSDL: error loading lib: " + ee.toString());
} }
} }

View File

@@ -3,7 +3,7 @@ Download my GIT repo from https://github.com/pelya/commandergenius,
then install Android SDK 2.2, NDK r4b (NDK r5/r5b will not compile this), then install Android SDK 2.2, NDK r4b (NDK r5/r5b will not compile this),
and "ant" tool, then launch commands and "ant" tool, then launch commands
rm project/jni/application/src rm project/jni/application/src
ln -s scummvm project/jni/application/src ln -s vcmi project/jni/application/src
cd project && android update project -p . cd project && android update project -p .
then download OpenTTD 1.1.1 into the dir project/jni/application/openttd/openttd then download OpenTTD 1.1.1 into the dir project/jni/application/openttd/openttd
(or create a symlink to it if you already have downloaded it), then apply patch openttd-trunk-android.patch (or create a symlink to it if you already have downloaded it), then apply patch openttd-trunk-android.patch

View File

@@ -63,15 +63,19 @@ CFLAGS="\
`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-I$LOCAL_PATH/../\1/include@g\"` \ `echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-I$LOCAL_PATH/../\1/include@g\"` \
$CRYSTAX_WCHAR_INCLUDE" $CRYSTAX_WCHAR_INCLUDE"
SHARED=-shared SHARED="-shared -Wl,-soname,libapplication.so"
if [ -n "$BUILD_EXECUTABLE" ]; then if [ -n "$BUILD_EXECUTABLE" ]; then
SHARED= SHARED=
fi fi
if [ -n "$NO_SHARED_LIBS" ]; then
APP_SHARED_LIBS=
fi
#-shared flag creates problems with damn libtool, so we're using -Wl,-shared instead #-shared flag creates problems with damn libtool, so we're using -Wl,-shared instead
LDFLAGS="\ LDFLAGS="\
-fexceptions -frtti $SHARED \ -fexceptions -frtti $SHARED \
-Wl,-soname,libapplication.so --sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \ --sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \
`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/armeabi/lib\1.so@g\"` \ `echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/armeabi/lib\1.so@g\"` \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libm.so \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libm.so \

View File

@@ -30,7 +30,7 @@ AppVersionName="0.85.01"
CompiledLibraries="sdl_mixer sdl_image sdl_ttf avutil avcore avcodec avformat swscale boost_program_options boost_filesystem boost_iostreams boost_system boost_thread" CompiledLibraries="sdl_mixer sdl_image sdl_ttf avutil avcore avcodec avformat swscale boost_program_options boost_filesystem boost_iostreams boost_system boost_thread"
CustomBuildScript=n CustomBuildScript=n
AppCflags='-DDATA_DIR=\\\"/sdcard/app-data/eu.vcmi\\\" -DBIN_DIR=\\\"/data/data/eu.vcmi/files\\\" -DLIB_DIR=\\\"/data/data/eu.vcmi/files\\\" -DWITH_AVCODEC_DECODE_VIDEO2=1' AppCflags='-DDATA_DIR=\\\"/sdcard/app-data/eu.vcmi\\\" -DBIN_DIR=\\\"/data/data/eu.vcmi/files\\\" -DLIB_DIR=\\\"/data/data/eu.vcmi/files\\\" -DWITH_AVCODEC_DECODE_VIDEO2=1'
AppLdflags='-lz' AppLdflags='-lz -Ljni/application/vcmi -lvcmi'
AppSubdirsBuild='vcmi vcmi/client vcmi/lib' AppSubdirsBuild='vcmi vcmi/client'
AppCmdline='' AppCmdline=''
ReadmeText='^You may press "Home" now - the data will be downloaded in background' ReadmeText='^You may press "Home" now - the data will be downloaded in background'

Binary file not shown.

Binary file not shown.

View File

@@ -1,34 +1,68 @@
$(shell mkdir -p out/vcmi/lib out/vcmi/server) $(shell mkdir -p debug out/vcmi/lib out/vcmi/server out/vcmi/AI/StupidAI out/vcmi/AI/GeniusAI)
LOCAL_PATH=$(shell dirname $0) LOCAL_PATH=$(shell dirname $0)
LOCAL_PATH=`cd $LOCAL_PATH && pwd` LOCAL_PATH=`cd $LOCAL_PATH && pwd`
GCC_PREFIX=$(if $(shell which ndk-build | grep 'android-ndk-r5'),arm-linux-androideabi,arm-eabi) GCC_PREFIX=$(if $(shell which ndk-build | grep 'android-ndk-r5'),arm-linux-androideabi,arm-eabi)
SOURCES=$(wildcard vcmi/lib/*.cpp vcmi/server/*.cpp vcmi/CConsoleHandler.cpp vcmi/CThreadHelper.cpp) SOURCES_LIB=$(wildcard vcmi/lib/*.cpp vcmi/CConsoleHandler.cpp vcmi/CThreadHelper.cpp)
OBJS=$(patsubst %.cpp, out/%.o, $(SOURCES)) OBJS_LIB=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB))
$(warning SOURCES $(SOURCES))
$(warning OBJS $(OBJS))
vcmiserver: $(OBJS) SOURCES_SERVER=$(wildcard vcmi/server/*.cpp)
env BUILD_EXECUTABLE=1 ../setEnvironment.sh sh -c \ OBJS_SERVER=$(patsubst %.cpp, out/%.o, $(SOURCES_SERVER))
"$(GCC_PREFIX)-g++ \
\$$LDFLAGS \
$^ -o $@ \
-lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread"
mkdir -p debug
cp $@ debug/$@
$(GCC_PREFIX)-strip $@
$(OBJS): out/%.o: %.cpp SOURCES_STUPIDAI=$(wildcard vcmi/AI/StupidAI/*.cpp)
OBJS_STUPIDAI=$(patsubst %.cpp, out/%.o, $(SOURCES_STUPIDAI))
SOURCES_GENIUSAI=$(filter-out %/ExpertSystem.cpp, $(wildcard vcmi/AI/GeniusAI/*.cpp))
OBJS_GENIUSAI=$(patsubst %.cpp, out/%.o, $(SOURCES_GENIUSAI))
all: AndroidData/vcmiserver0
AndroidData/vcmiserver0: vcmiserver.zip
split -b 1048576 -d -a 1 $< AndroidData/vcmiserver
vcmiserver.zip: vcmiserver libvcmi.so GeniusAI.so StupidAI.so
rm -f $@
zip $@ $^
$(OBJS_SERVER) $(OBJS_LIB) $(OBJS_GENIUSAI) $(OBJS_STUPIDAI): out/%.o: %.cpp
../setEnvironment.sh sh -c \ ../setEnvironment.sh sh -c \
"$(GCC_PREFIX)-g++ \ "$(GCC_PREFIX)-g++ \
-c \$$CXXFLAGS -Ivcmi -Ivcmi/lib -Ivcmi/server \ -c \$$CXXFLAGS -Ivcmi -Ivcmi/lib \
-DDATA_DIR=\\\"/sdcard/app-data/eu.vcmi\\\" \ -DDATA_DIR=\\\"/sdcard/app-data/eu.vcmi\\\" \
-DBIN_DIR=\\\"/data/data/eu.vcmi/files\\\" \ -DBIN_DIR=\\\"/data/data/eu.vcmi/files\\\" \
-DLIB_DIR=\\\"/data/data/eu.vcmi/files\\\" \ -DLIB_DIR=\\\"/data/data/eu.vcmi/files\\\" \
-DWITH_AVCODEC_DECODE_VIDEO2=1 \ -DWITH_AVCODEC_DECODE_VIDEO2=1 \
$< -o $@" $< -o $@"
vcmiserver: $(OBJS_SERVER) $(OBJS_LIB)
env BUILD_EXECUTABLE=1 NO_SHARED_LIBS=1 ../setEnvironment.sh sh -c \
"$(GCC_PREFIX)-g++ \
\$$LDFLAGS -L. \
$^ -o $@ \
-lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread" && \
cp $@ debug/$@ && \
$(GCC_PREFIX)-strip $@
LINK_LIB= \
env BUILD_EXECUTABLE=1 NO_SHARED_LIBS=1 ../setEnvironment.sh sh -c \
"$(GCC_PREFIX)-g++ \
-shared \$$LDFLAGS -L. \
$^ -o $@ \
-lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread" && \
cp $@ debug/$@ && \
$(GCC_PREFIX)-strip $@
GeniusAI.so: $(OBJS_GENIUSAI) -lvcmi
$(LINK_LIB)
StupidAI.so: $(OBJS_STUPIDAI) -lvcmi
$(LINK_LIB)
libvcmi.so: $(OBJS_LIB)
$(LINK_LIB)
.PHONY: -lvcmi
-lvcmi: libvcmi.so

View File

@@ -0,0 +1,13 @@
Quick compilation guide:
Download my GIT repo from https://github.com/pelya/commandergenius,
then install Android SDK 2.2, NDK r5c from http://developer.android.com,
and "ant" tool, then launch commands
rm project/jni/application/src
ln -s vcmi project/jni/application/src
cd project && android update project -p .
then download VCMI into the dir project/jni/application/vcmi/vcmi
(or create a symlink to it if you already have downloaded it), then apply patch vcmi-android.diff,
launch "make" from directory project/jni/application/vcmi (it will create some shared libs),
then launch build.sh.
To run it you should have complete installation of Heroes 3: Wake of Gods on your SD card on your device,
in the directory app-data/eu.vcmi