mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-11-09 06:37:10 -08:00
In wxGTK 3.0 debugging support is always enabled in the library and it's up to packages to state if they want to use it or not. When enabled this makes warning dialogs pop up any time an assertion is encountered, which isn't very user friendly. This disables that behavior by adding -DNDEBUG to CPPFLAGS unless the package has a debug USE flag and it is enabled. Gentoo-Bug: https://bugs.gentoo.org/562480
163 lines
4.5 KiB
Bash
163 lines
4.5 KiB
Bash
# Copyright 1999-2015 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
# @ECLASS: wxwidgets.eclass
|
|
# @MAINTAINER:
|
|
# wxwidgets@gentoo.org
|
|
# @BLURB: Manages build configuration for wxGTK-using packages.
|
|
# @DESCRIPTION:
|
|
# This eclass gives ebuilds the ability to build against a specific wxGTK
|
|
# SLOT and profile without interfering with the system configuration. Any
|
|
# ebuild with a x11-libs/wxGTK dependency must use this eclass.
|
|
#
|
|
# There are two ways to do it:
|
|
#
|
|
# - set WX_GTK_VER before inheriting the eclass
|
|
# - set WX_GTK_VER and call need-wxwidgets from a phase function
|
|
#
|
|
# (where WX_GTK_VER is the SLOT you want)
|
|
#
|
|
# If your package has optional support for wxGTK (ie. by a USE flag) then
|
|
# you should use need-wxwidgets. This is important because some packages
|
|
# will force-enable wxGTK if they find WX_CONFIG set in the environment.
|
|
#
|
|
# @CODE
|
|
# inherit wxwidgets
|
|
#
|
|
# IUSE="X wxwidgets"
|
|
# DEPEND="wxwidgets? ( x11-libs/wxGTK:2.8[X?] )"
|
|
#
|
|
# src_configure() {
|
|
# if use wxwidgets; then
|
|
# WX_GTK_VER="2.8"
|
|
# if use X; then
|
|
# need-wxwidgets unicode
|
|
# else
|
|
# need-wxwidgets base-unicode
|
|
# fi
|
|
# fi
|
|
# econf --with-wx-config="${WX_CONFIG}"
|
|
# }
|
|
# @CODE
|
|
#
|
|
# That's about as complicated as it gets. 99% of ebuilds can get away with:
|
|
#
|
|
# @CODE
|
|
# inherit wxwidgets
|
|
# DEPEND="wxwidgets? ( x11-libs/wxGTK:2.8[X] )
|
|
# ...
|
|
# WX_GTK_VER=2.8 need-wxwidgets unicode
|
|
# @CODE
|
|
#
|
|
# Note: unless you know your package works with wxbase (which is very
|
|
# doubtful), always depend on wxGTK[X].
|
|
#
|
|
# Debugging: In wxGTK 3.0 and later debugging support is enabled in the
|
|
# library by default and needs to be controlled at the package level.
|
|
# Use the -DNDEBUG preprocessor flag to disable debugging features.
|
|
# (Using need-wxwidgets will do this for you, see below.)
|
|
|
|
inherit eutils flag-o-matic multilib
|
|
|
|
# We do this in global scope so ebuilds can get sane defaults just by
|
|
# inheriting.
|
|
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 profile
|
|
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
|
|
|
|
# @FUNCTION: need-wxwidgets
|
|
# @USAGE: <profile>
|
|
# @DESCRIPTION:
|
|
#
|
|
# Available profiles are:
|
|
#
|
|
# unicode (USE="X")
|
|
# base-unicode (USE="-X")
|
|
#
|
|
# This lets you choose which config file from /usr/lib/wx/config is used when
|
|
# building the package. It also exports ${WX_CONFIG} with the full path to
|
|
# that config.
|
|
#
|
|
# If your ebuild does not have a debug USE flag, or it has one and it is
|
|
# disabled, -DNDEBUG will be automatically added to CPPFLAGS. This can be
|
|
# overridden by setting WX_DISABLE_DEBUG if you want to handle it yourself.
|
|
|
|
need-wxwidgets() {
|
|
local wxtoolkit wxdebug wxconf
|
|
|
|
if [[ -z ${WX_GTK_VER} ]]; then
|
|
eerror "WX_GTK_VER must be set before calling $FUNCNAME."
|
|
echo
|
|
die
|
|
fi
|
|
|
|
if [[ ${WX_GTK_VER} != 2.8 && ${WX_GTK_VER} != 2.9 && ${WX_GTK_VER} != 3.0 ]]; then
|
|
eerror "Invalid WX_GTK_VER: ${WX_GTK_VER} - must be set to a valid wxGTK SLOT."
|
|
echo
|
|
die
|
|
fi
|
|
|
|
case $1 in
|
|
unicode|base-unicode) ;;
|
|
*) eerror "Invalid $FUNCNAME profile: $1"
|
|
echo
|
|
die
|
|
;;
|
|
esac
|
|
|
|
# wxbase is provided by both gtk2 and base installations
|
|
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="gtk2"
|
|
else
|
|
wxtoolkit="base"
|
|
fi
|
|
|
|
# 2.8 has a separate debug element
|
|
if [[ ${WX_GTK_VER} == 2.8 ]]; then
|
|
if has_version "x11-libs/wxGTK:${WX_GTK_VER}[debug]"; then
|
|
wxdebug="debug-"
|
|
else
|
|
wxdebug="release-"
|
|
fi
|
|
else
|
|
if [[ -z ${WX_DISABLE_DEBUG} ]]; then
|
|
use_if_iuse debug || append-cppflags -DNDEBUG
|
|
fi
|
|
fi
|
|
|
|
wxconf="${wxtoolkit}-unicode-${wxdebug}${WX_GTK_VER}"
|
|
|
|
if [[ ! -f ${EPREFIX}/usr/$(get_libdir)/wx/config/${wxconf} ]]; then
|
|
echo
|
|
eerror "Failed to find configuration ${wxconf}"
|
|
echo
|
|
die
|
|
fi
|
|
|
|
export WX_CONFIG="${EPREFIX}/usr/$(get_libdir)/wx/config/${wxconf}"
|
|
export WX_ECLASS_CONFIG="${WX_CONFIG}"
|
|
|
|
echo
|
|
einfo "Requested wxWidgets: ${1} ${WX_GTK_VER}"
|
|
einfo "Using wxWidgets: ${wxconf}"
|
|
echo
|
|
}
|