X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=configure.ac;h=afe7a05b169a2fc5cce684997ce76fc156336203;hp=ccc625fdccbc2125597de8178a9e29b7b82c3175;hb=5882c5ff503c5b3b425708621cbc3371cc36e5de;hpb=bed9246114cff5b4d22acc0ff7ecfdd4fc52a5c2 diff --git a/configure.ac b/configure.ac index ccc625f..afe7a05 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.13], [glasgow-haskell-bugs@haskell.org], [ghc]) +AC_INIT([The Glorious Glasgow Haskell Compilation System], [7.1], [glasgow-haskell-bugs@haskell.org], [ghc]) # Set this to YES for a released version, otherwise NO : ${RELEASE=NO} @@ -125,12 +125,7 @@ if test "$WithGhc" != ""; then AC_SUBST(GhcPatchLevel)dnl GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'` GhcCanonVersion="$GhcMajVersion$GhcMinVersion2" - 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 if test $GhcCanonVersion -ge 613; then ghc_ge_613=YES; else ghc_ge_613=NO; fi - AC_SUBST(ghc_ge_6102)dnl - AC_SUBST(ghc_ge_611)dnl AC_SUBST(ghc_ge_613)dnl fi @@ -139,8 +134,8 @@ 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.10], - [AC_MSG_ERROR([GHC version 6.10 or later is required to compile GHC.])])dnl + FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[6.12], + [AC_MSG_ERROR([GHC version 6.12 or later is required to compile GHC.])])dnl if test `expr $GhcMinVersion % 2` = "1"; then if test "$EnableBootstrapWithDevelSnaphost" = "NO"; then @@ -175,40 +170,8 @@ AC_SUBST([WithGhc]) 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 Allow to specify gmp options to the toplevel configure script -dnl so they can be properly passed to sub-builds. - -AC_ARG_WITH([gmp-includes], - [AC_HELP_STRING([--with-gmp-includes], - [directory containing gmp.h])], - [GMP_INCLUDE_DIRS=$withval]) - -AC_ARG_WITH([gmp-libraries], - [AC_HELP_STRING([--with-gmp-libraries], - [directory containing gmp library])], - [GMP_LIB_DIRS=$withval]) - -AC_SUBST(GMP_INCLUDE_DIRS) -AC_SUBST(GMP_LIB_DIRS) +FP_ICONV +FP_GMP dnl-------------------------------------------------------------------- dnl * Choose host(/target/build) platform @@ -319,6 +282,7 @@ x86_64-apple-darwin) ;; esac +# Sync this with cTargetArch in compiler/ghc.mk checkArch() { case $1 in alpha|arm|hppa|hppa1_1|i386|ia64|m68k|mips|mipseb|mipsel|powerpc|powerpc64|rs6000|s390|sparc|sparc64|vax|x86_64) @@ -382,6 +346,16 @@ checkArch "$TargetArch" checkVendor "$TargetVendor" checkOS "$TargetOS" +# Verify that the installed (bootstrap) GHC is capable of generating +# code for the requested build platform. +if test "$build" != "$bootstrap_target" +then + echo "This GHC (${WithGhc}) does not generate code for the build platform" + echo " GHC target platform : $bootstrap_target" + echo " Desired build platform : $BuildPlatform" + exit 1 +fi + AC_SUBST(BuildPlatform) AC_SUBST(HostPlatform) AC_SUBST(TargetPlatform) @@ -413,39 +387,55 @@ AC_ARG_WITH(hc, ) AC_SUBST(WithHc) -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_INTREE_GHC_PWD FP_FIND_ROOT if test "$HostOS" = "mingw32" then + test -d inplace || mkdir inplace + CC="$hardtop/inplace/mingw/bin/gcc.exe" LD="$hardtop/inplace/mingw/bin/ld.exe" NM="$hardtop/inplace/mingw/bin/nm.exe" fp_prog_ar_raw="$hardtop/inplace/mingw/bin/ar.exe" + + # NB. If you update the tarbballs to a new version of gcc, don't + # forget to tweak the paths in driver/gcc/gcc.c. if ! test -d inplace/mingw || - test inplace/mingw -ot ghc-tarballs/mingw/binutils*.tar.lzma || - test inplace/mingw -ot ghc-tarballs/mingw/gcc-core*.tar.lzma || - test inplace/mingw -ot ghc-tarballs/mingw/gcc-c++*.tar.lzma || - test inplace/mingw -ot ghc-tarballs/mingw/mingwrt*.tar.gz || + test inplace/mingw -ot ghc-tarballs/mingw/binutils*.tar.lzma || + test inplace/mingw -ot ghc-tarballs/mingw/gcc-core*.tar.lzma || + test inplace/mingw -ot ghc-tarballs/mingw/gcc-c++*.tar.lzma || + test inplace/mingw -ot ghc-tarballs/mingw/libgmp*.tar.gz || + test inplace/mingw -ot ghc-tarballs/mingw/libmpc*.tar.gz || + test inplace/mingw -ot ghc-tarballs/mingw/libmpfr*.tar.gz || + test inplace/mingw -ot ghc-tarballs/mingw/libstdc*.tar.lzma || + test inplace/mingw -ot ghc-tarballs/mingw/mingwrt*-dev.tar.gz || + test inplace/mingw -ot ghc-tarballs/mingw/mingwrt*-dll.tar.gz || test inplace/mingw -ot ghc-tarballs/mingw/w32api*.tar.lzma then AC_MSG_NOTICE([Making in-tree mingw tree]) rm -rf inplace/mingw - mkdir inplace mkdir inplace/mingw ( cd inplace/mingw && - tar --lzma -xf ../../ghc-tarballs/mingw/binutils*.tar.lzma && - tar --lzma -xf ../../ghc-tarballs/mingw/gcc-core*.tar.lzma && - tar --lzma -xf ../../ghc-tarballs/mingw/gcc-c++*.tar.lzma && - tar -z -xf ../../ghc-tarballs/mingw/mingwrt*.tar.gz && - tar --lzma -xf ../../ghc-tarballs/mingw/w32api*.tar.lzma && + tar --lzma -xf ../../ghc-tarballs/mingw/binutils*.tar.lzma && + tar --lzma -xf ../../ghc-tarballs/mingw/gcc-core*.tar.lzma && + tar --lzma -xf ../../ghc-tarballs/mingw/gcc-c++*.tar.lzma && + tar --lzma -xf ../../ghc-tarballs/mingw/libgmp*.tar.lzma && + tar --lzma -xf ../../ghc-tarballs/mingw/libmpc*.tar.lzma && + tar --lzma -xf ../../ghc-tarballs/mingw/libmpfr*.tar.lzma && + tar --lzma -xf ../../ghc-tarballs/mingw/libstdc*.tar.lzma && + tar -z -xf ../../ghc-tarballs/mingw/mingwrt*-dev.tar.gz && + tar -z -xf ../../ghc-tarballs/mingw/mingwrt*-dll.tar.gz && + tar --lzma -xf ../../ghc-tarballs/mingw/w32api*.tar.lzma && mv bin/gcc.exe bin/realgcc.exe ) - inplace/mingw/bin/realgcc.exe driver/gcc/gcc.c driver/utils/cwrapper.c driver/utils/getLocation.c -Idriver/utils -o inplace/mingw/bin/gcc.exe + PATH=`pwd`/inplace/mingw/bin:$PATH inplace/mingw/bin/realgcc.exe driver/gcc/gcc.c driver/utils/cwrapper.c driver/utils/getLocation.c -Idriver/utils -o inplace/mingw/bin/gcc.exe + if ! test -e inplace/mingw/bin/gcc.exe + then + AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.]) + fi AC_MSG_NOTICE([In-tree mingw tree created]) fi if ! test -d inplace/perl || @@ -521,26 +511,22 @@ AC_SUBST([GhcLibsWithUnix]) dnl ** does #! work? AC_SYS_INTERPRETER() -dnl ** look for `perl', but only in /bin on Windows +dnl ** look for `perl' case $HostOS_CPP in cygwin32|mingw32) - AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin) - if test -z "$PerlCmd"; then - echo "You must install the version of Perl shipped with GHC" - echo "(or a compatible one) in /bin." - exit 1 - fi - ;; + PerlCmd=$hardtop/inplace/perl/perl + ;; *) - AC_PATH_PROG(PerlCmd,perl) - if test -z "$PerlCmd"; then - echo "You must install perl before you can continue" - echo "Perhaps it is already installed, but not in your PATH?" - exit 1 - else - FPTOOLS_CHECK_PERL_VERSION - fi - ;; + AC_PATH_PROG(PerlCmd,perl) + if test -z "$PerlCmd" + then + echo "You must install perl before you can continue" + echo "Perhaps it is already installed, but not in your PATH?" + exit 1 + else + FPTOOLS_CHECK_PERL_VERSION + fi + ;; esac dnl ** does #! path/to/perl work? (sometimes it's too long...) @@ -555,11 +541,11 @@ dnl If gcc, make sure it's at least 2.1 dnl FP_HAVE_GCC -FPTOOLS_SET_C_LD_FLAGS([target],[CFLAGS],[LDFLAGS]) -FPTOOLS_SET_C_LD_FLAGS([build],[CONF_CC_OPTS_STAGE0],[CONF_LD_OPTS_STAGE0]) -FPTOOLS_SET_C_LD_FLAGS([target],[CONF_CC_OPTS_STAGE1],[CONF_LD_OPTS_STAGE1]) +FPTOOLS_SET_C_LD_FLAGS([target],[CFLAGS],[LDFLAGS],[CPPFLAGS]) +FPTOOLS_SET_C_LD_FLAGS([build],[CONF_CC_OPTS_STAGE0],[CONF_LD_OPTS_STAGE0],[CONF_CPP_OPTS_STAGE0]) +FPTOOLS_SET_C_LD_FLAGS([target],[CONF_CC_OPTS_STAGE1],[CONF_LD_OPTS_STAGE1],[CONF_CPP_OPTS_STAGE1]) # Stage 3 won't be supported by cross-compilation -FPTOOLS_SET_C_LD_FLAGS([target],[CONF_CC_OPTS_STAGE2],[CONF_LD_OPTS_STAGE2]) +FPTOOLS_SET_C_LD_FLAGS([target],[CONF_CC_OPTS_STAGE2],[CONF_LD_OPTS_STAGE2],[CONF_CPP_OPTS_STAGE2]) FP_GCC_EXTRA_FLAGS @@ -572,6 +558,9 @@ AC_SUBST(CONF_CC_OPTS_STAGE2) AC_SUBST(CONF_LD_OPTS_STAGE0) AC_SUBST(CONF_LD_OPTS_STAGE1) AC_SUBST(CONF_LD_OPTS_STAGE2) +AC_SUBST(CONF_CPP_OPTS_STAGE0) +AC_SUBST(CONF_CPP_OPTS_STAGE1) +AC_SUBST(CONF_CPP_OPTS_STAGE2) dnl ** figure out how to do context diffs FP_PROG_CONTEXT_DIFF @@ -858,6 +847,8 @@ AC_COMPILE_IFELSE( [AC_MSG_RESULT(no)]) CFLAGS="$CFLAGS2" +FP_VISIBILITY_HIDDEN + dnl ** check for librt AC_CHECK_LIB(rt, clock_gettime) AC_CHECK_FUNCS(clock_gettime timer_create timer_settime) @@ -938,7 +929,7 @@ if grep ' ' compiler/ghc.cabal.in 2>&1 >/dev/null; then 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 docs/users_guide/ug-ent.xml docs/index.html libraries/prologue.txt distrib/ghc.iss distrib/configure.ac]) +AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal utils/runghc/runghc.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml docs/users_guide/ug-ent.xml docs/index.html libraries/prologue.txt distrib/ghc.iss distrib/configure.ac distrib/MacOS/installer-scripts/create-links distrib/MacOS/installer-scripts/Uninstaller distrib/MacOS/GHC-system.pmdoc/index.xml]) AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h]) AC_OUTPUT