From ad4a0bc52c3020d6839eb062e993e192bd864c3b Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Mon, 29 Jan 2018 22:45:06 +0200 Subject: [PATCH] SDL: fixed pure C libraries containing exception information --- project/jni/Application.mk | 3 +++ project/jni/application/Android.mk | 1 + project/jni/application/openttd/AndroidAppSettings.cfg | 2 +- project/jni/application/openttd/AndroidBuild.sh | 2 +- project/jni/application/openttd/src | 2 +- project/jni/application/pkg-config | 3 +++ project/jni/application/setEnvironment-arm64-v8a.sh | 1 + project/jni/application/setEnvironment-armeabi-v7a.sh | 1 + project/jni/application/setEnvironment-mips.sh | 1 + project/jni/application/setEnvironment-x86.sh | 1 + project/jni/application/setEnvironment-x86_64.sh | 1 + project/jni/application/setEnvironment.sh | 1 + project/jni/expat/Android.mk | 3 ++- 13 files changed, 18 insertions(+), 4 deletions(-) diff --git a/project/jni/Application.mk b/project/jni/Application.mk index 857de583a..1978efafc 100644 --- a/project/jni/Application.mk +++ b/project/jni/Application.mk @@ -5,3 +5,6 @@ include jni/Settings.mk APP_STL := $(if $(filter clang%, $(NDK_TOOLCHAIN_VERSION)), c++_static, gnustl_static) APP_CFLAGS := -O3 -DNDEBUG -g # arm-linux-androideabi-4.4.3 crashes in -O0 mode on SDL sources APP_PIE := true # This feature makes executables incompatible to Android API 15 or lower, but executables without PIE will not run on Android 5.0 and newer +SDL_EXCLUDE_LIBGCC := -Wl,--exclude-libs,libgcc.a +SDL_EXCLUDE_LIBUNWIND := -Wl,--exclude-libs,libunwind.a +APP_LDFLAGS = $(if $(filter clang%, $(NDK_TOOLCHAIN_VERSION)), $(SDL_EXCLUDE_LIBGCC) $(if $(filter armeabi%, $(APP_ABI)), $(SDL_EXCLUDE_LIBUNWIND))) diff --git a/project/jni/application/Android.mk b/project/jni/application/Android.mk index 2f8fdf47a..5917a40b3 100644 --- a/project/jni/application/Android.mk +++ b/project/jni/application/Android.mk @@ -67,6 +67,7 @@ SDL_APP_LIB_DEPENDS-$(TARGET_ARCH_ABI) += $(foreach LIB, $(LOCAL_STATIC_LIBRARIE obj/local/$(TARGET_ARCH_ABI)/libcrypto.so: obj/local/$(TARGET_ARCH_ABI)/libcrypto.so.sdl.0.so obj/local/$(TARGET_ARCH_ABI)/libssl.so: obj/local/$(TARGET_ARCH_ABI)/libssl.so.sdl.0.so obj/local/$(TARGET_ARCH_ABI)/libcurl.so: obj/local/$(TARGET_ARCH_ABI)/libcurl-sdl.so +obj/local/$(TARGET_ARCH_ABI)/libexpat.so: obj/local/$(TARGET_ARCH_ABI)/libexpat-sdl.so include $(BUILD_SHARED_LIBRARY) diff --git a/project/jni/application/openttd/AndroidAppSettings.cfg b/project/jni/application/openttd/AndroidAppSettings.cfg index db3b98d43..93374aa7d 100644 --- a/project/jni/application/openttd/AndroidAppSettings.cfg +++ b/project/jni/application/openttd/AndroidAppSettings.cfg @@ -244,7 +244,7 @@ NDK_TOOLCHAIN_VERSION=clang # Specify architectures to compile, 'all' or 'y' to compile for all architectures. # Available architectures: armeabi armeabi-v7a x86 mips arm64-v8a x86_64 -MultiABI='armeabi-v7a x86 arm64-v8a x86_64' +MultiABI=armeabi-v7a # 'armeabi-v7a x86 arm64-v8a x86_64' # 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 diff --git a/project/jni/application/openttd/AndroidBuild.sh b/project/jni/application/openttd/AndroidBuild.sh index ab310ef29..038027867 100755 --- a/project/jni/application/openttd/AndroidBuild.sh +++ b/project/jni/application/openttd/AndroidBuild.sh @@ -30,4 +30,4 @@ uname -s | grep -i "linux" > /dev/null && NCPU=`cat /proc/cpuinfo | grep -c -i p LIBATOMIC= echo $1 | grep 'armeabi-v7a' && LIBATOMIC="-lunwind" -env CLANG=1 LIBATOMIC=$LIBATOMIC ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && make -j$NCPU VERBOSE=1 STRIP='' LIBS='-lsdl-1.2 -llzo2 -lpng -ltimidity -lfontconfig -lfreetype -lexpat -licui18n -liculx -licu-le-hb -lharfbuzz -licuuc -licudata -lgcc -lz -lc -lc++_static -lc++abi -landroid_support $LIBATOMIC'" && cp -f openttd-$VER-$1/objs/release/openttd libapplication-$1.so || exit 1 +env CLANG=1 LIBATOMIC=$LIBATOMIC ../setEnvironment-$1.sh sh -c "cd openttd-$VER-$1 && make -j$NCPU VERBOSE=1 STRIP='' LIBS='-lsdl-1.2 -llzo2 -lpng -ltimidity -lfontconfig -lfreetype -lexpat-sdl -licui18n -liculx -licu-le-hb -lharfbuzz -licuuc -licudata -lgcc -lz -lc -lc++_static -lc++abi -landroid_support $LIBATOMIC'" && cp -f openttd-$VER-$1/objs/release/openttd libapplication-$1.so || exit 1 diff --git a/project/jni/application/openttd/src b/project/jni/application/openttd/src index 93a3bc7ca..c029120a7 160000 --- a/project/jni/application/openttd/src +++ b/project/jni/application/openttd/src @@ -1 +1 @@ -Subproject commit 93a3bc7cab22408ee9847e2ef698e2c15b870fbc +Subproject commit c029120a7b7eb692fa38855940c4d7fd90a7636e diff --git a/project/jni/application/pkg-config b/project/jni/application/pkg-config index d6c423661..3a47cd9a3 100755 --- a/project/jni/application/pkg-config +++ b/project/jni/application/pkg-config @@ -99,6 +99,9 @@ while test $# -gt 0; do openssl|ssl|libssl) echo -l:libssl.so.sdl.1.so -l:libcrypto.so.sdl.1.so ;; + expat|libexpat) + echo -lexpat-sdl + ;; *) echo -l$PKG ;; diff --git a/project/jni/application/setEnvironment-arm64-v8a.sh b/project/jni/application/setEnvironment-arm64-v8a.sh index 44c36ce67..80f0a41e0 100755 --- a/project/jni/application/setEnvironment-arm64-v8a.sh +++ b/project/jni/application/setEnvironment-arm64-v8a.sh @@ -47,6 +47,7 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do crypto) echo crypto.so.sdl.1;; ssl) echo ssl.so.sdl.1;; curl) echo curl-sdl;; + expat) echo expat-sdl;; *) echo $LIB;; esac fi diff --git a/project/jni/application/setEnvironment-armeabi-v7a.sh b/project/jni/application/setEnvironment-armeabi-v7a.sh index 3c4c40d02..5133a1b23 100755 --- a/project/jni/application/setEnvironment-armeabi-v7a.sh +++ b/project/jni/application/setEnvironment-armeabi-v7a.sh @@ -47,6 +47,7 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do crypto) echo crypto.so.sdl.1;; ssl) echo ssl.so.sdl.1;; curl) echo curl-sdl;; + expat) echo expat-sdl;; *) echo $LIB;; esac fi diff --git a/project/jni/application/setEnvironment-mips.sh b/project/jni/application/setEnvironment-mips.sh index 2f8bb834b..cfc0388b4 100755 --- a/project/jni/application/setEnvironment-mips.sh +++ b/project/jni/application/setEnvironment-mips.sh @@ -41,6 +41,7 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do crypto) echo crypto.so.sdl.1;; ssl) echo ssl.so.sdl.1;; curl) echo curl-sdl;; + expat) echo expat-sdl;; *) echo $LIB;; esac fi diff --git a/project/jni/application/setEnvironment-x86.sh b/project/jni/application/setEnvironment-x86.sh index 1319aca0e..ff5b5d168 100755 --- a/project/jni/application/setEnvironment-x86.sh +++ b/project/jni/application/setEnvironment-x86.sh @@ -47,6 +47,7 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do crypto) echo crypto.so.sdl.1;; ssl) echo ssl.so.sdl.1;; curl) echo curl-sdl;; + expat) echo expat-sdl;; *) echo $LIB;; esac fi diff --git a/project/jni/application/setEnvironment-x86_64.sh b/project/jni/application/setEnvironment-x86_64.sh index 0d776e440..3bac700d0 100755 --- a/project/jni/application/setEnvironment-x86_64.sh +++ b/project/jni/application/setEnvironment-x86_64.sh @@ -47,6 +47,7 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do crypto) echo crypto.so.sdl.1;; ssl) echo ssl.so.sdl.1;; curl) echo curl-sdl;; + expat) echo expat-sdl;; *) echo $LIB;; esac fi diff --git a/project/jni/application/setEnvironment.sh b/project/jni/application/setEnvironment.sh index 09670ed23..1d3bde2eb 100755 --- a/project/jni/application/setEnvironment.sh +++ b/project/jni/application/setEnvironment.sh @@ -41,6 +41,7 @@ echo $APP_MODULES | xargs -n 1 echo | while read LIB ; do crypto) echo crypto.so.sdl.1;; ssl) echo ssl.so.sdl.1;; curl) echo curl-sdl;; + expat) echo expat-sdl;; *) echo $LIB;; esac fi diff --git a/project/jni/expat/Android.mk b/project/jni/expat/Android.mk index 4dca89e6a..afceb085c 100644 --- a/project/jni/expat/Android.mk +++ b/project/jni/expat/Android.mk @@ -28,6 +28,7 @@ LOCAL_SRC_FILES := $(common_SRC_FILES) LOCAL_CFLAGS += $(common_CFLAGS) LOCAL_C_INCLUDES += $(common_C_INCLUDES) -LOCAL_MODULE:= expat +LOCAL_MODULE := expat +LOCAL_MODULE_FILENAME := libexpat-sdl # It clashes with system libexpat on Android 5 and older include $(BUILD_SHARED_LIBRARY)