git: 66259c9c641b - main - Qt6: Import Qt6 ports form kde@'s repository

From: Tobias C. Berner <tcberner_at_FreeBSD.org>
Date: Sun, 21 Aug 2022 16:46:17 UTC
The branch main has been updated by tcberner:

URL: https://cgit.FreeBSD.org/ports/commit/?id=66259c9c641b1fc828becbe2959dbe7380e55fe1

commit 66259c9c641b1fc828becbe2959dbe7380e55fe1
Author:     Tobias C. Berner <tcberner@FreeBSD.org>
AuthorDate: 2022-08-12 17:55:36 +0000
Commit:     Tobias C. Berner <tcberner@FreeBSD.org>
CommitDate: 2022-08-21 16:42:38 +0000

    Qt6: Import Qt6 ports form kde@'s repository
    
    This change brings in the new Qt6 stack, which might still be a bit
    in flux in the ports tree for a while.
    
    Obtained from https://github.com/freebsd/freebsd-ports-kde/tree/qt6-6.3.1
    with commits from lbartoletti and myself.
    
    Note:
    ww/qt6-webengine will land once kai wins another round of patching boundled
    chromiums sources.
    
    Exp-run by:     antoine
    PR:             265843
    Differential Revision: https://reviews.freebsd.org/D36179
---
 Mk/Uses/qmake.mk                                   |    2 +-
 Mk/Uses/qt-dist.mk                                 |   94 +-
 Mk/Uses/qt.mk                                      |   40 +-
 devel/Makefile                                     |    4 +
 devel/qt6-5compat/Makefile                         |   21 +
 devel/qt6-5compat/distinfo                         |    3 +
 devel/qt6-5compat/pkg-descr                        |    8 +
 devel/qt6-5compat/pkg-plist                        |   85 +
 devel/qt6-base/Makefile                            |  125 +
 devel/qt6-base/distinfo                            |    3 +
 devel/qt6-base/files/patch-cmake_FindMySQL.cmake   |   13 +
 devel/qt6-base/files/patch-cmake_QtBuild.cmake     |   11 +
 .../files/patch-cmake_QtFlagHandlingHelpers.cmake  |   13 +
 .../files/patch-cmake_QtPkgConfigHelpers.cmake     |   10 +
 .../files/patch-cmake_QtRpathHelpers.cmake         |   11 +
 ...rt_devicediscovery_qdevicediscovery__static.cpp |   14 +
 ...port_devicediscovery_qdevicediscovery__udev.cpp |   14 +
 ...t_evdevkeyboard_qevdevkeyboard__defaultmap__p.h |   14 +
 ...t_input_evdevkeyboard_qevdevkeyboardhandler.cpp |   14 +
 ...support_input_evdevmouse_qevdevmousehandler.cpp |   15 +
 ...pport_input_evdevtablet_qevdevtablethandler.cpp |   14 +
 ...support_input_evdevtouch_qevdevtouchhandler.cpp |   14 +
 devel/qt6-base/pkg-descr                           |    3 +
 devel/qt6-base/pkg-plist                           | 3746 ++++++++++++++++++++
 devel/qt6-tools/Makefile                           |   45 +
 devel/qt6-tools/distinfo                           |    3 +
 devel/qt6-tools/pkg-descr                          |    7 +
 devel/qt6-tools/pkg-plist                          |  430 +++
 devel/qt6-translations/Makefile                    |   16 +
 devel/qt6-translations/distinfo                    |    3 +
 devel/qt6-translations/pkg-descr                   |    4 +
 devel/qt6-translations/pkg-plist                   |  267 ++
 graphics/Makefile                                  |    4 +
 graphics/qt6-3d/Makefile                           |   40 +
 graphics/qt6-3d/distinfo                           |    3 +
 ...src_3rdparty_assimp_src_contrib_zip_src_miniz.h |   13 +
 graphics/qt6-3d/pkg-descr                          |    7 +
 graphics/qt6-3d/pkg-plist                          | 1458 ++++++++
 graphics/qt6-imageformats/Makefile                 |   35 +
 graphics/qt6-imageformats/distinfo                 |    3 +
 graphics/qt6-imageformats/pkg-descr                |    6 +
 graphics/qt6-imageformats/pkg-plist                |   45 +
 graphics/qt6-svg/Makefile                          |   31 +
 graphics/qt6-svg/distinfo                          |    3 +
 graphics/qt6-svg/pkg-descr                         |    8 +
 graphics/qt6-svg/pkg-plist                         |   87 +
 graphics/qt6-wayland/Makefile                      |   35 +
 graphics/qt6-wayland/distinfo                      |    3 +
 graphics/qt6-wayland/files/patch-CMakeLists.txt    |   11 +
 graphics/qt6-wayland/pkg-descr                     |    6 +
 graphics/qt6-wayland/pkg-plist                     |  621 ++++
 misc/Makefile                                      |    1 +
 misc/qt6-doc/Makefile                              |   16 +
 misc/qt6-doc/distinfo                              |    3 +
 misc/qt6-doc/pkg-descr                             |    6 +
 misc/qt6-doc/pkg-plist                             |    1 +
 net/Makefile                                       |    1 +
 net/qt6-networkauth/Makefile                       |   22 +
 net/qt6-networkauth/distinfo                       |    3 +
 net/qt6-networkauth/pkg-descr                      |    6 +
 net/qt6-networkauth/pkg-plist                      |   51 +
 www/Makefile                                       |    1 +
 x11-toolkits/Makefile                              |    4 +
 x11-toolkits/qt6-declarative/Makefile              |   44 +
 x11-toolkits/qt6-declarative/distinfo              |    3 +
 x11-toolkits/qt6-declarative/pkg-descr             |    7 +
 x11-toolkits/qt6-declarative/pkg-plist             | 2622 ++++++++++++++
 x11-toolkits/qt6-quick3d/Makefile                  |   33 +
 x11-toolkits/qt6-quick3d/distinfo                  |    3 +
 x11-toolkits/qt6-quick3d/pkg-descr                 |    7 +
 x11-toolkits/qt6-quick3d/pkg-plist                 |  931 +++++
 x11-toolkits/qt6-quicktimeline/Makefile            |   31 +
 x11-toolkits/qt6-quicktimeline/distinfo            |    3 +
 x11-toolkits/qt6-quicktimeline/pkg-descr           |    6 +
 x11-toolkits/qt6-quicktimeline/pkg-plist           |   46 +
 x11-toolkits/qt6-shadertools/Makefile              |   31 +
 x11-toolkits/qt6-shadertools/distinfo              |    3 +
 x11-toolkits/qt6-shadertools/pkg-descr             |    8 +
 x11-toolkits/qt6-shadertools/pkg-plist             |   48 +
 79 files changed, 11386 insertions(+), 40 deletions(-)

