[project @ 2002-12-05 23:49:43 by mthomas]
[ghc-hetmet.git] / configure.in
index 9b4914b..32f7b26 100644 (file)
@@ -512,7 +512,7 @@ dnl --------------------------------------------------------------
 AC_ARG_ENABLE(hopengl,
 [  --enable-hopengl
         Build HOpenGL, a Haskell binding for OpenGL/GLUT, too.
-        (This option is only relevant when hslibs are built.)
+        (NOTE: Work in progress, currently only GLUT is supported!)
 ],
 [GhcLibsWithHOpenGL=YES],
 [GhcLibsWithHOpenGL=NO]
@@ -712,6 +712,7 @@ AC_HEADER_STDC
 
 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 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 vfork.h bfd.h winsock.h pthread.h sys/uio.h)
+AC_CHECK_HEADER(unistd.h,AC_CHECK_FUNC(lchown))
 
 AC_CHECK_HEADER(readline/readline.h, HaveReadlineReadlineH=YES, HaveReadlineReadlineH=NO)
 AC_CHECK_HEADER(readline/history.h, HaveReadlineHistoryH=YES, HaveReadlineHistoryH=NO)
@@ -843,6 +844,7 @@ 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)
 
@@ -864,6 +866,8 @@ FPTOOLS_CHECK_HTYPE(GLdouble)
 FPTOOLS_CHECK_HTYPE(GLclampd)
 fi
 
+FPTOOLS_CHECK_CCONSTS(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)
+
 dnl ** can we open files in binary mode?
 FPTOOLS_O_BINARY
 
@@ -949,6 +953,21 @@ 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
+if test $HostPlatform = "powerpc-apple-darwin"; then
+ AC_MSG_CHECKING([for HaskellSupport.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)
+ fi;
+ LIBS="$save_libs"
+ AC_MSG_RESULT([$HaveFrameworkHaskellSupport])
+fi;
+AC_SUBST(HaveFrameworkHaskellSupport)
+
 dnl ** check for mingwex library
 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
 AC_SUBST(HaveLibMingwEx)
@@ -1023,88 +1042,133 @@ dnl ################################################################
 
 dnl ** check for libdl & RTLD_NEXT
 
-AC_CHECK_LIB(dl, dlopen, 
-       [HaveLibDL=YES
-        AC_DEFINE(HAVE_LIBDL)
-        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
-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)
-  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)
+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)
+    HaveRtldGlobal=YES
+    AC_DEFINE(HAVE_RTLDGLOBAL)
+    HaveRtldNow=YES
+    AC_DEFINE(HAVE_RTLDNOW)
+    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)
+        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
+    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)
+      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
 
 FPTOOLS_CHECK_LIB_NOWARN(m, atan)
 
+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 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) AC_MSG_RESULT(yes) ],
+ AC_MSG_RESULT(no))
+
 dnl --------------------------------------------------
 dnl * test for GTK+
 dnl --------------------------------------------------
@@ -1173,4 +1237,12 @@ esac
 AC_SUBST(LdCmd)
 FPTOOLS_LD_X
 
+AC_MSG_CHECKING([for SIGPOLL])
+AC_EGREP_CPP(we_have_sigpoll,
+[#include <signal.h>
+#ifdef SIGPOLL
+we_have_sigpoll
+#endif
+], AC_DEFINE(HAVE_SIGPOLL) haveSIGPOLL=yes, haveSIGPOLL=no)
+AC_MSG_RESULT([$haveSIGPOLL])
 AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )