1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-16 03:24:07 +00:00
freebsd-ports/Mk/Uses/kde.mk
2016-10-29 11:58:16 +00:00

342 lines
10 KiB
Makefile

# $FreeBSD$
#
# Provides support for KDE-based ports.
#
# Feature: kde
# Usage: USES=kde:ARGS
# Valid ARGS: 4
#
# 4: Depend on KDE4 components and variables.
#
# Variables that can be set by a port:
#
# USE_KDE List of KDE4 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>
#
#
# 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-kde4: part of kde4 release
# this will then set default values for MASTER_SITES and DIST_SUBDIR
# as well as CPE_VENDOR and LICENSE.
#
# MAINTAINER: kde@FreeBSD.org
.if !defined(_INCLUDE_USES_KDE_MK)
_INCLUDE_USES_KDE_MK= yes
_KDE_SUPPORTED= 4
. 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)
_KDE_VERSION= ${ver}
. else
IGNORE?= cannot be installed: different KDE versions specified via kde:[${_KDE_SUPPORTED:S/ //g}] #'
. endif
. endif
. endfor
. if empty(_KDE_VERSION)
IGNORE?= kde:[${_KDE_SUPPORTED:S/ //g}] needs an argument #'
. endif
_KDE_RELNAME= KDE${_KDE_VERSION}
# === VERSIONS OF THE DIFFERENT COMPONENTS =====================================
# Old KDE desktop.
KDE4_VERSION?= 4.14.3
KDE4_KDELIBS_VERSION= 4.14.10
KDE4_ACTIVITIES_VERSION= 4.13.3
KDE4_WORKSPACE_VERSION= 4.11.21
KDE4_KDEPIM_VERSION?= 4.14.10
# Applications version for the kde4-applications.
KDE4_APPLICATIONS_BRANCH?= Attic
KDE4_APPLICATIONS_VERSION?= 15.04.3
KDE4_BRANCH?= stable
# Extended KDE universe applications.
CALLIGRA_VERSION?= 2.9.11
CALLIGRA_BRANCH?= stable
KDEVELOP_VERSION?= 4.7.3
KDEVELOP_BRANCH?= stable
KTP_VERSION?= 0.9.0
KTP_BRANCH?= stable
# ==============================================================================
# === INSTALLATION PREFIX ======================================================
# Define installation prefix.
KDE_PREFIX= ${LOCALBASE}
# ==============================================================================
# === _KDE_DIST HANDLING -- SETTING DEFAULT VALUES =============================
# Doing MASTER_SITES magic based on the category of the port
_KDE_CATEGORIES_SUPPORTED= kde-kde4
. for cat in ${_KDE_CATEGORIES_SUPPORTED}
. if ${CATEGORIES:M${cat}}
. if !defined(_KDE_CATEGORY)
_KDE_CATEGORY= ${cat}
. else
IGNORE?= cannot be installed: multiple kde-<...> categories specified via CATEGORIES=${CATEGORIES} #'
. endif
. endif
. endfor
. if defined(_KDE_CATEGORY)
# KDE is normally licencensed LGPL 2.0.
LICENSE?= LGPL20
# Set CPE Vendor Information
# As KDE_DIST is set we can assume it is port release by KDE and the vendor
# is therefore kde.
CPE_VENDOR?= kde
. if ${_KDE_CATEGORY:Mkde-kde4}
PORTVERSION?= ${KDE4_VERSION}
MASTER_SITES?= KDE/${KDE4_BRANCH}/${KDE4_VERSION}/src
DIST_SUBDIR?= KDE/${KDE4_VERSION}
. else
IGNORE?= unknown CATEGORY value '${_KDE_CATEGORY}' #'
. endif
. endif #defined(_KDE_CATEGORY)
# ==============================================================================
# ==== SETUP CMAKE ENVIRONMENT =================================================
# Help cmake to find files when testing ports with non-default PREFIX.
CMAKE_ARGS+= -DCMAKE_PREFIX_PATH="${LOCALBASE}"
. if ${_KDE_VERSION:M*4*}
CMAKE_ARGS+= -DKDE4_BUILD_TESTS:BOOL=OFF
. endif
# Set man-page installation prefix.
CMAKE_ARGS+= -DKDE_INSTALL_MANDIR:PATH="${KDE_PREFIX}/man" \
-DMAN_INSTALL_DIR:PATH="${KDE_PREFIX}/man"
# ==============================================================================
# === SET-UP PLIST_SUB =========================================================
# Prefix and include directory.
PLIST_SUB+= KDE_PREFIX="${KDE_PREFIX}"
# KDE Applications version.
PLIST_SUB+= KDE_APPLICATIONS_VERSION="${KDE_APPLICATIONS_VERSION}"
# For KDE4 applications provide KDE4 version numbers.
. if ${_KDE_VERSION:M*4*}
PLIST_SUB+= KDE4_VERSION="${KDE4_VERSION}" \
KDE4_GENERIC_LIB_VERSION=${KDE4_KDELIBS_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,}
. endif
# ==============================================================================
# === HANDLE PYTHON ============================================================
# TODO: Keep in sync with cmake/modules/PythonMacros.cmake
_PYTHON_SHORT_VER= ${PYTHON_VERSION:S/^python//:S/.//}
. if ${_PYTHON_SHORT_VER} > 31
PLIST_SUB+= PYCACHE="__pycache__/" \
PYC_SUFFIX=cpython-${_PYTHON_SHORT_VER}.pyc \
PYO_SUFFIX=cpython-${_PYTHON_SHORT_VER}.pyo
. else
PLIST_SUB+= PYCACHE="" \
PYC_SUFFIX=pyc \
PYO_SUFFIX=pyo
. endif
# ==============================================================================
_USE_KDE4_ALL= baloo baloo-widgets baseapps kactivities kate kdelibs \
kfilemetadata korundum libkcddb libkcompactdisc \
libkdcraw libkdeedu libkdegames libkexiv2 libkipi \
libkonq libksane marble nepomuk-core nepomuk-widgets \
okular oxygen-icons4 perlkde perlqt pimlibs pykde4 \
pykdeuic4 qtruby runtime smokegen smokekde smokeqt \
workspace
# These components are not part of the Software Compilation.
_USE_KDE4_ALL+= akonadi attica automoc4 ontologies qimageblitz soprano \
strigi
# ====================== kde4 components =======================================
baloo_PORT= sysutils/baloo
baloo_LIB= libbaloocore.so
baloo-widgets_PORT= sysutils/baloo-widgets
baloo-widgets_LIB= libbaloowidgets.so
baseapps_PORT= x11/kde4-baseapps
baseapps_PATH= ${KDE_PREFIX}/bin/kfmclient
baseapps_TYPE= run
kactivities_PORT= x11/kactivities
kactivities_LIB= libkactivities.so
kate_PORT= editors/kate
kate_LIB= libkateinterfaces.so
kdelibs_PORT= x11/kdelibs4
kdelibs_LIB= libkdecore.so
kfilemetadata_PORT= sysutils/kfilemetadata
kfilemetadata_LIB= libkfilemetadata.so
korundum_PORT= devel/ruby-korundum
korundum_PATH= ${KDE_PREFIX}/lib/kde4/krubypluginfactory.so
korundum_TYPE= run
libkcddb_PORT= audio/libkcddb
libkcddb_LIB= libkcddb.so
libkcompactdisc_PORT= audio/libkcompactdisc
libkcompactdisc_LIB= libkcompactdisc.so
libkdcraw_PORT= graphics/libkdcraw-kde4
libkdcraw_LIB= libkdcraw.so
libkdeedu_PORT= misc/libkdeedu
libkdeedu_LIB= libkeduvocdocument.so
libkdegames_PORT= games/libkdegames
libkdegames_LIB= libkdegames.so
libkexiv2_PORT= graphics/libkexiv2-kde4
libkexiv2_LIB= libkexiv2.so
libkipi_PORT= graphics/libkipi-kde4
libkipi_LIB= libkipi.so
libkonq_PORT= x11/libkonq
libkonq_LIB= libkonq.so
libksane_PORT= graphics/libksane
libksane_LIB= libksane.so
marble_PORT= astro/marble
marble_LIB= libmarblewidget.so
nepomuk-core_PORT= sysutils/nepomuk-core
nepomuk-core_LIB= libnepomukcore.so
nepomuk-widgets_PORT= sysutils/nepomuk-widgets
nepomuk-widgets_LIB= libnepomukwidgets.so
okular_PORT= graphics/okular
okular_LIB= libokularcore.so
oxygen-icons4_PORT= x11-themes/kde4-icons-oxygen
oxygen-icons4_PATH= ${KDE_PREFIX}/share/icons/oxygen/index.theme
oxygen-icons4_TYPE= run
perlkde_PORT= devel/p5-perlkde
perlkde_PATH= ${KDE_PREFIX}/lib/kde4/kperlpluginfactory.so
perlkde_TYPE= run
perlqt_PORT= devel/p5-perlqt
perlqt_PATH= ${KDE_PREFIX}/bin/puic4
pimlibs_PORT= deskutils/kdepimlibs4
pimlibs_LIB= libkpimutils.so
pykde4_PORT= devel/py-pykde4
pykde4_PATH= ${KDE_PREFIX}/lib/kde4/kpythonpluginfactory.so
pykde4_TYPE= run
pykdeuic4_PORT= devel/py-pykdeuic4
pykdeuic4_PATH= ${LOCALBASE}/bin/pykdeuic4
pykdeuic4_TYPE= run
qtruby_PORT= devel/ruby-qtruby
qtruby_LIB= libqtruby4shared.so
runtime_PORT= x11/kde4-runtime
runtime_PATH= ${KDE_PREFIX}/bin/knotify4
runtime_TYPE= run
smokegen_PORT= devel/smokegen
smokegen_LIB= libsmokebase.so
smokekde_PORT= devel/smokekde
smokekde_LIB= libsmokekdecore.so
smokeqt_PORT= devel/smokeqt
smokeqt_LIB= libsmokeqtcore.so
workspace_PORT= x11/kde4-workspace
workspace_LIB= libkworkspace.so
# Non-Software Compilation components
akonadi_PORT= databases/akonadi
akonadi_LIB= libakonadiprotocolinternals.so
attica_PORT= x11-toolkits/attica
attica_LIB= libattica.so
automoc4_PORT= devel/automoc4
automoc4_PATH= ${LOCALBASE}/bin/automoc4
automoc4_TYPE= build
ontologies_PORT= x11-toolkits/shared-desktop-ontologies
ontologies_PATH= ${LOCALBASE}/share/ontology/core/rdf.ontology
qimageblitz_PORT= x11/qimageblitz
qimageblitz_LIB= libqimageblitz.so
soprano_PORT= textproc/soprano
soprano_LIB= libsoprano.so
strigi_PORT= deskutils/libstreamanalyzer
strigi_LIB= libstreamanalyzer.so.0
# ====================== end of kde4 components ================================
# end of component list ########################################################
_USE_KDE_ALL= ${_USE_${_KDE_RELNAME}_ALL}
# Iterate through components deprived of suffix.
. for component in ${USE_KDE:O:u:C/_.+//}
# Check that the component is valid.
. if ${_USE_KDE_ALL:M${component}} != ""
# Skip meta-components (currently none).
. if defined(${component}_PORT) && (defined(${component}_PATH) || defined(${component}_LIB))
# Check if a dependency type is explicitly requested.
. if ${USE_KDE:M${component}_*} != "" && ${USE_KDE:M${component}} == ""
${component}_TYPE= # empty
. if ${USE_KDE:M${component}_build} != ""
${component}_TYPE+= build
. endif
. if ${USE_KDE:M${component}_run} != ""
${component}_TYPE+= run
. endif
. endif # ${USE_KDE:M${component}_*} != "" && ${USE_KDE:M${component}} == ""
# If no dependency type is set, default to full dependency.
. if !defined(${component}_TYPE)
${component}_TYPE= build run
. endif
# Set real dependencies.
. if defined(${component}_LIB) && ${${component}_TYPE:Mbuild} && ${${component}_TYPE:Mrun}
LIB_DEPENDS+= ${${component}_LIB}:${${component}_PORT}
. else
${component}_PATH?= ${KDE_PREFIX}/lib/${${component}_LIB}
${component}_DEPENDS= ${${component}_PATH}:${${component}_PORT}
. if ${${component}_TYPE:Mbuild} != ""
BUILD_DEPENDS+= ${${component}_DEPENDS}
. endif
. if ${${component}_TYPE:Mrun} != ""
RUN_DEPENDS+= ${${component}_DEPENDS}
. endif
. endif # ${${component}_LIB} && ${${component}_TYPE:Mbuild} && ${${component}_TYPE:Mrun}
. endif # defined(${component}_PORT) && defined(${component}_PATH)
. else # ! ${_USE_KDE_ALL:M${component}} != ""
IGNORE= cannot be installed: unknown USE_KDE component '${component}'
. endif # ${_USE_KDE_ALL:M${component}} != ""
. endfor
.endif