aboutsummaryrefslogtreecommitdiff
path: root/Mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Scripts/qa.sh28
-rw-r--r--Mk/Uses/kde.mk300
2 files changed, 315 insertions, 13 deletions
diff --git a/Mk/Scripts/qa.sh b/Mk/Scripts/qa.sh
index 3edd5c53e751..699c3e82d462 100644
--- a/Mk/Scripts/qa.sh
+++ b/Mk/Scripts/qa.sh
@@ -68,7 +68,7 @@ shebang() {
local f l link rc
rc=0
-
+
while read f; do
# No results presents a blank line from heredoc.
[ -z "${f}" ] && continue
@@ -478,6 +478,32 @@ proxydeps_suggest_uses() {
elif [ ${pkg} = "x11/qimageblitz" ]; then warn "you need to use USE_KDE+=qimageblitz"
elif [ ${pkg} = "textproc/soprano" ]; then warn "you need to use USE_KDE+=soprano"
elif [ ${pkg} = "deskutils/libstreamanalyzer" ]; then warn "you need to use USE_KDE+=strigi"
+ # KDE Frameworks
+ elif [ ${pkg} = "devel/kf5-extra-cmake-modules" ]; then warn "you need to use USE_KDE+=ecm"
+ elif [ ${pkg} = "devel/kf5-kcmutils" ]; then warn "you need to use USE_KDE+=kcmutils"
+ elif [ ${pkg} = "devel/kf5-kdeclarative" ]; then warn "you need to use USE_KDE+=kdeclarative"
+ elif [ ${pkg} = "devel/kf5-kfilemetadata" ]; then warn "you need to use USE_KDE+=filemetadata5"
+ elif [ ${pkg} = "devel/kf5-kio" ]; then warn "you need to use USE_KDE+=kio"
+ elif [ ${pkg} = "devel/kf5-solid" ]; then warn "you need to use USE_KDE+=solid"
+ elif [ ${pkg} = "devel/kf5-threadweaver" ]; then warn "you need to use USE_KDE+=threadweaver"
+ elif [ ${pkg} = "devel/kio-extras-kf5" ]; then warn "you need to use USE_KDE+=kio-extras"
+ elif [ ${pkg} = "graphics/kf5-kimageformats" ]; then warn "you need to use USE_KDE+=kimageformats"
+ elif [ ${pkg} = "lang/kf5-kross" ]; then warn "you need to use USE_KDE+=kross"
+ elif [ ${pkg} = "security/kf5-kdesu" ]; then warn "you need to use USE_KDE+=kdesu"
+ elif [ ${pkg} = "sysutils/kf5-baloo" ]; then warn "you need to use USE_KDE+=baloo5"
+ elif [ ${pkg} = "sysutils/kf5-bluez-qt" ]; then warn "you need to use USE_KDE+=bluez-qt"
+ elif [ ${pkg} = "textproc/kf5-sonnet" ]; then warn "you need to use USE_KDE+=sonnet"
+ elif [ ${pkg} = "www/kf5-kdewebkit" ]; then warn "you need to use USE_KDE+=kdewebkit"
+ elif [ ${pkg} = "www/kf5-khtml" ]; then warn "you need to use USE_KDE+=khtml"
+ elif [ ${pkg} = "x11-themes/kf5-breeze-icons" ]; then warn "you need to use USE_KDE+=breeze-icons"
+ elif [ ${pkg} = "x11-themes/kf5-oxygen-icons5" ]; then warn "you need to use USE_KDE+=oxygen-icons5"
+ elif [ ${pkg} = "x11-toolkits/kf5-attica" ]; then warn "you need to use USE_KDE+=attica5"
+ elif [ ${pkg} = "x11/kf5-frameworkintegration" ]; then warn "you need to use USE_KDE+=frameworkintegration"
+ elif [ ${pkg} = "x11/kf5-kded" ]; then warn "you need to use USE_KDE+=kded"
+ elif [ ${pkg} = "x11/kf5-kdelibs4support" ]; then warn "you need to use USE_KDE+=kdelibs4support"
+ elif [ ${pkg} = "x11/kf5-plasma-framework" ]; then warn "you need to use USE_KDE+=plasma-framework"
+ elif expr ${pkg} : '.*/kf5-.*' > /dev/null; then
+ warn "you need USE_KDE+=$(echo ${pkg} | sed -E 's|.*/kf5-k||')"
# sdl-related
elif [ ${pkg} = 'devel/sdl12' ]; then
warn "you need USE_SDL+=sdl"
diff --git a/Mk/Uses/kde.mk b/Mk/Uses/kde.mk
index 0dbc952882da..973790104b3f 100644
--- a/Mk/Uses/kde.mk
+++ b/Mk/Uses/kde.mk
@@ -1,25 +1,26 @@
# $FreeBSD$
#
-# Provides support for KDE-based ports.
+# Provides support for KDE and KF5-based ports.
#
# Feature: kde
-# Usage: USES=kde:ARGS
-# Valid ARGS: 4
+# Valid ARGS: 4 5
#
-# 4: Depend on KDE4 components and variables.
+# 4: Depend on KDE4 components and variables.
+# 5: Depend on KDE Frameworks 5 components and variables.
#
# Variables that can be set by a port:
#
-# USE_KDE List of KDE4 components (other ports) that this
+# USE_KDE List of KDE4/KF5/Plasma5 components (other ports) that this
# port depends on.
# * foo_build Add a build-time dependency (BUILD_DEPENDS)
# * foo_run Add a run-time dependency (RUN_DEPENDS)
-# * foo (default) Add both dependencies on component <foo>
-#
+# * foo (default) Add both dependencies on component <foo>, or
+# a LIB_DEPENDS if applicable.
#
# To simplify the ports, also:
# CATEGORIES If the port is part of one of the KDE Software distribution,
# it can add, in addition to 'kde' one of the following:
+# kde-frameworks: part of frameworks release
# kde-kde4: part of kde4 release
# this will then set default values for MASTER_SITES and DIST_SUBDIR
# as well as CPE_VENDOR and LICENSE.
@@ -29,13 +30,12 @@
.if !defined(_INCLUDE_USES_KDE_MK)
_INCLUDE_USES_KDE_MK= yes
-_KDE_SUPPORTED= 4
+_KDE_SUPPORTED= 4 5
. if empty(kde_ARGS)
IGNORE= kde needs a version (${_KDE_SUPPORTED})
. endif
-# At the moment we support KDE versions 4.
. for ver in ${_KDE_SUPPORTED:O:u}
. if ${kde_ARGS:M${ver}}
. if !defined(_KDE_VERSION)
@@ -64,6 +64,10 @@ KDE4_APPLICATIONS_BRANCH?= Attic
KDE4_APPLICATIONS_VERSION?= 15.04.3
KDE4_BRANCH?= stable
+# Current KDE desktop.
+KDE_FRAMEWORKS_VERSION?= 5.27.0
+KDE_FRAMEWORKS_BRANCH?= stable
+
# Extended KDE universe applications.
CALLIGRA_VERSION?= 2.9.11
CALLIGRA_BRANCH?= stable
@@ -75,14 +79,14 @@ KTP_VERSION?= 0.9.0
KTP_BRANCH?= stable
# ==============================================================================
-# === INSTALLATION PREFIX ======================================================
-# Define installation prefix.
+# === INSTALLATION PREFIXES AND HEADER LOCATION ================================
+# Define unversioned prefix variable.
KDE_PREFIX= ${LOCALBASE}
# ==============================================================================
# === CATEGORIES HANDLING -- SETTING DEFAULT VALUES ============================
# Doing MASTER_SITES magic based on the category of the port
-_KDE_CATEGORIES_SUPPORTED= kde-kde4
+_KDE_CATEGORIES_SUPPORTED= kde-frameworks kde-kde4
. for cat in ${_KDE_CATEGORIES_SUPPORTED}
. if ${CATEGORIES:M${cat}}
. if !defined(_KDE_CATEGORY)
@@ -106,10 +110,17 @@ CPE_VENDOR?= kde
PORTVERSION?= ${KDE4_VERSION}
MASTER_SITES?= KDE/${KDE4_BRANCH}/${KDE4_VERSION}/src
DIST_SUBDIR?= KDE/${KDE4_VERSION}
+. elif ${_KDE_CATEGORY:Mkde-frameworks}
+PORTVERSION?= ${KDE_FRAMEWORKS_VERSION}
+PKGNAMEPREFIX?= kf5-
+MASTER_SITES?= KDE/${KDE_FRAMEWORKS_BRANCH}/frameworks/${KDE_FRAMEWORKS_VERSION:R} \
+ KDE/${KDE_FRAMEWORKS_BRANCH}/frameworks/${KDE_FRAMEWORKS_VERSION:R}/portingAids
+DIST_SUBDIR?= KDE/frameworks/${KDE_FRAMEWORKS_VERSION}
. else
IGNORE?= unknown CATEGORY value '${_KDE_CATEGORY}' #'
. endif
. endif #defined(_KDE_CATEGORY)
+
# ==============================================================================
# ==== SETUP CMAKE ENVIRONMENT =================================================
@@ -118,6 +129,13 @@ CMAKE_ARGS+= -DCMAKE_PREFIX_PATH="${LOCALBASE}"
. if ${_KDE_VERSION:M*4*}
CMAKE_ARGS+= -DKDE4_BUILD_TESTS:BOOL=OFF
+. elif ${_KDE_VERSION:M*5*}
+# We set KDE_INSTALL_USE_QT_SYS_PATHS to install mkspecs files, plugins and
+# imports to the Qt 5 install directory.
+CMAKE_ARGS+= -DBUILD_TESTING:BOOL=OFF \
+ -DCMAKE_MODULE_PATH="${LOCALBASE};${KDE_PREFIX}" \
+ -DCMAKE_INSTALL_PREFIX="${KDE_PREFIX}" \
+ -DKDE_INSTALL_USE_QT_SYS_PATHS:BOOL=TRUE
. endif
# Set man-page installation prefix.
@@ -137,6 +155,8 @@ PLIST_SUB+= KDE4_VERSION="${KDE4_VERSION}" \
KDE4_NON_GENERIC_LIB_VERSION=${KDE4_KDELIBS_VERSION:S,^4,5,} \
KDE4_KDELIBS_VERSION=${KDE4_KDELIBS_VERSION} \
KDE4_NG_KDELIBS_VERSION=${KDE4_KDELIBS_VERSION:S,^4,5,}
+. elif ${_KDE_VERSION:M*5*}
+PLIST_SUB+= KDE_FRAMEWORKS_VERSION="${KDE_FRAMEWORKS_VERSION}"
. endif
# ==============================================================================
@@ -164,6 +184,51 @@ _USE_KDE4_ALL= baloo baloo-widgets baseapps kactivities kate kdelibs \
_USE_KDE4_ALL+= akonadi attica automoc4 ontologies qimageblitz soprano \
strigi
+# List of components of the KDE Frameworks distribution.
+# The *_TIER<n> variables are internal, primarily for checking
+# that our list of frameworks matches the structure offered upstream.
+_USE_FRAMEWORKS_TIER1= apidox archive attica5 breeze-icons codecs config \
+ coreaddons dbusaddons dnssd i18n idletime itemmodels \
+ itemviews oxygen-icons5 plotting solid sonnet \
+ threadweaver widgetsaddons windowsystem
+# NOT LISTED TIER1: modemmanagerqt networkmanagerqt (not applicable)
+# NOT LISTED TIER1: syntaxhighlighting (new in 5.28)
+# NOT LISTED TIER1: wayland (needs graphics/wayland)
+
+_USE_FRAMEWORKS_TIER2= auth completion crash doctools filemetadata5 \
+ kimageformats jobwidgets notifications package \
+ pty unitconversion
+# NOT LISTED TIER2: activities-stats (runtime requires x11/plasma5-kactivitymanagerd)
+
+_USE_FRAMEWORKS_TIER3= activities baloo5 bookmarks configwidgets \
+ designerplugin emoticons globalaccel guiaddons \
+ iconthemes init kcmutils kconfigwidgets kdeclarative \
+ kded kdesu kdewebkit kio newstuff notifyconfig parts \
+ people plasma-framework runner service texteditor \
+ textwidgets wallet xmlgui xmlrpcclient
+
+_USE_FRAMEWORKS_TIER4= frameworkintegration
+
+# Porting Aids frameworks provide code and utilities to ease the transition from
+# kdelibs 4 to KDE Frameworks 5. Code should aim to port away from this framework,
+# new projects should avoid using these libraries.
+_USE_FRAMEWORKS_PORTING=js jsembed kdelibs4support khtmlmediaplayer kross
+
+# These are weird items: not officially released as Frameworks, but
+# required by them (and from KDE).
+# - kirigami https://dot.kde.org/2016/03/30/kde-proudly-presents-kirigami-ui
+_USE_FRAMEWORKS_EXTRA= kirigami
+
+_USE_FRAMEWORKS_ALL= ecm \
+ ${_USE_FRAMEWORKS_TIER1} \
+ ${_USE_FRAMEWORKS_TIER2} \
+ ${_USE_FRAMEWORKS_TIER3} \
+ ${_USE_FRAMEWORKS_TIER4} \
+ ${_USE_FRAMEWORKS_PORTING} \
+ ${_USE_FRAMEWORKS_EXTRA}
+
+_USE_KDE5_ALL= ${_USE_FRAMEWORKS_ALL}
+
# ====================== kde4 components =======================================
baloo_PORT= sysutils/baloo
baloo_LIB= libbaloocore.so
@@ -295,6 +360,217 @@ strigi_PORT= deskutils/libstreamanalyzer
strigi_LIB= libstreamanalyzer.so.0
# ====================== end of kde4 components ================================
+# ====================== frameworks components =================================
+activities_PORT= x11/kf5-kactivities
+activities_LIB= libKF5Activities.so
+
+apidox_PORT= devel/kf5-kapidox
+apidox_PATH= ${KDE_PREFIX}/bin/kapidox_generate
+apidox_TYPE= run
+
+archive_PORT= archivers/kf5-karchive
+archive_LIB= libKF5Archive.so
+
+attica5_PORT= x11-toolkits/kf5-attica
+attica5_LIB= libKF5Attica.so
+
+auth_PORT= devel/kf5-kauth
+auth_LIB= libKF5Auth.so
+
+baloo5_PORT= sysutils/kf5-baloo
+baloo5_LIB= libKF5Baloo.so
+
+bookmarks_PORT= devel/kf5-kbookmarks
+bookmarks_LIB= libKF5Bookmarks.so
+
+breeze-icons_PORT= x11-themes/kf5-breeze-icons
+breeze-icons_PATH= ${KDE_PREFIX}/share/icons/breeze/index.theme
+breeze-icons_TYPE= run
+
+codecs_PORT= textproc/kf5-kcodecs
+codecs_LIB= libKF5Codecs.so
+
+completion_PORT= x11-toolkits/kf5-kcompletion
+completion_LIB= libKF5Completion.so
+
+config_PORT= devel/kf5-kconfig
+config_LIB= libKF5ConfigCore.so
+
+configwidgets_PORT= x11-toolkits/kf5-kconfigwidgets
+configwidgets_LIB= libKF5ConfigWidgets.so
+
+coreaddons_PORT= devel/kf5-kcoreaddons
+coreaddons_LIB= libKF5CoreAddons.so
+
+crash_PORT= devel/kf5-kcrash
+crash_LIB= libKF5Crash.so
+
+dbusaddons_PORT= devel/kf5-kdbusaddons
+dbusaddons_LIB= libKF5DBusAddons.so
+
+designerplugin_PORT= x11-toolkits/kf5-kdesignerplugin
+designerplugin_PATH= ${QT_PLUGINDIR}/designer/kf5widgets.so
+designerplugin_TYPE= run
+
+dnssd_PORT= dns/kf5-kdnssd
+dnssd_LIB= libKF5DNSSD.so
+
+doctools_PORT= devel/kf5-kdoctools
+doctools_PATH= ${KDE_PREFIX}/bin/meinproc5
+
+ecm_PORT= devel/kf5-extra-cmake-modules
+ecm_PATH= ${LOCALBASE}/share/ECM/cmake/ECMConfig.cmake
+
+emoticons_PORT= x11-themes/kf5-kemoticons
+emoticons_LIB= libKF5Emoticons.so
+
+filemetadata5_PORT= devel/kf5-kfilemetadata
+filemetadata5_LIB= libKF5FileMetaData.so
+
+frameworkintegration_PORT= x11/kf5-frameworkintegration
+frameworkintegration_LIB= libKF5Style.so
+
+globalaccel_PORT= x11/kf5-kglobalaccel
+globalaccel_LIB= libKF5GlobalAccel.so
+
+guiaddons_PORT= x11-toolkits/kf5-kguiaddons
+guiaddons_LIB= libKF5GuiAddons.so
+
+i18n_PORT= devel/kf5-ki18n
+i18n_LIB= libKF5I18n.so
+
+iconthemes_PORT= x11-themes/kf5-kiconthemes
+iconthemes_LIB= libKF5IconThemes.so
+
+idletime_PORT= devel/kf5-kidletime
+idletime_LIB= libKF5IdleTime.so
+
+init_PORT= x11/kf5-kinit
+init_PATH= ${KDE_PREFIX}/bin/kdeinit5
+
+itemmodels_PORT= devel/kf5-kitemmodels
+itemmodels_LIB= libKF5ItemModels.so
+
+itemviews_PORT= x11-toolkits/kf5-kitemviews
+itemviews_LIB= libKF5ItemViews.so
+
+jobwidgets_PORT= x11-toolkits/kf5-kjobwidgets
+jobwidgets_LIB= libKF5JobWidgets.so
+
+js_PORT= www/kf5-kjs
+js_LIB= libKF5JS.so
+
+jsembed_PORT= www/kf5-kjsembed
+jsembed_LIB= libKF5JsEmbed.so
+
+kcmutils_PORT= devel/kf5-kcmutils
+kcmutils_LIB= libKF5KCMUtils.so
+
+kdeclarative_PORT= devel/kf5-kdeclarative
+kdeclarative_LIB= libKF5Declarative.so
+
+kded_PORT= x11/kf5-kded
+kded_LIB= libkdeinit5_kded5.so
+
+kdelibs4support_PORT= x11/kf5-kdelibs4support
+kdelibs4support_LIB= libKF5KDELibs4Support.so
+
+kdesu_PORT= security/kf5-kdesu
+kdesu_LIB= libKF5Su.so
+
+kdewebkit_PORT= www/kf5-kdewebkit
+kdewebkit_LIB= libKF5WebKit.so
+
+khtml_PORT= www/kf5-khtml
+khtml_LIB= libKF5KHtml.so
+
+kimageformats_PORT= graphics/kf5-kimageformats
+kimageformats_PATH= ${QT_PLUGINDIR}/imageformats/kimg_xcf.so
+kimageformats_TYPE= run
+
+kio_PORT= devel/kf5-kio
+kio_LIB= libKF5KIOCore.so
+
+kirigami_PATH= ${QT_QMLDIR}/org/kde/kirigami/libkirigamiplugin.so
+kirigami_PORT= x11-toolkits/kirigami
+
+kross_PORT= lang/kf5-kross
+kross_LIB= libKF5KrossCore.so
+
+mediaplayer_PORT= multimedia/kf5-kmediaplayer
+mediaplayer_LIB= libKF5MediaPlayer.so.5
+
+newstuff_PORT= devel/kf5-knewstuff
+newstuff_LIB= libKF5NewStuff.so
+
+notifications_PORT= devel/kf5-knotifications
+notifications_LIB= libKF5Notifications.so
+
+notifyconfig_PORT= devel/kf5-knotifyconfig
+notifyconfig_LIB= libKF5NotifyConfig.so
+
+oxygen-icons5_PORT= x11-themes/kf5-oxygen-icons5
+oxygen-icons5_PATH= ${KDE_PREFIX}/share/icons/oxygen/index.theme
+oxygen-icons5_TYPE= run
+
+package_PORT= devel/kf5-kpackage
+package_LIB= libKF5Package.so
+
+parts_PORT= devel/kf5-kparts
+parts_LIB= libKF5Parts.so
+
+people_PORT= devel/kf5-kpeople
+people_LIB= libKF5People.so
+
+plasma-framework_PORT= x11/kf5-plasma-framework
+plasma-framework_LIB= libKF5Plasma.so
+
+plotting_PORT= graphics/kf5-kplotting
+plotting_LIB= libKF5Plotting.so
+
+pty_PORT= devel/kf5-kpty
+pty_LIB= libKF5Pty.so
+
+runner_PORT= x11/kf5-krunner
+runner_LIB= libKF5Runner.so
+
+service_PORT= devel/kf5-kservice
+service_PATH= ${KDE_PREFIX}/bin/kbuildsycoca5
+
+solid_PORT= devel/kf5-solid
+solid_LIB= libKF5Solid.so
+
+sonnet_PORT= textproc/kf5-sonnet
+sonnet_LIB= libKF5SonnetCore.so
+
+texteditor_PORT= devel/kf5-ktexteditor
+texteditor_LIB= libKF5TextEditor.so
+
+textwidgets_PORT= x11-toolkits/kf5-ktextwidgets
+textwidgets_LIB= libKF5TextWidgets.so
+
+threadweaver_PORT= devel/kf5-threadweaver
+threadweaver_LIB= libKF5ThreadWeaver.so
+
+unitconversion_PORT= devel/kf5-kunitconversion
+unitconversion_LIB= libKF5UnitConversion.so
+
+wallet_PORT= sysutils/kf5-kwallet
+wallet_LIB= libKF5Wallet.so
+
+widgetsaddons_PORT= x11-toolkits/kf5-kwidgetsaddons
+widgetsaddons_LIB= libKF5WidgetsAddons.so
+
+windowsystem_PORT= x11/kf5-kwindowsystem
+windowsystem_LIB= libKF5WindowSystem.so
+
+xmlgui_PORT= x11-toolkits/kf5-kxmlgui
+xmlgui_LIB= libKF5XmlGui.so
+
+xmlrpcclient_PORT= net/kf5-kxmlrpcclient
+xmlrpcclient_LIB= libKF5XmlRpcClient.so
+# ====================== end of frameworks components ==========================
+
# end of component list ########################################################
_USE_KDE_ALL= ${_USE_${_KDE_RELNAME}_ALL}