]> git.saurik.com Git - wxWidgets.git/blob - wxwin.m4
guard against erases during tlw window destruction
[wxWidgets.git] / wxwin.m4
1 dnl ---------------------------------------------------------------------------
2 dnl Macros for wxWidgets detection. Typically used in configure.in as:
3 dnl
4 dnl AC_ARG_ENABLE(...)
5 dnl AC_ARG_WITH(...)
6 dnl ...
7 dnl AM_OPTIONS_WXCONFIG
8 dnl ...
9 dnl ...
10 dnl AM_PATH_WXCONFIG(2.6.0, wxWin=1)
11 dnl if test "$wxWin" != 1; then
12 dnl AC_MSG_ERROR([
13 dnl wxWidgets must be installed on your system
14 dnl but wx-config script couldn't be found.
15 dnl
16 dnl Please check that wx-config is in path, the directory
17 dnl where wxWidgets libraries are installed (returned by
18 dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or
19 dnl equivalent variable and wxWidgets version is 2.3.4 or above.
20 dnl ])
21 dnl fi
22 dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
23 dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
24 dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
25 dnl
26 dnl LIBS="$LIBS $WX_LIBS"
27 dnl ---------------------------------------------------------------------------
28
29 dnl ---------------------------------------------------------------------------
30 dnl AM_OPTIONS_WXCONFIG
31 dnl
32 dnl adds support for --wx-prefix, --wx-exec-prefix, --with-wxdir and
33 dnl --wx-config command line options
34 dnl ---------------------------------------------------------------------------
35
36 AC_DEFUN([AM_OPTIONS_WXCONFIG],
37 [
38 AC_ARG_WITH(wxdir,
39 [ --with-wxdir=PATH Use uninstalled version of wxWidgets in PATH],
40 [ wx_config_name="$withval/wx-config"
41 wx_config_args="--inplace"])
42 AC_ARG_WITH(wx-config,
43 [ --with-wx-config=CONFIG wx-config script to use (optional)],
44 wx_config_name="$withval" )
45 AC_ARG_WITH(wx-prefix,
46 [ --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)],
47 wx_config_prefix="$withval", wx_config_prefix="")
48 AC_ARG_WITH(wx-exec-prefix,
49 [ --with-wx-exec-prefix=PREFIX
50 Exec prefix where wxWidgets is installed (optional)],
51 wx_config_exec_prefix="$withval", wx_config_exec_prefix="")
52 ])
53
54 dnl Helper macro for checking if wx version is at least $1.$2.$3, set's
55 dnl wx_ver_ok=yes if it is:
56 AC_DEFUN([_WX_PRIVATE_CHECK_VERSION],
57 [
58 wx_ver_ok=""
59 if test "x$WX_VERSION" != x ; then
60 if test $wx_config_major_version -gt $1; then
61 wx_ver_ok=yes
62 else
63 if test $wx_config_major_version -eq $1; then
64 if test $wx_config_minor_version -gt $2; then
65 wx_ver_ok=yes
66 else
67 if test $wx_config_minor_version -eq $2; then
68 if test $wx_config_micro_version -ge $3; then
69 wx_ver_ok=yes
70 fi
71 fi
72 fi
73 fi
74 fi
75 fi
76 ])
77
78 dnl ---------------------------------------------------------------------------
79 dnl AM_PATH_WXCONFIG(VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
80 dnl [, WX-LIBS [, ADDITIONAL-WX-CONFIG-FLAGS]]]])
81 dnl
82 dnl Test for wxWidgets, and define WX_C*FLAGS, WX_LIBS and WX_LIBS_STATIC
83 dnl (the latter is for static linking against wxWidgets). Set WX_CONFIG_NAME
84 dnl environment variable to override the default name of the wx-config script
85 dnl to use. Set WX_CONFIG_PATH to specify the full path to wx-config - in this
86 dnl case the macro won't even waste time on tests for its existence.
87 dnl
88 dnl Optional WX-LIBS argument contains comma- or space-separated list of
89 dnl wxWidgets libraries to link against (it may include contrib libraries). If
90 dnl it is not specified then WX_LIBS and WX_LIBS_STATIC will contain flags to
91 dnl link with all of the core wxWidgets libraries.
92 dnl
93 dnl Optional ADDITIONAL-WX-CONFIG-FLAGS argument is appended to wx-config
94 dnl invocation command in present. It can be used to fine-tune lookup of
95 dnl best wxWidgets build available.
96 dnl
97 dnl Example use:
98 dnl AM_PATH_WXCONFIG([2.6.0], [wxWin=1], [wxWin=0], [html,core,net]
99 dnl [--unicode --debug])
100 dnl ---------------------------------------------------------------------------
101
102 dnl
103 dnl Get the cflags and libraries from the wx-config script
104 dnl
105 AC_DEFUN([AM_PATH_WXCONFIG],
106 [
107 dnl do we have wx-config name: it can be wx-config or wxd-config or ...
108 if test x${WX_CONFIG_NAME+set} != xset ; then
109 WX_CONFIG_NAME=wx-config
110 fi
111
112 if test "x$wx_config_name" != x ; then
113 WX_CONFIG_NAME="$wx_config_name"
114 fi
115
116 dnl deal with optional prefixes
117 if test x$wx_config_exec_prefix != x ; then
118 wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
119 WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
120 fi
121 if test x$wx_config_prefix != x ; then
122 wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
123 WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
124 fi
125 if test "$cross_compiling" = "yes"; then
126 wx_config_args="$wx_config_args --host=$host_alias"
127 fi
128
129 dnl don't search the PATH if WX_CONFIG_NAME is absolute filename
130 if test -x "$WX_CONFIG_NAME" ; then
131 AC_MSG_CHECKING(for wx-config)
132 WX_CONFIG_PATH="$WX_CONFIG_NAME"
133 AC_MSG_RESULT($WX_CONFIG_PATH)
134 else
135 AC_PATH_PROG(WX_CONFIG_PATH, $WX_CONFIG_NAME, no, "$WX_LOOKUP_PATH:$PATH")
136 fi
137
138 if test "$WX_CONFIG_PATH" != "no" ; then
139 WX_VERSION=""
140
141 min_wx_version=ifelse([$1], ,2.2.1,$1)
142 if test -z "$5" ; then
143 AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version])
144 else
145 AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version ($5)])
146 fi
147
148 WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args $5 $4"
149
150 WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
151 wx_config_major_version=`echo $WX_VERSION | \
152 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
153 wx_config_minor_version=`echo $WX_VERSION | \
154 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
155 wx_config_micro_version=`echo $WX_VERSION | \
156 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
157
158 wx_requested_major_version=`echo $min_wx_version | \
159 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
160 wx_requested_minor_version=`echo $min_wx_version | \
161 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
162 wx_requested_micro_version=`echo $min_wx_version | \
163 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
164
165 _WX_PRIVATE_CHECK_VERSION([$wx_requested_major_version],
166 [$wx_requested_minor_version],
167 [$wx_requested_micro_version])
168
169 if test -n "$wx_ver_ok"; then
170
171 AC_MSG_RESULT(yes (version $WX_VERSION))
172 WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
173
174 dnl is this even still appropriate? --static is a real option now
175 dnl and WX_CONFIG_WITH_ARGS is likely to contain it if that is
176 dnl what the user actually wants, making this redundant at best.
177 dnl For now keep it in case anyone actually used it in the past.
178 AC_MSG_CHECKING([for wxWidgets static library])
179 WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
180 if test "x$WX_LIBS_STATIC" = "x"; then
181 AC_MSG_RESULT(no)
182 else
183 AC_MSG_RESULT(yes)
184 fi
185
186 dnl starting with version 2.2.6 wx-config has --cppflags argument
187 wx_has_cppflags=""
188 if test $wx_config_major_version -gt 2; then
189 wx_has_cppflags=yes
190 else
191 if test $wx_config_major_version -eq 2; then
192 if test $wx_config_minor_version -gt 2; then
193 wx_has_cppflags=yes
194 else
195 if test $wx_config_minor_version -eq 2; then
196 if test $wx_config_micro_version -ge 6; then
197 wx_has_cppflags=yes
198 fi
199 fi
200 fi
201 fi
202 fi
203
204 if test "x$wx_has_cppflags" = x ; then
205 dnl no choice but to define all flags like CFLAGS
206 WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
207 WX_CPPFLAGS=$WX_CFLAGS
208 WX_CXXFLAGS=$WX_CFLAGS
209
210 WX_CFLAGS_ONLY=$WX_CFLAGS
211 WX_CXXFLAGS_ONLY=$WX_CFLAGS
212 else
213 dnl we have CPPFLAGS included in CFLAGS included in CXXFLAGS
214 WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
215 WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
216 WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
217
218 WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
219 WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
220 fi
221
222 ifelse([$2], , :, [$2])
223
224 else
225
226 if test "x$WX_VERSION" = x; then
227 dnl no wx-config at all
228 AC_MSG_RESULT(no)
229 else
230 AC_MSG_RESULT(no (version $WX_VERSION is not new enough))
231 fi
232
233 WX_CFLAGS=""
234 WX_CPPFLAGS=""
235 WX_CXXFLAGS=""
236 WX_LIBS=""
237 WX_LIBS_STATIC=""
238 ifelse([$3], , :, [$3])
239
240 fi
241 else
242
243 WX_CFLAGS=""
244 WX_CPPFLAGS=""
245 WX_CXXFLAGS=""
246 WX_LIBS=""
247 WX_LIBS_STATIC=""
248 ifelse([$3], , :, [$3])
249
250 fi
251
252 AC_SUBST(WX_CPPFLAGS)
253 AC_SUBST(WX_CFLAGS)
254 AC_SUBST(WX_CXXFLAGS)
255 AC_SUBST(WX_CFLAGS_ONLY)
256 AC_SUBST(WX_CXXFLAGS_ONLY)
257 AC_SUBST(WX_LIBS)
258 AC_SUBST(WX_LIBS_STATIC)
259 AC_SUBST(WX_VERSION)
260 ])
261
262 dnl ---------------------------------------------------------------------------
263 dnl Get information on the wxrc program for making C++, Python and xrs
264 dnl resource files.
265 dnl
266 dnl AC_ARG_ENABLE(...)
267 dnl AC_ARG_WITH(...)
268 dnl ...
269 dnl AM_OPTIONS_WXCONFIG
270 dnl AM_OPTIONS_WXRC
271 dnl ...
272 dnl AM_PATH_WXCONFIG(2.6.0, wxWin=1)
273 dnl if test "$wxWin" != 1; then
274 dnl AC_MSG_ERROR([
275 dnl wxWidgets must be installed on your system
276 dnl but wx-config script couldn't be found.
277 dnl
278 dnl Please check that wx-config is in path, the directory
279 dnl where wxWidgets libraries are installed (returned by
280 dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or
281 dnl equivalent variable and wxWidgets version is 2.6.0 or above.
282 dnl ])
283 dnl fi
284 dnl
285 dnl AM_PATH_WXRC([HAVE_WXRC=1], [HAVE_WXRC=0])
286 dnl if test "x$HAVE_WXRC" != x1; then
287 dnl AC_MSG_ERROR([
288 dnl The wxrc program was not installed or not found.
289 dnl
290 dnl Please check the wxWidgets installation.
291 dnl ])
292 dnl fi
293 dnl
294 dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
295 dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
296 dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
297 dnl
298 dnl LDFLAGS="$LDFLAGS $WX_LIBS"
299 dnl ---------------------------------------------------------------------------
300
301
302
303 dnl ---------------------------------------------------------------------------
304 dnl AM_PATH_WXRC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
305 dnl
306 dnl Test for wxWidgets' wxrc program for creating either C++, Python or XRS
307 dnl resources. The variable WXRC will be set and substituted in the configure
308 dnl script and Makefiles.
309 dnl
310 dnl Example use:
311 dnl AM_PATH_WXRC([wxrc=1], [wxrc=0])
312 dnl ---------------------------------------------------------------------------
313
314 dnl
315 dnl wxrc program from the wx-config script
316 dnl
317 AC_DEFUN([AM_PATH_WXRC],
318 [
319 AC_ARG_VAR([WXRC], [Path to wxWidget's wxrc resource compiler])
320
321 if test "x$WX_CONFIG_NAME" = x; then
322 AC_MSG_ERROR([The wxrc tests must run after wxWidgets test.])
323 else
324
325 AC_MSG_CHECKING([for wxrc])
326
327 if test "x$WXRC" = x ; then
328 dnl wx-config --utility is a new addition to wxWidgets:
329 _WX_PRIVATE_CHECK_VERSION(2,5,3)
330 if test -n "$wx_ver_ok"; then
331 WXRC=`$WX_CONFIG_WITH_ARGS --utility=wxrc`
332 fi
333 fi
334
335 if test "x$WXRC" = x ; then
336 AC_MSG_RESULT([not found])
337 ifelse([$2], , :, [$2])
338 else
339 AC_MSG_RESULT([$WXRC])
340 ifelse([$1], , :, [$1])
341 fi
342
343 AC_SUBST(WXRC)
344 fi
345 ])