summaryrefslogtreecommitdiff
path: root/eclass/wxwidgets.eclass
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /eclass/wxwidgets.eclass
reinit the tree, so we can have metadata
Diffstat (limited to 'eclass/wxwidgets.eclass')
-rw-r--r--eclass/wxwidgets.eclass139
1 files changed, 139 insertions, 0 deletions
diff --git a/eclass/wxwidgets.eclass b/eclass/wxwidgets.eclass
new file mode 100644
index 000000000000..63e8e22e64c0
--- /dev/null
+++ b/eclass/wxwidgets.eclass
@@ -0,0 +1,139 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: wxwidgets.eclass
+# @MAINTAINER:
+# wxwidgets@gentoo.org
+# @BLURB: Manages build configuration for wxGTK-using packages.
+# @DESCRIPTION:
+# This eclass sets up the proper environment for ebuilds using the wxGTK
+# libraries. Ebuilds using wxPython do not need to inherit this eclass.
+#
+# More specifically, this eclass controls the configuration chosen by the
+# /usr/bin/wx-config wrapper.
+#
+# Using the eclass is simple:
+#
+# - set WX_GTK_VER equal to a SLOT of wxGTK
+# - call setup-wxwidgets()
+#
+# The configuration chosen is based on the version required and the flags
+# wxGTK was built with.
+
+if [[ -z ${_WXWIDGETS_ECLASS} ]]; then
+
+case ${EAPI} in
+ 0|1|2|3|4|5)
+ inherit eutils flag-o-matic multilib
+
+ # This was used to set up a sane default for ebuilds so they could
+ # avoid calling need-wxwidgets if they didn't need a particular build.
+ # This was a bad idea for a couple different reasons, and because
+ # get_libdir() is now illegal in global scope in EAPI 6 we can't do it
+ # anymore. All ebuilds must now use setup-wxwidgets and this code is
+ # only here for backwards compatability.
+ if [[ -z ${WX_CONFIG} ]]; then
+ if [[ -n ${WX_GTK_VER} ]]; then
+ for _wxtoolkit in mac gtk2 base; do
+ # newer versions don't have a seperate debug config
+ for _wxdebug in xxx release- debug-; do
+ _wxconf="${_wxtoolkit}-unicode-${_wxdebug/xxx/}${WX_GTK_VER}"
+
+ [[ -f ${EPREFIX}/usr/$(get_libdir)/wx/config/${_wxconf} ]] \
+ || continue
+
+ WX_CONFIG="${EPREFIX}/usr/$(get_libdir)/wx/config/${_wxconf}"
+ WX_ECLASS_CONFIG="${WX_CONFIG}"
+ break
+ done
+ [[ -n ${WX_CONFIG} ]] && break
+ done
+ [[ -n ${WX_CONFIG} ]] && export WX_CONFIG WX_ECLASS_CONFIG
+ fi
+ fi
+ unset _wxtoolkit
+ unset _wxdebug
+ unset _wxconf
+ ;;
+ 6)
+ inherit flag-o-matic multilib
+ ;;
+ *)
+ die "EAPI=${EAPI:-0} is not supported"
+ ;;
+esac
+
+# @FUNCTION: setup-wxwidgets
+# @DESCRIPTION:
+#
+# Call this in your ebuild to set up the environment for wxGTK. Besides
+# controlling the wx-config wrapper this exports WX_CONFIG containing
+# the path to the config in case it needs to be passed to a build system.
+#
+# In wxGTK-2.9 and later it also controls the level of debugging output
+# from the libraries. In these versions debugging features are enabled
+# by default and need to be disabled at the package level. Because this
+# causes many warning dialogs to pop up during runtime we add -DNDEBUG to
+# CPPFLAGS to disable debugging features (unless your ebuild has a debug
+# USE flag and it's enabled). If you don't like this behavior you can set
+# WX_DISABLE_NDEBUG to override it.
+#
+# See: http://docs.wxwidgets.org/trunk/overview_debugging.html
+
+setup-wxwidgets() {
+ local wxtoolkit wxdebug wxconf
+
+ [[ -z ${WX_GTK_VER} ]] \
+ && die "WX_GTK_VER must be set before calling $FUNCNAME."
+
+ case "${WX_GTK_VER}" in
+ 3.0-gtk3)
+ wxtoolkit=gtk3
+ if [[ -z ${WX_DISABLE_NDEBUG} ]]; then
+ ( in_iuse debug && use debug ) || append-cppflags -DNDEBUG
+ fi
+ ;;
+ 2.9|3.0)
+ wxtoolkit=gtk2
+ if [[ -z ${WX_DISABLE_NDEBUG} ]]; then
+ ( in_iuse debug && use debug ) || append-cppflags -DNDEBUG
+ fi
+ ;;
+ 2.8)
+ wxtoolkit=gtk2
+ wxdebug="release-"
+ has_version x11-libs/wxGTK:${WX_GTK_VER}[debug] && wxdebug="debug-"
+ ;;
+ *)
+ die "Invalid WX_GTK_VER: must be set to a valid wxGTK SLOT"
+ ;;
+ esac
+
+ # toolkit overrides
+ if has_version "x11-libs/wxGTK:${WX_GTK_VER}[aqua]"; then
+ wxtoolkit="mac"
+ elif ! has_version "x11-libs/wxGTK:${WX_GTK_VER}[X]"; then
+ wxtoolkit="base"
+ fi
+
+ wxconf="${wxtoolkit}-unicode-${wxdebug}${WX_GTK_VER}"
+
+ [[ ! -f ${EPREFIX}/usr/$(get_libdir)/wx/config/${wxconf} ]] \
+ && die "Failed to find configuration ${wxconf}"
+
+ export WX_CONFIG="${EPREFIX}/usr/$(get_libdir)/wx/config/${wxconf}"
+ export WX_ECLASS_CONFIG="${WX_CONFIG}"
+
+ echo
+ einfo "Requested wxWidgets: ${WX_GTK_VER}"
+ einfo "Using wxWidgets: ${wxconf}"
+ echo
+}
+
+# deprecated
+need-wxwidgets() {
+ setup-wxwidgets
+}
+
+_WXWIDGETS_ECLASS=1
+fi