[project @ 2004-11-03 12:31:42 by ross]
[ghc-hetmet.git] / configure.ac
index 4cc728e..491e596 100644 (file)
@@ -13,13 +13,15 @@ dnl
 # see what flags are available. (Better yet, read the documentation!)
 #
 
+AC_INIT([fptools build system], [1.0], [cvs-fptools@haskell.org], [fptools])
+
 # First off, a distrib sanity check..
-AC_INIT(mk/config.mk.in)
+AC_CONFIG_SRCDIR([mk/config.mk.in])
 
 dnl * We require autoconf version 2.52
 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
-AC_PREREQ(2.52)
+AC_PREREQ([2.52])
 
 dnl * Declare subdirectories that have a private configure script
 dnl
@@ -45,7 +47,7 @@ dnl * Choose host(/target/build) platform
 dnl--------------------------------------------------------------------
 
 dnl Guess host/target/build platform(s) if necessary.
-AC_CANONICAL_SYSTEM
+AC_CANONICAL_TARGET
 
 # "$host" defaults to "$target"
 if test "x$host" = xNONE ; then
@@ -105,6 +107,24 @@ alpha*-unknown-freebsd*)
         HostVendor_CPP='unknown'
         HostOS_CPP='freebsd'
         ;;
+alpha*-unknown-openbsd*)
+       HostPlatform=alpha-unknown-openbsd
+       TargetPlatform=alpha-unknown-openbsd
+       BuildPlatform=alpha-unknown-openbsd
+        HostPlatform_CPP='alpha_unknown_openbsd'
+        HostArch_CPP='alpha'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='openbsd'
+        ;;
+amd64-*-openbsd*|x86_64-*-openbsd*)
+       HostPlatform=x86_64-unknown-openbsd
+       TargetPlatform=x86_64-unknown-openbsd
+       BuildPlatform=x86_64-unknown-openbsd
+        HostPlatform_CPP='x86_64_unknown_openbsd'
+        HostArch_CPP='x86_64'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='openbsd'
+        ;;
 arm*-linux*)
         HostPlatform=arm-unknown-linux # hack again
         TargetPlatform=arm-unknown-linux
@@ -114,6 +134,15 @@ arm*-linux*)
         HostVendor_CPP='unknown'
         HostOS_CPP='linux'
         ;;
+arm*-openbsd*)
+        HostPlatform=arm-unknown-openbsd
+        TargetPlatform=arm-unknown-openbsd
+        BuildPlatform=arm-unknown-openbsd
+        HostPlatform_CPP='arm_unknown_openbsd'                 
+        HostArch_CPP='arm'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='openbsd'
+        ;;
 hppa*-*-linux*)
         HostPlatform=hppa-unknown-linux # hack again
         TargetPlatform=hppa-unknown-linux
@@ -123,6 +152,15 @@ hppa*-*-linux*)
         HostVendor_CPP='unknown'                             
         HostOS_CPP='linux'
         ;;
+hppa*-*-openbsd*)
+        HostPlatform=hppa-unknown-openbsd # hack again
+        TargetPlatform=hppa-unknown-openbsd
+        BuildPlatform=hppa-unknown-openbsd
+        HostPlatform_CPP='hppa_unknown_openbsd'                
+        HostArch_CPP='hppa'
+        HostVendor_CPP='unknown'                             
+        HostOS_CPP='openbsd'
+        ;;
 hppa1.1-hp-hpux*)
        HostPlatform=hppa1.1-hp-hpux  # canonicalise for our purposes (hack)
        TargetPlatform=hppa1.1-hp-hpux
@@ -290,6 +328,15 @@ m68k-sun-sunos4*)
         HostVendor_CPP='sun'
         HostOS_CPP='sunos4'
         ;;
+m88k-*-openbsd*)
+       HostPlatform=m88k-unknown-openbsd
+       TargetPlatform=m88k-unknown-openbsd
+       BuildPlatform=m88k-unknown-openbsd
+        HostPlatform_CPP='m88k_unknown_openbsd'
+        HostArch_CPP='m88k'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='openbsd'
+        ;;
 mips-*-linux*)
         HostPlatform=mips-unknown-linux # hack again
         TargetPlatform=mips-unknown-linux
@@ -350,6 +397,15 @@ powerpc-unknown-linux*)
         HostVendor_CPP='unknown'
         HostOS_CPP='linux'
         ;;
+powerpc-unknown-openbsd*)
+        HostPlatform=powerpc-unknown-openbsd
+        TargetPlatform=powerpc-unknown-openbsd
+        BuildPlatform=powerpc-unknown-openbsd
+        HostPlatform_CPP='powerpc_unknown_openbsd'
+        HostArch_CPP='powerpc'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='openbsd'
+        ;;
 s390-ibm-linux*)
        HostPlatform=s390-ibm-linux
        TargetPlatform=s390-ibm-linux #hack
