X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=configure.in;h=c661c4ad7480b418a4253109b101a2c1cde46c7e;hb=3786579bb1285a655ad0cbdf28ec443a2dfb7acc;hp=30c4d7eb5486e5298602ad2d43dc4df663fe1a21;hpb=caadd032dbf43449fbe48ce3fe144dd12e2d3560;p=ghc-hetmet.git diff --git a/configure.in b/configure.in index 30c4d7e..c661c4a 100644 --- a/configure.in +++ b/configure.in @@ -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 :/path/to/gcc + withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' ` + fi; CC="$withval"], [WhatGccIsCalled="gcc"] ) @@ -486,34 +496,42 @@ AC_SUBST(ThreadedRts) dnl ** Enable the construction of Win32 DLLs? dnl -------------------------------------------------------------- -AC_ARG_ENABLE(win32-dlls, -[ --enable-win32-dlls - If on a Win32 platform running mingw32/cygwin, enable the - construction of DLLs containing ghc-compiled code. -], -[ -case $HostOS_CPP in -cygwin32) ;; -mingw32) ;; -*) echo "Unrecognised win32 platform: $HostPlatform" - exit 1 - ;; -esac -EnableWin32DLLs=YES -], -[EnableWin32DLLs=NO] -) -AC_SUBST(EnableWin32DLLs) -if test x"$EnableWin32DLLs" = "xYES" ; then - AC_DEFINE(HAVE_WIN32_DLL_SUPPORT) -fi +dnl +dnl [ The ability to build the RTS and libraries as separate DLLs used +dnl to be supported, but isn't currently (updates to the RTS, compiler +dnl and build system would be required to bring it back again.) +dnl Hence, exposing it as an option is false advertisement, so better +dnl disable it to avoid confusion (but leave it commented-out rather +dnl than removed in order to remind ourselves to bring back the +dnl feature at some stage.) ] +dnl +dnl AC_ARG_ENABLE(win32-dlls, +dnl [ --enable-win32-dlls +dnl If on a Win32 platform running mingw32/cygwin, enable the +dnl construction of DLLs containing ghc-compiled code. +dnl ], +dnl [ +dnl case $HostOS_CPP in +dnl cygwin32) ;; +dnl mingw32) ;; +dnl *) echo "Unrecognised win32 platform: $HostPlatform" +dnl exit 1 +dnl ;; +dnl esac +dnl EnableWin32DLLs=YES +dnl ], +dnl [EnableWin32DLLs=NO] +dnl ) +dnl AC_SUBST(EnableWin32DLLs) +dnl if test x"$EnableWin32DLLs" = "xYES" ; then +dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT) +dnl fi dnl ** Enable the building of the ObjectIO? 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 +542,34 @@ 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. + On Mac OS X, use --enable-hopengl=x11 to use X11 instead + of the "native" libraries. ], [GhcLibsWithHOpenGL=YES], [GhcLibsWithHOpenGL=NO] ) +UseQuartzOpenGL=NO +if test x"$TargetOS_CPP" = x"darwin"; then + if test x"$enable_hopengl" != x"x11"; then + AC_DEFINE(USE_QUARTZ_OPENGL) + UseQuartzOpenGL=YES + fi +fi + 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 +708,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= + 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 +763,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]) @@ -727,7 +790,11 @@ dnl ** check for Windows include files AC_CHECK_HEADERS(windows.h) dnl ** check for OpenGL include files -AC_CHECK_HEADERS(GL/gl.h) +if test $UseQuartzOpenGL = YES ; then + AC_CHECK_HEADERS(OpenGL/gl.h) +else + AC_CHECK_HEADERS(GL/gl.h) +fi dnl ** check if it is safe to include both and AC_HEADER_TIME @@ -841,6 +908,7 @@ 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) dnl ** Map OpenGL data types to Haskell types if test $GhcLibsWithHOpenGL = YES ; then @@ -935,10 +1003,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, @@ -1022,15 +1099,23 @@ 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 -FPTOOLS_HAVE_OPENGL + if test $UseQuartzOpenGL = YES ; then + dnl Take a shortcut for Mac OS X native OpenGL: + dnl It's in a non-standard location, but it's always there + GL_CFLAGS= + GL_LIBS= + GLUT_LIBS= + AC_SUBST(GL_CFLAGS) + AC_SUBST(GL_LIBS) + AC_SUBST(GLUT_LIBS) + else + FPTOOLS_HAVE_OPENGL + fi fi dnl ################################################################ @@ -1043,7 +1128,7 @@ dnl (Mac OS X only) ... but don't check if we already have the dnl HaskellSupport.framework if test $HaveFrameworkHaskellSupport = YES; then - HaveLibDL = NO + HaveLibDL=NO HaveRtldNext=NO HaveRtldLocal=YES AC_DEFINE(HAVE_RTLDLOCAL) @@ -1213,6 +1298,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 @@ -1221,11 +1309,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 @@ -1250,22 +1333,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 #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 #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 )