From 64ce42f4c320cbc4227e5b24ff6a72589ee886a1 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 17 Feb 2024 20:34:14 +0100 Subject: [PATCH] Enable cpp_winrt support in Qt 6 --- cppwinrt/mingw-w64/PKGBUILD | 80 +++++++++++++++++ .../layouts/mingw-w64-qt6-base.sh.ep | 14 ++- ...o-disabled-exceptions-with-cpp_winrt.patch | 1 + ...ng-exception-flags-of-plugin-targets.patch | 1 + ...rectly-against-runtimeobject-when-co.patch | 1 + ...r-error-about-missing-symbol-__sync_.patch | 1 + qt6-base/android-aarch64/PKGBUILD | 36 +++++--- ...o-disabled-exceptions-with-cpp_winrt.patch | 1 + ...ng-exception-flags-of-plugin-targets.patch | 1 + ...rectly-against-runtimeobject-when-co.patch | 1 + ...r-error-about-missing-symbol-__sync_.patch | 1 + qt6-base/mingw-w64-static/PKGBUILD | 50 +++++++---- ...Make-s-default-import-library-suffix.patch | 4 +- .../mingw-w64/0002-Fix-finding-D-Bus.patch | 4 +- ...03-Fix-using-static-PCRE2-and-DBus-1.patch | 4 +- ...ive-dependencies-of-static-libraries.patch | 4 +- ...orkaround-for-conflict-with-rpcndr.h.patch | 4 +- ...inding-static-MariaDB-client-library.patch | 4 +- ...-CMAKE_FIND_LIBRARY_SUFFIXES-to-pref.patch | 4 +- ...s-in-rasterization-code-using-setjmp.patch | 4 +- ...via-pkg-config-for-correct-handling-.patch | 4 +- ...-dependency-of-xcb-image-on-xcb-util.patch | 4 +- ...erties-of-PkgConfig-targets-for-glib.patch | 4 +- ...erties-of-PkgConfig-targets-for-Wayl.patch | 4 +- ...-preference-for-shared-libzstd-libra.patch | 4 +- ...o-disabled-exceptions-with-cpp_winrt.patch | 29 +++++++ ...ng-exception-flags-of-plugin-targets.patch | 31 +++++++ ...rectly-against-runtimeobject-when-co.patch | 45 ++++++++++ ...r-error-about-missing-symbol-__sync_.patch | 87 +++++++++++++++++++ qt6-base/mingw-w64/PKGBUILD | 50 +++++++---- ...o-disabled-exceptions-with-cpp_winrt.patch | 1 + ...ng-exception-flags-of-plugin-targets.patch | 1 + ...rectly-against-runtimeobject-when-co.patch | 1 + ...r-error-about-missing-symbol-__sync_.patch | 1 + qt6-base/static-compat/PKGBUILD | 36 +++++--- 35 files changed, 434 insertions(+), 88 deletions(-) create mode 100644 cppwinrt/mingw-w64/PKGBUILD create mode 120000 qt6-base/android-aarch64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch create mode 120000 qt6-base/android-aarch64/0015-Fix-setting-exception-flags-of-plugin-targets.patch create mode 120000 qt6-base/android-aarch64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch create mode 120000 qt6-base/android-aarch64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch create mode 120000 qt6-base/mingw-w64-static/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch create mode 120000 qt6-base/mingw-w64-static/0015-Fix-setting-exception-flags-of-plugin-targets.patch create mode 120000 qt6-base/mingw-w64-static/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch create mode 120000 qt6-base/mingw-w64-static/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch create mode 100644 qt6-base/mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch create mode 100644 qt6-base/mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch create mode 100644 qt6-base/mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch create mode 100644 qt6-base/mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch create mode 120000 qt6-base/static-compat/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch create mode 120000 qt6-base/static-compat/0015-Fix-setting-exception-flags-of-plugin-targets.patch create mode 120000 qt6-base/static-compat/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch create mode 120000 qt6-base/static-compat/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch diff --git a/cppwinrt/mingw-w64/PKGBUILD b/cppwinrt/mingw-w64/PKGBUILD new file mode 100644 index 00000000..72bceca7 --- /dev/null +++ b/cppwinrt/mingw-w64/PKGBUILD @@ -0,0 +1,80 @@ +# Maintainer: Martchus + +# All my PKGBUILDs are managed at https://github.com/Martchus/PKGBUILDs where +# you also find the URL of a binary repository. + +_realname=cppwinrt +pkgname=mingw-w64-${_realname} +pkgver=2.0.240111.5 +_windows_rs_ver=0.52.0 +pkgrel=1 +arch=('any') +pkgdesc='Common C++ classes and routines such as argument parser, IO and conversion utilities (mingw-w64)' +url='https://aka.ms/cppwinrt' +license=('spdx:MIT') +depends=('mingw-w64-crt') +makedepends=('mingw-w64-gcc' 'mingw-w64-cmake' 'mingw-w64-wine' 'ninja' 'git') +source=("https://github.com/microsoft/cppwinrt/archive/${pkgver}/${_realname}-${pkgver}.tar.gz" + "https://github.com/microsoft/windows-rs/archive/${_windows_rs_ver}/windows-rs-${_windows_rs_ver}.tar.gz") +sha256sums=('5ec49e9de3467161ef93185f0c627be6ed37200f19e18ac79e29e47fbeb69d0d' + 'fa6f1ad3677ee46ded34ad8811fc365a783d9aa414206a60b52dff261db85ef3') +options=(!buildflags staticlibs !strip !emptydirs) + +_architectures=('i686-w64-mingw32' 'x86_64-w64-mingw32') + +build() { + cd ${_realname}-${pkgver} + for _arch in "${_architectures[@]}"; do + mkdir -p "build-${_arch}" && pushd "build-${_arch}" + # build cppwinrt.exe + ${_arch}-cmake \ + -G Ninja \ + -DCMAKE_BUILD_TYPE:STRING='Release' \ + -DCMAKE_INSTALL_PREFIX="/usr/${_arch}" \ + -DCPPWINRT_BUILD_VERSION="${pkgver}" \ + -DBUILD_TESTING=OFF \ + ../ + cmake --build . + + # add Windows metadata + # note: The metadata comes from https://github.com/microsoft/win32metadata. However, at this point + # this build script cannot make use of that. Instead, one has to just point it to the metadata files + # usually found under C:/Windows/System32/WinMetadata via the WIN_METADATA environment variable. + input=() + if [[ -d $WIN_METADATA ]]; then + ln -s "$WIN_METADATA" win-metadata + input+=(-input win-metadata) + else + echo "You need to provide metadata files usually found under C:/Windows/System32/WinMetadata on a +Windows system and point this build script to it via the WIN_METADATA environment variable. +Otherwise this package will not container all headers that are required by e.g. Qt 6." + fi + + # add rust metadata provided by https://github.com/microsoft/windows-rs + echo "SPDX-License-Identifier: MIT OR Apache-2.0 +SPDX-FileCopyrightText: Copyright (c) Microsoft Corporation + +Generated using .winmd files from https://github.com/microsoft/windows-rs +" > license.txt + ln -s "${srcdir}/windows-rs-${_windows_rs_ver}/crates/libs/bindgen/default" rust-metadata + input+=(-license license.txt -input rust-metadata) + + # generate headers using cppwinrt.exe + ${_arch}-wine cppwinrt.exe "${input[@]}" -output "output" + popd + done +} + +package() { + cd ${_realname}-${pkgver} + for _arch in "${_architectures[@]}"; do + pushd "build-${_arch}" + DESTDIR="${pkgdir}" cmake --install . + mkdir "${pkgdir}/usr/${_arch}/include" + cp -vr --target-directory="${pkgdir}/usr/${_arch}/include" output/* + ${_arch}-strip --strip-all "$pkgdir"/usr/${_arch}/bin/*.exe + popd + done + + install -Dm644 "${srcdir}/${_realname}-${pkgver}/LICENSE" "${pkgdir}/share/licenses/${pkgname}/LICENSE" +} diff --git a/devel/generator/templates/layouts/mingw-w64-qt6-base.sh.ep b/devel/generator/templates/layouts/mingw-w64-qt6-base.sh.ep index 36923b0d..6211a598 100644 --- a/devel/generator/templates/layouts/mingw-w64-qt6-base.sh.ep +++ b/devel/generator/templates/layouts/mingw-w64-qt6-base.sh.ep @@ -16,12 +16,12 @@ pkgname=<%= $package_name %> _qtver=6.6.2 pkgver=${_qtver/-/} -pkgrel=1 +pkgrel=2 arch=(any) url='https://www.qt.io' license=(GPL3 LGPL3 FDL custom) pkgdesc='A cross-platform application and UI framework (mingw-w64)' -depends=('mingw-w64-crt' 'mingw-w64-zlib' 'mingw-w64-libjpeg-turbo' 'mingw-w64-sqlite' +depends=('mingw-w64-crt' 'mingw-w64-cppwinrt' 'mingw-w64-zlib' 'mingw-w64-libjpeg-turbo' 'mingw-w64-sqlite' 'mingw-w64-libpng' 'mingw-w64-openssl' 'mingw-w64-dbus' 'mingw-w64-harfbuzz' 'mingw-w64-brotli' 'mingw-w64-pcre2' 'mingw-w64-zstd') makedepends=('mingw-w64-cmake<%= $static_suffix %>' 'mingw-w64-postgresql' 'mingw-w64-mariadb-connector-c' @@ -58,12 +58,22 @@ prepare () { build() { for _arch in ${_architectures}; do export PKG_CONFIG=/usr/bin/$_arch-pkg-config + + local _enable_winrt_support=ON + if [[ ! -e /usr/${_arch}/include/winrt/Windows.Foundation.h ]]; then + echo "cppwinrt headers seem incomplete, disabling FEATURE_cpp_winrt" + _enable_winrt_support=OFF + fi + $_arch-cmake<%== $static_suffix %> -G Ninja -B build-$_arch -S $_pkgfqn \\ + -DCMAKE_CXX_STANDARD=20 \\ + -DCMAKE_CXX_FLAGS="$CXX_FLAGS -std=c++20" \\ % if ($static_variant) { -DCMAKE_INSTALL_PREFIX:PATH="/usr/$_arch/static" \\ -DFEATURE_static_runtime=ON \\ -DFEATURE_openssl_linked=ON \\ % } + -DFEATURE_cpp_winrt=$_enable_winrt_support \\ -DFEATURE_pkg_config=ON \\ -DFEATURE_system_pcre2=ON \\ -DFEATURE_system_freetype=ON \\ diff --git a/qt6-base/android-aarch64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch b/qt6-base/android-aarch64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch new file mode 120000 index 00000000..24c46d9b --- /dev/null +++ b/qt6-base/android-aarch64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch @@ -0,0 +1 @@ +../mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch \ No newline at end of file diff --git a/qt6-base/android-aarch64/0015-Fix-setting-exception-flags-of-plugin-targets.patch b/qt6-base/android-aarch64/0015-Fix-setting-exception-flags-of-plugin-targets.patch new file mode 120000 index 00000000..3c32d474 --- /dev/null +++ b/qt6-base/android-aarch64/0015-Fix-setting-exception-flags-of-plugin-targets.patch @@ -0,0 +1 @@ +../mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch \ No newline at end of file diff --git a/qt6-base/android-aarch64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch b/qt6-base/android-aarch64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch new file mode 120000 index 00000000..4271eebe --- /dev/null +++ b/qt6-base/android-aarch64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch @@ -0,0 +1 @@ +../mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch \ No newline at end of file diff --git a/qt6-base/android-aarch64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch b/qt6-base/android-aarch64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch new file mode 120000 index 00000000..5935fa25 --- /dev/null +++ b/qt6-base/android-aarch64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch @@ -0,0 +1 @@ +../mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch \ No newline at end of file diff --git a/qt6-base/android-aarch64/PKGBUILD b/qt6-base/android-aarch64/PKGBUILD index c243ecba..a55a4cdb 100644 --- a/qt6-base/android-aarch64/PKGBUILD +++ b/qt6-base/android-aarch64/PKGBUILD @@ -40,21 +40,29 @@ source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/subm '0010-Fix-dependency-of-xcb-image-on-xcb-util.patch' '0011-Allow-using-properties-of-PkgConfig-targets-for-glib.patch' '0012-Allow-using-properties-of-PkgConfig-targets-for-Wayl.patch' - '0013-Allow-overriding-preference-for-shared-libzstd-libra.patch') + '0013-Allow-overriding-preference-for-shared-libzstd-libra.patch' + '0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch' + '0015-Fix-setting-exception-flags-of-plugin-targets.patch' + '0016-Link-corelib-correctly-against-runtimeobject-when-co.patch' + '0017-Workaround-linker-error-about-missing-symbol-__sync_.patch') sha256sums=('b89b426b9852a17d3e96230ab0871346574d635c7914480a2a27f98ff942677b' - '5337bd308d6c6342b1a61cb45a6e435d706c2eb751ab93c9118322165370809a' - 'f1e013452ca62cccf9d17682701f67886173eb24e53b94ea0fe99a5edcb34d7a' - '401d9275e9832c5000dd2b410158289b0cf853319da1a5ee97130598e28c0599' - '404dc4efb1bdbdcaee2f0f8d561edf1b55a1050fab8e9a80c8eaf1c8aa816be2' - 'bfae4a5fb06153204e2b731ade3f169a6f4b5b44769f7b7cd420cf9d492ff830' - '6bbf063870a45dd58be5ec849195b553ce8697985cca8441c18e5baccf67d449' - '843b63b105767bf26c3d2e0fb65d4a9021aae598b7fbae8f501e848551e6bc6c' - 'a9c705a909876e20e0da2bf1137020b509e59fa25bb759831ce23f9b46576ffb' - '6935ba318b0af86c40fca397e84046d004a23422b0c74187808133e5b1539b8c' - 'ba9fb48fb7ddeaa665e81136fa33377ba4fbf1efeb787c229cb091c33c1b31c6' - '6fd11b4bdd602f0b17cc75f8fc0e999119d2606e16e6ebca5804865a4094c55c' - 'a589ff90a9be1c4b973e632f4b7419505a89406221a32c432aa9e72d59c8ef8f' - '70f35a369aa9ee3d5b69ed036ee1091efc4535d727f6d05dd5737d2b81efe707') + '7691272ccd272a6b0a750777a7d8d738588145cefce1f250d6ad756fcf1fe3d4' + '7dcb792c97098b44857e4932088b4164a85dc702f5f519654937ee38c98e5ffc' + '140904d07d65e77080040337536f4ccd5285672e0d8867a3807a8b1f80c430a5' + '17a09b620fc06518167f04fc5b28bd453c58ca3d32c70ef10e09802160843639' + 'eeb14b5298ec1b9b564ee78edc41670470e0efa68755f954b79ac83c684ea387' + '5f1780805561985c9f575dbbefe704f5c61b622ce75bb4a30532f51c95ae1436' + 'adc1b10e565b10944951df9e10ce6999c0210071b75b7a4dd230f617d88aab4f' + '54646442b7a00aa59d6be6ec7be95b2424fb4b152b0ee801451b38e8252c2c2f' + 'a8971b7c21da5ed1f7fcd02a69d4f1491303d991b0f84b83ed97367bb9778247' + '9e97d8c5487c9212ffb00a1e90c7ccd11cb400696b77c94306e65360d2c11ede' + '6d31790b364ce516d82b78f78146076d1f6b8fdf9adaa90c63aeb4cfb8dc00ee' + '7be1875458af031925d2e91e262782f15801f6f5deff8babd0685037a7588d1f' + 'a73a8fbdbd14a132e97a58abf0b58270d2af43d86ba238a236265d1341e84d06' + 'c7c30f1da326b07abae0ab1c3f257cee0691c8b1ca26d1266978e77d6a769272' + 'a316377d963838af16c02645b88ac16cb49714e6df998a44675f8536dea72301' + 'fd77316b643ebde5bb607e871c1d7983273b1292798d510c848aa2873037ab9e' + '120e463090b99b70235a722fb1a671b7b742cb77f5c400a3856da534fcfae356') prepare () { cd $_pkgfqn diff --git a/qt6-base/mingw-w64-static/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch b/qt6-base/mingw-w64-static/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch new file mode 120000 index 00000000..24c46d9b --- /dev/null +++ b/qt6-base/mingw-w64-static/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch @@ -0,0 +1 @@ +../mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch \ No newline at end of file diff --git a/qt6-base/mingw-w64-static/0015-Fix-setting-exception-flags-of-plugin-targets.patch b/qt6-base/mingw-w64-static/0015-Fix-setting-exception-flags-of-plugin-targets.patch new file mode 120000 index 00000000..3c32d474 --- /dev/null +++ b/qt6-base/mingw-w64-static/0015-Fix-setting-exception-flags-of-plugin-targets.patch @@ -0,0 +1 @@ +../mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch \ No newline at end of file diff --git a/qt6-base/mingw-w64-static/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch b/qt6-base/mingw-w64-static/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch new file mode 120000 index 00000000..4271eebe --- /dev/null +++ b/qt6-base/mingw-w64-static/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch @@ -0,0 +1 @@ +../mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch \ No newline at end of file diff --git a/qt6-base/mingw-w64-static/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch b/qt6-base/mingw-w64-static/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch new file mode 120000 index 00000000..5935fa25 --- /dev/null +++ b/qt6-base/mingw-w64-static/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch @@ -0,0 +1 @@ +../mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch \ No newline at end of file diff --git a/qt6-base/mingw-w64-static/PKGBUILD b/qt6-base/mingw-w64-static/PKGBUILD index 53dc7015..4cc6f4f5 100644 --- a/qt6-base/mingw-w64-static/PKGBUILD +++ b/qt6-base/mingw-w64-static/PKGBUILD @@ -13,12 +13,12 @@ pkgname=mingw-w64-qt6-base-static _qtver=6.6.2 pkgver=${_qtver/-/} -pkgrel=1 +pkgrel=2 arch=(any) url='https://www.qt.io' license=(GPL3 LGPL3 FDL custom) pkgdesc='A cross-platform application and UI framework (mingw-w64)' -depends=('mingw-w64-crt' 'mingw-w64-zlib' 'mingw-w64-libjpeg-turbo' 'mingw-w64-sqlite' +depends=('mingw-w64-crt' 'mingw-w64-cppwinrt' 'mingw-w64-zlib' 'mingw-w64-libjpeg-turbo' 'mingw-w64-sqlite' 'mingw-w64-libpng' 'mingw-w64-openssl' 'mingw-w64-dbus' 'mingw-w64-harfbuzz' 'mingw-w64-brotli' 'mingw-w64-pcre2' 'mingw-w64-zstd') makedepends=('mingw-w64-cmake-static' 'mingw-w64-postgresql' 'mingw-w64-mariadb-connector-c' @@ -43,21 +43,29 @@ source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/subm '0010-Fix-dependency-of-xcb-image-on-xcb-util.patch' '0011-Allow-using-properties-of-PkgConfig-targets-for-glib.patch' '0012-Allow-using-properties-of-PkgConfig-targets-for-Wayl.patch' - '0013-Allow-overriding-preference-for-shared-libzstd-libra.patch') + '0013-Allow-overriding-preference-for-shared-libzstd-libra.patch' + '0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch' + '0015-Fix-setting-exception-flags-of-plugin-targets.patch' + '0016-Link-corelib-correctly-against-runtimeobject-when-co.patch' + '0017-Workaround-linker-error-about-missing-symbol-__sync_.patch') sha256sums=('b89b426b9852a17d3e96230ab0871346574d635c7914480a2a27f98ff942677b' - '5337bd308d6c6342b1a61cb45a6e435d706c2eb751ab93c9118322165370809a' - 'f1e013452ca62cccf9d17682701f67886173eb24e53b94ea0fe99a5edcb34d7a' - '401d9275e9832c5000dd2b410158289b0cf853319da1a5ee97130598e28c0599' - '404dc4efb1bdbdcaee2f0f8d561edf1b55a1050fab8e9a80c8eaf1c8aa816be2' - 'bfae4a5fb06153204e2b731ade3f169a6f4b5b44769f7b7cd420cf9d492ff830' - '6bbf063870a45dd58be5ec849195b553ce8697985cca8441c18e5baccf67d449' - '843b63b105767bf26c3d2e0fb65d4a9021aae598b7fbae8f501e848551e6bc6c' - 'a9c705a909876e20e0da2bf1137020b509e59fa25bb759831ce23f9b46576ffb' - '6935ba318b0af86c40fca397e84046d004a23422b0c74187808133e5b1539b8c' - 'ba9fb48fb7ddeaa665e81136fa33377ba4fbf1efeb787c229cb091c33c1b31c6' - '6fd11b4bdd602f0b17cc75f8fc0e999119d2606e16e6ebca5804865a4094c55c' - 'a589ff90a9be1c4b973e632f4b7419505a89406221a32c432aa9e72d59c8ef8f' - '70f35a369aa9ee3d5b69ed036ee1091efc4535d727f6d05dd5737d2b81efe707') + '7691272ccd272a6b0a750777a7d8d738588145cefce1f250d6ad756fcf1fe3d4' + '7dcb792c97098b44857e4932088b4164a85dc702f5f519654937ee38c98e5ffc' + '140904d07d65e77080040337536f4ccd5285672e0d8867a3807a8b1f80c430a5' + '17a09b620fc06518167f04fc5b28bd453c58ca3d32c70ef10e09802160843639' + 'eeb14b5298ec1b9b564ee78edc41670470e0efa68755f954b79ac83c684ea387' + '5f1780805561985c9f575dbbefe704f5c61b622ce75bb4a30532f51c95ae1436' + 'adc1b10e565b10944951df9e10ce6999c0210071b75b7a4dd230f617d88aab4f' + '54646442b7a00aa59d6be6ec7be95b2424fb4b152b0ee801451b38e8252c2c2f' + 'a8971b7c21da5ed1f7fcd02a69d4f1491303d991b0f84b83ed97367bb9778247' + '9e97d8c5487c9212ffb00a1e90c7ccd11cb400696b77c94306e65360d2c11ede' + '6d31790b364ce516d82b78f78146076d1f6b8fdf9adaa90c63aeb4cfb8dc00ee' + '7be1875458af031925d2e91e262782f15801f6f5deff8babd0685037a7588d1f' + 'a73a8fbdbd14a132e97a58abf0b58270d2af43d86ba238a236265d1341e84d06' + 'c7c30f1da326b07abae0ab1c3f257cee0691c8b1ca26d1266978e77d6a769272' + 'a316377d963838af16c02645b88ac16cb49714e6df998a44675f8536dea72301' + 'fd77316b643ebde5bb607e871c1d7983273b1292798d510c848aa2873037ab9e' + '120e463090b99b70235a722fb1a671b7b742cb77f5c400a3856da534fcfae356') _architectures='i686-w64-mingw32 x86_64-w64-mingw32' @@ -74,10 +82,20 @@ prepare () { build() { for _arch in ${_architectures}; do export PKG_CONFIG=/usr/bin/$_arch-pkg-config + + local _enable_winrt_support=ON + if [[ ! -e /usr/${_arch}/include/winrt/Windows.Foundation.h ]]; then + echo "cppwinrt headers seem incomplete, disabling FEATURE_cpp_winrt" + _enable_winrt_support=OFF + fi + $_arch-cmake-static -G Ninja -B build-$_arch -S $_pkgfqn \ + -DCMAKE_CXX_STANDARD=20 \ + -DCMAKE_CXX_FLAGS="$CXX_FLAGS -std=c++20" \ -DCMAKE_INSTALL_PREFIX:PATH="/usr/$_arch/static" \ -DFEATURE_static_runtime=ON \ -DFEATURE_openssl_linked=ON \ + -DFEATURE_cpp_winrt=$_enable_winrt_support \ -DFEATURE_pkg_config=ON \ -DFEATURE_system_pcre2=ON \ -DFEATURE_system_freetype=ON \ diff --git a/qt6-base/mingw-w64/0001-Use-CMake-s-default-import-library-suffix.patch b/qt6-base/mingw-w64/0001-Use-CMake-s-default-import-library-suffix.patch index a2906473..883416dd 100644 --- a/qt6-base/mingw-w64/0001-Use-CMake-s-default-import-library-suffix.patch +++ b/qt6-base/mingw-w64/0001-Use-CMake-s-default-import-library-suffix.patch @@ -1,7 +1,7 @@ From ab531280437a9ea29a579c6cf6303850b3cf3af3 Mon Sep 17 00:00:00 2001 From: Martchus Date: Thu, 5 Nov 2020 22:08:10 +0100 -Subject: [PATCH 01/13] Use CMake's default import library suffix +Subject: [PATCH 01/17] Use CMake's default import library suffix Change-Id: I3dbedaec74683e5bfd008f7f2fd1e046dfb921b2 --- @@ -110,5 +110,5 @@ index e082e586a6..791c580c73 100644 get_target_property(target_type ${target} TYPE) if(target_type STREQUAL "STATIC_LIBRARY") -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0002-Fix-finding-D-Bus.patch b/qt6-base/mingw-w64/0002-Fix-finding-D-Bus.patch index afdae301..e16b57cd 100644 --- a/qt6-base/mingw-w64/0002-Fix-finding-D-Bus.patch +++ b/qt6-base/mingw-w64/0002-Fix-finding-D-Bus.patch @@ -1,7 +1,7 @@ From df5d77a3a0ab5cd0c4237a65cbdedc0825910544 Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 7 Oct 2020 12:13:37 +0200 -Subject: [PATCH 02/13] Fix finding D-Bus +Subject: [PATCH 02/17] Fix finding D-Bus Change-Id: Ie21eb9cbc6b1b5d9c8b34eea46f54718e5926986 --- @@ -20,5 +20,5 @@ index e2a58790c4..8e0ed81f89 100644 + set_property(TARGET dbus-1 PROPERTY IMPORTED_IMPLIB ${DBus1_LIBRARY}) +endif() -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0003-Fix-using-static-PCRE2-and-DBus-1.patch b/qt6-base/mingw-w64/0003-Fix-using-static-PCRE2-and-DBus-1.patch index e6146437..c58beed5 100644 --- a/qt6-base/mingw-w64/0003-Fix-using-static-PCRE2-and-DBus-1.patch +++ b/qt6-base/mingw-w64/0003-Fix-using-static-PCRE2-and-DBus-1.patch @@ -1,7 +1,7 @@ From a061819f2b68392ecff422c54d80cedb529acc15 Mon Sep 17 00:00:00 2001 From: Martchus Date: Thu, 5 Nov 2020 21:13:19 +0100 -Subject: [PATCH 03/13] Fix using static PCRE2 and DBus-1 +Subject: [PATCH 03/17] Fix using static PCRE2 and DBus-1 When making a static build of Qt we're using the static version of these libraries and must define the corresponding macros. @@ -44,5 +44,5 @@ index e3008be761..9c745c16c4 100644 # include #else -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0004-Fix-transitive-dependencies-of-static-libraries.patch b/qt6-base/mingw-w64/0004-Fix-transitive-dependencies-of-static-libraries.patch index 173063a4..25675b41 100644 --- a/qt6-base/mingw-w64/0004-Fix-transitive-dependencies-of-static-libraries.patch +++ b/qt6-base/mingw-w64/0004-Fix-transitive-dependencies-of-static-libraries.patch @@ -1,7 +1,7 @@ From 76a37b0e210b0199388d1ddf8697ba2d055db32c Mon Sep 17 00:00:00 2001 From: Martchus Date: Thu, 5 Nov 2020 21:59:33 +0100 -Subject: [PATCH 04/13] Fix transitive dependencies (of static libraries) +Subject: [PATCH 04/17] Fix transitive dependencies (of static libraries) The dependencies of these libraries are not reliably picked up by their corresponding find modules. This change allows adding the required @@ -132,5 +132,5 @@ index d392f4dfa5..165c345e1b 100644 Qt::CorePrivate Qt::SqlPrivate -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0005-Fix-libjpeg-workaround-for-conflict-with-rpcndr.h.patch b/qt6-base/mingw-w64/0005-Fix-libjpeg-workaround-for-conflict-with-rpcndr.h.patch index b15d9d68..66b81b0a 100644 --- a/qt6-base/mingw-w64/0005-Fix-libjpeg-workaround-for-conflict-with-rpcndr.h.patch +++ b/qt6-base/mingw-w64/0005-Fix-libjpeg-workaround-for-conflict-with-rpcndr.h.patch @@ -1,7 +1,7 @@ From a17fb43c9257fe1e7a1c57f7c968103ed4ee4c7b Mon Sep 17 00:00:00 2001 From: Martchus Date: Mon, 2 Nov 2020 13:47:45 +0100 -Subject: [PATCH 05/13] Fix libjpeg workaround for conflict with rpcndr.h +Subject: [PATCH 05/17] Fix libjpeg workaround for conflict with rpcndr.h Otherwise it won't compile against mingw-w64-libjpeg-turbo. This version of libjpeg seems to take care of the conflict already as long as jconfig.h is @@ -25,5 +25,5 @@ index 0d72ba01d0..a706fb4cea 100644 #ifdef const # undef const // remove crazy C hackery in jconfig.h -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0006-Support-finding-static-MariaDB-client-library.patch b/qt6-base/mingw-w64/0006-Support-finding-static-MariaDB-client-library.patch index 582dac93..761a1c2d 100644 --- a/qt6-base/mingw-w64/0006-Support-finding-static-MariaDB-client-library.patch +++ b/qt6-base/mingw-w64/0006-Support-finding-static-MariaDB-client-library.patch @@ -1,7 +1,7 @@ From ef17546b4c93fdc922db5655586149af8137e99c Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 8 Nov 2020 00:33:12 +0100 -Subject: [PATCH 06/13] Support finding static MariaDB client library +Subject: [PATCH 06/17] Support finding static MariaDB client library We need to reverse the order to look for mariadb first (and only then for mysql) because otherwise it would pick up the static library @@ -34,5 +34,5 @@ index b61d0107f2..6fb26e51f1 100644 endif() -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0007-Allow-overriding-CMAKE_FIND_LIBRARY_SUFFIXES-to-pref.patch b/qt6-base/mingw-w64/0007-Allow-overriding-CMAKE_FIND_LIBRARY_SUFFIXES-to-pref.patch index b9522d74..1902664b 100644 --- a/qt6-base/mingw-w64/0007-Allow-overriding-CMAKE_FIND_LIBRARY_SUFFIXES-to-pref.patch +++ b/qt6-base/mingw-w64/0007-Allow-overriding-CMAKE_FIND_LIBRARY_SUFFIXES-to-pref.patch @@ -1,7 +1,7 @@ From dc4b23c50ba75b9bffc397c38f73496d7bf04100 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 8 Nov 2020 00:34:09 +0100 -Subject: [PATCH 07/13] Allow overriding CMAKE_FIND_LIBRARY_SUFFIXES to prefer +Subject: [PATCH 07/17] Allow overriding CMAKE_FIND_LIBRARY_SUFFIXES to prefer static libraries Change-Id: Ibb688ac503ecdf1dd3bd838890efdfc01bf706aa @@ -25,5 +25,5 @@ index 129f1ebb77..9bae62d879 100644 # This depends on qt_internal_read_repo_dependencies existing. -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0008-Fix-crashes-in-rasterization-code-using-setjmp.patch b/qt6-base/mingw-w64/0008-Fix-crashes-in-rasterization-code-using-setjmp.patch index a5176e1a..fd4e6950 100644 --- a/qt6-base/mingw-w64/0008-Fix-crashes-in-rasterization-code-using-setjmp.patch +++ b/qt6-base/mingw-w64/0008-Fix-crashes-in-rasterization-code-using-setjmp.patch @@ -1,7 +1,7 @@ From 6a3ba9e734570288c5a6127c201524c92149dff9 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 26 Jun 2021 22:24:12 +0200 -Subject: [PATCH 08/13] Fix crashes in rasterization code using setjmp +Subject: [PATCH 08/17] Fix crashes in rasterization code using setjmp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -248,5 +248,5 @@ index 33ed2fd5c7..658547ce4a 100644 "Description": "FreeType is a freely available software library to render fonts.", "Homepage": "http://www.freetype.org", -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0009-Find-fontconfig-via-pkg-config-for-correct-handling-.patch b/qt6-base/mingw-w64/0009-Find-fontconfig-via-pkg-config-for-correct-handling-.patch index b5a60af7..43e82a5f 100644 --- a/qt6-base/mingw-w64/0009-Find-fontconfig-via-pkg-config-for-correct-handling-.patch +++ b/qt6-base/mingw-w64/0009-Find-fontconfig-via-pkg-config-for-correct-handling-.patch @@ -1,7 +1,7 @@ From d4c8e46503f4037e6203dbfd31106ec16ffce434 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 24 Apr 2022 23:00:27 +0200 -Subject: [PATCH 09/13] Find fontconfig via pkg-config for correct handling of +Subject: [PATCH 09/17] Find fontconfig via pkg-config for correct handling of its dependencies CMake's own find module unforunately does not consider fontconfig's deps so @@ -59,5 +59,5 @@ index 222073adcd..27cdac0dbf 100644 qt_find_package(gbm PROVIDED_TARGETS gbm::gbm MODULE_NAME gui QMAKE_LIB gbm) qt_find_package(WrapSystemHarfbuzz 2.6.0 PROVIDED_TARGETS WrapSystemHarfbuzz::WrapSystemHarfbuzz MODULE_NAME gui QMAKE_LIB harfbuzz) -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0010-Fix-dependency-of-xcb-image-on-xcb-util.patch b/qt6-base/mingw-w64/0010-Fix-dependency-of-xcb-image-on-xcb-util.patch index c2d1f7ca..91bb619b 100644 --- a/qt6-base/mingw-w64/0010-Fix-dependency-of-xcb-image-on-xcb-util.patch +++ b/qt6-base/mingw-w64/0010-Fix-dependency-of-xcb-image-on-xcb-util.patch @@ -1,7 +1,7 @@ From af9caa1b9cc22f2534755d0754404f8b20a0c82c Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 24 Apr 2022 23:49:36 +0200 -Subject: [PATCH 10/13] Fix dependency of xcb-image on xcb-util +Subject: [PATCH 10/17] Fix dependency of xcb-image on xcb-util Considering this linker error, xcb-image apparently depends on xcb-util: ``` @@ -44,5 +44,5 @@ index 26b9bf8963..0ae21f774c 100644 set(XCB_XFIXES_component_deps XCB RENDER SHAPE) set(XCB_XVMC_component_deps XCB XV) -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0011-Allow-using-properties-of-PkgConfig-targets-for-glib.patch b/qt6-base/mingw-w64/0011-Allow-using-properties-of-PkgConfig-targets-for-glib.patch index 68b49d0f..12967cb5 100644 --- a/qt6-base/mingw-w64/0011-Allow-using-properties-of-PkgConfig-targets-for-glib.patch +++ b/qt6-base/mingw-w64/0011-Allow-using-properties-of-PkgConfig-targets-for-glib.patch @@ -1,7 +1,7 @@ From c67988c5f36623d9ac326bbb86fdcea4265da815 Mon Sep 17 00:00:00 2001 From: Martchus Date: Tue, 26 Apr 2022 20:16:31 +0200 -Subject: [PATCH 11/13] Allow using properties of PkgConfig targets for glib2 +Subject: [PATCH 11/17] Allow using properties of PkgConfig targets for glib2 to handle deps of static glib2 Change-Id: I37d20256d17ae9cc0775e32aa479f1e433ece908 @@ -70,5 +70,5 @@ index a6a16b494f..a5da57824c 100644 set_package_properties(GLIB2 PROPERTIES URL "https://wiki.gnome.org/Projects/GLib" -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0012-Allow-using-properties-of-PkgConfig-targets-for-Wayl.patch b/qt6-base/mingw-w64/0012-Allow-using-properties-of-PkgConfig-targets-for-Wayl.patch index bb6136e6..aaa8262e 100644 --- a/qt6-base/mingw-w64/0012-Allow-using-properties-of-PkgConfig-targets-for-Wayl.patch +++ b/qt6-base/mingw-w64/0012-Allow-using-properties-of-PkgConfig-targets-for-Wayl.patch @@ -1,7 +1,7 @@ From 003a0762443d8b8cfdf8a33c2a15163ac5c4d346 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 1 May 2022 23:28:26 +0200 -Subject: [PATCH 12/13] Allow using properties of PkgConfig targets for Wayland +Subject: [PATCH 12/17] Allow using properties of PkgConfig targets for Wayland to handle deps of static libs Change-Id: I2a4acf0acaf5a363d551384bb4c33c48a3792f27 @@ -49,5 +49,5 @@ index 233cc88d02..875c71377c 100644 set_package_properties(Wayland PROPERTIES URL "http://wayland.freedesktop.org" -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0013-Allow-overriding-preference-for-shared-libzstd-libra.patch b/qt6-base/mingw-w64/0013-Allow-overriding-preference-for-shared-libzstd-libra.patch index b1fb5ecf..de1aa6cf 100644 --- a/qt6-base/mingw-w64/0013-Allow-overriding-preference-for-shared-libzstd-libra.patch +++ b/qt6-base/mingw-w64/0013-Allow-overriding-preference-for-shared-libzstd-libra.patch @@ -1,7 +1,7 @@ From ee14993094cc62d1a819bfe37f4447512f2a265c Mon Sep 17 00:00:00 2001 From: Martchus Date: Tue, 7 Nov 2023 23:58:54 +0100 -Subject: [PATCH 13/13] Allow overriding preference for shared libzstd library +Subject: [PATCH 13/17] Allow overriding preference for shared libzstd library As of 3f45905953d57e0174059d7d9d6bc75c3c1c406c Qt prefers the shared zstd library. This breaks static builds. With this change the static library is @@ -34,5 +34,5 @@ index fb424236b8..12a3178518 100644 if(NOT TARGET WrapZSTD::WrapZSTD) add_library(WrapZSTD::WrapZSTD INTERFACE IMPORTED) -- -2.43.0 +2.43.2 diff --git a/qt6-base/mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch b/qt6-base/mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch new file mode 100644 index 00000000..7edd6f4a --- /dev/null +++ b/qt6-base/mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch @@ -0,0 +1,29 @@ +From 4ec6da0dcc50cc48271cf0cf53fe8f6ba32fcea2 Mon Sep 17 00:00:00 2001 +From: Martchus +Date: Sat, 17 Feb 2024 20:31:12 +0100 +Subject: [PATCH 14/17] Fix errors due to disabled exceptions with cpp_winrt + support + +The winrt headers use exceptions so code using them must be compiled +with exceptions enabled. + +Change-Id: I216f65b260062ff2020f8a288ddda78c3e9fc3c9 +--- + src/plugins/platforms/windows/CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/plugins/platforms/windows/CMakeLists.txt b/src/plugins/platforms/windows/CMakeLists.txt +index ca1bbcb758..16fd2cd2be 100644 +--- a/src/plugins/platforms/windows/CMakeLists.txt ++++ b/src/plugins/platforms/windows/CMakeLists.txt +@@ -9,6 +9,7 @@ qt_internal_add_plugin(QWindowsIntegrationPlugin + OUTPUT_NAME qwindows + PLUGIN_TYPE platforms + DEFAULT_IF ${QT_QPA_DEFAULT_PLATFORM} MATCHES windows ++ EXCEPTIONS + SOURCES + main.cpp + qtwindowsglobal.h +-- +2.43.2 + diff --git a/qt6-base/mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch b/qt6-base/mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch new file mode 100644 index 00000000..0973c5bf --- /dev/null +++ b/qt6-base/mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch @@ -0,0 +1,31 @@ +From fd204d57b5304a4fced6921dc10e2be55334a026 Mon Sep 17 00:00:00 2001 +From: Martchus +Date: Sat, 17 Feb 2024 20:48:21 +0100 +Subject: [PATCH 15/17] Fix setting exception flags of plugin targets + +Change-Id: I93b1b5fa55f3e35e13351d9c981409f1593bf8a8 +--- + cmake/QtPluginHelpers.cmake | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/cmake/QtPluginHelpers.cmake b/cmake/QtPluginHelpers.cmake +index 2db9d4628a..da71a07715 100644 +--- a/cmake/QtPluginHelpers.cmake ++++ b/cmake/QtPluginHelpers.cmake +@@ -369,8 +369,11 @@ function(qt_internal_add_plugin target) + + qt_internal_add_repo_local_defines("${target}") + +- qt_internal_set_exceptions_flags("${target}" ${arg_EXCEPTIONS}) +- ++ if(NOT arg_EXCEPTIONS AND NOT ${arg_HEADER_MODULE}) ++ qt_internal_set_exceptions_flags("${target}" FALSE) ++ elseif(arg_EXCEPTIONS) ++ qt_internal_set_exceptions_flags("${target}" TRUE) ++ endif() + + set(qt_libs_private "") + qt_internal_get_qt_all_known_modules(known_modules) +-- +2.43.2 + diff --git a/qt6-base/mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch b/qt6-base/mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch new file mode 100644 index 00000000..40fa9b40 --- /dev/null +++ b/qt6-base/mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch @@ -0,0 +1,45 @@ +From 63a51d8dc13ad219b56ba1f6adae92a8c90b25c7 Mon Sep 17 00:00:00 2001 +From: Martchus +Date: Sat, 17 Feb 2024 21:39:39 +0100 +Subject: [PATCH 16/17] Link corelib correctly against runtimeobject when + compiling for Windows + +This library is included by mingw-w64 and also needs to be linked against +for code in `qlocale_win.cpp` enabled via the `cpp_winrt` feature flag. + +Change-Id: Ie3bd0290bb2f1c0d227c60a6cf6580efddd837fd +--- + src/corelib/CMakeLists.txt | 3 +-- + .../networkinformation/networklistmanager/CMakeLists.txt | 2 +- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt +index 1296ff0408..31030159f2 100644 +--- a/src/corelib/CMakeLists.txt ++++ b/src/corelib/CMakeLists.txt +@@ -779,8 +779,7 @@ qt_internal_extend_target(Core CONDITION WIN32 + text/qlocale_win.cpp + ) + +-# On MS-Win, clang has two flavors, one of which immitates MSVC (so claims to be it) +-qt_internal_extend_target(Core CONDITION WIN32 AND MSVC AND NOT CLANG ++qt_internal_extend_target(Core CONDITION WIN32 + LIBRARIES + runtimeobject + ) +diff --git a/src/plugins/networkinformation/networklistmanager/CMakeLists.txt b/src/plugins/networkinformation/networklistmanager/CMakeLists.txt +index a9acc465f3..acd3754f4e 100644 +--- a/src/plugins/networkinformation/networklistmanager/CMakeLists.txt ++++ b/src/plugins/networkinformation/networklistmanager/CMakeLists.txt +@@ -14,7 +14,7 @@ qt_internal_add_plugin(QNLMNIPlugin + Qt::NetworkPrivate + ) + +-qt_internal_extend_target(QNLMNIPlugin CONDITION WIN32 AND MSVC AND NOT CLANG ++qt_internal_extend_target(QNLMNIPlugin CONDITION WIN32 + LIBRARIES + runtimeobject + oleaut32 +-- +2.43.2 + diff --git a/qt6-base/mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch b/qt6-base/mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch new file mode 100644 index 00000000..7f61616b --- /dev/null +++ b/qt6-base/mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch @@ -0,0 +1,87 @@ +From 1bcb7df3e6d7027df3cc242acb14c036b0df1ad5 Mon Sep 17 00:00:00 2001 +From: Martchus +Date: Sat, 17 Feb 2024 23:11:18 +0100 +Subject: [PATCH 17/17] Workaround linker error about missing symbol + `__sync_bool_compare_and_swap_16` + +This error only happens when compiling for the x86_64-w64-mingw32 target +with the `cpp_winrt` feature enabled. Adding the `-mcx16c` flag helps to +avoid it. This means the `CMPXCHG16B` instruction is required but this +code will only run on newer systems anyway (considering Qt requires Windows +10). + +Change-Id: I02c47c386d80e5f8a21bb2a4cee83e2141dee481 +--- + src/corelib/CMakeLists.txt | 5 +++++ + .../networkinformation/networklistmanager/CMakeLists.txt | 5 +++++ + src/plugins/platforms/direct2d/CMakeLists.txt | 5 +++++ + src/plugins/platforms/windows/CMakeLists.txt | 5 +++++ + 4 files changed, 20 insertions(+) + +diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt +index 31030159f2..5390f1e5e4 100644 +--- a/src/corelib/CMakeLists.txt ++++ b/src/corelib/CMakeLists.txt +@@ -779,6 +779,11 @@ qt_internal_extend_target(Core CONDITION WIN32 + text/qlocale_win.cpp + ) + ++# workaround undefined reference to `__sync_bool_compare_and_swap_16' ++if (QT_FEATURE_cpp_winrt AND MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86.*)|(X86.*)|(amd64)|(AMD64)") ++ set_property(SOURCE text/qlocale_win.cpp APPEND PROPERTY COMPILE_FLAGS "-mcx16") ++endif () ++ + qt_internal_extend_target(Core CONDITION WIN32 + LIBRARIES + runtimeobject +diff --git a/src/plugins/networkinformation/networklistmanager/CMakeLists.txt b/src/plugins/networkinformation/networklistmanager/CMakeLists.txt +index acd3754f4e..0557c60afd 100644 +--- a/src/plugins/networkinformation/networklistmanager/CMakeLists.txt ++++ b/src/plugins/networkinformation/networklistmanager/CMakeLists.txt +@@ -20,6 +20,11 @@ qt_internal_extend_target(QNLMNIPlugin CONDITION WIN32 + oleaut32 + ) + ++# workaround undefined reference to `__sync_bool_compare_and_swap_16' ++if (QT_FEATURE_cpp_winrt AND MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86.*)|(X86.*)|(amd64)|(AMD64)") ++ target_compile_options(QNLMNIPlugin PRIVATE -mcx16) ++endif () ++ + # Don't repeat the target name in AUTOGEN_BUILD_DIR to work around issues with overlong paths. + set_property(TARGET QNLMNIPlugin PROPERTY + AUTOGEN_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/autogen") +diff --git a/src/plugins/platforms/direct2d/CMakeLists.txt b/src/plugins/platforms/direct2d/CMakeLists.txt +index e21b230cd7..e44587af74 100644 +--- a/src/plugins/platforms/direct2d/CMakeLists.txt ++++ b/src/plugins/platforms/direct2d/CMakeLists.txt +@@ -82,6 +82,11 @@ qt_internal_add_plugin(QWindowsDirect2DIntegrationPlugin + runtimeobject + ) + ++# workaround undefined reference to `__sync_bool_compare_and_swap_16' ++if (QT_FEATURE_cpp_winrt AND MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86.*)|(X86.*)|(amd64)|(AMD64)") ++ target_compile_options(QWindowsDirect2DIntegrationPlugin PRIVATE -mcx16) ++endif () ++ + # Resources: + set_source_files_properties("../windows/openglblacklists/default.json" + PROPERTIES QT_RESOURCE_ALIAS "default.json" +diff --git a/src/plugins/platforms/windows/CMakeLists.txt b/src/plugins/platforms/windows/CMakeLists.txt +index 16fd2cd2be..2521707dda 100644 +--- a/src/plugins/platforms/windows/CMakeLists.txt ++++ b/src/plugins/platforms/windows/CMakeLists.txt +@@ -70,6 +70,11 @@ qt_internal_add_plugin(QWindowsIntegrationPlugin + runtimeobject + ) + ++# workaround undefined reference to `__sync_bool_compare_and_swap_16' ++if (QT_FEATURE_cpp_winrt AND MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8 AND CMAKE_SYSTEM_PROCESSOR MATCHES "(x86.*)|(X86.*)|(amd64)|(AMD64)") ++ target_compile_options(QWindowsIntegrationPlugin PRIVATE -mcx16) ++endif () ++ + # Resources: + set_source_files_properties("openglblacklists/default.json" + PROPERTIES QT_RESOURCE_ALIAS "default.json" +-- +2.43.2 + diff --git a/qt6-base/mingw-w64/PKGBUILD b/qt6-base/mingw-w64/PKGBUILD index 8f257458..bda06a61 100644 --- a/qt6-base/mingw-w64/PKGBUILD +++ b/qt6-base/mingw-w64/PKGBUILD @@ -13,12 +13,12 @@ pkgname=mingw-w64-qt6-base _qtver=6.6.2 pkgver=${_qtver/-/} -pkgrel=1 +pkgrel=2 arch=(any) url='https://www.qt.io' license=(GPL3 LGPL3 FDL custom) pkgdesc='A cross-platform application and UI framework (mingw-w64)' -depends=('mingw-w64-crt' 'mingw-w64-zlib' 'mingw-w64-libjpeg-turbo' 'mingw-w64-sqlite' +depends=('mingw-w64-crt' 'mingw-w64-cppwinrt' 'mingw-w64-zlib' 'mingw-w64-libjpeg-turbo' 'mingw-w64-sqlite' 'mingw-w64-libpng' 'mingw-w64-openssl' 'mingw-w64-dbus' 'mingw-w64-harfbuzz' 'mingw-w64-brotli' 'mingw-w64-pcre2' 'mingw-w64-zstd') makedepends=('mingw-w64-cmake' 'mingw-w64-postgresql' 'mingw-w64-mariadb-connector-c' @@ -43,21 +43,29 @@ source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/subm '0010-Fix-dependency-of-xcb-image-on-xcb-util.patch' '0011-Allow-using-properties-of-PkgConfig-targets-for-glib.patch' '0012-Allow-using-properties-of-PkgConfig-targets-for-Wayl.patch' - '0013-Allow-overriding-preference-for-shared-libzstd-libra.patch') + '0013-Allow-overriding-preference-for-shared-libzstd-libra.patch' + '0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch' + '0015-Fix-setting-exception-flags-of-plugin-targets.patch' + '0016-Link-corelib-correctly-against-runtimeobject-when-co.patch' + '0017-Workaround-linker-error-about-missing-symbol-__sync_.patch') sha256sums=('b89b426b9852a17d3e96230ab0871346574d635c7914480a2a27f98ff942677b' - '5337bd308d6c6342b1a61cb45a6e435d706c2eb751ab93c9118322165370809a' - 'f1e013452ca62cccf9d17682701f67886173eb24e53b94ea0fe99a5edcb34d7a' - '401d9275e9832c5000dd2b410158289b0cf853319da1a5ee97130598e28c0599' - '404dc4efb1bdbdcaee2f0f8d561edf1b55a1050fab8e9a80c8eaf1c8aa816be2' - 'bfae4a5fb06153204e2b731ade3f169a6f4b5b44769f7b7cd420cf9d492ff830' - '6bbf063870a45dd58be5ec849195b553ce8697985cca8441c18e5baccf67d449' - '843b63b105767bf26c3d2e0fb65d4a9021aae598b7fbae8f501e848551e6bc6c' - 'a9c705a909876e20e0da2bf1137020b509e59fa25bb759831ce23f9b46576ffb' - '6935ba318b0af86c40fca397e84046d004a23422b0c74187808133e5b1539b8c' - 'ba9fb48fb7ddeaa665e81136fa33377ba4fbf1efeb787c229cb091c33c1b31c6' - '6fd11b4bdd602f0b17cc75f8fc0e999119d2606e16e6ebca5804865a4094c55c' - 'a589ff90a9be1c4b973e632f4b7419505a89406221a32c432aa9e72d59c8ef8f' - '70f35a369aa9ee3d5b69ed036ee1091efc4535d727f6d05dd5737d2b81efe707') + '7691272ccd272a6b0a750777a7d8d738588145cefce1f250d6ad756fcf1fe3d4' + '7dcb792c97098b44857e4932088b4164a85dc702f5f519654937ee38c98e5ffc' + '140904d07d65e77080040337536f4ccd5285672e0d8867a3807a8b1f80c430a5' + '17a09b620fc06518167f04fc5b28bd453c58ca3d32c70ef10e09802160843639' + 'eeb14b5298ec1b9b564ee78edc41670470e0efa68755f954b79ac83c684ea387' + '5f1780805561985c9f575dbbefe704f5c61b622ce75bb4a30532f51c95ae1436' + 'adc1b10e565b10944951df9e10ce6999c0210071b75b7a4dd230f617d88aab4f' + '54646442b7a00aa59d6be6ec7be95b2424fb4b152b0ee801451b38e8252c2c2f' + 'a8971b7c21da5ed1f7fcd02a69d4f1491303d991b0f84b83ed97367bb9778247' + '9e97d8c5487c9212ffb00a1e90c7ccd11cb400696b77c94306e65360d2c11ede' + '6d31790b364ce516d82b78f78146076d1f6b8fdf9adaa90c63aeb4cfb8dc00ee' + '7be1875458af031925d2e91e262782f15801f6f5deff8babd0685037a7588d1f' + 'a73a8fbdbd14a132e97a58abf0b58270d2af43d86ba238a236265d1341e84d06' + 'c7c30f1da326b07abae0ab1c3f257cee0691c8b1ca26d1266978e77d6a769272' + 'a316377d963838af16c02645b88ac16cb49714e6df998a44675f8536dea72301' + 'fd77316b643ebde5bb607e871c1d7983273b1292798d510c848aa2873037ab9e' + '120e463090b99b70235a722fb1a671b7b742cb77f5c400a3856da534fcfae356') _architectures='i686-w64-mingw32 x86_64-w64-mingw32' @@ -74,7 +82,17 @@ prepare () { build() { for _arch in ${_architectures}; do export PKG_CONFIG=/usr/bin/$_arch-pkg-config + + local _enable_winrt_support=ON + if [[ ! -e /usr/${_arch}/include/winrt/Windows.Foundation.h ]]; then + echo "cppwinrt headers seem incomplete, disabling FEATURE_cpp_winrt" + _enable_winrt_support=OFF + fi + $_arch-cmake -G Ninja -B build-$_arch -S $_pkgfqn \ + -DCMAKE_CXX_STANDARD=20 \ + -DCMAKE_CXX_FLAGS="$CXX_FLAGS -std=c++20" \ + -DFEATURE_cpp_winrt=$_enable_winrt_support \ -DFEATURE_pkg_config=ON \ -DFEATURE_system_pcre2=ON \ -DFEATURE_system_freetype=ON \ diff --git a/qt6-base/static-compat/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch b/qt6-base/static-compat/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch new file mode 120000 index 00000000..24c46d9b --- /dev/null +++ b/qt6-base/static-compat/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch @@ -0,0 +1 @@ +../mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch \ No newline at end of file diff --git a/qt6-base/static-compat/0015-Fix-setting-exception-flags-of-plugin-targets.patch b/qt6-base/static-compat/0015-Fix-setting-exception-flags-of-plugin-targets.patch new file mode 120000 index 00000000..3c32d474 --- /dev/null +++ b/qt6-base/static-compat/0015-Fix-setting-exception-flags-of-plugin-targets.patch @@ -0,0 +1 @@ +../mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch \ No newline at end of file diff --git a/qt6-base/static-compat/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch b/qt6-base/static-compat/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch new file mode 120000 index 00000000..4271eebe --- /dev/null +++ b/qt6-base/static-compat/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch @@ -0,0 +1 @@ +../mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch \ No newline at end of file diff --git a/qt6-base/static-compat/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch b/qt6-base/static-compat/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch new file mode 120000 index 00000000..5935fa25 --- /dev/null +++ b/qt6-base/static-compat/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch @@ -0,0 +1 @@ +../mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch \ No newline at end of file diff --git a/qt6-base/static-compat/PKGBUILD b/qt6-base/static-compat/PKGBUILD index ec83ae94..2eb9bd13 100644 --- a/qt6-base/static-compat/PKGBUILD +++ b/qt6-base/static-compat/PKGBUILD @@ -42,21 +42,29 @@ source=("https://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/subm '0010-Fix-dependency-of-xcb-image-on-xcb-util.patch' '0011-Allow-using-properties-of-PkgConfig-targets-for-glib.patch' '0012-Allow-using-properties-of-PkgConfig-targets-for-Wayl.patch' - '0013-Allow-overriding-preference-for-shared-libzstd-libra.patch') + '0013-Allow-overriding-preference-for-shared-libzstd-libra.patch' + '0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch' + '0015-Fix-setting-exception-flags-of-plugin-targets.patch' + '0016-Link-corelib-correctly-against-runtimeobject-when-co.patch' + '0017-Workaround-linker-error-about-missing-symbol-__sync_.patch') sha256sums=('b89b426b9852a17d3e96230ab0871346574d635c7914480a2a27f98ff942677b' - '5337bd308d6c6342b1a61cb45a6e435d706c2eb751ab93c9118322165370809a' - 'f1e013452ca62cccf9d17682701f67886173eb24e53b94ea0fe99a5edcb34d7a' - '401d9275e9832c5000dd2b410158289b0cf853319da1a5ee97130598e28c0599' - '404dc4efb1bdbdcaee2f0f8d561edf1b55a1050fab8e9a80c8eaf1c8aa816be2' - 'bfae4a5fb06153204e2b731ade3f169a6f4b5b44769f7b7cd420cf9d492ff830' - '6bbf063870a45dd58be5ec849195b553ce8697985cca8441c18e5baccf67d449' - '843b63b105767bf26c3d2e0fb65d4a9021aae598b7fbae8f501e848551e6bc6c' - 'a9c705a909876e20e0da2bf1137020b509e59fa25bb759831ce23f9b46576ffb' - '6935ba318b0af86c40fca397e84046d004a23422b0c74187808133e5b1539b8c' - 'ba9fb48fb7ddeaa665e81136fa33377ba4fbf1efeb787c229cb091c33c1b31c6' - '6fd11b4bdd602f0b17cc75f8fc0e999119d2606e16e6ebca5804865a4094c55c' - 'a589ff90a9be1c4b973e632f4b7419505a89406221a32c432aa9e72d59c8ef8f' - '70f35a369aa9ee3d5b69ed036ee1091efc4535d727f6d05dd5737d2b81efe707') + '7691272ccd272a6b0a750777a7d8d738588145cefce1f250d6ad756fcf1fe3d4' + '7dcb792c97098b44857e4932088b4164a85dc702f5f519654937ee38c98e5ffc' + '140904d07d65e77080040337536f4ccd5285672e0d8867a3807a8b1f80c430a5' + '17a09b620fc06518167f04fc5b28bd453c58ca3d32c70ef10e09802160843639' + 'eeb14b5298ec1b9b564ee78edc41670470e0efa68755f954b79ac83c684ea387' + '5f1780805561985c9f575dbbefe704f5c61b622ce75bb4a30532f51c95ae1436' + 'adc1b10e565b10944951df9e10ce6999c0210071b75b7a4dd230f617d88aab4f' + '54646442b7a00aa59d6be6ec7be95b2424fb4b152b0ee801451b38e8252c2c2f' + 'a8971b7c21da5ed1f7fcd02a69d4f1491303d991b0f84b83ed97367bb9778247' + '9e97d8c5487c9212ffb00a1e90c7ccd11cb400696b77c94306e65360d2c11ede' + '6d31790b364ce516d82b78f78146076d1f6b8fdf9adaa90c63aeb4cfb8dc00ee' + '7be1875458af031925d2e91e262782f15801f6f5deff8babd0685037a7588d1f' + 'a73a8fbdbd14a132e97a58abf0b58270d2af43d86ba238a236265d1341e84d06' + 'c7c30f1da326b07abae0ab1c3f257cee0691c8b1ca26d1266978e77d6a769272' + 'a316377d963838af16c02645b88ac16cb49714e6df998a44675f8536dea72301' + 'fd77316b643ebde5bb607e871c1d7983273b1292798d510c848aa2873037ab9e' + '120e463090b99b70235a722fb1a671b7b742cb77f5c400a3856da534fcfae356') prepare () { cd $_pkgfqn