]> git.saurik.com Git - wxWidgets.git/blobdiff - acinclude.m4
Fix configure check for gcc atomics on 32-bit x86.
[wxWidgets.git] / acinclude.m4
index 38171cc2bd5fde1cd97848e3fecc2edd7785a1be..bd17ead502a60b9b4f42ab647344a598e498c259 100644 (file)
@@ -4,8 +4,6 @@ dnl Macros for configure.in for wxWindows by Robert Roebling, Phil Blecker,
 dnl Vadim Zeitlin and Ron Lee
 dnl
 dnl This script is under the wxWindows licence.
 dnl Vadim Zeitlin and Ron Lee
 dnl
 dnl This script is under the wxWindows licence.
-dnl
-dnl Version: $Id$
 dnl ---------------------------------------------------------------------------
 
 
 dnl ---------------------------------------------------------------------------
 
 
@@ -23,7 +21,7 @@ ac_ext=mm
 ])
 
 dnl ===========================================================================
 ])
 
 dnl ===========================================================================
-dnl macros to find the a file in the list of include/lib paths
+dnl macros to find a file in the list of include/lib paths
 dnl ===========================================================================
 
 dnl ---------------------------------------------------------------------------
 dnl ===========================================================================
 
 dnl ---------------------------------------------------------------------------
@@ -33,7 +31,7 @@ dnl ---------------------------------------------------------------------------
 AC_DEFUN([WX_PATH_FIND_INCLUDES],
 [
 ac_find_includes=
 AC_DEFUN([WX_PATH_FIND_INCLUDES],
 [
 ac_find_includes=
-for ac_dir in $1 /usr/include;
+for ac_dir in $1 /usr/include
   do
     if test -f "$ac_dir/$2"; then
       ac_find_includes=$ac_dir
   do
     if test -f "$ac_dir/$2"; then
       ac_find_includes=$ac_dir
@@ -43,16 +41,17 @@ for ac_dir in $1 /usr/include;
 ])
 
 dnl ---------------------------------------------------------------------------
 ])
 
 dnl ---------------------------------------------------------------------------
