commit: 9d598b2055f2bfb60bed943033b28f4af6923f73
parent 7c85d6df71e49b5cc69c9fb478cde57e9b39dabc
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Sun, 19 Sep 2021 17:17:04 +0200
eclass/wxwidgets.eclass: Import, used by tenacity for wxGTK-3.1
Diffstat:
1 file changed, 96 insertions(+), 0 deletions(-)
diff --git a/eclass/wxwidgets.eclass b/eclass/wxwidgets.eclass
@@ -0,0 +1,96 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: wxwidgets.eclass
+# @MAINTAINER:
+# wxwidgets@gentoo.org
+# @SUPPORTED_EAPIS: 7 8
+# @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
+# ${ESYSROOT}/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.
+
+case ${EAPI} in
+ 7|8) ;;
+ *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+esac
+
+if [[ -z ${_WXWIDGETS_ECLASS} ]]; then
+_WXWIDGETS_ECLASS=1
+
+# @ECLASS-VARIABLE: WX_GTK_VER
+# @PRE_INHERIT
+# @REQUIRED
+# @DESCRIPTION:
+# The SLOT of the x11-libs/wxGTK you're targeting. Needs to be defined before
+# inheriting the eclass. Can be either "3.0" or "3.0-gtk3".
+case ${WX_GTK_VER} in
+ 3.0-gtk3) ;;
+ 3.1) ;;
+ 3.0)
+ if [[ ${EAPI} != 7 ]]; then
+ die "${ECLASS}: GTK 2 no longer supported in EAPI ${EAPI}"
+ fi
+ ;;
+ "") die "WX_GTK_VER not declared" ;;
+ *) die "Invalid WX_GTK_VER: must be set to a valid wxGTK SLOT ('3.0' or '3.0-gtk3')" ;;
+esac
+readonly WX_GTK_VER
+
+inherit flag-o-matic
+
+# @FUNCTION: setup-wxwidgets
+# @DESCRIPTION:
+# Call this in your ebuild to set up the environment for wxGTK in src_configure.
+# Besides controlling the wx-config wrapper, this exports WX_CONFIG containing
+# the path to the config in case it needs to be passed to the build system.
+#
+# This function also controls the level of debugging output from the libraries.
+# 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: https://docs.wxwidgets.org/trunk/overview_debugging.html
+setup-wxwidgets() {
+ local w wxtoolkit wxconf
+
+ case ${WX_GTK_VER} in
+ 3.1) wxtoolkit=gtk3 ;;
+ 3.0-gtk3) wxtoolkit=gtk3 ;;
+ 3.0) wxtoolkit=gtk2
+ eqawarn "This package relies on the deprecated GTK 2 slot, which will go away soon (https://bugs.gentoo.org/618642)"
+ ;;
+ esac
+
+ if [[ -z ${WX_DISABLE_NDEBUG} ]]; then
+ { in_iuse debug && use debug; } || append-cppflags -DNDEBUG
+ fi
+
+ wxconf="${wxtoolkit}-unicode-${WX_GTK_VER}"
+ for w in "${CHOST:-${CBUILD}}-${wxconf}" "${wxconf}"; do
+ [[ -f ${ESYSROOT}/usr/$(get_libdir)/wx/config/${w} ]] && wxconf=${w} && break
+ done || die "Failed to find configuration ${wxconf}"
+
+ export WX_CONFIG="${ESYSROOT}/usr/$(get_libdir)/wx/config/${wxconf}"
+ export WX_ECLASS_CONFIG="${WX_CONFIG}"
+
+ einfo
+ einfo "Requested wxWidgets: ${WX_GTK_VER}"
+ einfo "Using wxWidgets: ${wxconf}"
+ einfo
+}
+
+fi