[android] Switched to gnustl_static to support old armeabi devices and avoid exceptions bug on c++_static STL

This commit is contained in:
Alex Zolotarev 2014-08-22 23:05:57 +03:00 committed by Alex Zolotarev
parent 9614caa6f9
commit 5c59cd2e77
3 changed files with 16 additions and 5 deletions

View file

@ -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

View file

@ -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

View file

@ -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