diff --git a/build.sh b/build.sh index 36dbc8887..ec06509de 100755 --- a/build.sh +++ b/build.sh @@ -15,5 +15,5 @@ if ( grep "package $AppFullName;" project/src/Globals.java > /dev/null && [ "`re touch project/src/Globals.java fi -cd project && env PATH=$NDKBUILDPATH nice -n10 ndk-build -j4 V=1 && ant `test -n "$1" && echo release || echo debug` && test -z "$1" && cd bin && adb install -r DemoActivity-debug.apk +cd project && env PATH=$NDKBUILDPATH nice -n19 ndk-build -j4 V=1 && ant `test -n "$1" && echo release || echo debug` && test -z "$1" && cd bin && adb install -r DemoActivity-debug.apk diff --git a/project/jni/application/Android.mk b/project/jni/application/Android.mk index 6fe2adb10..eaff0fa39 100644 --- a/project/jni/application/Android.mk +++ b/project/jni/application/Android.mk @@ -23,6 +23,7 @@ endif LOCAL_CFLAGS += $(foreach D, $(APP_SUBDIRS), -I$(LOCAL_PATH)/$(D)) \ -I$(LOCAL_PATH)/../sdl-$(SDL_VERSION)/include \ $(foreach L, $(COMPILED_LIBRARIES), -I$(LOCAL_PATH)/../$(L)/include) + -D__sF=__SDL_fake_stdout LOCAL_CFLAGS += $(APPLICATION_ADDITIONAL_CFLAGS) diff --git a/project/jni/application/scummvm/AndroidAppSettings.cfg b/project/jni/application/scummvm/AndroidAppSettings.cfg index e9d73742e..3cb4f9946 100644 --- a/project/jni/application/scummvm/AndroidAppSettings.cfg +++ b/project/jni/application/scummvm/AndroidAppSettings.cfg @@ -1,5 +1,5 @@ # The application settings for Android libSDL port -AppSettingVersion=15 +AppSettingVersion=16 LibSdlVersion=1.2 AppName="ScummVM" AppFullName=org.scummvm.sdl @@ -20,9 +20,10 @@ NonBlockingSwapBuffers=n RedefinedKeys="LALT RETURN ESCAPE F7 ESCAPE F5 F5 RETURN DELETE F7 F7" AppTouchscreenKeyboardKeysAmount=0 AppTouchscreenKeyboardKeysAmountAutoFire=0 +RedefinedKeysScreenKb="LALT RETURN ESCAPE F7" MultiABI=n -AppVersionCode=12001 -AppVersionName="1.2.0.01" +AppVersionCode=12102 +AppVersionName="1.2.1.02" CompiledLibraries="mad tremor flac ogg jpeg png fluidsynth" CustomBuildScript=y AppCflags='' diff --git a/project/jni/application/setEnvironment.sh b/project/jni/application/setEnvironment.sh index 4bc99e984..a2800f3b0 100755 --- a/project/jni/application/setEnvironment.sh +++ b/project/jni/application/setEnvironment.sh @@ -48,9 +48,9 @@ done CFLAGS="-I$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/include \ -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums \ -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID \ --Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os \ +-Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -O2 \ -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ --Wa,--noexecstack -DNDEBUG -g \ +-Wa,--noexecstack -DNDEBUG -g -D__sF=__SDL_fake_stdout \ -I$LOCAL_PATH/../sdl-1.2/include $STL_INCLUDE \ `echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-I$LOCAL_PATH/../\1/include@g\"`" diff --git a/project/jni/application/src b/project/jni/application/src index 92362c4db..f36c75d23 120000 --- a/project/jni/application/src +++ b/project/jni/application/src @@ -1 +1 @@ -ufoai \ No newline at end of file +scummvm \ No newline at end of file diff --git a/project/jni/curl/Android.mk b/project/jni/curl/Android.mk index 33135d46f..2cc585e88 100644 --- a/project/jni/curl/Android.mk +++ b/project/jni/curl/Android.mk @@ -50,7 +50,7 @@ common_CFLAGS := \ -Wpointer-arith -Wwrite-strings -Wunused -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes \ -Wno-long-long -Wfloat-equal -Wno-multichar -Wsign-compare -Wno-format-nonliteral -Wendif-labels \ -Wstrict-prototypes -Wdeclaration-after-statement -Wno-system-headers -DHAVE_CONFIG_H -std=gnu99 \ - -I$(LOCAL_PATH)/include -I$(LOCAL_PATH)/include/curl -I$(LOCAL_PATH)/lib + -I$(LOCAL_PATH)/include -I$(LOCAL_PATH)/include/curl -I$(LOCAL_PATH)/lib -D__sF=__SDL_fake_stdout ######################### # Build the libcurl library @@ -75,6 +75,8 @@ LOCAL_CFLAGS += $(common_CFLAGS) LOCAL_MODULE:= libcurl +LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION) + LOCAL_LDLIBS := -lz include $(BUILD_SHARED_LIBRARY) diff --git a/project/jni/fluidsynth/Android.mk b/project/jni/fluidsynth/Android.mk index 370eeab70..a7c003f41 100644 --- a/project/jni/fluidsynth/Android.mk +++ b/project/jni/fluidsynth/Android.mk @@ -8,7 +8,7 @@ APP_SUBDIRS := $(patsubst $(LOCAL_PATH)/%, %, $(shell find $(LOCAL_PATH)/src -ty LOCAL_CFLAGS := -O3 $(foreach D, $(APP_SUBDIRS), -I$(LOCAL_PATH)/$(D)) \ -I$(LOCAL_PATH)/include -DHAVE_CONFIG_H -include stdint.h -I$(LOCAL_PATH)/../sdl-$(SDL_VERSION)/include \ - -Werror=implicit + -Werror=implicit -D__sF=__SDL_fake_stdout @@ -17,7 +17,7 @@ LOCAL_CPP_EXTENSION := .cpp LOCAL_SRC_FILES := $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.cpp)))) LOCAL_SRC_FILES += $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.c)))) -LOCAL_SHARED_LIBRARIES := +LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION) LOCAL_STATIC_LIBRARIES := diff --git a/project/jni/intl/Android.mk b/project/jni/intl/Android.mk index f09d8f78d..56cd9811c 100644 --- a/project/jni/intl/Android.mk +++ b/project/jni/intl/Android.mk @@ -16,11 +16,14 @@ LOCAL_CFLAGS := -Os -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include -DBUILDING_LIBIN -DLOCALEDIR=\"\" \ -DLIBDIR=\"\" \ -DLOCALE_ALIAS_PATH=\"\" \ - -DINSTALLDIR=\"\" + -DINSTALLDIR=\"\" \ + -D__sF=__SDL_fake_stdout # -DLOCALE_ALIAS_PATH=\"/usr/local/share/locale\" \ # -DINSTALLDIR=\"/usr/local/lib\" LOCAL_SRC_FILES := $(foreach F, $(APP_SUBDIRS), $(addprefix $(F)/,$(notdir $(wildcard $(LOCAL_PATH)/$(F)/*.c)))) +LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION) + include $(BUILD_SHARED_LIBRARY) diff --git a/project/jni/lua/Android.mk b/project/jni/lua/Android.mk index db112846c..861d1f735 100644 --- a/project/jni/lua/Android.mk +++ b/project/jni/lua/Android.mk @@ -4,7 +4,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := lua -LOCAL_CFLAGS := -O3 -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include +LOCAL_CFLAGS := -O3 -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include -D__sF=__SDL_fake_stdout LOCAL_CPP_EXTENSION := .cpp @@ -12,7 +12,7 @@ LOCAL_SRC_FILES := $(addprefix src/, $(notdir $(wildcard $(LOCAL_PATH)/src/*.c) LOCAL_STATIC_LIBRARIES := -LOCAL_SHARED_LIBRARIES := +LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION) LOCAL_LDLIBS := diff --git a/project/jni/mikmod/playercode/mdreg.c b/project/jni/mikmod/playercode/mdreg.c index eb732f57b..ea6265ece 100644 --- a/project/jni/mikmod/playercode/mdreg.c +++ b/project/jni/mikmod/playercode/mdreg.c @@ -106,7 +106,9 @@ void _mm_registeralldrivers(void) _mm_registerdriver(&drv_pipe); #endif #ifndef macintosh +#ifndef ANDROID _mm_registerdriver(&drv_stdout); +#endif #endif _mm_registerdriver(&drv_nos); diff --git a/project/jni/sdl-1.2/src/video/android/SDL_fake_stdout.c b/project/jni/sdl-1.2/src/video/android/SDL_fake_stdout.c new file mode 120000 index 000000000..f63ebc09f --- /dev/null +++ b/project/jni/sdl-1.2/src/video/android/SDL_fake_stdout.c @@ -0,0 +1 @@ +../../../../sdl-1.3/src/video/android/SDL_fake_stdout.c \ 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 4653e0438..fd27392ce 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,6 +229,7 @@ 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 8a411b13c..d68f22379 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,6 +53,7 @@ extern void SDL_ANDROID_processMoveMouseWithKeyboard(); extern int SDL_ANDROID_InsideVideoThread(); extern SDL_VideoDevice *ANDROID_CreateDevice_1_3(int devindex); extern void SDL_ANDROID_DeferredTextInput(); +extern void SDL_ANDROID_initFakeStdout(); #if SDL_VERSION_ATLEAST(1,3,0) extern SDL_Window * ANDROID_CurrentWindow; diff --git a/project/jni/sdl-1.3/src/video/android/SDL_fake_stdout.c b/project/jni/sdl-1.3/src/video/android/SDL_fake_stdout.c new file mode 100644 index 000000000..619dbce6a --- /dev/null +++ b/project/jni/sdl-1.3/src/video/android/SDL_fake_stdout.c @@ -0,0 +1,23 @@ +/* +Writing to stdout will crash your program on some particular Android tablets. +Although this is the device bug I've put a workaround here, +it is heavily dependent on NDK internals and is not portable in any way. +*/ + +#ifndef _SDL_fake_stdout_h +#define _SDL_fake_stdout_h +#include + +extern FILE __SDL_fake_stdout[]; + +FILE __SDL_fake_stdout[3]; + +void SDL_ANDROID_initFakeStdout() +{ + FILE * ff = NULL; + __SDL_fake_stdout[0] = * fopen("/dev/null", "r"); + __SDL_fake_stdout[1] = * fopen("/dev/null", "w"); + __SDL_fake_stdout[2] = * fopen("/dev/null", "w"); +} + +#endif diff --git a/project/jni/xerces/Android.mk b/project/jni/xerces/Android.mk index 94d1470ac..07a23e56b 100644 --- a/project/jni/xerces/Android.mk +++ b/project/jni/xerces/Android.mk @@ -6,7 +6,11 @@ XERCES_SUBDIRS := $(patsubst $(LOCAL_PATH)/%, %, $(shell find $(LOCAL_PATH)/src/ LOCAL_MODULE := xerces -LOCAL_CFLAGS := -Os -DHAVE_CONFIG_H -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include -I$(LOCAL_PATH)/.. -I$(LOCAL_PATH)/include/xercesc/util -I$(LOCAL_PATH)/include/xercesc/util/MsgLoaders/InMemory -I$(LOCAL_PATH)/include/xercesc/dom/ -I$(LOCAL_PATH)/include/xercesc/dom/impl -I$(LOCAL_PATH)/include/xercesc/validators/schema/identity -I$(LOCAL_PATH)/include/xercesc/util/Transcoders/IconvGNU/ -I$(LOCAL_PATH)/include/xercesc/sax +LOCAL_CFLAGS := -Os -DHAVE_CONFIG_H -I$(LOCAL_PATH) -I$(LOCAL_PATH)/src -I$(LOCAL_PATH)/include \ + -I$(LOCAL_PATH)/.. -I$(LOCAL_PATH)/include/xercesc/util -I$(LOCAL_PATH)/include/xercesc/util/MsgLoaders/InMemory \ + -I$(LOCAL_PATH)/include/xercesc/dom/ -I$(LOCAL_PATH)/include/xercesc/dom/impl \ + -I$(LOCAL_PATH)/include/xercesc/validators/schema/identity -I$(LOCAL_PATH)/include/xercesc/util/Transcoders/IconvGNU/ \ + -I$(LOCAL_PATH)/include/xercesc/sax -D__sF=__SDL_fake_stdout LOCAL_CPP_EXTENSION := .cpp diff --git a/project/jni/xml2/Android.mk b/project/jni/xml2/Android.mk index fd5aed6e5..3aa2736f1 100644 --- a/project/jni/xml2/Android.mk +++ b/project/jni/xml2/Android.mk @@ -4,7 +4,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := xml2 -LOCAL_CFLAGS := -Os -I$(LOCAL_PATH) -I$(LOCAL_PATH)/include +LOCAL_CFLAGS := -Os -I$(LOCAL_PATH) -I$(LOCAL_PATH)/include -D__sF=__SDL_fake_stdout LOCAL_CPP_EXTENSION := .cpp @@ -20,7 +20,7 @@ LOCAL_SRC_FILES := \ triostr.c trio.c trionan.c -LOCAL_SHARED_LIBRARIES := +LOCAL_SHARED_LIBRARIES := sdl-$(SDL_VERSION) LOCAL_STATIC_LIBRARIES := LOCAL_LDLIBS := -lz -ldl