]> git.saurik.com Git - wxWidgets.git/blobdiff - aclocal.m4
undid the last patch: set wxUSE_XXX to 0 in setup.h.in instead of having to do it...
[wxWidgets.git] / aclocal.m4
index 3e7001329d236f7a6df6c3fb78a48fc9d0d683c1..72127bdfb2d5ea783cc33ff9f7afa2f536e1392b 100644 (file)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.7.2 -*- Autoconf -*-
+# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*-
 
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# 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,
 # Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -101,14 +101,11 @@ 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-or-cross-compiling)
+dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false)
 dnl ---------------------------------------------------------------------------
 
 AC_DEFUN([WX_CPP_NEW_HEADERS],
 [
 dnl ---------------------------------------------------------------------------
 
 AC_DEFUN([WX_CPP_NEW_HEADERS],
 [
-  if test "$cross_compiling" = "yes"; then
-    ifelse([$2], , :, [$2])
-  else
     AC_LANG_SAVE
     AC_LANG_CPLUSPLUS
 
     AC_LANG_SAVE
     AC_LANG_CPLUSPLUS
 
@@ -121,7 +118,6 @@ AC_DEFUN([WX_CPP_NEW_HEADERS],
     fi
 
     AC_LANG_RESTORE
     fi
 
     AC_LANG_RESTORE
-  fi
 ])
 
 dnl ---------------------------------------------------------------------------
 ])
 
 dnl ---------------------------------------------------------------------------
@@ -612,6 +608,46 @@ if test "$ac_cv_cxx_const_cast" = yes; then
 fi
 ])
 
 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
+])
+
 # Configure paths for GTK+
 # Owen Taylor     1997-2001
 
 # Configure paths for GTK+
 # Owen Taylor     1997-2001
 
@@ -619,7 +655,7 @@ dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [,
 dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, 
 dnl pass to pkg-config
 dnl
 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,
+AC_DEFUN([AM_PATH_GTK_2_0],
 [dnl 
 dnl Get the cflags and libraries from pkg-config
 dnl
 [dnl 
 dnl Get the cflags and libraries from pkg-config
 dnl
@@ -644,7 +680,7 @@ AC_ARG_ENABLE(gtktest, [  --disable-gtktest       do not try to compile and run
     if pkg-config --atleast-pkgconfig-version 0.7 ; then
       :
     else
     if pkg-config --atleast-pkgconfig-version 0.7 ; then
       :
     else
-      echo *** pkg-config too old; version 0.7 or better required.
+      echo "*** pkg-config too old; version 0.7 or better required."
       no_gtk=yes
       PKG_CONFIG=no
     fi
       no_gtk=yes
       PKG_CONFIG=no
     fi
@@ -1062,6 +1098,187 @@ AC_DEFUN(PKG_CHECK_MODULES, [
 
 
 
 
 
 
+# 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_CXXFLAGS="$CXXFLAGS"
+      ac_save_LIBS="$LIBS"
+      CFLAGS="$CFLAGS $SDL_CFLAGS"
+      CXXFLAGS="$CXXFLAGS $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"
+       CXXFLAGS="$ac_save_CXXFLAGS"
+       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"
+          CXXFLAGS="$CXXFLAGS $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"
+          CXXFLAGS="$ac_save_CXXFLAGS"
+          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 ---------------------------------------------------------------------------
 dnl Support macros for makefiles generated by BAKEFILE.
 dnl ---------------------------------------------------------------------------
@@ -1077,7 +1294,7 @@ dnl
 dnl Detects GNU make
 dnl ---------------------------------------------------------------------------
 
 dnl Detects GNU make
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_GNUMAKE,
+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,
 [
     dnl does make support "-include" (only GNU make does AFAIK)?
     AC_CACHE_CHECK([if make is GNU make], bakefile_cv_prog_makeisgnu,
@@ -1104,38 +1321,119 @@ dnl
 dnl Detects platform and sets PLATFORM_XXX variables accordingly
 dnl ---------------------------------------------------------------------------
 
 dnl Detects platform and sets PLATFORM_XXX variables accordingly
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_PLATFORM,
+AC_DEFUN([AC_BAKEFILE_PLATFORM],
 [
     PLATFORM_UNIX=0
     PLATFORM_WIN32=0
     PLATFORM_MSDOS=0
     PLATFORM_MAC=0
 [
     PLATFORM_UNIX=0
     PLATFORM_WIN32=0
     PLATFORM_MSDOS=0
     PLATFORM_MAC=0
+    PLATFORM_MACOS=0
     PLATFORM_MACOSX=0
     PLATFORM_MACOSX=0
-    
-    case "${host}" in
-        *-*-cygwin* | *-*-mingw32* )
-            PLATFORM_WIN32=1
-        ;;
-        *-pc-msdosdjgpp | *-pc-os2_emx | *-pc-os2-emx )
-            PLATFORM_MSDOS=1
-        ;;
-        powerpc-*-darwin* )
-            PLATFORM_MAC=1
-            PLATFORM_MACOSX=1
-        ;;
-        * )
-            PLATFORM_UNIX=1
-        ;;
-    esac
+    PLATFORM_OS2=0
+    PLATFORM_BEOS=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
+            ;; 
+            *-*-beos* )
+                PLATFORM_BEOS=1
+            ;;
+            powerpc-apple-macos* )
+                PLATFORM_MAC=1
+                PLATFORM_MACOS=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
+            ;;
+            beos )
+                PLATFORM_BEOS=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_UNIX)
     AC_SUBST(PLATFORM_WIN32)
     AC_SUBST(PLATFORM_MSDOS)
     AC_SUBST(PLATFORM_MAC)
+    AC_SUBST(PLATFORM_MACOS)
     AC_SUBST(PLATFORM_MACOSX)
     AC_SUBST(PLATFORM_MACOSX)
+    AC_SUBST(PLATFORM_OS2)
+    AC_SUBST(PLATFORM_BEOS)
 ])
 
 
 ])
 
 
+dnl ---------------------------------------------------------------------------
+dnl AC_BAKEFILE_PLATFORM_SPECIFICS
+dnl
+dnl Sets misc platform-specific settings
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_PLATFORM_SPECIFICS],
+[
+    AC_ARG_ENABLE([omf], AS_HELP_STRING([--enable-omf],
+                                        [use OMF object format (OS/2)]),
+                  [bk_os2_use_omf="$enableval"])
+    
+    case "${BAKEFILE_HOST}" in
+      *-*-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"
+        ;;
+
+      *-pc-os2_emx | *-pc-os2-emx )
+        if test "x$bk_os2_use_omf" = "xyes" ; then
+            AR=emxomfar
+            RANLIB=:
+            LDFLAGS="-Zomf $LDFLAGS"
+            CFLAGS="-Zomf $CFLAGS"
+            CXXFLAGS="-Zomf $CXXFLAGS"
+            OS2_LIBEXT="lib"
+        else
+            OS2_LIBEXT="a"
+        fi
+        ;;
+      
+      i*86-*-beos* )
+        LDFLAGS="-L/boot/develop/lib/x86 $LDFLAGS"
+        ;;
+    esac
+])
 
 dnl ---------------------------------------------------------------------------
 dnl AC_BAKEFILE_SUFFIXES
 
 dnl ---------------------------------------------------------------------------
 dnl AC_BAKEFILE_SUFFIXES
