[project @ 2003-07-24 15:12:35 by simonmar]
[ghc-hetmet.git] / configure.in
index ccaa828..e19c938 100644 (file)
@@ -16,6 +16,9 @@ dnl
 # First off, a distrib sanity check..
 AC_INIT(mk/config.mk.in)
 
+dnl * We require autoconf version 2.53 due to the use of AC_SYS_LARGEFILE
+AC_PREREQ(2.52)
+
 dnl * Declare subdirectories that have a private configure script
 dnl
 dnl After the toplevel configuration is complete, the script will recurse into
@@ -35,17 +38,6 @@ if test x"$srcdir" != 'x.' ; then
     exit 1
 fi
 
-#
-# Remove common automounter nonsense + convert from UNC to DOS style paths
-# (UNC awareness isn't quite there yet for cygwin32-beta18 and consituent tools.)
-#
-hardtop=`pwd`
-hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^/grasp_tmp|/local/grasp_tmp|' | sed 's|^//\(.\)/|\1:/|' `
-
-echo ''
-echo "*** The top of your build tree is: $hardtop"
-# subst of hardtop is done below after we've computed hardtop_plat.
-
 dnl--------------------------------------------------------------------
 dnl * Choose host(/target/build) platform
 dnl--------------------------------------------------------------------
@@ -93,7 +85,7 @@ alpha*-dec-osf[[345]]*)
         HostVendor_CPP='dec'
         HostOS_CPP='osf3'
         ;;
-alpha*-unknown-linux)
+alpha*-unknown-linux*)
        HostPlatform=alpha-unknown-linux
        TargetPlatform=alpha-unknown-linux
        BuildPlatform=alpha-unknown-linux
@@ -363,14 +355,26 @@ dnl AC_SUBST(TargetVendor_CPP)
 
 AC_SUBST(exeext)
 
-#
-# The native format for 'hardtop' (i.e., right kind of slashes on a Win32 box).
-# (but with b-slashes being escaped).
+dnl --------------------------------------------------------------
+dnl * Calculate absolute path to build tree
+dnl --------------------------------------------------------------
+
+AC_MSG_CHECKING(for path to top of build tree)
+
+hardtop=`pwd`
+
+dnl Remove common automounter nonsense
+dnl
+hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
+
+dnl Find 'hardtop_plat', the native format for 'hardtop' (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes being escaped).
+dnl
 case $HostPlatform in
   i386-unknown-mingw32 | i386-unknown-cygwin32)
-       # get rid off /cygdrive/ prefix
-       hardtop=`echo ${hardtop} | sed -e 's%^/cygdrive/\(.\)/%\1:/%' `
-       hardtop_plat=`cygpath -w ${hardtop} | sed -e 's@\\\\@\\\\\\\\@g' `
+       # convert $hardtop to a path that mingw will understand too
+       cyghardtop=${hardtop}
+       hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
+       hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
        ;;
   *)
        hardtop_plat=${hardtop}
@@ -379,6 +383,8 @@ esac
 AC_SUBST(hardtop)
 AC_SUBST(hardtop_plat)
 
+AC_MSG_RESULT(${hardtop})
+
 dnl --------------------------------------------------------------
 dnl * Project specific configuration options
 dnl --------------------------------------------------------------
@@ -432,6 +438,10 @@ AC_ARG_WITH(gcc,
         Use a different command instead of 'gcc' for the GNU C compiler.
 ],
 [WhatGccIsCalled="$withval"
+ if test "x$HostPlatform" = "xi386-unknown-mingw32"; then
+    # Canonicalise to <drive>:/path/to/gcc
+    withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
+ fi;
  CC="$withval"],
 [WhatGccIsCalled="gcc"]
 )
@@ -513,7 +523,6 @@ dnl --------------------------------------------------------------
 AC_ARG_ENABLE(objectio,
 [  --enable-objectio
         Build ObjectIO, a portable GUI library for Haskell.
-        (This option is only relevant when libraries are built.)
 ],
 [GhcLibsWithObjectIO=YES],
 [GhcLibsWithObjectIO=NO]
@@ -524,14 +533,24 @@ 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.
-        (NOTE: Work in progress, currently only GLUT is supported!)
+        Build HOpenGL, a Haskell binding for OpenGL/GLUT.
 ],
 [GhcLibsWithHOpenGL=YES],
 [GhcLibsWithHOpenGL=NO]
 )
 AC_SUBST(GhcLibsWithHOpenGL)
 
+dnl ** .NET interop support?
+dnl --------------------------------------------------------------
+AC_ARG_ENABLE(dotnet,
+[  --enable-dotnet
+        Build .NET interop layer.
+],
+[DotnetSupport=YES; AC_DEFINE(WANT_DOTNET_SUPPORT)],
+[DotnetSupport=NO]
+)
+AC_SUBST(DotnetSupport)
+
 dnl --------------------------------------------------------------
 dnl End of configure script option section
 dnl --------------------------------------------------------------
@@ -670,6 +689,27 @@ fi
 AC_SUBST(CompressCmd)
 AC_SUBST(CompressSuffix)
 
