# see what flags are available. (Better yet, read the documentation!)
#
-AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.11], [glasgow-haskell-bugs@haskell.org], [ghc])
+AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.13], [glasgow-haskell-bugs@haskell.org], [ghc])
# Set this to YES for a released version, otherwise NO
: ${RELEASE=NO}
fi
WithGhc="$GHC"])
-dnl ** Booting from unregisterised .hc files?
+dnl ** Booting from .hc files?
dnl --------------------------------------------------------------
-AC_ARG_ENABLE(hc-boot-unregisterised,
-[AC_HELP_STRING([--enable-hc-boot-unregisterised],
-[ With --enable-hc-boot, treat the intermediate .hc files as
- unregisterised rather than registerised code.
+AC_ARG_ENABLE(hc-boot,
+[AC_HELP_STRING([--enable-hc-boot],
+[Boot the Glasgow Haskell Compiler from intermediate .hc files.
(This option is mostly of interest to porters.) [default=no]])],
[ if test x"$enableval" = x"yes"; then
- BootingFromUnregisterisedHc=YES
+ BootingFromHc=YES
else
- BootingFromUnregisterisedHc=NO
+ BootingFromHc=NO
fi
],
-[BootingFromUnregisterisedHc=NO]
+[BootingFromHc=NO]
)
-AC_SUBST(BootingFromUnregisterisedHc)
-
-if test "$BootingFromHc" = "NO"; then
-if test "$BootingFromUnregisterisedHc" = "YES"; then
-AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
-fi;
-fi;
-
-dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
-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.8],
- [AC_MSG_ERROR([GHC version 6.8 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;
+AC_SUBST(BootingFromHc)
AC_ARG_ENABLE(bootstrap-with-devel-snapshot,
[AC_HELP_STRING([--enable-bootstrap-with-devel-snapshot],
GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'`
GhcCanonVersion="$GhcMajVersion$GhcMinVersion2"
if test $GhcCanonVersion -ge 609; then ghc_ge_609=YES; else ghc_ge_609=NO; fi
+ FP_COMPARE_VERSIONS($GhcVersion,[-ge],[6.10.2],
+ [ghc_ge_6102=YES], [ghc_ge_6102=NO])
+ if test $GhcCanonVersion -ge 611; then ghc_ge_611=YES; else ghc_ge_611=NO; fi
AC_SUBST(ghc_ge_609)dnl
+ AC_SUBST(ghc_ge_6102)dnl
+ AC_SUBST(ghc_ge_611)dnl
fi
+dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
+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.8],
+ [AC_MSG_ERROR([GHC version 6.8 or later is required to compile GHC.])])dnl
+
+ if test `expr $GhcMinVersion % 2` = "1"; then
+ 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;
+
# GHC is passed to Cabal, so we need a native path
if test "${WithGhc}" != ""
then
- ghc_host=`${WithGhc} +RTS --info | grep 'Host platform' | sed -e 's/.*, "//' -e 's/")//'`
+ ghc_host=`"${WithGhc}" +RTS --info | grep 'Host platform' | sed -e 's/.*, "//' -e 's/")//'`
if test "$ghc_host" = "i386-unknown-mingw32"
then
WithGhc=`echo "${WithGhc}" | sed "s#^/\([a-zA-Z]\)/#\1:/#"`
else
# Canonicalise to <drive>:/path/to/ghc
- WithGhc=`cygpath -m ${WithGhc}`
+ WithGhc=`cygpath -m "${WithGhc}"`
fi
echo "GHC path canonicalised to: ${WithGhc}"
fi
dnl ** Without optimization some INLINE trickery fails for GHCi
SRC_CC_OPTS="-O"
+dnl Allow to specify iconv options to the toplevel configure script
+dnl so they can be properly passed to sub-builds.
+dnl Note: ICONV_LIB_DIRS and ICONV_INCLUDE_DIRS are not predefined
+dnl to the empty string to allow them to be overridden from the
+dnl environment.
+
+AC_ARG_WITH([iconv-includes],
+ [AC_HELP_STRING([--with-iconv-includes],
+ [directory containing iconv.h])],
+ [ICONV_INCLUDE_DIRS=$withval])
+
+AC_ARG_WITH([iconv-libraries],
+ [AC_HELP_STRING([--with-iconv-libraries],
+ [directory containing iconv library])],
+ [ICONV_LIB_DIRS=$withval])
+
+AC_SUBST(ICONV_INCLUDE_DIRS)
+AC_SUBST(ICONV_LIB_DIRS)
+
dnl--------------------------------------------------------------------
dnl * Choose host(/target/build) platform
dnl--------------------------------------------------------------------
then
if test "${WithGhc}" != ""
then
- build=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
+ build=`"${WithGhc}" +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
echo "Build platform inferred as: $build"
else
echo "Can't work out build platform"
then
if test "${WithGhc}" != ""
then
- host=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
+ host=`"${WithGhc}" +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
echo "Host platform inferred as: $host"
else
echo "Can't work out host platform"
then
if test "${WithGhc}" != ""
then
- target=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
+ target=`"${WithGhc}" +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
echo "Target platform inferred as: $target"
else
echo "Can't work out target platform"
soext='.dylib'
CFLAGS="$CFLAGS -m32"
LDFLAGS="$LDFLAGS -m32"
- SRC_CC_OPTS="$SRC_CC_OPTS -m32"
- SRC_LD_OPTS="$SRC_LD_OPTS -m32"
+ CONF_CC_OPTS="$CONF_CC_OPTS -m32"
+ CONF_LD_OPTS="$CONF_LD_OPTS -m32"
;;
x86_64-apple-darwin)
soext='.dylib'
CFLAGS="$CFLAGS -m64"
LDFLAGS="$LDFLAGS -m64"
- SRC_CC_OPTS="$SRC_CC_OPTS -m64"
- SRC_LD_OPTS="$SRC_LD_OPTS -m64"
+ CONF_CC_OPTS="$CONF_CC_OPTS -m64"
+ CONF_LD_OPTS="$CONF_LD_OPTS -m64"
;;
esac
checkOS() {
case $1 in
- linux|freebsd|netbsd|openbsd|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|cygwin32|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix)
+ linux|freebsd|netbsd|openbsd|dragonfly|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|cygwin32|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix)
;;
*)
echo "Unknown OS '$1'"
AC_PATH_PROGS(NHC,nhc nhc98)
AC_PATH_PROG(HBC,hbc)
+# This uses GHC, so put it after the "GHC is required" check above:
+FP_FIND_ROOT
+
+if test "$HostOS" = "mingw32"
+then
+ CC="$hardtop/inplace/mingw/bin/gcc.exe"
+ LD="$hardtop/inplace/mingw/bin/ld.exe"
+ NM="$hardtop/inplace/mingw/bin/nm.exe"
+ if ! test -d inplace/mingw ||
+ test inplace/mingw -ot ghc-tarballs/mingw/binutils*.tar.gz ||
+ test inplace/mingw -ot ghc-tarballs/mingw/gcc-core*.tar.gz ||
+ test inplace/mingw -ot ghc-tarballs/mingw/libcrypt*.tar.bz2 ||
+ test inplace/mingw -ot ghc-tarballs/mingw/mingw-runtime*.tar.gz ||
+ test inplace/mingw -ot ghc-tarballs/mingw/w32api*.tar.gz
+ then
+ AC_MSG_NOTICE([Making in-tree mingw tree])
+ rm -rf inplace/mingw
+ mkdir inplace
+ mkdir inplace/mingw
+ (
+ cd inplace/mingw &&
+ tar -zxf ../../ghc-tarballs/mingw/binutils*.tar.gz &&
+ tar -zxf ../../ghc-tarballs/mingw/gcc-core*.tar.gz &&
+ tar -jxf ../../ghc-tarballs/mingw/libcrypt*.tar.bz2 &&
+ tar -zxf ../../ghc-tarballs/mingw/mingw-runtime*.tar.gz &&
+ tar -zxf ../../ghc-tarballs/mingw/w32api*.tar.gz &&
+ mv bin/gcc.exe bin/realgcc.exe
+ )
+ inplace/mingw/bin/realgcc.exe driver/gcc/gcc.c driver/utils/getLocation.c -Idriver/utils -o inplace/mingw/bin/gcc.exe
+ AC_MSG_NOTICE([In-tree mingw tree created])
+ fi
+ if ! test -d inplace/perl ||
+ test inplace/perl -ot ghc-tarballs/perl/ghc-perl*.tar.gz
+ then
+ AC_MSG_NOTICE([Making in-tree perl tree])
+ rm -rf inplace/perl
+ mkdir inplace
+ mkdir inplace/perl
+ (
+ cd inplace/perl &&
+ tar -zxf ../../ghc-tarballs/perl/ghc-perl*.tar.gz
+ )
+ AC_MSG_NOTICE([In-tree perl tree created])
+ fi
+fi
+
dnl ** Which gcc to use?
dnl --------------------------------------------------------------
-AC_ARG_WITH(gcc,
-[AC_HELP_STRING([--with-gcc=ARG],
- [Use ARG as the path to GCC [default=autodetect]])],
-[WhatGccIsCalled="$withval"
- if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
- test "${OSTYPE}" != "msys" && \
- test "${withval}" != ""
- then
- # Canonicalise to <drive>:/path/to/gcc
- withval=`cygpath -m ${withval}`
- fi;
- CC="$withval"
- export CC
- ],
-[WhatGccIsCalled="gcc"]
-)
+FP_ARG_WITH_PATH_GNU_PROG([CC], [gcc])
+export CC
+WhatGccIsCalled="$CC"
AC_SUBST(WhatGccIsCalled)
dnl ** Which ld to use?
dnl --------------------------------------------------------------
-AC_ARG_WITH(ld,
-[AC_HELP_STRING([--with-ld=ARG],
- [Use ARG as the path to LD [default=autodetect]])],
-[if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
- test "${OSTYPE}" != "msys" && \
- test "${withval}" != ""
- then
- # Canonicalise to <drive>:/path/to/ld
- withval=`cygpath -m ${withval}`
- fi;
- LD=$withval
- FP_PROG_LD([$LD])
- ],
- [FP_PROG_LD()]
-)
-
-dnl ** Booting from .hc files?
-dnl --------------------------------------------------------------
-AC_ARG_ENABLE(hc-boot,
-[AC_HELP_STRING([--enable-hc-boot],
-[Boot the Glasgow Haskell Compiler from intermediate .hc files.
- (This option is mostly of interest to porters.) [default=no]])],
-[ if test x"$enableval" = x"yes"; then
- BootingFromHc=YES
- else
- BootingFromHc=NO
- fi
-],
-[BootingFromHc=NO]
-)
-AC_SUBST(BootingFromHc)
+FP_ARG_WITH_PATH_GNU_PROG([LD], [ld])
+LdCmd="$LD"
+AC_SUBST([LdCmd])
-# This uses GHC, so put it after the "GHC is required" check above:
-FP_FIND_ROOT
-
-dnl ** Enable the construction of Win32 DLLs?
+dnl ** Which nm to use?
dnl --------------------------------------------------------------
-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
+FP_ARG_WITH_PATH_GNU_PROG([NM], [nm])
+NmCmd="$NM"
+AC_SUBST([NmCmd])
dnl ** Mac OS X: explicit deployment target
dnl --------------------------------------------------------------
dnl If gcc, make sure it's at least 2.1
dnl
FP_HAVE_GCC
-FP_MINGW_GCC
FP_GCC_EXTRA_FLAGS
dnl ** figure out how to invoke cpp directly (gcc -E is no good)
AC_PROG_CPP
-AC_SUBST(SRC_CC_OPTS)
-AC_SUBST(SRC_LD_OPTS)
+AC_SUBST(CONF_CC_OPTS)
+AC_SUBST(CONF_LD_OPTS)
dnl ** figure out how to do context diffs
FP_PROG_CONTEXT_DIFF
dnl ** Find the path to sed
-AC_PATH_PROG(SedCmd,sed)
+AC_PATH_PROGS(SedCmd,gsed sed,sed)
dnl ** check for time command
dnl ** check for tar
dnl if GNU tar is named gtar, look for it first.
-AC_PATH_PROGS(TarCmd,gtar tar,tar)
+AC_PATH_PROGS(TarCmd,gnutar gtar tar,tar)
dnl ** check for patch
dnl if GNU patch is named gpatch, look for it first
FPTOOLS_ALEX
fi;
-dnl Check we have an acceptable version of windres
-FPTOOLS_WINDRES
-
dnl --------------------------------------------------
dnl ### program checking section ends here ###
dnl --------------------------------------------------
AC_MSG_ERROR([compiler/ghc.cabal.in contains tab characters; please remove them])
fi
-AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml distrib/ghc.iss])
+AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml distrib/ghc.iss distrib/configure-bin.ac])
AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
AC_OUTPUT