@@ -1144,15 +1442,18 @@ dnl Detects shared various suffixes for shared libraries, libraries, programs,
 dnl plugins etc.
 dnl ---------------------------------------------------------------------------
 
 dnl plugins etc.
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_SUFFIXES,
+AC_DEFUN([AC_BAKEFILE_SUFFIXES],
 [
     SO_SUFFIX="so"
     SO_SUFFIX_MODULE="so"
     EXEEXT=""
 [
     SO_SUFFIX="so"
     SO_SUFFIX_MODULE="so"
     EXEEXT=""
-    DLLPREFIX=lib
-    DLLPREFIX_MODULE=
+    LIBPREFIX="lib"
+    LIBEXT=".a"
+    DLLPREFIX="lib"
+    DLLPREFIX_MODULE=""
+    DLLIMP_SUFFIX=""
     
     
-    case "${host}" in
+    case "${BAKEFILE_HOST}" in
         *-hp-hpux* )
             SO_SUFFIX="sl"
             SO_SUFFIX_MODULE="sl"
         *-hp-hpux* )
             SO_SUFFIX="sl"
             SO_SUFFIX_MODULE="sl"
@@ -1169,12 +1470,22 @@ AC_DEFUN(AC_BAKEFILE_SUFFIXES,
         *-*-cygwin* | *-*-mingw32* )
             SO_SUFFIX="dll"
             SO_SUFFIX_MODULE="dll"
         *-*-cygwin* | *-*-mingw32* )
             SO_SUFFIX="dll"
             SO_SUFFIX_MODULE="dll"
+            DLLIMP_SUFFIX="dll.a"
+            EXEEXT=".exe"
+            DLLPREFIX=""
+        ;;
+        *-pc-msdosdjgpp )
             EXEEXT=".exe"
             DLLPREFIX=""
         ;;
             EXEEXT=".exe"
             DLLPREFIX=""
         ;;
-        *-pc-msdosdjgpp | *-pc-os2_emx | *-pc-os2-emx )
+        *-pc-os2_emx | *-pc-os2-emx )
+            SO_SUFFIX="dll"
+            SO_SUFFIX_MODULE="dll"
+            DLLIMP_SUFFIX=$OS2_LIBEXT
             EXEEXT=".exe"
             DLLPREFIX=""
             EXEEXT=".exe"
             DLLPREFIX=""
+            LIBPREFIX=""
+            LIBEXT=".$OS2_LIBEXT"
         ;;
         powerpc-*-darwin* )
             SO_SUFFIX="dylib"
         ;;
         powerpc-*-darwin* )
             SO_SUFFIX="dylib"
@@ -1182,9 +1493,16 @@ AC_DEFUN(AC_BAKEFILE_SUFFIXES,
         ;;
     esac
 
         ;;
     esac
 
+    if test "x$DLLIMP_SUFFIX" = "x" ; then
+        DLLIMP_SUFFIX="$SO_SUFFIX"
+    fi
+
     AC_SUBST(SO_SUFFIX)
     AC_SUBST(SO_SUFFIX_MODULE)
     AC_SUBST(SO_SUFFIX)
     AC_SUBST(SO_SUFFIX_MODULE)
+    AC_SUBST(DLLIMP_SUFFIX)
     AC_SUBST(EXEEXT)
     AC_SUBST(EXEEXT)
+    AC_SUBST(LIBPREFIX)
+    AC_SUBST(LIBEXT)
     AC_SUBST(DLLPREFIX)
     AC_SUBST(DLLPREFIX_MODULE)
 ])
     AC_SUBST(DLLPREFIX)
     AC_SUBST(DLLPREFIX_MODULE)
 ])
@@ -1197,26 +1515,23 @@ dnl Detects command for making shared libraries, substitutes SHARED_LD_CC
 dnl and SHARED_LD_CXX.
 dnl ---------------------------------------------------------------------------
 
 dnl and SHARED_LD_CXX.
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_SHARED_LD,
+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
     dnl the extra compiler flags needed for compilation of shared library
+    PIC_FLAG=""
     if test "x$GCC" = "xyes"; then
         dnl the switch for gcc is the same under all platforms
         PIC_FLAG="-fPIC"
     fi
     if test "x$GCC" = "xyes"; then
         dnl the switch for gcc is the same under all platforms
         PIC_FLAG="-fPIC"
     fi
+    
+    dnl Defaults for GCC and ELF .so shared libs:
+    SHARED_LD_CC="\$(CC) -shared ${PIC_FLAG} -o"
+    SHARED_LD_CXX="\$(CXX) -shared ${PIC_FLAG} -o"
 
 
-    case "${host}" in
+    case "${BAKEFILE_HOST}" in
       *-hp-hpux* )
         dnl default settings are good for gcc but not for the native HP-UX
       *-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
+        if test "x$GCC" != "xyes"; then
             dnl no idea why it wants it, but it does
             LDFLAGS="$LDFLAGS -L/usr/lib"
 
             dnl no idea why it wants it, but it does
             LDFLAGS="$LDFLAGS -L/usr/lib"
 
@@ -1255,115 +1570,49 @@ AC_DEFUN(AC_BAKEFILE_SHARED_LD,
       ;;
 
       *-*-darwin* )
       ;;
 
       *-*-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 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
 
-        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)
-        # 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 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
+            AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH
+            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
 
 
-        SHARED_LD_CC="`pwd`/shared-ld-sh -dynamiclib -undefined suppress -flat_namespace -o"
-        SHARED_LD_MODULE_CC="`pwd`/shared-ld-sh -bundle -undefined suppress -flat_namespace -o"
-        SHARED_LD_CXX="$SHARED_LD_CC"
-        SHARED_LD_MODULE_CXX="$SHARED_LD_MODULE_CC"
         PIC_FLAG="-dynamic -fPIC"
         PIC_FLAG="-dynamic -fPIC"
