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

Contents of /eclass/wxwidgets.eclass

Parent Directory Parent Directory | Revision Log Revision Log


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

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.19 # $Header: $
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     # 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 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     # 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 pythonhead 1.1
42 dirtyepic 1.20 # 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 pythonhead 1.1
45 dirtyepic 1.20 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 pythonhead 1.1
68 dirtyepic 1.20
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 pythonhead 1.1
92     need-wxwidgets() {
93     debug-print-function $FUNCNAME $*
94    
95 dirtyepic 1.20 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 pythonhead 1.4 fi
103 pythonhead 1.1
104 dirtyepic 1.20 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 pythonhead 1.1
112 dirtyepic 1.20 debug-print "WX_GTK_VER is ${WX_GTK_VER}"
113 pythonhead 1.1
114 dirtyepic 1.20 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 pythonhead 1.4 else
170 dirtyepic 1.20 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 pythonhead 1.1 else
179 dirtyepic 1.20 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 pythonhead 1.1 fi
196 dirtyepic 1.20
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 pythonhead 1.1 }
213    
214 dirtyepic 1.20
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 dirtyepic 1.19 check_wxuse() {
222 dirtyepic 1.20 debug-print-function $FUNCNAME $*
223    
224     [[ -n ${WX_GTK_VER} ]] \
225     || _wxerror "WX_GTK_VER must be set before calling"
226    
227 dirtyepic 1.19
228     ebegin "Checking wxGTK-${WX_GTK_VER} for ${1} support"
229 dirtyepic 1.20 if $(built_with_use =x11-libs/wxGTK-${WX_GTK_VER}* "${1}"); then
230 dirtyepic 1.19 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