| 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 | dnl starting with version 2.7.0 wx-config has --rescomp option |
| 205 | wx_has_rescomp="" |
| 206 | if test $wx_config_major_version -gt 2; then |
| 207 | wx_has_rescomp=yes |
| 208 | else |
| 209 | if test $wx_config_major_version -eq 2; then |
| 210 | if test $wx_config_minor_version -ge 7; then |
| 211 | wx_has_rescomp=yes |
| 212 | fi |
| 213 | fi |
| 214 | fi |
| 215 | if test "x$wx_has_rescomp" = x ; then |
| 216 | dnl cannot give any useful info for resource compiler |
| 217 | WX_RESCOMP= |
| 218 | else |
| 219 | WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp` |
| 220 | fi |
| 221 | |
| 222 | if test "x$wx_has_cppflags" = x ; then |
| 223 | dnl no choice but to define all flags like CFLAGS |
| 224 | WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` |
| 225 | WX_CPPFLAGS=$WX_CFLAGS |
| 226 | WX_CXXFLAGS=$WX_CFLAGS |
| 227 | |
| 228 | WX_CFLAGS_ONLY=$WX_CFLAGS |
| 229 | WX_CXXFLAGS_ONLY=$WX_CFLAGS |
| 230 | else |
| 231 | dnl we have CPPFLAGS included in CFLAGS included in CXXFLAGS |
| 232 | WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags` |
| 233 | WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags` |
| 234 | WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` |
| 235 | |
| 236 | WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"` |
| 237 | WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"` |
| 238 | fi |
| 239 | |
| 240 | ifelse([$2], , :, [$2]) |
| 241 | |
| 242 | else |
| 243 | |
| 244 | if test "x$WX_VERSION" = x; then |
| 245 | dnl no wx-config at all |
| 246 | AC_MSG_RESULT(no) |
| 247 | else |
| 248 | AC_MSG_RESULT(no (version $WX_VERSION is not new enough)) |
| 249 | fi |
| 250 | |
| 251 | WX_CFLAGS="" |
| 252 | WX_CPPFLAGS="" |
| 253 | WX_CXXFLAGS="" |
| 254 | WX_LIBS="" |
| 255 | WX_LIBS_STATIC="" |
| 256 | WX_RESCOMP="" |
| 257 | ifelse([$3], , :, [$3]) |
| 258 | |
| 259 | fi |
| 260 | else |
| 261 | |
| 262 | WX_CFLAGS="" |
| 263 | WX_CPPFLAGS="" |
| 264 | WX_CXXFLAGS="" |
| 265 | WX_LIBS="" |
| 266 | WX_LIBS_STATIC="" |
| 267 | WX_RESCOMP="" |
| 268 | |
| 269 | ifelse([$3], , :, [$3]) |
| 270 | |
| 271 | fi |
| 272 | |
| 273 | AC_SUBST(WX_CPPFLAGS) |
| 274 | AC_SUBST(WX_CFLAGS) |
| 275 | AC_SUBST(WX_CXXFLAGS) |
| 276 | AC_SUBST(WX_CFLAGS_ONLY) |
| 277 | AC_SUBST(WX_CXXFLAGS_ONLY) |
| 278 | AC_SUBST(WX_LIBS) |
| 279 | AC_SUBST(WX_LIBS_STATIC) |
| 280 | AC_SUBST(WX_VERSION) |
| 281 | AC_SUBST(WX_RESCOMP) |
| 282 | ]) |
| 283 | |
| 284 | dnl --------------------------------------------------------------------------- |
| 285 | dnl Get information on the wxrc program for making C++, Python and xrs |
| 286 | dnl resource files. |
| 287 | dnl |
| 288 | dnl AC_ARG_ENABLE(...) |
| 289 | dnl AC_ARG_WITH(...) |
| 290 | dnl ... |
| 291 | dnl AM_OPTIONS_WXCONFIG |
| 292 | dnl ... |
| 293 | dnl AM_PATH_WXCONFIG(2.6.0, wxWin=1) |
| 294 | dnl if test "$wxWin" != 1; then |
| 295 | dnl AC_MSG_ERROR([ |
| 296 | dnl wxWidgets must be installed on your system |
| 297 | dnl but wx-config script couldn't be found. |
| 298 | dnl |
| 299 | dnl Please check that wx-config is in path, the directory |
| 300 | dnl where wxWidgets libraries are installed (returned by |
| 301 | dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or |
| 302 | dnl equivalent variable and wxWidgets version is 2.6.0 or above. |
| 303 | dnl ]) |
| 304 | dnl fi |
| 305 | dnl |
| 306 | dnl AM_PATH_WXRC([HAVE_WXRC=1], [HAVE_WXRC=0]) |
| 307 | dnl if test "x$HAVE_WXRC" != x1; then |
| 308 | dnl AC_MSG_ERROR([ |
| 309 | dnl The wxrc program was not installed or not found. |
| 310 | dnl |
| 311 | dnl Please check the wxWidgets installation. |
| 312 | dnl ]) |
| 313 | dnl fi |
| 314 | dnl |
| 315 | dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" |
| 316 | dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" |
| 317 | dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" |
| 318 | dnl |
| 319 | dnl LDFLAGS="$LDFLAGS $WX_LIBS" |
| 320 | dnl --------------------------------------------------------------------------- |
| 321 | |
| 322 | |
| 323 | |
| 324 | dnl --------------------------------------------------------------------------- |
| 325 | dnl AM_PATH_WXRC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) |
| 326 | dnl |
| 327 | dnl Test for wxWidgets' wxrc program for creating either C++, Python or XRS |
| 328 | dnl resources. The variable WXRC will be set and substituted in the configure |
| 329 | dnl script and Makefiles. |
| 330 | dnl |
| 331 | dnl Example use: |
| 332 | dnl AM_PATH_WXRC([wxrc=1], [wxrc=0]) |
| 333 | dnl --------------------------------------------------------------------------- |
| 334 | |
| 335 | dnl |
| 336 | dnl wxrc program from the wx-config script |
| 337 | dnl |
| 338 | AC_DEFUN([AM_PATH_WXRC], |
| 339 | [ |
| 340 | AC_ARG_VAR([WXRC], [Path to wxWidget's wxrc resource compiler]) |
| 341 | |
| 342 | if test "x$WX_CONFIG_NAME" = x; then |
| 343 | AC_MSG_ERROR([The wxrc tests must run after wxWidgets test.]) |
| 344 | else |
| 345 | |
| 346 | AC_MSG_CHECKING([for wxrc]) |
| 347 | |
| 348 | if test "x$WXRC" = x ; then |
| 349 | dnl wx-config --utility is a new addition to wxWidgets: |
| 350 | _WX_PRIVATE_CHECK_VERSION(2,5,3) |
| 351 | if test -n "$wx_ver_ok"; then |
| 352 | WXRC=`$WX_CONFIG_WITH_ARGS --utility=wxrc` |
| 353 | fi |
| 354 | fi |
| 355 | |
| 356 | if test "x$WXRC" = x ; then |
| 357 | AC_MSG_RESULT([not found]) |
| 358 | ifelse([$2], , :, [$2]) |
| 359 | else |
| 360 | AC_MSG_RESULT([$WXRC]) |
| 361 | ifelse([$1], , :, [$1]) |
| 362 | fi |
| 363 | |
| 364 | AC_SUBST(WXRC) |
| 365 | fi |
| 366 | ]) |