-        dnl FIXME - what about C libs? Gilles says to use c++ because it doesn't
-        dnl         matter for C projects and matters for C++ ones
-        dnl FIXME - newer devel tools have linker flag to do this, the script
-        dnl         is not necessary - detect!
       ;;
 
       *-*-aix* )
       ;;
 
       *-*-aix* )
@@ -1382,8 +1631,8 @@ EOF
       *-*-beos* )
         dnl can't use gcc under BeOS for shared library creation because it
         dnl complains about missing 'main'
       *-*-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"
+        SHARED_LD_CC="${LD} -nostart -o"
+        SHARED_LD_CXX="${LD} -nostart -o"
       ;;
 
       *-*-irix* )
       ;;
 
       *-*-irix* )
@@ -1395,21 +1644,35 @@ EOF
       
       *-*-cygwin* | *-*-mingw32* )
         PIC_FLAG=""
       
       *-*-cygwin* | *-*-mingw32* )
         PIC_FLAG=""
+        SHARED_LD_CC="\$(CC) -shared -o"
+        SHARED_LD_CXX="\$(CXX) -shared -o"
+      ;;
+
+      *-pc-os2_emx | *-pc-os2-emx )
+        SHARED_LD_CC="`pwd`/dllar.sh -o"
+        SHARED_LD_CXX="`pwd`/dllar.sh -o"
+        PIC_FLAG=""
+        AC_BAKEFILE_CREATE_FILE_DLLAR_SH
+        chmod +x dllar.sh
       ;;
       
       ;;
       
+      powerpc-apple-macos* | \
       *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \
       *-*-sunos4* | \
       *-*-osf* | \
       *-*-dgux5* | \
       *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \
       *-*-sunos4* | \
       *-*-osf* | \
       *-*-dgux5* | \
-      *-*-sysv5* | \
-      *-pc-os2_emx | *-pc-os2-emx )
+      *-*-sysv5* )
         dnl defaults are ok
       ;;
 
       *)
         dnl defaults are ok
       ;;
 
       *)
-        AC_MSG_ERROR(unknown system type $host.)
+        AC_MSG_ERROR(unknown system type $BAKEFILE_HOST.)
     esac
 
     esac
 
+    if test "x$PIC_FLAG" != "x" ; then
+        PIC_FLAG="$PIC_FLAG -DPIC"
+    fi
+
     if test "x$SHARED_LD_MODULE_CC" = "x" ; then
         SHARED_LD_MODULE_CC="$SHARED_LD_CC"
     fi
     if test "x$SHARED_LD_MODULE_CC" = "x" ; then
         SHARED_LD_MODULE_CC="$SHARED_LD_CC"
     fi
@@ -1431,7 +1694,7 @@ dnl
 dnl Detects linker options for attaching versions (sonames) to shared  libs.
 dnl ---------------------------------------------------------------------------
 
 dnl Detects linker options for attaching versions (sonames) to shared  libs.
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_SHARED_VERSIONS,
+AC_DEFUN([AC_BAKEFILE_SHARED_VERSIONS],
 [
     USE_SOVERSION=0
     USE_SOVERLINUX=0
 [
     USE_SOVERSION=0
     USE_SOVERLINUX=0
@@ -1440,7 +1703,7 @@ AC_DEFUN(AC_BAKEFILE_SHARED_VERSIONS,
     USE_MACVERSION=0
     SONAME_FLAG=
 
     USE_MACVERSION=0
     SONAME_FLAG=
 
-    case "${host}" in
+    case "${BAKEFILE_HOST}" in
       *-*-linux* )
         SONAME_FLAG="-Wl,-soname,"
         USE_SOVERSION=1
       *-*-linux* )
         SONAME_FLAG="-Wl,-soname,"
         USE_SOVERSION=1
@@ -1448,6 +1711,13 @@ AC_DEFUN(AC_BAKEFILE_SHARED_VERSIONS,
         USE_SOSYMLINKS=1
       ;;
 
         USE_SOSYMLINKS=1
       ;;
 
+      *-*-freebsd* )
+        SONAME_FLAG="-Wl,-soname,"
+        USE_SOVERSION=1
+        USE_SOVERLINUX=1
+        USE_SOSYMLINKS=1
+      ;;
+
       *-*-solaris2* )
         SONAME_FLAG="-h "
         USE_SOVERSION=1
       *-*-solaris2* )
         SONAME_FLAG="-h "
         USE_SOVERSION=1
@@ -1477,7 +1747,7 @@ dnl
 dnl Detects available C/C++ dependency tracking options
 dnl ---------------------------------------------------------------------------
 
 dnl Detects available C/C++ dependency tracking options
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_DEPS,
+AC_DEFUN([AC_BAKEFILE_DEPS],
 [
     AC_MSG_CHECKING([for dependency tracking method])
     DEPS_TRACKING=0
 [
     AC_MSG_CHECKING([for dependency tracking method])
     DEPS_TRACKING=0
@@ -1485,7 +1755,7 @@ AC_DEFUN(AC_BAKEFILE_DEPS,
     if test "x$GCC" = "xyes"; then
         DEPSMODE=gcc
         DEPS_TRACKING=1
     if test "x$GCC" = "xyes"; then
         DEPSMODE=gcc
         DEPS_TRACKING=1
-        case "${host}" in
+        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)
             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)
@@ -1501,60 +1771,8 @@ AC_DEFUN(AC_BAKEFILE_DEPS,
     fi
 
     if test $DEPS_TRACKING = 1 ; then
     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
+        AC_BAKEFILE_CREATE_FILE_BK_DEPS
+        chmod +x bk-deps
     fi
     
     AC_SUBST(DEPS_TRACKING)
     fi
     
     AC_SUBST(DEPS_TRACKING)
@@ -1567,7 +1785,7 @@ dnl Checks for presence of basic programs, such as C and C++ compiler, "ranlib"
 dnl or "install"
 dnl ---------------------------------------------------------------------------
 
 dnl or "install"
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_CHECK_BASIC_STUFF,
+AC_DEFUN([AC_BAKEFILE_CHECK_BASIC_STUFF],
 [
     AC_PROG_RANLIB
     AC_PROG_INSTALL
 [
     AC_PROG_RANLIB
     AC_PROG_INSTALL
@@ -1576,17 +1794,15 @@ AC_DEFUN(AC_BAKEFILE_CHECK_BASIC_STUFF,
     AC_PROG_MAKE_SET
     AC_SUBST(MAKE_SET)
     
     AC_PROG_MAKE_SET
     AC_SUBST(MAKE_SET)
     
-    if test "$build" != "$host" ; then
-        AR=$host_alias-ar
-        STRIP=$host_alias-strip
-    else
-        AC_CHECK_PROG(AR, ar, ar, ar)
-        AC_CHECK_PROG(STRIP, strip, strip, true)
-    fi
+    AC_CHECK_TOOL(AR, ar, ar)
+    AC_CHECK_TOOL(STRIP, strip, :)
+    AC_CHECK_TOOL(NM, nm, :)
 
 
-    case ${host} in
+    case ${BAKEFILE_HOST} in
         *-hp-hpux* )
         *-hp-hpux* )
-            INSTALL_DIR="mkdir"
+            dnl HP-UX install doesn't handle the "-d" switch so don't
+            dnl use it there
+            INSTALL_DIR="mkdir -p"
             ;;
         *)  INSTALL_DIR="$INSTALL -d"
             ;;
             ;;
         *)  INSTALL_DIR="$INSTALL -d"
             ;;
@@ -1594,9 +1810,9 @@ AC_DEFUN(AC_BAKEFILE_CHECK_BASIC_STUFF,
     AC_SUBST(INSTALL_DIR)
 
     LDFLAGS_GUI=
     AC_SUBST(INSTALL_DIR)
 
     LDFLAGS_GUI=
-    case ${host} in
+    case ${BAKEFILE_HOST} in
         *-*-cygwin* | *-*-mingw32* )
         *-*-cygwin* | *-*-mingw32* )
-        LDFLAGS_GUI="-Wl,--subsystem,windows -mwindows"
+        LDFLAGS_GUI="-mwindows"
     esac
     AC_SUBST(LDFLAGS_GUI)
 ])
     esac
     AC_SUBST(LDFLAGS_GUI)
 ])