@@ -395,6 +451,24 @@ sparc-*-openbsd*)
         HostVendor_CPP='unknown'
         HostOS_CPP='openbsd'
         ;;
+sparc64-*-openbsd*)
+        HostPlatform=sparc64-unknown-openbsd
+        TargetPlatform=sparc64-unknown-openbsd
+        BuildPlatform=sparc64-unknown-openbsd
+        HostPlatform_CPP='sparc64_unknown_openbsd'
+        HostArch_CPP='sparc64'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='openbsd'
+        ;;
+vax-*-openbsd*)
+        HostPlatform=vax-unknown-openbsd
+        TargetPlatform=vax-unknown-openbsd
+        BuildPlatform=vax-unknown-openbsd
+        HostPlatform_CPP='vax_unknown_openbsd'
+        HostArch_CPP='vax'
+        HostVendor_CPP='unknown'
+        HostOS_CPP='openbsd'
+        ;;
 *)
         echo "Unrecognised platform: $HostPlatform"
         exit 1
@@ -448,15 +522,32 @@ dnl Remove common automounter nonsense
 dnl
 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
 
-dnl Find 'hardtop_plat', the native format for 'hardtop' (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes being escaped).
+dnl Find 'hardtop_plat', the native format for 'hardtop' 
+dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes being escaped).
+dnl
+dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert /cygdrive/c/foo to c:/foo
+dnl             but we must not do that if we aren't building using Cygwin (notably msys), 
+dnl             because cygpath doesn't exist.  It seems that 'bash' sets OSTYPE to 'cygwin' 
+dnl             or 'msys' respectively, but cygwin's 'sh' does not.  So we hackily assume
+dnl             that if the shell hasn't set it to 'msys' then we must be in Cygwin.  Sigh.
 dnl
+dnl             The Right Thing is probably to test $BuildPlatform instead, but we are sloppy 
+dnl             about setting that correctly at the moment, so we just work around for now.
+dnl
+dnl             The quotes round "$(OSTYPE)" are essential, for the Cygwin-sh case where OSTYPE
+dnl             is not set.
 case $HostPlatform in
   i386-unknown-mingw32 | i386-unknown-cygwin32)
-       # convert $hardtop to a path that mingw will understand too
-       cyghardtop=${hardtop}
-       hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
-       hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
-       ;;
+        if test "${OSTYPE}" != "msys" 
+          then
+            # convert $hardtop to a path that mingw will understand too
+            cyghardtop=${hardtop}
+            hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
+            hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
+          else
+            hardtop_plat=${hardtop}
+        fi
+        ;;
   *)
        hardtop_plat=${hardtop}
        ;;
@@ -478,24 +569,21 @@ dnl ** What command to use to compile compiler sources ?
 dnl --------------------------------------------------------------
 
 AC_ARG_WITH(ghc,
-[  --with-ghc=<haskell compiler>
-        Use a command different from 'ghc' to compile GHC-specific Haskell code
-           (including GHC itself).
-],
+[AC_HELP_STRING([--with-ghc=ARG],
+       [Use ARG as the path to GHC  [default=autodetect]])],
 [ WithGhc="$withval" ],
 [ 
   if test "$GHC" = ""; then
     AC_PATH_PROG(GHC,ghc)
   fi
   WithGhc=$GHC
-]
-)
+])
 AC_SUBST(WithGhc)
 
 AC_ARG_WITH(hc,
-[  --with-hc=<haskell compiler>
-        Use a command different from 'ghc' to compile generic Haskell code.
-],
+[AC_HELP_STRING([--with-hc=ARG],
+        [Use ARG as the path to the compiler for compiling ordinary
+        Haskell code  (default= value of --with-ghc)])],
 [WithHc="$withval"],
 [WithHc=$WithGhc]
 )
