]> git.saurik.com Git - wxWidgets.git/blobdiff - acinclude.m4
change MSW libs directories so that libraries are shared by builds
[wxWidgets.git] / acinclude.m4
index 4f7ee95a2bc149b859d3f6506e6038fd0c47aee7..df0283d35dfb9735b1e45d3a73eac8c83726d2f3 100644 (file)
@@ -19,7 +19,7 @@ dnl ---------------------------------------------------------------------------
 AC_DEFUN([WX_PATH_FIND_INCLUDES],
 [
 ac_find_includes=
-for ac_dir in $1;
+for ac_dir in $1 /usr/include;
   do
     if test -f "$ac_dir/$2"; then
       ac_find_includes=$ac_dir
@@ -35,7 +35,7 @@ dnl ---------------------------------------------------------------------------
 AC_DEFUN([WX_PATH_FIND_LIBRARIES],
 [
 ac_find_libraries=
-for ac_dir in $1;
+for ac_dir in $1 /usr/lib;
   do
     for ac_extension in a so sl dylib; do
       if test -f "$ac_dir/lib$2.$ac_extension"; then
@@ -51,13 +51,17 @@ dnl Path to include, already defined
 dnl ---------------------------------------------------------------------------
 AC_DEFUN([WX_INCLUDE_PATH_EXIST],
 [
-  ac_path_to_include=$1
-  echo "$2" | grep "\-I$1" > /dev/null
-  result=$?
-  if test $result = 0; then
+  dnl never add -I/usr/include to the CPPFLAGS
+  if test "x$1" = "x/usr/include"; then
     ac_path_to_include=""
   else
-    ac_path_to_include=" -I$1"
+    echo "$2" | grep "\-I$1" > /dev/null
+    result=$?
+    if test $result = 0; then
+      ac_path_to_include=""
+    else
+      ac_path_to_include=" -I$1"
+    fi
   fi
 ])
 
@@ -144,6 +148,53 @@ AC_DEFUN([WX_CPP_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 ---------------------------------------------------------------------------
+
+AC_DEFUN([WX_CPP_EXPLICIT],
+[
+  AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
+                 wx_cv_explicit,
+  [
+    AC_LANG_SAVE
+    AC_LANG_CPLUSPLUS
+
+    dnl do the test in 2 steps: first check that the compiler knows about the
+    dnl explicit keyword at all and then verify that it really honours it
+    AC_TRY_COMPILE(
+      [
+        class Foo { public: explicit Foo(int) {} };
+      ],
+      [
+        return 0;
+      ],
+      [
+        AC_TRY_COMPILE(
+            [
+                class Foo { public: explicit Foo(int) {} };
+                static void TakeFoo(const Foo& foo) { }
+            ],
+            [
+                TakeFoo(17);
+                return 0;
+            ],
+            wx_cv_explicit=no,
+            wx_cv_explicit=yes
+        )
+      ],
+      wx_cv_explicit=no
+    )
+
+    AC_LANG_RESTORE
+  ])
+
+  if test "$wx_cv_explicit" = "yes"; then
+    AC_DEFINE(HAVE_EXPLICIT)
+  fi
+])
+
 dnl ---------------------------------------------------------------------------
 dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
 dnl ---------------------------------------------------------------------------
@@ -289,10 +340,15 @@ AC_DEFUN([WX_ARG_WITH],
         ])
 
 dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
-dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name)
+dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name, enablestring)
+dnl
+dnl enablestring is a hack and allows to show "checking for --disable-foo"
+dnl message when running configure instead of the default "checking for
+dnl --enable-foo" one whih is useful for the options enabled by default
 AC_DEFUN([WX_ARG_ENABLE],
         [
-          AC_MSG_CHECKING([for --enable-$1])
+         enablestring=$4
+          AC_MSG_CHECKING([for --${enablestring:-enable}-$1])
           no_cache=0
           AC_ARG_ENABLE($1, [$2],
                         [
@@ -326,6 +382,59 @@ AC_DEFUN([WX_ARG_ENABLE],
         ])
 
 
+dnl ===========================================================================
+dnl Linker features test
+dnl ===========================================================================
+
+dnl ---------------------------------------------------------------------------
+dnl WX_VERSIONED_SYMBOLS checks whether the linker can create versioned
+dnl symbols. If it can, sets LDFLAGS_VERSIONING to $CXX flags needed to use
+dnl version script file named versionfile
+dnl
+dnl call WX_VERSIONED_SYMBOLS(versionfile)
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_VERSIONED_SYMBOLS],
+[
+  found_versioning=no
+
+  dnl FIXME - doesn't work, Solaris linker doesn't accept wildcards
+  dnl         in the script.
+  dnl dnl Check for known non-gcc cases:
+  dnl case "${host}" in
+  dnl   *-*-solaris2* )
+  dnl     if test "x$GCC" != "xyes" ; then
+  dnl         LDFLAGS_VERSIONING="-M $1"
+  dnl         found_versioning=yes
+  dnl     fi
+  dnl   ;;
+  dnl esac
+  
+  dnl Generic check for GCC or GCC-like behaviour (Intel C++, GCC):
+  if test $found_versioning = no ; then
+      AC_CACHE_CHECK([if the linker accepts --version-script], wx_cv_version_script,
+      [
+        echo "VER_1 { *; };" >conftest.sym
+        echo "int main() { return 0; }" >conftest.cpp
+  
+        if AC_TRY_COMMAND([
+                $CXX -o conftest.output $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.cpp
+                -Wl,--version-script,conftest.sym >/dev/null 2>conftest.stderr]) ; then
+          if test -s conftest.stderr ; then
+              wx_cv_version_script=no
+          else
+              wx_cv_version_script=yes
+          fi
+        else
+          wx_cv_version_script=no
+        fi
+        rm -f conftest.output conftest.stderr conftest.sym conftest.cpp
+      ])
+      if test $wx_cv_version_script = yes ; then
+        LDFLAGS_VERSIONING="-Wl,--version-script,$1"
+      fi
+  fi
+])
+
 
 dnl ===========================================================================
 dnl "3rd party" macros included here because they are not widely available
@@ -409,3 +518,83 @@ size_t iconv();
   AC_SUBST(LIBICONV)
 ])
 
