]> git.saurik.com Git - wxWidgets.git/blobdiff - aclocal.m4
reSWIGged
[wxWidgets.git] / aclocal.m4
index 4462db6fc41e2361d9135f830dcb2520205dc0f1..e9f5f1ac59c1655101513821c4e5f738afd46c5c 100644 (file)
-dnl aclocal.m4 generated automatically by aclocal 1.4
+# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*-
 
-dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
-dnl This file is free software; the Free Software Foundation
-dnl gives unlimited permission to copy and/or distribute it,
-dnl with or without modifications, as long as this notice is preserved.
+# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-dnl This program is distributed in the hope that it will be useful,
-dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-dnl PARTICULAR PURPOSE.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
 
-# Configure paths for GTK+
-# Owen Taylor     97-11-3
+dnl ---------------------------------------------------------------------------
+dnl
+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
+dnl Version: $Id$
+dnl ---------------------------------------------------------------------------
 
-dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
-dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS. Uses variables
-dnl gtk_config_prefix and/or gtk_config_exec_prefix if defined.
-AC_DEFUN(AM_PATH_GTK,
+dnl ===========================================================================
+dnl macros to find the a file in the list of include/lib paths
+dnl ===========================================================================
+
+dnl ---------------------------------------------------------------------------
+dnl call WX_PATH_FIND_INCLUDES(search path, header name), sets ac_find_includes
+dnl to the full name of the file that was found or leaves it empty if not found
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_PATH_FIND_INCLUDES],
 [
-  if test x$gtk_config_exec_prefix != x ; then
-     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
-     if test x${GTK_CONFIG+set} != xset ; then
-        GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
-     fi
+ac_find_includes=
+for ac_dir in $1 /usr/include;
+  do
+    if test -f "$ac_dir/$2"; then
+      ac_find_includes=$ac_dir
+      break
+    fi
+  done
+])
+
+dnl ---------------------------------------------------------------------------
+dnl call WX_PATH_FIND_LIBRARIES(search path, header name), sets ac_find_libraries
+dnl to the full name of the file that was found or leaves it empty if not found
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_PATH_FIND_LIBRARIES],
+[
+ac_find_libraries=
+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
+        ac_find_libraries=$ac_dir
+        break 2
+      fi
+    done
+  done
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Path to include, already defined
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_INCLUDE_PATH_EXIST],
+[
+  dnl never add -I/usr/include to the CPPFLAGS
+  if test "x$1" = "x/usr/include"; then
+    ac_path_to_include=""
+  else
+    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
-  if test x$gtk_config_prefix != x ; then
-     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
-     if test x${GTK_CONFIG+set} != xset ; then
-        GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
-     fi
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Path to link, already defined
+dnl ---------------------------------------------------------------------------
+AC_DEFUN([WX_LINK_PATH_EXIST],
+[
+  echo "$2" | grep "\-L$1" > /dev/null
+  result=$?
+  if test $result = 0; then
+    ac_path_to_link=""
+  else
+    ac_path_to_link=" -L$1"
   fi
+])
+
+dnl ===========================================================================
+dnl C++ features test
+dnl ===========================================================================
+
+dnl ---------------------------------------------------------------------------
+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 call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false-or-cross-compiling)
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([WX_CPP_NEW_HEADERS],
+[
+  if test "$cross_compiling" = "yes"; then
+    ifelse([$2], , :, [$2])
+  else
+    AC_LANG_SAVE
+    AC_LANG_CPLUSPLUS
+
+    AC_CHECK_HEADERS(iostream)
+
+    if test "$ac_cv_header_iostream" = "yes" ; then
+      ifelse([$1], , :, [$1])
+    else
+      ifelse([$2], , :, [$2])
+    fi
+
+    AC_LANG_RESTORE
+  fi
+])
+
+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 ---------------------------------------------------------------------------
+
+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 ---------------------------------------------------------------------------
+
+AC_DEFUN([WX_C_BIGENDIAN],
+[AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian,
+[ac_cv_c_bigendian=unknown
+# See if sys/param.h defines the BYTE_ORDER macro.
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/param.h>], [
+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+#endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/param.h>], [
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
+if test $ac_cv_c_bigendian = unknown; then
+AC_TRY_RUN([main () {
+  /* Are we little or big endian?  From Harbison&Steele.  */
+  union
+  {
+    long l;
+    char c[sizeof (long)];
+  } u;
+  u.l = 1;
+  exit (u.c[sizeof (long) - 1] == 1);
+}], [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])
+fi
+if test $ac_cv_c_bigendian = yes; then
+  AC_DEFINE(WORDS_BIGENDIAN)
+fi
+])
+
+dnl ---------------------------------------------------------------------------
+dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file
+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 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)
+AC_DEFUN([WX_ARG_SYS_WITH],
+        [
+          AC_MSG_CHECKING([for --with-$1])
+          no_cache=0
+          AC_ARG_WITH($1, [$2],
+                      [
+                        if test "$withval" = yes; then
+                          ac_cv_use_$1='$3=yes'
+                        elif test "$withval" = no; then
+                          ac_cv_use_$1='$3=no'
+                        elif test "$withval" = sys; then
+                          ac_cv_use_$1='$3=sys'
+                        elif test "$withval" = builtin; then
+                          ac_cv_use_$1='$3=builtin'
+                        else
+                          AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
+                        fi
+                      ],
+                      [
+                        LINE=`grep "$3" ${wx_arg_cache_file}`
+                        if test "x$LINE" != x ; then
+                          eval "DEFAULT_$LINE"
+                        else
+                          no_cache=1
+                        fi
+
+                        ac_cv_use_$1='$3='$DEFAULT_$3
+                      ])
+
+          eval "$ac_cv_use_$1"
+          if test "$no_cache" != 1; then
+            echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
+          fi
+
+          if test "$$3" = yes; then
+            AC_MSG_RESULT(yes)
+          elif test "$$3" = no; then
+            AC_MSG_RESULT(no)
+          elif test "$$3" = sys; then
+            AC_MSG_RESULT([system version])
+          elif test "$$3" = builtin; then
+            AC_MSG_RESULT([builtin version])
+          else
+            AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
+          fi
+        ])
+
+dnl this macro checks for a command line argument and caches the result
+dnl usage: WX_ARG_WITH(option, helpmessage, variable-name)
+AC_DEFUN([WX_ARG_WITH],
+        [
+          AC_MSG_CHECKING([for --with-$1])
+          no_cache=0
+          AC_ARG_WITH($1, [$2],
+                      [
+                        if test "$withval" = yes; then
+                          ac_cv_use_$1='$3=yes'
+                        else
+                          ac_cv_use_$1='$3=no'
+                        fi
+                      ],
+                      [
+                        LINE=`grep "$3" ${wx_arg_cache_file}`
+                        if test "x$LINE" != x ; then
+                          eval "DEFAULT_$LINE"
+                        else
+                          no_cache=1
+                        fi
+
+                        ac_cv_use_$1='$3='$DEFAULT_$3
+                      ])
+
+          eval "$ac_cv_use_$1"
+          if test "$no_cache" != 1; then
+            echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
+          fi
+
+          if test "$$3" = yes; then
+            AC_MSG_RESULT(yes)
+          else
+            AC_MSG_RESULT(no)
+          fi
+        ])
+
+dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
+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],
+        [
+         enablestring=$4
+          AC_MSG_CHECKING([for --${enablestring:-enable}-$1])
+          no_cache=0
+          AC_ARG_ENABLE($1, [$2],
+                        [
+                          if test "$enableval" = yes; then
+                            ac_cv_use_$1='$3=yes'
+                          else
+                            ac_cv_use_$1='$3=no'
+                          fi
+                        ],
+                        [
+                          LINE=`grep "$3" ${wx_arg_cache_file}`
+                          if test "x$LINE" != x ; then
+                            eval "DEFAULT_$LINE"
+                          else
+                            no_cache=1
+                          fi
+
+                          ac_cv_use_$1='$3='$DEFAULT_$3
+                        ])
+
+          eval "$ac_cv_use_$1"
+          if test "$no_cache" != 1; then
+            echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
+          fi
+
+          if test "$$3" = yes; then
+            AC_MSG_RESULT(yes)
+          else
+            AC_MSG_RESULT(no)
+          fi
+        ])
+
+
+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
+dnl ===========================================================================
+
+dnl ---------------------------------------------------------------------------
+dnl test for availability of iconv()
+dnl ---------------------------------------------------------------------------
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV],
+[
+  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+  dnl those with the standalone portable GNU libiconv installed).
+
+  AC_ARG_WITH([libiconv-prefix],
+[  --with-libiconv-prefix=DIR  search for libiconv in DIR/include and DIR/lib], [
+    for dir in `echo "$withval" | tr : ' '`; do
+      if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
+      if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
+    done
+   ])
+
+  AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+      [iconv_t cd = iconv_open("","");
+       iconv(cd,NULL,NULL,NULL,NULL);
+       iconv_close(cd);],
+      am_cv_func_iconv=yes)
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS -liconv"
+      AC_TRY_LINK([#include <stdlib.h>
+#include <iconv.h>],
+        [iconv_t cd = iconv_open("","");
+         iconv(cd,NULL,NULL,NULL,NULL);
+         iconv_close(cd);],
+        am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes)
+      LIBS="$am_save_LIBS"
+    fi
+  ])
+  if test "$am_cv_func_iconv" = yes; then
+    AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+    AC_CACHE_CHECK([if iconv needs const], wx_cv_func_iconv_const,
+      AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+        ],
+        [],
+        wx_cv_func_iconv_const="no",
+        wx_cv_func_iconv_const="yes"
+      )
+    )
+
+    iconv_const=
+    if test "x$wx_cv_func_iconv_const" = "xyes"; then
+        iconv_const="const"
+    fi
+
+    AC_DEFINE_UNQUOTED(ICONV_CONST, $iconv_const,
+      [Define as const if the declaration of iconv() needs const.])
+  fi
+  LIBICONV=
+  if test "$am_cv_lib_iconv" = yes; then
+    LIBICONV="-liconv"
+  fi
+  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
+])
+
+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
+])
+
+# Configure paths for GTK+
+# Owen Taylor     1997-2001
+
+dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, 
+dnl pass to pkg-config
+dnl
+AC_DEFUN(AM_PATH_GTK_2_0,
+[dnl 
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(gtktest, [  --disable-gtktest       do not try to compile and run a test GTK+ program],
+                   , enable_gtktest=yes)
+
+  pkg_config_args=gtk+-2.0
+  for module in . $4
+  do
+      case "$module" in
+         gthread) 
+             pkg_config_args="$pkg_config_args gthread-2.0"
+         ;;
+      esac
+  done
 
-  AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
-  min_gtk_version=ifelse([$1], ,0.99.7,$1)
-  AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
   no_gtk=""
-  if test "$GTK_CONFIG" != "no" ; then
-    GTK_CFLAGS=`$GTK_CONFIG --cflags`
-    GTK_LIBS=`$GTK_CONFIG --libs gthread`
-    ac_save_CFLAGS="$CFLAGS"
-    ac_save_LIBS="$LIBS"
-    CFLAGS="$CFLAGS $GTK_CFLAGS"
-    LIBS="$LIBS $GTK_LIBS"
+
+  AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+  if test x$PKG_CONFIG != xno ; then
+    if pkg-config --atleast-pkgconfig-version 0.7 ; then
+      :
+    else
+      echo *** pkg-config too old; version 0.7 or better required.
+      no_gtk=yes
+      PKG_CONFIG=no
+    fi
+  else
+    no_gtk=yes
+  fi
+
+  min_gtk_version=ifelse([$1], ,2.0.0,$1)
+  AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
+
+  if test x$PKG_CONFIG != xno ; then
+    ## don't try to run the test against uninstalled libtool libs
+    if $PKG_CONFIG --uninstalled $pkg_config_args; then
+         echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
+         enable_gtktest=no
+    fi
+
+    if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
+         :
+    else
+         no_gtk=yes
+    fi
+  fi
+
+  if test x"$no_gtk" = x ; then
+    GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
+    GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
+    gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_gtktest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $GTK_CFLAGS"
+      LIBS="$GTK_LIBS $LIBS"
 dnl
-dnl Now check if the installed GTK is sufficiently new. (Also sanity
-dnl checks the results of gtk-config to some extent)
+dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
 dnl
-    AC_TRY_RUN([
+      rm -f conf.gtktest
+      AC_TRY_RUN([
 #include <gtk/gtk.h>
-#include <gtk/gtkfeatures.h>
 #include <stdio.h>
 #include <stdlib.h>
 
-int
+int 
 main ()
 {
   int major, minor, micro;
+  char *tmp_version;
 
-  if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_gtk_version");
-     exit(1);
-   }
+  system ("touch conf.gtktest");
 
-   if ((GTK_MAJOR_VERSION != gtk_major_version) ||
-       (GTK_MINOR_VERSION != gtk_minor_version) ||
-       (GTK_MICRO_VERSION != gtk_micro_version)) {
-     printf("Headers vs. library version mismatch!\n");
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = g_strdup("$min_gtk_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_gtk_version");
      exit(1);
    }
 
-   if (gtk_minor_version == 1) return FALSE;
-
-   return !((gtk_major_version > major) ||
-    ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
-    ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)));
+  if ((gtk_major_version != $gtk_config_major_version) ||
+      (gtk_minor_version != $gtk_config_minor_version) ||
+      (gtk_micro_version != $gtk_config_micro_version))
+    {
+      printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
+             $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+             gtk_major_version, gtk_minor_version, gtk_micro_version);
+      printf ("*** was found! If pkg-config was correct, then it is best\n");
+      printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+      printf("*** required on your system.\n");
+      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+      printf("*** to point to the correct configuration files\n");
+    } 
+  else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+          (gtk_minor_version != GTK_MINOR_VERSION) ||
+           (gtk_micro_version != GTK_MICRO_VERSION))
+    {
+      printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+            GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+      printf("*** library (version %d.%d.%d)\n",
+            gtk_major_version, gtk_minor_version, gtk_micro_version);
+    }
+  else
+    {
+      if ((gtk_major_version > major) ||
+        ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+        ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+      {
+        return 0;
+       }
+     else
+      {
+        printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+               gtk_major_version, gtk_minor_version, gtk_micro_version);
+        printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+              major, minor, micro);
+        printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+        printf("***\n");
+        printf("*** If you have already installed a sufficiently new version, this error\n");
+        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+        printf("*** being found. The easiest way to fix this is to remove the old version\n");
+        printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
+        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+        printf("*** so that the correct libraries are found at run-time))\n");
+      }
+    }
+  return 1;
 }
 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-     CFLAGS="$ac_save_CFLAGS"
