mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
Merge #19867: build: document and cleanup Qt hacks
e1f2553e11
build: remove global_init_link_order from mac qt qmake.conf (fanquake)498fa16bea
build: document preprocessing steps in qt package (fanquake)bd5d9336d9
build: don't copy Info.plist.* into mkspec for macOS qt build (fanquake)bfd7e33b4b
build: remove plugin_no_soname from mac qt qmake.conf (fanquake)fdde4c7ce6
build: pass XCODE_VERSION through to qt macOS cross compile conf (fanquake)49473ef211
build: convert "echo" usage into a patch in qt package (fanquake) Pull request description: Follow up on removing `sed` usage in #19761. Also nice to revisit & cleanup before 5.15.x. ACKs for top commit: laanwj: Code review ACKe1f2553e11
Tree-SHA512: 4e6489d877aaa300f69e091d7117136da49611bd80afd45adfbd7ddeb5b3c9c76fb0f87a3249cbe63ba93129df56281fd4a9389daadc852211325c5ca9ac6567
This commit is contained in:
commit
e9a1c9fbde
3 changed files with 63 additions and 17 deletions
|
@ -12,6 +12,7 @@ $(package)_patches=fix_qt_pkgconfig.patch mac-qmake.conf fix_configure_mac.patch
|
|||
$(package)_patches+= fix_rcc_determinism.patch fix_riscv64_arch.patch xkb-default.patch no-xlib.patch
|
||||
$(package)_patches+= fix_android_qmake_conf.patch fix_android_jni_static.patch dont_hardcode_pwd.patch
|
||||
$(package)_patches+= freetype_back_compat.patch drop_lrelease_dependency.patch fix_powerpc_libpng.patch
|
||||
$(package)_patches+= fix_mingw_cross_compile.patch
|
||||
|
||||
# Update OSX_QT_TRANSLATIONS when this is updated
|
||||
$(package)_qttranslations_file_name=qttranslations-$($(package)_suffix)
|
||||
|
@ -124,6 +125,7 @@ $(package)_config_opts_darwin += -device-option MAC_SDK_VERSION=$(OSX_SDK_VERSIO
|
|||
$(package)_config_opts_darwin += -device-option CROSS_COMPILE="$(host)-"
|
||||
$(package)_config_opts_darwin += -device-option MAC_MIN_VERSION=$(OSX_MIN_VERSION)
|
||||
$(package)_config_opts_darwin += -device-option MAC_TARGET=$(host)
|
||||
$(package)_config_opts_darwin += -device-option XCODE_VERSION=$(XCODE_VERSION)
|
||||
endif
|
||||
|
||||
$(package)_config_opts_linux = -qt-xkbcommon-x11
|
||||
|
@ -192,33 +194,52 @@ define $(package)_extract_cmds
|
|||
tar --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttools_file_name) -C qttools
|
||||
endef
|
||||
|
||||
# Preprocessing steps work as follows:
|
||||
#
|
||||
# 1. Apply our patches to the extracted source. See each patch for more info.
|
||||
#
|
||||
# 2. Point to lrelease in qttools/bin/lrelease; otherwise Qt will look for it in
|
||||
# $(host)/native/bin/lrelease and not find it.
|
||||
#
|
||||
# 3. Create a macOS-Clang-Linux mkspec using our mac-qmake.conf.
|
||||
#
|
||||
# 4. After making a copy of the mkspec for the linux-arm-gnueabi host, named
|
||||
# bitcoin-linux-g++, replace instances of linux-arm-gnueabi with $(host). This
|
||||
# way we can generically support hosts like riscv64-linux-gnu, which Qt doesn't
|
||||
# ship a mkspec for. See it's usage in config_opts_* above.
|
||||
#
|
||||
# 5. Put our C, CXX and LD FLAGS into gcc-base.conf. Only used for non-host builds.
|
||||
#
|
||||
# 6. Do similar for the win32-g++ mkspec.
|
||||
#
|
||||
# 7. In clang.conf, swap out clang & clang++, for our compiler + flags. See #17466.
|
||||
#
|
||||
# 8. Adjust a regex in toolchain.prf, to accomodate Guix's usage of
|
||||
# CROSS_LIBRARY_PATH. See #15277.
|
||||
define $(package)_preprocess_cmds
|
||||
patch -p1 -i $($(package)_patch_dir)/freetype_back_compat.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_powerpc_libpng.patch && \
|
||||
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
|
||||
patch -p1 -i $($(package)_patch_dir)/drop_lrelease_dependency.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/dont_hardcode_pwd.patch &&\
|
||||
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_configure_mac.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_no_printer.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_rcc_determinism.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/xkb-default.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_android_qmake_conf.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_android_jni_static.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_riscv64_arch.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/no-xlib.patch && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_mingw_cross_compile.patch && \
|
||||
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \
|
||||
mkdir -p qtbase/mkspecs/macx-clang-linux &&\
|
||||
cp -f qtbase/mkspecs/macx-clang/Info.plist.lib qtbase/mkspecs/macx-clang-linux/ &&\
|
||||
cp -f qtbase/mkspecs/macx-clang/Info.plist.app qtbase/mkspecs/macx-clang-linux/ &&\
|
||||
cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\
|
||||
cp -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \
|
||||
cp -r qtbase/mkspecs/linux-arm-gnueabi-g++ qtbase/mkspecs/bitcoin-linux-g++ && \
|
||||
sed -i.old "s/arm-linux-gnueabi-/$(host)-/g" qtbase/mkspecs/bitcoin-linux-g++/qmake.conf && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_qt_pkgconfig.patch &&\
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_configure_mac.patch &&\
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_no_printer.patch &&\
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_rcc_determinism.patch &&\
|
||||
patch -p1 -i $($(package)_patch_dir)/xkb-default.patch &&\
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_android_qmake_conf.patch &&\
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_android_jni_static.patch &&\
|
||||
echo "!host_build: QMAKE_CFLAGS += $($(package)_cflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||
echo "!host_build: QMAKE_CXXFLAGS += $($(package)_cxxflags) $($(package)_cppflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||
echo "!host_build: QMAKE_LFLAGS += $($(package)_ldflags)" >> qtbase/mkspecs/common/gcc-base.conf && \
|
||||
patch -p1 -i $($(package)_patch_dir)/fix_riscv64_arch.patch &&\
|
||||
patch -p1 -i $($(package)_patch_dir)/no-xlib.patch &&\
|
||||
echo "QMAKE_LINK_OBJECT_MAX = 10" >> qtbase/mkspecs/win32-g++/qmake.conf &&\
|
||||
echo "QMAKE_LINK_OBJECT_SCRIPT = object_script" >> qtbase/mkspecs/win32-g++/qmake.conf &&\
|
||||
sed -i.old "s|QMAKE_CFLAGS += |!host_build: QMAKE_CFLAGS = $($(package)_cflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
|
||||
sed -i.old "s|QMAKE_CXXFLAGS += |!host_build: QMAKE_CXXFLAGS = $($(package)_cxxflags) $($(package)_cppflags) |" qtbase/mkspecs/win32-g++/qmake.conf && \
|
||||
sed -i.old "0,/^QMAKE_LFLAGS_/s|^QMAKE_LFLAGS_|!host_build: QMAKE_LFLAGS = $($(package)_ldflags)\n&|" qtbase/mkspecs/win32-g++/qmake.conf && \
|
||||
|
|
25
depends/patches/qt/fix_mingw_cross_compile.patch
Normal file
25
depends/patches/qt/fix_mingw_cross_compile.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
commit 5a992a549adfe5a587bbcd6cd2b2cee47d236e27
|
||||
Author: fanquake <fanquake@gmail.com>
|
||||
Date: Fri Sep 4 08:13:44 2020 +0800
|
||||
|
||||
Work around broken mingw cross-compilation
|
||||
|
||||
See upstream issues:
|
||||
https://bugreports.qt.io/browse/QTBUG-63637
|
||||
https://bugreports.qt.io/browse/QTBUG-63659
|
||||
https://codereview.qt-project.org/q/8bebded9
|
||||
|
||||
We should be able to drop this once we are building qt 5.10.1 or later.
|
||||
|
||||
Added in #12971.
|
||||
|
||||
diff --git a/qtbase/mkspecs/win32-g++/qmake.conf b/qtbase/mkspecs/win32-g++/qmake.conf
|
||||
index e071a0d1..ad229b10 100644
|
||||
--- a/qtbase/mkspecs/win32-g++/qmake.conf
|
||||
+++ b/qtbase/mkspecs/win32-g++/qmake.conf
|
||||
@@ -87,3 +87,5 @@ QMAKE_NM = $${CROSS_COMPILE}nm -P
|
||||
include(../common/angle.conf)
|
||||
|
||||
load(qt_config)
|
||||
+QMAKE_LINK_OBJECT_MAX = 10
|
||||
+QMAKE_LINK_OBJECT_SCRIPT = object_script
|
|
@ -1,12 +1,12 @@
|
|||
MAKEFILE_GENERATOR = UNIX
|
||||
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname absolute_library_soname
|
||||
CONFIG += app_bundle incremental lib_version_first absolute_library_soname
|
||||
QMAKE_INCREMENTAL_STYLE = sublib
|
||||
include(../common/macx.conf)
|
||||
include(../common/gcc-base-mac.conf)
|
||||
include(../common/clang.conf)
|
||||
include(../common/clang-mac.conf)
|
||||
QMAKE_MAC_SDK_PATH=$${MAC_SDK_PATH}
|
||||
QMAKE_XCODE_VERSION=4.3
|
||||
QMAKE_XCODE_VERSION = $${XCODE_VERSION}
|
||||
QMAKE_XCODE_DEVELOPER_PATH=/Developer
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = $${MAC_MIN_VERSION}
|
||||
QMAKE_MAC_SDK=macosx
|
||||
|
|
Loading…
Add table
Reference in a new issue