blob: 4357e7367cc708d61268e4ddb593dd10e3c15774 [file] [log] [blame]
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: wxwidgets.eclass
# @BLURB: Manages build configuration for wxGTK-using packages.
# 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:-0} in
[0-6]) die "Unsupported EAPI=${EAPI:-0} (too old) for ${ECLASS}" ;;
7) ;;
*) die "Unsupported EAPI=${EAPI} (unknown) for ${ECLASS}" ;;
if [[ -z ${_WXWIDGETS_ECLASS} ]]; then
# 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|3.0-gtk3) ;;
"") 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')" ;;
readonly WX_GTK_VER
inherit flag-o-matic
# @FUNCTION: setup-wxwidgets
# 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:
setup-wxwidgets() {
local w wxtoolkit wxconf
case ${WX_GTK_VER} in
3.0-gtk3) wxtoolkit=gtk3 ;;
3.0) wxtoolkit=gtk2
eqawarn "This package relies on the deprecated GTK 2 slot, which will go away soon ("
if [[ -z ${WX_DISABLE_NDEBUG} ]]; then
{ in_iuse debug && use debug; } || append-cppflags -DNDEBUG
# toolkit overrides
if has_version -d "x11-libs/wxGTK:${WX_GTK_VER}[aqua]"; then
elif ! has_version -d "x11-libs/wxGTK:${WX_GTK_VER}[X]"; then
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}"
einfo "Requested wxWidgets: ${WX_GTK_VER}"
einfo "Using wxWidgets: ${wxconf}"