From 5c59cd2e77ce76ee8877fa7e8a6e7f368f7e2d21 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Fri, 22 Aug 2014 23:05:57 +0300 Subject: [PATCH] [android] Switched to gnustl_static to support old armeabi devices and avoid exceptions bug on c++_static STL --- android/jni/Android.mk | 2 +- android/jni/Application.mk | 3 ++- tools/mkspecs/android-clang/qmake.conf | 16 +++++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 99383b8ac8..21219eefca 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -199,7 +199,7 @@ LOCAL_SRC_FILES := \ nv_event/nv_event.cpp \ nv_time/nv_time.cpp -LOCAL_LDLIBS := -llog -lGLESv2 +LOCAL_LDLIBS := -llog -lGLESv2 -latomic LOCAL_LDLIBS += -Wl,--gc-sections diff --git a/android/jni/Application.mk b/android/jni/Application.mk index 74b5378986..6f68b9f643 100644 --- a/android/jni/Application.mk +++ b/android/jni/Application.mk @@ -1,6 +1,7 @@ NDK_TOOLCHAIN_VERSION := clang APP_PLATFORM := android-5 -APP_STL := c++_static +APP_STL := gnustl_static +APP_CPPFLAGS += -std=c++11 ifeq (x$(NDK_ABI_TO_BUILD), x) APP_ABI := armeabi armeabi-v7a-hard x86 diff --git a/tools/mkspecs/android-clang/qmake.conf b/tools/mkspecs/android-clang/qmake.conf index 19f52645bc..2525271977 100644 --- a/tools/mkspecs/android-clang/qmake.conf +++ b/tools/mkspecs/android-clang/qmake.conf @@ -30,6 +30,7 @@ QMAKE_CFLAGS_DEBUG *= -O0 -g -DDEBUG -D_DEBUG QMAKE_CXXFLAGS_DEBUG *= $$QMAKE_CFLAGS_DEBUG BASE_CXX_INCLUDE_PATH = $$(NDK_ROOT)/sources/cxx-stl/llvm-libc++ +BASE_GNUSTL_INCLUDE_PATH = $$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8 # Customizations for each arch contains(ANDROID_TARGET_ABI, x86) { @@ -43,6 +44,7 @@ contains(ANDROID_TARGET_ABI, x86) { PLATFORM_INCLUDE_PATH = $$(NDK_ROOT)/platforms/$$ANDROID_PLATFORM/arch-x86/usr/include ABI_INCLUDE_PATH = $$BASE_CXX_INCLUDE_PATH/../gabi++/include + ABI_GNUSTL_INCLUDE_PATH = $$BASE_GNUSTL_INCLUDE_PATH/libs/x86/include AR_FULL_PATH = $$(NDK_ROOT)/toolchains/x86-$$GCC_VERSION/prebuilt/$$(NDK_HOST)/bin/i686-linux-android-ar } else { @@ -58,6 +60,7 @@ contains(ANDROID_TARGET_ABI, x86) { PLATFORM_INCLUDE_PATH = $$(NDK_ROOT)/platforms/$$ANDROID_PLATFORM/arch-mips/usr/include ABI_INCLUDE_PATH = $$BASE_CXX_INCLUDE_PATH/../gabi++/include + ABI_GNUSTL_INCLUDE_PATH = $$BASE_GNUSTL_INCLUDE_PATH/libs/mips/include AR_FULL_PATH = $$(NDK_ROOT)/toolchains/mipsel-linux-android-$$GCC_VERSION/prebuilt/$$(NDK_HOST)/bin/mipsel-linux-android-ar } else { @@ -72,16 +75,19 @@ contains(ANDROID_TARGET_ABI, x86) { contains(ANDROID_TARGET_ABI, armeabi-v7a-hard) { GCC_TARGET = armv7-none-linux-androideabi QMAKE_CFLAGS *= -march=armv7-a -mfpu=vfpv3-d16 -mhard-float -D_NDK_MATH_NO_SOFTFP=1 + ABI_GNUSTL_INCLUDE_PATH = $$BASE_GNUSTL_INCLUDE_PATH/libs/armeabi-v7a/include } else { contains(ANDROID_TARGET_ABI, armeabi-v7a) { GCC_TARGET = armv7-none-linux-androideabi QMAKE_CFLAGS *= -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 + ABI_GNUSTL_INCLUDE_PATH = $$BASE_GNUSTL_INCLUDE_PATH/libs/armeabi-v7a/include } else { # armeabi (the oldest one) arch GCC_TARGET = armv5te-none-linux-androideabi QMAKE_CFLAGS *= -march=armv5te -mtune=xscale -msoft-float + ABI_GNUSTL_INCLUDE_PATH = $$BASE_GNUSTL_INCLUDE_PATH/libs/armeabi/include } } } @@ -105,10 +111,14 @@ QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden # modifications to linux.conf QMAKE_AR = $$AR_FULL_PATH cqsD -QMAKE_INCDIR = $$BASE_CXX_INCLUDE_PATH/libcxx/include -QMAKE_INCDIR *= $$BASE_CXX_INCLUDE_PATH/../../android/support/include -QMAKE_INCDIR *= $$ABI_INCLUDE_PATH +#QMAKE_INCDIR = $$BASE_CXX_INCLUDE_PATH/libcxx/include +#QMAKE_INCDIR *= $$BASE_CXX_INCLUDE_PATH/../../android/support/include +#QMAKE_INCDIR *= $$ABI_INCLUDE_PATH QMAKE_INCDIR *= $$PLATFORM_INCLUDE_PATH +QMAKE_INCDIR *= $$BASE_GNUSTL_INCLUDE_PATH/include +QMAKE_INCDIR *= $$BASE_GNUSTL_INCLUDE_PATH/include/backward +QMAKE_INCDIR *= $$ABI_GNUSTL_INCLUDE_PATH + #QMAKE_LIBDIR = $$ANDROID_SOURCES_CXX_STL_LIBDIR $$ANDROID_PLATFORM_PATH/lib