@@ -1608,12 +1824,12 @@ dnl
 dnl Checks for presence of resource compilers for win32 or mac
 dnl ---------------------------------------------------------------------------
 
 dnl Checks for presence of resource compilers for win32 or mac
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_RES_COMPILERS,
+AC_DEFUN([AC_BAKEFILE_RES_COMPILERS],
 [
     RESCOMP=
     SETFILE=
 
 [
     RESCOMP=
     SETFILE=
 
-    case ${host} in 
+    case ${BAKEFILE_HOST} in 
         *-*-cygwin* | *-*-mingw32* )
             dnl Check for win32 resources compiler:
             if test "$build" != "$host" ; then
         *-*-cygwin* | *-*-mingw32* )
             dnl Check for win32 resources compiler:
             if test "$build" != "$host" ; then
@@ -1623,7 +1839,7 @@ AC_DEFUN(AC_BAKEFILE_RES_COMPILERS,
             fi
          ;;
  
             fi
          ;;
  
-      *-*-darwin* )
+      *-*-darwin* | powerpc-apple-macos* )
             AC_CHECK_PROG(RESCOMP, Rez, Rez, /Developer/Tools/Rez)
             AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile)
         ;;
             AC_CHECK_PROG(RESCOMP, Rez, Rez, /Developer/Tools/Rez)
             AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile)
         ;;
@@ -1639,11 +1855,12 @@ dnl
 dnl Check for precompiled headers support (GCC >= 3.4)
 dnl ---------------------------------------------------------------------------
 
 dnl Check for precompiled headers support (GCC >= 3.4)
 dnl ---------------------------------------------------------------------------
 
