blob: f26f13d504594249f3321f934aff634c11e5041e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
# Copyright 1999-2014 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].
inherit eutils 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 configurations are:
#
# unicode (USE="X")
# base-unicode (USE="-X")
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
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
}
|