Warning, /graphics/krita/3rdparty/ext_qt/0046-Android-Update-clang-mkspecs.patch is written in an unsupported language. File is not indexed.
0001 From 024c4f76ac453b2450fd60e590b3138d12bcc6b4 Mon Sep 17 00:00:00 2001 0002 From: BogDan Vatra <bogdan@kde.org> 0003 Date: Tue, 9 Jul 2019 10:34:31 +0300 0004 Subject: [PATCH 46/46] Android: Update clang mkspecs 0005 0006 Follow Google's BuildSystemMaintainers doc to simplify (a lot) the clang support 0007 It is needed to support future NDK releases painlessly. 0008 Also remove old workarounds. 0009 0010 [ChangeLog][Android] Android depends on NDK r20+ 0011 0012 Change-Id: Ib4c07fc71e0f5a264d804b0b3baa18ff79d07630 0013 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> 0014 --- 0015 mkspecs/android-clang/qmake.conf | 40 ++++++++++----------------- 0016 mkspecs/android-g++/qmake.conf | 5 ++++ 0017 mkspecs/common/android-base-head.conf | 1 - 0018 mkspecs/common/android-base-tail.conf | 16 +++-------- 0019 src/corelib/tools/qstring.h | 9 ------ 0020 src/gui/text/qcssparser.cpp | 4 --- 0021 6 files changed, 23 insertions(+), 52 deletions(-) 0022 0023 diff --git a/mkspecs/android-clang/qmake.conf b/mkspecs/android-clang/qmake.conf 0024 index 975d43779d..4c231e74b3 100644 0025 --- a/mkspecs/android-clang/qmake.conf 0026 +++ b/mkspecs/android-clang/qmake.conf 0027 @@ -14,42 +14,30 @@ NDK_LLVM_PATH = $$NDK_ROOT/toolchains/llvm/prebuilt/$$NDK_HOST 0028 QMAKE_CC = $$NDK_LLVM_PATH/bin/clang 0029 QMAKE_CXX = $$NDK_LLVM_PATH/bin/clang++ 0030 0031 +# Follow https://android.googlesource.com/platform/ndk/+/ndk-release-r20/docs/BuildSystemMaintainers.md 0032 + 0033 equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ 0034 - QMAKE_CFLAGS += -target armv7-none-linux-androideabi 0035 -else: equals(ANDROID_TARGET_ARCH, armeabi): \ 0036 - QMAKE_CFLAGS += -target armv5te-none-linux-androideabi 0037 + QMAKE_CFLAGS = -target armv7a-linux-androideabi$$replace(ANDROID_PLATFORM, "android-", "") 0038 else: equals(ANDROID_TARGET_ARCH, arm64-v8a): \ 0039 - QMAKE_CFLAGS += -target aarch64-none-linux-android 0040 + QMAKE_CFLAGS = -target aarch64-linux-android$$replace(ANDROID_PLATFORM, "android-", "") 0041 else: equals(ANDROID_TARGET_ARCH, x86): \ 0042 - QMAKE_CFLAGS += -target i686-none-linux-android -mstackrealign 0043 + QMAKE_CFLAGS = -target i686-linux-android$$replace(ANDROID_PLATFORM, "android-", "") -mstackrealign 0044 else: equals(ANDROID_TARGET_ARCH, x86_64): \ 0045 - QMAKE_CFLAGS += -target x86_64-none-linux-android 0046 -else: equals(ANDROID_TARGET_ARCH, mips): \ 0047 - QMAKE_CFLAGS += -target mipsel-none-linux-android 0048 -else: equals(ANDROID_TARGET_ARCH, mips64): \ 0049 - QMAKE_CFLAGS += -target mips64el-none-linux-android 0050 - 0051 -QMAKE_CFLAGS += -gcc-toolchain $$NDK_TOOLCHAIN_PATH -fno-limit-debug-info 0052 - 0053 -QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ 0054 -equals(ANDROID_TARGET_ARCH, armeabi-v7a): QMAKE_LINK += -Wl,--exclude-libs,libunwind.a 0055 + QMAKE_CFLAGS = -target x86_64-linux-android$$replace(ANDROID_PLATFORM, "android-", "") 0056 0057 -QMAKE_CFLAGS += -DANDROID_HAS_WSTRING --sysroot=$$NDK_ROOT/sysroot \ 0058 - -isystem $$NDK_ROOT/sysroot/usr/include/$$NDK_TOOLS_PREFIX \ 0059 - -isystem $$NDK_ROOT/sources/cxx-stl/llvm-libc++/include \ 0060 - -isystem $$NDK_ROOT/sources/android/support/include \ 0061 - -isystem $$NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include 0062 +QMAKE_CFLAGS += -fno-limit-debug-info 0063 0064 -ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/llvm-libc++/libs/$$ANDROID_TARGET_ARCH 0065 +QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS 0066 0067 -ANDROID_STDCPP_PATH = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++_shared.so 0068 +ANDROID_STDCPP_PATH = $$NDK_LLVM_PATH/sysroot/usr/lib/$$NDK_TOOLS_PREFIX/libc++_shared.so 0069 0070 ANDROID_USE_LLVM = true 0071 0072 -exists($$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++.so): \ 0073 - ANDROID_CXX_STL_LIBS = -lc++ 0074 -else: \ 0075 - ANDROID_CXX_STL_LIBS = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++.so.$$replace(ANDROID_PLATFORM, "android-", "") 0076 +QMAKE_CFLAGS_OPTIMIZE_SIZE = -Oz 0077 +QMAKE_LIBDIR_POST = 0078 +QMAKE_LFLAGS = 0079 +QMAKE_LIBS_PRIVATE = 0080 +ANDROID_CXX_STL_LIBS = 0081 0082 QMAKE_CFLAGS_OPTIMIZE_SIZE = -Oz 0083 0084 diff --git a/mkspecs/android-g++/qmake.conf b/mkspecs/android-g++/qmake.conf 0085 index 0cb3558f96..451e12bc75 100644 0086 --- a/mkspecs/android-g++/qmake.conf 0087 +++ b/mkspecs/android-g++/qmake.conf 0088 @@ -12,6 +12,7 @@ include(../common/android-base-head.conf) 0089 QMAKE_CC = $${CROSS_COMPILE}gcc 0090 QMAKE_CXX = $${CROSS_COMPILE}g++ 0091 QMAKE_LINK = $$QMAKE_CXX 0092 +QMAKE_CFLAGS = -D__ANDROID_API__=$$replace(ANDROID_PLATFORM, "android-", "") 0093 0094 ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/$$NDK_TOOLCHAIN_VERSION/libs/$$ANDROID_TARGET_ARCH 0095 ANDROID_STDCPP_PATH = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libgnustl_shared.so 0096 @@ -32,4 +33,8 @@ else: \ 0097 LIBGCC_PATH_FULL = $$system("$$QMAKE_CXX -print-libgcc-file-name") 0098 ANDROID_SOURCES_CXX_STL_LIBDIR += $$dirname(LIBGCC_PATH_FULL) 0099 0100 +QMAKE_LIBDIR_POST = $$ANDROID_SOURCES_CXX_STL_LIBDIR 0101 +QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH 0102 +equals(ANDROID_TARGET_ARCH, x86_64) QMAKE_LFLAGS += -L$$ANDROID_PLATFORM_ROOT_PATH/usr/lib64 0103 + 0104 include(../common/android-base-tail.conf) 0105 diff --git a/mkspecs/common/android-base-head.conf b/mkspecs/common/android-base-head.conf 0106 index a43fc7f23e..21847d0fb1 100644 0107 --- a/mkspecs/common/android-base-head.conf 0108 +++ b/mkspecs/common/android-base-head.conf 0109 @@ -64,7 +64,6 @@ isEmpty(ANDROID_SDK_BUILD_TOOLS_REVISION) { 0110 } 0111 0112 CONFIG += $$ANDROID_PLATFORM 0113 -QMAKE_CFLAGS = -D__ANDROID_API__=$$replace(ANDROID_PLATFORM, "android-", "") 0114 0115 ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/ 0116 0117 diff --git a/mkspecs/common/android-base-tail.conf b/mkspecs/common/android-base-tail.conf 0118 index edc255d08e..c970379f28 100644 0119 --- a/mkspecs/common/android-base-tail.conf 0120 +++ b/mkspecs/common/android-base-tail.conf 0121 @@ -6,22 +6,17 @@ isEmpty(DEFAULT_ANDROID_NDK_ROOT): return() 0122 QMAKE_CFLAGS += -fstack-protector-strong -DANDROID 0123 0124 equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ 0125 - QMAKE_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove 0126 + QMAKE_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfp 0127 else: equals(ANDROID_TARGET_ARCH, armeabi): \ 0128 - QMAKE_CFLAGS += -march=armv5te -mtune=xscale -msoft-float -fno-builtin-memmove 0129 -# -fno-builtin-memmove is used to workaround https://code.google.com/p/android/issues/detail?id=81692 0130 + QMAKE_CFLAGS += -march=armv5te -mtune=xscale -msoft-float 0131 0132 QMAKE_CFLAGS_WARN_ON = -Wall -W 0133 QMAKE_CFLAGS_WARN_OFF = 0134 equals(ANDROID_TARGET_ARCH, armeabi-v7a) | equals(ANDROID_TARGET_ARCH, armeabi) { 0135 CONFIG += optimize_size 0136 QMAKE_CFLAGS_DEBUG = -g -marm -O0 0137 - equals(ANDROID_TARGET_ARCH, armeabi):if(equals(NDK_TOOLCHAIN_VERSION, 4.8)|equals(NDK_TOOLCHAIN_VERSION, 4.9)) { 0138 - DEFINES += QT_OS_ANDROID_GCC_48_WORKAROUND 0139 - } else { 0140 - QMAKE_CFLAGS_RELEASE += -mthumb 0141 - QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -mthumb 0142 - } 0143 + QMAKE_CFLAGS_RELEASE += -mthumb 0144 + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -mthumb 0145 } 0146 0147 QMAKE_CFLAGS_SHLIB = -fPIC 0148 @@ -61,15 +56,12 @@ QMAKE_STRIP = 0149 QMAKE_RANLIB = $${CROSS_COMPILE}ranlib 0150 0151 QMAKE_INCDIR_POST = 0152 -QMAKE_LIBDIR_POST = $$ANDROID_SOURCES_CXX_STL_LIBDIR 0153 QMAKE_INCDIR_X11 = 0154 QMAKE_LIBDIR_X11 = 0155 QMAKE_INCDIR_OPENGL = 0156 QMAKE_LIBDIR_OPENGL = 0157 0158 QMAKE_LINK_SHLIB = $$QMAKE_LINK 0159 -QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH 0160 -equals(ANDROID_TARGET_ARCH, x86_64) QMAKE_LFLAGS += -L$$ANDROID_PLATFORM_ROOT_PATH/usr/lib64 0161 QMAKE_LFLAGS_APP = -Wl,--no-undefined -Wl,-z,noexecstack -shared 0162 QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared 0163 QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB 0164 diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h 0165 index 6be3dcdbe1..7034b7ae71 100644 0166 --- a/src/corelib/tools/qstring.h 0167 +++ b/src/corelib/tools/qstring.h 0168 @@ -56,15 +56,6 @@ 0169 #include <string> 0170 #include <iterator> 0171 0172 -#if defined(Q_OS_ANDROID) && !defined(ANDROID_HAS_WSTRING) 0173 -// std::wstring is disabled on android's glibc, as bionic lacks certain features 0174 -// that libstdc++ checks for (like mbcslen). 0175 -namespace std 0176 -{ 0177 - typedef basic_string<wchar_t> wstring; 0178 -} 0179 -#endif 0180 - 0181 #include <stdarg.h> 0182 0183 #ifdef truncate 0184 diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp 0185 index 7fc90156e5..797ad9cbd0 100644 0186 --- a/src/gui/text/qcssparser.cpp 0187 +++ b/src/gui/text/qcssparser.cpp 0188 @@ -606,11 +606,7 @@ bool ValueExtractor::extractBorder(int *borders, QBrush *colors, BorderStyle *st 0189 case BorderRightStyle: styles[RightEdge] = decl.styleValue(); break; 0190 case BorderStyles: decl.styleValues(styles); break; 0191 0192 -#ifndef QT_OS_ANDROID_GCC_48_WORKAROUND 0193 case BorderTopLeftRadius: radii[0] = sizeValue(decl); break; 0194 -#else 0195 - case BorderTopLeftRadius: new(radii)QSize(sizeValue(decl)); break; 0196 -#endif 0197 case BorderTopRightRadius: radii[1] = sizeValue(decl); break; 0198 case BorderBottomLeftRadius: radii[2] = sizeValue(decl); break; 0199 case BorderBottomRightRadius: radii[3] = sizeValue(decl); break; 0200 -- 0201 2.33.0 0202