-dnl call WX_PATH_FIND_LIBRARIES(search path, lib name), sets ac_find_libraries
-dnl to the full name of the file that was found or leaves it empty if not found
+dnl call WX_PATH_FIND_LIBRARIES(lib name, [optional extra search paths])
+dnl sets ac_find_libraries to the full name of the file that was found
+dnl or leaves it empty if not found
 dnl ---------------------------------------------------------------------------
 AC_DEFUN([WX_PATH_FIND_LIBRARIES],
 [
   ac_find_libraries=
 dnl ---------------------------------------------------------------------------
 AC_DEFUN([WX_PATH_FIND_LIBRARIES],
 [
   ac_find_libraries=
-  for ac_dir in $1;
+  for ac_dir in $2 $SEARCH_LIB
   do
     for ac_extension in a so sl dylib dll.a; do
   do
     for ac_extension in a so sl dylib dll.a; do
-      if test -f "$ac_dir/lib$2.$ac_extension"; then
+      if test -f "$ac_dir/lib$1.$ac_extension"; then
         ac_find_libraries=$ac_dir
         break 2
       fi
         ac_find_libraries=$ac_dir
         break 2
       fi
@@ -95,13 +94,13 @@ AC_DEFUN([WX_INCLUDE_PATH_EXIST],
 dnl ---------------------------------------------------------------------------
 dnl Usage: WX_LINK_PATH_EXIST(path, libpath)
 dnl
 dnl ---------------------------------------------------------------------------
 dnl Usage: WX_LINK_PATH_EXIST(path, libpath)
 dnl
-dnl Set ac_path_to_link to nothing if path is already in libpath of to -Lpath
+dnl Set ac_path_to_link to nothing if path is already in libpath, or to -Lpath
 dnl if it is not, so that libpath can be set to "$libpath$ac_path_to_link"
 dnl after calling this function
 dnl ---------------------------------------------------------------------------
 AC_DEFUN([WX_LINK_PATH_EXIST],
 [
 dnl if it is not, so that libpath can be set to "$libpath$ac_path_to_link"
 dnl after calling this function
 dnl ---------------------------------------------------------------------------
 AC_DEFUN([WX_LINK_PATH_EXIST],
 [
-  dnl never add -L/usr/libXXX explicitely to libpath
+  dnl never add -L/usr/libXXX explicitly to libpath
   if test "$1" = "default location"; then
     ac_path_to_link=""
   else
   if test "$1" = "default location"; then
     ac_path_to_link=""
   else
@@ -115,6 +114,72 @@ AC_DEFUN([WX_LINK_PATH_EXIST],
   fi
 ])
 
   fi
 ])
 
+dnl ---------------------------------------------------------------------------
+dnl Usage: WX_FIND_LIB(lib-name, [lib-function to test], [extra search paths])
+dnl
+dnl Tests in a variety of ways for the presence of lib-name
+dnl
+dnl On success, returns any novel path found in ac_find_libraries; else "std"
+dnl             and any cflags in ac_find_cflags
+dnl On failure, ac_find_libraries will be empty
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_FIND_LIB],
+[
+  ac_find_libraries=
+
+  dnl Try with pkg-config first. It requires its lib-name parameter lowercase
+  fl_pkgname=`echo "$1" | tr [[:upper:]] [[:lower:]]`
+  dnl suppress PKG_PROG_PKG_CONFIG output; we don't want to keep seeing it
+  PKG_PROG_PKG_CONFIG() AS_MESSAGE_FD> /dev/null
+  PKG_CHECK_MODULES([$1], [$fl_pkgname],
+    [
+      dnl Start by assuming there are no novel lib paths
+      ac_find_libraries="std"
+
+      dnl A simple copy of the internal vars $1_CFLAGS $1_LIBS doesn't work
+      dnl inside the macro
+      dnl
+      dnl TODO: When we stop being autoconf 2.61 compatible, the next 2 lines
+      dnl should become:
+      dnl AS_VAR_COPY([ac_find_cflags], [$1_CFLAGS])
+      dnl AS_VAR_COPY([fl_libs], [$1_LIBS])
+      eval ac_find_cflags=\$$1_CFLAGS
+      eval fl_libs=\$$1_LIBS
+
+      dnl fl_libs may now contain -Lfoopath -lfoo (only non-standard paths are
+      dnl added) We only want the path bit, not the lib names
+      for fl_path in $fl_libs
+      do
+        if test `echo "$fl_path" | cut -c 1-2` = "-L"; then
+          dnl there shouldn't be >1 novel path
+          dnl return it without the -L, ready for WX_LINK_PATH_EXIST
+          ac_find_libraries=`echo "$fl_path" | cut -c 3-`
+        fi
+      done
+    ],
+    [
+      if test "x$ac_find_libraries" = "x"; then
+        dnl Next with AC_CHECK_LIB, if a test function was provided
+        if test "x$2" != "x"; then
+          AC_CHECK_LIB([$1], [$2], [ac_find_libraries="std"])
+        fi
+      fi
+
+      if test "x$ac_find_libraries" = "x"; then
+        dnl Finally try the search path
+        dnl Output a message again, as AC_CHECK_LIB will just have said "no"
+        AC_MSG_CHECKING([elsewhere])
+        dnl $3 will occasionally hold extra path(s) to search
+        WX_PATH_FIND_LIBRARIES([$1], [$3])
+        if test "x$ac_find_libraries" != "x"; then
+          AC_MSG_RESULT([yes])
+        else
+          AC_MSG_RESULT([no])
+        fi
+      fi
+    ])
+])
+
 dnl ===========================================================================
 dnl C++ features test
 dnl ===========================================================================
 dnl ===========================================================================
 dnl C++ features test
 dnl ===========================================================================
@@ -124,7 +189,7 @@ dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" <iostream> header
 dnl or only the old <iostream.h> one - it may be generally assumed that if
 dnl <iostream> exists, the other "new" headers (without .h) exist too.
 dnl
 dnl or only the old <iostream.h> one - it may be generally assumed that if
 dnl <iostream> exists, the other "new" headers (without .h) exist too.
 dnl
-dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false)
+dnl call WX_CPP_NEW_HEADERS(action-if-true, action-if-false)
 dnl ---------------------------------------------------------------------------
 
 AC_DEFUN([WX_CPP_NEW_HEADERS],
 dnl ---------------------------------------------------------------------------
 
 AC_DEFUN([WX_CPP_NEW_HEADERS],
@@ -143,43 +208,6 @@ AC_DEFUN([WX_CPP_NEW_HEADERS],
     AC_LANG_RESTORE
 ])
 
     AC_LANG_RESTORE
 ])
 
-dnl ---------------------------------------------------------------------------
-dnl WX_CPP_BOOL checks whether the C++ compiler has a built in bool type
-dnl
-dnl call WX_CPP_BOOL - will define HAVE_BOOL if the compiler supports bool
-dnl ---------------------------------------------------------------------------
-
-AC_DEFUN([WX_CPP_BOOL],
-[
-  AC_CACHE_CHECK([if C++ compiler supports bool], wx_cv_cpp_bool,
-  [
-    AC_LANG_SAVE
-    AC_LANG_CPLUSPLUS
-
-    AC_TRY_COMPILE(
-      [
-      ],
-      [
-        bool b = true;
-
-        return 0;
-      ],
-      [
-        wx_cv_cpp_bool=yes
-      ],
-      [
-        wx_cv_cpp_bool=no
-      ]
-    )
-
-    AC_LANG_RESTORE
-  ])
-
-  if test "$wx_cv_cpp_bool" = "yes"; then
-    AC_DEFINE(HAVE_BOOL)
-  fi
-])
-
 dnl ---------------------------------------------------------------------------
 dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
 dnl keyword and defines HAVE_EXPLICIT if this is the case
 dnl ---------------------------------------------------------------------------
 dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
 dnl keyword and defines HAVE_EXPLICIT if this is the case
@@ -284,7 +312,7 @@ AC_DEFUN([WX_CHECK_FUNCS],
 
     if eval test \$wx_cv_func_$wx_func = yes
     then
 
     if eval test \$wx_cv_func_$wx_func = yes
     then
-      AC_DEFINE_UNQUOTED([HAVE_`echo $wx_func | tr 'a-z' 'A-Z'`])
+      AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$wx_func]))
       $2
     else
       :
       $2
     else
       :
@@ -324,7 +352,7 @@ AC_TRY_RUN([main () {
 }], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown])
 fi])
 if test $ac_cv_c_bigendian = unknown; then
 }], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown])
 fi])
 if test $ac_cv_c_bigendian = unknown; then
-  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])
+  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])
 fi
 if test $ac_cv_c_bigendian = yes; then
   AC_DEFINE(WORDS_BIGENDIAN)
 fi
 if test $ac_cv_c_bigendian = yes; then
   AC_DEFINE(WORDS_BIGENDIAN)
@@ -332,28 +360,9 @@ fi
 ])
 
 dnl ---------------------------------------------------------------------------
 ])
 
 dnl ---------------------------------------------------------------------------
-dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file
+dnl override AC_ARG_ENABLE/WITH to handle options defaults
 dnl ---------------------------------------------------------------------------
 
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN([WX_ARG_CACHE_INIT],
-        [
-          wx_arg_cache_file="configarg.cache"
-          echo "loading argument cache $wx_arg_cache_file"
-          rm -f ${wx_arg_cache_file}.tmp
-          touch ${wx_arg_cache_file}.tmp
-          touch ${wx_arg_cache_file}
-        ])
-
-AC_DEFUN([WX_ARG_CACHE_FLUSH],
-        [
-          echo "saving argument cache $wx_arg_cache_file"
-          mv ${wx_arg_cache_file}.tmp ${wx_arg_cache_file}
-        ])
-
-dnl return the name of the variable to store the value of the given
-dnl WX_ARG_WITH/ENABLE option
-AC_DEFUN([WX_ARG_CACHE_NAME],)
-
 dnl this macro checks for a three-valued command line --with argument:
 dnl   possible arguments are 'yes', 'no', 'sys', or 'builtin'
 dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
 dnl this macro checks for a three-valued command line --with argument:
 dnl   possible arguments are 'yes', 'no', 'sys', or 'builtin'
 dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
@@ -377,22 +386,12 @@ AC_DEFUN([WX_ARG_SYS_WITH],
                         else
                           AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
                         fi
                         else
                           AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
                         fi
-                        cache=yes
                       ],
                       [
                       ],
                       [
-                        cache=no
-                        LINE=`grep "^$3=" ${wx_arg_cache_file}`
-                        if test "x$LINE" != x ; then
-                          eval "DEFAULT_$LINE"
-                        fi
-
                         AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$wxUSE_ALL_FEATURES}"
                       ])
 
           eval "$AS_TR_SH(wx_cv_use_$1)"
                         AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$wxUSE_ALL_FEATURES}"
                       ])
 
           eval "$AS_TR_SH(wx_cv_use_$1)"
-          if test "x$cache" = xyes; then
-            echo "$3=$$3" >> ${wx_arg_cache_file}.tmp
-          fi
 
           if test "$$3" = yes; then
             AC_MSG_RESULT(yes)
 
           if test "$$3" = yes; then
             AC_MSG_RESULT(yes)
