[project @ 2005-11-03 11:00:40 by simonmar]
[ghc-hetmet.git] / configure.ac
index 2430e41..9f99c20 100644 (file)
@@ -3,11 +3,11 @@ dnl (run "grep '^dnl \*' configure.ac | sed -e 's/dnl / /g; s/\*\*/   +/g;'"
 dnl  (or some such) to see the outline of this file)
 dnl
 #
-# (c) The AQUA Project, Glasgow University, 1994-1998
+# (c) The AQUA Project, Glasgow University, 1994-2004
 #
 # Configure script template for the Glasgow functional programming tools
 #
-# Process with 'autoconf' to get a working configure script.
+# Process with 'autoreconf' to get a working configure script.
 #
 # For the generated configure script, do "./configure --help" to
 # see what flags are available. (Better yet, read the documentation!)
@@ -188,6 +188,15 @@ i[[3456]]86-*-linux*)
         HostVendor_CPP='unknown'
         HostOS_CPP='linux'
         ;;
+i[[3456]]86-*-gnu*)
+        HostPlatform=i386-unknown-gnu
+        TargetPlatform=i386-unknown-gnu
+        BuildPlatform=i386-unknown-gnu
+        HostPlatform_CPP=i386_unknown_gnu
+        HostArch_CPP=i386
+        HostVendor_CPP=unknown
+        HostOS_CPP=gnu
+        ;;
 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
        HostPlatform=i386-unknown-freebsd # hack again
        TargetPlatform=i386-unknown-freebsd
@@ -253,6 +262,15 @@ i[[3456]]86-*-mingw32*)
         HostOS_CPP='mingw32'
        exeext='.exe'
         ;;
+i[[3456]]86-apple-darwin*)
+       HostPlatform=i386-apple-darwin
+       TargetPlatform=i386-apple-darwin #hack
+       BuildPlatform=i386-apple-darwin #hack
+       HostPlatform_CPP='i386_apple_darwin'
+       HostArch_CPP='i386'
+       HostVendor_CPP='apple'
+       HostOS_CPP='darwin'
+       ;;
 ia64-*-linux*)
         HostPlatform=ia64-unknown-linux # hack again
         TargetPlatform=ia64-unknown-linux
@@ -406,6 +424,16 @@ powerpc-unknown-openbsd*)
         HostVendor_CPP='unknown'
         HostOS_CPP='openbsd'
         ;;
+powerpc64-unknown-linux*)
+       HostPlatform=powerpc64-unknown-linux
+       TargetPlatform=powerpc64-unknown-linux
+       BuildPlatform=powerpc64-unknown-linux
+       HostPlatform_CPP='powerpc64_unknown_linux'
+       HostArch_CPP='powerpc64'
+        HostVendor_CPP='unknown'
+       HostOS_CPP='linux'
+       ;;
+                                                               
 s390-ibm-linux*)
        HostPlatform=s390-ibm-linux
        TargetPlatform=s390-ibm-linux #hack
@@ -557,6 +585,14 @@ AC_SUBST(hardtop_plat)
 
 AC_MSG_RESULT(${hardtop})
 
+# We don't support building in directories with spaces.
+case "$hardtop" in
+  *' '*) AC_MSG_ERROR([
+   The build system does not support building in a directory containing
+   space characters.  Suggestion: move the build tree somewhere else.])
+ ;;
+esac
+
 dnl --------------------------------------------------------------
 dnl * Project specific configuration options
 dnl --------------------------------------------------------------
@@ -568,17 +604,15 @@ dnl use either is considered a Feature.
 dnl ** What command to use to compile compiler sources ?
 dnl --------------------------------------------------------------
 
-AC_ARG_WITH(ghc,
+AC_ARG_WITH([ghc],
 [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)
+  [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)
+  WithGhc="$GHC"])
+AC_SUBST([WithGhc])
 
 AC_ARG_WITH(hc,
 [AC_HELP_STRING([--with-hc=ARG],
@@ -614,7 +648,9 @@ AC_ARG_WITH(gcc,
          withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
        fi
  fi;
- CC="$withval"],
+ CC="$withval"
+ export CC
+ ],
 [WhatGccIsCalled="gcc"]
 )
 AC_SUBST(WhatGccIsCalled)
@@ -726,21 +762,6 @@ AC_ARG_ENABLE(objectio,
 )
 AC_SUBST(GhcLibsWithObjectIO)
 
-dnl ** Enable the building of the OpenAL binding?
-dnl --------------------------------------------------------------
-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,
@@ -809,9 +830,8 @@ dnl ** look for GCC and find out which version
 dnl     Figure out which C compiler to use.  Gcc is preferred.
 dnl     If gcc, make sure it's at least 2.1
 dnl
-AC_PROG_CC
-FPTOOLS_HAVE_GCC
-FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR
+FP_HAVE_GCC
+FP_MINGW_GCC
 
 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
 AC_PROG_CPP
@@ -831,6 +851,9 @@ FP_PROG_CONTEXT_DIFF
 dnl ** Find find command (for Win32's benefit)
 FP_PROG_FIND
 
+dnl ** Find sort command (for the benefit of Win32 environs)
+FP_PROG_SORT
+
 dnl ** figure out how to do a BSD-ish install
 AC_PROG_INSTALL
 
@@ -858,15 +881,12 @@ AC_PATH_PROGS(TarCmd,gtar tar,tar)
 
 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_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 /usr/local/share/xsl/docbook /sw/share/xml/xsl/docbook-xsl])
 FP_PROG_FO_PROCESSOR
 
 dnl ** check for ghc-pkg command
 FP_PROG_GHC_PKG
 
-dnl Check whether this GHC has readline installed
-FPTOOLS_GHC_HAS_READLINE
-
 AC_ARG_WITH(greencard,
 [AC_HELP_STRING([--with-greencard=ARG],
         [Use ARG as the path to greencard  [default=autodetct]])],
@@ -945,8 +965,6 @@ AC_SYS_LARGEFILE
 dnl ** check for specific header (.h) files that we are interested in
 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([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])
 
@@ -959,41 +977,9 @@ else
 fi
 AC_SUBST(GhcLibsWithReadline)
 
-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])
-
-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 x"$use_quartz_opengl" = xyes; then
-  AC_CHECK_HEADERS([OpenGL/gl.h])
-else
-  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 ** check for POSIX regex
-HavePosixRegex=NO
-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 ?
 AC_STRUCT_TIMEZONE
 
@@ -1041,66 +1027,6 @@ fi
 FP_CHECK_ALIGNMENT(unsigned short)
 FP_CHECK_ALIGNMENT(void *)
 
