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

Contents of /eclass/wxwidgets.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.21 - (hide annotations) (download)
Thu Oct 18 03:25:56 2007 UTC (7 years, 2 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 dirtyepic 1.19 # Copyright 1999-2007 Gentoo Foundation
2 pythonhead 1.1 # Distributed under the terms of the GNU General Public License v2
3 dirtyepic 1.21 # $Header: /var/cvsroot/gentoo-x86/eclass/wxwidgets.eclass,v 1.20 2007/10/14 02:46:29 dirtyepic Exp $
4 dirtyepic 1.20
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 dirtyepic 1.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 dirtyepic 1.20 #
24     # Simple Usage:
25     #
26 dirtyepic 1.21 # WX_GTK_VER="2.6"
27 dirtyepic 1.20 # inherit wxwidgets
28     # DEPEND="=x11-libs/wxGTK-2.6*"
29     # RDEPEND="=x11-libs/wxGTK-2.6*"
30 pythonhead 1.1 #
31 dirtyepic 1.20 # 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 dirtyepic 1.21 # are the defaults because they are always guaranteed to exist.
34 dirtyepic 1.20 #
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 pythonhead 1.1
40 dirtyepic 1.20 # 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 pythonhead 1.1
43 dirtyepic 1.21 if [[ -z ${WX_CONFIG} ]]; then
44 dirtyepic 1.20 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 pythonhead 1.1
66 dirtyepic 1.20
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 pythonhead 1.1
90     need-wxwidgets() {
91     debug-print-function $FUNCNAME $*
92    
93 dirtyepic 1.20 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 pythonhead 1.4 fi
101 pythonhead 1.1
102 dirtyepic 1.20 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 pythonhead 1.1
110 dirtyepic 1.20 debug-print "WX_GTK_VER is ${WX_GTK_VER}"
111 pythonhead 1.1
112 dirtyepic 1.20 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 pythonhead 1.4 else
168 dirtyepic 1.20 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 pythonhead 1.1 else
177 dirtyepic 1.20 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 pythonhead 1.1 fi
194 dirtyepic 1.20
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 pythonhead 1.1 }
211    
212 dirtyepic 1.20
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 dirtyepic 1.19 check_wxuse() {
220 dirtyepic 1.20 debug-print-function $FUNCNAME $*
221    
222     [[ -n ${WX_GTK_VER} ]] \
223     || _wxerror "WX_GTK_VER must be set before calling"
224    
225 dirtyepic 1.19
226     ebegin "Checking wxGTK-${WX_GTK_VER} for ${1} support"
227 dirtyepic 1.20 if $(built_with_use =x11-libs/wxGTK-${WX_GTK_VER}* "${1}"); then
228 dirtyepic 1.19 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