-AC_DEFUN(AC_BAKEFILE_PRECOMP_HEADERS,
+AC_DEFUN([AC_BAKEFILE_PRECOMP_HEADERS],
 [
 
     AC_ARG_ENABLE([precomp-headers],
 [
 
     AC_ARG_ENABLE([precomp-headers],
-                  [  --disable-precomp-headers  don't use precompiled headers even if compiler can],
+                  AS_HELP_STRING([--disable-precomp-headers],
+                                 [don't use precompiled headers even if compiler can]),
                   [bk_use_pch="$enableval"])
 
     GCC_PCH=0
                   [bk_use_pch="$enableval"])
 
     GCC_PCH=0
@@ -1668,16 +1885,682 @@ AC_DEFUN(AC_BAKEFILE_PRECOMP_HEADERS,
                 ],
                 [
                     AC_MSG_RESULT([yes])
                 ],
                 [
                     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
                     GCC_PCH=1
                 ],
                 [
                     AC_MSG_RESULT([no])
                 ])
             if test $GCC_PCH = 1 ; then
-                cat <<EOF >bk-make-pch
+                AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH
+                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],
+[
+    AC_PREREQ(2.58)
+
+    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_PLATFORM_SPECIFICS
+    AC_BAKEFILE_SUFFIXES
+    AC_BAKEFILE_SHARED_LD
+    AC_BAKEFILE_SHARED_VERSIONS
+    AC_BAKEFILE_DEPS
+    AC_BAKEFILE_RES_COMPILERS
+
+    BAKEFILE_BAKEFILE_M4_VERSION="0.1.4"
+    
+    builtin(include, autoconf_inc.m4)
+    
+    if test "$BAKEFILE_BAKEFILE_M4_VERSION" != "$BAKEFILE_AUTOCONF_INC_M4_VERSION" ; then
+        AC_MSG_ERROR([Versions of Bakefile used to generate makefiles ($BAKEFILE_AUTOCONF_INC_M4_VERSION) and configure ($BAKEFILE_BAKEFILE_M4_VERSION) do not match.])
+    fi
+])
+        
+
+dnl ---------------------------------------------------------------------------
+dnl              Embedded copies of helper scripts follow:
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AC_BAKEFILE_CREATE_FILE_DLLAR_SH],
+[
+dnl ===================== dllar.sh begins here =====================
+D='$'
+cat <<EOF >dllar.sh
+#!/bin/sh
+#
+# dllar - a tool to build both a .dll and an .a file
+# from a set of object (.o) files for EMX/OS2.
+#
+#  Written by Andrew Zabolotny, bit@freya.etu.ru
+#  Ported to Unix like shell by Stefan Neis, Stefan.Neis@t-online.de
+#
+#  This script will accept a set of files on the command line.
+#  All the public symbols from the .o files will be exported into
+#  a .DEF file, then linker will be run (through gcc) against them to
+#  build a shared library consisting of all given .o files. All libraries
+#  (.a) will be first decompressed into component .o files then act as
+#  described above. You can optionally give a description (-d "description")
+#  which will be put into .DLL. To see the list of accepted options (as well
+#  as command-line format) simply run this program without options. The .DLL
+#  is built to be imported by name (there is no guarantee that new versions
+#  of the library you build will have same ordinals for same symbols).
+#
+#  dllar is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2, or (at your option)
+#  any later version.
+#
+#  dllar is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with dllar; see the file COPYING.  If not, write to the Free
+#  Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+#  02111-1307, USA.
+
+# To successfuly run this program you will need:
+#  - Current drive should have LFN support (HPFS, ext2, network, etc)
+#    (Sometimes dllar generates filenames which won't fit 8.3 scheme)
+#  - gcc
+#    (used to build the .dll)
+#  - emxexp
+#    (used to create .def file from .o files)
+#  - emximp
+#    (used to create .a file from .def file)
+#  - GNU text utilites (cat, sort, uniq)
+#    used to process emxexp output
+#  - GNU file utilities (mv, rm)
+#  - GNU sed
+#  - lxlite (optional, see flag below)
+#    (used for general .dll cleanup)
+#
+
+flag_USE_LXLITE=1;
+
+#
+# helper functions
+# basnam, variant of basename, which does _not_ remove the path, _iff_
+#                              second argument (suffix to remove) is given
+basnam(){
+    case ${D}# in
+    1)
+        echo ${D}1 | sed 's/.*\\///' | sed 's/.*\\\\//'
+        ;;
+    2)
+        echo ${D}1 | sed 's/'${D}2'${D}//'
+        ;;
+    *)
+        echo "error in basnam ${D}*"
+        exit 8
+        ;;
+    esac
+}
+
+# Cleanup temporary files and output
+CleanUp() {
+    cd ${D}curDir
+    for i in ${D}inputFiles ; do
+        case ${D}i in
+        *!)
+            rm -rf \`basnam ${D}i !\`
+            ;;
+        *)
+            ;;
+        esac
+    done
+
+    # Kill result in case of failure as there is just to many stupid make/nmake
+    # things out there which doesn't do this.
+    if @<:@ ${D}# -eq 0 @:>@; then
+        rm -f ${D}arcFile ${D}arcFile2 ${D}defFile ${D}dllFile
+    fi
+}
+
+# Print usage and exit script with rc=1.
+PrintHelp() {
+ echo 'Usage: dllar @<:@-o@<:${utput}:>@ output_file@:>@ @<:@-i@<:${mport}:>@ importlib_name@:>@'
+ echo '       @<:@-d@<:${escription}:>@ "dll descrption"@:>@ @<:@-cc "CC"@:>@ @<:@-f@<:${lags}:>@ "CFLAGS"@:>@'
+ echo '       @<:@-ord@<:${inals}:>@@:>@ -ex@<:${clude}:>@ "symbol(s)"'
+ echo '       @<:@-libf@<:${lags}:>@ "{INIT|TERM}{GLOBAL|INSTANCE}"@:>@ @<:@-nocrt@<:${dll}:>@@:>@ @<:@-nolxl@<:${ite}:>@@:>@'
+ echo '       @<:@*.o@:>@ @<:@*.a@:>@'
+ echo '*> "output_file" should have no extension.'
+ echo '   If it has the .o, .a or .dll extension, it is automatically removed.'
+ echo '   The import library name is derived from this and is set to "name".a,'
+ echo '   unless overridden by -import'
+ echo '*> "importlib_name" should have no extension.'
+ echo '   If it has the .o, or .a extension, it is automatically removed.'
+ echo '   This name is used as the import library name and may be longer and'
+ echo '   more descriptive than the DLL name which has to follow the old '
+ echo '   8.3 convention of FAT.'
+ echo '*> "cc" is used to use another GCC executable.   (default: gcc.exe)'
+ echo '*> "flags" should be any set of valid GCC flags. (default: -s -Zcrtdll)'
+ echo '   These flags will be put at the start of GCC command line.'
+ echo '*> -ord@<:${inals}:>@ tells dllar to export entries by ordinals. Be careful.'
+ echo '*> -ex@<:${clude}:>@ defines symbols which will not be exported. You can define'
+ echo '   multiple symbols, for example -ex "myfunc yourfunc _GLOBAL*".'
+ echo '   If the last character of a symbol is "*", all symbols beginning'
+ echo '   with the prefix before "*" will be exclude, (see _GLOBAL* above).'
+ echo '*> -libf@<:${lags}:>@ can be used to add INITGLOBAL/INITINSTANCE and/or'
+ echo '   TERMGLOBAL/TERMINSTANCE flags to the dynamically-linked library.'
+ echo '*> -nocrt@<:${dll}:>@ switch will disable linking the library against emx''s'
+ echo '   C runtime DLLs.'
+ echo '*> -nolxl@<:${ite}:>@ switch will disable running lxlite on the resulting DLL.'
+ echo '*> All other switches (for example -L./ or -lmylib) will be passed'
+ echo '   unchanged to GCC at the end of command line.'
+ echo '*> If you create a DLL from a library and you do not specify -o,'
+ echo '   the basename for DLL and import library will be set to library name,'
+ echo '   the initial library will be renamed to 'name'_s.a (_s for static)'
+ echo '   i.e. "dllar gcc.a" will create gcc.dll and gcc.a, and the initial'
+ echo '   library will be renamed into gcc_s.a.'
+ echo '--------'
+ echo 'Example:'
+ echo '   dllar -o gcc290.dll libgcc.a -d "GNU C runtime library" -ord'
+ echo '    -ex "__main __ctordtor*" -libf "INITINSTANCE TERMINSTANCE"'
+ CleanUp
+ exit 1
+}
+
+# Execute a command.
+# If exit code of the commnad <> 0 CleanUp() is called and we'll exit the script.
+# @Uses    Whatever CleanUp() uses.
+doCommand() {
+    echo "${D}*"
+    eval ${D}*
+    rcCmd=${D}?
+
+    if @<:@ ${D}rcCmd -ne 0 @:>@; then
+        echo "command failed, exit code="${D}rcCmd
+        CleanUp
+        exit ${D}rcCmd
+    fi
+}
+
+# main routine
+# setup globals
+cmdLine=${D}*
+outFile=""
+outimpFile=""
+inputFiles=""
+description=""
+CC=gcc.exe
+CFLAGS="-s -Zcrtdll"
+EXTRA_CFLAGS=""
+EXPORT_BY_ORDINALS=0
+exclude_symbols=""
+library_flags=""
+curDir=\`pwd\`
+curDirS=curDir
+case ${D}curDirS in
+*/)
+  ;;
+*)
+  curDirS=${D}{curDirS}"/"
+  ;;
+esac
+# Parse commandline
+libsToLink=0
+while @<:@ ${D}1 @:>@; do
+    case ${D}1 in
+    -ord*)
+        EXPORT_BY_ORDINALS=1;
+        ;;
+    -o*)
+       shift
+        outFile=${D}1
+       ;;
+    -i*)
+        shift
+        outimpFile=${D}1
+        ;;
+    -d*)
+        shift
+        description=${D}1
+        ;;
+    -f*)
+        shift
+        CFLAGS=${D}1
+        ;;
+    -c*)
+        shift
+        CC=${D}1
+        ;;
+    -h*)
+        PrintHelp
+        ;;
+    -ex*)
+        shift
+        exclude_symbols=${D}{exclude_symbols}${D}1" "
+        ;;
+    -libf*)
+        shift
+        library_flags=${D}{library_flags}${D}1" "
+        ;;
+    -nocrt*)
+        CFLAGS="-s"
+        ;;
+    -nolxl*)
+        flag_USE_LXLITE=0
+        ;;
+    -* | /*)
+        case ${D}1 in
+        -L* | -l*)
+            libsToLink=1
+            ;;
+        *)
+            ;;
+        esac
+        EXTRA_CFLAGS=${D}{EXTRA_CFLAGS}" "${D}1
+        ;;
+    *)
+        found=0;
+        if @<:@ ${D}libsToLink -ne 0 @:>@; then
+            EXTRA_CFLAGS=${D}{EXTRA_CFLAGS}" "${D}1
+        else
+            for file in ${D}1 ; do
+                if @<:@ -f ${D}file @:>@; then
+                    inputFiles="${D}{inputFiles} ${D}file"
+                    found=1
+                fi
+            done
+            if @<:@ ${D}found -eq 0 @:>@; then
+                echo "ERROR: No file(s) found: "${D}1
+                exit 8
+            fi
+        fi
+      ;;
+    esac
+    shift
+done # iterate cmdline words
+
+#
+if @<:@ -z "${D}inputFiles" @:>@; then
+    echo "dllar: no input files"
+    PrintHelp
+fi
+
+# Now extract all .o files from .a files
+newInputFiles=""
+for file in ${D}inputFiles ; do
+    case ${D}file in
+    *.a | *.lib)
+        case ${D}file in
+        *.a)
+            suffix=".a"
+            AR="ar"
+            ;;
+        *.lib)
+            suffix=".lib"
+            AR="emxomfar"
+            EXTRA_CFLAGS="${D}EXTRA_CFLAGS -Zomf"
+            ;;
+        *)
+            ;;
+        esac
+        dirname=\`basnam ${D}file ${D}suffix\`"_%"
+        mkdir ${D}dirname
+        if @<:@ ${D}? -ne 0 @:>@; then
+            echo "Failed to create subdirectory ./${D}dirname"
+            CleanUp
+            exit 8;
+        fi
+        # Append '!' to indicate archive
+        newInputFiles="${D}newInputFiles ${D}{dirname}!"
+        doCommand "cd ${D}dirname; ${D}AR x ../${D}file"
+        cd ${D}curDir
+        found=0;
+        for subfile in ${D}dirname/*.o* ; do
+            if @<:@ -f ${D}subfile @:>@; then
+                found=1
+                if @<:@ -s ${D}subfile @:>@; then
+                   # FIXME: This should be: is file size > 32 byte, _not_ > 0!
+                    newInputFiles="${D}newInputFiles ${D}subfile"
+                fi
+            fi
+        done
+        if @<:@ ${D}found -eq 0 @:>@; then
+            echo "WARNING: there are no files in archive \\'${D}file\\'"
+        fi
+        ;;
+    *)
+        newInputFiles="${D}{newInputFiles} ${D}file"
+        ;;
+    esac
+done
+inputFiles="${D}newInputFiles"
+
+# Output filename(s).
+do_backup=0;
+if @<:@ -z ${D}outFile @:>@; then
+    do_backup=1;
+    set outFile ${D}inputFiles; outFile=${D}2
+fi
+
+# If it is an archive, remove the '!' and the '_%' suffixes
+case ${D}outFile in
+*_%!)
+    outFile=\`basnam ${D}outFile _%!\`
+    ;;
+*)
+    ;;
+esac
+case ${D}outFile in
+*.dll)
+    outFile=\`basnam ${D}outFile .dll\`
+    ;;
+*.DLL)
+    outFile=\`basnam ${D}outFile .DLL\`
+    ;;
+*.o)
+    outFile=\`basnam ${D}outFile .o\`
+    ;;
+*.obj)
+    outFile=\`basnam ${D}outFile .obj\`
+    ;;
+*.a)
+    outFile=\`basnam ${D}outFile .a\`
+    ;;
+*.lib)
+    outFile=\`basnam ${D}outFile .lib\`
+    ;;
+*)
+    ;;
+esac
+case ${D}outimpFile in
+*.a)
+    outimpFile=\`basnam ${D}outimpFile .a\`
+    ;;
+*.lib)
+    outimpFile=\`basnam ${D}outimpFile .lib\`
+    ;;
+*)
+    ;;
+esac
+if @<:@ -z ${D}outimpFile @:>@; then
+    outimpFile=${D}outFile
+fi
+defFile="${D}{outFile}.def"
+arcFile="${D}{outimpFile}.a"
+arcFile2="${D}{outimpFile}.lib"
+dllFile="${D}outFile"
+# Add suffix to dllFile later, first we need a version to use as
+# name in .def file.
+
+if @<:@ ${D}do_backup -ne 0 @:>@ ; then
+    if @<:@ -f ${D}arcFile @:>@ ; then
+        doCommand "mv ${D}arcFile ${D}{outFile}_s.a"
+    fi
+    if @<:@ -f ${D}arcFile2 @:>@ ; then
+        doCommand "mv ${D}arcFile2 ${D}{outFile}_s.lib"
+    fi
+fi
+
+# Extract public symbols from all the object files.
+tmpdefFile=${D}{defFile}_%
+rm -f ${D}tmpdefFile
+for file in ${D}inputFiles ; do
+    case ${D}file in
+    *!)
+        ;;
+    *)
+        doCommand "emxexp -u ${D}file >> ${D}tmpdefFile"
+        ;;
+    esac
+done
+
+# Create the def file.
+rm -f ${D}defFile
+echo "LIBRARY \`basnam ${D}dllFile\` ${D}library_flags" >> ${D}defFile
+dllFile="${D}dllFile.dll"
+if @<:@ -n ${D}description @:>@; then
+    echo "DESCRIPTION  \\"${D}{description}\\"" >> ${D}defFile
+fi
+echo "EXPORTS" >> ${D}defFile
+
+doCommand "cat ${D}tmpdefFile | sort.exe | uniq.exe > ${D}{tmpdefFile}%"
+grep -v "^ *;" < ${D}{tmpdefFile}% | grep -v "^ *${D}" >${D}tmpdefFile
+
+# Checks if the export is ok or not.
+for word in ${D}exclude_symbols; do
+    grep -v ${D}word < ${D}tmpdefFile >${D}{tmpdefFile}%
+    mv ${D}{tmpdefFile}% ${D}tmpdefFile
+done
+
+
+if @<:@ ${D}EXPORT_BY_ORDINALS -ne 0 @:>@; then
+    sed "=" < ${D}tmpdefFile | \\
+    sed '
+      N
+      : loop
+      s/^\\(@<:@0-9@:>@\\+\\)\\(@<:@^;@:>@*\\)\\(;.*\\)\\?/\\2 @\\1 NONAME/
+      t loop
+    ' > ${D}{tmpdefFile}%
+    grep -v "^ *${D}" < ${D}{tmpdefFile}% > ${D}tmpdefFile
+else
+    rm -f ${D}{tmpdefFile}%
+fi
+cat ${D}tmpdefFile >> ${D}defFile
+rm -f ${D}tmpdefFile
+
+# Do linking, create implib, and apply lxlite.
+gccCmdl="";
+for file in ${D}inputFiles ; do
+    case ${D}file in
+    *!)
+        ;;
+    *)
+        gccCmdl="${D}gccCmdl ${D}file"
+        ;;
+    esac
+done
+doCommand "${D}CC ${D}CFLAGS -Zdll -o ${D}dllFile ${D}defFile ${D}gccCmdl ${D}EXTRA_CFLAGS"
+touch "${D}{outFile}.dll"
+
+doCommand "emximp -o ${D}arcFile ${D}defFile"
+if @<:@ ${D}flag_USE_LXLITE -ne 0 @:>@; then
+    add_flags="";
+    if @<:@ ${D}EXPORT_BY_ORDINALS -ne 0 @:>@; then
+        add_flags="-ynd"
+    fi
+    doCommand "lxlite -cs -t: -mrn -mln ${D}add_flags ${D}dllFile"
+fi
+doCommand "emxomf -s -l ${D}arcFile"
+
+# Successful exit.
+CleanUp 1
+exit 0
+EOF
+dnl ===================== dllar.sh ends here =====================
+])
+
+AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_DEPS],
+[
+dnl ===================== bk-deps begins here =====================
+D='$'
+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 ${D}DEPSDIR
+
+if test ${D}DEPSMODE = gcc ; then
+    ${D}* ${D}{DEPSFLAG_GCC}
+    status=${D}?
+    if test ${D}{status} != 0 ; then
+        exit ${D}{status}
+    fi
+    # move created file to the location we want it in:
+    while test ${D}# -gt 0; do
+        case "${D}1" in
+            -o )
+                shift
+                objfile=${D}1
+            ;;
+            -* )
+            ;;
+            * )
+                srcfile=${D}1
+            ;;
+        esac
+        shift
+    done
+    depfile=\`basename ${D}srcfile | sed -e 's/\\..*${D}/.d/g'\`
+    depobjname=\`echo ${D}depfile |sed -e 's/\\.d/.o/g'\`
+    if test -f ${D}depfile ; then
+        sed -e "s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{DEPSDIR}/${D}{objfile}.d
+        rm -f ${D}depfile
+    else
+        depfile=\`basename ${D}objfile | sed -e 's/\\..*${D}/.d/g'\`
+        if test -f ${D}depfile ; then
+            sed -e "/^${D}objfile/!s,${D}depobjname:,${D}objfile:,g" ${D}depfile >${D}{DEPSDIR}/${D}{objfile}.d
+            rm -f ${D}depfile
+        fi
+    fi
+    exit 0
+else
+    ${D}*
+    exit ${D}?
+fi
+EOF
+dnl ===================== bk-deps ends here =====================
+])
+
+AC_DEFUN([AC_BAKEFILE_CREATE_FILE_SHARED_LD_SH],
+[
+dnl ===================== shared-ld-sh begins here =====================
+D='$'
+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 ${D}# -gt 0; do
+    case ${D}1 in
+
+       -v)
+        verbose=1
+        ;;
+
+       -o|-compatibility_version|-current_version|-framework|-undefined|-install_name)
+        # collect these options and values
+        args="${D}{args} ${D}1 ${D}2"
+        shift
+        ;;
+
+       -l*|-L*|-flat_namespace|-headerpad_max_install_names)
+        # collect these options
+        args="${D}{args} ${D}1"
+        ;;
+
+       -dynamiclib|-bundle)
+        linking_flag="${D}1"
+        ;;
+
+       -*)
+        echo "shared-ld: unhandled option '${D}1'"
+        exit 1
+        ;;
+
+        *.o | *.a | *.dylib)
+        # collect object files
+        objects="${D}{objects} ${D}1"
+        ;;
+
+        *)
+        echo "shared-ld: unhandled argument '${D}1'"
+        exit 1
+        ;;
+
+    esac
+    shift
+done
+
+#
+# Link one module containing all the others
+#
+if test ${D}{verbose} = 1; then
+    echo "c++ -r -keep_private_externs -nostdlib ${D}{objects} -o master.${D}${D}.o"
+fi
+c++ -r -keep_private_externs -nostdlib ${D}{objects} -o master.${D}${D}.o
+status=${D}?
+if test ${D}{status} != 0; then
+    exit ${D}{status}
+fi
+
+#
+# Link the shared library from the single module created
+#
+if test ${D}{verbose} = 1; then
+    echo "cc ${D}{linking_flag} master.${D}${D}.o ${D}{args}"
+fi
+c++ ${D}{linking_flag} master.${D}${D}.o ${D}{args}
+status=${D}?
+if test ${D}{status} != 0; then
+    exit ${D}{status}
+fi
+
+#
+# Remove intermediate module
+#
+rm -f master.${D}${D}.o
+
+exit 0
+EOF
+dnl ===================== shared-ld-sh ends here =====================
+])
+
+AC_DEFUN([AC_BAKEFILE_CREATE_FILE_BK_MAKE_PCH],
+[
+dnl ===================== bk-make-pch begins here =====================
+D='$'
+cat <<EOF >bk-make-pch
 #!/bin/sh
 
 # This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
 #!/bin/sh
 
 # This script is part of Bakefile (http://bakefile.sourceforge.net) autoconf
@@ -1685,70 +2568,122 @@ AC_DEFUN(AC_BAKEFILE_PRECOMP_HEADERS,
 #
 # Permission is given to use this file in any way.
 
 #
 # Permission is given to use this file in any way.
 
-outfile="\${1}"
-header="\${2}"
+outfile="${D}{1}"
+header="${D}{2}"
 shift
 shift
 
 compiler=
 headerfile=
 shift
 shift
 
 compiler=
 headerfile=
-while test \${#} -gt 0; do
-    case "\${1}" in
+while test ${D}{#} -gt 0; do
+    case "${D}{1}" in
         -I* )
         -I* )
-            incdir=\`echo \${1} | sed -e 's/-I\(.*\)/\1/g'\`
-            if test "x\${headerfile}" = "x" -a -f "\${incdir}/\${header}" ; then
-                headerfile="\${incdir}/\${header}"
+            incdir=\`echo ${D}{1} | sed -e 's/-I\\(.*\\)/\\1/g'\`
+            if test "x${D}{headerfile}" = "x" -a -f "${D}{incdir}/${D}{header}" ; then
+                headerfile="${D}{incdir}/${D}{header}"
             fi
         ;;
     esac
             fi
         ;;
     esac
-    compiler="\${compiler} \${1}"
+    compiler="${D}{compiler} ${D}{1}"
     shift
 done
 
     shift
 done
 
-if test "x\${headerfile}" = "x" ; then
-    echo "error: can't find header \${header} in include paths" >2
+if test "x${D}{headerfile}" = "x" ; then
+    echo "error: can't find header ${D}{header} in include paths" >2
 else
 else
-    if test -f \${outfile} ; then
-        rm -f \${outfile}
+    if test -f ${D}{outfile} ; then
+        rm -f ${D}{outfile}
     else
     else
-        mkdir -p \`dirname \${outfile}\`
+        mkdir -p \`dirname ${D}{outfile}\`
     fi
     fi
-    depsfile=".deps/\`basename \${outfile}\`.d"
+    depsfile=".deps/\`echo ${D}{outfile} | tr '/.' '__'\`.d"
     mkdir -p .deps
     # can do this because gcc is >= 3.4:
     mkdir -p .deps
     # can do this because gcc is >= 3.4:
-    \${compiler} -o \${outfile} -MMD -MF "\${depsfile}" "\${headerfile}"
-    exit \${?}
+    ${D}{compiler} -o ${D}{outfile} -MMD -MF "${D}{depsfile}" "${D}{headerfile}"
+    exit ${D}{?}
 fi
 EOF
 fi
 EOF
-                chmod +x bk-make-pch
-            fi
-        fi
-    fi
-
-    AC_SUBST(GCC_PCH)
+dnl ===================== bk-make-pch ends here =====================
 ])
 
 ])
 
+dnl
+dnl AM_PATH_CPPUNIT(MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+AC_DEFUN(AM_PATH_CPPUNIT,
+[
 
 
+AC_ARG_WITH(cppunit-prefix,[  --with-cppunit-prefix=PFX   Prefix where CppUnit is installed (optional)],
+            cppunit_config_prefix="$withval", cppunit_config_prefix="")
+AC_ARG_WITH(cppunit-exec-prefix,[  --with-cppunit-exec-prefix=PFX  Exec prefix where CppUnit is installed (optional)],
+            cppunit_config_exec_prefix="$withval", cppunit_config_exec_prefix="")
 
 
-dnl ---------------------------------------------------------------------------
-dnl AC_BAKEFILE
-dnl
-dnl To be used in configure.in of any project using Bakefile-generated mks
-dnl ---------------------------------------------------------------------------
+  if test x$cppunit_config_exec_prefix != x ; then
+     cppunit_config_args="$cppunit_config_args --exec-prefix=$cppunit_config_exec_prefix"
+     if test x${CPPUNIT_CONFIG+set} != xset ; then
+        CPPUNIT_CONFIG=$cppunit_config_exec_prefix/bin/cppunit-config
+     fi
+  fi
+  if test x$cppunit_config_prefix != x ; then
+     cppunit_config_args="$cppunit_config_args --prefix=$cppunit_config_prefix"
+     if test x${CPPUNIT_CONFIG+set} != xset ; then
+        CPPUNIT_CONFIG=$cppunit_config_prefix/bin/cppunit-config
+     fi
+  fi
 
 
-AC_DEFUN(AC_BAKEFILE,
-[
-    if test "x$BAKEFILE_CHECK_BASICS" != "xno"; then
-        AC_BAKEFILE_CHECK_BASIC_STUFF
+  AC_PATH_PROG(CPPUNIT_CONFIG, cppunit-config, no)
+  cppunit_version_min=$1
+
+  AC_MSG_CHECKING(for Cppunit - version >= $cppunit_version_min)
+  no_cppunit=""
+  if test "$CPPUNIT_CONFIG" = "no" ; then
+    no_cppunit=yes
+  else
+    CPPUNIT_CFLAGS=`$CPPUNIT_CONFIG --cflags`
+    CPPUNIT_LIBS=`$CPPUNIT_CONFIG --libs`
+    cppunit_version=`$CPPUNIT_CONFIG --version`
+
+    cppunit_major_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    cppunit_minor_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    cppunit_micro_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+    cppunit_major_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    cppunit_minor_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    cppunit_micro_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+    cppunit_version_proper=`expr \
+        $cppunit_major_version \> $cppunit_major_min \| \
+        $cppunit_major_version \= $cppunit_major_min \& \
+        $cppunit_minor_version \> $cppunit_minor_min \| \
+        $cppunit_major_version \= $cppunit_major_min \& \
+        $cppunit_minor_version \= $cppunit_minor_min \& \
+        $cppunit_micro_version \>= $cppunit_micro_min `
+
+    if test "$cppunit_version_proper" = "1" ; then
+      AC_MSG_RESULT([$cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version])
+    else
+      AC_MSG_RESULT(no)
+      no_cppunit=yes
     fi
     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
+  fi
 
 
-    builtin(include, autoconf_inc.m4)
+  if test "x$no_cppunit" = x ; then
+     ifelse([$2], , :, [$2])     
+  else
+     CPPUNIT_CFLAGS=""
+     CPPUNIT_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+
+  AC_SUBST(CPPUNIT_CFLAGS)
+  AC_SUBST(CPPUNIT_LIBS)
 ])
 
 ])
 
+
+
+