X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=configure.ac;h=eb63052bff2d30c9d51bee78ba9439851f56330b;hp=e677ad89e7fe347370b555674deaa349ec7dfee3;hb=6efacfe8bcbe66dfc3b52397ccbd34a58890520d;hpb=80d2e6f711d54f59c4d698c7565f69d49d34d8b8 diff --git a/configure.ac b/configure.ac index e677ad8..eb63052 100644 --- a/configure.ac +++ b/configure.ac @@ -13,7 +13,7 @@ dnl # see what flags are available. (Better yet, read the documentation!) # -AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.9], [glasgow-haskell-bugs@haskell.org], [ghc]) +AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.11], [glasgow-haskell-bugs@haskell.org], [ghc]) # Set this to YES for a released version, otherwise NO : ${RELEASE=NO} @@ -95,10 +95,18 @@ HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1 TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1 if test x"$TargetPlatform" != x"$HostPlatform" ; then - echo "GHC configuration does not support differing host/target (i.e., cross-compiling)" - exit 1 + AC_MSG_ERROR([ + GHC configuration does not support differing host/target (i.e., cross-compiling)]) fi +case $HostPlatform in +*-cygwin*) + AC_MSG_WARN([GHC does not support the Cygwin target at the moment]) + AC_MSG_WARN([I'm assuming you wanted to build for i386-unknown-mingw32]) + HostPlatform=i386-unknown-mingw32 + ;; +esac + exeext='' soext='.so' # @@ -645,12 +653,16 @@ AC_ARG_WITH([ghc], fi WithGhc="$GHC"]) # GHC is passed to Cabal, so we need a native path -if test "x$HostPlatform" = "xi386-unknown-mingw32" && \ - test "${OSTYPE}" != "msys" && \ - test "${WithGhc}" != "" +if test "${WithGhc}" != "" && test "$HostPlatform" = "i386-unknown-mingw32" then - # Canonicalise to :/path/to/ghc - WithGhc=`cygpath -m ${WithGhc}` + if test "${OSTYPE}" = "msys" + then + WithGhc=`echo "${WithGhc}" | sed "s#^/\([a-zA-Z]\)/#\1:/#"` + else + # Canonicalise to :/path/to/ghc + WithGhc=`cygpath -m ${WithGhc}` + fi + echo "Canonicalised to: ${WithGhc}" fi AC_SUBST([WithGhc]) @@ -663,25 +675,32 @@ AC_ARG_WITH(hc, ) AC_SUBST(WithHc) +AC_ARG_ENABLE(bootstrap-with-devel-snapshot, +[AC_HELP_STRING([--enable-bootstrap-with-devel-snapshot], + [Allow bootstrapping using a development snapshot of GHC. This is not guaranteed to work.])], + EnableBootstrapWithDevelSnaphost=YES, + EnableBootstrapWithDevelSnaphost=NO +) + if test "$WithGhc" != ""; then FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl + + if test "$GhcMajVersion" = "unknown" -o "$GhcMinVersion" = "unknown"; then + AC_MSG_ERROR([Cannot determine the version of $WithGhc. Is it really GHC?]) + fi + AC_SUBST(GhcVersion)dnl AC_SUBST(GhcMajVersion)dnl AC_SUBST(GhcMinVersion)dnl AC_SUBST(GhcPatchLevel)dnl GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'` GhcCanonVersion="$GhcMajVersion$GhcMinVersion2" - if test $GhcCanonVersion -ge 605; then ghc_ge_605=YES; else ghc_ge_605=NO; fi if test $GhcCanonVersion -ge 607; then ghc_ge_607=YES; else ghc_ge_607=NO; fi if test $GhcCanonVersion -ge 609; then ghc_ge_609=YES; else ghc_ge_609=NO; fi - AC_SUBST(ghc_ge_605)dnl AC_SUBST(ghc_ge_607)dnl AC_SUBST(ghc_ge_609)dnl fi -# Check whether this GHC has editline installed -FP_GHC_HAS_EDITLINE - AC_PATH_PROGS(NHC,nhc nhc98) AC_PATH_PROG(HBC,hbc) @@ -723,6 +742,36 @@ AC_ARG_WITH(ld, [FP_PROG_LD()] ) +dnl ** Build shared and/or static libs? +dnl -------------------------------------------------------------- +AC_ARG_ENABLE(shared, +[AC_HELP_STRING([--enable-shared], +[Build shared libraries, if available (EXPERIMENTAL, non-working). [default=no]])], +[ if test x"$enableval" = x"yes"; then + AC_MSG_WARN([--enable-shared is experimental and not fully supported at this time]) + BuildSharedLibs=YES + else + BuildSharedLibs=NO + fi +], +[BuildSharedLibs=NO] +) +AC_SUBST(BuildSharedLibs) + +# ToDo later: +# AC_ARG_ENABLE(static, +# [AC_HELP_STRING([--enable-static], +# [Build static libraries. [default=yes]])], +# [ if test x"$enableval" = x"yes"; then +# BuildStaticLibs=YES +# else +# BuildStaticLibs=NO +# fi +# ], +# [BuildStaticLibs=YES] +# ) +# AC_SUBST(BuildStaticLibs) + dnl ** Booting from .hc files? dnl -------------------------------------------------------------- AC_ARG_ENABLE(hc-boot, @@ -767,8 +816,19 @@ if test "$BootingFromHc" = "NO" -a -d "$srcdir/compiler"; then if test "$WithGhc" = ""; then AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.]) fi - FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[6.4], - [AC_MSG_ERROR([GHC version 6.4 or later is required to compile GHC.])])dnl + FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[6.6], + [AC_MSG_ERROR([GHC version 6.6 or later is required to compile GHC.])])dnl + + if test `expr $GhcMinVersion % 2` = "1"; then + echo $EnableBootstrapWithDevelSnaphost + if test "$EnableBootstrapWithDevelSnaphost" = "NO"; then + AC_MSG_ERROR([ + $WithGhc is a development snapshot of GHC, version $GhcVersion. + Bootstrapping using this version of GHC is not supported, and may not + work. Use --enable-bootstrap-with-devel-snapshot to try it anyway, + or --with-ghc to specify a different GHC to use.]) + fi + fi fi; # This uses GHC, so put it after the "GHC is required" check above: @@ -807,20 +867,6 @@ dnl if test x"$EnableWin32DLLs" = "xYES" ; then dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT) dnl fi -dnl ** .NET interop support? -dnl -------------------------------------------------------------- -AC_ARG_ENABLE(dotnet, -[AC_HELP_STRING([--enable-dotnet], -[Build .NET interop layer. [default=no]])], -[ if test x"$enableval" = x"yes"; then - DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.]) - else - DotnetSupport=NO - fi], -[DotnetSupport=NO] -) -AC_SUBST(DotnetSupport) - dnl ** Mac OS X: explicit deployment target dnl -------------------------------------------------------------- AC_ARG_WITH([macosx-deployment-target], @@ -941,6 +987,10 @@ dnl ** check for tar dnl if GNU tar is named gtar, look for it first. AC_PATH_PROGS(TarCmd,gtar tar,tar) +dnl ** check for patch +dnl if GNU patch is named gpatch, look for it first +AC_PATH_PROGS(PatchCmd,gpatch patch, patch) + AC_PATH_PROG(HSCOLOUR,HsColour) # HsColour is passed to Cabal, so we need a native path if test "x$HostPlatform" = "xi386-unknown-mingw32" && \ @@ -954,35 +1004,29 @@ fi dnl ** check for DocBook toolchain FP_CHECK_DOCBOOK_DTD FP_DIR_DOCBOOK_XSL([/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/xml/docbook/xsl-stylesheets* /usr/share/sgml/docbook/docbook-xsl-stylesheets* /usr/share/sgml/docbook/xsl-stylesheets* /opt/kde?/share/apps/ksgmltools2/docbook/xsl /usr/share/docbook-xsl /usr/share/sgml/docbkxsl /usr/local/share/xsl/docbook /sw/share/xml/xsl/docbook-xsl /opt/local/share/xsl/docbook-xsl]) -FP_PROG_FO_PROCESSOR + +FP_PROG_DBLATEX + +FP_PROG_HSTAGS dnl ** check for ghc-pkg command FP_PROG_GHC_PKG -AC_ARG_WITH(greencard, -[AC_HELP_STRING([--with-greencard=ARG], - [Use ARG as the path to greencard [default=autodetct]])], -[ -GreenCardCmd=$withval; -FPTOOLS_GREENCARD(3.00) -] -) - 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 FPTOOLS_HAPPY fi; -dnl ** check for installed haddock -FPTOOLS_HADDOCK - dnl ** check for installed alex binary + version dnl (don't do it if we're booting from .hc files though.) if test "$BootingFromHc" = "NO"; then FPTOOLS_ALEX fi; +dnl Check we have an acceptable version of windres +FPTOOLS_WINDRES + dnl -------------------------------------------------- dnl ### program checking section ends here ### dnl -------------------------------------------------- @@ -999,7 +1043,7 @@ 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([bfd.h ctype.h dirent.h dlfcn.h errno.h fcntl.h grp.h limits.h locale.h nlist.h pthread.h pwd.h signal.h sys/mman.h sys/resource.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/utsname.h sys/wait.h termios.h time.h utime.h windows.h winsock.h]) +AC_CHECK_HEADERS([bfd.h ctype.h dirent.h dlfcn.h errno.h fcntl.h grp.h limits.h locale.h nlist.h pthread.h pwd.h signal.h sys/mman.h sys/resource.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/utsname.h sys/wait.h termios.h time.h utime.h windows.h winsock.h sched.h]) dnl ** check if it is safe to include both and AC_HEADER_TIME @@ -1077,7 +1121,20 @@ fi dnl ** check for more functions dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too. -AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r]) +AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r, sched_setaffinity]) + +AC_TRY_RUN([ +#include +#include +int main(void) { + struct itimerval tval; + tval.it_value.tv_sec = 1; + tval.it_value.tv_usec = 0; + tval.it_interval = tval.it_value; + return setitimer(ITIMER_VIRTUAL, &tval, (void*)0) != 0; +} +],[AC_DEFINE([HAVE_SETITIMER_VIRTUAL], [1], [Define to 1 if setitimer accepts ITIMER_VIRTUAL, 0 else.])]) + dnl ** On OS X 10.4 (at least), time.h doesn't declare ctime_r if dnl ** _POSIX_C_SOURCE is defined AC_CHECK_DECLS([ctime_r], , , @@ -1247,6 +1304,106 @@ else fi AC_SUBST(HavePapi) -AC_CONFIG_FILES([mk/config.mk ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml]) +if test "$DIR_DOCBOOK_XSL" = "" || + test "$XsltprocCmd" = "" +then + BUILD_DOCBOOK_HTML=NO +else + BUILD_DOCBOOK_HTML=YES +fi +AC_SUBST(BUILD_DOCBOOK_HTML) + +if test "$DblatexCmd" = "" +then + BUILD_DOCBOOK_PS=NO + BUILD_DOCBOOK_PDF=NO +else + BUILD_DOCBOOK_PS=YES + BUILD_DOCBOOK_PDF=YES +fi +AC_SUBST(BUILD_DOCBOOK_PS) +AC_SUBST(BUILD_DOCBOOK_PDF) + +AC_CONFIG_FILES([mk/config.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml]) AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h]) AC_OUTPUT + +# We get caught by +# http://savannah.gnu.org/bugs/index.php?1516 +# $(eval ...) inside conditionals causes errors +# with make 3.80, so warn the user if it looks like they're about to +# try to use it. +# We would use "grep -q" here, but Solaris's grep doesn't support it. +checkMake380() { + if $1 --version 2>&1 | head -1 | grep 'GNU Make 3\.80' > /dev/null + then + echo + echo "WARNING: It looks like \"$1\" is GNU make 3.80." + echo "This version cannot be used to build GHC." + echo "Please use GNU make >= 3.81." + fi +} + +checkMake380 make +checkMake380 gmake + +echo [" +---------------------------------------------------------------------- +Configure completed successfully. + + Building GHC version : $ProjectVersion + + Build platform : $BuildPlatform + Host platform : $HostPlatform + Target platform : $TargetPlatform +"] + +if test "$BootingFromHc" = "YES"; then +echo ["\ + Bootstrapping from HC files. +"] +else +echo ["\ + Bootstrapping using : $WithGhc + which is version : $GhcVersion +"] +fi + +echo ["\ + Using GCC : $WhatGccIsCalled + which is version : $GccVersion + + ld : $LdCmd + Happy : $HappyCmd + Alex : $AlexCmd + Python : $PythonCmd + Perl : $PerlCmd"] + +if test "$HSCOLOUR" = ""; then +echo [" + HsColour was not found; documentation will not contain source links +"] +else +echo ["\ + HsColour : $HSCOLOUR +"] +fi + +echo "Building DocBook HTML documentation: $BUILD_DOCBOOK_HTML" +echo "Building DocBook PS documentation: $BUILD_DOCBOOK_PS" +echo "Building DocBook PDF documentation: $BUILD_DOCBOOK_PDF" + +echo ["Building shared libraries : $BuildSharedLibs"] + +echo ["---------------------------------------------------------------------- +"] + +echo "\ +For a standard build of GHC (fully optimised with profiling), type (g)make. + +To make changes to the default build configuration, copy the file +mk/build.mk.sample to mk/build.mk, and edit the settings in there. + +For more information on how to configure your GHC build, see + http://hackage.haskell.org/trac/ghc/wiki/Building +"