@@ -407,7 +406,7 @@ AC_DEFUN([WX_ARG_SYS_WITH],
           fi
         ])
 
           fi
         ])
 
-dnl this macro checks for a command line argument and caches the result
+dnl this macro simply checks for a command line argument
 dnl usage: WX_ARG_WITH(option, helpmessage, variable-name, [withstring])
 AC_DEFUN([WX_ARG_WITH],
         [
 dnl usage: WX_ARG_WITH(option, helpmessage, variable-name, [withstring])
 AC_DEFUN([WX_ARG_WITH],
         [
@@ -428,22 +427,12 @@ AC_DEFUN([WX_ARG_WITH],
                         else
                           AS_TR_SH(wx_cv_use_$1)='$3=no'
                         fi
                         else
                           AS_TR_SH(wx_cv_use_$1)='$3=no'
                         fi
-                        cache=yes
                       ],
                       [
                       ],
                       [
-                        cache=no
-                        LINE=`grep "^$3=" ${wx_arg_cache_file}`
-                        if test "x$LINE" != x ; then
-                          eval "DEFAULT_$LINE"
-                        fi
-
                         AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$defaultval}"
                       ])
 
           eval "$AS_TR_SH(wx_cv_use_$1)"
                         AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$defaultval}"
                       ])
 
           eval "$AS_TR_SH(wx_cv_use_$1)"
-          if test "x$cache" = xyes; then
-            echo "$3=$$3" >> ${wx_arg_cache_file}.tmp
-          fi
 
           if test x"$withstring" = xwithout; then
             if test $$3 = yes; then
 
           if test x"$withstring" = xwithout; then
             if test $$3 = yes; then
@@ -491,28 +480,18 @@ AC_DEFUN([WX_ARG_ENABLE],
                           else
                             AS_TR_SH(wx_cv_use_$1)='$3=no'
                           fi
                           else
                             AS_TR_SH(wx_cv_use_$1)='$3=no'
                           fi
-                          cache=yes
                         ],
                         [
                         ],
                         [
-                          cache=no
-                          LINE=`grep "^$3=" ${wx_arg_cache_file}`
-                          if test "x$LINE" != x ; then
-                            eval "DEFAULT_$LINE"
-                          fi
-
                           AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$defaultval}"
                         ])
 
           eval "$AS_TR_SH(wx_cv_use_$1)"
                           AS_TR_SH(wx_cv_use_$1)='$3=${'DEFAULT_$3":-$defaultval}"
                         ])
 
           eval "$AS_TR_SH(wx_cv_use_$1)"
-          if test "x$cache" = xyes; then
-            echo "$3=$$3" >> ${wx_arg_cache_file}.tmp
-          fi
 
           if test x"$enablestring" = xdisable; then
 
           if test x"$enablestring" = xdisable; then
-            if test $$3 = yes; then
-              result=no
-            else
+            if test $$3 = no; then
               result=yes
               result=yes
+            else
+              result=no
             fi
           else
             result=$$3
             fi
           else
             result=$$3
@@ -539,8 +518,7 @@ dnl
 dnl  --enable-foo       wxUSE_FOO=yes
 dnl  --disable-foo      wxUSE_FOO=no
 dnl  --enable-foo=bar   wxUSE_FOO=bar
 dnl  --enable-foo       wxUSE_FOO=yes
 dnl  --disable-foo      wxUSE_FOO=no
 dnl  --enable-foo=bar   wxUSE_FOO=bar
-dnl  <not given>        value from configarg.cache or
-dnl                     wxUSE_FOO=$DEFAULT_wxUSE_FOO
+dnl  <not given>        wxUSE_FOO=$DEFAULT_wxUSE_FOO
 dnl
 AC_DEFUN([WX_ARG_ENABLE_PARAM],
         [
 dnl
 AC_DEFUN([WX_ARG_ENABLE_PARAM],
         [
@@ -549,22 +527,12 @@ AC_DEFUN([WX_ARG_ENABLE_PARAM],
           AC_ARG_ENABLE($1, [$2],
                         [
                           wx_cv_use_$1="$3='$enableval'"
           AC_ARG_ENABLE($1, [$2],
                         [
                           wx_cv_use_$1="$3='$enableval'"
-                          cache=yes
                         ],
                         [
                         ],
                         [
-                          cache=no
-                          LINE=`grep "^$3=" ${wx_arg_cache_file}`
-                          if test "x$LINE" != x ; then
-                            eval "DEFAULT_$LINE"
-                          fi
-
                           wx_cv_use_$1='$3='$DEFAULT_$3
                         ])
 
           eval "$wx_cv_use_$1"
                           wx_cv_use_$1='$3='$DEFAULT_$3
                         ])
 
           eval "$wx_cv_use_$1"
-          if test "x$cache" = xyes; then
-            echo "$3=$$3" >> ${wx_arg_cache_file}.tmp
-          fi
 
           AC_MSG_RESULT([$$3])
         ])
 
           AC_MSG_RESULT([$$3])
         ])
@@ -804,79 +772,3 @@ if test "$enable_largefile" != no; then
 fi
 ])
 
 fi
 ])
 
