diff --git a/ChangeAppSettings.sh b/ChangeAppSettings.sh index 09e4a3cc2..11520730f 100755 --- a/ChangeAppSettings.sh +++ b/ChangeAppSettings.sh @@ -530,7 +530,7 @@ mv -f project/src/Globals.java.1 project/src/Globals.java echo Patching project/jni/Settings.mk echo '# DO NOT EDIT THIS FILE - it is automatically generated, edit file SettingsTemplate.mk' > project/jni/Settings.mk cat project/jni/SettingsTemplate.mk | \ - sed "s/APP_MODULES := .*/APP_MODULES := application sdl-$LibSdlVersion sdl_main stlport jpeg png ogg flac vorbis freetype $CompiledLibraries/" | \ + sed "s/APP_MODULES := .*/APP_MODULES := application sdl-$LibSdlVersion sdl_main stlport jpeg png ogg flac vorbis freetype sdl_fake_stdout $CompiledLibraries/" | \ sed "s/APP_ABI := .*/APP_ABI := $MultiABI/" | \ sed "s/SDL_JAVA_PACKAGE_PATH := .*/SDL_JAVA_PACKAGE_PATH := $AppFullNameUnderscored/" | \ sed "s^SDL_CURDIR_PATH := .*^SDL_CURDIR_PATH := $DataPath^" | \ diff --git a/project/jni/application/Android.mk b/project/jni/application/Android.mk index d9a71fd0c..9791558e6 100644 --- a/project/jni/application/Android.mk +++ b/project/jni/application/Android.mk @@ -23,9 +23,9 @@ endif LOCAL_C_INCLUDES += $(foreach D, $(APP_SUBDIRS), $(LOCAL_PATH)/$(D)) \ $(LOCAL_PATH)/../sdl-$(SDL_VERSION)/include \ - $(foreach L, $(COMPILED_LIBRARIES), $(LOCAL_PATH)/../$(L)/include) + $(foreach L, $(COMPILED_LIBRARIES), $(LOCAL_PATH)/../$(L)/include) \ -LOCAL_CFLAGS += -include SDL_android_printf.h +LOCAL_CFLAGS += -include $(LOCAL_PATH)/../sdl_fake_stdout/include/SDL_android_printf.h LOCAL_CFLAGS += $(APPLICATION_ADDITIONAL_CFLAGS) @@ -43,38 +43,36 @@ LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION) $(filter-out $(APP_AVAILABLE_STATIC LOCAL_STATIC_LIBRARIES := $(filter $(APP_AVAILABLE_STATIC_LIBS), $(COMPILED_LIBRARIES)) -LOCAL_STATIC_LIBRARIES += stlport +LOCAL_STATIC_LIBRARIES += stlport sdl_fake_stdout LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lz -LOCAL_LDFLAGS := -Lobj/local/armeabi +LOCAL_LDFLAGS := -Lobj/local/armeabi -Wl,-u,_SDL_ANDROID_initFakeStdout LOCAL_LDFLAGS += $(APPLICATION_ADDITIONAL_LDFLAGS) -# Disabled for now 'till I not confirmed it +LIBS_WITH_LONG_SYMBOLS := $(strip $(shell \ + for f in $(LOCAL_PATH)/../../obj/local/armeabi/*.so ; do \ + if echo $$f | grep "libapplication[.]so" > /dev/null ; then \ + continue ; \ + fi ; \ + if [ -e "$$f" ] ; then \ + if nm -g $$f | cut -c 12- | egrep '.{128}' > /dev/null ; then \ + echo $$f | grep -o 'lib[^/]*[.]so' ; \ + fi ; \ + fi ; \ + done \ +) ) -#LIBS_WITH_LONG_SYMBOLS := $(strip $(shell \ -# for f in $(LOCAL_PATH)/../../obj/local/armeabi/*.so ; do \ -# if echo $$f | grep "libapplication[.]so" > /dev/null ; then \ -# continue ; \ -# fi ; \ -# if [ -e "$$f" ] ; then \ -# if nm -g $$f | cut -c 12- | egrep '.{128}' > /dev/null ; then \ -# echo $$f | grep -o 'lib[^/]*[.]so' ; \ -# fi ; \ -# fi ; \ -# done \ -#) ) - -#ifneq "$(LIBS_WITH_LONG_SYMBOLS)" "" -#$(foreach F, $(LIBS_WITH_LONG_SYMBOLS), \ -#$(info Library $(F): abusing symbol names are: \ -#$(shell nm -g $(LOCAL_PATH)/../../obj/local/armeabi/$(F) | cut -c 12- | egrep '.{128}' ) ) \ -#$(info Library $(F) contains symbol names longer than 128 bytes, \ -#YOUR CODE WILL DEADLOCK WITHOUT ANY WARNING when you'll access such function - \ -#please make this library static to avoid problems. ) ) -#$(error Detected libraries with too long symbol names. Remove all files under project/obj/local/armeabi, make these libs static, and recompile) -#endif +ifneq "$(LIBS_WITH_LONG_SYMBOLS)" "" +$(foreach F, $(LIBS_WITH_LONG_SYMBOLS), \ +$(info Library $(F): abusing symbol names are: \ +$(shell nm -g $(LOCAL_PATH)/../../obj/local/armeabi/$(F) | cut -c 12- | egrep '.{128}' ) ) \ +$(info Library $(F) contains symbol names longer than 128 bytes, \ +YOUR CODE WILL DEADLOCK WITHOUT ANY WARNING when you'll access such function - \ +please make this library static to avoid problems. ) ) +$(error Detected libraries with too long symbol names. Remove all files under project/obj/local/armeabi, make these libs static, and recompile) +endif APP_LIB_DEPENDS := $(foreach LIB, $(LOCAL_SHARED_LIBRARIES), $(abspath $(LOCAL_PATH)/../../obj/local/armeabi/lib$(LIB).so)) APP_LIB_DEPENDS += $(foreach LIB, $(LOCAL_STATIC_LIBRARIES), $(abspath $(LOCAL_PATH)/../../obj/local/armeabi/lib$(LIB).a)) diff --git a/project/jni/application/fheroes2/AndroidAppSettings.cfg b/project/jni/application/fheroes2/AndroidAppSettings.cfg index 027bc1b74..bd7aaf81a 100644 --- a/project/jni/application/fheroes2/AndroidAppSettings.cfg +++ b/project/jni/application/fheroes2/AndroidAppSettings.cfg @@ -22,8 +22,8 @@ AppTouchscreenKeyboardKeysAmount=0 AppTouchscreenKeyboardKeysAmountAutoFire=0 RedefinedKeysScreenKb="LCTRL M T H E C SPACE C S L" MultiABI=n -AppVersionCode=225012 -AppVersionName="2250.12" +AppVersionCode=225512 +AppVersionName="2255.12" CompiledLibraries="sdl_net sdl_mixer sdl_image sdl_ttf png intl" CustomBuildScript=n AppCflags='-finline-functions -O2 -DWITH_ZLIB -DWITH_MIXER -DWITH_XML -DWITH_IMAGE -DWITH_TTF -DWITH_AI=simple' diff --git a/project/jni/application/setEnvironment-r4b.sh b/project/jni/application/setEnvironment-r4b.sh index f5ed3aaba..bac819f6a 100755 --- a/project/jni/application/setEnvironment-r4b.sh +++ b/project/jni/application/setEnvironment-r4b.sh @@ -48,7 +48,7 @@ CFLAGS="-I$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/include \ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -O2 \ -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ -Wa,--noexecstack -DNDEBUG -g \ --include SDL_android_printf.h \ +-include $LOCAL_PATH/../sdl_fake_stdout/include/SDL_android_printf.h \ -I$LOCAL_PATH/../sdl-1.2/include $STL_INCLUDE \ `echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-I$LOCAL_PATH/../\1/include@g\"`" @@ -62,7 +62,7 @@ $NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib/libm.so \ -L$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib \ -lGLESv1_CM -ldl -llog -lz \ -Wl,-rpath-link=$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib \ --L$LOCAL_PATH/../../obj/local/armeabi $STL_LIB" +-L$LOCAL_PATH/../../obj/local/armeabi $STL_LIB -lsdl_fake_stdout -Wl,-u,_SDL_ANDROID_initFakeStdout" env PATH=$NDK/build/prebuilt/$MYARCH/arm-eabi-$GCCVER/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ diff --git a/project/jni/application/setEnvironment-r5b.sh b/project/jni/application/setEnvironment-r5b.sh index b566da38f..09c46de07 100755 --- a/project/jni/application/setEnvironment-r5b.sh +++ b/project/jni/application/setEnvironment-r5b.sh @@ -50,7 +50,7 @@ CFLAGS="\ -fpic -ffunction-sections -funwind-tables -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi \ -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ -I$NDK/platforms/$PLATFORMVER/arch-arm/usr/include -Wa,--noexecstack \ --DANDROID -include SDL_android_printf.h \ +-DANDROID -include $LOCAL_PATH/../sdl_fake_stdout/include/SDL_android_printf.h \ -DNDEBUG -O2 -g \ -I$NDK/sources/cxx-stl/gnu-libstdc++/include \ -I$NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include \ @@ -71,7 +71,7 @@ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libz.so \ $NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libstdc++.a \ -L$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib \ -L$LOCAL_PATH/../../obj/local/armeabi -Wl,--no-undefined -Wl,-z,noexecstack \ --Wl,-rpath-link=$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib -lsupc++" +-Wl,-rpath-link=$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib -lsupc++ -lsdl_fake_stdout -Wl,-u,_SDL_ANDROID_initFakeStdout" env PATH=$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ CFLAGS="$CFLAGS" \ diff --git a/project/jni/application/src b/project/jni/application/src index 92362c4db..59d41f41e 120000 --- a/project/jni/application/src +++ b/project/jni/application/src @@ -1 +1 @@ -ufoai \ No newline at end of file +fheroes2 \ No newline at end of file diff --git a/project/jni/sdl-1.2/include/SDL_android_printf.h b/project/jni/sdl-1.2/include/SDL_android_printf.h deleted file mode 120000 index 8c51f2d72..000000000 --- a/project/jni/sdl-1.2/include/SDL_android_printf.h +++ /dev/null @@ -1 +0,0 @@ -../../sdl-1.3/include/SDL_android_printf.h \ No newline at end of file diff --git a/project/jni/sdl-1.2/src/video/android/SDL_fake_stdout.cpp b/project/jni/sdl-1.2/src/video/android/SDL_fake_stdout.cpp deleted file mode 120000 index 5f8039724..000000000 --- a/project/jni/sdl-1.2/src/video/android/SDL_fake_stdout.cpp +++ /dev/null @@ -1 +0,0 @@ -../../../../sdl-1.3/src/video/android/SDL_fake_stdout.cpp \ No newline at end of file diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.c b/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.c index 46509a37b..34c25a002 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.c +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.c @@ -229,7 +229,6 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInitJavaCallbacks) ( JNIEnv* env, jobject t JavaShowScreenKeyboard = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "showScreenKeyboard", "()V"); ANDROID_InitOSKeymap(); - SDL_ANDROID_initFakeStdout(); } int SDL_ANDROID_SetApplicationPutToBackgroundCallback( diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.h b/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.h index f0e7416d5..7caa5c3a5 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.h +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.h @@ -53,7 +53,6 @@ extern void SDL_ANDROID_processMoveMouseWithKeyboard(); extern int SDL_ANDROID_InsideVideoThread(); extern SDL_VideoDevice *ANDROID_CreateDevice_1_3(int devindex); extern void SDL_ANDROID_ProcessDeferredEvents(); -extern void SDL_ANDROID_initFakeStdout(); extern void SDL_ANDROID_WarpMouse(int x, int y); #if SDL_VERSION_ATLEAST(1,3,0) diff --git a/project/jni/sdl_fake_stdout/Android.mk b/project/jni/sdl_fake_stdout/Android.mk new file mode 100644 index 000000000..e8116a561 --- /dev/null +++ b/project/jni/sdl_fake_stdout/Android.mk @@ -0,0 +1,21 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := sdl_fake_stdout + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/../sdl-$(SDL_VERSION)/include +LOCAL_CFLAGS := + +ifeq ($(CRYSTAX_TOOLCHAIN)$(NDK_R5_TOOLCHAIN),) +LOCAL_C_INCLUDES += $(LOCAL_PATH)/../stlport/stlport +endif + +LOCAL_CPP_EXTENSION := .cpp + +LOCAL_SRC_FILES := SDL_fake_stdout.cpp + +LOCAL_SHARED_LIBRARIES := +LOCAL_LDLIBS := -llog + +include $(BUILD_STATIC_LIBRARY) diff --git a/project/jni/sdl-1.3/src/video/android/SDL_fake_stdout.cpp b/project/jni/sdl_fake_stdout/SDL_fake_stdout.cpp similarity index 100% rename from project/jni/sdl-1.3/src/video/android/SDL_fake_stdout.cpp rename to project/jni/sdl_fake_stdout/SDL_fake_stdout.cpp diff --git a/project/jni/sdl-1.3/include/SDL_android_printf.h b/project/jni/sdl_fake_stdout/include/SDL_android_printf.h similarity index 100% rename from project/jni/sdl-1.3/include/SDL_android_printf.h rename to project/jni/sdl_fake_stdout/include/SDL_android_printf.h diff --git a/project/jni/sdl_main/sdl_main.c b/project/jni/sdl_main/sdl_main.c index 7d306bc9b..668424ff6 100644 --- a/project/jni/sdl_main/sdl_main.c +++ b/project/jni/sdl_main/sdl_main.c @@ -24,6 +24,7 @@ #define JAVA_EXPORT_NAME1(name,package) JAVA_EXPORT_NAME2(name,package) #define JAVA_EXPORT_NAME(name) JAVA_EXPORT_NAME1(name,SDL_JAVA_PACKAGE_PATH) +extern C_LINKAGE void SDL_ANDROID_initFakeStdout(void); extern C_LINKAGE void JAVA_EXPORT_NAME(DemoRenderer_nativeInit) ( JNIEnv* env, jobject thiz, jstring jcurdir, jstring cmdline ) @@ -86,7 +87,9 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInit) ( JNIEnv* env, jobject thiz, jstring for( i = 0; i < argc; i++ ) __android_log_print(ANDROID_LOG_INFO, "libSDL", "param %d = \"%s\"", i, argv[i]); - + + SDL_ANDROID_initFakeStdout(); + main( argc, argv ); }; diff --git a/project/jni/stlport/Android.mk b/project/jni/stlport/Android.mk index 7920fd022..e7c5338fc 100644 --- a/project/jni/stlport/Android.mk +++ b/project/jni/stlport/Android.mk @@ -9,7 +9,7 @@ LOCAL_CPP_EXTENSION := .cpp LOCAL_SRC_FILES := dummy.c else LOCAL_C_INCLUDES := $(LOCAL_PATH)/stlport $(LOCAL_PATH)/src -LOCAL_CFLAGS := -O3 -DANDROID_NO_COUT=1 -frtti -fexceptions +LOCAL_CFLAGS := -O3 -DANDROID_NO_COUT=1 LOCAL_CPP_EXTENSION := .cpp LOCAL_SRC_FILES := $(addprefix src/,$(notdir $(wildcard $(LOCAL_PATH)/src/*.cpp $(LOCAL_PATH)/src/*.c)))