-dnl ** map standard C types and ISO types to Haskell types
-FPTOOLS_CHECK_HTYPE(char)
-FPTOOLS_CHECK_HTYPE(signed char)
-FPTOOLS_CHECK_HTYPE(unsigned char)
-FPTOOLS_CHECK_HTYPE(short)
-FPTOOLS_CHECK_HTYPE(unsigned short)
-FPTOOLS_CHECK_HTYPE(int)
-FPTOOLS_CHECK_HTYPE(unsigned int)
-FPTOOLS_CHECK_HTYPE(long)
-FPTOOLS_CHECK_HTYPE(unsigned long)
-if test "$ac_cv_type_long_long" = yes; then
-FPTOOLS_CHECK_HTYPE(long long)
-FPTOOLS_CHECK_HTYPE(unsigned long long)
-fi
-FPTOOLS_CHECK_HTYPE(float)
-FPTOOLS_CHECK_HTYPE(double)
-FPTOOLS_CHECK_HTYPE(ptrdiff_t)
-FPTOOLS_CHECK_HTYPE(size_t)
-FPTOOLS_CHECK_HTYPE(wchar_t)
-dnl Int32 is a HACK for non-ISO C compilers
-FPTOOLS_CHECK_HTYPE(sig_atomic_t, Int32)
-FPTOOLS_CHECK_HTYPE(clock_t)
-FPTOOLS_CHECK_HTYPE(time_t)
-FPTOOLS_CHECK_HTYPE(dev_t, Word32)
-FPTOOLS_CHECK_HTYPE(ino_t)
-FPTOOLS_CHECK_HTYPE(mode_t)
-FPTOOLS_CHECK_HTYPE(off_t)
-FPTOOLS_CHECK_HTYPE(pid_t)
-FPTOOLS_CHECK_HTYPE(gid_t)
-FPTOOLS_CHECK_HTYPE(uid_t)
-FPTOOLS_CHECK_HTYPE(cc_t)
-FPTOOLS_CHECK_HTYPE(speed_t)
-FPTOOLS_CHECK_HTYPE(tcflag_t)
-FPTOOLS_CHECK_HTYPE(blkcnt_t)
-FPTOOLS_CHECK_HTYPE(nlink_t)
-FPTOOLS_CHECK_HTYPE(ssize_t)
-FPTOOLS_CHECK_HTYPE(rlim_t)
-FPTOOLS_CHECK_HTYPE(wint_t)
-
-dnl ** Map OpenGL data types to Haskell types
-if test $GhcLibsWithOpenGL = YES ; then
-FPTOOLS_CHECK_HTYPE(GLboolean)
-FPTOOLS_CHECK_HTYPE(GLbyte)
-FPTOOLS_CHECK_HTYPE(GLubyte)
-FPTOOLS_CHECK_HTYPE(GLshort)
-FPTOOLS_CHECK_HTYPE(GLushort)
-FPTOOLS_CHECK_HTYPE(GLint)
-FPTOOLS_CHECK_HTYPE(GLuint)
-FPTOOLS_CHECK_HTYPE(GLsizei)
-FPTOOLS_CHECK_HTYPE(GLenum)
-FPTOOLS_CHECK_HTYPE(GLbitfield)
-FPTOOLS_CHECK_HTYPE(GLfloat)
-FPTOOLS_CHECK_HTYPE(GLclampf)
-FPTOOLS_CHECK_HTYPE(GLdouble)
-FPTOOLS_CHECK_HTYPE(GLclampd)
-fi
-
-dnl ** can we open files in binary mode?
-FP_CHECK_CONST([O_BINARY], [#include <fcntl.h>], [0])
-
 FP_CHECK_FUNC([WinExec],
   [@%:@include <windows.h>], [WinExec("",0)])
 
@@ -1132,15 +1058,10 @@ if test "$ac_cv_type_signal" = void; then
 fi
 
 dnl ** check for more functions
-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
-  *-solaris2*)
-    unix_SRC_HSC2HS_OPTS="-D_POSIX_PTHREAD_SEMANTICS"
-    AC_SUBST(unix_SRC_HSC2HS_OPTS)
-  ;;
-esac
+dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
+AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times])
+dnl ** For ghc/rts/gmp:
+AC_CHECK_FUNCS([getpagesize])
 
 dnl ** check whether this machine has gmp3 installed
 AC_CHECK_LIB(gmp,  __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
@@ -1149,20 +1070,20 @@ AC_CHECK_LIB(gmp,  __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
 AC_SUBST(HaveLibGmp)
 AC_SUBST(LibGmp)
 
-dnl ** (Mac OS X only: check for HaskellSupport.framework)
-HaveFrameworkHaskellSupport=NO
+dnl ** (Mac OS X only: check for GMP.framework)
+HaveFrameworkGMP=NO
 if test $HostPlatform = "powerpc-apple-darwin"; then
- AC_MSG_CHECKING([for HaskellSupport.framework])
+ AC_MSG_CHECKING([for GMP.framework])
  save_libs="$LIBS"
- LIBS="-framework HaskellSupport"
- AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkHaskellSupport=YES,)
- if test $HaveFrameworkHaskellSupport = YES; then
-  AC_DEFINE([HAVE_FRAMEWORK_HASKELLSUPPORT], [1], [Define to 1 if the HaskellSupport.framework is installed (Mac OS X only).])
+ LIBS="-framework GMP"
+ AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
+ if test $HaveFrameworkGMP = YES; then
+  AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
  fi;
  LIBS="$save_libs"
- AC_MSG_RESULT([$HaveFrameworkHaskellSupport])
+ AC_MSG_RESULT([$HaveFrameworkGMP])
 fi;
-AC_SUBST(HaveFrameworkHaskellSupport)
+AC_SUBST(HaveFrameworkGMP)
 
 dnl ** check for mingwex library
 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
@@ -1183,11 +1104,6 @@ dnl    the order of these tests matters: bfd needs liberty
 AC_CHECK_LIB(iberty, xmalloc)
 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)])