diff --git a/Mk/Uses/qmake.mk b/Mk/Uses/qmake.mk
index 1524aed3d95d..48304c742493 100644
--- a/Mk/Uses/qmake.mk
+++ b/Mk/Uses/qmake.mk
@@ -109,7 +109,7 @@ QMAKE_SOURCE_PATH?=	# empty
 .  endif
 
 # Add qmake to USE_QT -- unless it's qmake itself
-.  if !${PORTNAME} == qmake
+.  if !${PORTNAME} == qmake && ${_QT_VER:M5}
 USE_QT+=		qmake_build
 .  endif
 
diff --git a/Mk/Uses/qt-dist.mk b/Mk/Uses/qt-dist.mk
index d644f0b44d58..7a8ed434bf0b 100644
--- a/Mk/Uses/qt-dist.mk
+++ b/Mk/Uses/qt-dist.mk
@@ -28,6 +28,9 @@ _QT5_DISTS=		3d activeqt androidextras base charts connectivity datavis3d \
 			serialport speech svg tools translations virtualkeyboard wayland \
 			webchannel webengine webglplugin websockets webview winextras \
 			x11extras xmlpatterns
+_QT6_DISTS=		3d 5compat base declarative doc imageformats quick3d quickcontrols2 \
+			quicktimeline networkauth shadertools svg tools translations webengine wayland
+
 _QT_DISTS=		${_QT${_QT_VER}_DISTS}
 
 # We only accept one item as an argument. The fetch target further below works
@@ -45,9 +48,7 @@ IGNORE=		cannot be installed: different Qt dists specified via qt-dist:[${qt-dis
 
 # Fall back to sensible defaults for _QT_DIST
 .  if empty(_QT_DIST)
-.    if ${_QT_VER:M5}
 _QT_DIST=		${PORTNAME} # don't force qt-dist to be set for Qt5 ports which 75% of time are ${PORTNAME}
-.    endif
 .  endif
 
 # Check validitiy
@@ -56,18 +57,47 @@ IGNORE=			Unsupported qt-dist ${_QT_DIST} for qt:${_QT_VER}
 .  endif
 ################################################################################
 
-# Set standard bsd.port.mk variables
+# Set standard bsd.port.mk variables.
 LICENSE?=		LGPL21
 
 .  if !exists(${PKGDIR}/pkg-descr)
 DESCR?=			${PORTSDIR}/devel/${_QT_RELNAME}/pkg-descr
 .  endif
 
+
 # Stage support.
-DESTDIRNAME=		INSTALL_ROOT
+_QT5_DESTDIRNAME=	INSTALL_ROOT
+_QT6_DESTDIRNAME=	DESTDIR
+DESTDIRNAME=		${_QT${_QT_VER}_DESTDIRNAME}
 
-.  if ${_QT_VER:M5}
+# Qt's tarballs are xz compressed.
+.  if empty(USES:Mtar)
+EXTRACT_SUFX?=		.tar.xz
+.  endif
 
+# Qt5 specific master sites
+_QT5_MASTER_SITES_kde=		LOCAL
+_QT5_MASTER_SITE_SUBDIR_kde=	tcberner/KDE/Qt/${_QT_VERSION}
+_QT5_MASTER_SITES=		${MASTER_SITE_QT}
+_QT5_MASTER_SITE_SUBDIR=	official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules/
+# Qt6 specific master sites
+_QT6_MASTER_SITES=		${MASTER_SITE_QT}
+_QT6_MASTER_SITE_SUBDIR=	official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules \
+				official_releases/additional_libraries/${_QT_VERSION:R}/${_QT_VERSION}/
+# Qt5 specific distnames
+_QT5_DISTNAME=			${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},}
+_QT5_DISTNAME_kde=		${_QT_DIST:S,^,kde-qt,:S,$,-${DISTVERSION},}
+# Qt6 specific distnames
+_QT6_DISTNAME=			${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},}
+
+# Effective master sites and disfile valus
+MASTER_SITES=			${_QT${_QT_VER}_MASTER_SITES${_KDE_${_QT_DIST}:D_kde}}
+MASTER_SITE_SUBDIR=		${_QT${_QT_VER}_MASTER_SITE_SUBDIR${_KDE_${_QT_DIST}:D_kde}}
+DISTNAME=			${_QT${_QT_VER}_DISTNAME${_KDE_${_QT_DIST}:D_kde}}
+DISTFILES=			${DISTNAME:S,$,${EXTRACT_SUFX},}
+DIST_SUBDIR=			KDE/Qt/${_QT_VERSION}
+
+.  if ${_QT_VER:M5}
 # KDE maintains a repository with a patched Qt5 distribution.
 _KDE_3d=		15
 _KDE_base=		165
@@ -105,26 +135,18 @@ _KDE_websockets=	3
 _KDE_webview=		0
 _KDE_x11extras=		0
 _KDE_xmlpatterns=	0
-
 .    if defined(_KDE_${_QT_DIST})
-# KDE patched Qt parts
 QT5_KDE_PATCH=		p${_KDE_${_QT_DIST}}
 _KDE_${_QT_DIST}_VERSION?=	${_QT_VERSION}
 _KDE_${_QT_DIST}_ORIGIN_TAG?=	v${_KDE_${_QT_DIST}_VERSION}-lts-lgpl
-MASTER_SITES=		LOCAL/tcberner/KDE/Qt/${_QT_VERSION}
-DISTNAME=		${_QT_DIST:S,^,kde-qt,:S,$,-${DISTVERSION},}
 COMMENT+=		(KDE patched)
 .    else
-# non KDE patched Qt parts
 QT5_KDE_PATCH=		#
-MASTER_SITES=		${MASTER_SITE_QT}
-MASTER_SITE_SUBDIR?=	official_releases/qt/${_QT_VERSION:R}/${_QT_VERSION}/submodules/
-DISTNAME=		${_QT_DIST:S,^,qt,:S,$,-everywhere-src-${DISTVERSION},}
 .    endif
+.  endif # ${_QT_VER:M5}
 
-DISTFILES=		${DISTNAME:S,$,${EXTRACT_SUFX},}
-DIST_SUBDIR=		KDE/Qt/${_QT_VERSION}
-
+# Environment setup for Qt5
+.  if ${_QT_VER:M5}
 # Qt (at least when used with qmake) has a tendency to overlink: some libraries
 # have dependencies on others in the mkspec configurations and the latter are
 # always passed to the linker even if they are not actually used. By passing
@@ -132,17 +154,6 @@ DIST_SUBDIR=		KDE/Qt/${_QT_VERSION}
 # have to declare a lot of unnecessary dependencies in USE_QT5.
 LDFLAGS+=		-Wl,--as-needed
 
-.    if ${.TARGETS:Mmakesum} || ${.TARGETS:Mfetch} && \
-	defined(DISABLE_SIZE) && defined(NO_CHECKSUM)
-# Ensure that the "makesum" target (with its inner "fetch" one) uses
-# devel/qt*/distinfo for every port.
-.    endif
-
-# Qt5's tarballs are xz compressed.
-.    if empty(USES:Mtar)
-EXTRACT_SUFX?=		.tar.xz
-.    endif
-
 .    if ${_QT_DIST} == "base" && ${PORTNAME} != "qmake"
 # Qt configure requires pkg-config to detect dependencies.
 .include "${USESDIR}/pkgconfig.mk"
@@ -156,6 +167,26 @@ EXTRACT_AFTER_ARGS?=	${DISTNAME:S,$,/examples,:S,^,--exclude ,} \
 			--no-same-owner --no-same-permissions
 .  endif # ! ${_QT_VER:M5}
 
+# Build setup for Qt6
+.  if ${_QT_VER:M6}
+CMAKE_ARGS+=		-DCMAKE_INSTALL_PREFIX=${PREFIX} \
+			-DINSTALL_BINDIR=${PREFIX}/${QT_BINDIR_REL} \
+			-DINSTALL_PUBLICBINDIR=${PREFIX}/bin \
+			-DINSTALL_LIBDIR=${PREFIX}/${QT_LIBDIR_REL} \
+			-DINSTALL_LIBEXECDIR=${PREFIX}/${QT_LIBEXECDIR_REL} \
+			-DINSTALL_DOCDIR=${PREFIX}/${QT_DOCDIR_REL} \
+			-DINSTALL_ARCHDATADIR=${PREFIX}/${QT_ARCHDIR_REL} \
+			-DINSTALL_DATADIR=${PREFIX}/${QT_DATADIR_REL} \
+			-DINSTALL_INCLUDEDIR=${PREFIX}/${QT_INCDIR_REL} \
+			-DINSTALL_MKSPECSDIR=${PREFIX}/${QT_MKSPECDIR_REL} \
+			-DINSTALL_EXAMPLESDIR=${PREFIX}/${QT_EXAMPLEDIR_REL} \
+			-DINSTALL_DESCRIPTIONSDIR=${PREFIX}/${QT_DESCRIPTIONSDIR_REL} \
+			-DQT_QMAKE_TARGET_MKSPEC:String=freebsd-clang \
+			--log-level=TRACE
+.  endif
+
+# Build setup for Qt5
+.  if ${_QT_VER:M5}
 CONFIGURE_ENV+=		MAKE="${MAKE:T}"
 
 CONFIGURE_ARGS+=	-opensource -confirm-license \
@@ -169,10 +200,8 @@ CONFIGURE_ARGS+=	-opensource -confirm-license \
 			-datadir ${PREFIX}/${QT_DATADIR_REL} \
 			-docdir ${PREFIX}/${QT_DOCDIR_REL} \
 			-translationdir ${PREFIX}/${QT_L10NDIR_REL} \
-			-sysconfdir ${PREFIX}/${QT_ETCDIR_REL}
-
-.  if ${_QT_VER:M5}
-CONFIGURE_ARGS+=	-nomake examples -nomake tests \
+			-sysconfdir ${PREFIX}/${QT_ETCDIR_REL} \
+			-nomake examples -nomake tests \
 			-platform ${QMAKESPECNAME} \
 			-archdatadir ${PREFIX}/${QT_ARCHDIR_REL} \
 			-libexecdir ${PREFIX}/${QT_LIBEXECDIR_REL} \
