diff --git a/changeAppSettings.sh b/changeAppSettings.sh index 863684820..0a2d93ad8 100755 --- a/changeAppSettings.sh +++ b/changeAppSettings.sh @@ -1136,12 +1136,10 @@ done if [ "$MultiABI" = "y" ] ; then MultiABI="armeabi armeabi-v7a" -elif [ "$MultiABI" = "x86" ] ; then - MultiABI="armeabi x86" -elif [ "$MultiABI" = "all" ] ; then - MultiABI="all" # Starting form NDK r7 -else +elif [ "$MultiABI" = "n" ] ; then MultiABI="armeabi" +else + MultiABI="$MultiABI" # Eh okay fi LibrariesToLoad="\\\"sdl-$LibSdlVersion\\\"" diff --git a/project/jni/application/setEnvironment-armeabi-v7a.sh b/project/jni/application/setEnvironment-armeabi-v7a.sh index e8cf1ab64..3e51b6a0c 100755 --- a/project/jni/application/setEnvironment-armeabi-v7a.sh +++ b/project/jni/application/setEnvironment-armeabi-v7a.sh @@ -22,8 +22,8 @@ grep "64.bit" "$NDK/RELEASE.TXT" >/dev/null 2>&1 && MYARCH="${MYARCH}_64" #echo NDK $NDK GCCPREFIX=arm-linux-androideabi -GCCVER=4.6 -PLATFORMVER=android-14 +[ -z "$GCCVER" ] && GCCVER=4.6 +[ -z "$PLATFORMVER" ] && PLATFORMVER=android-14 LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` @@ -49,13 +49,14 @@ MISSING_INCLUDE= MISSING_LIB= CFLAGS="\ --fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ \ +-fpic -ffunction-sections -funwind-tables -fstack-protector \ -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb \ --fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ --DANDROID -DNDEBUG -O2 -g -finline-functions -Wa,--noexecstack \ +-fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -marm -fno-omit-frame-pointer \ +-DANDROID -DNDEBUG -O2 -g -finline-functions -Wa,--noexecstack -Wformat -Werror=format-security \ -isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include \ -isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/include \ -isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/libs/$ARCH/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/include/backward \ -isystem$LOCAL_PATH/../sdl-1.2/include \ `echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ $MISSING_INCLUDE $CFLAGS" diff --git a/project/jni/application/setEnvironment.sh b/project/jni/application/setEnvironment.sh index 52da7a4d3..db661634e 100755 --- a/project/jni/application/setEnvironment.sh +++ b/project/jni/application/setEnvironment.sh @@ -56,6 +56,7 @@ CFLAGS="\ -isystem$NDK/platforms/$PLATFORMVER/arch-arm/usr/include \ -isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/include \ -isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/libs/$ARCH/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/include/backward \ -isystem$LOCAL_PATH/../sdl-1.2/include \ `echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-isystem$LOCAL_PATH/../\1/include@g\"` \ $MISSING_INCLUDE $CFLAGS" diff --git a/project/jni/application/vcmi/AndroidAppSettings.cfg b/project/jni/application/vcmi/AndroidAppSettings.cfg index 4336bf56e..3a5d3422c 100644 --- a/project/jni/application/vcmi/AndroidAppSettings.cfg +++ b/project/jni/application/vcmi/AndroidAppSettings.cfg @@ -1,60 +1,215 @@ # The application settings for Android libSDL port -AppSettingVersion=17 + +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 -AppDataDownloadUrl="!Data files|vcmi_091.zip" + +# 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_093.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 -HiddenMenuOptions='KeyboardConfigMainMenu AudioConfig OptionalDownloadConfig' + +# 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='' -MultiABI=n -AppMinimumRAM=64 -AppVersionCode=09100 -AppVersionName="0.91.00" + +# 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=09300 + +# Application user-visible version name (string) +AppVersionName="0.93.00" + +# 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 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= + diff --git a/project/jni/application/vcmi/AndroidBuild.sh b/project/jni/application/vcmi/AndroidBuild.sh index 41dfbdb02..24a20a632 100755 --- a/project/jni/application/vcmi/AndroidBuild.sh +++ b/project/jni/application/vcmi/AndroidBuild.sh @@ -3,4 +3,5 @@ # 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 [ -f libapplication.so ] || exit 1 +mv -f libapplication.so libapplication-armeabi-v7a.so exit 0 diff --git a/project/jni/application/vcmi/AndroidData/vcmi_091.zip b/project/jni/application/vcmi/AndroidData/vcmi_091.zip deleted file mode 100644 index 03a21833b..000000000 Binary files a/project/jni/application/vcmi/AndroidData/vcmi_091.zip and /dev/null differ diff --git a/project/jni/application/vcmi/AndroidData/vcmi_093.zip b/project/jni/application/vcmi/AndroidData/vcmi_093.zip new file mode 100644 index 000000000..7f6ceae20 Binary files /dev/null and b/project/jni/application/vcmi/AndroidData/vcmi_093.zip differ diff --git a/project/jni/application/vcmi/AndroidPreBuild.sh b/project/jni/application/vcmi/AndroidPreBuild.sh index be936a5c3..cce70fac8 100755 --- a/project/jni/application/vcmi/AndroidPreBuild.sh +++ b/project/jni/application/vcmi/AndroidPreBuild.sh @@ -4,5 +4,5 @@ if [ -e vcmi ]; then exit 0 else - svn co https://vcmi.svn.sourceforge.net/svnroot/vcmi/trunk vcmi && patch -p0 -d vcmi < vcmi-android.diff || exit 1 + svn co http://svn.code.sf.net/p/vcmi/code/trunk/ vcmi && patch -p0 -d vcmi < vcmi-android.diff || exit 1 fi diff --git a/project/jni/application/vcmi/Makefile b/project/jni/application/vcmi/Makefile index fe21ca427..0ec273b44 100644 --- a/project/jni/application/vcmi/Makefile +++ b/project/jni/application/vcmi/Makefile @@ -1,61 +1,56 @@ -$(shell mkdir -p AI Scripting debug/AI debug/Scripting \ - out/vcmi/lib out/vcmi/lib/Filesystem out/vcmi/lib/Mapping \ - out/vcmi/lib/RMG out/vcmi/server out/vcmi/AI/StupidAI \ - out/vcmi/AI/BattleAI out/vcmi/AI/FuzzyLite out/vcmi/AI/VCAI \ - out/vcmi/AI/EmptyAI out/vcmi/Scripting/ERM out/vcmi/client \ - out/vcmi/client/BattleInterface out/vcmi/client/UIFramework) +$(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/client/gui out/vcmi/client/battle) LOCAL_PATH=$(shell dirname $0) LOCAL_PATH=`cd $LOCAL_PATH && pwd` -GCC_PREFIX=$(if $(shell which ndk-build | grep 'android-ndk-r8'),arm-linux-androideabi,arm-eabi) +GCC_PREFIX=arm-linux-androideabi +GCC_VERSION=4.8 -SOURCES_LIB=$(wildcard vcmi/lib/*.cpp vcmi/CConsoleHandler.cpp vcmi/CThreadHelper.cpp) +SOURCES_LIB=$(wildcard vcmi/lib/*.cpp vcmi/lib/logging/*.cpp vcmi/lib/minigzip/*.c vcmi/CCallback.cpp) OBJS_LIB=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB)) -SOURCES_LIB_FILESYSTEM:=$(wildcard vcmi/lib/Filesystem/*.cpp) +SOURCES_LIB_FILESYSTEM:=$(wildcard vcmi/lib/filesystem/*.cpp) OBJS_LIB_FILESYSTEM:=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB_FILESYSTEM)) -SOURCES_LIB_MAPPING:=$(wildcard vcmi/lib/Mapping/*.cpp) +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) +SOURCES_LIB_RMG:=$(wildcard vcmi/lib/rmg/*.cpp) OBJS_LIB_RMG:=$(patsubst %.cpp, out/%.o, $(SOURCES_LIB_RMG)) SOURCES_SERVER:=$(wildcard vcmi/server/*.cpp) OBJS_SERVER:=$(patsubst %.cpp, out/%.o, $(SOURCES_SERVER)) -SOURCES_CLIENT:=$(wildcard vcmi/client/*.cpp vcmi/client/BattleInterface/*.cpp vcmi/client/UIFramework/*.cpp vcmi/*.cpp) +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_EMPTYAI:=$(wildcard vcmi/AI/EmptyAI/*.cpp) -OBJS_EMPTYAI:=$(patsubst %.cpp, out/%.o, $(SOURCES_EMPTYAI)) - -SOURCES_FUZZYLITE:=$(wildcard vcmi/AI/FuzzyLite/*.cpp) -OBJS_FUZZYLITE:=$(patsubst %.cpp, out/%.o, $(SOURCES_FUZZYLITE)) - 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_ERM:=$(wildcard vcmi/Scripting/ERM/*.cpp) +SOURCES_ERM:=$(wildcard vcmi/scripting/erm/*.cpp) OBJS_ERM:=$(patsubst %.cpp, out/%.o, $(SOURCES_ERM)) all: AndroidData/binaries.zip libapplication.so -AndroidData/binaries.zip: vcmiserver libvcmi.so Scripting/libvcmiERM.so AI/libBattleAI.so AI/libEmptyAI.so AI/libStupidAI.so AI/libVCAI.so +AndroidData/binaries.zip: vcmiserver libvcmi.so AI/libBattleAI.so AI/libStupidAI.so AI/libVCAI.so # 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_MAPPING) $(OBJS_LIB_RMG) $(OBJS_BATTLEAI) $(OBJS_EMPTYAI) $(OBJS_FUZZYLITE) $(OBJS_VCAI) $(OBJS_CLIENT) $(OBJS_ERM): out/%.o: %.cpp - ../setEnvironment.sh sh -c \ + env GCCVER=$(GCC_VERSION) ../setEnvironment-armeabi-v7a.sh sh -c \ "$(GCC_PREFIX)-g++ \ -c \$$CXXFLAGS -O2 -Ivcmi -std=c++11 -Ivcmi/lib \ -DM_DATA_DIR=\\\".\\\" \ @@ -66,7 +61,7 @@ $(OBJS_SERVER) $(OBJS_LIB) $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_MAPPING) $(OBJS_LIB # -Werror=strict-aliasing -Werror=cast-align -Werror=pointer-arith -Werror=address vcmiserver: $(OBJS_SERVER) -lvcmi - env BUILD_EXECUTABLE=1 NO_SHARED_LIBS=1 ../setEnvironment.sh sh -c \ + 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 \ @@ -75,7 +70,7 @@ vcmiserver: $(OBJS_SERVER) -lvcmi $(GCC_PREFIX)-strip $@ LINK_LIB= \ - env BUILD_EXECUTABLE=1 NO_SHARED_LIBS=1 ../setEnvironment.sh sh -c \ + 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 \ @@ -105,7 +100,7 @@ libvcmi.so: $(OBJS_LIB) $(OBJS_LIB_FILESYSTEM) $(OBJS_LIB_MAPPING) $(OBJS_LIB_RM $(LINK_LIB) libapplication.so: $(OBJS_CLIENT) libvcmi.so - env ../setEnvironment.sh sh -c \ + env GCCVER=$(GCC_VERSION) ../setEnvironment-armeabi-v7a.sh sh -c \ "$(GCC_PREFIX)-g++ $^ -o $@ \ \$$LDFLAGS -L. -L../../boost/lib/arm-linux-androideabi-4.6 -lboost_program_options -lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread -lgnustl_static" diff --git a/project/jni/application/vcmi/vcmi-android.diff b/project/jni/application/vcmi/vcmi-android.diff index 9ce89ac0b..cfe80de43 100644 --- a/project/jni/application/vcmi/vcmi-android.diff +++ b/project/jni/application/vcmi/vcmi-android.diff @@ -1,19 +1,6 @@ -Index: lib/VCMIDirs.h -=================================================================== ---- lib/VCMIDirs.h (revision 3221) -+++ lib/VCMIDirs.h (working copy) -@@ -29,7 +29,7 @@ - #else - try { - #ifdef ANDROID -- UserPath = DATA_DIR; -+ UserPath = GameConstants::DATA_DIR; - #elif defined(__APPLE__) - // This is Cocoa code that should be normally used to get path to Application Support folder but can't use it here for now... - // NSArray* urls = [[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask]; Index: lib/vcmi_endian.h =================================================================== ---- lib/vcmi_endian.h (revision 3221) +--- 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. @@ -26,12 +13,12 @@ Index: lib/vcmi_endian.h struct unaligned_Uint16 { ui16 val __attribute__(( packed )); }; Index: client/CMT.cpp =================================================================== ---- client/CMT.cpp (revision 3221) +--- client/CMT.cpp (revision 3490) +++ client/CMT.cpp (working copy) -@@ -177,7 +177,7 @@ +@@ -194,7 +194,7 @@ #ifdef _WIN32 - int _tmain(int argc, _TCHAR* argv[]) + int wmain(int argc, wchar_t* argv[]) -#elif defined(__APPLE__) +#elif defined(__APPLE__) || defined(ANDROID) int SDL_main(int argc, char *argv[])