+dnl ---------------------------------------------------------------------------
+dnl AC_SYS_LARGEFILE (partly based on the code from autoconf 2.5x)
+dnl ---------------------------------------------------------------------------
+
+dnl WX_SYS_LARGEFILE_TEST
+dnl
+dnl NB: original autoconf test was checking if compiler supported 6 bit off_t
+dnl     arithmetic properly but this failed miserably with gcc under Linux
+dnl     whereas the system still supports 64 bit files, so now simply check
+dnl     that off_t is big enough
+define(WX_SYS_LARGEFILE_TEST,
+[typedef struct {
+    unsigned int field: sizeof(off_t) == 8;
+} wxlf;
+])
+
+
+dnl WX_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR)
+define(WX_SYS_LARGEFILE_MACRO_VALUE,
+[
+    AC_CACHE_CHECK([for $1 value needed for large files], [$3],
+        [
+          AC_TRY_COMPILE([#define $1 $2
+                          #include <sys/types.h>],
+                         WX_SYS_LARGEFILE_TEST,
+                         [$3=$2],
+                         [$3=no])
+        ]
+    )
+
+    if test "$$3" != no; then
+        wx_largefile=yes
+        AC_DEFINE_UNQUOTED([$1], [$$3])
+    fi
+])
+
+
+dnl AC_SYS_LARGEFILE
+dnl ----------------
+dnl By default, many hosts won't let programs access large files;
+dnl one must use special compiler options to get large-file access to work.
+dnl For more details about this brain damage please see:
+dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
+AC_DEFUN([AC_SYS_LARGEFILE],
+[AC_ARG_ENABLE(largefile,
+               [  --disable-largefile     omit support for large files])
+if test "$enable_largefile" != no; then
+    dnl _FILE_OFFSET_BITS==64 is needed for Linux, Solaris, ...
+    dnl _LARGE_FILES -- for AIX
+    wx_largefile=no
+    WX_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits)
+    if test "x$wx_largefile" != "xyes"; then
+        WX_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files)
+    fi
+
+    AC_MSG_CHECKING(if large file support is available)
+    if test "x$wx_largefile" = "xyes"; then
+        AC_DEFINE(HAVE_LARGEFILE_SUPPORT)
+    fi
+    AC_MSG_RESULT($wx_largefile)
+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
+])