@@ -224,9 +253,11 @@ _EXTRA_PATCHES_QT5+=	${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extra-patch-mkspecs_common_gcc-base.conf \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-mkspecs_freebsd-g++_qmake.conf
 .    endif
+.    if ${_QT_VER:M5}
 EXTRA_PATCHES?=		${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-configure \
 			${PORTSDIR}/devel/${_QT_RELNAME}/files/extrapatch-sync.profiles \
 			${_EXTRA_PATCHES_QT5}
+.    endif # ${_QT_VER:M5}
 .  endif #  ${_QT_DIST} == "base"
 
 # Override settings installed in qconfig.h and *.pri files. The flags will be
@@ -469,3 +500,4 @@ qt-create-kde-distfile:
 		${_KDE_${_QT_DIST}_ORIGIN_TAG}
 
 .endif # defined(_QT_DIST_MK_INCLUDED)
+
diff --git a/Mk/Uses/qt.mk b/Mk/Uses/qt.mk
index 659dda05c8c8..9fb06dad9578 100644
--- a/Mk/Uses/qt.mk
+++ b/Mk/Uses/qt.mk
@@ -21,8 +21,9 @@
 _QT_MK_INCLUDED=	qt.mk
 
 # Qt versions currently supported by the framework.
-_QT_SUPPORTED?=		5
+_QT_SUPPORTED?=		5 6
 QT5_VERSION?=		5.15.5
+QT6_VERSION?=		6.3.1
 
 # We accept the Qt version to be passed by either or all of the three mk files.
 .  if empty(qt_ARGS) && empty(qmake_ARGS) && empty(qt-dist_ARGS)
@@ -54,12 +55,12 @@ IGNORE?=		cannot decide what Qt version to use: specify one via qt:[${_QT_SUPPOR
 _QT_RELNAME=		qt${_QT_VER}
 _QT_VERSION=		${QT${_QT_VER}_VERSION}
 
-# A wrapper (qtchooser) is used to invoke binaries.
 QT_BINDIR_REL?=		${QT_ARCHDIR_REL}/bin
 QT_INCDIR_REL?=		include/${_QT_RELNAME}
 QT_LIBDIR_REL?=		lib/${_QT_RELNAME}
 QT_ARCHDIR_REL?=	${QT_LIBDIR_REL}
 QT_PLUGINDIR_REL?=	${QT_ARCHDIR_REL}/plugins
+QT_DESCRIPTIONSDIR_REL?=${QT_DATADIR_REL}/modules
 QT_LIBEXECDIR_REL?=	libexec/${_QT_RELNAME}
 QT_IMPORTDIR_REL?=	${QT_ARCHDIR_REL}/imports
 QT_QMLDIR_REL?=		${QT_ARCHDIR_REL}/qml
@@ -107,7 +108,6 @@ PLIST_SUB+=		QT_${dir}DIR="${QT_${dir}DIR_REL}"
 .    endif
 .  endfor
 
-# Pass the chosen Qt version to the environment for qtchooser.
 CONFIGURE_ENV+=		QT_SELECT=${_QT_RELNAME}
 MAKE_ENV+=		QT_SELECT=${_QT_RELNAME}
 
@@ -138,17 +138,29 @@ _USE_QT_ALL+=	sql-ibase
 .  endif
 
 _USE_QT5_ONLY=		3d buildtools charts concurrent connectivity \
-			core datavis3d diag examples gamepad \
-			graphicaleffects location networkauth paths phonon4 plugininfo printsupport \
+			core datavis3d diag examples gamepad graphicaleffects \
+			location networkauth paths phonon4 plugininfo printsupport \
 			qdbus qdoc qdoc-data qev quick3d quickcontrols quickcontrols2 \
-			quicktimeline remoteobjects scxml sensors serialbus serialport speech \
-			sql-tds uiplugin uitools virtualkeyboard wayland webchannel webglplugin \
-			webengine websockets websockets-qml webview widgets x11extras
+			quicktimeline remoteobjects scxml sensors serialbus serialport \
+			speech sql-tds uiplugin uitools virtualkeyboard wayland \
+			webchannel webglplugin 	webengine websockets websockets-qml \
+			webview widgets x11extras assistant dbus declarative designer \
+			doc gui help imageformats l10n linguist linguisttools \
+			multimedia network opengl pixeltool qdbusviewer qmake script \
+			scripttools sql sql-mysql sql-odbc sql-pgsql sql-sqlite2 \
+			sql-sqlite3 svg testlib webkit xml xmlpatterns
+
+_USE_QT6_ONLY=		3d 5compat base declarative doc imageformats quick3d \
+			quickcontrols2 quicktimeline networkauth shadertools \
+			svg tools translations wayland
 
 # Dependency tuples: _LIB should be preferred if possible.
 qt-3d_PORT=		graphics/${_QT_RELNAME}-3d
 qt-3d_LIB=		libQt${_QT_LIBVER}3DCore.so
 
+qt-5compat_PORT=	devel/${_QT_RELNAME}-5compat
+qt-5compat_LIB=		libQt${_QT_LIBVER}Core5Compat.so
+
 qt-assistant_PORT=	devel/${_QT_RELNAME}-assistant
 qt-assistant_PATH=	${LOCALBASE}/${QT_BINDIR_REL}/assistant
 
@@ -156,6 +168,9 @@ qt-assistant_PATH=	${LOCALBASE}/${QT_BINDIR_REL}/assistant
 qt-buildtools_PORT=	devel/${_QT_RELNAME}-buildtools
 qt-buildtools_PATH=	${_QT_RELNAME}-buildtools>=${_QT_VERSION:R}
 
+qt-base_PORT=		devel/${_QT_RELNAME}-base
+qt-base_LIB=		libQt${_QT_LIBVER}Core.so
+
 qt-charts_PORT=		x11-toolkits/${_QT_RELNAME}-charts
 qt-charts_LIB=		libQt${_QT_LIBVER}Charts.so
 
@@ -298,6 +313,9 @@ qt-serialbus_LIB=	libQt${_QT_LIBVER}SerialBus.so
 qt-serialport_PORT=	comms/${_QT_RELNAME}-serialport
 qt-serialport_LIB=	libQt${_QT_LIBVER}SerialPort.so
 
+qt-shadertools_PORT=	x11-toolkits/${_QT_RELNAME}-shadertools
+qt-shadertools_LIB=	libQt${_QT_LIBVER}ShaderTools.so
+
 qt-speech_PORT=		accessibility/${_QT_RELNAME}-speech
 qt-speech_LIB=		libQt${_QT_LIBVER}TextToSpeech.so
 
@@ -319,6 +337,12 @@ qt-svg_LIB=		libQt${_QT_LIBVER}Svg.so
 qt-testlib_PORT=	devel/${_QT_RELNAME}-testlib
 qt-testlib_LIB=		libQt${_QT_LIBVER}Test.so
 
+qt-tools_PORT=		devel/${_QT_RELNAME}-tools
+qt-tools_PATH=		${LOCALBASE}/${QT_BINDIR_REL}/lupdate
+
+qt-translations_PORT=	devel/${_QT_RELNAME}-translations
+qt-translations_PATH=	${LOCALBASE}/${QT_DATADIR_REL}/translations
+
 qt-uiplugin_PORT=	x11-toolkits/${_QT_RELNAME}-uiplugin
 qt-uiplugin_PATH=	${LOCALBASE}/${QT_INCDIR_REL}/QtUiPlugin/QtUiPlugin
 
diff --git a/devel/Makefile b/devel/Makefile
index 0e0c824919a9..e7049c5222d2 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -5612,6 +5612,10 @@
     SUBDIR += qt5-scxml
     SUBDIR += qt5-testlib
     SUBDIR += qt5-uitools
+    SUBDIR += qt6-5compat
+    SUBDIR += qt6-base
+    SUBDIR += qt6-tools
+    SUBDIR += qt6-translations
     SUBDIR += qtcreator
     SUBDIR += quantum
     SUBDIR += quickcheck++
diff --git a/devel/qt6-5compat/Makefile b/devel/qt6-5compat/Makefile
new file mode 100644
index 000000000000..738de343914f
--- /dev/null
+++ b/devel/qt6-5compat/Makefile
@@ -0,0 +1,21 @@
+PORTNAME=	5compat
+DISTVERSION=	${QT6_VERSION}
+CATEGORIES=	devel
+PKGNAMEPREFIX=	qt6-
+
+MAINTAINER=	kde@FreeBSD.org
+COMMENT=	Qt 6 module that contains unsupported Qt 5 APIs
+
+LIB_DEPENDS=	libicuuc.so:devel/icu \
+		libdouble-conversion.so:devel/double-conversion \
+		libpcre.so:devel/pcre \
+		libpcre2-16.so:devel/pcre2 \
+		libzstd.so:archivers/zstd
+
+USES=		cmake compiler:c++17-lang gettext-runtime gnome \
+		qt-dist:6
+USE_GNOME=	glib20
+USE_QT=		base
+USE_LDCONFIG=	${PREFIX}/${QT_LIBDIR_REL}
+
+.include <bsd.port.mk>
diff --git a/devel/qt6-5compat/distinfo b/devel/qt6-5compat/distinfo
new file mode 100644
index 000000000000..1c392c597d97
--- /dev/null
+++ b/devel/qt6-5compat/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1660482594
+SHA256 (KDE/Qt/6.3.1/qt5compat-everywhere-src-6.3.1.tar.xz) = a43ec62bd778eaecf88ad7847118d1c2a471b0fcb820f93beb311d7ab9566cfd
+SIZE (KDE/Qt/6.3.1/qt5compat-everywhere-src-6.3.1.tar.xz) = 8195804
diff --git a/devel/qt6-5compat/pkg-descr b/devel/qt6-5compat/pkg-descr
new file mode 100644
index 000000000000..a525c54b94b8
--- /dev/null
+++ b/devel/qt6-5compat/pkg-descr
@@ -0,0 +1,8 @@
+Qt is a cross-platform application and UI framework for developers
+using C++ or QML, a CSS/JavaScript-like language.
+
+The Qt 5 Core Compat module contains the Qt Core APIs which will be no longer
+supported in Qt 6 and therefore were removed from Qt 6. The module is provided
+to facilitate the transition to Qt 6.
+
+WWW: http://qt-project.org
diff --git a/devel/qt6-5compat/pkg-plist b/devel/qt6-5compat/pkg-plist
new file mode 100644
index 000000000000..37836dea775f
--- /dev/null
+++ b/devel/qt6-5compat/pkg-plist
@@ -0,0 +1,85 @@
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/cp949codetbl_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qbig5codec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qbinaryjson_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qbinaryjsonarray_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qbinaryjsonobject_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qbinaryjsonvalue_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qeucjpcodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qeuckrcodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qgb18030codec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qiconvcodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qicucodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qisciicodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qjiscodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qjpunicode_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qlatincodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qsimplecodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qsjiscodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qtcore5compat-config_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qtextcodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qtsciicodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qutfcodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qwindowscodec_p.h
+%%QT_INCDIR%%/QtCore5Compat/%%FULLVER%%/QtCore5Compat/private/qxml_p.h
+%%QT_INCDIR%%/QtCore5Compat/QBinaryJson
+%%QT_INCDIR%%/QtCore5Compat/QConcatenable
+%%QT_INCDIR%%/QtCore5Compat/QLinkedList
+%%QT_INCDIR%%/QtCore5Compat/QLinkedListData
+%%QT_INCDIR%%/QtCore5Compat/QLinkedListIterator
+%%QT_INCDIR%%/QtCore5Compat/QLinkedListNode
+%%QT_INCDIR%%/QtCore5Compat/QMutableLinkedListIterator
+%%QT_INCDIR%%/QtCore5Compat/QRegExp
+%%QT_INCDIR%%/QtCore5Compat/QStringRef
+%%QT_INCDIR%%/QtCore5Compat/QTextCodec
+%%QT_INCDIR%%/QtCore5Compat/QTextDecoder
+%%QT_INCDIR%%/QtCore5Compat/QTextEncoder
+%%QT_INCDIR%%/QtCore5Compat/QXmlAttributes
+%%QT_INCDIR%%/QtCore5Compat/QXmlContentHandler
+%%QT_INCDIR%%/QtCore5Compat/QXmlDTDHandler
+%%QT_INCDIR%%/QtCore5Compat/QXmlDeclHandler
+%%QT_INCDIR%%/QtCore5Compat/QXmlDefaultHandler
+%%QT_INCDIR%%/QtCore5Compat/QXmlEntityResolver
+%%QT_INCDIR%%/QtCore5Compat/QXmlErrorHandler
+%%QT_INCDIR%%/QtCore5Compat/QXmlInputSource
+%%QT_INCDIR%%/QtCore5Compat/QXmlLexicalHandler
+%%QT_INCDIR%%/QtCore5Compat/QXmlLocator
+%%QT_INCDIR%%/QtCore5Compat/QXmlNamespaceSupport
+%%QT_INCDIR%%/QtCore5Compat/QXmlParseException
+%%QT_INCDIR%%/QtCore5Compat/QXmlReader
+%%QT_INCDIR%%/QtCore5Compat/QXmlSimpleReader
+%%QT_INCDIR%%/QtCore5Compat/QtCore5Compat
+%%QT_INCDIR%%/QtCore5Compat/QtCore5CompatDepends
+%%QT_INCDIR%%/QtCore5Compat/QtCore5CompatVersion
+%%QT_INCDIR%%/QtCore5Compat/qbinaryjson.h
+%%QT_INCDIR%%/QtCore5Compat/qcore5global.h
+%%QT_INCDIR%%/QtCore5Compat/qlinkedlist.h
+%%QT_INCDIR%%/QtCore5Compat/qregexp.h
+%%QT_INCDIR%%/QtCore5Compat/qstringref.h
+%%QT_INCDIR%%/QtCore5Compat/qtcore5compat-config.h
+%%QT_INCDIR%%/QtCore5Compat/qtcore5compatversion.h
+%%QT_INCDIR%%/QtCore5Compat/qtextcodec.h
+%%QT_INCDIR%%/QtCore5Compat/qxml.h
+lib/cmake/Qt6/FindWrapIconv.cmake
+lib/cmake/Qt6BuildInternals/StandaloneTests/Qt5CompatTestsConfig.cmake
+lib/cmake/Qt6Core5Compat/Qt6Core5CompatAdditionalTargetInfo.cmake
+lib/cmake/Qt6Core5Compat/Qt6Core5CompatConfig.cmake
+lib/cmake/Qt6Core5Compat/Qt6Core5CompatConfigVersion.cmake
+lib/cmake/Qt6Core5Compat/Qt6Core5CompatConfigVersionImpl.cmake
+lib/cmake/Qt6Core5Compat/Qt6Core5CompatDependencies.cmake
+lib/cmake/Qt6Core5Compat/Qt6Core5CompatTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/Qt6Core5Compat/Qt6Core5CompatTargets.cmake
+lib/cmake/Qt6Core5Compat/Qt6Core5CompatVersionlessTargets.cmake
+%%QT_LIBDIR%%/libQt6Core5Compat.prl
+%%QT_LIBDIR%%/libQt6Core5Compat.so
+%%QT_LIBDIR%%/libQt6Core5Compat.so.6
+%%QT_LIBDIR%%/libQt6Core5Compat.so.%%FULLVER%%
+%%QT_LIBDIR%%/metatypes/qt6core5compat_%%CMAKE_BUILD_TYPE%%_metatypes.json
+%%QT_MKSPECDIR%%/modules/qt_lib_core5compat.pri
+%%QT_MKSPECDIR%%/modules/qt_lib_core5compat_private.pri
+libdata/pkgconfig/Qt6Core5Compat.pc
+%%QT_DATADIR%%/modules/Core5Compat.json
+@dir %%QT_CMAKEDIR%%/Qt6BuildInternals/StandaloneTests
+@dir %%QT_CMAKEDIR%%/Qt6Core5Compat
+@dir %%QT_LIBDIR%%/cmake/Qt6BuildInternals/StandaloneTests
+@dir %%QT_LIBDIR%%/cmake/Qt6Core5Compat
+@dir %%QT_LIBDIR%%/pkgconfig
diff --git a/devel/qt6-base/Makefile b/devel/qt6-base/Makefile
new file mode 100644
index 000000000000..c9d8465d21a5
--- /dev/null
+++ b/devel/qt6-base/Makefile
@@ -0,0 +1,125 @@
+PORTNAME=	base
+DISTVERSION=	${QT6_VERSION}
+CATEGORIES=	devel
+PKGNAMEPREFIX=	qt6-
+
+MAINTAINER=	kde@FreeBSD.org
+COMMENT=	Qt base (core, gui, widgets, network,...)
+
+BUILD_DEPENDS=	xml:textproc/xmlstarlet \
+		${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers \
+		${LOCALBASE}/include/linux/input.h:devel/evdev-proto
+LIB_DEPENDS=	\
+		libatk-1.0.so:accessibility/atk \
+		libatk-bridge-2.0.so:accessibility/at-spi2-atk \
+		libatspi.so:accessibility/at-spi2-core \
+		libavahi-client.so:net/avahi-app \
+		libbrotlidec.so:archivers/brotli \
+		libcups.so:print/cups \
+		libdbus-1.so:devel/dbus \
+		libdouble-conversion.so:devel/double-conversion \
+		libdrm.so:graphics/libdrm \
+		libepoll-shim.so:devel/libepoll-shim \
+		libepoxy.so:graphics/libepoxy \
+		libevdev.so:devel/libevdev \
+		libexpat.so:textproc/expat2 \
+		libffi.so:devel/libffi \
+		libfontconfig.so:x11-fonts/fontconfig \
+		libfreetype.so:print/freetype2 \
+		libfribidi.so:converters/fribidi \
+		libgmp.so:math/gmp \
+		libgnutls.so:security/gnutls \
+		libgraphite2.so:graphics/graphite2 \
+		libgudev-1.0.so:devel/libgudev \
+		libharfbuzz.so:print/harfbuzz \
+		libicui18n.so:devel/icu \
+		libidn2.so:dns/libidn2 \
+		libinput.so:x11/libinput \
+		libintl.so:devel/gettext-runtime \
+		libjpeg.so:graphics/jpeg-turbo \
+		libmtdev.so:devel/libmtdev \
+		libnettle.so:security/nettle \
+		libp11-kit.so:security/p11-kit \
+		libpcre.so:devel/pcre \
+		libpcre2-16.so:devel/pcre2 \
+		libpng16.so:graphics/png \
+		libtasn1.so:security/libtasn1 \
+		libudev.so:devel/libudev-devd \
+		libunistring.so:devel/libunistring \
+		libvulkan.so:graphics/vulkan-loader \
+		libwacom.so:x11/libwacom \
+		libwayland-client.so:graphics/wayland \
+		libxcb-cursor.so:x11/xcb-util-cursor \
+		libxcb-ewmh.so:x11/xcb-util-wm \
+		libxcb-image.so:x11/xcb-util-image \
+		libxcb-keysyms.so:x11/xcb-util-keysyms \
+		libxcb-render-util.so:x11/xcb-util-renderutil \
+		libxcb-util.so:x11/xcb-util \
+		libxkbcommon.so:x11/libxkbcommon \
+		libzstd.so:archivers/zstd
+
+USES=		cmake compiler:c++17-lang gl gnome jpeg perl5 pkgconfig python \
+		qt-dist:6 shebangfix xorg
+USE_GL=		egl gl
+USE_GNOME=	cairo gdkpixbuf2 glib20 gtk30 pango
+USE_XORG=	ice pixman sm x11 xau xcb xcomposite xcursor xdamage xdmcp \
+		xext xfixes xi xinerama xrandr xrender
+CMAKE_ON=	QT_AVOID_CMAKE_ARCHIVING_API \
+		QT_FIND_ALL_PACKAGES_ALWAYS
+CMAKE_OFF=	QT_FEATURE_eglfs \
+		QT_FEATURE_gssapi
+SHEBANG_FILES=	${WRKSRC}/mkspecs/features/uikit/device_destinations.sh \
+		${WRKSRC}/mkspecs/features/uikit/devices.py \
+		${WRKSRC}/mkspecs/features/data/mac/objc_namespace.sh \
+		${WRKSRC}/util/android/android_emulator_launcher.sh \
+		${WRKSRC}/util/testrunner/qt-testrunner.py
+USE_LDCONFIG=	${PREFIX}/${QT_LIBDIR_REL}
+
+# zstd from base fails to compress files during the build (error 11: unsupported argument)
+BINARY_ALIAS=	zstd=${LOCALBASE}/bin/zstd
+
+#== Option handling
+OPTIONS_GROUP=		SQL
+OPTIONS_GROUP_SQL=	IBASE MYSQL ODBC PSQL SQLITE
+OPTIONS_DEFAULT=	SQLITE
+OPTIONS_SUB=		yes
+
+IBASE_DESC=		InterBase database support
+IBASE_CMAKE_ON=		-DFEATURE_sql_ibase=ON
+IBASE_CMAKE_OFF=	-DFEATURE_sql_ibase=OFF
+IBASE_USES=		firebird:4.0
+IBASE_BROKEN=		IBASE: fatal error: 'gen/iberror.h' file not found
+
+MYSQL_DESC=		MySQL database support
+MYSQL_CMAKE_ON=		-DFEATURE_sql_mysql=ON
+MYSQL_CMAKE_OFF=	-DFEATURE_sql_mysql=OFF
+MYSQL_USES=		mysql
+
+ODBC_DESC=		ODBC database support
+ODBC_CMAKE_ON=		-DFEATURE_sql_odbc=ON
+ODBC_CMAKE_OFF=		-DFEATURE_sql_odbc=OFF
+ODBC_LIB_DEPENDS=	libodbc.so:databases/unixODBC
+
+PSQL_DESC=		PostgreSQL database support
+PSQL_CMAKE_ON=		-DFEATURE_sql_psql=ON
+PSQL_CMAKE_OFF=		-DFEATURE_sql_psql=OFF
+PSQL_USES=		pgsql
+
+SQLITE_DESC=		Sqlite database support
+SQLITE_CMAKE_ON=	-DFEATURE_sql_sqlite=ON \
+			-DQT_FEATURE_system_sqlite=ON
+SQLITE_CMAKE_OFF=	-DFEATURE_sql_sqlite=OFF
+SQLITE_USES=		sqlite:3
+
+# TODO: do this cleaner -- somewhere cmake/qmake still creates empty directories
+# for the cmake files in INSTALL_PREFIX/lib/cmake
+post-install:
+	${RM} -vr ${STAGEDIR}${PREFIX}/${QT_LIBDIR_REL}/cmake
+	# Install symlinks for user-facing tools
+	${REINPLACE_CMD} -e "s#^#${STAGEDIR}#" -e "s# # ${STAGEDIR}#" \
+		${WRKDIR}/.build/user_facing_tool_links.txt
+	while read t; do \
+		${RLN} $$t; \
+	done <${WRKDIR}/.build/user_facing_tool_links.txt
+
+.include <bsd.port.mk>
diff --git a/devel/qt6-base/distinfo b/devel/qt6-base/distinfo
new file mode 100644
index 000000000000..3e8a1c398cca
--- /dev/null
+++ b/devel/qt6-base/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1660482596
+SHA256 (KDE/Qt/6.3.1/qtbase-everywhere-src-6.3.1.tar.xz) = 0a64421d9c2469c2c48490a032ab91d547017c9cc171f3f8070bc31888f24e03
+SIZE (KDE/Qt/6.3.1/qtbase-everywhere-src-6.3.1.tar.xz) = 47118260
diff --git a/devel/qt6-base/files/patch-cmake_FindMySQL.cmake b/devel/qt6-base/files/patch-cmake_FindMySQL.cmake
new file mode 100644
index 000000000000..512ac3cb969a
--- /dev/null
+++ b/devel/qt6-base/files/patch-cmake_FindMySQL.cmake
@@ -0,0 +1,13 @@
+Help cmake figure out the locations of the headers when mariadb is used.
+
+--- cmake/FindMySQL.cmake.orig	2021-10-20 11:54:23 UTC
++++ cmake/FindMySQL.cmake
+@@ -19,7 +19,7 @@
+ #     The mysql client library
+ 
+ find_package(PkgConfig QUIET)
+-pkg_check_modules(PC_MySQL QUIET mysqlclient)
++pkg_search_module(PC_MySQL QUIET mysqlclient mariadb)
+ 
+ find_path(MySQL_INCLUDE_DIR
+           NAMES mysql.h
diff --git a/devel/qt6-base/files/patch-cmake_QtBuild.cmake b/devel/qt6-base/files/patch-cmake_QtBuild.cmake
new file mode 100644
index 000000000000..ffc68f2e1314
--- /dev/null
+++ b/devel/qt6-base/files/patch-cmake_QtBuild.cmake
@@ -0,0 +1,11 @@
+--- cmake/QtBuild.cmake.orig	2022-05-25 08:58:52 UTC
++++ cmake/QtBuild.cmake
+@@ -198,7 +198,7 @@ function(qt_internal_set_up_global_paths)
+     if(QT_CONFIG_INSTALL_DIR)
+         string(APPEND QT_CONFIG_INSTALL_DIR "/")
+     endif()
+-    string(APPEND QT_CONFIG_INSTALL_DIR ${__config_path_part})
++    string(APPEND QT_CONFIG_INSTALL_DIR "lib/cmake")
+ 
+     set(QT_BUILD_DIR "${QT_BUILD_DIR}" PARENT_SCOPE)
+     set(QT_INSTALL_DIR "${QT_INSTALL_DIR}" PARENT_SCOPE)
diff --git a/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake b/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake
new file mode 100644
index 000000000000..bdde060014ad
--- /dev/null
+++ b/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake
@@ -0,0 +1,13 @@
+--- cmake/QtFlagHandlingHelpers.cmake.orig	2022-05-25 08:58:52 UTC
++++ cmake/QtFlagHandlingHelpers.cmake
+@@ -64,6 +64,10 @@ function(qt_internal_add_link_flags_no_undefined targe
+             set(no_undefined_flag "-Wl,--no-undefined")
+         endif()
+ 
++        if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
++             set(no_undefined_flag "")
++        endif()
++
+         set(CMAKE_REQUIRED_LINK_OPTIONS ${previous_CMAKE_REQUIRED_LINK_OPTIONS})
+ 
+         if (NOT HAVE_DASH_UNDEFINED_SYMBOLS AND NOT HAVE_DASH_DASH_NO_UNDEFINED)
diff --git a/devel/qt6-base/files/patch-cmake_QtPkgConfigHelpers.cmake b/devel/qt6-base/files/patch-cmake_QtPkgConfigHelpers.cmake
new file mode 100644
index 000000000000..2c03e159894c
--- /dev/null
+++ b/devel/qt6-base/files/patch-cmake_QtPkgConfigHelpers.cmake
@@ -0,0 +1,10 @@
+--- cmake/QtPkgConfigHelpers.cmake.orig	2022-08-07 11:26:08 UTC
++++ cmake/QtPkgConfigHelpers.cmake
+@@ -144,6 +144,6 @@ function(qt_internal_generate_pkg_config_file module)
+         # This is inspired by https://gitlab.kitware.com/cmake/cmake/-/issues/20842
+         target_sources(${module} PRIVATE "${final_pc_path}")
+ 
+-        qt_install(FILES "${final_pc_path}" DESTINATION "${install_dir}")
++        qt_install(FILES "${final_pc_path}" DESTINATION "${CMAKE_INSTALL_PREFIX}/libdata/pkgconfig")
+     endforeach()
+ endfunction()
diff --git a/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake b/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake
new file mode 100644
index 000000000000..4cb568c0c01f
--- /dev/null
+++ b/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake
@@ -0,0 +1,11 @@
+--- cmake/QtRpathHelpers.cmake.orig	2022-05-25 08:58:52 UTC
++++ cmake/QtRpathHelpers.cmake
+@@ -29,6 +29,8 @@ function(qt_compute_relative_rpath_base rpath install_
+         set(rpath_rel_base "@loader_path")
+     elseif(LINUX OR SOLARIS OR FREEBSD)
+         set(rpath_rel_base "$ORIGIN")
++    elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
++        set(rpath_rel_base "$ORIGIN")
+     else()
+         message(WARNING "No known RPATH_REL_BASE for target platform.")
+         set(rpath_rel_base "NO_KNOWN_RPATH_REL_BASE")
diff --git a/devel/qt6-base/files/patch-src_platformsupport_devicediscovery_qdevicediscovery__static.cpp b/devel/qt6-base/files/patch-src_platformsupport_devicediscovery_qdevicediscovery__static.cpp
new file mode 100644
index 000000000000..6ebffd0f4c5a
--- /dev/null
+++ b/devel/qt6-base/files/patch-src_platformsupport_devicediscovery_qdevicediscovery__static.cpp
@@ -0,0 +1,14 @@
+--- src/platformsupport/devicediscovery/qdevicediscovery_static.cpp.orig	2020-07-03 14:25:13 UTC
++++ src/platformsupport/devicediscovery/qdevicediscovery_static.cpp
+@@ -47,11 +47,7 @@
+ #include <QLoggingCategory>
+ #include <QtCore/private/qcore_unix_p.h>
+ 
+-#ifdef Q_OS_FREEBSD
+-#include <dev/evdev/input.h>
+-#else
+ #include <linux/input.h>
+-#endif
+ #include <fcntl.h>
+ 
+ /* android (and perhaps some other linux-derived stuff) don't define everything
diff --git a/devel/qt6-base/files/patch-src_platformsupport_devicediscovery_qdevicediscovery__udev.cpp b/devel/qt6-base/files/patch-src_platformsupport_devicediscovery_qdevicediscovery__udev.cpp
new file mode 100644
index 000000000000..205ff82ee4d5
--- /dev/null
+++ b/devel/qt6-base/files/patch-src_platformsupport_devicediscovery_qdevicediscovery__udev.cpp
@@ -0,0 +1,14 @@
+--- src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp.orig	2020-07-03 14:25:13 UTC
++++ src/platformsupport/devicediscovery/qdevicediscovery_udev.cpp
+@@ -46,11 +46,7 @@
+ #include <QSocketNotifier>
+ #include <QLoggingCategory>
+ 
+-#ifdef Q_OS_FREEBSD
+-#include <dev/evdev/input.h>
+-#else
+ #include <linux/input.h>
+-#endif
+ 
+ QT_BEGIN_NAMESPACE
+ 
diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboard__defaultmap__p.h b/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboard__defaultmap__p.h
new file mode 100644
index 000000000000..c5e925a03f38
--- /dev/null
+++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboard__defaultmap__p.h
@@ -0,0 +1,14 @@
+--- src/platformsupport/input/evdevkeyboard/qevdevkeyboard_defaultmap_p.h.orig	2020-07-03 14:25:13 UTC
++++ src/platformsupport/input/evdevkeyboard/qevdevkeyboard_defaultmap_p.h
+@@ -52,11 +52,7 @@
+ //
+ 
+ #include "qnamespace.h"
+-#ifdef Q_OS_FREEBSD
+-#include <dev/evdev/input.h>
+-#else
+ #include "linux/input.h"
+-#endif
+ 
+ // no QT_BEGIN_NAMESPACE, since we include it internally...
+ 
diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboardhandler.cpp b/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboardhandler.cpp
new file mode 100644
index 000000000000..95ad75033670
--- /dev/null
+++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevkeyboard_qevdevkeyboardhandler.cpp
@@ -0,0 +1,14 @@
+--- src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp.orig	2020-12-04 10:14:27 UTC
++++ src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler.cpp
+@@ -53,11 +53,7 @@
+ #include <QtGui/private/qguiapplication_p.h>
+ #include <QtGui/private/qinputdevicemanager_p.h>
+ 
+-#ifdef Q_OS_FREEBSD
+-#include <dev/evdev/input.h>
+-#else
+ #include <linux/input.h>
+-#endif
+ 
+ #ifndef input_event_sec
+ #define input_event_sec time.tv_sec
diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevmouse_qevdevmousehandler.cpp b/devel/qt6-base/files/patch-src_platformsupport_input_evdevmouse_qevdevmousehandler.cpp
new file mode 100644
index 000000000000..4e4b6053d6d7
--- /dev/null
+++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevmouse_qevdevmousehandler.cpp
@@ -0,0 +1,15 @@
+--- src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp.orig	2020-07-03 14:25:13 UTC
++++ src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp
+@@ -53,12 +53,7 @@
+ 
+ #include <errno.h>
+ 
+-#ifdef Q_OS_FREEBSD
+-#include <dev/evdev/input.h>
+-#else
+-#include <linux/kd.h>
+ #include <linux/input.h>
+-#endif
+ 
+ #define TEST_BIT(array, bit)    (array[bit/8] & (1<<(bit%8)))
+ 
diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevtablet_qevdevtablethandler.cpp b/devel/qt6-base/files/patch-src_platformsupport_input_evdevtablet_qevdevtablethandler.cpp
new file mode 100644
index 000000000000..fa1194a91f71
--- /dev/null
+++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevtablet_qevdevtablethandler.cpp
@@ -0,0 +1,14 @@
+--- src/platformsupport/input/evdevtablet/qevdevtablethandler.cpp.orig	2020-07-03 14:25:13 UTC
++++ src/platformsupport/input/evdevtablet/qevdevtablethandler.cpp
+@@ -46,11 +46,7 @@
+ #include <QLoggingCategory>
+ #include <QtCore/private/qcore_unix_p.h>
+ #include <qpa/qwindowsysteminterface.h>
+-#ifdef Q_OS_FREEBSD
+-#include <dev/evdev/input.h>
+-#else
+ #include <linux/input.h>
+-#endif
+ 
+ QT_BEGIN_NAMESPACE
+ 
diff --git a/devel/qt6-base/files/patch-src_platformsupport_input_evdevtouch_qevdevtouchhandler.cpp b/devel/qt6-base/files/patch-src_platformsupport_input_evdevtouch_qevdevtouchhandler.cpp
new file mode 100644
index 000000000000..d4f725ce6e87
--- /dev/null
+++ b/devel/qt6-base/files/patch-src_platformsupport_input_evdevtouch_qevdevtouchhandler.cpp
@@ -0,0 +1,14 @@
+--- src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp.orig	2022-05-25 08:58:52 UTC
++++ src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
+@@ -53,11 +53,7 @@
+ 
+ #include <mutex>
+ 
+-#ifdef Q_OS_FREEBSD
+-#include <dev/evdev/input.h>
+-#else
+ #include <linux/input.h>
+-#endif
+ 
+ #ifndef input_event_sec
+ #define input_event_sec time.tv_sec
diff --git a/devel/qt6-base/pkg-descr b/devel/qt6-base/pkg-descr
new file mode 100644
index 000000000000..cc23400cc6b0
--- /dev/null
+++ b/devel/qt6-base/pkg-descr
@@ -0,0 +1,3 @@
+Qt Base 
+
+WWW: https://www.qt.io/
diff --git a/devel/qt6-base/pkg-plist b/devel/qt6-base/pkg-plist
new file mode 100644
index 000000000000..60595f5486d9
--- /dev/null
+++ b/devel/qt6-base/pkg-plist
@@ -0,0 +1,3746 @@
+bin/qmake6
+%%QT_INCDIR%%/QtConcurrent/QtConcurrent
+%%QT_INCDIR%%/QtConcurrent/QtConcurrentDepends
+%%QT_INCDIR%%/QtConcurrent/QtConcurrentFilter
+%%QT_INCDIR%%/QtConcurrent/QtConcurrentMap
+%%QT_INCDIR%%/QtConcurrent/QtConcurrentRun
+%%QT_INCDIR%%/QtConcurrent/QtConcurrentVersion
+%%QT_INCDIR%%/QtConcurrent/qtaskbuilder.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrent_global.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentcompilertest.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentexports.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentfilter.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentfilterkernel.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentfunctionwrappers.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentiteratekernel.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentmap.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentmapkernel.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentmedian.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentreducekernel.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentrun.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentrunbase.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentstoredfunctioncall.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrenttask.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentthreadengine.h
+%%QT_INCDIR%%/QtConcurrent/qtconcurrentversion.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/minimum-linux_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qabstractanimation_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qabstracteventdispatcher_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qabstractfileengine_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qabstractitemmodel_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qabstractproxymodel_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qandroidextras_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qanimationgroup_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qbytearray_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qbytedata_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qcalendarbackend_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qcalendarmath_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qcborcommon_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qcborvalue_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qcfsocketnotifier_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qcoffpeparser_p.h
+%%QT_INCDIR%%/QtCore/%%FULLVER%%/QtCore/private/qcollator_p.h
*** 11194 LINES SKIPPED ***