-     LIBS="$ac_save_LIBS"
-  else
-     no_gtk=yes
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
   fi
   if test "x$no_gtk" = x ; then
-     AC_MSG_RESULT(yes)
-     ifelse([$2], , :, [$2])
+     AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
+     ifelse([$2], , :, [$2])     
   else
      AC_MSG_RESULT(no)
+     if test "$PKG_CONFIG" = "no" ; then
+       echo "*** A new enough version of pkg-config was not found."
+       echo "*** See http://pkgconfig.sourceforge.net"
+     else
+       if test -f conf.gtktest ; then
+        :
+       else
+          echo "*** Could not run GTK+ test program, checking why..."
+         ac_save_CFLAGS="$CFLAGS"
+         ac_save_LIBS="$LIBS"
+          CFLAGS="$CFLAGS $GTK_CFLAGS"
+          LIBS="$LIBS $GTK_LIBS"
+          AC_TRY_LINK([
+#include <gtk/gtk.h>
+#include <stdio.h>
+],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
+          echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
      GTK_CFLAGS=""
      GTK_LIBS=""
      ifelse([$3], , :, [$3])
   fi
   AC_SUBST(GTK_CFLAGS)
   AC_SUBST(GTK_LIBS)
+  rm -f conf.gtktest
 ])
 
-dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+# Configure paths for GTK+
+# Owen Taylor     97-11-3
+
+dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
 dnl
-AC_DEFUN(AM_PATH_GTK_2_0,
-[dnl
-dnl Get the cflags and libraries from the gtk-config-2.0 script
+AC_DEFUN(AM_PATH_GTK,
+[dnl 
+dnl Get the cflags and libraries from the gtk-config script
 dnl
 AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
             gtk_config_prefix="$withval", gtk_config_prefix="")
 AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
             gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
 AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
-                    , enable_gtktest=yes)
+                   , enable_gtktest=yes)
 
   for module in . $4
   do
       case "$module" in
-         gthread)
+         gthread) 
              gtk_config_args="$gtk_config_args gthread"
          ;;
       esac
@@ -119,31 +856,31 @@ AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run
 
   if test x$gtk_config_exec_prefix != x ; then
      gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
-     if test x${GTK_CONFIG_2_0+set} != xset ; then
-        GTK_CONFIG_2_0=$gtk_config_exec_prefix/bin/gtk-config-2.0
+     if test x${GTK_CONFIG+set} != xset ; then
+        GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
      fi
   fi
   if test x$gtk_config_prefix != x ; then
      gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
-     if test x${GTK_CONFIG_2_0+set} != xset ; then
-        GTK_CONFIG_2_0=$gtk_config_prefix/bin/gtk-config-2.0
+     if test x${GTK_CONFIG+set} != xset ; then
+        GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
      fi
   fi
 
-  AC_PATH_PROG(GTK_CONFIG_2_0, gtk-config-2.0, no)
-  min_gtk_version=ifelse([$1], ,1.3.1,$1)
+  AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
+  min_gtk_version=ifelse([$1], ,0.99.7,$1)
   AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
   no_gtk=""
-  if test "$GTK_CONFIG_2_0" = "no" ; then
+  if test "$GTK_CONFIG" = "no" ; then
     no_gtk=yes
   else
-    GTK_CFLAGS=`$GTK_CONFIG_2_0 $gtk_config_args --cflags`
-    GTK_LIBS=`$GTK_CONFIG_2_0 $gtk_config_args --libs`
-    gtk_config_major_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
+    GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
+    GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
+    gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    gtk_config_minor_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
+    gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    gtk_config_micro_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
+    gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
     if test "x$enable_gtktest" = "xyes" ; then
       ac_save_CFLAGS="$CFLAGS"
@@ -152,7 +889,7 @@ AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run
       LIBS="$GTK_LIBS $LIBS"
 dnl
 dnl Now check if the installed GTK is sufficiently new. (Also sanity
-dnl checks the results of gtk-config-2.0 to some extent
+dnl checks the results of gtk-config to some extent
 dnl
       rm -f conf.gtktest
       AC_TRY_RUN([
@@ -160,7 +897,7 @@ dnl
 #include <stdio.h>
 #include <stdlib.h>
 
-int
+int 
 main ()
 {
   int major, minor, micro;
@@ -179,27 +916,27 @@ main ()
       (gtk_minor_version != $gtk_config_minor_version) ||
       (gtk_micro_version != $gtk_config_micro_version))
     {
-      printf("\n*** 'gtk-config-2.0 --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
+      printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
              $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
              gtk_major_version, gtk_minor_version, gtk_micro_version);
-      printf ("*** was found! If gtk-config-2.0 was correct, then it is best\n");
+      printf ("*** was found! If gtk-config was correct, then it is best\n");
       printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
       printf("*** required on your system.\n");
-      printf("*** If gtk-config-2.0 was wrong, set the environment variable GTK_CONFIG_2_0\n");
-      printf("*** to point to the correct copy of gtk-config-2.0, and remove the file config.cache\n");
+      printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
+      printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
       printf("*** before re-running configure\n");
-    }
+    } 
 #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
   else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
-           (gtk_minor_version != GTK_MINOR_VERSION) ||
+          (gtk_minor_version != GTK_MINOR_VERSION) ||
            (gtk_micro_version != GTK_MICRO_VERSION))
     {
       printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
-             GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+            GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
       printf("*** library (version %d.%d.%d)\n",
-             gtk_major_version, gtk_minor_version, gtk_micro_version);
+            gtk_major_version, gtk_minor_version, gtk_micro_version);
     }
 #endif /* defined (GTK_MAJOR_VERSION) ... */
   else
