]> git.saurik.com Git - wxWidgets.git/blob - acinclude.m4
quite ugly workaround, but even the engineers at WWDC couldn't give me a better alter...
[wxWidgets.git] / acinclude.m4
1 dnl ---------------------------------------------------------------------------
2 dnl
3 dnl Macros for configure.in for wxWindows by Robert Roebling, Phil Blecker,
4 dnl Vadim Zeitlin and Ron Lee
5 dnl
6 dnl This script is under the wxWindows licence.
7 dnl
8 dnl Version: $Id$
9 dnl ---------------------------------------------------------------------------
10
11
12 dnl ===========================================================================
13 dnl Objective-C(++) related macros
14 dnl ===========================================================================
15 m4_define([AC_WX_LANG_OBJECTIVEC],
16 [AC_LANG(C)
17 ac_ext=m
18 ])
19
20 m4_define([AC_WX_LANG_OBJECTIVECPLUSPLUS],
21 [AC_LANG(C++)
22 ac_ext=mm
23 ])
24
25 dnl ===========================================================================
26 dnl macros to find a file in the list of include/lib paths
27 dnl ===========================================================================
28
29 dnl ---------------------------------------------------------------------------
30 dnl call WX_PATH_FIND_INCLUDES(search path, header name), sets ac_find_includes
31 dnl to the full name of the file that was found or leaves it empty if not found
32 dnl ---------------------------------------------------------------------------
33 AC_DEFUN([WX_PATH_FIND_INCLUDES],
34 [
35 ac_find_includes=
36 for ac_dir in $1 /usr/include
37 do
38 if test -f "$ac_dir/$2"; then
39 ac_find_includes=$ac_dir
40 break
41 fi
42 done
43 ])
44
45 dnl ---------------------------------------------------------------------------
46 dnl call WX_PATH_FIND_LIBRARIES(lib name, [optional extra search paths])
47 dnl sets ac_find_libraries to the full name of the file that was found
48 dnl or leaves it empty if not found
49 dnl ---------------------------------------------------------------------------
50 AC_DEFUN([WX_PATH_FIND_LIBRARIES],
51 [
52 ac_find_libraries=
53 for ac_dir in $2 $SEARCH_LIB
54 do
55 for ac_extension in a so sl dylib dll.a; do
56 if test -f "$ac_dir/lib$1.$ac_extension"; then
57 ac_find_libraries=$ac_dir
58 break 2
59 fi
60 done
61 done
62 ])
63
64 dnl ---------------------------------------------------------------------------
65 dnl return list of standard library paths
66 dnl ---------------------------------------------------------------------------
67 dnl return all default locations:
68 dnl - /usr/lib: standard
69 dnl - /usr/lib32: n32 ABI on IRIX
70 dnl - /usr/lib64: n64 ABI on IRIX
71 dnl - /usr/lib/64: 64 bit ABI on Solaris and Linux x86-64
72 dnl
73 dnl NB: if any of directories in the list is not a subdir of /usr, code setting
74 dnl wx_cv_std_libpath needs to be updated
75 AC_DEFUN([WX_STD_LIBPATH], [/usr/lib /usr/lib32 /usr/lib/64 /usr/lib64])
76
77 dnl ---------------------------------------------------------------------------
78 dnl Path to include, already defined
79 dnl ---------------------------------------------------------------------------
80 AC_DEFUN([WX_INCLUDE_PATH_EXIST],
81 [
82 dnl never add -I/usr/include to the CPPFLAGS
83 if test "x$1" = "x/usr/include"; then
84 ac_path_to_include=""
85 else
86 echo "$2" | grep "\-I$1" > /dev/null
87 result=$?
88 if test $result = 0; then
89 ac_path_to_include=""
90 else
91 ac_path_to_include=" -I$1"
92 fi
93 fi
94 ])
95
96 dnl ---------------------------------------------------------------------------
97 dnl Usage: WX_LINK_PATH_EXIST(path, libpath)
98 dnl
99 dnl Set ac_path_to_link to nothing if path is already in libpath, or to -Lpath
100 dnl if it is not, so that libpath can be set to "$libpath$ac_path_to_link"
101 dnl after calling this function
102 dnl ---------------------------------------------------------------------------
103 AC_DEFUN([WX_LINK_PATH_EXIST],
104 [
105 dnl never add -L/usr/libXXX explicitly to libpath
106 if test "$1" = "default location"; then
107 ac_path_to_link=""
108 else
109 echo "$2" | grep "\-L$1" > /dev/null
110 result=$?
111 if test $result = 0; then
112 ac_path_to_link=""
113 else
114 ac_path_to_link=" -L$1"
115 fi
116 fi
117 ])
118
119 dnl ---------------------------------------------------------------------------
120 dnl Usage: WX_FIND_LIB(lib-name, [lib-function to test], [extra search paths])
121 dnl
122 dnl Tests in a variety of ways for the presence of lib-name
123 dnl
124 dnl On success, returns any novel path found in ac_find_libraries; else "std"
125 dnl and any cflags in ac_find_cflags
126 dnl On failure, ac_find_libraries will be empty
127 dnl ---------------------------------------------------------------------------
128 AC_DEFUN([WX_FIND_LIB],
129 [
130 ac_find_libraries=
131
132 dnl Try with pkg-config first. It requires its lib-name parameter lowercase
133 fl_pkgname=`echo "$1" | tr [[:upper:]] [[:lower:]]`
134 dnl suppress PKG_PROG_PKG_CONFIG output; we don't want to keep seeing it
135 PKG_PROG_PKG_CONFIG() AS_MESSAGE_FD> /dev/null
136 PKG_CHECK_MODULES([$1], [$fl_pkgname],
137 [
138 dnl Start by assuming there are no novel lib paths
139 ac_find_libraries="std"
140
141 dnl A simple copy of the internal vars $1_CFLAGS $1_LIBS doesn't work
142 dnl inside the macro
143 dnl
144 dnl TODO: When we stop being autoconf 2.61 compatible, the next 2 lines
145 dnl should become:
146 dnl AS_VAR_COPY([ac_find_cflags], [$1_CFLAGS])
147 dnl AS_VAR_COPY([fl_libs], [$1_LIBS])
148 eval ac_find_cflags=\$$1_CFLAGS
149 eval fl_libs=\$$1_LIBS
150
151 dnl fl_libs may now contain -Lfoopath -lfoo (only non-standard paths are
152 dnl added) We only want the path bit, not the lib names
153 for fl_path in $fl_libs
154 do
155 if test `echo "$fl_path" | cut -c 1-2` = "-L"; then
156 dnl there shouldn't be >1 novel path
157 dnl return it without the -L, ready for WX_LINK_PATH_EXIST
158 ac_find_libraries=`echo "$fl_path" | cut -c 3-`
159 fi
160 done
161 ],
162 [
163 if test "x$ac_find_libraries" = "x"; then
164 dnl Next with AC_CHECK_LIB, if a test function was provided
165 if test "x$2" != "x"; then
166 AC_CHECK_LIB([$1], [$2], [ac_find_libraries="std"])
167 fi
168 fi
169
170 if test "x$ac_find_libraries" = "x"; then
171 dnl Finally try the search path
172 dnl Output a message again, as AC_CHECK_LIB will just have said "no"
173 AC_MSG_CHECKING([elsewhere])
174 dnl $3 will occasionally hold extra path(s) to search
175 WX_PATH_FIND_LIBRARIES([$1], [$3])
176 if test "x$ac_find_libraries" != "x"; then
177 AC_MSG_RESULT([yes])
178 else
179 AC_MSG_RESULT([no])
180 fi
181 fi
182 ])
183 ])
184
185 dnl ===========================================================================
186 dnl C++ features test
187 dnl ===========================================================================
188
189 dnl ---------------------------------------------------------------------------
190 dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" <iostream> header
191 dnl or only the old <iostream.h> one - it may be generally assumed that if
192 dnl <iostream> exists, the other "new" headers (without .h) exist too.
193 dnl
194 dnl call WX_CPP_NEW_HEADERS(action-if-true, action-if-false)
195 dnl ---------------------------------------------------------------------------
196
197 AC_DEFUN([WX_CPP_NEW_HEADERS],
198 [
199 AC_LANG_SAVE
200 AC_LANG_CPLUSPLUS
201
202 AC_CHECK_HEADERS([iostream],,, [ ])
203
204 if test "$ac_cv_header_iostream" = "yes" ; then
205 ifelse([$1], , :, [$1])
206 else
207 ifelse([$2], , :, [$2])
208 fi
209
210 AC_LANG_RESTORE
211 ])
212
213 dnl ---------------------------------------------------------------------------
214 dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
215 dnl keyword and defines HAVE_EXPLICIT if this is the case
216 dnl ---------------------------------------------------------------------------
217
218 AC_DEFUN([WX_CPP_EXPLICIT],
219 [
220 AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
221 wx_cv_explicit,
222 [
223 AC_LANG_SAVE
224 AC_LANG_CPLUSPLUS
225
226 dnl do the test in 2 steps: first check that the compiler knows about the
227 dnl explicit keyword at all and then verify that it really honours it
228 AC_TRY_COMPILE(
229 [
230 class Foo { public: explicit Foo(int) {} };
231 ],
232 [
233 return 0;
234 ],
235 [
236 AC_TRY_COMPILE(
237 [
238 class Foo { public: explicit Foo(int) {} };
239 static void TakeFoo(const Foo& foo) { }
240 ],
241 [
242 TakeFoo(17);
243 return 0;
244 ],
245 wx_cv_explicit=no,
246 wx_cv_explicit=yes
247 )
248 ],
249 wx_cv_explicit=no
250 )
251
252 AC_LANG_RESTORE
253 ])
254
255 if test "$wx_cv_explicit" = "yes"; then
256 AC_DEFINE(HAVE_EXPLICIT)
257 fi
258 ])
259
260 dnl ---------------------------------------------------------------------------
261 dnl WX_CHECK_FUNCS(FUNCTIONS...,
262 dnl [ACTION-IF-FOUND],
263 dnl [ACTION-IF-NOT-FOUND],
264 dnl [EXTRA-DEFINES-AND-INCLUDES],
265 dnl [EXTRA-TEST-CODE])
266 dnl
267 dnl Checks that the functions listed in FUNCTIONS exist in the headers and the
268 dnl libs. For each function, if it is found then defines 'HAVE_FUNCTION' and
269 dnl executes ACTION-IF-FOUND, otherwise executes ACTION-IF-NOT-FOUND.
270 dnl
271 dnl The code from EXTRA-DEFINES-AND-INCLUDES is inserted into the test before
272 dnl the default headers are included, and EXTRA-TEST-CODE is inserted into
273 dnl the main() function after the default test for existence.
274 dnl
275 dnl Examples:
276 dnl # the simple case
277 dnl WX_CHECK_FUNCS(stat)
278 dnl # use break to finish the loop early
279 dnl WX_CHECK_FUNCS(mkstemp mktemp, break)
280 dnl # extra defines
281 dnl WX_CHECK_FUNCS(strtok_r, [], [], [#define _RREENTRANT])
282 dnl # extra includes
283 dnl WX_CHECK_FUNCS(swprintf, [], [], [#include <wchar.h>])
284 dnl # checking the signature with extra test code
285 dnl WX_CHECK_FUNCS(gettimeofday, [], [], [#include <sys/time.h>]
286 dnl [struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz)])
287 dnl ---------------------------------------------------------------------------
288
289 AC_DEFUN([WX_CHECK_FUNCS],
290 [
291 for wx_func in $1
292 do
293 AC_CACHE_CHECK(
294 [for $wx_func],
295 [wx_cv_func_$wx_func],
296 [
297 AC_LINK_IFELSE(
298 [
299 AC_LANG_PROGRAM(
300 [
301 $4
302 AC_INCLUDES_DEFAULT
303 ],
304 [
305 #ifndef $wx_func
306 &$wx_func;
307 #endif
308 $5
309 ])
310 ],
311 [eval wx_cv_func_$wx_func=yes],
312 [eval wx_cv_func_$wx_func=no])
313 ])
314
315 if eval test \$wx_cv_func_$wx_func = yes
316 then
317 AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$wx_func]))
318 $2
319 else
320 :
321 $3
322 fi
323 done
324 ])
325
326 dnl ---------------------------------------------------------------------------
327 dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
328 dnl ---------------------------------------------------------------------------
329
330 AC_DEFUN([WX_C_BIGENDIAN],
331 [AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian,
332 [ac_cv_c_bigendian=unknown
333 # See if sys/param.h defines the BYTE_ORDER macro.
334 AC_TRY_COMPILE([#include <sys/types.h>
335 #include <sys/param.h>], [
336 #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
337 bogus endian macros
338 #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
339 AC_TRY_COMPILE([#include <sys/types.h>
340 #include <sys/param.h>], [
341 #if BYTE_ORDER != BIG_ENDIAN
342 not big endian
343 #endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
344 if test $ac_cv_c_bigendian = unknown; then
345 AC_TRY_RUN([main () {
346 /* Are we little or big endian? From Harbison&Steele. */
347 union
348 {
349 long l;
350 char c[sizeof (long)];
351 } u;
352 u.l = 1;
353 exit (u.c[sizeof (long) - 1] == 1);
354 }], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown])
355 fi])
356 if test $ac_cv_c_bigendian = unknown; then
357 AC_MSG_WARN([Assuming little-endian target machine - this may be overridden by adding the line "ac_cv_c_bigendian=${ac_cv_c_bigendian='yes'}" to config.cache file])
358 fi
359 if test $ac_cv_c_bigendian = yes; then
360 AC_DEFINE(WORDS_BIGENDIAN)
361 fi
362 ])
363
364 dnl ---------------------------------------------------------------------------
365 dnl override AC_ARG_ENABLE/WITH to handle options defaults
366 dnl ---------------------------------------------------------------------------
367
368 dnl this macro checks for a three-valued command line --with argument:
369 dnl possible arguments are 'yes', 'no', 'sys', or 'builtin'
370 dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
371 dnl
372 dnl the default value (used if the option is not specified at all) is the value
373 dnl of wxUSE_ALL_FEATURES (which is "yes" by default but can be changed by
374 dnl giving configure --disable-all-features option)
375 AC_DEFUN([WX_ARG_SYS_WITH],
376 [
377 AC_MSG_CHECKING([for --with-$1])
378 AC_ARG_WITH($1, [$2],
379 [
380 if test "$withval" = yes; then
381 AS_TR_SH(wx_cv_use_$1)='$3=yes'
382 elif test "$withval" = no; then
383 AS_TR_SH(wx_cv_use_$1)='$3=no'
384 elif test "$withval" = sys; then
385 AS_TR_SH(wx_cv_use_$1)='$3=sys'
386 elif test "$withval" = builtin; then
387 AS_TR_SH(wx_cv_use_$1)='$3=builtin'
388 else
389 AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
390 fi
391 ],
392 [
393 AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$wxUSE_ALL_FEATURES}"
394 ])
395
396 eval "$AS_TR_SH(wx_cv_use_$1)"
397
398 if test "$$3" = yes; then
399 AC_MSG_RESULT(yes)
400 elif test "$$3" = no; then
401 AC_MSG_RESULT(no)
402 elif test "$$3" = sys; then
403 AC_MSG_RESULT([system version])
404 elif test "$$3" = builtin; then
405 AC_MSG_RESULT([builtin version])
406 else
407 AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
408 fi
409 ])
410
411 dnl this macro simply checks for a command line argument
412 dnl usage: WX_ARG_WITH(option, helpmessage, variable-name, [withstring])
413 AC_DEFUN([WX_ARG_WITH],
414 [
415 withstring=$4
416 defaultval=$wxUSE_ALL_FEATURES
417 if test -z "$defaultval"; then
418 if test x"$withstring" = xwithout; then
419 defaultval=yes
420 else
421 defaultval=no
422 fi
423 fi
424 AC_MSG_CHECKING([for --${withstring:-with}-$1])
425 AC_ARG_WITH($1, [$2],
426 [
427 if test "$withval" = yes; then
428 AS_TR_SH(wx_cv_use_$1)='$3=yes'
429 else
430 AS_TR_SH(wx_cv_use_$1)='$3=no'
431 fi
432 ],
433 [
434 AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$defaultval}"
435 ])
436
437 eval "$AS_TR_SH(wx_cv_use_$1)"
438
439 if test x"$withstring" = xwithout; then
440 if test $$3 = yes; then
441 result=no
442 else
443 result=yes
444 fi
445 else
446 result=$$3
447 fi
448
449 AC_MSG_RESULT($result)
450 ])
451
452 dnl same as WX_ARG_WITH but makes it clear that the option is enabled by default
453 AC_DEFUN([WX_ARG_WITHOUT], [WX_ARG_WITH($1, [$2], $3, without)])
454
455 dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
456 dnl usage: WX_ARG_ENABLE(option, helpmessage, var, [enablestring], [default])
457 dnl
458 dnl enablestring can be omitted or a literal string "disable" and allows to
459 dnl show "checking for --disable-foo" message when running configure instead of
460 dnl the default "checking for --enable-foo" one whih is useful for the options
461 dnl enabled by default
462 dnl
463 dnl the "default" argument can be omitted or contain the default value to use
464 dnl for the option if it's unspecified
465 AC_DEFUN([WX_ARG_ENABLE],
466 [
467 enablestring=$4
468 defaultval=$5
469 if test -z "$defaultval"; then
470 if test x"$enablestring" = xdisable; then
471 defaultval=yes
472 else
473 defaultval=no
474 fi
475 fi
476
477 AC_MSG_CHECKING([for --${enablestring:-enable}-$1])
478 AC_ARG_ENABLE($1, [$2],
479 [
480 if test "$enableval" = yes; then
481 AS_TR_SH(wx_cv_use_$1)='$3=yes'
482 else
483 AS_TR_SH(wx_cv_use_$1)='$3=no'
484 fi
485 ],
486 [
487 AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$defaultval}"
488 ])
489
490 eval "$AS_TR_SH(wx_cv_use_$1)"
491
492 if test x"$enablestring" = xdisable; then
493 if test $$3 = no; then
494 result=yes
495 else
496 result=no
497 fi
498 else
499 result=$$3
500 fi
501
502 AC_MSG_RESULT($result)
503 ])
504
505 dnl the same as WX_ARG_ENABLE but makes it more clear that the option is
506 dnl enabled by default
507 AC_DEFUN([WX_ARG_DISABLE], [WX_ARG_ENABLE($1, [$2], $3, disable)])
508
509 dnl same as WX_ARG_ENABLE but defaults to wxUSE_ALL_FEATURES instead of "yes"
510 AC_DEFUN([WX_ARG_FEATURE], [WX_ARG_ENABLE($1, [$2], $3,, $wxUSE_ALL_FEATURES)])
511
512 dnl Like WX_ARG_ENABLE but accepts a parameter.
513 dnl
514 dnl Usage:
515 dnl WX_ARG_ENABLE_PARAM(option, helpmessage, variable-name, enablestring)
516 dnl
517 dnl Example:
518 dnl WX_ARG_ENABLE_PARAM(foo, [[ --enable-foo[=bar] use foo]], wxUSE_FOO)
519 dnl
520 dnl --enable-foo wxUSE_FOO=yes
521 dnl --disable-foo wxUSE_FOO=no
522 dnl --enable-foo=bar wxUSE_FOO=bar
523 dnl <not given> wxUSE_FOO=$DEFAULT_wxUSE_FOO
524 dnl
525 AC_DEFUN([WX_ARG_ENABLE_PARAM],
526 [
527 enablestring=$4
528 AC_MSG_CHECKING([for --${enablestring:-enable}-$1])
529 AC_ARG_ENABLE($1, [$2],
530 [
531 wx_cv_use_$1="$3='$enableval'"
532 ],
533 [
534 wx_cv_use_$1='$3='$DEFAULT_$3
535 ])
536
537 eval "$wx_cv_use_$1"
538
539 AC_MSG_RESULT([$$3])
540 ])
541
542 dnl ===========================================================================
543 dnl Linker features test
544 dnl ===========================================================================
545
546 dnl ---------------------------------------------------------------------------
547 dnl WX_VERSIONED_SYMBOLS checks whether the linker can create versioned
548 dnl symbols. If it can, sets LDFLAGS_VERSIONING to $CXX flags needed to use
549 dnl version script file named versionfile
550 dnl
551 dnl call WX_VERSIONED_SYMBOLS(versionfile)
552 dnl ---------------------------------------------------------------------------
553 AC_DEFUN([WX_VERSIONED_SYMBOLS],
554 [
555 case "${host}" in
556 *-*-cygwin* | *-*-mingw* )
557 dnl although ld does support version script option on these
558 dnl platforms, it doesn't make much sense to use it under Win32
559 dnl and, moreover, this breaks linking because of a bug in handling
560 dnl paths in -Wl,--version-script,path option (if we ever do need
561 dnl to use it for cygwin/mingw32, keep in mind that replacing last
562 dnl comma with the equal sign works) so
563 dnl simply disable it
564 wx_cv_version_script=no
565 ;;
566
567 *)
568 AC_CACHE_CHECK([if the linker accepts --version-script], wx_cv_version_script,
569 [
570 echo "VER_1 { *; };" >conftest.sym
571 echo "int main() { return 0; }" >conftest.cpp
572
573 if AC_TRY_COMMAND([
574 $CXX -o conftest.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp
575 -Wl,--version-script,conftest.sym >/dev/null 2>conftest.stderr]) ; then
576 if test -s conftest.stderr ; then
577 wx_cv_version_script=no
578 else
579 wx_cv_version_script=yes
580 fi
581 else
582 wx_cv_version_script=no
583 fi
584
585 dnl There's a problem in some old linkers with --version-script that
586 dnl can cause linking to fail when you have objects with vtables in
587 dnl libs 3 deep. This is known to happen in netbsd and openbsd with
588 dnl ld 2.11.2.
589 dnl
590 dnl To test for this we need to make some shared libs and
591 dnl unfortunately we can't be sure of the right way to do that. If the
592 dnl first two compiles don't succeed then it looks like the test isn't
593 dnl working and the result is ignored, but if OTOH the first two
594 dnl succeed but the third does not then the bug has been detected and
595 dnl the --version-script flag is dropped.
596 if test $wx_cv_version_script = yes
597 then
598 echo "struct B { virtual ~B() { } }; \
599 struct D : public B { }; \
600 void F() { D d; }" > conftest.cpp
601
602 if AC_TRY_COMMAND([
603 $CXX -shared -fPIC -o conftest1.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp
604 -Wl,--version-script,conftest.sym >/dev/null 2>/dev/null]) &&
605 AC_TRY_COMMAND([
606 $CXX -shared -fPIC -o conftest2.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp
607 -Wl,--version-script,conftest.sym conftest1.output >/dev/null 2>/dev/null])
608 then
609 if AC_TRY_COMMAND([
610 $CXX -shared -fPIC -o conftest3.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp
611 -Wl,--version-script,conftest.sym conftest2.output conftest1.output >/dev/null 2>/dev/null])
612 then
613 wx_cv_version_script=yes
614 else
615 wx_cv_version_script=no
616 fi
617 fi
618 fi
619
620 rm -f conftest.output conftest.stderr conftest.sym conftest.cpp
621 rm -f conftest1.output conftest2.output conftest3.output
622 ])
623
624 if test $wx_cv_version_script = yes ; then
625 LDFLAGS_VERSIONING="-Wl,--version-script,$1"
626 fi
627 ;;
628 esac
629 ])
630
631
632 dnl ===========================================================================
633 dnl "3rd party" macros included here because they are not widely available
634 dnl ===========================================================================
635
636 dnl ---------------------------------------------------------------------------
637 dnl test for availability of iconv()
638 dnl ---------------------------------------------------------------------------
639
640 dnl From Bruno Haible.
641
642 AC_DEFUN([AM_ICONV],
643 [
644 dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
645 dnl those with the standalone portable GNU libiconv installed).
646
647 AC_ARG_WITH([libiconv-prefix],
648 [ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [
649 for dir in `echo "$withval" | tr : ' '`; do
650 if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
651 if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
652 done
653 ])
654
655 AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
656 am_cv_func_iconv="no, consider installing GNU libiconv"
657 am_cv_lib_iconv=no
658 AC_TRY_LINK([#include <stdlib.h>
659 #include <iconv.h>],
660 [iconv_t cd = iconv_open("","");
661 iconv(cd,NULL,NULL,NULL,NULL);
662 iconv_close(cd);],
663 am_cv_func_iconv=yes)
664 if test "$am_cv_func_iconv" != yes; then
665 am_save_LIBS="$LIBS"
666 LIBS="$LIBS -liconv"
667 AC_TRY_LINK([#include <stdlib.h>
668 #include <iconv.h>],
669 [iconv_t cd = iconv_open("","");
670 iconv(cd,NULL,NULL,NULL,NULL);
671 iconv_close(cd);],
672 am_cv_lib_iconv=yes
673 am_cv_func_iconv=yes)
674 LIBS="$am_save_LIBS"
675 fi
676 ])
677 if test "$am_cv_func_iconv" = yes; then
678 AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
679 AC_CACHE_CHECK([if iconv needs const], wx_cv_func_iconv_const,
680 AC_TRY_COMPILE([
681 #include <stdlib.h>
682 #include <iconv.h>
683 extern
684 #ifdef __cplusplus
685 "C"
686 #endif
687 #if defined(__STDC__) || defined(__cplusplus)
688 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
689 #else
690 size_t iconv();
691 #endif
692 ],
693 [],
694 wx_cv_func_iconv_const="no",
695 wx_cv_func_iconv_const="yes"
696 )
697 )
698
699 iconv_const=
700 if test "x$wx_cv_func_iconv_const" = "xyes"; then
701 iconv_const="const"
702 fi
703
704 AC_DEFINE_UNQUOTED(ICONV_CONST, $iconv_const,
705 [Define as const if the declaration of iconv() needs const.])
706 fi
707 LIBICONV=
708 if test "$am_cv_lib_iconv" = yes; then
709 LIBICONV="-liconv"
710 fi
711 AC_SUBST(LIBICONV)
712 ])
713
714 dnl ---------------------------------------------------------------------------
715 dnl AC_SYS_LARGEFILE (partly based on the code from autoconf 2.5x)
716 dnl ---------------------------------------------------------------------------
717
718 dnl WX_SYS_LARGEFILE_TEST
719 dnl
720 dnl NB: original autoconf test was checking if compiler supported 6 bit off_t
721 dnl arithmetic properly but this failed miserably with gcc under Linux
722 dnl whereas the system still supports 64 bit files, so now simply check
723 dnl that off_t is big enough
724 define(WX_SYS_LARGEFILE_TEST,
725 [typedef struct {
726 unsigned int field: sizeof(off_t) == 8;
727 } wxlf;
728 ])
729
730
731 dnl WX_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR)
732 define(WX_SYS_LARGEFILE_MACRO_VALUE,
733 [
734 AC_CACHE_CHECK([for $1 value needed for large files], [$3],
735 [
736 AC_TRY_COMPILE([#define $1 $2
737 #include <sys/types.h>],
738 WX_SYS_LARGEFILE_TEST,
739 [$3=$2],
740 [$3=no])
741 ]
742 )
743
744 if test "$$3" != no; then
745 wx_largefile=yes
746 AC_DEFINE_UNQUOTED([$1], [$$3])
747 fi
748 ])
749
750
751 dnl AC_SYS_LARGEFILE
752 dnl ----------------
753 dnl By default, many hosts won't let programs access large files;
754 dnl one must use special compiler options to get large-file access to work.
755 dnl For more details about this brain damage please see:
756 dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
757 AC_DEFUN([AC_SYS_LARGEFILE],
758 [AC_ARG_ENABLE(largefile,
759 [ --disable-largefile omit support for large files])
760 if test "$enable_largefile" != no; then
761 dnl _FILE_OFFSET_BITS==64 is needed for Linux, Solaris, ...
762 dnl _LARGE_FILES -- for AIX
763 wx_largefile=no
764 WX_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits)
765 if test "x$wx_largefile" != "xyes"; then
766 WX_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files)
767 fi
768
769 AC_MSG_CHECKING(if large file support is available)
770 if test "x$wx_largefile" = "xyes"; then
771 AC_DEFINE(HAVE_LARGEFILE_SUPPORT)
772 fi
773 AC_MSG_RESULT($wx_largefile)
774 fi
775 ])
776