+dnl ** check for ghc-pkg command
+changequote(, )dnl
+ghc_pkg_guess=`echo $WithGhc | sed 's@ghc\([^/\\]*\)$@ghc-pkg\1@'`
+changequote([, ])dnl
+if $ghc_pkg_guess -l >/dev/null 2>/dev/null; then
+   GhcPkgCmd=$ghc_pkg_guess
+   AC_MSG_NOTICE([using $ghc_pkg_guess for ghc-pkg])
+else
+   AC_PATH_PROG(GhcPkgCmd,ghc-pkg)
+fi
+
+AC_ARG_WITH(greencard,
+[  --with-greencard=<greencard compiler>
+        Use a command different from 'green-card' to compile GreenCard files
+],
+[
+GreencardCmd=$withval;
+FPTOOLS_GREENCARD(3.00)
+]
+)
+
 AC_ARG_ENABLE(src-tree-happy,
 [  --enable-src-tree-happy
         Build and use source tree (fptools/happy) version of happy.
@@ -704,8 +744,12 @@ dnl ### checking the state of the local header files and syscalls ###
 dnl ** check for full ANSI header (.h) files
 AC_HEADER_STDC
 
+dnl ** Enable large file support.  NB. do this before testing the type of
+dnl    off_t, because it will affect the result of that test.
+AC_SYS_LARGEFILE
+
 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_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 bfd.h winsock.h pthread.h sys/uio.h)
 AC_CHECK_HEADER(unistd.h,[AC_CHECK_FUNCS(lchown)])
 
 AC_CHECK_HEADER(readline/readline.h, [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
@@ -936,10 +980,19 @@ AC_CHECK_FUNCS(vsnprintf _vsnprintf)
 AC_CHECK_FUNCS(snprintf  _snprintf )  
 AC_CHECK_FUNCS(popen     _popen )  
 AC_CHECK_FUNCS(pclose    _pclose )  
+AC_CHECK_FUNCS(setenv unsetenv)
 
 
 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 lstat symlink sysconf timelocal times vadvise vfork localtime_r gmtime_r readdir_r getgrgid_r getgrnam_r getpwuid_r getpwnam_r)
+AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect readlink setitimer stat lstat symlink sysconf timelocal times vadvise localtime_r gmtime_r readdir_r getgrgid_r getgrnam_r getpwuid_r getpwnam_r)
+
+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 ** check whether this machine has gmp3 installed
 AC_CHECK_LIB(gmp,  __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
@@ -1023,11 +1076,8 @@ dnl ** check for math library
 FPTOOLS_CHECK_LIBM()
 AC_SUBST(LIBM)
 
-case $HostOS_CPP in
-cygwin32) ;;
-mingw32)  ;;
-*) AC_PATH_XTRA() ;;
-esac
+dnl ** check for X Window System
+AC_PATH_XTRA()
 
 dnl ** check for OpenGL/GLUT/GLX include paths and libraries
 if test $GhcLibsWithHOpenGL = YES ; then
@@ -1214,6 +1264,9 @@ dnl --------------------------------------------------
 dnl ** can we get alloca?
 AC_FUNC_ALLOCA
 
+dnl ** Working vfork?
+AC_FUNC_VFORK
+
 dnl ** determine whether or not const works
 AC_C_CONST
 
@@ -1222,11 +1275,6 @@ AC_C_PROTOTYPES
 
 dnl ** are we big endian?
 AC_C_BIGENDIAN
-# Allay users' general fear of warnings of any kind.
-errprint(fptools configure script wizard sez: autoconf-2.50 or later should produce no warnings
-)
-errprint(if you are using 2.13 or earlier, you may get a (harmless) warning message.
-)
 
 dnl ** check for leading underscores in symbol names
 FPTOOLS_UNDERSCORE
@@ -1251,22 +1299,28 @@ we_have_sigpoll
 ], AC_DEFINE(HAVE_SIGPOLL) haveSIGPOLL=yes, haveSIGPOLL=no)
 AC_MSG_RESULT([$haveSIGPOLL])
 
-AC_MSG_CHECKING(for _SC_GETGR_R_SIZE_MAX)
+AC_MSG_CHECKING([for _SC_GETGR_R_SIZE_MAX])
 AC_EGREP_CPP(we_have_that_sysconf_thing,
 [
 #include <unistd.h>
 #ifdef _SC_GETGR_R_SIZE_MAX
 we_have_that_sysconf_thing
 #endif
-], AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SC_GETGR_R_SIZE_MAX), AC_MSG_RESULT(no))    
+],
+[AC_MSG_RESULT([yes])
+AC_DEFINE(HAVE_SC_GETGR_R_SIZE_MAX)],
+[AC_MSG_RESULT([no])])
 
-AC_MSG_CHECKING(for _SC_GETPW_R_SIZE_MAX)
+AC_MSG_CHECKING([for _SC_GETPW_R_SIZE_MAX])
 AC_EGREP_CPP(we_have_that_sysconf_thing,
 [
 #include <unistd.h>
 #ifdef _SC_GETPW_R_SIZE_MAX
 we_have_that_sysconf_thing
 #endif
-], AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SC_GETPW_R_SIZE_MAX), AC_MSG_RESULT(no))    
+],
+[AC_MSG_RESULT([yes])
+AC_DEFINE(HAVE_SC_GETPW_R_SIZE_MAX)],
+[AC_MSG_RESULT([no])])
 
 AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )