]> git.saurik.com Git - wxWidgets.git/blame_incremental - acinclude.m4
Make a couple virtuals protected so they can be overridden.
[wxWidgets.git] / acinclude.m4
... / ...
CommitLineData
1dnl ---------------------------------------------------------------------------
2dnl
3dnl Macros for configure.in for wxWindows by Robert Roebling, Phil Blecker,
4dnl Vadim Zeitlin and Ron Lee
5dnl
6dnl This script is under the wxWindows licence.
7dnl
8dnl Version: $Id$
9dnl ---------------------------------------------------------------------------
10
11
12dnl ===========================================================================
13dnl Objective-C(++) related macros
14dnl ===========================================================================
15m4_define([AC_WX_LANG_OBJECTIVEC],
16[AC_LANG(C)
17ac_ext=m
18])
19
20m4_define([AC_WX_LANG_OBJECTIVECPLUSPLUS],
21[AC_LANG(C++)
22ac_ext=mm
23])
24
25dnl ===========================================================================
26dnl macros to find a file in the list of include/lib paths
27dnl ===========================================================================
28
29dnl ---------------------------------------------------------------------------
30dnl call WX_PATH_FIND_INCLUDES(search path, header name), sets ac_find_includes
31dnl to the full name of the file that was found or leaves it empty if not found
32dnl ---------------------------------------------------------------------------
33AC_DEFUN([WX_PATH_FIND_INCLUDES],
34[
35ac_find_includes=
36for 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
45dnl ---------------------------------------------------------------------------
46dnl call WX_PATH_FIND_LIBRARIES(lib name, [optional extra search paths])
47dnl sets ac_find_libraries to the full name of the file that was found
48dnl or leaves it empty if not found
49dnl ---------------------------------------------------------------------------
50AC_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
64dnl ---------------------------------------------------------------------------
65dnl return list of standard library paths
66dnl ---------------------------------------------------------------------------
67dnl return all default locations:
68dnl - /usr/lib: standard
69dnl - /usr/lib32: n32 ABI on IRIX
70dnl - /usr/lib64: n64 ABI on IRIX
71dnl - /usr/lib/64: 64 bit ABI on Solaris and Linux x86-64
72dnl
73dnl NB: if any of directories in the list is not a subdir of /usr, code setting
74dnl wx_cv_std_libpath needs to be updated
75AC_DEFUN([WX_STD_LIBPATH], [/usr/lib /usr/lib32 /usr/lib/64 /usr/lib64])
76
77dnl ---------------------------------------------------------------------------
78dnl Path to include, already defined
79dnl ---------------------------------------------------------------------------
80AC_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
96dnl ---------------------------------------------------------------------------
97dnl Usage: WX_LINK_PATH_EXIST(path, libpath)
98dnl
99dnl Set ac_path_to_link to nothing if path is already in libpath, or to -Lpath
100dnl if it is not, so that libpath can be set to "$libpath$ac_path_to_link"
101dnl after calling this function
102dnl ---------------------------------------------------------------------------
103AC_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
119dnl ---------------------------------------------------------------------------
120dnl Usage: WX_FIND_LIB(lib-name, [lib-function to test], [extra search paths])
121dnl
122dnl Tests in a variety of ways for the presence of lib-name
123dnl
124dnl On success, returns any novel path found in ac_find_libraries; else "std"
125dnl and any cflags in ac_find_cflags
126dnl On failure, ac_find_libraries will be empty
127dnl ---------------------------------------------------------------------------
128AC_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
185dnl ===========================================================================
186dnl C++ features test
187dnl ===========================================================================
188
189dnl ---------------------------------------------------------------------------
190dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" <iostream> header
191dnl or only the old <iostream.h> one - it may be generally assumed that if
192dnl <iostream> exists, the other "new" headers (without .h) exist too.
193dnl
194dnl call WX_CPP_NEW_HEADERS(action-if-true, action-if-false)
195dnl ---------------------------------------------------------------------------
196
197AC_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
213dnl ---------------------------------------------------------------------------
214dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
215dnl keyword and defines HAVE_EXPLICIT if this is the case
216dnl ---------------------------------------------------------------------------
217
218AC_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
260dnl ---------------------------------------------------------------------------
261dnl WX_CHECK_FUNCS(FUNCTIONS...,
262dnl [ACTION-IF-FOUND],
263dnl [ACTION-IF-NOT-FOUND],
264dnl [EXTRA-DEFINES-AND-INCLUDES],
265dnl [EXTRA-TEST-CODE])
266dnl
267dnl Checks that the functions listed in FUNCTIONS exist in the headers and the
268dnl libs. For each function, if it is found then defines 'HAVE_FUNCTION' and
269dnl executes ACTION-IF-FOUND, otherwise executes ACTION-IF-NOT-FOUND.
270dnl
271dnl The code from EXTRA-DEFINES-AND-INCLUDES is inserted into the test before
272dnl the default headers are included, and EXTRA-TEST-CODE is inserted into
273dnl the main() function after the default test for existence.
274dnl
275dnl Examples:
276dnl # the simple case
277dnl WX_CHECK_FUNCS(stat)
278dnl # use break to finish the loop early
279dnl WX_CHECK_FUNCS(mkstemp mktemp, break)
280dnl # extra defines
281dnl WX_CHECK_FUNCS(strtok_r, [], [], [#define _RREENTRANT])
282dnl # extra includes
283dnl WX_CHECK_FUNCS(swprintf, [], [], [#include <wchar.h>])
284dnl # checking the signature with extra test code
285dnl WX_CHECK_FUNCS(gettimeofday, [], [], [#include <sys/time.h>]
286dnl [struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz)])
287dnl ---------------------------------------------------------------------------
288
289AC_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
326dnl ---------------------------------------------------------------------------
327dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
328dnl ---------------------------------------------------------------------------
329
330AC_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.
334AC_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.
339AC_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)])
344if test $ac_cv_c_bigendian = unknown; then
345AC_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])
355fi])
356if 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])
358fi
359if test $ac_cv_c_bigendian = yes; then
360 AC_DEFINE(WORDS_BIGENDIAN)
361fi
362])
363
364dnl ---------------------------------------------------------------------------
365dnl override AC_ARG_ENABLE/WITH to handle options defaults
366dnl ---------------------------------------------------------------------------
367
368dnl this macro checks for a three-valued command line --with argument:
369dnl possible arguments are 'yes', 'no', 'sys', or 'builtin'
370dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
371dnl
372dnl the default value (used if the option is not specified at all) is the value
373dnl of wxUSE_ALL_FEATURES (which is "yes" by default but can be changed by
374dnl giving configure --disable-all-features option)
375AC_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
411dnl this macro simply checks for a command line argument
412dnl usage: WX_ARG_WITH(option, helpmessage, variable-name, [withstring])
413AC_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
452dnl same as WX_ARG_WITH but makes it clear that the option is enabled by default
453AC_DEFUN([WX_ARG_WITHOUT], [WX_ARG_WITH($1, [$2], $3, without)])
454
455dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
456dnl usage: WX_ARG_ENABLE(option, helpmessage, var, [enablestring], [default])
457dnl
458dnl enablestring can be omitted or a literal string "disable" and allows to
459dnl show "checking for --disable-foo" message when running configure instead of
460dnl the default "checking for --enable-foo" one whih is useful for the options
461dnl enabled by default
462dnl
463dnl the "default" argument can be omitted or contain the default value to use
464dnl for the option if it's unspecified
465AC_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
505dnl the same as WX_ARG_ENABLE but makes it more clear that the option is
506dnl enabled by default
507AC_DEFUN([WX_ARG_DISABLE], [WX_ARG_ENABLE($1, [$2], $3, disable)])
508
509dnl same as WX_ARG_ENABLE but defaults to wxUSE_ALL_FEATURES instead of "yes"
510AC_DEFUN([WX_ARG_FEATURE], [WX_ARG_ENABLE($1, [$2], $3,, $wxUSE_ALL_FEATURES)])
511
512dnl Like WX_ARG_ENABLE but accepts a parameter.
513dnl
514dnl Usage:
515dnl WX_ARG_ENABLE_PARAM(option, helpmessage, variable-name, enablestring)
516dnl
517dnl Example:
518dnl WX_ARG_ENABLE_PARAM(foo, [[ --enable-foo[=bar] use foo]], wxUSE_FOO)
519dnl
520dnl --enable-foo wxUSE_FOO=yes
521dnl --disable-foo wxUSE_FOO=no
522dnl --enable-foo=bar wxUSE_FOO=bar
523dnl <not given> wxUSE_FOO=$DEFAULT_wxUSE_FOO
524dnl
525AC_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
542dnl ===========================================================================
543dnl Linker features test
544dnl ===========================================================================
545
546dnl ---------------------------------------------------------------------------
547dnl WX_VERSIONED_SYMBOLS checks whether the linker can create versioned
548dnl symbols. If it can, sets LDFLAGS_VERSIONING to $CXX flags needed to use
549dnl version script file named versionfile
550dnl
551dnl call WX_VERSIONED_SYMBOLS(versionfile)
552dnl ---------------------------------------------------------------------------
553AC_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
632dnl ===========================================================================
633dnl "3rd party" macros included here because they are not widely available
634dnl ===========================================================================
635
636dnl ---------------------------------------------------------------------------
637dnl test for availability of iconv()
638dnl ---------------------------------------------------------------------------
639
640dnl From Bruno Haible.
641
642AC_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>
683extern
684#ifdef __cplusplus
685"C"
686#endif
687#if defined(__STDC__) || defined(__cplusplus)
688size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
689#else
690size_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
714dnl ---------------------------------------------------------------------------
715dnl AC_SYS_LARGEFILE (partly based on the code from autoconf 2.5x)
716dnl ---------------------------------------------------------------------------
717
718dnl WX_SYS_LARGEFILE_TEST
719dnl
720dnl NB: original autoconf test was checking if compiler supported 6 bit off_t
721dnl arithmetic properly but this failed miserably with gcc under Linux
722dnl whereas the system still supports 64 bit files, so now simply check
723dnl that off_t is big enough
724define(WX_SYS_LARGEFILE_TEST,
725[typedef struct {
726 unsigned int field: sizeof(off_t) == 8;
727} wxlf;
728])
729
730
731dnl WX_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR)
732define(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
751dnl AC_SYS_LARGEFILE
752dnl ----------------
753dnl By default, many hosts won't let programs access large files;
754dnl one must use special compiler options to get large-file access to work.
755dnl For more details about this brain damage please see:
756dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
757AC_DEFUN([AC_SYS_LARGEFILE],
758[AC_ARG_ENABLE(largefile,
759 [ --disable-largefile omit support for large files])
760if 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)
774fi
775])
776