mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
Merge bitcoin/bitcoin#22469: build: Add support for Android NDK r22+
acaac6e86a
ci: Bump Android NDK to r22 which supports std::filesystem (Hennadii Stepanov)cac7890386
build: Add support for Android NDK r22+ (Hennadii Stepanov) Pull request description: This is required to support [`std::filesystem`](https://github.com/android/ndk/wiki/Changelog-r22#changes) on Android (see #20744). Fixes #22074. ACKs for top commit: icota: re-tACKacaac6e86a
Tree-SHA512: ecbec374ee590c4cb30012210f1422d469e7e8b68989f9eb53d36b5feee150d31e6bd10e1fc4a2056fbf4f8f8513e435b446e5feaf21a3a4d09dfc561fb22e73
This commit is contained in:
commit
7fc9a45f47
5 changed files with 126 additions and 14 deletions
|
@ -16,7 +16,7 @@ export RUN_FUNCTIONAL_TESTS=false
|
|||
|
||||
export ANDROID_API_LEVEL=28
|
||||
export ANDROID_BUILD_TOOLS_VERSION=28.0.3
|
||||
export ANDROID_NDK_VERSION=21.1.6352462
|
||||
export ANDROID_NDK_VERSION=22.1.7171670
|
||||
export ANDROID_TOOLS_URL=https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip
|
||||
export ANDROID_HOME="${DEPENDS_DIR}/SDKs/android"
|
||||
export ANDROID_NDK_HOME="${ANDROID_HOME}/ndk/${ANDROID_NDK_VERSION}"
|
||||
|
|
|
@ -9,7 +9,7 @@ $(package)_qt_libs=corelib network widgets gui plugins testlib
|
|||
$(package)_linguist_tools = lrelease lupdate lconvert
|
||||
$(package)_patches = qt.pro qttools_src.pro
|
||||
$(package)_patches += fix_qt_pkgconfig.patch mac-qmake.conf fix_no_printer.patch no-xlib.patch
|
||||
$(package)_patches+= fix_android_qmake_conf.patch fix_android_jni_static.patch dont_hardcode_pwd.patch
|
||||
$(package)_patches += support_new_android_ndks.patch fix_android_jni_static.patch dont_hardcode_pwd.patch
|
||||
$(package)_patches+= no_sdk_version_check.patch
|
||||
$(package)_patches+= fix_lib_paths.patch fix_android_pch.patch
|
||||
$(package)_patches+= qtbase-moc-ignore-gcc-macro.patch fix_limits_header.patch
|
||||
|
@ -224,7 +224,7 @@ define $(package)_preprocess_cmds
|
|||
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_qt_pkgconfig.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_no_printer.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_android_qmake_conf.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/support_new_android_ndks.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_android_jni_static.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_android_pch.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/no-xlib.patch && \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- old/qtbase/mkspecs/common/android-base-head.conf
|
||||
+++ new/qtbase/mkspecs/common/android-base-head.conf
|
||||
@@ -73,6 +73,6 @@ CROSS_COMPILE = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-
|
||||
@@ -72,6 +72,6 @@ CROSS_COMPILE = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-
|
||||
QMAKE_PCH_OUTPUT_EXT = .gch
|
||||
|
||||
QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
--- old/qtbase/mkspecs/android-clang/qmake.conf
|
||||
+++ new/qtbase/mkspecs/android-clang/qmake.conf
|
||||
@@ -47,7 +47,7 @@ ANDROID_STDCPP_PATH = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++_shared.so
|
||||
ANDROID_USE_LLVM = true
|
||||
|
||||
exists($$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++.so): \
|
||||
- ANDROID_CXX_STL_LIBS = -lc++
|
||||
+ ANDROID_CXX_STL_LIBS = -lc++_shared
|
||||
else: \
|
||||
ANDROID_CXX_STL_LIBS = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++.so.$$replace(ANDROID_PLATFORM, "android-", "")
|
122
depends/patches/qt/support_new_android_ndks.patch
Normal file
122
depends/patches/qt/support_new_android_ndks.patch
Normal file
|
@ -0,0 +1,122 @@
|
|||
Follow Google's BuildSystemMaintainers doc to support future NDK releases.
|
||||
|
||||
Upstream commit:
|
||||
- Qt 5.14: 9b14950ff600a4ce5a8698b67ab38907c50417f1
|
||||
|
||||
--- old/qtbase/mkspecs/android-clang/qmake.conf
|
||||
+++ new/qtbase/mkspecs/android-clang/qmake.conf
|
||||
@@ -14,43 +14,29 @@
|
||||
QMAKE_CC = $$NDK_LLVM_PATH/bin/clang
|
||||
QMAKE_CXX = $$NDK_LLVM_PATH/bin/clang++
|
||||
|
||||
+# Follow https://android.googlesource.com/platform/ndk/+/ndk-release-r20/docs/BuildSystemMaintainers.md
|
||||
+
|
||||
equals(ANDROID_TARGET_ARCH, armeabi-v7a): \
|
||||
- QMAKE_CFLAGS += -target armv7-none-linux-androideabi
|
||||
-else: equals(ANDROID_TARGET_ARCH, armeabi): \
|
||||
- QMAKE_CFLAGS += -target armv5te-none-linux-androideabi
|
||||
+ QMAKE_CFLAGS = -target armv7a-linux-androideabi$$replace(ANDROID_PLATFORM, "android-", "")
|
||||
else: equals(ANDROID_TARGET_ARCH, arm64-v8a): \
|
||||
- QMAKE_CFLAGS += -target aarch64-none-linux-android
|
||||
+ QMAKE_CFLAGS = -target aarch64-linux-android$$replace(ANDROID_PLATFORM, "android-", "")
|
||||
else: equals(ANDROID_TARGET_ARCH, x86): \
|
||||
- QMAKE_CFLAGS += -target i686-none-linux-android -mstackrealign
|
||||
+ QMAKE_CFLAGS = -target i686-linux-android$$replace(ANDROID_PLATFORM, "android-", "") -mstackrealign
|
||||
else: equals(ANDROID_TARGET_ARCH, x86_64): \
|
||||
- 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 += -gcc-toolchain $$NDK_TOOLCHAIN_PATH -fno-limit-debug-info
|
||||
-
|
||||
-QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++
|
||||
-equals(ANDROID_TARGET_ARCH, armeabi-v7a): QMAKE_LINK += -Wl,--exclude-libs,libunwind.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
|
||||
+ QMAKE_CFLAGS = -target x86_64-linux-android$$replace(ANDROID_PLATFORM, "android-", "")
|
||||
|
||||
-ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/llvm-libc++/libs/$$ANDROID_TARGET_ARCH
|
||||
+QMAKE_CFLAGS += -fno-limit-debug-info
|
||||
|
||||
-ANDROID_STDCPP_PATH = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++_shared.so
|
||||
+QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS
|
||||
|
||||
-ANDROID_USE_LLVM = true
|
||||
+ANDROID_STDCPP_PATH = $$NDK_LLVM_PATH/sysroot/usr/lib/$$NDK_TOOLS_PREFIX/libc++_shared.so
|
||||
|
||||
-exists($$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++.so): \
|
||||
- ANDROID_CXX_STL_LIBS = -lc++
|
||||
-else: \
|
||||
- ANDROID_CXX_STL_LIBS = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc++.so.$$replace(ANDROID_PLATFORM, "android-", "")
|
||||
+ANDROID_USE_LLVM = true
|
||||
|
||||
-QMAKE_CFLAGS_OPTIMIZE_SIZE = -Oz
|
||||
+QMAKE_CFLAGS_OPTIMIZE_SIZE = -Oz
|
||||
+QMAKE_LIBDIR_POST =
|
||||
+QMAKE_LFLAGS =
|
||||
+QMAKE_LIBS_PRIVATE =
|
||||
+ANDROID_CXX_STL_LIBS =
|
||||
|
||||
include(../common/android-base-tail.conf)
|
||||
|
||||
--- old/qtbase/mkspecs/common/android-base-head.conf
|
||||
+++ new/qtbase/mkspecs/common/android-base-head.conf
|
||||
@@ -64,7 +58,6 @@
|
||||
}
|
||||
|
||||
CONFIG += $$ANDROID_PLATFORM
|
||||
-QMAKE_CFLAGS = -D__ANDROID_API__=$$replace(ANDROID_PLATFORM, "android-", "")
|
||||
|
||||
ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/
|
||||
|
||||
--- old/qtbase/mkspecs/common/android-base-tail.conf
|
||||
+++ new/qtbase/mkspecs/common/android-base-tail.conf
|
||||
@@ -6,22 +6,17 @@
|
||||
QMAKE_CFLAGS += -fstack-protector-strong -DANDROID
|
||||
|
||||
equals(ANDROID_TARGET_ARCH, armeabi-v7a): \
|
||||
- QMAKE_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fno-builtin-memmove
|
||||
+ QMAKE_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfp
|
||||
else: equals(ANDROID_TARGET_ARCH, armeabi): \
|
||||
- QMAKE_CFLAGS += -march=armv5te -mtune=xscale -msoft-float -fno-builtin-memmove
|
||||
-# -fno-builtin-memmove is used to workaround https://code.google.com/p/android/issues/detail?id=81692
|
||||
+ QMAKE_CFLAGS += -march=armv5te -mtune=xscale -msoft-float
|
||||
|
||||
QMAKE_CFLAGS_WARN_ON = -Wall -W
|
||||
QMAKE_CFLAGS_WARN_OFF =
|
||||
equals(ANDROID_TARGET_ARCH, armeabi-v7a) | equals(ANDROID_TARGET_ARCH, armeabi) {
|
||||
CONFIG += optimize_size
|
||||
QMAKE_CFLAGS_DEBUG = -g -marm -O0
|
||||
- equals(ANDROID_TARGET_ARCH, armeabi):if(equals(NDK_TOOLCHAIN_VERSION, 4.8)|equals(NDK_TOOLCHAIN_VERSION, 4.9)) {
|
||||
- DEFINES += QT_OS_ANDROID_GCC_48_WORKAROUND
|
||||
- } else {
|
||||
- QMAKE_CFLAGS_RELEASE += -mthumb
|
||||
- QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -mthumb
|
||||
- }
|
||||
+ QMAKE_CFLAGS_RELEASE += -mthumb
|
||||
+ QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -mthumb
|
||||
}
|
||||
|
||||
QMAKE_CFLAGS_SHLIB = -fPIC
|
||||
@@ -61,15 +56,12 @@
|
||||
QMAKE_RANLIB = $${CROSS_COMPILE}ranlib
|
||||
|
||||
QMAKE_INCDIR_POST =
|
||||
-QMAKE_LIBDIR_POST = $$ANDROID_SOURCES_CXX_STL_LIBDIR
|
||||
QMAKE_INCDIR_X11 =
|
||||
QMAKE_LIBDIR_X11 =
|
||||
QMAKE_INCDIR_OPENGL =
|
||||
QMAKE_LIBDIR_OPENGL =
|
||||
|
||||
QMAKE_LINK_SHLIB = $$QMAKE_LINK
|
||||
-QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH
|
||||
-equals(ANDROID_TARGET_ARCH, x86_64) QMAKE_LFLAGS += -L$$ANDROID_PLATFORM_ROOT_PATH/usr/lib64
|
||||
QMAKE_LFLAGS_APP = -Wl,--no-undefined -Wl,-z,noexecstack -shared
|
||||
QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared
|
||||
QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
|
Loading…
Add table
Reference in a new issue