]> git.saurik.com Git - wxWidgets.git/blob - aclocal.m4
2f8507f5c75c8342487c48fb2edc865614f23ff5
[wxWidgets.git] / aclocal.m4
1 dnl aclocal.m4 generated automatically by aclocal 1.4-p6
2
3 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
4 dnl This file is free software; the Free Software Foundation
5 dnl gives unlimited permission to copy and/or distribute it,
6 dnl with or without modifications, as long as this notice is preserved.
7
8 dnl This program is distributed in the hope that it will be useful,
9 dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10 dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 dnl PARTICULAR PURPOSE.
12
13 dnl ---------------------------------------------------------------------------
14 dnl
15 dnl Macros for configure.in for wxWindows by Robert Roebling, Phil Blecker,
16 dnl Vadim Zeitlin and Ron Lee
17 dnl
18 dnl This script is under the wxWindows licence.
19 dnl
20 dnl Version: $Id$
21 dnl ---------------------------------------------------------------------------
22
23 dnl ===========================================================================
24 dnl macros to find the a file in the list of include/lib paths
25 dnl ===========================================================================
26
27 dnl ---------------------------------------------------------------------------
28 dnl call WX_PATH_FIND_INCLUDES(search path, header name), sets ac_find_includes
29 dnl to the full name of the file that was found or leaves it empty if not found
30 dnl ---------------------------------------------------------------------------
31 AC_DEFUN([WX_PATH_FIND_INCLUDES],
32 [
33 ac_find_includes=
34 for ac_dir in $1 /usr/include;
35 do
36 if test -f "$ac_dir/$2"; then
37 ac_find_includes=$ac_dir
38 break
39 fi
40 done
41 ])
42
43 dnl ---------------------------------------------------------------------------
44 dnl call WX_PATH_FIND_LIBRARIES(search path, header name), sets ac_find_libraries
45 dnl to the full name of the file that was found or leaves it empty if not found
46 dnl ---------------------------------------------------------------------------
47 AC_DEFUN([WX_PATH_FIND_LIBRARIES],
48 [
49 ac_find_libraries=
50 for ac_dir in $1 /usr/lib;
51 do
52 for ac_extension in a so sl dylib; do
53 if test -f "$ac_dir/lib$2.$ac_extension"; then
54 ac_find_libraries=$ac_dir
55 break 2
56 fi
57 done
58 done
59 ])
60
61 dnl ---------------------------------------------------------------------------
62 dnl Path to include, already defined
63 dnl ---------------------------------------------------------------------------
64 AC_DEFUN([WX_INCLUDE_PATH_EXIST],
65 [
66 dnl never add -I/usr/include to the CPPFLAGS
67 if test "x$1" = "x/usr/include"; then
68 ac_path_to_include=""
69 else
70 echo "$2" | grep "\-I$1" > /dev/null
71 result=$?
72 if test $result = 0; then
73 ac_path_to_include=""
74 else
75 ac_path_to_include=" -I$1"
76 fi
77 fi
78 ])
79
80 dnl ---------------------------------------------------------------------------
81 dnl Path to link, already defined
82 dnl ---------------------------------------------------------------------------
83 AC_DEFUN([WX_LINK_PATH_EXIST],
84 [
85 echo "$2" | grep "\-L$1" > /dev/null
86 result=$?
87 if test $result = 0; then
88 ac_path_to_link=""
89 else
90 ac_path_to_link=" -L$1"
91 fi
92 ])
93
94 dnl ===========================================================================
95 dnl C++ features test
96 dnl ===========================================================================
97
98 dnl ---------------------------------------------------------------------------
99 dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" <iostream> header
100 dnl or only the old <iostream.h> one - it may be generally assumed that if
101 dnl <iostream> exists, the other "new" headers (without .h) exist too.
102 dnl
103 dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false-or-cross-compiling)
104 dnl ---------------------------------------------------------------------------
105
106 AC_DEFUN([WX_CPP_NEW_HEADERS],
107 [
108 if test "$cross_compiling" = "yes"; then
109 ifelse([$2], , :, [$2])
110 else
111 AC_LANG_SAVE
112 AC_LANG_CPLUSPLUS
113
114 AC_CHECK_HEADERS(iostream)
115
116 if test "$ac_cv_header_iostream" = "yes" ; then
117 ifelse([$1], , :, [$1])
118 else
119 ifelse([$2], , :, [$2])
120 fi
121
122 AC_LANG_RESTORE
123 fi
124 ])
125
126 dnl ---------------------------------------------------------------------------
127 dnl WX_CPP_BOOL checks whether the C++ compiler has a built in bool type
128 dnl
129 dnl call WX_CPP_BOOL - will define HAVE_BOOL if the compiler supports bool
130 dnl ---------------------------------------------------------------------------
131
132 AC_DEFUN([WX_CPP_BOOL],
133 [
134 AC_CACHE_CHECK([if C++ compiler supports bool], wx_cv_cpp_bool,
135 [
136 AC_LANG_SAVE
137 AC_LANG_CPLUSPLUS
138
139 AC_TRY_COMPILE(
140 [
141 ],
142 [
143 bool b = true;
144
145 return 0;
146 ],
147 [
148 wx_cv_cpp_bool=yes
149 ],
150 [
151 wx_cv_cpp_bool=no
152 ]
153 )
154
155 AC_LANG_RESTORE
156 ])
157
158 if test "$wx_cv_cpp_bool" = "yes"; then
159 AC_DEFINE(HAVE_BOOL)
160 fi
161 ])
162
163 dnl ---------------------------------------------------------------------------
164 dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
165 dnl keyword and defines HAVE_EXPLICIT if this is the case
166 dnl ---------------------------------------------------------------------------
167
168 AC_DEFUN([WX_CPP_EXPLICIT],
169 [
170 AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
171 wx_cv_explicit,
172 [
173 AC_LANG_SAVE
174 AC_LANG_CPLUSPLUS
175
176 dnl do the test in 2 steps: first check that the compiler knows about the
177 dnl explicit keyword at all and then verify that it really honours it
178 AC_TRY_COMPILE(
179 [
180 class Foo { public: explicit Foo(int) {} };
181 ],
182 [
183 return 0;
184 ],
185 [
186 AC_TRY_COMPILE(
187 [
188 class Foo { public: explicit Foo(int) {} };
189 static void TakeFoo(const Foo& foo) { }
190 ],
191 [
192 TakeFoo(17);
193 return 0;
194 ],
195 wx_cv_explicit=no,
196 wx_cv_explicit=yes
197 )
198 ],
199 wx_cv_explicit=no
200 )
201
202 AC_LANG_RESTORE
203 ])
204
205 if test "$wx_cv_explicit" = "yes"; then
206 AC_DEFINE(HAVE_EXPLICIT)
207 fi
208 ])
209
210 dnl ---------------------------------------------------------------------------
211 dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
212 dnl ---------------------------------------------------------------------------
213
214 AC_DEFUN([WX_C_BIGENDIAN],
215 [AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian,
216 [ac_cv_c_bigendian=unknown
217 # See if sys/param.h defines the BYTE_ORDER macro.
218 AC_TRY_COMPILE([#include <sys/types.h>
219 #include <sys/param.h>], [
220 #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
221 bogus endian macros
222 #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
223 AC_TRY_COMPILE([#include <sys/types.h>
224 #include <sys/param.h>], [
225 #if BYTE_ORDER != BIG_ENDIAN
226 not big endian
227 #endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
228 if test $ac_cv_c_bigendian = unknown; then
229 AC_TRY_RUN([main () {
230 /* Are we little or big endian? From Harbison&Steele. */
231 union
232 {
233 long l;
234 char c[sizeof (long)];
235 } u;
236 u.l = 1;
237 exit (u.c[sizeof (long) - 1] == 1);
238 }], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown])
239 fi])
240 if test $ac_cv_c_bigendian = unknown; then
241 AC_MSG_WARN([Assuming little-endian target machine - this may be overriden by adding the line "ac_cv_c_bigendian=${ac_cv_c_bigendian='yes'}" to config.cache file])
242 fi
243 if test $ac_cv_c_bigendian = yes; then
244 AC_DEFINE(WORDS_BIGENDIAN)
245 fi
246 ])
247
248 dnl ---------------------------------------------------------------------------
249 dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file
250 dnl ---------------------------------------------------------------------------
251
252 AC_DEFUN([WX_ARG_CACHE_INIT],
253 [
254 wx_arg_cache_file="configarg.cache"
255 echo "loading argument cache $wx_arg_cache_file"
256 rm -f ${wx_arg_cache_file}.tmp
257 touch ${wx_arg_cache_file}.tmp
258 touch ${wx_arg_cache_file}
259 ])
260
261 AC_DEFUN([WX_ARG_CACHE_FLUSH],
262 [
263 echo "saving argument cache $wx_arg_cache_file"
264 mv ${wx_arg_cache_file}.tmp ${wx_arg_cache_file}
265 ])
266
267 dnl this macro checks for a three-valued command line --with argument:
268 dnl possible arguments are 'yes', 'no', 'sys', or 'builtin'
269 dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
270 AC_DEFUN([WX_ARG_SYS_WITH],
271 [
272 AC_MSG_CHECKING([for --with-$1])
273 no_cache=0
274 AC_ARG_WITH($1, [$2],
275 [
276 if test "$withval" = yes; then
277 ac_cv_use_$1='$3=yes'
278 elif test "$withval" = no; then
279 ac_cv_use_$1='$3=no'
280 elif test "$withval" = sys; then
281 ac_cv_use_$1='$3=sys'
282 elif test "$withval" = builtin; then
283 ac_cv_use_$1='$3=builtin'
284 else
285 AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
286 fi
287 ],
288 [
289 LINE=`grep "$3" ${wx_arg_cache_file}`
290 if test "x$LINE" != x ; then
291 eval "DEFAULT_$LINE"
292 else
293 no_cache=1
294 fi
295
296 ac_cv_use_$1='$3='$DEFAULT_$3
297 ])
298
299 eval "$ac_cv_use_$1"
300 if test "$no_cache" != 1; then
301 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
302 fi
303
304 if test "$$3" = yes; then
305 AC_MSG_RESULT(yes)
306 elif test "$$3" = no; then
307 AC_MSG_RESULT(no)
308 elif test "$$3" = sys; then
309 AC_MSG_RESULT([system version])
310 elif test "$$3" = builtin; then
311 AC_MSG_RESULT([builtin version])
312 else
313 AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
314 fi
315 ])
316
317 dnl this macro checks for a command line argument and caches the result
318 dnl usage: WX_ARG_WITH(option, helpmessage, variable-name)
319 AC_DEFUN([WX_ARG_WITH],
320 [
321 AC_MSG_CHECKING([for --with-$1])
322 no_cache=0
323 AC_ARG_WITH($1, [$2],
324 [
325 if test "$withval" = yes; then
326 ac_cv_use_$1='$3=yes'
327 else
328 ac_cv_use_$1='$3=no'
329 fi
330 ],
331 [
332 LINE=`grep "$3" ${wx_arg_cache_file}`
333 if test "x$LINE" != x ; then
334 eval "DEFAULT_$LINE"
335 else
336 no_cache=1
337 fi
338
339 ac_cv_use_$1='$3='$DEFAULT_$3
340 ])
341
342 eval "$ac_cv_use_$1"
343 if test "$no_cache" != 1; then
344 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
345 fi
346
347 if test "$$3" = yes; then
348 AC_MSG_RESULT(yes)
349 else
350 AC_MSG_RESULT(no)
351 fi
352 ])
353
354 dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
355 dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name, enablestring)
356 dnl
357 dnl enablestring is a hack and allows to show "checking for --disable-foo"
358 dnl message when running configure instead of the default "checking for
359 dnl --enable-foo" one whih is useful for the options enabled by default
360 AC_DEFUN([WX_ARG_ENABLE],
361 [
362 enablestring=$4
363 AC_MSG_CHECKING([for --${enablestring:-enable}-$1])
364 no_cache=0
365 AC_ARG_ENABLE($1, [$2],
366 [
367 if test "$enableval" = yes; then
368 ac_cv_use_$1='$3=yes'
369 else
370 ac_cv_use_$1='$3=no'
371 fi
372 ],
373 [
374 LINE=`grep "$3" ${wx_arg_cache_file}`
375 if test "x$LINE" != x ; then
376 eval "DEFAULT_$LINE"
377 else
378 no_cache=1
379 fi
380
381 ac_cv_use_$1='$3='$DEFAULT_$3
382 ])
383
384 eval "$ac_cv_use_$1"
385 if test "$no_cache" != 1; then
386 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
387 fi
388
389 if test "$$3" = yes; then
390 AC_MSG_RESULT(yes)
391 else
392 AC_MSG_RESULT(no)
393 fi
394 ])
395
396
397 dnl ===========================================================================
398 dnl Linker features test
399 dnl ===========================================================================
400
401 dnl ---------------------------------------------------------------------------
402 dnl WX_VERSIONED_SYMBOLS checks whether the linker can create versioned
403 dnl symbols. If it can, sets LDFLAGS_VERSIONING to $CXX flags needed to use
404 dnl version script file named versionfile
405 dnl
406 dnl call WX_VERSIONED_SYMBOLS(versionfile)
407 dnl ---------------------------------------------------------------------------
408 AC_DEFUN([WX_VERSIONED_SYMBOLS],
409 [
410 found_versioning=no
411
412 dnl FIXME - doesn't work, Solaris linker doesn't accept wildcards
413 dnl in the script.
414 dnl dnl Check for known non-gcc cases:
415 dnl case "${host}" in
416 dnl *-*-solaris2* )
417 dnl if test "x$GCC" != "xyes" ; then
418 dnl LDFLAGS_VERSIONING="-M $1"
419 dnl found_versioning=yes
420 dnl fi
421 dnl ;;
422 dnl esac
423
424 dnl Generic check for GCC or GCC-like behaviour (Intel C++, GCC):
425 if test $found_versioning = no ; then
426 AC_CACHE_CHECK([if the linker accepts --version-script], wx_cv_version_script,
427 [
428 echo "VER_1 { *; };" >conftest.sym
429 echo "int main() { return 0; }" >conftest.cpp
430
431 if AC_TRY_COMMAND([
432 $CXX -o conftest.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp
433 -Wl,--version-script,conftest.sym >/dev/null 2>conftest.stderr]) ; then
434 if test -s conftest.stderr ; then
435 wx_cv_version_script=no
436 else
437 wx_cv_version_script=yes
438 fi
439 else
440 wx_cv_version_script=no
441 fi
442 rm -f conftest.output conftest.stderr conftest.sym conftest.cpp
443 ])
444 if test $wx_cv_version_script = yes ; then
445 LDFLAGS_VERSIONING="-Wl,--version-script,$1"
446 fi
447 fi
448 ])
449
450
451 dnl ===========================================================================
452 dnl "3rd party" macros included here because they are not widely available
453 dnl ===========================================================================
454
455 dnl ---------------------------------------------------------------------------
456 dnl test for availability of iconv()
457 dnl ---------------------------------------------------------------------------
458
459 dnl From Bruno Haible.
460
461 AC_DEFUN([AM_ICONV],
462 [
463 dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
464 dnl those with the standalone portable GNU libiconv installed).
465
466 AC_ARG_WITH([libiconv-prefix],
467 [ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [
468 for dir in `echo "$withval" | tr : ' '`; do
469 if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
470 if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
471 done
472 ])
473
474 AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
475 am_cv_func_iconv="no, consider installing GNU libiconv"
476 am_cv_lib_iconv=no
477 AC_TRY_LINK([#include <stdlib.h>
478 #include <iconv.h>],
479 [iconv_t cd = iconv_open("","");
480 iconv(cd,NULL,NULL,NULL,NULL);
481 iconv_close(cd);],
482 am_cv_func_iconv=yes)
483 if test "$am_cv_func_iconv" != yes; then
484 am_save_LIBS="$LIBS"
485 LIBS="$LIBS -liconv"
486 AC_TRY_LINK([#include <stdlib.h>
487 #include <iconv.h>],
488 [iconv_t cd = iconv_open("","");
489 iconv(cd,NULL,NULL,NULL,NULL);
490 iconv_close(cd);],
491 am_cv_lib_iconv=yes
492 am_cv_func_iconv=yes)
493 LIBS="$am_save_LIBS"
494 fi
495 ])
496 if test "$am_cv_func_iconv" = yes; then
497 AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
498 AC_CACHE_CHECK([if iconv needs const], wx_cv_func_iconv_const,
499 AC_TRY_COMPILE([
500 #include <stdlib.h>
501 #include <iconv.h>
502 extern
503 #ifdef __cplusplus
504 "C"
505 #endif
506 #if defined(__STDC__) || defined(__cplusplus)
507 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
508 #else
509 size_t iconv();
510 #endif
511 ],
512 [],
513 wx_cv_func_iconv_const="no",
514 wx_cv_func_iconv_const="yes"
515 )
516 )
517
518 iconv_const=
519 if test "x$wx_cv_func_iconv_const" = "xyes"; then
520 iconv_const="const"
521 fi
522
523 AC_DEFINE_UNQUOTED(ICONV_CONST, $iconv_const,
524 [Define as const if the declaration of iconv() needs const.])
525 fi
526 LIBICONV=
527 if test "$am_cv_lib_iconv" = yes; then
528 LIBICONV="-liconv"
529 fi
530 AC_SUBST(LIBICONV)
531 ])
532
533 dnl ---------------------------------------------------------------------------
534 dnl AC_SYS_LARGEFILE (partly based on the code from autoconf 2.5x)
535 dnl ---------------------------------------------------------------------------
536
537 dnl WX_SYS_LARGEFILE_TEST
538 dnl
539 dnl NB: original autoconf test was checking if compiler supported 6 bit off_t
540 dnl arithmetic properly but this failed miserably with gcc under Linux
541 dnl whereas the system still supports 64 bit files, so now simply check
542 dnl that off_t is big enough
543 define(WX_SYS_LARGEFILE_TEST,
544 [typedef struct {
545 unsigned int field: sizeof(off_t) == 8;
546 } wxlf;
547 ])
548
549
550 dnl WX_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR)
551 define(WX_SYS_LARGEFILE_MACRO_VALUE,
552 [
553 AC_CACHE_CHECK([for $1 value needed for large files], [$3],
554 [
555 AC_TRY_COMPILE([#define $1 $2
556 #include <sys/types.h>],
557 WX_SYS_LARGEFILE_TEST,
558 [$3=$2],
559 [$3=no])
560 ]
561 )
562
563 if test "$$3" != no; then
564 wx_largefile=yes
565 AC_DEFINE_UNQUOTED([$1], [$$3])
566 fi
567 ])
568
569
570 dnl AC_SYS_LARGEFILE
571 dnl ----------------
572 dnl By default, many hosts won't let programs access large files;
573 dnl one must use special compiler options to get large-file access to work.
574 dnl For more details about this brain damage please see:
575 dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
576 AC_DEFUN([AC_SYS_LARGEFILE],
577 [AC_ARG_ENABLE(largefile,
578 [ --disable-largefile omit support for large files])
579 if test "$enable_largefile" != no; then
580 dnl _FILE_OFFSET_BITS==64 is needed for Linux, Solaris, ...
581 dnl _LARGE_FILES -- for AIX
582 wx_largefile=no
583 WX_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits)
584 if test "x$wx_largefile" != "xyes"; then
585 WX_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files)
586 fi
587
588 AC_MSG_CHECKING(if large file support is available)
589 if test "x$wx_largefile" = "xyes"; then
590 AC_DEFINE(HAVE_LARGEFILE_SUPPORT)
591 fi
592 AC_MSG_RESULT($wx_largefile)
593 fi
594 ])
595
596
597 dnl Available from the GNU Autoconf Macro Archive at:
598 dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_const_cast.html
599 dnl
600 AC_DEFUN([AC_CXX_CONST_CAST],
601 [AC_CACHE_CHECK(whether the compiler supports const_cast<>,
602 ac_cv_cxx_const_cast,
603 [AC_LANG_SAVE
604 AC_LANG_CPLUSPLUS
605 AC_TRY_COMPILE(,[int x = 0;const int& y = x;int& z = const_cast<int&>(y);return z;],
606 ac_cv_cxx_const_cast=yes, ac_cv_cxx_const_cast=no)
607 AC_LANG_RESTORE
608 ])
609 if test "$ac_cv_cxx_const_cast" = yes; then
610 AC_DEFINE(HAVE_CONST_CAST,,[define if the compiler supports const_cast<>])
611 fi
612 ])
613
614 # Configure paths for GTK+
615 # Owen Taylor 1997-2001
616
617 dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
618 dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
619 dnl pass to pkg-config
620 dnl
621 AC_DEFUN(AM_PATH_GTK_2_0,
622 [dnl
623 dnl Get the cflags and libraries from pkg-config
624 dnl
625 AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
626 , enable_gtktest=yes)
627
628 pkg_config_args=gtk+-2.0
629 for module in . $4
630 do
631 case "$module" in
632 gthread)
633 pkg_config_args="$pkg_config_args gthread-2.0"
634 ;;
635 esac
636 done
637
638 no_gtk=""
639
640 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
641
642 if test x$PKG_CONFIG != xno ; then
643 if pkg-config --atleast-pkgconfig-version 0.7 ; then
644 :
645 else
646 echo *** pkg-config too old; version 0.7 or better required.
647 no_gtk=yes
648 PKG_CONFIG=no
649 fi
650 else
651 no_gtk=yes
652 fi
653
654 min_gtk_version=ifelse([$1], ,2.0.0,$1)
655 AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
656
657 if test x$PKG_CONFIG != xno ; then
658 ## don't try to run the test against uninstalled libtool libs
659 if $PKG_CONFIG --uninstalled $pkg_config_args; then
660 echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
661 enable_gtktest=no
662 fi
663
664 if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
665 :
666 else
667 no_gtk=yes
668 fi
669 fi
670
671 if test x"$no_gtk" = x ; then
672 GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
673 GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
674 gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
675 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
676 gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
677 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
678 gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
679 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
680 if test "x$enable_gtktest" = "xyes" ; then
681 ac_save_CFLAGS="$CFLAGS"
682 ac_save_LIBS="$LIBS"
683 CFLAGS="$CFLAGS $GTK_CFLAGS"
684 LIBS="$GTK_LIBS $LIBS"
685 dnl
686 dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
687 dnl checks the results of pkg-config to some extent)
688 dnl
689 rm -f conf.gtktest
690 AC_TRY_RUN([
691 #include <gtk/gtk.h>
692 #include <stdio.h>
693 #include <stdlib.h>
694
695 int
696 main ()
697 {
698 int major, minor, micro;
699 char *tmp_version;
700
701 system ("touch conf.gtktest");
702
703 /* HP/UX 9 (%@#!) writes to sscanf strings */
704 tmp_version = g_strdup("$min_gtk_version");
705 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
706 printf("%s, bad version string\n", "$min_gtk_version");
707 exit(1);
708 }
709
710 if ((gtk_major_version != $gtk_config_major_version) ||
711 (gtk_minor_version != $gtk_config_minor_version) ||
712 (gtk_micro_version != $gtk_config_micro_version))
713 {
714 printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
715 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
716 gtk_major_version, gtk_minor_version, gtk_micro_version);
717 printf ("*** was found! If pkg-config was correct, then it is best\n");
718 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
719 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
720 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
721 printf("*** required on your system.\n");
722 printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
723 printf("*** to point to the correct configuration files\n");
724 }
725 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
726 (gtk_minor_version != GTK_MINOR_VERSION) ||
727 (gtk_micro_version != GTK_MICRO_VERSION))
728 {
729 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
730 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
731 printf("*** library (version %d.%d.%d)\n",
732 gtk_major_version, gtk_minor_version, gtk_micro_version);
733 }
734 else
735 {
736 if ((gtk_major_version > major) ||
737 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
738 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
739 {
740 return 0;
741 }
742 else
743 {
744 printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
745 gtk_major_version, gtk_minor_version, gtk_micro_version);
746 printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
747 major, minor, micro);
748 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
749 printf("***\n");
750 printf("*** If you have already installed a sufficiently new version, this error\n");
751 printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
752 printf("*** being found. The easiest way to fix this is to remove the old version\n");
753 printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
754 printf("*** correct copy of pkg-config. (In this case, you will have to\n");
755 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
756 printf("*** so that the correct libraries are found at run-time))\n");
757 }
758 }
759 return 1;
760 }
761 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
762 CFLAGS="$ac_save_CFLAGS"
763 LIBS="$ac_save_LIBS"
764 fi
765 fi
766 if test "x$no_gtk" = x ; then
767 AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
768 ifelse([$2], , :, [$2])
769 else
770 AC_MSG_RESULT(no)
771 if test "$PKG_CONFIG" = "no" ; then
772 echo "*** A new enough version of pkg-config was not found."
773 echo "*** See http://pkgconfig.sourceforge.net"
774 else
775 if test -f conf.gtktest ; then
776 :
777 else
778 echo "*** Could not run GTK+ test program, checking why..."
779 ac_save_CFLAGS="$CFLAGS"
780 ac_save_LIBS="$LIBS"
781 CFLAGS="$CFLAGS $GTK_CFLAGS"
782 LIBS="$LIBS $GTK_LIBS"
783 AC_TRY_LINK([
784 #include <gtk/gtk.h>
785 #include <stdio.h>
786 ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
787 [ echo "*** The test program compiled, but did not run. This usually means"
788 echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
789 echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
790 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
791 echo "*** to the installed location Also, make sure you have run ldconfig if that"
792 echo "*** is required on your system"
793 echo "***"
794 echo "*** If you have an old version installed, it is best to remove it, although"
795 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
796 [ echo "*** The test program failed to compile or link. See the file config.log for the"
797 echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
798 CFLAGS="$ac_save_CFLAGS"
799 LIBS="$ac_save_LIBS"
800 fi
801 fi
802 GTK_CFLAGS=""
803 GTK_LIBS=""
804 ifelse([$3], , :, [$3])
805 fi
806 AC_SUBST(GTK_CFLAGS)
807 AC_SUBST(GTK_LIBS)
808 rm -f conf.gtktest
809 ])
810
811 # Configure paths for GTK+
812 # Owen Taylor 97-11-3
813
814 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
815 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
816 dnl
817 AC_DEFUN(AM_PATH_GTK,
818 [dnl
819 dnl Get the cflags and libraries from the gtk-config script
820 dnl
821 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
822 gtk_config_prefix="$withval", gtk_config_prefix="")
823 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
824 gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
825 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
826 , enable_gtktest=yes)
827
828 for module in . $4
829 do
830 case "$module" in
831 gthread)
832 gtk_config_args="$gtk_config_args gthread"
833 ;;
834 esac
835 done
836
837 if test x$gtk_config_exec_prefix != x ; then
838 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
839 if test x${GTK_CONFIG+set} != xset ; then
840 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
841 fi
842 fi
843 if test x$gtk_config_prefix != x ; then
844 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
845 if test x${GTK_CONFIG+set} != xset ; then
846 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
847 fi
848 fi
849
850 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
851 min_gtk_version=ifelse([$1], ,0.99.7,$1)
852 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
853 no_gtk=""
854 if test "$GTK_CONFIG" = "no" ; then
855 no_gtk=yes
856 else
857 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
858 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
859 gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
860 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
861 gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
862 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
863 gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
864 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
865 if test "x$enable_gtktest" = "xyes" ; then
866 ac_save_CFLAGS="$CFLAGS"
867 ac_save_LIBS="$LIBS"
868 CFLAGS="$CFLAGS $GTK_CFLAGS"
869 LIBS="$GTK_LIBS $LIBS"
870 dnl
871 dnl Now check if the installed GTK is sufficiently new. (Also sanity
872 dnl checks the results of gtk-config to some extent
873 dnl
874 rm -f conf.gtktest
875 AC_TRY_RUN([
876 #include <gtk/gtk.h>
877 #include <stdio.h>
878 #include <stdlib.h>
879
880 int
881 main ()
882 {
883 int major, minor, micro;
884 char *tmp_version;
885
886 system ("touch conf.gtktest");
887
888 /* HP/UX 9 (%@#!) writes to sscanf strings */
889 tmp_version = g_strdup("$min_gtk_version");
890 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
891 printf("%s, bad version string\n", "$min_gtk_version");
892 exit(1);
893 }
894
895 if ((gtk_major_version != $gtk_config_major_version) ||
896 (gtk_minor_version != $gtk_config_minor_version) ||
897 (gtk_micro_version != $gtk_config_micro_version))
898 {
899 printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
900 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
901 gtk_major_version, gtk_minor_version, gtk_micro_version);
902 printf ("*** was found! If gtk-config was correct, then it is best\n");
903 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
904 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
905 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
906 printf("*** required on your system.\n");
907 printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
908 printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
909 printf("*** before re-running configure\n");
910 }
911 #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
912 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
913 (gtk_minor_version != GTK_MINOR_VERSION) ||
914 (gtk_micro_version != GTK_MICRO_VERSION))
915 {
916 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
917 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
918 printf("*** library (version %d.%d.%d)\n",
919 gtk_major_version, gtk_minor_version, gtk_micro_version);
920 }
921 #endif /* defined (GTK_MAJOR_VERSION) ... */
922 else
923 {
924 if ((gtk_major_version > major) ||
925 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
926 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
927 {
928 return 0;
929 }
930 else
931 {
932 printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
933 gtk_major_version, gtk_minor_version, gtk_micro_version);
934 printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
935 major, minor, micro);
936 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
937 printf("***\n");
938 printf("*** If you have already installed a sufficiently new version, this error\n");
939 printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
940 printf("*** being found. The easiest way to fix this is to remove the old version\n");
941 printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
942 printf("*** correct copy of gtk-config. (In this case, you will have to\n");
943 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
944 printf("*** so that the correct libraries are found at run-time))\n");
945 }
946 }
947 return 1;
948 }
949 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
950 CFLAGS="$ac_save_CFLAGS"
951 LIBS="$ac_save_LIBS"
952 fi
953 fi
954 if test "x$no_gtk" = x ; then
955 AC_MSG_RESULT(yes)
956 ifelse([$2], , :, [$2])
957 else
958 AC_MSG_RESULT(no)
959 if test "$GTK_CONFIG" = "no" ; then
960 echo "*** The gtk-config script installed by GTK could not be found"
961 echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
962 echo "*** your path, or set the GTK_CONFIG environment variable to the"
963 echo "*** full path to gtk-config."
964 else
965 if test -f conf.gtktest ; then
966 :
967 else
968 echo "*** Could not run GTK test program, checking why..."
969 CFLAGS="$CFLAGS $GTK_CFLAGS"
970 LIBS="$LIBS $GTK_LIBS"
971 AC_TRY_LINK([
972 #include <gtk/gtk.h>
973 #include <stdio.h>
974 ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
975 [ echo "*** The test program compiled, but did not run. This usually means"
976 echo "*** that the run-time linker is not finding GTK or finding the wrong"
977 echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
978 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
979 echo "*** to the installed location Also, make sure you have run ldconfig if that"
980 echo "*** is required on your system"
981 echo "***"
982 echo "*** If you have an old version installed, it is best to remove it, although"
983 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
984 echo "***"
985 echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
986 echo "*** came with the system with the command"
987 echo "***"
988 echo "*** rpm --erase --nodeps gtk gtk-devel" ],
989 [ echo "*** The test program failed to compile or link. See the file config.log for the"
990 echo "*** exact error that occured. This usually means GTK was incorrectly installed"
991 echo "*** or that you have moved GTK since it was installed. In the latter case, you"
992 echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
993 CFLAGS="$ac_save_CFLAGS"
994 LIBS="$ac_save_LIBS"
995 fi
996 fi
997 GTK_CFLAGS=""
998 GTK_LIBS=""
999 ifelse([$3], , :, [$3])
1000 fi
1001 AC_SUBST(GTK_CFLAGS)
1002 AC_SUBST(GTK_LIBS)
1003 rm -f conf.gtktest
1004 ])
1005
1006
1007 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
1008 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
1009 dnl also defines GSTUFF_PKG_ERRORS on error
1010 AC_DEFUN(PKG_CHECK_MODULES, [
1011 succeeded=no
1012
1013 if test -z "$PKG_CONFIG"; then
1014 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1015 fi
1016
1017 if test "$PKG_CONFIG" = "no" ; then
1018 echo "*** The pkg-config script could not be found. Make sure it is"
1019 echo "*** in your path, or set the PKG_CONFIG environment variable"
1020 echo "*** to the full path to pkg-config."
1021 echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
1022 else
1023 PKG_CONFIG_MIN_VERSION=0.9.0
1024 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
1025 AC_MSG_CHECKING(for $2)
1026
1027 if $PKG_CONFIG --exists "$2" ; then
1028 AC_MSG_RESULT(yes)
1029 succeeded=yes
1030
1031 AC_MSG_CHECKING($1_CFLAGS)
1032 $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
1033 AC_MSG_RESULT($$1_CFLAGS)
1034
1035 AC_MSG_CHECKING($1_LIBS)
1036 $1_LIBS=`$PKG_CONFIG --libs "$2"`
1037 AC_MSG_RESULT($$1_LIBS)
1038 else
1039 $1_CFLAGS=""
1040 $1_LIBS=""
1041 ## If we have a custom action on failure, don't print errors, but
1042 ## do set a variable so people can do so.
1043 $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
1044 ifelse([$4], ,echo $$1_PKG_ERRORS,)
1045 fi
1046
1047 AC_SUBST($1_CFLAGS)
1048 AC_SUBST($1_LIBS)
1049 else
1050 echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
1051 echo "*** See http://www.freedesktop.org/software/pkgconfig"
1052 fi
1053 fi
1054
1055 if test $succeeded = yes; then
1056 ifelse([$3], , :, [$3])
1057 else
1058 ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
1059 fi
1060 ])
1061
1062
1063