-
 dnl ** check for readline, for Hugs and hslibs' Readline
 dnl ncurses supersedes termcap and curses, but for compatibility,
 dnl we have to check for all...
@@ -1223,153 +1139,24 @@ else
 fi
 
 dnl ** check for math library
-AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"], [LIBM=])
-AC_SUBST([LIBM])
-
-dnl ** check for X Window System
-AC_PATH_XTRA()
-
-if test "$no_x" = yes; then
-  GhcLibsWithX11=NO
-else
-  GhcLibsWithX11=YES
+AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
+if test x"$fp_libm_not_needed" = xdunno; then
+   AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
 fi
-AC_SUBST([GhcLibsWithX11])
+AC_SUBST([LIBM])
 
 dnl ################################################################
 dnl Check for libraries
 dnl ################################################################
 
-dnl ** check for libdl & RTLD_NEXT
-
-dnl (Mac OS X only) ... but don't check if we already have the
-dnl HaskellSupport.framework
-
-if test $HaveFrameworkHaskellSupport = YES; then
-    HaveLibDL=NO
-    HaveRtldNext=NO
-    HaveRtldLocal=YES
-    AC_DEFINE([HAVE_RTLDLOCAL], [1], [Define to 1 if RTLD_LOCAL is available.])
-    HaveRtldGlobal=YES
-    AC_DEFINE([HAVE_RTLDGLOBAL], [1], [Define to 1 if RTLD_GLOBAL is available.])
-    HaveRtldNow=YES
-    AC_DEFINE([HAVE_RTLDNOW], [1], [Define to 1 if we can see RTLD_NOW in dlfcn.h.])
-    AC_SUBST(HaveLibDL)
-    AC_SUBST(HaveRtldNext)
-    AC_SUBST(HaveRtldLocal)
-    AC_SUBST(HaveRtldGlobal)
-    AC_SUBST(HaveRtldNow)
-else
-    AC_CHECK_LIB(dl, dlopen, 
-       [HaveLibDL=YES
-        AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
-        LIBS="$LIBS -ldl"], 
-       [HaveLibDL=NO])
-    AC_SUBST(HaveLibDL)
-
-    dnl ** sometimes RTLD_NEXT is hidden in #ifdefs we really don't wan to set
-    AC_MSG_CHECKING(for RTLD_NEXT from dlfcn.h)
-    AC_EGREP_CPP(yes,
-    [
-     #include <dlfcn.h>
-     #ifdef RTLD_NEXT
-            yes
-     #endif
-    ], [
-      AC_MSG_RESULT(yes)
-      AC_DEFINE([HAVE_RTLDNEXT], [1], [Define to 1 if we can see RTLD_NEXT in dlfcn.h.])
-      HaveRtldNext=YES
-    ], [
-      AC_MSG_RESULT(no)
-      HaveRtldNext=NO
-      ])    
-    AC_SUBST(HaveRtldNext)
-
-    dnl ** RTLD_LOCAL isn't available on cygwin or openbsd
-    AC_MSG_CHECKING(for RTLD_LOCAL from dlfcn.h)
-    AC_EGREP_CPP(yes,
-    [
-     #include <dlfcn.h>
-     #ifdef RTLD_LOCAL
-            yes
-     #endif
-    ], [
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_RTLDLOCAL)
-      HaveRtldLocal=YES
-    ], [
-      AC_MSG_RESULT(no)
-      HaveRtldLocal=NO
-      ])    
-    AC_SUBST(HaveRtldLocal)
-
-    dnl ** RTLD_GLOBAL isn't available on openbsd
-    AC_MSG_CHECKING(for RTLD_GLOBAL from dlfcn.h)
-    AC_EGREP_CPP(yes,
-    [
-     #include <dlfcn.h>
-     #ifdef RTLD_GLOBAL
-            yes
-     #endif
-    ], [
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_RTLDGLOBAL)
-      HaveRtldGlobal=YES
-    ], [
-      AC_MSG_RESULT(no)
-      HaveRtldGlobal=NO
-      ])    
-    AC_SUBST(HaveRtldGlobal)
-
-    dnl ** RTLD_NOW isn't available on openbsd
-    AC_MSG_CHECKING(for RTLD_NOW from dlfcn.h)
-    AC_EGREP_CPP(yes,
-    [
-     #include <dlfcn.h>
-     #ifdef RTLD_NOW
-            yes
-     #endif
-    ], [
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_RTLDNOW)
-      HaveRtldNow=YES
-    ], [
-      AC_MSG_RESULT(no)
-      HaveRtldNow=NO
-      ])    
-    AC_SUBST(HaveRtldNow)
-fi
-
-dnl ---------- usleep ----------
-dnl --- stolen from guile configure ---
-dnl --- FIXME: /usr/include/unistd.h can't be right?
-
-### On some systems usleep has no return value.  If it does have one,
-### we'd like to return it; otherwise, we'll fake it.
-AC_CACHE_CHECK([return type of usleep], cv_func_usleep_return_type,
-  [AC_EGREP_HEADER(changequote(<, >)<void[      ]+usleep>changequote([, ]),
-                   /usr/include/unistd.h,
-                   [cv_func_usleep_return_type=void],
-                   [cv_func_usleep_return_type=int])])
-case "$cv_func_usleep_return_type" in
-  "void" )
-    AC_DEFINE([USLEEP_RETURNS_VOID], [1], [Define if the system headers declare usleep to return void.])
-  ;;
-esac
+dnl ** check whether we need -ldl to get dlopen()
 
