[project @ 2000-12-16 06:55:58 by chak]
[ghc-hetmet.git] / configure.in
index a58eda2..ec178cf 100644 (file)
@@ -20,6 +20,7 @@ dnl * Declare subdirectories that have a private configure script
 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
 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)
 
 # -------------------------------------------------------------------------
 AC_CONFIG_SUBDIRS(ghc)
 
 # -------------------------------------------------------------------------
@@ -164,6 +165,15 @@ i[[3456]]86-*-netbsd*)
         HostVendor_CPP='unknown'
         HostOS_CPP='netbsd'
         ;;
         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
 i[[3456]]86-*-solaris2*)
        HostPlatform=i386-unknown-solaris2 # hack again
        TargetPlatform=i386-unknown-solaris2
@@ -173,7 +183,7 @@ i[[3456]]86-*-solaris2*)
         HostVendor_CPP='unknown'
         HostOS_CPP='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
        HostPlatform=i386-unknown-cygwin32 # hack again
        TargetPlatform=i386-unknown-cygwin32
        BuildPlatform=i386-unknown-cygwin32
@@ -322,10 +332,6 @@ dnl AC_SUBST(TargetVendor_CPP)
 
 AC_SUBST(exeext)
 
 
 AC_SUBST(exeext)
 
-AC_PATH_PROG(GHC,ghc)
-AC_PATH_PROGS(NHC,nhc nhc98)
-AC_PATH_PROG(HBC,hbc)
-
 dnl --------------------------------------------------------------
 dnl * Project specific configuration options
 dnl --------------------------------------------------------------
 dnl --------------------------------------------------------------
 dnl * Project specific configuration options
 dnl --------------------------------------------------------------
@@ -336,17 +342,40 @@ dnl use either is considered a Feature.
 
 dnl ** What command to use to compile compiler sources ?
 dnl --------------------------------------------------------------
 
 dnl ** What command to use to compile compiler sources ?
 dnl --------------------------------------------------------------
+if test "$GHC" = ""; then
+  AC_PATH_PROG(GHC,ghc)
+fi
+
 AC_ARG_WITH(hc,
 [  --with-hc=<haskell compiler>
 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]
 )
 AC_SUBST(WithHc)
 
 ],
 [WithHc="$withval"],
 [WithHc=$GHC]
 )
 AC_SUBST(WithHc)
 
+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)
+
+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,
 dnl ** Which gcc to use?
 dnl --------------------------------------------------------------
 AC_ARG_WITH(gcc,
@@ -395,6 +424,36 @@ if test x"$EnableWin32DLLs" = "xYES" ; then
  AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
 fi
 
  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 --------------------------------------------------------------
 dnl End of configure script option section
 dnl --------------------------------------------------------------
@@ -491,7 +550,7 @@ AC_PATH_PROGS(CompressCmd,gzip compress,gzip)
 dnl ** check for jade/openjade & determine a working catalog
 AC_PATH_PROGS(JadeCmd,openjade jade,jade)
 FPTOOLS_DOCBOOK_CATALOG(Catalog, $JadeCmd, docs/fptools-both.dsl, 
 dnl ** check for jade/openjade & determine a working catalog
 AC_PATH_PROGS(JadeCmd,openjade jade,jade)
 FPTOOLS_DOCBOOK_CATALOG(Catalog, $JadeCmd, docs/fptools-both.dsl, 
-                        glafp-utils/docbook/CATALOG*)
+                        /etc/sgml.catalog /usr/share/sgml/CATALOG.docbkdsl $hardtop/glafp-utils/docbook/CATALOG*)
 if test -z "$Catalog"; then
   AC_MSG_RESULT([Warning: You will not be able to build the documentation.])
 fi
 if test -z "$Catalog"; then
   AC_MSG_RESULT([Warning: You will not be able to build the documentation.])
 fi
@@ -525,7 +584,7 @@ dnl ** check for full ANSI header (.h) files
 AC_HEADER_STDC
 
 dnl ** check for specific header (.h) files that we are interested in
 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)
 
 AC_CHECK_HEADER(readline/readline.h, HaveReadlineReadlineH=YES, HaveReadlineReadlineH=NO)
 AC_CHECK_HEADER(readline/history.h, HaveReadlineHistoryH=YES, HaveReadlineHistoryH=NO)
@@ -545,6 +604,9 @@ AC_CHECK_HEADERS(dos.h conio.h io.h std.h)
 dnl ** check for Windows include files
 AC_CHECK_HEADERS(windows.h)
 
 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
 
 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
 AC_HEADER_TIME
 
@@ -612,6 +674,48 @@ fi
 FPTOOLS_CHECK_ALIGNMENT(unsigned short)
 FPTOOLS_CHECK_ALIGNMENT(void *)
 
 FPTOOLS_CHECK_ALIGNMENT(unsigned short)
 FPTOOLS_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 "$fptools_cv_have_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)
+
+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
+
 dnl ** can we open files in binary mode?
 FPTOOLS_O_BINARY
 
 dnl ** can we open files in binary mode?
 FPTOOLS_O_BINARY
 
@@ -690,13 +794,16 @@ AC_CHECK_FUNCS(pclose    _pclose )
 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 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)
 
     HaveLibGmp=No; LibGmp=not-installed))
 AC_SUBST(HaveLibGmp)
 AC_SUBST(LibGmp)
 
+dnl ** check whether this machine has GNU regex in libc.
+FPTOOLS_REGEX_IN_LIBC
+
 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
 dnl    the order of these tests matters: bfd needs liberty
 AC_CHECK_LIB(iberty, xmalloc)
 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
 dnl    the order of these tests matters: bfd needs liberty
 AC_CHECK_LIB(iberty, xmalloc)
@@ -733,6 +840,30 @@ FPTOOLS_CHECK_LIB_NOWARN(dld, shl_load)
 FPTOOLS_CHECK_LIB_NOWARN(m, atan)
 
 dnl --------------------------------------------------
 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 --------------------------------------------------
 
 dnl * Miscellaneous feature tests
 dnl --------------------------------------------------