dnl
dnl After the toplevel configuration is complete, the script will recurse into
dnl these subdirectories (the use of cache values makes repeated checks cheap)
+dnl (We probably have to add hslibs/{OpenGL,GLUT} here later...)
AC_CONFIG_SUBDIRS(ghc)
# -------------------------------------------------------------------------
HostVendor_CPP='unknown'
HostOS_CPP='netbsd'
;;
+i[[3456]]86-*-openbsd*)
+ HostPlatform=i386-unknown-openbsd # hack again
+ TargetPlatform=i386-unknown-openbsd
+ BuildPlatform=i386-unknown-openbsd
+ HostPlatform_CPP='i386_unknown_openbsd'
+ HostArch_CPP='i386'
+ HostVendor_CPP='unknown'
+ HostOS_CPP='openbsd'
+ ;;
i[[3456]]86-*-solaris2*)
HostPlatform=i386-unknown-solaris2 # hack again
TargetPlatform=i386-unknown-solaris2
HostVendor_CPP='unknown'
HostOS_CPP='solaris2'
;;
-i[[3456]]86-*-cygwin32*)
+i[[3456]]86-*-cygwin*)
HostPlatform=i386-unknown-cygwin32 # hack again
TargetPlatform=i386-unknown-cygwin32
BuildPlatform=i386-unknown-cygwin32
HostVendor_CPP='ibm'
HostOS_CPP='aix'
;;
+powerpc-apple-macosx*)
+ HostPlatform=powerpc-apple-macosx
+ TargetPlatform=powerpc-apple-macosx #hack
+ BuildPlatform=powerpc-apple-macosx #hack
+ HostPlatform_CPP='powerpc_apple_macosx'
+ HostArch_CPP='powerpc'
+ HostVendor_CPP='apple'
+ HostOS_CPP='macosx'
+ ;;
sparc-sun-sunos4*)
HostPlatform=sparc-sun-sunos4
TargetPlatform=sparc-sun-sunos4 #hack
AC_SUBST(exeext)
-if test "$GHC" = ""; then
- AC_PATH_PROG(GHC,ghc)
-fi
-if test "$GHC" != ""; then
- FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
- AC_SUBST(GhcVersion)dnl
- AC_SUBST(GhcMajVersion)dnl
- AC_SUBST(GhcMinVersion)dnl
- AC_SUBST(GhcPatchLevel)dnl
-fi
-
-AC_PATH_PROGS(NHC,nhc nhc98)
-AC_PATH_PROG(HBC,hbc)
-
dnl --------------------------------------------------------------
dnl * Project specific configuration options
dnl --------------------------------------------------------------
dnl ** What command to use to compile compiler sources ?
dnl --------------------------------------------------------------
+if test "$GHC" = ""; then
+ AC_PATH_PROG(GHC,ghc)
+fi
+
+AC_ARG_WITH(ghc,
+[ --with-ghc=<haskell compiler>
+ Use a command different from 'ghc' to compile GHC-specific Haskell code
+ (including GHC itself).
+],
+[WithGhc="$withval"],
+[WithGhc=$GHC]
+)
+AC_SUBST(WithGhc)
+
AC_ARG_WITH(hc,
[ --with-hc=<haskell compiler>
- Use a command different from 'ghc' to compile up Haskell code.
- (no claims currently made that this will work with a compiler other than a
- recent version of GHC, but you could always try...)
+ Use a command different from 'ghc' to compile generic Haskell code.
],
[WithHc="$withval"],
-[WithHc=$GHC]
+[WithHc=$WithGhc]
)
AC_SUBST(WithHc)
+if test "$WithGhc" != ""; then
+ FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
+ AC_SUBST(GhcVersion)dnl
+ AC_SUBST(GhcMajVersion)dnl
+ AC_SUBST(GhcMinVersion)dnl
+ AC_SUBST(GhcPatchLevel)dnl
+fi
+
+AC_PATH_PROGS(NHC,nhc nhc98)
+AC_PATH_PROG(HBC,hbc)
+
dnl ** Which gcc to use?
dnl --------------------------------------------------------------
AC_ARG_WITH(gcc,
AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
fi
+dnl ** Enable the building of the OpenGL/GLUT binding in hslibs?
+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.)
+],
+[GhcLibsWithHOpenGL=YES],
+[GhcLibsWithHOpenGL=NO]
+)
+AC_SUBST(GhcLibsWithHOpenGL)
+
+dnl ** Use a specific version of the GLUT API
+dnl --------------------------------------------------------------
+AC_ARG_WITH(glut-api,
+[ --with-glut-api=<version>
+ Use a specific version of the GLUT API when building HOpenGL.
+])
+test -n "$with_glut_api" && CPPFLAGS="$CPPFLAGS -DGLUT_API_VERSION=$with_glut_api"
+
+
+dnl ** Use a specific version of the GLUT API
+dnl --------------------------------------------------------------
+AC_ARG_WITH(glut-xlib,
+[ --with-glut-xlib=<version>
+ Use a specific version of the GLUT Xlib implementation when building HOpenGL.
+])
+test -n "$with_glut_xlib" && CPPFLAGS="$CPPFLAGS -DGLUT_XLIB_IMPLEMENTATION=$with_glut_xlib"
+
+
dnl --------------------------------------------------------------
dnl End of configure script option section
dnl --------------------------------------------------------------
dnl ** figure out how to invoke cpp directly (gcc -E is no good)
AC_PROG_CPP
+case $HostOS_CPP in
+mingw32)
+ CPP="$CPP -mno-cygwin"
+ ;;
+esac
dnl ** figure out how to do context diffs
FPTOOLS_PROG_DIFF
dnl ** check for installed happy binary + version
dnl (don't do it if we're booting from .hc files though.)
-if (test "$BootingFromHc" = "NO"); then
+if test "$BootingFromHc" = "NO"; then
FPTOOLS_HAPPY
fi;
AC_HEADER_STDC
dnl ** check for specific header (.h) files that we are interested in
-AC_CHECK_HEADERS(Files.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdint.h stdlib.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 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/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)
+AC_CHECK_HEADERS(Files.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h inttypes.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdint.h stdlib.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 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/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)
AC_CHECK_HEADER(readline/readline.h, HaveReadlineReadlineH=YES, HaveReadlineReadlineH=NO)
AC_CHECK_HEADER(readline/history.h, HaveReadlineHistoryH=YES, HaveReadlineHistoryH=NO)
dnl ** check for Windows include files
AC_CHECK_HEADERS(windows.h)
+dnl ** check for OpenGL include files
+AC_CHECK_HEADERS(GL/gl.h)
+
dnl ** check if it is safe to include both <time.h> and <sys/time.h>
AC_HEADER_TIME
FPTOOLS_CHECK_HTYPE(clock_t)
FPTOOLS_CHECK_HTYPE(time_t)
+dnl ** Map OpenGL data types to Haskell types
+if test $GhcLibsWithHOpenGL = 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
+
+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
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 symlink sysconf timelocal times vadvise vfork)
-dnl ** check whether this machine has gmp2 installed
-AC_CHECK_LIB(gmp, mpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
- AC_CHECK_LIB(gmp2, mpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp2,
+dnl ** check whether this machine has gmp3 installed
+AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
+ AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
HaveLibGmp=No; LibGmp=not-installed))
AC_SUBST(HaveLibGmp)
AC_SUBST(LibGmp)
fi
AC_SUBST(LibsReadline)
+dnl ** check for math library
+FPTOOLS_CHECK_LIBM()
+AC_SUBST(LIBM)
+
dnl ################################################################
dnl Check for libraries
dnl ################################################################
-FPTOOLS_CHECK_LIB_NOWARN(dl, dlopen)
-FPTOOLS_CHECK_LIB_NOWARN(dld, shl_load)
+AC_CHECK_LIB(dl, dlopen,
+ [HaveLibDL=YES
+ AC_DEFINE(HAVE_LIBDL)
+ LIBS="$LIBS -ldl"],
+ [HaveLibDL=NO])
+AC_CHECK_FUNCS(dlopen)
+AC_SUBST(HaveLibDL)
+
FPTOOLS_CHECK_LIB_NOWARN(m, atan)
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=
+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)
+
+dnl --------------------------------------------------
dnl * Miscellaneous feature tests
dnl --------------------------------------------------
FPTOOLS_CODE_BEFORE_DATA
AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )
-
-echo ''
-echo '************************************************'
-echo '*** NOW DO: gmake boot followed by gmake all'
-echo '*** (where gmake == GNU make)'
-echo '************************************************'
-exit 0