/[gentoo-x86]/eclass/wxwidgets.eclass
Gentoo

Contents of /eclass/wxwidgets.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.21 - (show annotations) (download)
Thu Oct 18 03:25:56 2007 UTC (6 years, 8 months ago) by dirtyepic
Branch: MAIN
Changes since 1.20: +6 -8 lines
Fix thinko that caused WX_CONFIG to be overwritten by defaults between ebuild phases.  Bug #196192 by Itay Perl

1 # Copyright 1999-2007 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Header: /var/cvsroot/gentoo-x86/eclass/wxwidgets.eclass,v 1.20 2007/10/14 02:46:29 dirtyepic Exp $
4
5 # @ECLASS: wxwidgets.eclass
6 # @MAINTAINER:
7 # dirtyepic@gentoo.org
8 # wxwindows@gentoo.org
9 # @BLURB: Manages build configuration for wxGTK-using packages.
10 # @DESCRIPTION:
11 # The wxGTK libraries come in several different possible configurations
12 # (release/debug, ansi/unicode, etc.), most of which can be installed
13 # side-by-side. The purpose of this eclass is to give ebuilds the ability to
14 # specify what particular flavour they require to build against without
15 # interfering with the user-set system configuration.
16 #
17 # Ebuilds that use wxGTK must inherit this eclass. Otherwise the system
18 # default will be used, which would be anything the user set it to.
19 #
20 # Ebuilds are also required to set the global variable WX_GTK_VER, containing
21 # the wxGTK SLOT the ebuild requires. Note that in order for this to work,
22 # WX_GTK_VER needs to be set before inheriting the eclass.
23 #
24 # Simple Usage:
25 #
26 # WX_GTK_VER="2.6"
27 # inherit wxwidgets
28 # DEPEND="=x11-libs/wxGTK-2.6*"
29 # RDEPEND="=x11-libs/wxGTK-2.6*"
30 #
31 # That's it. The eclass will select a sane default configuration to use. In
32 # wxGTK-2.6 the default is ansi. In wxGTK-2.8 and later it's unicode. These
33 # are the defaults because they are always guaranteed to exist.
34 #
35 # You'll often find yourself in need of a bit more control. For that see the
36 # need-wxwidgets function below.
37
38 inherit eutils multilib
39
40 # We do this globally so ebuilds can get sane defaults just by inheriting. They
41 # can be overridden with need-wxwidgets later if need be.
42
43 if [[ -z ${WX_CONFIG} ]]; then
44 if [[ -n ${WX_GTK_VER} ]]; then
45 if [[ ${WX_GTK_VER} == 2.6 ]]; then
46 wxchar="ansi"
47 elif [[ ${WX_GTK_VER} == 2.8 ]]; then
48 wxchar="unicode"
49 fi
50
51 for wxtoolkit in gtk2 base; do
52 for wxdebug in release debug; do
53 wxconf="${wxtoolkit}-${wxchar}-${wxdebug}-${WX_GTK_VER}"
54 [[ -f /usr/$(get_libdir)/wx/config/${wxconf} ]] || continue
55 WX_CONFIG="/usr/$(get_libdir)/wx/config/${wxconf}"
56 # TODO: needed for the wx-config wrapper
57 WX_ECLASS_CONFIG="${WX_CONFIG}"
58 break
59 done
60 [[ -n ${WX_CONFIG} ]] && break
61 done
62 [[ -n ${WX_CONFIG} ]] && export WX_CONFIG WX_ECLASS_CONFIG
63 fi
64 fi
65
66
67 # @FUNCTION: need-wxwidgets
68 # @USAGE: <configuration>
69 # @DESCRIPTION:
70 # need-wxwidgets is called with one argument, the wxGTK configuration to use.
71 #
72 # Available configurations are:
73 #
74 # ansi
75 # unicode
76 # base-ansi
77 # base-unicode
78 #
79 # Note that in >=wxGTK-2.8, only the unicode versions are available. The
80 # eclass will automatically map ansi to unicode if WX_GTK_VER is set to 2.8 or
81 # later.
82 #
83 # There is one deprecated configuration, gtk2, that is equivalent to ansi.
84 # It is around for historical reasons and shouldn't be used by new ebuilds.
85 #
86 # This function will set the variable WX_CONFIG to the path of the wx-config
87 # script to use. In most cases you shouldn't have to use it since the
88 # /usr/bin/wx-config wrapper points to ${WX_CONFIG} when called from portage.
89
90 need-wxwidgets() {
91 debug-print-function $FUNCNAME $*
92
93 local wxtoolkit wxchar wxdebug wxconf
94
95 if [[ -z ${WX_GTK_VER} ]]; then
96 echo
97 eerror "WX_GTK_VER must be set before calling $FUNCNAME."
98 echo
99 die "WX_GTK_VER missing"
100 fi
101
102 if [[ ${WX_GTK_VER} != 2.6 \
103 && ${WX_GTK_VER} != 2.8 ]]; then
104 echo
105 eerror "Invalid WX_GTK_VER: ${WX_GTK_VER} - must be set to a valid wxGTK SLOT."
106 echo
107 die "Invalid WX_GTK_VER"
108 fi
109
110 debug-print "WX_GTK_VER is ${WX_GTK_VER}"
111
112 case $1 in
113 ansi)
114 debug-print-section ansi
115 if [[ ${WX_GTK_VER} == 2.6 ]]; then
116 wxchar="ansi"
117 else
118 wxchar="unicode"
119 fi
120 check_wxuse X
121 ;;
122 unicode)
123 debug-print-section unicode
124 check_wxuse X
125 [[ ${WX_GTK_VER} == 2.6 ]] && check_wxuse unicode
126 wxchar="unicode"
127 ;;
128 base)
129 debug-print-section base
130 if [[ ${WX_GTK_VER} == 2.6 ]]; then
131 wxchar="ansi"
132 else
133 wxchar="unicode"
134 fi
135 ;;
136 base-unicode)
137 debug-print-section base-unicode
138 [[ ${WX_GTK_VER} == 2.6 ]] && check_wxuse unicode
139 wxchar="unicode"
140 ;;
141 # backwards compatibility
142 gtk2)
143 debug-print-section gtk2
144 if [[ ${WX_GTK_VER} == 2.6 ]]; then
145 wxchar="ansi"
146 else
147 wxchar="unicode"
148 fi
149 check_wxuse X
150 ;;
151 *)
152 echo
153 eerror "Invalid $FUNCNAME argument: $1"
154 echo
155 die "Invalid argument"
156 ;;
157 esac
158
159 debug-print "wxchar is ${wxchar}"
160
161 # since we're no longer in global scope we call built_with_use instead of
162 # all the crazy looping
163
164 # base can be provided by both gtk2 and base installations
165 if $(built_with_use =x11-libs/wxGTK-${WX_GTK_VER}* X); then
166 wxtoolkit="gtk2"
167 else
168 wxtoolkit="base"
169 fi
170
171 debug-print "wxtoolkit is ${wxtoolkit}"
172
173 # debug or release?
174 if $(built_with_use =x11-libs/wxGTK-${WX_GTK_VER}* debug); then
175 wxdebug="debug"
176 else
177 wxdebug="release"
178 fi
179
180 debug-print "wxdebug is ${wxdebug}"
181
182 # put it all together
183 wxconf="${wxtoolkit}-${wxchar}-${wxdebug}-${WX_GTK_VER}"
184
185 debug-print "wxconf is ${wxconf}"
186
187 # if this doesn't work, something is seriously screwed
188 if [[ ! -f /usr/$(get_libdir)/wx/config/${wxconf} ]]; then
189 echo
190 eerror "Failed to find configuration ${wxconf}"
191 echo
192 die "Missing wx-config"
193 fi
194
195 debug-print "Found config ${wxconf} - setting WX_CONFIG"
196
197 # This is exported as some configure scripts will check for its presence in
198 # the environment.
199 export WX_CONFIG="/usr/$(get_libdir)/wx/config/${wxconf}"
200
201 debug-print "WX_CONFIG is ${WX_CONFIG}"
202
203 # TODO: Used by the wx-config wrapper
204 export WX_ECLASS_CONFIG="${WX_CONFIG}"
205
206 echo
207 einfo "Requested: ${1} ${WX_GTK_VER}"
208 einfo "Using: ${wxconf}"
209 echo
210 }
211
212
213 # @FUNCTION: check_wxuse
214 # @USAGE: <USE flag>
215 # @DESCRIPTION:
216 # Provides a consistant way to check if wxGTK was built with a particular USE
217 # flag enabled.
218
219 check_wxuse() {
220 debug-print-function $FUNCNAME $*
221
222 [[ -n ${WX_GTK_VER} ]] \
223 || _wxerror "WX_GTK_VER must be set before calling"
224
225
226 ebegin "Checking wxGTK-${WX_GTK_VER} for ${1} support"
227 if $(built_with_use =x11-libs/wxGTK-${WX_GTK_VER}* "${1}"); then
228 eend 0
229 else
230 eend 1
231 echo
232 eerror "${FUNCNAME} - You have requested functionality that requires ${1} support to"
233 eerror "have been built into x11-libs/wxGTK."
234 eerror
235 eerror "Please re-merge =x11-libs/wxGTK-${WX_GTK_VER}* with the ${1} USE flag enabled."
236 die "Missing USE flags."
237 fi
238 }

  ViewVC Help
Powered by ViewVC 1.1.20