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

Contents of /eclass/wxwidgets.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.20 - (show annotations) (download)
Sun Oct 14 02:46:29 2007 UTC (8 years, 11 months ago) by dirtyepic
Branch: MAIN
Changes since 1.19: +206 -98 lines
Check in wxwidgets.eclass rewrite.

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

  ViewVC Help
Powered by ViewVC 1.1.20