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-g++/qmake.conf | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'mkspecs/android-g++/qmake.conf') diff --git a/mkspecs/android-g++/qmake.conf b/mkspecs/android-g++/qmake.conf index 2b81ac58f0..5e8a97c9d7 100644 --- a/mkspecs/android-g++/qmake.conf +++ b/mkspecs/android-g++/qmake.conf @@ -10,9 +10,24 @@ include(../common/gcc-base-unix.conf) include(../common/android-base-head.conf) QMAKE_CC = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-gcc -QMAKE_CXX = $$QMAKE_GCC +QMAKE_CXX = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-g++ +QMAKE_LINK = $$QMAKE_CXX -QMAKE_CFLAGS = -QMAKE_LINK = $$QMAKE_GCC +ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/$$NDK_TOOLCHAIN_VERSION/libs/$$ANDROID_TARGET_ARCH +ANDROID_STDCPP_PATH = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libgnustl_shared.so +ANDROID_CXX_STL_LIBS = -lgnustl_shared -lgcc + +QMAKE_CFLAGS += --sysroot=$$ANDROID_PLATFORM_ROOT_PATH \ + -isystem $$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/$$NDK_TOOLCHAIN_VERSION/include \ + -isystem $$ANDROID_SOURCES_CXX_STL_LIBDIR/include + +equals(ANDROID_TARGET_ARCH, armeabi)|equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ + LIBGCC_PATH_FULL = $$system("$$QMAKE_CXX -mthumb-interwork -print-libgcc-file-name") +else: \ + LIBGCC_PATH_FULL = $$system("$$QMAKE_CXX -print-libgcc-file-name") +ANDROID_SOURCES_CXX_STL_LIBDIR += $$dirname(LIBGCC_PATH_FULL) + +QMAKE_ARM_CFLAGS_RELEASE = -Os +QMAKE_ARM_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -Os include(../common/android-base-tail.conf) -- cgit v1.2.3