aboutsummaryrefslogtreecommitdiff
path: root/Mk
diff options
context:
space:
mode:
authorTobias C. Berner <tcberner@FreeBSD.org>2022-08-12 17:55:36 +0000
committerTobias C. Berner <tcberner@FreeBSD.org>2022-08-21 16:42:38 +0000
commit66259c9c641b1fc828becbe2959dbe7380e55fe1 (patch)
tree51cf52052254ebf8e2952a27f6db5f660f617c28 /Mk
parent0ed02853e907e2985aa9e7143c4584122d6fd00a (diff)
downloadports-66259c9c641b1fc828becbe2959dbe7380e55fe1.tar.gz
ports-66259c9c641b1fc828becbe2959dbe7380e55fe1.zip
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
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Uses/qmake.mk2
-rw-r--r--Mk/Uses/qt-dist.mk94
-rw-r--r--Mk/Uses/qt.mk40
3 files changed, 96 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