From 09ea013ae17caad7d973fb05287a634dba2768c9 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Fri, 28 Jul 2017 16:52:31 +0300 Subject: Use libc++ instead of libstdc++ when compiling with android-clang mkspec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit clang+libc++ is the only supported way by Google nowadays. libstdc++ is too old and already fails to build some C++11 apps e.g. missing std::to_string(). android-g++ mkspec still uses libstdc++ and g++. Use -isystem to include system headers instead of QMAKE_INCDIR_POST (-I). Task-number: QTBUG-60455 Change-Id: Iba8b04594c2e5e2832e6cf480e4e52ff31ad4106 Reviewed-by: Sérgio Martins Reviewed-by: Eskil Abrahamsen Blomfeldt --- mkspecs/android-clang/qmake.conf | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'mkspecs/android-clang') diff --git a/mkspecs/android-clang/qmake.conf b/mkspecs/android-clang/qmake.conf index 3e621c7d77..2f38e100b2 100644 --- a/mkspecs/android-clang/qmake.conf +++ b/mkspecs/android-clang/qmake.conf @@ -15,20 +15,34 @@ QMAKE_CC = $$NDK_LLVM_PATH/bin/clang QMAKE_CXX = $$NDK_LLVM_PATH/bin/clang++ equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ - QMAKE_CFLAGS = -target armv7-none-linux-androideabi + QMAKE_CFLAGS += -target armv7-none-linux-androideabi else: equals(ANDROID_TARGET_ARCH, armeabi): \ - QMAKE_CFLAGS = -target armv5te-none-linux-androideabi + QMAKE_CFLAGS += -target armv5te-none-linux-androideabi else: equals(ANDROID_TARGET_ARCH, arm64-v8a): \ - QMAKE_CFLAGS = -target aarch64-none-linux-android + QMAKE_CFLAGS += -target aarch64-none-linux-android else: equals(ANDROID_TARGET_ARCH, x86): \ - QMAKE_CFLAGS = -target i686-none-linux-android + QMAKE_CFLAGS += -target i686-none-linux-android else: equals(ANDROID_TARGET_ARCH, x86_64): \ - QMAKE_CFLAGS = -target x86_64-none-linux-android + QMAKE_CFLAGS += -target x86_64-none-linux-android else: equals(ANDROID_TARGET_ARCH, mips): \ QMAKE_CFLAGS += -target mipsel-none-linux-android else: equals(ANDROID_TARGET_ARCH, mips64): \ - QMAKE_CFLAGS = -target mips64el-none-linux-android + QMAKE_CFLAGS += -target mips64el-none-linux-android -QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS -gcc-toolchain $$NDK_TOOLCHAIN_PATH +QMAKE_CFLAGS += -gcc-toolchain $$NDK_TOOLCHAIN_PATH +QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS -Wl,--exclude-libs,libgcc.a +QMAKE_CFLAGS += -DANDROID_HAS_WSTRING --sysroot=$$NDK_ROOT/sysroot \ + -isystem $$NDK_ROOT/sysroot/usr/include/$$NDK_TOOLS_PREFIX \ + -isystem $$NDK_ROOT/sources/cxx-stl/llvm-libc++/include \ + -isystem $$NDK_ROOT/sources/android/support/include \ + -isystem $$NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include + +ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/llvm-libc++/libs/$$ANDROID_TARGET_ARCH + +ANDROID_STDCPP_PATH = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++_shared.so +ANDROID_CXX_STL_LIBS = -lc++ + +QMAKE_ARM_CFLAGS_RELEASE = -Oz +QMAKE_ARM_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -Oz include(../common/android-base-tail.conf) -- cgit v1.2.3