diff options
author | Tobias C. Berner <tcberner@FreeBSD.org> | 2022-08-12 17:55:36 +0000 |
---|---|---|
committer | Tobias C. Berner <tcberner@FreeBSD.org> | 2022-08-21 16:42:38 +0000 |
commit | 66259c9c641b1fc828becbe2959dbe7380e55fe1 (patch) | |
tree | 51cf52052254ebf8e2952a27f6db5f660f617c28 /Mk | |
parent | 0ed02853e907e2985aa9e7143c4584122d6fd00a (diff) | |
download | ports-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.mk | 2 | ||||
-rw-r--r-- | Mk/Uses/qt-dist.mk | 94 | ||||
-rw-r--r-- | Mk/Uses/qt.mk | 40 |
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 |