[project @ 2005-11-03 11:00:40 by simonmar]
[ghc-hetmet.git] / configure.ac
index 28debbc..9f99c20 100644 (file)
@@ -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
@@ -567,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 --------------------------------------------------------------
@@ -578,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],
@@ -624,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)
@@ -736,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,
@@ -819,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
@@ -841,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
 
@@ -868,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]])],
@@ -955,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])
 
@@ -969,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
 
@@ -1051,24 +1027,6 @@ fi
 FP_CHECK_ALIGNMENT(unsigned short)
 FP_CHECK_ALIGNMENT(void *)
 
-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
-
 FP_CHECK_FUNC([WinExec],
   [@%:@include <windows.h>], [WinExec("",0)])
 
@@ -1100,7 +1058,10 @@ if test "$ac_cv_type_signal" = void; then
 fi
 
 dnl ** check for more functions
-AC_CHECK_FUNCS([ftime getclock getpagesize getrusage gettimeofday gmtime_r localtime_r lstat readdir_r readlink setenv setitimer siginterrupt symlink sysconf times unsetenv])
+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,
@@ -1109,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)
@@ -1178,136 +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 --------------------------------------------------
-dnl * test for GTK+
-dnl --------------------------------------------------
+dnl ** check whether we need -ldl to get dlopen()
 
-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
@@ -1328,22 +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).])
+    ])
+
 
 AC_CONFIG_FILES([mk/config.mk])
 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])