Enable cpp_winrt support in Qt 6

This commit is contained in:
Martchus 2024-02-17 20:34:14 +01:00
parent c4fcc897eb
commit 64ce42f4c3
35 changed files with 434 additions and 88 deletions

View File

@ -0,0 +1,80 @@
# Maintainer: Martchus <martchus@gmx.net>
# 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"
}

View File

@ -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 \\

View File

@ -0,0 +1 @@
../mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch

View File

@ -0,0 +1 @@
../mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch

View File

@ -0,0 +1 @@
../mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch

View File

@ -0,0 +1 @@
../mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch

View File

@ -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

View File

@ -0,0 +1 @@
../mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch

View File

@ -0,0 +1 @@
../mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch

View File

@ -0,0 +1 @@
../mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch

View File

@ -0,0 +1 @@
../mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch

View File

@ -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 \

View File

@ -1,7 +1,7 @@
From ab531280437a9ea29a579c6cf6303850b3cf3af3 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From df5d77a3a0ab5cd0c4237a65cbdedc0825910544 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From a061819f2b68392ecff422c54d80cedb529acc15 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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 <dbus/dbus.h>
#else
--
2.43.0
2.43.2

View File

@ -1,7 +1,7 @@
From 76a37b0e210b0199388d1ddf8697ba2d055db32c Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From a17fb43c9257fe1e7a1c57f7c968103ed4ee4c7b Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From ef17546b4c93fdc922db5655586149af8137e99c Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From dc4b23c50ba75b9bffc397c38f73496d7bf04100 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From 6a3ba9e734570288c5a6127c201524c92149dff9 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From d4c8e46503f4037e6203dbfd31106ec16ffce434 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From af9caa1b9cc22f2534755d0754404f8b20a0c82c Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From c67988c5f36623d9ac326bbb86fdcea4265da815 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From 003a0762443d8b8cfdf8a33c2a15163ac5c4d346 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -1,7 +1,7 @@
From ee14993094cc62d1a819bfe37f4447512f2a265c Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -0,0 +1,29 @@
From 4ec6da0dcc50cc48271cf0cf53fe8f6ba32fcea2 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -0,0 +1,31 @@
From fd204d57b5304a4fced6921dc10e2be55334a026 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -0,0 +1,45 @@
From 63a51d8dc13ad219b56ba1f6adae92a8c90b25c7 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -0,0 +1,87 @@
From 1bcb7df3e6d7027df3cc242acb14c036b0df1ad5 Mon Sep 17 00:00:00 2001
From: Martchus <martchus@gmx.net>
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

View File

@ -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 \

View File

@ -0,0 +1 @@
../mingw-w64/0014-Fix-errors-due-to-disabled-exceptions-with-cpp_winrt.patch

View File

@ -0,0 +1 @@
../mingw-w64/0015-Fix-setting-exception-flags-of-plugin-targets.patch

View File

@ -0,0 +1 @@
../mingw-w64/0016-Link-corelib-correctly-against-runtimeobject-when-co.patch

View File

@ -0,0 +1 @@
../mingw-w64/0017-Workaround-linker-error-about-missing-symbol-__sync_.patch

View File

@ -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