@@ -215,14 +952,14 @@ main ()
         printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
                gtk_major_version, gtk_minor_version, gtk_micro_version);
         printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
-               major, minor, micro);
+              major, minor, micro);
         printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
         printf("***\n");
         printf("*** If you have already installed a sufficiently new version, this error\n");
-        printf("*** probably means that the wrong copy of the gtk-config-2.0 shell script is\n");
+        printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
         printf("*** being found. The easiest way to fix this is to remove the old version\n");
-        printf("*** of GTK+, but you can also set the GTK_CONFIG_2_0 environment to point to the\n");
-        printf("*** correct copy of gtk-config-2.0. (In this case, you will have to\n");
+        printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
+        printf("*** correct copy of gtk-config. (In this case, you will have to\n");
         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
         printf("*** so that the correct libraries are found at run-time))\n");
       }
@@ -235,15 +972,15 @@ main ()
      fi
   fi
   if test "x$no_gtk" = x ; then
-     AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
-     ifelse([$2], , :, [$2])
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
   else
      AC_MSG_RESULT(no)
-     if test "$GTK_CONFIG_2_0" = "no" ; then
-       echo "*** The gtk-config-2.0 script installed by GTK could not be found"
+     if test "$GTK_CONFIG" = "no" ; then
+       echo "*** The gtk-config script installed by GTK could not be found"
        echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
-       echo "*** your path, or set the GTK_CONFIG_2_0 environment variable to the"
-       echo "*** full path to gtk-config-2.0."
+       echo "*** your path, or set the GTK_CONFIG environment variable to the"
+       echo "*** full path to gtk-config."
      else
        if test -f conf.gtktest ; then
         :
@@ -261,7 +998,7 @@ main ()
           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
           echo "*** is required on your system"
-          echo "***"
+         echo "***"
           echo "*** If you have an old version installed, it is best to remove it, although"
           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
           echo "***"
@@ -272,7 +1009,7 @@ main ()
         [ echo "*** The test program failed to compile or link. See the file config.log for the"
           echo "*** exact error that occured. This usually means GTK was incorrectly installed"
           echo "*** or that you have moved GTK since it was installed. In the latter case, you"
-          echo "*** may want to edit the gtk-config-2.0 script: $GTK_CONFIG_2_0" ])
+          echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
           CFLAGS="$ac_save_CFLAGS"
           LIBS="$ac_save_LIBS"
        fi
@@ -287,3 +1024,994 @@ main ()
 ])
 
 
+dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
+dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
+dnl also defines GSTUFF_PKG_ERRORS on error
+AC_DEFUN(PKG_CHECK_MODULES, [
+  succeeded=no
+
+  if test -z "$PKG_CONFIG"; then
+    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+  fi
+
+  if test "$PKG_CONFIG" = "no" ; then
+     echo "*** The pkg-config script could not be found. Make sure it is"
+     echo "*** in your path, or set the PKG_CONFIG environment variable"
+     echo "*** to the full path to pkg-config."
+     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        AC_MSG_CHECKING(for $2)
+
+        if $PKG_CONFIG --exists "$2" ; then
+            AC_MSG_RESULT(yes)
+            succeeded=yes
+
+            AC_MSG_CHECKING($1_CFLAGS)
+            $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
+            AC_MSG_RESULT($$1_CFLAGS)
+
+            AC_MSG_CHECKING($1_LIBS)
+            $1_LIBS=`$PKG_CONFIG --libs "$2"`
+            AC_MSG_RESULT($$1_LIBS)
+        else
+            $1_CFLAGS=""
+            $1_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but 
+            ## do set a variable so people can do so.
+            $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+            ifelse([$4], ,echo $$1_PKG_ERRORS,)
+        fi
+
+        AC_SUBST($1_CFLAGS)
+        AC_SUBST($1_LIBS)
+     else
+        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+        echo "*** See http://www.freedesktop.org/software/pkgconfig"
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     ifelse([$3], , :, [$3])
+  else
+     ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
+  fi
+])
+
+
+
+# Configure paths for SDL
+# Sam Lantinga 9/21/99
+# stolen from Manish Singh
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS
+dnl
+AC_DEFUN(AM_PATH_SDL,
+[dnl 
+dnl Get the cflags and libraries from the sdl-config script
+dnl
+AC_ARG_WITH(sdl-prefix,[  --with-sdl-prefix=PFX   Prefix where SDL is installed (optional)],
+            sdl_prefix="$withval", sdl_prefix="")
+AC_ARG_WITH(sdl-exec-prefix,[  --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)],
+            sdl_exec_prefix="$withval", sdl_exec_prefix="")
+AC_ARG_ENABLE(sdltest, [  --disable-sdltest       Do not try to compile and run a test SDL program],
+                   , enable_sdltest=yes)
+
+  if test x$sdl_exec_prefix != x ; then
+     sdl_args="$sdl_args --exec-prefix=$sdl_exec_prefix"
+     if test x${SDL_CONFIG+set} != xset ; then
+        SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config
+     fi
+  fi
+  if test x$sdl_prefix != x ; then
+     sdl_args="$sdl_args --prefix=$sdl_prefix"
+     if test x${SDL_CONFIG+set} != xset ; then
+        SDL_CONFIG=$sdl_prefix/bin/sdl-config
+     fi
+  fi
+
+  AC_REQUIRE([AC_CANONICAL_TARGET])
+  PATH="$prefix/bin:$prefix/usr/bin:$PATH"
+  AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH])
+  min_sdl_version=ifelse([$1], ,0.11.0,$1)
+  AC_MSG_CHECKING(for SDL - version >= $min_sdl_version)
+  no_sdl=""
+  if test "$SDL_CONFIG" = "no" ; then
+    no_sdl=yes
+  else
+    SDL_CFLAGS=`$SDL_CONFIG $sdlconf_args --cflags`
+    SDL_LIBS=`$SDL_CONFIG $sdlconf_args --libs`
+
+    sdl_major_version=`$SDL_CONFIG $sdl_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    sdl_minor_version=`$SDL_CONFIG $sdl_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+    if test "x$enable_sdltest" = "xyes" ; then
+      ac_save_CFLAGS="$CFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $SDL_CFLAGS"
+      LIBS="$LIBS $SDL_LIBS"
+dnl
+dnl Now check if the installed SDL is sufficiently new. (Also sanity
+dnl checks the results of sdl-config to some extent
+dnl
+      rm -f conf.sdltest
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "SDL.h"
+
+char*
+my_strdup (char *str)
+{
+  char *new_str;
+  
+  if (str)
+    {
+      new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char));
+      strcpy (new_str, str);
+    }
+  else
+    new_str = NULL;
+  
+  return new_str;
+}
+
+int main (int argc, char *argv[])
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  /* This hangs on some systems (?)
+  system ("touch conf.sdltest");
+  */
+  { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); }
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = my_strdup("$min_sdl_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_sdl_version");
+     exit(1);
+   }
+
+   if (($sdl_major_version > major) ||
+      (($sdl_major_version == major) && ($sdl_minor_version > minor)) ||
+      (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro)))
+    {
+      return 0;
+    }
+  else
+    {
+      printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version);
+      printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro);
+      printf("*** best to upgrade to the required version.\n");
+      printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n");
+      printf("*** to point to the correct copy of sdl-config, and remove the file\n");
+      printf("*** config.cache before re-running configure\n");
+      return 1;
+    }
+}
+
+],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+  fi
+  if test "x$no_sdl" = x ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$2], , :, [$2])     
+  else
+     AC_MSG_RESULT(no)
+     if test "$SDL_CONFIG" = "no" ; then
+       echo "*** The sdl-config script installed by SDL could not be found"
+       echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in"
+       echo "*** your path, or set the SDL_CONFIG environment variable to the"
+       echo "*** full path to sdl-config."
+     else
+       if test -f conf.sdltest ; then
+        :
+       else
+          echo "*** Could not run SDL test program, checking why..."
+          CFLAGS="$CFLAGS $SDL_CFLAGS"
+          LIBS="$LIBS $SDL_LIBS"
+          AC_TRY_LINK([
+#include <stdio.h>
+#include "SDL.h"
+
+int main(int argc, char *argv[])
+{ return 0; }
+#undef  main
+#define main K_and_R_C_main
+],      [ return 0; ],
+        [ echo "*** The test program compiled, but did not run. This usually means"
+          echo "*** that the run-time linker is not finding SDL or finding the wrong"
+          echo "*** version of SDL. If it is not finding SDL, you'll need to set your"
+          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+          echo "*** is required on your system"
+         echo "***"
+          echo "*** If you have an old version installed, it is best to remove it, although"
+          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+        [ echo "*** The test program failed to compile or link. See the file config.log for the"
+          echo "*** exact error that occured. This usually means SDL was incorrectly installed"
+          echo "*** or that you have moved SDL since it was installed. In the latter case, you"
+          echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ])
+          CFLAGS="$ac_save_CFLAGS"
+          LIBS="$ac_save_LIBS"
+       fi
+     fi
+     SDL_CFLAGS=""
+     SDL_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(SDL_CFLAGS)
+  AC_SUBST(SDL_LIBS)
+  rm -f conf.sdltest
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Support macros for makefiles generated by BAKEFILE.
+dnl ---------------------------------------------------------------------------
+
+dnl Lots of compiler & linker detection code contained here was taken from
+dnl wxWindows configure.in script (see http://www.wxwindows.org)
+
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_GNUMAKE
+dnl
+dnl Detects GNU make
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_GNUMAKE,
+[
+    dnl does make support "-include" (only GNU make does AFAIK)?
+    AC_CACHE_CHECK([if make is GNU make], bakefile_cv_prog_makeisgnu,
+    [
+        if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null |
+                egrep -s GNU > /dev/null); then
+            bakefile_cv_prog_makeisgnu="yes"
+        else
+            bakefile_cv_prog_makeisgnu="no"
+        fi
+    ])
+
+    if test "x$bakefile_cv_prog_makeisgnu" = "xyes"; then
+        IF_GNU_MAKE=""
+    else
+        IF_GNU_MAKE="#"
+    fi
+    AC_SUBST(IF_GNU_MAKE)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_PLATFORM
+dnl
+dnl Detects platform and sets PLATFORM_XXX variables accordingly
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_PLATFORM,
+[
+    PLATFORM_UNIX=0
+    PLATFORM_WIN32=0
+    PLATFORM_MSDOS=0
+    PLATFORM_MAC=0
+    PLATFORM_MACOSX=0
+    PLATFORM_OS2=0
+
+    if test "x$BAKEFILE_FORCE_PLATFORM" = "x"; then 
+        case "${BAKEFILE_HOST}" in
+            *-*-cygwin* | *-*-mingw32* )
+                PLATFORM_WIN32=1
+            ;;
+            *-pc-msdosdjgpp )
+                PLATFORM_MSDOS=1
+            ;;
+            *-pc-os2_emx | *-pc-os2-emx )
+                PLATFORM_OS2=1
+            ;;
+            powerpc-*-darwin* )
+                PLATFORM_MAC=1
+                PLATFORM_MACOSX=1
+            ;;
+            * )
+                PLATFORM_UNIX=1
+            ;;
+        esac
+    else
+        case "$BAKEFILE_FORCE_PLATFORM" in
+            win32 )
+                PLATFORM_WIN32=1
+            ;;
+            msdos )
+                PLATFORM_MSDOS=1
+            ;;
+            os2 )
+                PLATFORM_OS2=1
+            ;;
+            darwin )
+                PLATFORM_MAC=1
+                PLATFORM_MACOSX=1
+            ;;
+            unix )
+                PLATFORM_UNIX=1
+            ;;
+            * )
+                AC_MSG_ERROR([Unknown platform: $BAKEFILE_FORCE_PLATFORM])
+            ;;
+        esac
+    fi
+
+    AC_SUBST(PLATFORM_UNIX)
+    AC_SUBST(PLATFORM_WIN32)
+    AC_SUBST(PLATFORM_MSDOS)
+    AC_SUBST(PLATFORM_MAC)
+    AC_SUBST(PLATFORM_MACOSX)
+    AC_SUBST(PLATFORM_OS2)
+])
+
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_SUFFIXES
+dnl
+dnl Detects shared various suffixes for shared libraries, libraries, programs,
+dnl plugins etc.
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_SUFFIXES,
+[
+    SO_SUFFIX="so"
+    SO_SUFFIX_MODULE="so"
+    EXEEXT=""
+    LIBPREFIX=lib
+    DLLPREFIX=lib
+    DLLPREFIX_MODULE=
+    
+    case "${BAKEFILE_HOST}" in
+        *-hp-hpux* )
+            SO_SUFFIX="sl"
+            SO_SUFFIX_MODULE="sl"
+        ;;
+        *-*-aix* )
+            dnl quoting from
+            dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html:
+            dnl     Both archive libraries and shared libraries on AIX have an
+            dnl     .a extension. This will explain why you can't link with an
+            dnl     .so and why it works with the name changed to .a.
+            SO_SUFFIX="a"
+            SO_SUFFIX_MODULE="a"
+        ;;
+        *-*-cygwin* | *-*-mingw32* )
+            SO_SUFFIX="dll"
+            SO_SUFFIX_MODULE="dll"
+            EXEEXT=".exe"
+            DLLPREFIX=""
+        ;;
+        *-pc-msdosdjgpp )
+            EXEEXT=".exe"
+            DLLPREFIX=""
+        ;;
+        *-pc-os2_emx | *-pc-os2-emx )
+            EXEEXT=".exe"
+            DLLPREFIX=""
+            LIBPREFIX=""
+        ;;
+        powerpc-*-darwin* )
+            SO_SUFFIX="dylib"
+            SO_SUFFIX_MODULE="bundle"
+        ;;
+    esac
+
+    AC_SUBST(SO_SUFFIX)
+    AC_SUBST(SO_SUFFIX_MODULE)
+    AC_SUBST(EXEEXT)
+    AC_SUBST(LIBPREFIX)
+    AC_SUBST(DLLPREFIX)
+    AC_SUBST(DLLPREFIX_MODULE)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_SHARED_LD
+dnl
+dnl Detects command for making shared libraries, substitutes SHARED_LD_CC
+dnl and SHARED_LD_CXX.
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_SHARED_LD,
+[
+    dnl Defaults for GCC and ELF .so shared libs:
+    SHARED_LD_CC="\$(CC) -shared -o"
+    SHARED_LD_CXX="\$(CXX) -shared -o"
+
+    dnl the extra compiler flags needed for compilation of shared library
+    if test "x$GCC" = "xyes"; then
+        dnl the switch for gcc is the same under all platforms
+        PIC_FLAG="-fPIC"
+    fi
+
+    case "${BAKEFILE_HOST}" in
+      *-hp-hpux* )
+        dnl default settings are good for gcc but not for the native HP-UX
+        if test "x$GCC" = "xyes"; then
+            dnl -o flag must be after PIC flag
+            SHARED_LD_CC="${CC} -shared ${PIC_FLAG} -o"
+            SHARED_LD_CXX="${CXX} -shared ${PIC_FLAG} -o"
+        else
+            dnl no idea why it wants it, but it does
+            LDFLAGS="$LDFLAGS -L/usr/lib"
+
+            SHARED_LD_CC="${CC} -b -o"
+            SHARED_LD_CXX="${CXX} -b -o"
+            PIC_FLAG="+Z"
+        fi
+      ;;
+
+      *-*-linux* )
+        if test "x$GCC" != "xyes"; then
+            AC_CACHE_CHECK([for Intel compiler], bakefile_cv_prog_icc,
+            [
+                AC_TRY_COMPILE([],
+                    [
+                        #ifndef __INTEL_COMPILER
+                        #error Not icc
+                        #endif
+                    ],
+                    bakefile_cv_prog_icc=yes,
+                    bakefile_cv_prog_icc=no
+                )
+            ])
+            if test "$bakefile_cv_prog_icc" = "yes"; then
+                PIC_FLAG="-KPIC"
+            fi
+        fi
+      ;;
+
+      *-*-solaris2* )
+        if test "x$GCC" != xyes ; then
+            SHARED_LD_CC="${CC} -G -o"
+            SHARED_LD_CXX="${CXX} -G -o"
+            PIC_FLAG="-KPIC"
+        fi
+      ;;
+
+      *-*-darwin* )
+        dnl For Unix to MacOS X porting instructions, see:
+        dnl http://fink.sourceforge.net/doc/porting/porting.html
+        CFLAGS="$CFLAGS -fno-common"
+        CXXFLAGS="$CXXFLAGS -fno-common"
+        
+        dnl Most apps benefit from being fully binded (its faster and static
+        dnl variables initialized at startup work).
+        dnl This can be done either with the exe linker flag -Wl,-bind_at_load
+        dnl or with a double stage link in order to create a single module
+        dnl "-init _wxWindowsDylibInit" not useful with lazy linking solved
+
+        dnl If using newer dev tools then there is a -single_module flag that
+        dnl we can use to do this, otherwise we'll need to use a helper
+        dnl script.  Check the version of gcc to see which way we can go:
+        AC_CACHE_CHECK([for gcc 3.1 or later], wx_cv_gcc31, [
+           AC_TRY_COMPILE([],
+               [
+                   #if (__GNUC__ < 3) || \
+                       ((__GNUC__ == 3) && (__GNUC_MINOR__ < 1))
+                       #error old gcc
+                   #endif
+               ],
+               [
+                   wx_cv_gcc31=yes
+               ],
+               [
+                   wx_cv_gcc31=no
+               ]
+           )
+        ])
+        if test "$wx_cv_gcc31" = "no"; then
+            cat <<EOF >shared-ld-sh
+#!/bin/sh
+#-----------------------------------------------------------------------------
+#-- Name:        distrib/mac/shared-ld-sh
+#-- Purpose:     Link a mach-o dynamic shared library for Darwin / Mac OS X
+#-- Author:      Gilles Depeyrot
+#-- Copyright:   (c) 2002 Gilles Depeyrot
+#-- Licence:     any use permitted
+#-----------------------------------------------------------------------------
+
+verbose=0
+args=""
+objects=""
+linking_flag="-dynamiclib"
+
+while test \${#} -gt 0; do
+    case \${1} in
+
+       -v)
+        verbose=1
+        ;;
+
+       -o|-compatibility_version|-current_version|-framework|-undefined|-install_name)
+        # collect these options and values
+        args="\${args} \${1} \${2}"
+        shift
+        ;;
+
+       -l*|-L*|-flat_namespace|-headerpad_max_install_names)
+        # collect these options
+        args="\${args} \${1}"
+        ;;
+
+       -dynamiclib|-bundle)
+        linking_flag="\${1}"
+        ;;
+
+       -*)
+        echo "shared-ld: unhandled option '\${1}'"
+        exit 1
+        ;;
+
+        *.o | *.a | *.dylib)
+        # collect object files
+        objects="\${objects} \${1}"
+        ;;
+
+        *)
+        echo "shared-ld: unhandled argument '\${1}'"
+        exit 1
+        ;;
+
+    esac
+    shift
+done
+
+#
+# Link one module containing all the others
+#
+if test \${verbose} = 1; then
+    echo "c++ -r -keep_private_externs -nostdlib \${objects} -o master.\$\$.o"
+fi
+c++ -r -keep_private_externs -nostdlib \${objects} -o master.\$\$.o
+status=\$?
+if test \${status} != 0; then
+    exit \${status}
+fi
+
+#
+# Link the shared library from the single module created
+#
+if test \${verbose} = 1; then
+    echo "cc \${linking_flag} master.\$\$.o \${args}"
+fi
+c++ \${linking_flag} master.\$\$.o \${args}
+status=\$?
+if test \${status} != 0; then
+    exit \${status}
+fi
+
+#
+# Remove intermediate module
+#
+rm -f master.\$\$.o
+
+exit 0
+EOF
+            chmod +x shared-ld-sh
+
+            dnl Use the shared-ld-sh helper script
+            SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -headerpad_max_install_names -o"
+            SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -headerpad_max_install_names -o"
+            SHARED_LD_CXX="$SHARED_LD_CC"
+            SHARED_LD_MODULE_CXX="$SHARED_LD_MODULE_CC"
+        else
+            dnl Use the -single_module flag and let the linker do it for us
+            SHARED_LD_CC="\${CC} -dynamiclib -single_module -headerpad_max_install_names -o"
+            SHARED_LD_MODULE_CC="\${CC} -bundle -single_module -headerpad_max_install_names -o"
+            SHARED_LD_CXX="\${CXX} -dynamiclib -single_module -headerpad_max_install_names -o"
+            SHARED_LD_MODULE_CXX="\${CXX} -bundle -single_module -headerpad_max_install_names -o"
+        fi
+
+        PIC_FLAG="-dynamic -fPIC"
+      ;;
+
+      *-*-aix* )
+        dnl default settings are ok for gcc
+        if test "x$GCC" != "xyes"; then
+            dnl the abs path below used to be hardcoded here so I guess it must
+            dnl be some sort of standard location under AIX?
+            AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib,
+                          makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib)
+            dnl FIXME - what about makeCSharedLib?            
+            SHARED_LD_CC="$AIX_CC_LD -p 0 -o"
+            SHARED_LD_CXX="$AIX_CXX_LD -p 0 -o"
+        fi
+      ;;
+
+      *-*-beos* )
+        dnl can't use gcc under BeOS for shared library creation because it
+        dnl complains about missing 'main'
+        SHARED_LD_CC="${LD} -shared -o"
+        SHARED_LD_CXX="${LD} -shared -o"
+      ;;
+
+      *-*-irix* )
+        dnl default settings are ok for gcc
+        if test "x$GCC" != "xyes"; then
+            PIC_FLAG="-KPIC"
+        fi
+      ;;
+      
+      *-*-cygwin* | *-*-mingw32* )
+        PIC_FLAG=""
+      ;;
+      
+      *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \
+      *-*-sunos4* | \
+      *-*-osf* | \
+      *-*-dgux5* | \
+      *-pc-os2_emx | *-pc-os2-emx | \
+      *-*-sysv5* )
+        dnl defaults are ok
+      ;;
+
+      *)
+        AC_MSG_ERROR(unknown system type $BAKEFILE_HOST.)
+    esac
+
+    if test "x$SHARED_LD_MODULE_CC" = "x" ; then
+        SHARED_LD_MODULE_CC="$SHARED_LD_CC"
+    fi
+    if test "x$SHARED_LD_MODULE_CXX" = "x" ; then
+        SHARED_LD_MODULE_CXX="$SHARED_LD_CXX"
+    fi
+
+    AC_SUBST(SHARED_LD_CC)
+    AC_SUBST(SHARED_LD_CXX)
+    AC_SUBST(SHARED_LD_MODULE_CC)
+    AC_SUBST(SHARED_LD_MODULE_CXX)
+    AC_SUBST(PIC_FLAG)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_SHARED_VERSIONS
+dnl
+dnl Detects linker options for attaching versions (sonames) to shared  libs.
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_SHARED_VERSIONS,
+[
+    USE_SOVERSION=0
+    USE_SOVERLINUX=0
+    USE_SOVERSOLARIS=0
+    USE_SOSYMLINKS=0
+    USE_MACVERSION=0
+    SONAME_FLAG=
+
+    case "${BAKEFILE_HOST}" in
+      *-*-linux* )
+        SONAME_FLAG="-Wl,-soname,"
+        USE_SOVERSION=1
+        USE_SOVERLINUX=1
+        USE_SOSYMLINKS=1
+      ;;
+
+      *-*-solaris2* )
+        SONAME_FLAG="-h "
+        USE_SOVERSION=1
+        USE_SOVERSOLARIS=1
+        USE_SOSYMLINKS=1
+      ;;
+
+      *-*-darwin* )
+        USE_MACVERSION=1
+        USE_SOVERSION=1
+        USE_SOSYMLINKS=1
+      ;;      
+    esac
+
+    AC_SUBST(USE_SOVERSION)
+    AC_SUBST(USE_SOVERLINUX)
+    AC_SUBST(USE_SOVERSOLARIS)
+    AC_SUBST(USE_MACVERSION)
+    AC_SUBST(USE_SOSYMLINKS)
+    AC_SUBST(SONAME_FLAG)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_DEPS
+dnl
+dnl Detects available C/C++ dependency tracking options
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_DEPS,
+[
+    AC_MSG_CHECKING([for dependency tracking method])
+    DEPS_TRACKING=0
+
+    if test "x$GCC" = "xyes"; then
+        DEPSMODE=gcc
+        DEPS_TRACKING=1
+        case "${BAKEFILE_HOST}" in
+            powerpc-*-darwin* )
+                dnl -cpp-precomp (the default) conflicts with -MMD option
+                dnl used by bk-deps (see also http://developer.apple.com/documentation/Darwin/Conceptual/PortingUnix/compiling/chapter_4_section_3.html)
+                DEPSFLAG_GCC="-no-cpp-precomp -MMD"
+            ;;
+            * )
+                DEPSFLAG_GCC="-MMD"
+            ;;
+        esac
+        AC_MSG_RESULT([gcc])
+    else
+        AC_MSG_RESULT([none])
+    fi
+
+    if test $DEPS_TRACKING = 1 ; then
+        cat <<EOF >bk-deps
+#!/bin/sh
+
+# This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
+# script. It is used to track C/C++ files dependencies in portable way.
+#
+# Permission is given to use this file in any way.
+
+DEPSMODE=$DEPSMODE
+DEPSDIR=.deps
+DEPSFLAG_GCC="$DEPSFLAG_GCC"
+
+mkdir -p \$DEPSDIR
+
+if test \$DEPSMODE = gcc ; then
+    \${*} \${DEPSFLAG_GCC}
+    status=\${?}
+    if test \${status} != 0 ; then
+        exit \${status}
+    fi
+    # move created file to the location we want it in:
+    while test \${#} -gt 0; do
+        case "\${1}" in
+            -o )
+                shift
+                objfile=\${1}
+            ;;
+            -* )
+            ;;
+            * )
+                srcfile=\${1}
+            ;;
+        esac
+        shift
+    done
+    depfile=\`basename \$srcfile | sed -e 's/\..*$/.d/g'\`
+    depobjname=\`echo \$depfile |sed -e 's/\.d/.o/g'\`
+    if test -f \$depfile ; then
+        sed -e "s,\$depobjname:,\$objfile:,g" \$depfile >\${DEPSDIR}/\${objfile}.d
+        rm -f \$depfile
+    else
+        depfile=\`basename \$objfile | sed -e 's/\..*$/.d/g'\`
+        if test -f \$depfile ; then
+            sed -e "/^\$objfile/!s,\$depobjname:,\$objfile:,g" \$depfile >\${DEPSDIR}/\${objfile}.d
+            rm -f \$depfile
+        fi
+    fi
+    exit 0
+else
+    \${*}
+    exit \${?}
+fi
+EOF
+        chmod +x bk-deps
+    fi
+    
+    AC_SUBST(DEPS_TRACKING)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_CHECK_BASIC_STUFF
+dnl
+dnl Checks for presence of basic programs, such as C and C++ compiler, "ranlib"
+dnl or "install"
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_CHECK_BASIC_STUFF,
+[
+    AC_PROG_RANLIB
+    AC_PROG_INSTALL
+    AC_PROG_LN_S
+
+    AC_PROG_MAKE_SET
+    AC_SUBST(MAKE_SET)
+    
+    AC_CHECK_TOOL(AR, ar, ar)
+    AC_CHECK_TOOL(STRIP, strip, :)
+    AC_CHECK_TOOL(NM, nm, :)
+
+    case ${BAKEFILE_HOST} in
+        *-hp-hpux* )
+            INSTALL_DIR="mkdir"
+            ;;
+        *)  INSTALL_DIR="$INSTALL -d"
+            ;;
+    esac
+    AC_SUBST(INSTALL_DIR)
+
+    LDFLAGS_GUI=
+    case ${BAKEFILE_HOST} in
+        *-*-cygwin* | *-*-mingw32* )
+        LDFLAGS_GUI="-Wl,--subsystem,windows -mwindows"
+    esac
+    AC_SUBST(LDFLAGS_GUI)
+])
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_RES_COMPILERS
+dnl
+dnl Checks for presence of resource compilers for win32 or mac
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_RES_COMPILERS,
+[
+    RESCOMP=
+    SETFILE=
+
+    case ${BAKEFILE_HOST} in 
+        *-*-cygwin* | *-*-mingw32* )
+            dnl Check for win32 resources compiler:
+            if test "$build" != "$host" ; then
+                RESCOMP=$host_alias-windres
+            else
+                AC_CHECK_PROG(RESCOMP, windres, windres, windres)
+            fi
+         ;;
+      *-*-darwin* )
+            AC_CHECK_PROG(RESCOMP, Rez, Rez, /Developer/Tools/Rez)
+            AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile)
+        ;;
+    esac
+
+    AC_SUBST(RESCOMP)
+    AC_SUBST(SETFILE)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_PRECOMP_HEADERS
+dnl
+dnl Check for precompiled headers support (GCC >= 3.4)
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE_PRECOMP_HEADERS,
+[
+
+    AC_ARG_ENABLE([precomp-headers],
+                  [  --disable-precomp-headers  don't use precompiled headers even if compiler can],
+                  [bk_use_pch="$enableval"])
+
+    GCC_PCH=0
+
+    if test "x$bk_use_pch" = "x" -o "x$bk_use_pch" = "xyes" ; then
+        if test "x$GCC" = "xyes"; then
+            dnl test if we have gcc-3.4:
+            AC_MSG_CHECKING([if the compiler supports precompiled headers])
+            AC_TRY_COMPILE([],
+                [
+                    #if !defined(__GNUC__) || !defined(__GNUC_MINOR__)
+                        #error "no pch support"
+                    #endif
+                    #if (__GNUC__ < 3)
+                        #error "no pch support"
+                    #endif
+                    #if (__GNUC__ == 3) && \
+                       ((!defined(__APPLE_CC__) && (__GNUC_MINOR__ < 4)) || \
+                       ( defined(__APPLE_CC__) && (__GNUC_MINOR__ < 3)))
+                        #error "no pch support"
+                    #endif
+                ],
+                [
+                    AC_MSG_RESULT([yes])
+                    dnl FIXME - this is temporary, till .gch dependencies 
+                    dnl         are fixed in generated Makefiles
+                    CPPFLAGS="-fpch-deps $CPPFLAGS"
+                    GCC_PCH=1
+                ],
+                [
+                    AC_MSG_RESULT([no])
+                ])
+            if test $GCC_PCH = 1 ; then
+                cat <<EOF >bk-make-pch
+#!/bin/sh
+
+# This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
+# script. It is used to generated precompiled headers.
+#
+# Permission is given to use this file in any way.
+
+outfile="\${1}"
+header="\${2}"
+shift
+shift
+
+compiler=
+headerfile=
+while test \${#} -gt 0; do
+    case "\${1}" in
+        -I* )
+            incdir=\`echo \${1} | sed -e 's/-I\(.*\)/\1/g'\`
+            if test "x\${headerfile}" = "x" -a -f "\${incdir}/\${header}" ; then
+                headerfile="\${incdir}/\${header}"
+            fi
+        ;;
+    esac
+    compiler="\${compiler} \${1}"
+    shift
+done
+
+if test "x\${headerfile}" = "x" ; then
+    echo "error: can't find header \${header} in include paths" >2
+else
+    if test -f \${outfile} ; then
+        rm -f \${outfile}
+    else
+        mkdir -p \`dirname \${outfile}\`
+    fi
+    depsfile=".deps/\`basename \${outfile}\`.d"
+    mkdir -p .deps
+    # can do this because gcc is >= 3.4:
+    \${compiler} -o \${outfile} -MMD -MF "\${depsfile}" "\${headerfile}"
+    exit \${?}
+fi
+EOF
+                chmod +x bk-make-pch
+            fi
+        fi
+    fi
+
+    AC_SUBST(GCC_PCH)
+])
+
+
+
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE
+dnl
+dnl To be used in configure.in of any project using Bakefile-generated mks
+dnl
+dnl Behaviour can be modified by setting following variables:
+dnl    BAKEFILE_CHECK_BASICS    set to "no" if you don't want bakefile to
+dnl                             to perform check for basic tools like ranlib
+dnl    BAKEFILE_HOST            set this to override host detection, defaults
+dnl                             to ${host}
+dnl    BAKEFILE_FORCE_PLATFORM  set to override platform detection
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(AC_BAKEFILE,
+[
+    if test "x$BAKEFILE_HOST" = "x"; then
+        BAKEFILE_HOST="${host}"
+    fi
+
+    if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then
+        AC_BAKEFILE_CHECK_BASIC_STUFF
+    fi
+    AC_BAKEFILE_GNUMAKE
+    AC_BAKEFILE_PLATFORM
+    AC_BAKEFILE_SUFFIXES
+    AC_BAKEFILE_SHARED_LD
+    AC_BAKEFILE_SHARED_VERSIONS
+    AC_BAKEFILE_DEPS
+    AC_BAKEFILE_RES_COMPILERS
+
+    builtin(include, autoconf_inc.m4)
+])
+