No changes, just simplifications to configure code.
[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