-
-dnl Available from the GNU Autoconf Macro Archive at:
-dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_const_cast.html
-dnl
-AC_DEFUN([AC_CXX_CONST_CAST],
-[AC_CACHE_CHECK(whether the compiler supports const_cast<>,
-ac_cv_cxx_const_cast,
-[AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE(,[int x = 0;const int& y = x;int& z = const_cast<int&>(y);return z;],
- ac_cv_cxx_const_cast=yes, ac_cv_cxx_const_cast=no)
- AC_LANG_RESTORE
-])
-if test "$ac_cv_cxx_const_cast" = yes; then
-  AC_DEFINE(HAVE_CONST_CAST,,[define if the compiler supports const_cast<>])
-fi
-])
-
-dnl http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_reinterpret_cast.html
-AC_DEFUN([AC_CXX_REINTERPRET_CAST],
-[AC_CACHE_CHECK(whether the compiler supports reinterpret_cast<>,
-ac_cv_cxx_reinterpret_cast,
-[AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <typeinfo>
-class Base { public : Base () {} virtual void f () = 0;};
-class Derived : public Base { public : Derived () {} virtual void f () {} };
-class Unrelated { public : Unrelated () {} };
-int g (Unrelated&) { return 0; }],[
-Derived d;Base& b=d;Unrelated& e=reinterpret_cast<Unrelated&>(b);return g(e);],
- ac_cv_cxx_reinterpret_cast=yes, ac_cv_cxx_reinterpret_cast=no)
- AC_LANG_RESTORE
-])
-if test "$ac_cv_cxx_reinterpret_cast" = yes; then
-  AC_DEFINE(HAVE_REINTERPRET_CAST,,
-            [define if the compiler supports reinterpret_cast<>])
-fi
-])
-
-dnl and http://www.gnu.org/software/ac-archive/htmldoc/ac_cxx_static_cast.html
-AC_DEFUN([AC_CXX_STATIC_CAST],
-[AC_CACHE_CHECK(whether the compiler supports static_cast<>,
-ac_cv_cxx_static_cast,
-[AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <typeinfo>
-class Base { public : Base () {} virtual void f () = 0; };
-class Derived : public Base { public : Derived () {} virtual void f () {} };
-int g (Derived&) { return 0; }],[
-Derived d; Base& b = d; Derived& s = static_cast<Derived&> (b); return g (s);],
- ac_cv_cxx_static_cast=yes, ac_cv_cxx_static_cast=no)
- AC_LANG_RESTORE
-])
-if test "$ac_cv_cxx_static_cast" = yes; then
-  AC_DEFINE(HAVE_STATIC_CAST,, [define if the compiler supports static_cast<>])
-fi
-])
-
-dnl http://autoconf-archive.cryp.to/ac_cxx_dynamic_cast.html
-AC_DEFUN([AC_CXX_DYNAMIC_CAST],
-[AC_CACHE_CHECK(whether the compiler supports dynamic_cast<>,
-ac_cv_cxx_dynamic_cast,
-[AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
- AC_TRY_COMPILE([#include <typeinfo>
-class Base { public : Base () {} virtual void f () = 0;};
-class Derived : public Base { public : Derived () {} virtual void f () {} };],[
-Derived d; Base& b=d; return dynamic_cast<Derived*>(&b) ? 0 : 1;],
- ac_cv_cxx_dynamic_cast=yes, ac_cv_cxx_dynamic_cast=no)
- AC_LANG_RESTORE
-])
-if test "$ac_cv_cxx_dynamic_cast" = yes; then
-  AC_DEFINE(HAVE_DYNAMIC_CAST,,[define if the compiler supports dynamic_cast<>])
-fi
-])
-