-dnl --------------------------------------------------
-dnl * test for GTK+
-dnl --------------------------------------------------
-
-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
-AC_SUBST([GTK_CONFIG])
+AC_CHECK_LIB(dl, dlopen, 
+    [HaveLibDL=YES
+     AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
+     LIBS="$LIBS -ldl"], 
+    [HaveLibDL=NO])
+AC_SUBST(HaveLibDL)
 
 dnl --------------------------------------------------
 dnl * Miscellaneous feature tests
@@ -1390,24 +1177,45 @@ AC_C_BIGENDIAN
 dnl ** check for leading underscores in symbol names
 FP_LEADING_UNDERSCORE
 
-dnl ** check for ld, and whether ld has -x option
-AC_PATH_PROG(LdCmdRaw, ld)
-case $HostOS_CPP in
- mingw32) 
-        if test "${OSTYPE}" == "msys"
-          then
-             LdCmd=${LdCmdRaw}
-          else
-             LdCmd=`cygpath -w ${LdCmdRaw} | sed -e 's@\\\\@/@g' `
-       fi
-          ;;
- *) LdCmd=${LdCmdRaw}
-    ;;
-esac
-AC_SUBST(LdCmd)
-FPTOOLS_LD_X
+dnl ** check for ld, whether it has an -x option, and if it is GNU ld
+FP_PROG_LD_X
+FP_PROG_LD_IS_GNU
+
+dnl ** check for Apple-style dead-stripping support
+dnl    (.subsections-via-symbols assembler directive)
+
+
+AC_MSG_CHECKING(for .subsections_via_symbols)
+AC_TRY_COMPILE(,[__asm__ (".subsections_via_symbols");],
+    [
+        AC_MSG_RESULT(yes)
+        AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
+            [Define to 1 if Apple-style dead-stripping is supported.])
+    ],
+    [
+        AC_MSG_RESULT(no)
+        AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[0],
+            [Define to 1 if Apple-style dead-stripping is supported.])
+    ])
+
+dnl ** check for librt
+AC_CHECK_LIB(rt, clock_gettime)
+AC_CHECK_FUNCS(clock_gettime)
+
+dnl ** check for Apple's "interesting" long double compatibility scheme
+AC_MSG_CHECKING(for printf$LDBLStub)
+AC_TRY_LINK_FUNC(printf$LSBLStub,
+    [
+        AC_MSG_RESULT(yes)
+        AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
+            [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
+    ],
+    [
+        AC_MSG_RESULT(no)
+        AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
+            [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
+    ])
 
-FP_EMPTY_STRUCTS
 
 AC_CONFIG_FILES([mk/config.mk])
 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])