[project @ 2004-12-16 10:36:57 by simonmar]
[ghc-hetmet.git] / configure.ac
index cf21e39..e2d7536 100644 (file)
@@ -3,23 +3,25 @@ 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!)
 #
 
+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
@@ -404,6 +406,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
@@ -566,17 +578,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],
@@ -612,7 +622,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)
@@ -724,21 +736,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,
@@ -807,9 +804,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
@@ -940,8 +936,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])
 
@@ -954,33 +948,6 @@ 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
 
@@ -995,9 +962,6 @@ 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])
 
@@ -1039,69 +1003,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
-
-FP_CHECK_CONSTS([E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EADV EAFNOSUPPORT EAGAIN EALREADY EBADF EBADMSG EBADRPC EBUSY ECHILD ECOMM ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDIRTY EDOM EDQUOT EEXIST EFAULT EFBIG EFTYPE EHOSTDOWN EHOSTUNREACH EIDRM EILSEQ EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENONET ENOPROTOOPT ENOSPC ENOSR ENOSTR ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT EPIPE EPROCLIM EPROCUNAVAIL EPROGMISMATCH EPROGUNAVAIL EPROTO EPROTONOSUPPORT EPROTOTYPE ERANGE EREMCHG EREMOTE EROFS ERPCMISMATCH ERREMOTE ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESRMNT ESTALE ETIME ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV], [#include <stdio.h>
-#include <errno.h>])
-
-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)])
 
@@ -1112,16 +1013,16 @@ 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
@@ -1133,15 +1034,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 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,
@@ -1184,11 +1080,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...
@@ -1227,16 +1118,6 @@ 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
-fi
-AC_SUBST([GhcLibsWithX11])
-
 dnl ################################################################
 dnl Check for libraries
 dnl ################################################################
@@ -1341,37 +1222,6 @@ else
     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 --------------------------------------------------
-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])
-
 dnl --------------------------------------------------
 dnl * Miscellaneous feature tests
 dnl --------------------------------------------------
@@ -1380,7 +1230,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
@@ -1408,15 +1258,6 @@ esac
 AC_SUBST(LdCmd)
 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_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