@@ -515,13 +603,16 @@ AC_PATH_PROG(HBC,hbc)
 dnl ** Which gcc to use?
 dnl --------------------------------------------------------------
 AC_ARG_WITH(gcc,
-[  --with-gcc=<gcc command>
-        Use a different command instead of 'gcc' for the GNU C compiler.
-],
+[AC_HELP_STRING([--with-gcc=ARG],
+        [Use ARG as the path to GCC  [default=autodetect]])],
 [WhatGccIsCalled="$withval"
- if test "x$HostPlatform" = "xi386-unknown-mingw32"; then
-    # Canonicalise to <drive>:/path/to/gcc
-    withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
+ if test "x$HostPlatform" = "xi386-unknown-mingw32"
+    then
+       if test "${OSTYPE}" != "msys"
+         then
+         # Canonicalise to <drive>:/path/to/gcc
+         withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
+       fi
  fi;
  CC="$withval"],
 [WhatGccIsCalled="gcc"]
@@ -531,11 +622,15 @@ AC_SUBST(WhatGccIsCalled)
 dnl ** Booting from .hc files?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(hc-boot,
-[  --enable-hc-boot
-        Boot the Glasgow Haskell Compiler from intermediate .hc files.
-        (This option is mostly of interest to porters.)
+[AC_HELP_STRING([--enable-hc-boot],
+[Boot the Glasgow Haskell Compiler from intermediate .hc files.
+ (This option is mostly of interest to porters.) [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       BootingFromHc=YES
+  else
+       BootingFromHc=NO
+  fi
 ],
-[BootingFromHc=YES],
 [BootingFromHc=NO]
 )
 AC_SUBST(BootingFromHc)
@@ -543,12 +638,16 @@ AC_SUBST(BootingFromHc)
 dnl ** Booting from unregisterised .hc files?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(hc-boot-unregisterised,
-[  --enable-hc-boot-unregisterised
-        With --enable-hc-boot, treat the intermediate .hc files as
-        unregisterised rather than registerised code.
-        (This option is mostly of interest to porters.)
+[AC_HELP_STRING([--enable-hc-boot-unregisterised],
+[ With --enable-hc-boot, treat the intermediate .hc files as
+ unregisterised rather than registerised code.
+ (This option is mostly of interest to porters.) [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       BootingFromUnregisterisedHc=YES
+  else
+       BootingFromUnregisterisedHc=NO
+  fi
 ],
-[BootingFromUnregisterisedHc=YES],
 [BootingFromUnregisterisedHc=NO]
 )
 AC_SUBST(BootingFromUnregisterisedHc)
@@ -564,13 +663,17 @@ if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/ghc"; then
 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
 fi;
 
-dnl ** Enable multi-thread friendly RTS?
+dnl ** --enable-threaded-rts (not used any more)
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(threaded-rts,
-[  --enable-threaded-rts
-        Support better interop with OS threads.
+[AC_HELP_STRING([--enable-threaded-rts],
+[DEPRECATED (backwards compatibility only). [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       ThreadedRts=YES
+  else
+       ThreadedRts=NO
+  fi
 ],
-[ThreadedRts=YES],
 [ThreadedRts=NO]
 )
 AC_SUBST(ThreadedRts)
@@ -611,44 +714,43 @@ dnl fi
 dnl ** Enable the building of the ObjectIO?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(objectio,
-[  --enable-objectio
-        Build ObjectIO, a portable GUI library for Haskell.
+[AC_HELP_STRING([--enable-objectio],
+[Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       GhcLibsWithObjectIO=YES
+  else
+       GhcLibsWithObjectIO=NO
+  fi
 ],
-[GhcLibsWithObjectIO=YES],
 [GhcLibsWithObjectIO=NO]
 )
 AC_SUBST(GhcLibsWithObjectIO)
 
-dnl ** Enable the building of the OpenGL/GLUT binding in hslibs?
+dnl ** Enable the building of the OpenAL binding?
 dnl --------------------------------------------------------------
-AC_ARG_ENABLE(hopengl,
-[  --enable-hopengl
-        Build HOpenGL, a Haskell binding for OpenGL/GLUT.
-        On Mac OS X, use --enable-hopengl=x11 to use X11 instead
-        of the "native" libraries.
-],
-[GhcLibsWithOpenGL=YES; GhcLibsWithGLUT=YES],
-[GhcLibsWithOpenGL=NO;  GhcLibsWithGLUT=NO]
-)
-UseQuartzOpenGL=NO
-if test x"$TargetOS_CPP" = x"darwin"; then
-  if test x"$enable_hopengl" != x"x11"; then
-    AC_DEFINE([USE_QUARTZ_OPENGL], [1],
-              [Define to 1 if native OpenGL should be used on Mac OS X])
-    UseQuartzOpenGL=YES
-  fi
-fi
-
-AC_SUBST([GhcLibsWithOpenGL])
-AC_SUBST([GhcLibsWithGLUT])
+AC_ARG_ENABLE([openal],
+  AC_HELP_STRING([--enable-openal],
+                 [Build OpenAL binding [[default=autodetect]]]),
+  [ if test x"$enableval" = x"yes"; then
+       GhcLibsWithOpenAL=YES
+    else
+       GhcLibsWithOpenAL=NO
+    fi
+  ],
+  [GhcLibsWithOpenAL=YES])
+
+AC_SUBST([GhcLibsWithOpenAL])
 
 dnl ** .NET interop support?
 dnl --------------------------------------------------------------
 AC_ARG_ENABLE(dotnet,
-[  --enable-dotnet
-        Build .NET interop layer.
-],
-[DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])],
+[AC_HELP_STRING([--enable-dotnet],
+[Build .NET interop layer. [default=no]])],
+[ if test x"$enableval" = x"yes"; then
+       DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
+  else 
+       DotnetSupport=NO
+  fi],
 [DotnetSupport=NO]
 )
 AC_SUBST(DotnetSupport)
@@ -736,7 +838,8 @@ dnl If you can run configure, you certainly have /bin/sh
 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
 
 dnl ** how to invoke `ar' and `ranlib'
-FPTOOLS_PROG_AR_AND_RANLIB
+FP_PROG_AR_NEEDS_RANLIB
+FP_PROG_AR_SUPPORTS_INPUT
 
 dnl ** Check to see whether ln -s works
 AC_PROG_LN_S
@@ -753,45 +856,20 @@ dnl ** check for tar
 dnl   if GNU tar is named gtar, look for it first.
 AC_PATH_PROGS(TarCmd,gtar tar,tar)
 
-dnl ** check for jade/openjade & determine a working catalog
-AC_PATH_PROGS(JadeCmd,openjade jade,jade)
-FPTOOLS_DOCBOOK_CATALOG(Catalog, $JadeCmd, docs/fptools-both.dsl, 
-                        /etc/sgml/catalog /etc/sgml.catalog /usr/share/sgml/CATALOG.docbkdsl /usr/local/share/sgml/catalog glafp-utils/docbook/CATALOG*)
-if test -z "$Catalog"; then
-  AC_MSG_RESULT([Warning: You will not be able to build the documentation.])
-fi
-case $Catalog in
-   yes) # assume it is provided by other means (e.g., SGML_CATALOG_FILES env var).
-        Catalog=
-       ;;
-   glafp*) 
-       case $HostOS_CPP in
-          mingw32)
-             Catalog=`cygpath -w $hardtop/$Catalog`
-             ;;
-          *) Catalog=$hardtop/$Catalog
-             ;;
-       esac
-   ;;
-esac   
-AC_SUBST(Catalog)
-
+dnl ** check for DocBook toolchain
+FP_CHECK_DOCBOOK_DTD
+FP_DIR_DOCBOOK_XSL([/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/sgml/docbook/docbook-xsl-stylesheets* /usr/share/sgml/docbook/xsl-stylesheets* /opt/kde?/share/apps/ksgmltools2/docbook/xsl /usr/share/docbook-xsl /usr/share/sgml/docbkxsl])
+FP_PROG_FO_PROCESSOR
 
 dnl ** check for ghc-pkg command
-changequote(, )dnl
-ghc_pkg_guess=`echo $WithGhc | sed 's@ghc\([^/\\]*\)$@ghc-pkg\1@'`
-changequote([, ])dnl
-if $ghc_pkg_guess -l >/dev/null 2>/dev/null; then
-   GhcPkgCmd=$ghc_pkg_guess
-   AC_MSG_NOTICE([using $ghc_pkg_guess for ghc-pkg])
-else
-   AC_PATH_PROG(GhcPkgCmd,ghc-pkg)
-fi
+FP_PROG_GHC_PKG
+
+dnl Check whether this GHC has readline installed
+FPTOOLS_GHC_HAS_READLINE
 
 AC_ARG_WITH(greencard,
-[  --with-greencard=<greencard compiler>
-        Use a command different from 'greencard' to compile GreenCard files
-],
+[AC_HELP_STRING([--with-greencard=ARG],
+        [Use ARG as the path to greencard  [default=autodetct]])],
 [
 GreenCardCmd=$withval;
 FPTOOLS_GREENCARD(3.00)
@@ -799,10 +877,15 @@ FPTOOLS_GREENCARD(3.00)
 )
 
 AC_ARG_ENABLE(src-tree-happy,
-[  --enable-src-tree-happy
-        Build and use source tree (fptools/happy) version of Happy.
+[AC_HELP_STRING([--enable-src-tree-happy],
+       [Build and use source tree (fptools/happy) version of Happy. 
+        [default=autodetect]])],
+[ if test x"$enableval" = x"yes"; then
+       UseSrcTreeHappy=YES
+  else
+       UseSrcTreeHappy=NO
+  fi
 ],
-[UseSrcTreeHappy=YES],
 [UseSrcTreeHappy=NO]
 )
 dnl ** check for installed happy binary + version
@@ -812,20 +895,30 @@ FPTOOLS_HAPPY
 fi;
 
 AC_ARG_ENABLE(src-tree-haddock,
-[  --enable-src-tree-haddock
-        Build and use source tree (fptools/haddock) version of Haddock.
+[AC_HELP_STRING([--enable-src-tree-haddock],
+        [Build and use source tree (fptools/haddock) version of Haddock.
+        [default=autodetect]])],
+[ if test x"$enableval" = x"yes"; then
+       UseSrcTreeHaddock=YES
+  else
+       UseSrcTreeHaddock=NO
+  fi
 ],
-[UseSrcTreeHaddock=YES],
 [UseSrcTreeHaddock=NO]
 )
 dnl ** check for installed haddock
 FPTOOLS_HADDOCK
 
 AC_ARG_ENABLE(src-tree-alex,
-[  --enable-src-tree-alex
-        Build and use source tree (fptools/alex) version of Alex.
+[AC_HELP_STRING([--enable-src-tree-alex],
+        [Build and use source tree (fptools/alex) version of Alex.
+        [default=autodetect]])],
+[ if test x"$enableval" = x"yes"; then
+       UseSrcTreeAlex=YES
+  else
+       UseSrcTreeAlex=NO
+  fi
 ],
-[UseSrcTreeAlex=YES],
 [UseSrcTreeAlex=NO]
 )
 dnl ** check for installed alex binary + version
@@ -850,11 +943,12 @@ dnl    off_t, because it will affect the result of that test.
 AC_SYS_LARGEFILE
 
 dnl ** check for specific header (.h) files that we are interested in
-AC_CHECK_HEADERS(Files.h arpa/inet.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h inttypes.h limits.h locale.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdint.h stdlib.h stddef.h stdarg.h string.h sys/fault.h sys/file.h sys/ioctl.h sys/limits.h sys/mman.h sys/param.h sys/procfs.h sys/resource.h sys/signal.h sys/socket.h netdb.h netinet/in.h netinet/tcp.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/un.h sys/utsname.h sys/vadvise.h sys/wait.h termio.h termios.h time.h types.h unistd.h utime.h values.h bfd.h winsock.h pthread.h sys/uio.h)
-AC_CHECK_HEADER(unistd.h,[AC_CHECK_FUNCS(lchown)])
+AC_CHECK_HEADERS([bfd.h ctype.h dirent.h dlfcn.h errno.h fcntl.h grp.h limits.h locale.h nlist.h pthread.h pwd.h signal.h sys/mman.h sys/resource.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/utsname.h sys/wait.h termios.h time.h utime.h windows.h winsock.h])
 
-AC_CHECK_HEADER(readline/readline.h, [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
-AC_CHECK_HEADER(readline/history.h, [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
+AC_CHECK_HEADER([unistd.h], [AC_CHECK_FUNCS(lchown)])
+
+AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
+AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
 
 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
   GhcLibsWithReadline=YES
@@ -865,37 +959,39 @@ else
 fi
 AC_SUBST(GhcLibsWithReadline)
 
-dnl ** check for DOS include files
-AC_CHECK_HEADERS(dos.h conio.h io.h std.h) 
+dnl ** check for OpenGL/GLUT include paths and libraries
+FP_CHECK_GLUT
+
+if test x"$no_GLU" = xyes; then
+  GhcLibsWithOpenGL=NO
+else
+  GhcLibsWithOpenGL=YES
+fi
+AC_SUBST([GhcLibsWithOpenGL])
 
-dnl ** check for Windows include files
-AC_CHECK_HEADERS(windows.h)
+if test x"$no_GLUT" = xyes; then
+  GhcLibsWithGLUT=NO
+else
+  GhcLibsWithGLUT=YES
+fi
+AC_SUBST([GhcLibsWithGLUT])
 
 dnl ** check for OpenGL include files
 fp_save_cppflags="$CPPFLAGS"
 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-if test $UseQuartzOpenGL = YES ; then
-  AC_CHECK_HEADERS(OpenGL/gl.h)
+if test x"$use_quartz_opengl" = xyes; then
+  AC_CHECK_HEADERS([OpenGL/gl.h])
 else
-  AC_CHECK_HEADERS(GL/gl.h)
+  AC_CHECK_HEADERS([GL/gl.h])
 fi
 CPPFLAGS="$fp_save_cppflags"
 
 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
 AC_HEADER_TIME
 
-dnl dynamic loading include files
-AC_CHECK_HEADERS(dlfcn.h dl.h) 
-
-dnl ** check for farcalloc (in bcc)
-AC_CHECK_HEADER(alloc.h,[AC_CHECK_FUNCS(farcalloc)])
-
-dnl ** check for valloc (in sunos, solaris, mips, amiga, next, minix, ultrix)
-AC_CHECK_HEADER(malloc.h,[AC_CHECK_FUNCS(valloc)])
-
 dnl ** check for POSIX regex
 HavePosixRegex=NO
-AC_CHECK_HEADERS(regex.h,[AC_CHECK_FUNC(regcomp, [HavePosixRegex=YES])])
+AC_CHECK_HEADERS([regex.h], [AC_CHECK_FUNCS(regcomp, [HavePosixRegex=YES])])
 AC_SUBST(HavePosixRegex)
 
 dnl ** how do we get a timezone name, and UTC offset ?
@@ -904,24 +1000,9 @@ AC_STRUCT_TIMEZONE
 dnl ** do we have altzone?
 FP_DECL_ALTZONE
 
-dnl ** does struct stat contain st_blksize?
-AC_STRUCT_ST_BLKSIZE
-
 dnl ** do we have long longs?
 AC_CHECK_TYPES([long long])
 
-dnl ** check what fields struct msghdr contains
-AC_CHECK_HEADERS([sys/types.h sys/socket.h sys/uio.h])
-AC_CHECK_MEMBERS([struct msghdr.msg_control, struct msghdr.msg_accrights], [], [], [#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#if HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif])
-
 dnl ** what are the sizes of various types
 AC_CHECK_SIZEOF(char,               1)
 AC_CHECK_SIZEOF(double,             8)
@@ -1023,56 +1104,26 @@ FP_CHECK_CONSTS([E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EADV EAFNOSUPPORT EAGAIN
 dnl ** can we open files in binary mode?
 FP_CHECK_CONST([O_BINARY], [#include <fcntl.h>], [0])
 
-dnl ** check for GetModuleFileName and WinExec (windows only)
-dnl Old: AC_CHECK_FUNCS(WinExec GetModuleFileName)       dnl Windows
-dnl Doesn't work because the linker can't see the functions if
-dnl you omit the #include <windows.h>.  (I've no idea why not...)
-
-FPTOOLS_TRY_LINK_NOWARN(,[
-#if HAVE_WINDOWS_H
-#include <windows.h>
-#endif
-main() { 
-  WinExec("",0);
-  exit(0);
-}
-],
-[have_winexec=1],
-[have_winexec=0])
-if test "$have_winexec" = "1"; then
-  AC_DEFINE([HAVE_WINEXEC], [1], [Define to 1 if you have the WinExec function.])
-fi
+FP_CHECK_FUNC([WinExec],
+  [@%:@include <windows.h>], [WinExec("",0)])
 
-FPTOOLS_TRY_LINK_NOWARN(,[
-#if HAVE_WINDOWS_H
-#include <windows.h>
-#endif
-main() { 
-  char* dir;
-  GetModuleFileName((HMODULE)0,dir,0);
-  exit(0);
-}
-],
-[have_getmodulefilename=1],
-[have_getmodulefilename=0])
-if test "$have_getmodulefilename" = "1"; then
-AC_DEFINE([HAVE_GETMODULEFILENAME], [1], [Define to 1 if you have the GetModuleFileName function.])
-fi
+FP_CHECK_FUNC([GetModuleFileName],
+  [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
 
 dnl ** check return type of signal handlers
 dnl Foo: assumes we can use prototypes.
 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
-dnl [AC_TRY_COMPILE([#include <sys/types.h>
+dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
 dnl #include <signal.h>
 dnl #ifdef signal
 dnl #undef signal
 dnl #endif
 dnl void (*signal (int, void (*)(int)))(int);
-dnl ],
-dnl [int i;], 
-dnl ac_cv_type_signal_handler=void_int,
-dnl ac_cv_type_signal_handler=int_void)])
+dnl ]],
+dnl [[int i;]])],
+dnl [ac_cv_type_signal_handler=void_int],
+dnl [ac_cv_type_signal_handler=int_void])])
 dnl if test "$ac_cv_type_signal_handler" = void_int; then
 dnl AC_DEFINE(VOID_INT_SIGNALS)
 dnl fi
@@ -1084,20 +1135,7 @@ if test "$ac_cv_type_signal" = void; then
 fi
 
 dnl ** check for more functions
-AC_CHECK_FUNCS(strcasecmp _stricmp stricmp strcmpi)
-AC_CHECK_FUNCS(strcmp)
-AC_CHECK_FUNCS(realpath _fullpath)  
-AC_CHECK_FUNCS(PBHSetVolSync macsystem)  
-AC_CHECK_FUNCS(fgetpos fsetpos fseek ftell)
-AC_CHECK_FUNCS(vsnprintf _vsnprintf)
-AC_CHECK_FUNCS(snprintf  _snprintf )  
-AC_CHECK_FUNCS(popen     _popen )  
-AC_CHECK_FUNCS(pclose    _pclose )  
-AC_CHECK_FUNCS(setenv unsetenv)
-
-
-dnl ** check for specific library functions that we are interested in
-AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect readlink setitimer stat lstat siginterrupt symlink sysconf timelocal times vadvise localtime_r gmtime_r readdir_r getgrgid_r getgrnam_r getpwuid_r getpwnam_r)
+AC_CHECK_FUNCS([ftime getclock getgrgid_r getgrnam_r getpagesize getpwnam_r getpwuid_r getpwnam getpwuid getrusage gettimeofday gmtime_r localtime_r lstat readdir_r readlink setenv setitimer siginterrupt symlink sysconf times unsetenv])
 
 dnl ** Solaris2 needs additionl flag for getpw*_r()
 case "$TargetPlatform" in
@@ -1151,9 +1189,7 @@ AC_CHECK_LIB(bfd,    bfd_init)
 dnl ** check for wide-char classifications
 dnl FreeBSD has an emtpy wctype.h, so test one of the affected
 dnl functions if it's really there.
-AC_CHECK_HEADERS(wctype.h,
-  [AC_CHECK_FUNCS(iswspace)]
-)
+AC_CHECK_HEADERS([wctype.h], [AC_CHECK_FUNCS(iswspace)])
 
 dnl ** check for readline, for Hugs and hslibs' Readline
 dnl ncurses supersedes termcap and curses, but for compatibility,
@@ -1190,27 +1226,18 @@ else
 fi
 
 dnl ** check for math library
-FPTOOLS_CHECK_LIBM()
-AC_SUBST(LIBM)
+AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"], [LIBM=])
+AC_SUBST([LIBM])
 
 dnl ** check for X Window System
 AC_PATH_XTRA()
 
-dnl ** check for OpenGL/GLUT/GLX include paths and libraries
-if test $GhcLibsWithOpenGL = YES ; then
-  if test $UseQuartzOpenGL = YES ; then
-    dnl Take a shortcut for Mac OS X native OpenGL:
-    dnl It's in a non-standard location, but it's always there
-    GL_CFLAGS=
-       GL_LIBS=
-       GLUT_LIBS=
-       AC_SUBST(GL_CFLAGS)
-       AC_SUBST(GL_LIBS)
-       AC_SUBST(GLUT_LIBS)
-  else
-    FPTOOLS_HAVE_OPENGL
-  fi
+if test "$no_x" = yes; then
+  GhcLibsWithX11=NO
+else
+  GhcLibsWithX11=YES
 fi
+AC_SUBST([GhcLibsWithX11])
 
 dnl ################################################################
 dnl Check for libraries
@@ -1241,7 +1268,6 @@ else
         AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
         LIBS="$LIBS -ldl"], 
        [HaveLibDL=NO])
-    AC_CHECK_FUNCS(dlopen)
     AC_SUBST(HaveLibDL)
 
     dnl ** sometimes RTLD_NEXT is hidden in #ifdefs we really don't wan to set
@@ -1317,8 +1343,6 @@ else
     AC_SUBST(HaveRtldNow)
 fi
 
-FPTOOLS_CHECK_LIB_NOWARN(m, atan)
-
 dnl ---------- usleep ----------
 dnl --- stolen from guile configure ---
 dnl --- FIXME: /usr/include/unistd.h can't be right?
@@ -1337,52 +1361,18 @@ case "$cv_func_usleep_return_type" in
 esac
 
 dnl --------------------------------------------------
-dnl * test for in_addr_t
-dnl --------------------------------------------------
-AC_MSG_CHECKING(for in_addr_t in netinet/in.h)
-AC_EGREP_HEADER(in_addr_t, netinet/in.h,
- [ AC_DEFINE([HAVE_IN_ADDR_T], [1], [Define to 1 if in_addr_t is available.]) AC_MSG_RESULT(yes) ],
- AC_MSG_RESULT(no))
-
-dnl --------------------------------------------------
-dnl * test for Linux sendfile(2)
-dnl --------------------------------------------------
-AC_MSG_CHECKING(for sendfile in sys/sendfile.h)
-AC_EGREP_HEADER(sendfile, sys/sendfile.h,
- [ AC_DEFINE([HAVE_LINUX_SENDFILE], [1], [Define to 1 if you have a Linux sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],
- AC_MSG_RESULT(no))
-
-dnl --------------------------------------------------
-dnl * test for BSD sendfile(2)
-dnl --------------------------------------------------
-AC_MSG_CHECKING(for sendfile in sys/socket.h)
-AC_EGREP_HEADER(sendfile, sys/socket.h,
- [ AC_DEFINE([HAVE_BSD_SENDFILE], [1], [Define to 1 if you have a BSDish sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],
- AC_MSG_RESULT(no))
-
-dnl --------------------------------------------------
 dnl * test for GTK+
 dnl --------------------------------------------------
 
-AC_PATH_PROGS(GTK_CONFIG, gtk-config gtk12-config)
-if test "$GTK_CONFIG" != ""; then
-   AC_CACHE_CHECK([for version of GTK+], fptools_cv_gtk_version, [
-       fptools_cv_gtk_version=`$GTK_CONFIG --version`
-    ])
-    GTK_VERSION=$fptools_cv_gtk_version
-else
-    GTK_VERSION=
+AC_PATH_PROGS([GTK_CONFIG], [gtk-config gtk12-config])
+if test -n "$GTK_CONFIG"; then
+  AC_CACHE_CHECK([for version of GTK+], [fp_cv_gtk_version],
+    [fp_cv_gtk_version=`$GTK_CONFIG --version`])
+  FP_COMPARE_VERSIONS([$fp_cv_gtk_version], [-lt], [1.2],
+    [AC_MSG_WARN([GTK+ not usable, need at least version 1.2])
+     GTK_CONFIG=])
 fi
-
-case $fptools_cv_gtk_version in
-  1.[[23]].*) ;;
-  *) AC_MSG_WARN([GTK+ not usable; need at least version 1.2])
-     GTK_CONFIG=
-     ;;
-esac
-
-AC_SUBST(GTK_CONFIG)
-AC_SUBST(GTK_VERSION)
+AC_SUBST([GTK_CONFIG])
 
 dnl --------------------------------------------------
 dnl * Miscellaneous feature tests
@@ -1392,7 +1382,7 @@ dnl ** can we get alloca?
 AC_FUNC_ALLOCA
 
 dnl ** Working vfork?
-AC_FUNC_VFORK
+AC_FUNC_FORK
 
 dnl ** determine whether or not const works
 AC_C_CONST
@@ -1401,12 +1391,18 @@ dnl ** are we big endian?
 AC_C_BIGENDIAN
 
 dnl ** check for leading underscores in symbol names
-FPTOOLS_UNDERSCORE
+FP_LEADING_UNDERSCORE
 
 dnl ** check for ld, and whether ld has -x option
 AC_PATH_PROG(LdCmdRaw, ld)
 case $HostOS_CPP in
- mingw32) LdCmd=`cygpath -w ${LdCmdRaw} | sed -e 's@\\\\@/@g' `
+ mingw32) 
+        if test "${OSTYPE}" == "msys"
+          then
+             LdCmd=${LdCmdRaw}
+          else
+             LdCmd=`cygpath -w ${LdCmdRaw} | sed -e 's@\\\\@/@g' `
+       fi
           ;;
  *) LdCmd=${LdCmdRaw}
     ;;
@@ -1416,37 +1412,6 @@ FPTOOLS_LD_X
 
 FP_EMPTY_STRUCTS
 
-AC_MSG_CHECKING([for SIGPOLL])
-AC_EGREP_CPP(we_have_sigpoll,
-[#include <signal.h>
-#ifdef SIGPOLL
-we_have_sigpoll
-#endif
-], AC_DEFINE([HAVE_SIGPOLL], [1], [Define to 1 if you have the sigpoll() function.]) haveSIGPOLL=yes, haveSIGPOLL=no)
-AC_MSG_RESULT([$haveSIGPOLL])
-
-AC_MSG_CHECKING([for _SC_GETGR_R_SIZE_MAX])
-AC_EGREP_CPP(we_have_that_sysconf_thing,
-[
-#include <unistd.h>
-#ifdef _SC_GETGR_R_SIZE_MAX
-we_have_that_sysconf_thing
-#endif
-],
-[AC_MSG_RESULT([yes])
-AC_DEFINE([HAVE_SC_GETGR_R_SIZE_MAX], [1], [Define to 1 if <unistd.h> defines _SC_GETGR_R_SIZE_MAX.])],
-[AC_MSG_RESULT([no])])
-
-AC_MSG_CHECKING([for _SC_GETPW_R_SIZE_MAX])
-AC_EGREP_CPP(we_have_that_sysconf_thing,
-[
-#include <unistd.h>
-#ifdef _SC_GETPW_R_SIZE_MAX
-we_have_that_sysconf_thing
-#endif
-],
-[AC_MSG_RESULT([yes])
-AC_DEFINE([HAVE_SC_GETPW_R_SIZE_MAX], [1], [Define to 1 if <unistd.h> defines _SC_GETPW_R_SIZE_MAX.])],
-[AC_MSG_RESULT([no])])
-
-AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )
+AC_CONFIG_FILES([mk/config.mk])
+AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
+AC_OUTPUT