VCMI sources were moved to different repository - removed them from here and updated readme
This commit is contained in:
@@ -1,10 +0,0 @@
|
||||
libvcmi.so
|
||||
libvcmi.a
|
||||
AI
|
||||
Scripting
|
||||
debug
|
||||
out
|
||||
vcmiserver
|
||||
vcmiserver.zip
|
||||
build.log
|
||||
AndroidData/binaries.zip
|
||||
@@ -1,215 +0,0 @@
|
||||
# The application settings for Android libSDL port
|
||||
|
||||
AppSettingVersion=19
|
||||
|
||||
# libSDL version to use (1.2 or 1.3, specify 1.3 for SDL2)
|
||||
LibSdlVersion=1.2
|
||||
|
||||
# Specify application name (e.x. My Application)
|
||||
AppName="VCMI"
|
||||
|
||||
# Specify reversed site name of application (e.x. com.mysite.myapp)
|
||||
AppFullName=eu.vcmi
|
||||
|
||||
# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape
|
||||
ScreenOrientation=h
|
||||
|
||||
# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer
|
||||
InhibitSuspend=y
|
||||
|
||||
# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...'
|
||||
# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu
|
||||
# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped
|
||||
# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir -
|
||||
# these files are put inside .apk package by build system
|
||||
# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS
|
||||
AppDataDownloadUrl="!Data files|data1.zip^!Data files|data2.zip^!Data files|data3.zip^"
|
||||
|
||||
# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only
|
||||
# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32)
|
||||
VideoDepthBpp=16
|
||||
|
||||
# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n)
|
||||
NeedDepthBuffer=n
|
||||
|
||||
# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n)
|
||||
NeedStencilBuffer=n
|
||||
|
||||
# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device
|
||||
# you need this option only if you're developing 3-d app (y) or (n)
|
||||
NeedGles2=n
|
||||
|
||||
# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL,
|
||||
# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n)
|
||||
SwVideoMode=y
|
||||
|
||||
# Application video output will be resized to fit into native device screen (y)/(n)
|
||||
SdlVideoResize=y
|
||||
|
||||
# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n)
|
||||
SdlVideoResizeKeepAspect=n
|
||||
|
||||
# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread -
|
||||
# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n)
|
||||
CompatibilityHacks=y
|
||||
|
||||
# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n)
|
||||
CompatibilityHacksStaticInit=n
|
||||
|
||||
# On-screen Android soft text input emulates hardware keyboard, this will only work with Hackers Keyboard app (y)/(n)
|
||||
CompatibilityHacksTextInputEmulatesHwKeyboard=n
|
||||
|
||||
# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n)
|
||||
CompatibilityHacksPreventAudioChopping=n
|
||||
|
||||
# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n)
|
||||
CompatibilityHacksAppIgnoresAudioBufferSize=n
|
||||
|
||||
# Hack for VCMI: preload additional shared libraries before aplication start
|
||||
CompatibilityHacksAdditionalPreloadedSharedLibraries="vcmi"
|
||||
|
||||
# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue -
|
||||
# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n)
|
||||
CompatibilityHacksSlowCompatibleEventQueue=n
|
||||
|
||||
# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL
|
||||
CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=
|
||||
|
||||
# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user
|
||||
AppUsesMouse=y
|
||||
|
||||
# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n)
|
||||
AppNeedsTwoButtonMouse=y
|
||||
|
||||
# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n)
|
||||
ShowMouseCursor=n
|
||||
|
||||
# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n)
|
||||
ForceRelativeMouseMode=n
|
||||
|
||||
# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n)
|
||||
AppNeedsArrowKeys=n
|
||||
|
||||
# Application needs text input (y) or (n), enables button for text input on screen
|
||||
AppNeedsTextInput=y
|
||||
|
||||
# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1
|
||||
AppUsesJoystick=n
|
||||
|
||||
# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n)
|
||||
AppUsesSecondJoystick=n
|
||||
|
||||
# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7
|
||||
AppUsesAccelerometer=n
|
||||
|
||||
# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4
|
||||
AppUsesGyroscope=n
|
||||
|
||||
# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0
|
||||
AppUsesMultitouch=n
|
||||
|
||||
# Application records audio (it will use any available source, such a s microphone)
|
||||
# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void);
|
||||
# This option will add additional permission to Android manifest (y)/(n)
|
||||
AppRecordsAudio=n
|
||||
|
||||
# Application implements Android-specific routines to put to background, and will not draw anything to screen
|
||||
# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them
|
||||
# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n)
|
||||
# This option is reported to be buggy, sometimes failing to restore video state
|
||||
NonBlockingSwapBuffers=n
|
||||
|
||||
# Redefine common hardware keys to SDL keysyms
|
||||
# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent
|
||||
# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices
|
||||
# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th)
|
||||
# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA
|
||||
RedefinedKeys="LALT RETURN NO_REMAP NO_REMAP E"
|
||||
|
||||
# Number of virtual keyboard keys (currently 6 is maximum)
|
||||
AppTouchscreenKeyboardKeysAmount=0
|
||||
|
||||
# Number of virtual keyboard keys that support autofire (currently 2 is maximum)
|
||||
AppTouchscreenKeyboardKeysAmountAutoFire=0
|
||||
|
||||
# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)
|
||||
RedefinedKeysScreenKb="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2"
|
||||
|
||||
# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu
|
||||
RedefinedKeysScreenKbNames="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2"
|
||||
|
||||
# How long to show startup menu button, in msec, 0 to disable startup menu
|
||||
StartupMenuButtonTimeout=3000
|
||||
|
||||
# Menu items to hide from startup menu, available menu items:
|
||||
# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout
|
||||
HiddenMenuOptions='SettingsMenuMisc.OptionalDownloadConfig'
|
||||
|
||||
# Menu items to show at startup - this is Java code snippet, leave empty for default
|
||||
# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration()
|
||||
# Available menu items:
|
||||
# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout
|
||||
FirstStartMenuOptions=''
|
||||
|
||||
# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices,
|
||||
# but .apk size is 2x bigger (y) / (n) / (x86) / (all)
|
||||
MultiABI=armeabi-v7a
|
||||
|
||||
# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower
|
||||
AppMinimumRAM=128
|
||||
|
||||
# Application version code (integer)
|
||||
AppVersionCode=08606
|
||||
|
||||
# Application user-visible version name (string)
|
||||
AppVersionName="0.86.06"
|
||||
|
||||
# Reset SDL config when updating application to the new version (y) / (n)
|
||||
ResetSdlConfigForThisVersion=y
|
||||
|
||||
# Delete application data files when upgrading (specify file/dir paths separated by spaces)
|
||||
DeleteFilesOnUpgrade="libsdl-DownloadFinished-0.flag libsdl-DownloadFinished-1.flag libsdl-DownloadFinished-2.flag libsdl-DownloadFinished-3.flag libsdl-DownloadFinished-4.flag libsdl-DownloadFinished-5.flag"
|
||||
|
||||
# Optional shared libraries to compile - removing some of them will save space
|
||||
# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed
|
||||
# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2
|
||||
CompiledLibraries="mad sdl_mixer sdl_image sdl_ttf avutil avcore avcodec avformat swscale boost_program_options boost_filesystem boost_iostreams boost_system boost_thread android"
|
||||
|
||||
# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n)
|
||||
CustomBuildScript=y
|
||||
|
||||
# Aditional CFLAGS for application
|
||||
AppCflags=''
|
||||
|
||||
# Additional LDFLAGS for application
|
||||
AppLdflags=''
|
||||
|
||||
# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable
|
||||
AppOverlapsSystemHeaders=
|
||||
|
||||
# Build only following subdirs (empty will build all dirs, ignored with custom script)
|
||||
AppSubdirsBuild=''
|
||||
|
||||
# Exclude these files from build
|
||||
AppBuildExclude=''
|
||||
|
||||
# Application command line parameters, including app name as 0-th param
|
||||
AppCmdline=''
|
||||
|
||||
# Here you may type readme text, which will be shown during startup. Format is:
|
||||
# Text in English, use \\\\n to separate lines^de:Text in Deutsch^ru:Text in Russian, and so on (that's four backslashes, nice isn't it?)
|
||||
ReadmeText='^You may press "Home" now - the data will be downloaded in background'
|
||||
|
||||
# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens
|
||||
# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge
|
||||
MinimumScreenSize=s
|
||||
|
||||
# Your AdMob Publisher ID, (n) if you don't want advertisements
|
||||
AdmobPublisherId=n
|
||||
|
||||
# Your AdMob test device ID, to receive a test ad
|
||||
AdmobTestDeviceId=
|
||||
|
||||
# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER)
|
||||
AdmobBannerSize=
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# For some reason I'm getting errors with "make -j4"
|
||||
make -k ARCH=$1 || exit 1
|
||||
[ -f libapplication-$1.so ] || exit 1
|
||||
[ -e libapplication.so ] || ln -s libapplication-armeabi.so libapplication.so
|
||||
exit 0
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,98 +0,0 @@
|
||||
$(shell mkdir -p $(ARCH)/AI debug/$(ARCH)/AI $(ARCH)/Scripting debug/$(ARCH)/Scripting \
|
||||
$(ARCH)/out/vcmi/lib $(ARCH)/out/vcmi/server $(ARCH)/out/vcmi/AI/StupidAI \
|
||||
$(ARCH)/out/vcmi/AI/GeniusAI $(ARCH)/out/vcmi/client $(ARCH)/out/vcmi/Scripting/ERM)
|
||||
|
||||
GCC_VERSION:=4.8
|
||||
ARCH:=armeabi-v7a
|
||||
|
||||
SOURCES_LIB:=$(wildcard vcmi/lib/*.cpp vcmi/CConsoleHandler.cpp vcmi/CThreadHelper.cpp)
|
||||
OBJS_LIB:=$(patsubst %.cpp, $(ARCH)/out/%.o, $(SOURCES_LIB))
|
||||
|
||||
SOURCES_SERVER:=$(wildcard vcmi/server/*.cpp)
|
||||
OBJS_SERVER:=$(patsubst %.cpp, $(ARCH)/out/%.o, $(SOURCES_SERVER))
|
||||
|
||||
SOURCES_STUPIDAI:=$(wildcard vcmi/AI/StupidAI/*.cpp)
|
||||
OBJS_STUPIDAI:=$(patsubst %.cpp, $(ARCH)/out/%.o, $(SOURCES_STUPIDAI))
|
||||
|
||||
SOURCES_GENIUSAI:=$(filter-out %/ExpertSystem.cpp, $(wildcard vcmi/AI/GeniusAI/*.cpp))
|
||||
OBJS_GENIUSAI:=$(patsubst %.cpp, $(ARCH)/out/%.o, $(SOURCES_GENIUSAI))
|
||||
|
||||
SOURCES_ERM:=$(wildcard vcmi/Scripting/ERM/*.cpp)
|
||||
OBJS_ERM:=$(patsubst %.cpp, $(ARCH)/out/%.o, $(SOURCES_ERM))
|
||||
|
||||
SOURCES_CLIENT:=$(wildcard vcmi/client/*.cpp vcmi/CCallback.cpp)
|
||||
OBJS_CLIENT:=$(patsubst %.cpp, $(ARCH)/out/%.o, $(SOURCES_CLIENT))
|
||||
|
||||
all: AndroidData/binaries-$(ARCH).zip libapplication-$(ARCH).so
|
||||
|
||||
AndroidData/binaries-$(ARCH).zip: $(ARCH)/vcmiserver $(ARCH)/AI/libGeniusAI.so $(ARCH)/AI/libStupidAI.so $(ARCH)/Scripting/libvcmiERM.so $(ARCH)/libvcmi.so
|
||||
rm -f $@
|
||||
cd $(ARCH) && zip -r ../$@ $(foreach F, $^, $(patsubst $(ARCH)/%,%,$(F)))
|
||||
|
||||
$(OBJS_SERVER) $(OBJS_LIB) $(OBJS_GENIUSAI) $(OBJS_STUPIDAI) $(OBJS_CLIENT) $(OBJS_ERM): $(ARCH)/out/%.o: %.cpp
|
||||
env GCCVER=$(GCC_VERSION) ../setEnvironment-$(ARCH).sh sh -c \
|
||||
"\$$CXX \
|
||||
-c \$$CXXFLAGS -Ivcmi -Ivcmi/lib \
|
||||
-DDATA_DIR=\\\"/sdcard/Android/data/eu.vcmi/files\\\" \
|
||||
-DBIN_DIR=\\\"/data/data/eu.vcmi/files\\\" \
|
||||
-DLIB_DIR=\\\"/data/data/eu.vcmi/files\\\" \
|
||||
-DWITH_AVCODEC_DECODE_VIDEO2=1 \
|
||||
-Wstrict-aliasing -Wcast-align -Wpointer-arith -Waddress \
|
||||
$< -o $@"
|
||||
# -Werror=strict-aliasing -Werror=cast-align -Werror=pointer-arith -Werror=address
|
||||
|
||||
#ALLOW_UNRESOLVED_SYMBOLS=1
|
||||
LINK_LIB= \
|
||||
env GCCVER=$(GCC_VERSION) NO_SHARED_LIBS=1 SHARED_LIBRARY_NAME=`basename $@` \
|
||||
../setEnvironment-$(ARCH).sh sh -c \
|
||||
"\$$CXX \
|
||||
-Wl,--whole-archive $^ -Wl,--no-whole-archive -o $@ \
|
||||
\$$LDFLAGS -L$(ARCH) \
|
||||
-Wl,--undefined=__gnu_thumb1_case_uqi -Wl,--undefined=__gnu_thumb1_case_uhi \
|
||||
-Wl,--undefined=__clzsi2 -lgcc \
|
||||
-lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread && \
|
||||
cp $@ debug/$@ && \
|
||||
\$$STRIP --strip-unneeded $@"
|
||||
|
||||
#$(ARCH)/libvcmi.a: $(OBJS_LIB)
|
||||
# ar rcs $@ $^
|
||||
|
||||
$(ARCH)/libvcmi.so: $(OBJS_LIB)
|
||||
$(LINK_LIB)
|
||||
|
||||
-lvcmi: $(ARCH)/libvcmi.so
|
||||
# cp -f $^ ../../../libs/$^
|
||||
|
||||
.PHONY: -lvcmi
|
||||
|
||||
$(ARCH)/AI/libGeniusAI.so: $(OBJS_GENIUSAI) -lvcmi
|
||||
$(LINK_LIB)
|
||||
|
||||
$(ARCH)/AI/libStupidAI.so: $(OBJS_STUPIDAI) -lvcmi
|
||||
$(LINK_LIB)
|
||||
|
||||
$(ARCH)/Scripting/libvcmiERM.so: $(OBJS_ERM) -lvcmi
|
||||
$(LINK_LIB)
|
||||
|
||||
$(ARCH)/vcmiserver: $(OBJS_SERVER) -lvcmi
|
||||
env GCCVER=$(GCC_VERSION) BUILD_EXECUTABLE=1 NO_SHARED_LIBS=1 ../setEnvironment-$(ARCH).sh sh -c \
|
||||
"\$$CXX \
|
||||
-Wl,--whole-archive $^ -Wl,--no-whole-archive -o $@ \
|
||||
\$$LDFLAGS -L$(ARCH) -Wl,-rpath,/data/data/eu.vcmi/lib \
|
||||
-lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread && \
|
||||
cp $@ debug/$@ && \
|
||||
\$$STRIP --strip-unneeded $@"
|
||||
|
||||
libapplication-$(ARCH).so: $(OBJS_CLIENT) -lvcmi
|
||||
env GCCVER=$(GCC_VERSION) ../setEnvironment-$(ARCH).sh sh -c \
|
||||
"\$$CXX \
|
||||
-Wl,--whole-archive $^ -Wl,--no-whole-archive -o $@ \
|
||||
\$$LDFLAGS -L$(ARCH) \
|
||||
-lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread -lboost_program_options && \
|
||||
cp $@ debug/$@"
|
||||
# No need to strip, it's done inside build.sh script
|
||||
|
||||
clean:
|
||||
rm -rf armeabi* debug AndroidData/binaries-*.zip libapplication*.so
|
||||
|
||||
.PHONY: clean
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.6 KiB |
@@ -1,14 +0,0 @@
|
||||
Quick compilation guide:
|
||||
Download my GIT repo from https://github.com/pelya/commandergenius,
|
||||
then install Android SDK from http://developer.android.com,
|
||||
NDK r8d from http://crystax.net/ and "ant" tool, then launch commands
|
||||
android update project -p project
|
||||
rm project/jni/application/src
|
||||
ln -s vcmi project/jni/application/src
|
||||
echo > project/jni/application/vcmi/libvcmi.so
|
||||
then download VCMI revision 2387 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,
|
||||
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 Android/data/eu.vcmi/files
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,9 +0,0 @@
|
||||
libvcmi.so
|
||||
AI
|
||||
Scripting
|
||||
debug
|
||||
out
|
||||
vcmiserver
|
||||
vcmiserver.zip
|
||||
build.log
|
||||
AndroidData/binaries.zip
|
||||
@@ -1,232 +0,0 @@
|
||||
# The application settings for Android libSDL port
|
||||
|
||||
AppSettingVersion=19
|
||||
|
||||
# libSDL version to use (1.2 or 1.3, specify 1.3 for SDL2)
|
||||
LibSdlVersion=1.2
|
||||
|
||||
# Specify application name (e.x. My Application)
|
||||
AppName="VCMI"
|
||||
|
||||
# Specify reversed site name of application (e.x. com.mysite.myapp)
|
||||
AppFullName=eu.vcmi
|
||||
|
||||
# Specify screen orientation: (v)ertical/(p)ortrait or (h)orizontal/(l)andscape
|
||||
ScreenOrientation=h
|
||||
|
||||
# Do not allow device to sleep when the application is in foreground, set this for video players or apps which use accelerometer
|
||||
InhibitSuspend=n
|
||||
|
||||
# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...'
|
||||
# If you'll start Description with '!' symbol it will be enabled by default, other downloads should be selected by user from startup config menu
|
||||
# If the URL in in the form ':dir/file.dat:http://URL/' it will be downloaded as binary BLOB to the application dir and not unzipped
|
||||
# If the URL does not contain 'http://' it is treated as file from 'project/jni/application/src/AndroidData' dir -
|
||||
# these files are put inside .apk package by build system
|
||||
# Also please avoid 'https://' URLs, many Android devices do not have trust certificates and will fail to connect to SF.net over HTTPS
|
||||
AppDataDownloadUrl="!Data files|vcmi_094.zip"
|
||||
|
||||
# Video color depth - 16 BPP is the fastest and supported for all modes, 24 bpp is supported only
|
||||
# with SwVideoMode=y, SDL_OPENGL mode supports everything. (16)/(24)/(32)
|
||||
VideoDepthBpp=16
|
||||
|
||||
# Enable OpenGL depth buffer (needed only for 3-d applications, small speed decrease) (y) or (n)
|
||||
NeedDepthBuffer=n
|
||||
|
||||
# Enable OpenGL stencil buffer (needed only for 3-d applications, small speed decrease) (y) or (n)
|
||||
NeedStencilBuffer=n
|
||||
|
||||
# Try to use GLES 2.x context - will revert to GLES 1.X if unsupported by device
|
||||
# you need this option only if you're developing 3-d app (y) or (n)
|
||||
NeedGles2=n
|
||||
|
||||
# Application uses software video buffer - you're calling SDL_SetVideoMode() without SDL_HWSURFACE and without SDL_OPENGL,
|
||||
# this will allow small speed optimization. Enable this even when you're using SDL_HWSURFACE. (y) or (n)
|
||||
SwVideoMode=y
|
||||
|
||||
# Application video output will be resized to fit into native device screen (y)/(n)
|
||||
SdlVideoResize=y
|
||||
|
||||
# Application resizing will keep 4:3 aspect ratio, with black bars at sides (y)/(n)
|
||||
SdlVideoResizeKeepAspect=n
|
||||
|
||||
# Application does not call SDL_Flip() or SDL_UpdateRects() appropriately, or draws from non-main thread -
|
||||
# enabling the compatibility mode will force screen update every 100 milliseconds, which is laggy and inefficient (y) or (n)
|
||||
CompatibilityHacks=y
|
||||
|
||||
# Application initializes SDL audio/video inside static constructors (which is bad, you won't be able to run ndk-gdb) (y)/(n)
|
||||
CompatibilityHacksStaticInit=n
|
||||
|
||||
CompatibilityHacksTextInputEmulatesHwKeyboard=n
|
||||
|
||||
# Hack for broken devices: prevent audio chopping, by sleeping a bit after pushing each audio chunk (y)/(n)
|
||||
CompatibilityHacksPreventAudioChopping=n
|
||||
|
||||
# Hack for broken apps: application ignores audio buffer size returned by SDL (y)/(n)
|
||||
CompatibilityHacksAppIgnoresAudioBufferSize=n
|
||||
|
||||
# Hack for VCMI: preload additional shared libraries before aplication start
|
||||
CompatibilityHacksAdditionalPreloadedSharedLibraries="vcmi"
|
||||
|
||||
# Hack for Free Heroes 2, which redraws the screen inside SDL_PumpEvents(): slow and compatible SDL event queue -
|
||||
# do not use it with accelerometer/gyroscope, or your app may freeze at random (y)/(n)
|
||||
CompatibilityHacksSlowCompatibleEventQueue=n
|
||||
|
||||
# Save and restore OpenGL state when drawing on-screen keyboard for apps that use SDL_OPENGL
|
||||
CompatibilityHacksTouchscreenKeyboardSaveRestoreOpenGLState=
|
||||
|
||||
# Application uses SDL_UpdateRects() properly, and does not draw in any region outside those rects.
|
||||
# This improves drawing speed, but I know only one application that does that, and it's written by me (y)/(n)
|
||||
CompatibilityHacksProperUsageOfSDL_UpdateRects=
|
||||
|
||||
# Application uses mouse (y) or (n), this will show mouse emulation dialog to the user
|
||||
AppUsesMouse=y
|
||||
|
||||
# Application needs two-button mouse, will also enable advanced point-and-click features (y) or (n)
|
||||
AppNeedsTwoButtonMouse=y
|
||||
|
||||
# Show SDL mouse cursor, for applications that do not draw cursor at all (y) or (n)
|
||||
ShowMouseCursor=n
|
||||
|
||||
# Generate more touch events, by default SDL generates one event per one video frame, this is useful for drawing apps (y) or (n)
|
||||
GenerateSubframeTouchEvents=
|
||||
|
||||
# Force relative (laptop) mouse movement mode, useful when both on-screen keyboard and mouse are needed (y) or (n)
|
||||
ForceRelativeMouseMode=n
|
||||
|
||||
# Application needs arrow keys (y) or (n), will show on-screen dpad/joystick (y) or (n)
|
||||
AppNeedsArrowKeys=n
|
||||
|
||||
# Application needs text input (y) or (n), enables button for text input on screen
|
||||
AppNeedsTextInput=y
|
||||
|
||||
# Application uses joystick (y) or (n), the on-screen DPAD will be used as joystick 0 axes 0-1
|
||||
AppUsesJoystick=n
|
||||
|
||||
# Application uses second on-screen joystick, as SDL joystick 0 axes 2-3 (y)/(n)
|
||||
AppUsesSecondJoystick=n
|
||||
|
||||
# Application uses accelerometer (y) or (n), the accelerometer will be used as joystick 1 axes 0-1 and 5-7
|
||||
AppUsesAccelerometer=n
|
||||
|
||||
# Application uses gyroscope (y) or (n), the gyroscope will be used as joystick 1 axes 2-4
|
||||
AppUsesGyroscope=n
|
||||
|
||||
# Application uses multitouch (y) or (n), multitouch events are passed as SDL_JOYBALLMOTION events for the joystick 0
|
||||
AppUsesMultitouch=n
|
||||
|
||||
# Application records audio (it will use any available source, such a s microphone)
|
||||
# API is defined in file SDL_android.h: int SDL_ANDROID_OpenAudioRecording(SDL_AudioSpec *spec); void SDL_ANDROID_CloseAudioRecording(void);
|
||||
# This option will add additional permission to Android manifest (y)/(n)
|
||||
AppRecordsAudio=n
|
||||
|
||||
# Application implements Android-specific routines to put to background, and will not draw anything to screen
|
||||
# between SDL_ACTIVEEVENT lost / gained notifications - you should check for them
|
||||
# rigth after SDL_Flip(), if (n) then SDL_Flip() will block till app in background (y) or (n)
|
||||
# This option is reported to be buggy, sometimes failing to restore video state
|
||||
NonBlockingSwapBuffers=n
|
||||
|
||||
# Redefine common hardware keys to SDL keysyms
|
||||
# BACK hardware key is available on all devices, MENU is available on pre-ICS devices, other keys may be absent
|
||||
# SEARCH and CALL by default return same keycode as DPAD_CENTER - one of those keys is available on most devices
|
||||
# Use word NO_REMAP if you want to preserve native functionality for certain key (volume keys are 3-rd and 4-th)
|
||||
# Keys: TOUCHSCREEN (works only when AppUsesMouse=n), DPAD_CENTER/SEARCH, VOLUMEUP, VOLUMEDOWN, MENU, BACK, CAMERA
|
||||
RedefinedKeys="LALT RETURN NO_REMAP NO_REMAP E"
|
||||
|
||||
# Number of virtual keyboard keys (currently 6 is maximum)
|
||||
AppTouchscreenKeyboardKeysAmount=0
|
||||
|
||||
# Number of virtual keyboard keys that support autofire (currently 2 is maximum)
|
||||
AppTouchscreenKeyboardKeysAmountAutoFire=0
|
||||
|
||||
# Redefine on-screen keyboard keys to SDL keysyms - 6 keyboard keys + 4 multitouch gestures (zoom in/out and rotate left/right)
|
||||
RedefinedKeysScreenKb="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2"
|
||||
|
||||
# Names for on-screen keyboard keys, such as Fire, Jump, Run etc, separated by spaces, they are used in SDL config menu
|
||||
RedefinedKeysScreenKbNames="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2"
|
||||
|
||||
# On-screen keys theme
|
||||
# 0 = Ultimate Droid by Sean Stieber (green, with gamepad joystick)
|
||||
# 1 = Simple Theme by Beholder (white, with gamepad joystick)
|
||||
# 2 = Sun by Sirea (yellow, with round joystick)
|
||||
# 3 = Keen by Gerstrong (multicolor, with round joystick)
|
||||
TouchscreenKeysTheme=1
|
||||
|
||||
# Redefine gamepad keys to SDL keysyms, button order is:
|
||||
# A B X Y L1 R1 L2 R2 LThumb RThumb
|
||||
RedefinedKeysGamepad="LALT RETURN KP_PLUS KP_MINUS SPACE DELETE KP_PLUS KP_MINUS 1 2"
|
||||
|
||||
# How long to show startup menu button, in msec, 0 to disable startup menu
|
||||
StartupMenuButtonTimeout=3000
|
||||
|
||||
# Menu items to hide from startup menu, available menu items:
|
||||
# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout
|
||||
HiddenMenuOptions='SettingsMenuMisc.OptionalDownloadConfig'
|
||||
|
||||
# Menu items to show at startup - this is Java code snippet, leave empty for default
|
||||
# new SettingsMenuMisc.ShowReadme(), (AppUsesMouse \&\& \! ForceRelativeMouseMode \? new SettingsMenuMouse.DisplaySizeConfig(true) : new SettingsMenu.DummyMenu()), new SettingsMenuMisc.OptionalDownloadConfig(true), new SettingsMenuMisc.GyroscopeCalibration()
|
||||
# Available menu items:
|
||||
# SettingsMenu.OkButton SettingsMenu.DummyMenu SettingsMenu.MainMenu SettingsMenuMisc.DownloadConfig SettingsMenuMisc.OptionalDownloadConfig SettingsMenuMisc.AudioConfig SettingsMenuMisc.VideoSettingsConfig SettingsMenuMisc.ShowReadme SettingsMenuMisc.GyroscopeCalibration SettingsMenuMisc.ResetToDefaultsConfig SettingsMenuMouse.MouseConfigMainMenu SettingsMenuMouse.DisplaySizeConfig SettingsMenuMouse.LeftClickConfig SettingsMenuMouse.RightClickConfig SettingsMenuMouse.AdditionalMouseConfig SettingsMenuMouse.JoystickMouseConfig SettingsMenuMouse.TouchPressureMeasurementTool SettingsMenuMouse.CalibrateTouchscreenMenu SettingsMenuKeyboard.KeyboardConfigMainMenu SettingsMenuKeyboard.ScreenKeyboardSizeConfig SettingsMenuKeyboard.ScreenKeyboardDrawSizeConfig SettingsMenuKeyboard.ScreenKeyboardThemeConfig SettingsMenuKeyboard.ScreenKeyboardTransparencyConfig SettingsMenuKeyboard.RemapHwKeysConfig SettingsMenuKeyboard.RemapScreenKbConfig SettingsMenuKeyboard.ScreenGesturesConfig SettingsMenuKeyboard.CustomizeScreenKbLayout
|
||||
FirstStartMenuOptions=''
|
||||
|
||||
# Enable multi-ABI binary, with hardware FPU support - it will also work on old devices,
|
||||
# but .apk size is 2x bigger (y) / (n) / (x86) / (all)
|
||||
MultiABI=armeabi-v7a
|
||||
|
||||
# Minimum amount of RAM application requires, in Mb, SDL will print warning to user if it's lower
|
||||
AppMinimumRAM=128
|
||||
|
||||
# Application version code (integer)
|
||||
AppVersionCode=09301
|
||||
|
||||
# Application user-visible version name (string)
|
||||
AppVersionName="0.93.01"
|
||||
|
||||
# Reset SDL config when updating application to the new version (y) / (n)
|
||||
ResetSdlConfigForThisVersion=n
|
||||
|
||||
# Delete application data files when upgrading (specify file/dir paths separated by spaces)
|
||||
DeleteFilesOnUpgrade="%"
|
||||
|
||||
# Optional shared libraries to compile - removing some of them will save space
|
||||
# MP3 support by libMAD is encumbered by patents and libMAD is GPL-ed
|
||||
# Available libraries: mad (GPL-ed!) sdl_mixer sdl_image sdl_ttf sdl_net sdl_blitpool sdl_gfx sdl_sound intl xml2 lua jpeg png ogg flac tremor vorbis freetype xerces curl theora fluidsynth lzma lzo2 mikmod openal timidity zzip bzip2 yaml-cpp python boost_date_time boost_filesystem boost_iostreams boost_program_options boost_regex boost_signals boost_system boost_thread glu avcodec avdevice avfilter avformat avresample avutil swscale swresample bzip2
|
||||
CompiledLibraries="mad sdl_mixer sdl_image sdl_ttf avutil avcodec avformat swscale shmem boost_program_options boost_filesystem boost_iostreams boost_system boost_thread android"
|
||||
|
||||
# Application uses custom build script AndroidBuild.sh instead of Android.mk (y) or (n)
|
||||
CustomBuildScript=y
|
||||
|
||||
# Aditional CFLAGS for application
|
||||
AppCflags=''
|
||||
|
||||
# Additional LDFLAGS for application
|
||||
AppLdflags=''
|
||||
|
||||
# If application has headers with the same name as system headers, this option tries to fix compiler flags to make it compilable
|
||||
AppOverlapsSystemHeaders=
|
||||
|
||||
# Build only following subdirs (empty will build all dirs, ignored with custom script)
|
||||
AppSubdirsBuild=''
|
||||
|
||||
# Exclude these files from build
|
||||
AppBuildExclude=''
|
||||
|
||||
# Application command line parameters, including app name as 0-th param
|
||||
AppCmdline=''
|
||||
|
||||
# Here you may type readme text, which will be shown during startup. Format is:
|
||||
# Text in English, use \\\\\\\\n to separate lines^de:Text in Deutsch^ru:Text in Russian, and so on (that's four backslashes, nice isn't it?)
|
||||
ReadmeText='^You may press "Home" now - the data will be downloaded in background'
|
||||
|
||||
# Screen size is used by Google Play to prevent an app to be installed on devices with smaller screens
|
||||
# Minimum screen size that application supports: (s)mall / (m)edium / (l)arge
|
||||
MinimumScreenSize=m
|
||||
|
||||
# Your AdMob Publisher ID, (n) if you don't want advertisements
|
||||
AdmobPublisherId=n
|
||||
|
||||
# Your AdMob test device ID, to receive a test ad
|
||||
AdmobTestDeviceId=
|
||||
|
||||
# Your AdMob banner size (BANNER/IAB_BANNER/IAB_LEADERBOARD/IAB_MRECT/IAB_WIDE_SKYSCRAPER/SMART_BANNER)
|
||||
AdmobBannerSize=
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/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 -j4 2>&1 || exit 1 ; } | tee build.log
|
||||
[ -f libapplication.so ] || exit 1
|
||||
mv -f libapplication.so libapplication-armeabi-v7a.so
|
||||
exit 0
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Download and patch sources
|
||||
if [ -e vcmi ]; then
|
||||
exit 0
|
||||
else
|
||||
svn co http://svn.code.sf.net/p/vcmi/code/trunk/ vcmi && patch -p0 -d vcmi < vcmi-android.diff || exit 1
|
||||
fi
|
||||
@@ -1,136 +0,0 @@
|
||||
|
||||
$(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/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)
|
||||
LOCAL_PATH=`cd $LOCAL_PATH && pwd`
|
||||
|
||||
GCC_PREFIX=arm-linux-androideabi
|
||||
GCC_VERSION=4.8
|
||||
|
||||
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
|
||||
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))
|
||||
|
||||
SOURCES_LIB_RMG:=$(wildcard vcmi/lib/rmg/*.cpp)
|
||||
OBJS_LIB_RMG:=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB_RMG))
|
||||
|
||||
OBJS_LIB_ALL:= $(OBJS_MINIZIP) $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_LOGGING) $(OBJS_LIB_MAPPING) $(OBJS_LIB_RMG) $(OBJS_LIB)
|
||||
|
||||
SOURCES_SERVER:=$(wildcard vcmi/server/*.cpp)
|
||||
OBJS_SERVER:=$(patsubst %.cpp, out/%.o, $(SOURCES_SERVER))
|
||||
|
||||
SOURCES_CLIENT:=$(wildcard vcmi/client/*.cpp vcmi/client/gui/*.cpp vcmi/client/battle/*.cpp vcmi/*.cpp)
|
||||
OBJS_CLIENT:=$(patsubst %.cpp, out/%.o, $(SOURCES_CLIENT))
|
||||
|
||||
SOURCES_BATTLEAI:=$(wildcard vcmi/AI/BattleAI/*.cpp)
|
||||
OBJS_BATTLEAI:=$(patsubst %.cpp, out/%.o, $(SOURCES_BATTLEAI))
|
||||
|
||||
SOURCES_STUPIDAI:=$(wildcard vcmi/AI/StupidAI/*.cpp)
|
||||
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))
|
||||
|
||||
all: AndroidData/binaries.zip libapplication.so
|
||||
|
||||
AndroidData/binaries.zip: libvcmi.so vcmiserver AI/libBattleAI.so AI/libStupidAI.so AI/libVCAI.so libicuuc.a libicudata.a # Scripting/libvcmiERM.so AI/libEmptyAI.so
|
||||
rm -f $@
|
||||
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_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 -O1 -Ivcmi -I../../shmem -std=c++0x -Ivcmi/lib \
|
||||
-DM_DATA_DIR=\\\".\\\" \
|
||||
-DM_BIN_DIR=\\\"/data/data/eu.vcmi/files\\\" \
|
||||
-DM_LIB_DIR=\\\"/data/data/eu.vcmi/files\\\" \
|
||||
-Wstrict-aliasing -Wcast-align -Wpointer-arith -Waddress \
|
||||
-D__SOURCE_FILE__=\\\"$<\\\" \
|
||||
$< -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 $@"
|
||||
|
||||
LINK_BOOST_LIBS:=-L../../boost/lib/arm-linux-androideabi-4.6 \
|
||||
-lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread -lboost_program_options -lboost_locale -lgnustl_static -lshmem
|
||||
|
||||
LINK_ICU:=-L../../libiconv-libicu/armeabi-v7a \
|
||||
-licuuc -licudata
|
||||
|
||||
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. $(LINK_BOOST_LIBS) $(LINK_ICU) " && \
|
||||
cp $@ debug/$@ && \
|
||||
$(GCC_PREFIX)-strip $@
|
||||
|
||||
.PHONY: -lvcmi
|
||||
-lvcmi: libvcmi.so
|
||||
|
||||
AI/libBattleAI.so: $(OBJS_BATTLEAI) -lvcmi
|
||||
$(LINK_LIB)
|
||||
|
||||
AI/libEmptyAI.so: $(OBJS_EMPTYAI) -lvcmi
|
||||
$(LINK_LIB)
|
||||
|
||||
AI/libStupidAI.so: $(OBJS_STUPIDAI) -lvcmi
|
||||
$(LINK_LIB)
|
||||
|
||||
AI/libVCAI.so: $(OBJS_VCAI) $(OBJS_FUZZYLITE) -lvcmi
|
||||
$(LINK_LIB)
|
||||
|
||||
Scripting/libvcmiERM.so: $(OBJS_ERM) -lvcmi
|
||||
$(LINK_LIB)
|
||||
|
||||
libvcmi.so: $(OBJS_LIB_ALL)
|
||||
$(LINK_LIB)
|
||||
|
||||
libapplication.so: $(OBJS_CLIENT) -lvcmi
|
||||
env GCCVER=$(GCC_VERSION) ../setEnvironment-armeabi-v7a.sh sh -c \
|
||||
"$(GCC_PREFIX)-g++ $^ -o $@ \
|
||||
\$$LDFLAGS -L. $(LINK_BOOST_LIBS)"
|
||||
|
||||
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. $(LINK_BOOST_LIBS)" && \
|
||||
cp $@ debug/$@ && \
|
||||
$(GCC_PREFIX)-strip $@
|
||||
|
||||
clean:
|
||||
rm -rf out debug *.so vcmiserver* AndroidData/vcmiserver* libapplication.so AI Scripting
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 113 KiB |
@@ -1,13 +1,5 @@
|
||||
Quick compilation guide:
|
||||
Download my GIT repo from https://github.com/pelya/commandergenius,
|
||||
then install Android SDK and NDK r9 from http://developer.android.com,
|
||||
ANT, patch and Subversion tools, then launch commands
|
||||
android update project -p project
|
||||
rm project/jni/application/src
|
||||
ln -s vcmi project/jni/application/src
|
||||
mkdir -p project/obj/local/armeabi-v7a/
|
||||
cp -f project/jni/boost/lib/arm-linux-androideabi-4.6/* project/obj/local/armeabi-v7a/
|
||||
then launch build.sh.
|
||||
VCMI sources are moved here:
|
||||
|
||||
To run it you should have complete installation of Heroes 3: Wake of Gods
|
||||
on your SD card, in the directory Android/data/eu.vcmi/files
|
||||
https://github.com/xyzz/vcmi
|
||||
|
||||
https://github.com/xyzz/vcmi-build
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,226 +0,0 @@
|
||||
Index: client/CMT.cpp
|
||||
===================================================================
|
||||
--- client/CMT.cpp (revision 3494)
|
||||
+++ client/CMT.cpp (working copy)
|
||||
@@ -194,7 +194,7 @@
|
||||
|
||||
#ifdef _WIN32
|
||||
int wmain(int argc, wchar_t* argv[])
|
||||
-#elif defined(__APPLE__)
|
||||
+#elif defined(__APPLE__) || defined(ANDROID)
|
||||
int SDL_main(int argc, char *argv[])
|
||||
#else
|
||||
int main(int argc, char** argv)
|
||||
@@ -217,6 +217,13 @@
|
||||
}
|
||||
fclose(check);
|
||||
#endif
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "%s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
+
|
||||
+ // Fix crashing locale shit in Boost
|
||||
+ setenv( "LANG", "C", 1 );
|
||||
+ setenv( "LANGUAGE", "C", 1 );
|
||||
+ setenv( "LC_ALL", "C", 1 );
|
||||
+
|
||||
std::cout << "Starting... " << std::endl;
|
||||
po::options_description opts("Allowed options");
|
||||
opts.add_options()
|
||||
@@ -289,6 +296,7 @@
|
||||
|
||||
// Initialize logging based on settings
|
||||
logConfig.configure();
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Trace: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
|
||||
// Some basic data validation to produce better error messages in cases of incorrect install
|
||||
auto testFile = [](std::string filename, std::string message) -> bool
|
||||
@@ -300,22 +308,31 @@
|
||||
return false;
|
||||
};
|
||||
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Trace: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
if (!testFile("DATA/HELP.TXT", "Heroes III data") ||
|
||||
!testFile("MODS/VCMI/MOD.JSON", "VCMI mod") ||
|
||||
- !testFile("DATA/StackQueueBgBig.PCX", "VCMI data"))
|
||||
+ !testFile("DATA/StackQueueBgBig.PCX", "VCMI data"))
|
||||
+ {
|
||||
+ __android_log_print(ANDROID_LOG_ERROR, "VCMI", "Cannot find data files!");
|
||||
exit(1); // These are unrecoverable errors
|
||||
+ }
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Trace: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
|
||||
// these two are optional + some installs have them on CD and not in data directory
|
||||
testFile("VIDEO/GOOD1A.SMK", "campaign movies");
|
||||
testFile("SOUNDS/G1A.WAV", "campaign music"); //technically not a music but voiced intro sounds
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Trace: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Trace: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
conf.init();
|
||||
logGlobal->infoStream() <<"Loading settings: "<<pomtime.getDiff();
|
||||
logGlobal->infoStream() << NAME;
|
||||
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Trace: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
srand ( time(nullptr) );
|
||||
|
||||
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Trace: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
const JsonNode& video = settings["video"];
|
||||
const JsonNode& res = video["screenRes"];
|
||||
|
||||
@@ -330,6 +347,7 @@
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Trace: %s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
if(!gNoGUI)
|
||||
{
|
||||
if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_AUDIO))
|
||||
@@ -360,7 +378,8 @@
|
||||
|
||||
|
||||
//we can properly play intro only in the main thread, so we have to move loading to the separate thread
|
||||
- boost::thread loading(init);
|
||||
+ //boost::thread loading(init);
|
||||
+ init(); // boost::thread crashes when destroyed
|
||||
|
||||
if(!gNoGUI )
|
||||
{
|
||||
@@ -370,7 +389,7 @@
|
||||
}
|
||||
|
||||
CSDL_Ext::update(screen);
|
||||
- loading.join();
|
||||
+ //loading.join();
|
||||
logGlobal->infoStream()<<"Initialization of VCMI (together): "<<total.getDiff();
|
||||
|
||||
if(!vm.count("battle"))
|
||||
Index: lib/logging/CLogger.cpp
|
||||
===================================================================
|
||||
--- lib/logging/CLogger.cpp (revision 3494)
|
||||
+++ lib/logging/CLogger.cpp (working copy)
|
||||
@@ -387,6 +387,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)
|
||||
{
|
||||
Index: lib/logging/CLogger.h
|
||||
===================================================================
|
||||
--- lib/logging/CLogger.h (revision 3494)
|
||||
+++ lib/logging/CLogger.h (working copy)
|
||||
@@ -289,3 +289,11 @@
|
||||
CLogFormatter formatter;
|
||||
mutable boost::mutex mx;
|
||||
};
|
||||
+
|
||||
+#ifdef ANDROID
|
||||
+static bool AndroidStaticInitLog()
|
||||
+{
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "Static init: %s", __SOURCE_FILE__);
|
||||
+}
|
||||
+static bool AndroidStaticInitLogFlag = AndroidStaticInitLog();
|
||||
+#endif
|
||||
Index: lib/JsonNode.cpp
|
||||
===================================================================
|
||||
--- lib/JsonNode.cpp (revision 3494)
|
||||
+++ lib/JsonNode.cpp (working copy)
|
||||
@@ -1574,7 +1574,7 @@
|
||||
//reserve place and *move* remaining data from source to dest
|
||||
source.Vector().reserve(source.Vector().size() + dest.Vector().size());
|
||||
|
||||
- std::move(source.Vector().begin() + total, source.Vector().end(),
|
||||
+ std::copy(source.Vector().begin() + total, source.Vector().end(),
|
||||
std::back_inserter(dest.Vector()));
|
||||
}
|
||||
break;
|
||||
Index: lib/filesystem/Filesystem.cpp
|
||||
===================================================================
|
||||
--- lib/filesystem/Filesystem.cpp (revision 3494)
|
||||
+++ lib/filesystem/Filesystem.cpp (working copy)
|
||||
@@ -24,14 +24,14 @@
|
||||
|
||||
ResourceID::ResourceID(std::string name)
|
||||
{
|
||||
- CFileInfo info(std::move(name));
|
||||
+ CFileInfo info(/*std::move*/(name));
|
||||
setName(info.getStem());
|
||||
setType(info.getType());
|
||||
}
|
||||
|
||||
ResourceID::ResourceID(std::string name, EResType::Type type)
|
||||
{
|
||||
- setName(std::move(name));
|
||||
+ setName(/*std::move*/(name));
|
||||
setType(type);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
void ResourceID::setName(std::string name)
|
||||
{
|
||||
- this->name = std::move(name);
|
||||
+ this->name = /*std::move*/(name);
|
||||
|
||||
size_t dotPos = this->name.find_last_of("/.");
|
||||
|
||||
Index: lib/filesystem/CFileInfo.cpp
|
||||
===================================================================
|
||||
--- lib/filesystem/CFileInfo.cpp (revision 3494)
|
||||
+++ lib/filesystem/CFileInfo.cpp (working copy)
|
||||
@@ -7,7 +7,7 @@
|
||||
}
|
||||
|
||||
CFileInfo::CFileInfo(std::string name)
|
||||
- : name(std::move(name))
|
||||
+ : name(/*std::move*/(name))
|
||||
{
|
||||
|
||||
}
|
||||
Index: lib/VCMIDirs.cpp
|
||||
===================================================================
|
||||
--- lib/VCMIDirs.cpp (revision 3494)
|
||||
+++ lib/VCMIDirs.cpp (working copy)
|
||||
@@ -15,11 +15,16 @@
|
||||
|
||||
VCMIDirs::VCMIDirs()
|
||||
{
|
||||
+ char buf[1024] = "";
|
||||
+ getcwd(buf, sizeof(buf));
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "%s:%s:%d: mkdir '%s' '%s' '%s' '%s' curdir '%s'", __FUNCTION__, __FILE__, __LINE__,
|
||||
+ userDataPath().c_str(), userCachePath().c_str(), userConfigPath().c_str(), userSavePath().c_str(), buf);
|
||||
// initialize local directory and create folders to which VCMI needs write access
|
||||
boost::filesystem::create_directory(userDataPath());
|
||||
boost::filesystem::create_directory(userCachePath());
|
||||
boost::filesystem::create_directory(userConfigPath());
|
||||
boost::filesystem::create_directory(userSavePath());
|
||||
+ __android_log_print(ANDROID_LOG_DEBUG, "VCMI", "%s:%s:%d", __FUNCTION__, __FILE__, __LINE__);
|
||||
}
|
||||
|
||||
VCMIDirs & VCMIDirs::get()
|
||||
@@ -115,8 +120,10 @@
|
||||
|
||||
std::string VCMIDirs::userDataPath() const
|
||||
{
|
||||
+#ifndef ANDROID
|
||||
if (getenv("HOME") != nullptr )
|
||||
return std::string(getenv("HOME")) + "/.vcmi";
|
||||
+#endif
|
||||
return ".";
|
||||
}
|
||||
|
||||
Index: lib/vcmi_endian.h
|
||||
===================================================================
|
||||
--- lib/vcmi_endian.h (revision 3494)
|
||||
+++ 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 )); };
|
||||
Submodule project/jni/application/xserver-debian/xserver updated: 1fb188061d...5eecca50cb
Submodule project/jni/application/xserver-gimp/xserver updated: 1fb188061d...5eecca50cb
Submodule project/jni/application/xserver/xserver updated: 1fb188061d...5eecca50cb
Reference in New Issue
Block a user