Deal correctly with infix type constructors in GADT decls
[ghc-hetmet.git] / aclocal.m4
index d0ba4bf..f8202bf 100644 (file)
@@ -245,26 +245,10 @@ dnl at least Happy version 1.14.  If there's no installed Happy, we look
 dnl for a happy source tree and point the build system at that instead.
 dnl
 AC_DEFUN([FPTOOLS_HAPPY],
-[
-if test -d $srcdir/happy; then
-   SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace
-else
-   SrcTreeHappyCmd=""
-fi
-if test x"$UseSrcTreeHappy" = xYES; then
-  if test x"$SrcTreeHappyCmd" != x; then
-     HappyCmd=$SrcTreeHappyCmd
-  else
-     AC_MSG_ERROR([--enable-src-tree-happy given, but happy not found in source tree])
-  fi
-else
-  AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd)
-fi
+[AC_PATH_PROG(HappyCmd,happy,)
 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
 changequote(, )dnl
-[if test x"$HappyCmd" = x"$SrcTreeHappyCmd" -a -e $srcdir/happy/mk/version.mk; then
-   fptools_cv_happy_version=`grep '^ProjectVersion[    ]*=' $srcdir/happy/mk/version.mk | sed 's/[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
-elif test x"$HappyCmd" != x; then
+[if test x"$HappyCmd" != x; then
    fptools_cv_happy_version="`$HappyCmd -v |
                          grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
 else
@@ -272,10 +256,8 @@ else
 fi;
 changequote([, ])dnl
 ])
-if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Parser.hs; then
-  FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.15],
+FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.15],
   [AC_MSG_ERROR([Happy version 1.15 or later is required to compile GHC.])])[]dnl
-fi
 HappyVersion=$fptools_cv_happy_version;
 AC_SUBST(HappyVersion)
 ])
@@ -285,21 +267,7 @@ dnl Check for Haddock and version.  If there's no installed Haddock, we look
 dnl for a haddock source tree and point the build system at that instead.
 dnl
 AC_DEFUN([FPTOOLS_HADDOCK],
-[
-if test -d $srcdir/haddock; then
-   SrcTreeHaddockCmd=$hardtop/haddock/src/haddock-inplace
-else
-   SrcTreeHaddockCmd=""
-fi
-if test x"$UseSrcTreeHaddock" = xYES; then
-  if test x"$SrcTreeHaddockCmd" != x; then
-     HaddockCmd=$SrcTreeHaddockCmd
-  else
-     AC_MSG_ERROR([--enable-src-tree-haddock given, but haddock not found in source tree])
-  fi
-else
-  AC_PATH_PROG(HaddockCmd,haddock,$SrcTreeHaddockCmd)
-fi
+[AC_PATH_PROG(HaddockCmd,haddock,)
 dnl Darn, I forgot to make Haddock print out its version number when
 dnl invoked with -v.  We could try generating some HTML and grepping
 dnl through that to find the version number, but I think we'll make
@@ -313,25 +281,10 @@ dnl for a alex source tree and point the build system at that instead.
 dnl
 AC_DEFUN([FPTOOLS_ALEX],
 [
-if test -d $srcdir/alex; then
-   SrcTreeAlexCmd=$hardtop/alex/src/alex-inplace
-else
-   SrcTreeAlexCmd=""
-fi
-if test x"$UseSrcTreeAlex" = xYES; then
-  if test x"$SrcTreeAlexCmd" != x; then
-     AlexCmd=$SrcTreeAlexCmd
-  else
-     AC_MSG_ERROR([--enable-src-tree-alex given, but alex not found in source tree])
-  fi
-else
-  AC_PATH_PROG(AlexCmd,alex,$SrcTreeAlexCmd)
-fi
+AC_PATH_PROG(AlexCmd,alex,)
 AC_CACHE_CHECK([for version of alex], fptools_cv_alex_version,
 changequote(, )dnl
-[if test x"$AlexCmd" = x"$SrcTreeAlexCmd"; then
-   fptools_cv_alex_version=`grep '^ProjectVersion[     ]*=' $srcdir/alex/mk/version.mk | sed 's/[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
-elif test x"$AlexCmd" != x; then
+[if test x"$AlexCmd" != x; then
    fptools_cv_alex_version="`$AlexCmd -v |
                          grep 'Alex [Vv]ersion' | sed -e 's/Alex [Vv]ersion \([0-9\.]*\).*/\1/g'`" ;
 else
@@ -339,10 +292,8 @@ else
 fi;
 changequote([, ])dnl
 ])
-if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then
-  FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.0],
+FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.0],
   [AC_MSG_ERROR([Alex version 2.0 or later is required to compile GHC.])])[]dnl
-fi
 AlexVersion=$fptools_cv_alex_version;
 AC_SUBST(AlexVersion)
 ])
@@ -363,6 +314,12 @@ case $HostPlatform in
              LdCmd="`cygpath -w ${fp_prog_ld_raw} | sed -e 's@\\\\@/@g'`"
               AC_MSG_NOTICE([normalized ld command to $LdCmd])
             fi
+           # Insist on >= ld-2.15.x, since earlier versions doesn't handle
+           # the generation of relocatable object files with large amounts
+           # of relocations correctly. (cf. HSbase.o splittage-hack)
+           fp_prog_ld_version=`${LdCmd} --version | sed -n '/GNU ld/p' | tr -cd 0-9 | cut -b1-3`
+           FP_COMPARE_VERSIONS([$fp_prog_ld_version],[-lt],[214],
+                                [AC_MSG_ERROR([GNU ld version later than 2.14 required to compile GHC on Windows.])])[]dnl
             ;;
 esac
 AC_SUBST([LdCmd])
@@ -488,7 +445,7 @@ AC_REQUIRE([AC_PROG_CC])
 AC_CACHE_CHECK([whether ranlib is needed], [fp_cv_prog_ar_needs_ranlib],
 [if test $fp_prog_ar_is_gnu = yes; then
   fp_cv_prog_ar_needs_ranlib=no
-elif test $TargetPlatform = powerpc-apple-darwin; then
+elif echo $TargetPlatform | grep "^.*-apple-darwin$"  > /dev/null 2> /dev/null; then
   # It's quite tedious to check for Apple's crazy timestamps in .a files,
   # so we hardcode it.
   fp_cv_prog_ar_needs_ranlib=yes
@@ -822,8 +779,8 @@ main() {
   exit(0);
 }]])],[AC_CV_NAME=`cat conftestval`],
 [ifelse([$2], , [AC_CV_NAME=NotReallyAType; AC_CV_NAME_supported=no], [AC_CV_NAME=$2])],
-[ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], [AC_CV_NAME=$3])])]) dnl
-CPPFLAGS="$fp_check_htype_save_cppflags"
+[ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], [AC_CV_NAME=$3])])
+CPPFLAGS="$fp_check_htype_save_cppflags"]) dnl
 if test "$AC_CV_NAME_supported" = yes; then
   AC_MSG_RESULT($AC_CV_NAME)
   AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1])
@@ -1049,4 +1006,77 @@ else
   GhcPkgCmd=$fp_cv_matching_ghc_pkg
 fi])# FP_PROG_GHC_PKG
 
+
+# FP_GHC_HAS_READLINE
+# -------------------
+AC_DEFUN([FP_GHC_HAS_READLINE],
+[AC_REQUIRE([FP_PROG_GHC_PKG])
+AC_CACHE_CHECK([whether ghc has readline package], [fp_cv_ghc_has_readline],
+[if "${GhcPkgCmd-ghc-pkg}" --show-package readline >/dev/null 2>&1; then
+  fp_cv_ghc_has_readline=yes
+else
+  fp_cv_ghc_has_readline=no
+ fi])
+AC_SUBST([GhcHasReadline], [`echo $fp_cv_ghc_has_readline | sed 'y/yesno/YESNO/'`])
+])# FP_GHC_HAS_READLINE
+
+
+# FP_GCC_NEEDS_NO_OMIT_LFPTR
+# --------------------------
+# Some OSs (Mandrake Linux, in particular) configure GCC with
+# -momit-leaf-frame-pointer on by default. If this is the case, we need to turn
+# it off for mangling to work. The test is currently a bit crude, using only the
+# version number of gcc. Defines HAVE_GCC_MNO_OMIT_LFPTR.
+AC_DEFUN([FP_GCC_NEEDS_NO_OMIT_LFPTR],
+[AC_REQUIRE([FP_HAVE_GCC])
+AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], [fp_cv_gcc_needs_no_omit_lfptr],
+[FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.2],
+  [fp_cv_gcc_needs_no_omit_lfptr=yes],
+  [fp_cv_gcc_needs_no_omit_lfptr=no])])
+if test "$fp_cv_gcc_needs_no_omit_lfptr" = "yes"; then
+   AC_DEFINE([HAVE_GCC_MNO_OMIT_LFPTR], [1], [Define to 1 if gcc supports -mno-omit-leaf-frame-pointer.])
+fi])# FP_GCC_NEEDS_NO_OMIT_LFPTR
+
+# FP_GCC_HAS_NO_UNIT_AT_A_TIME
+# --------------------------
+AC_DEFUN([FP_GCC_HAS_NO_UNIT_AT_A_TIME],
+[AC_REQUIRE([FP_HAVE_GCC])
+AC_CACHE_CHECK([whether gcc has -fno-unit-at-a-time], [fp_cv_gcc_has_no_unit_at_a_time],
+[FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.4],
+  [fp_cv_gcc_has_no_unit_at_a_time=yes],
+  [fp_cv_gcc_has_no_unit_at_a_time=no])])
+if test "$fp_cv_gcc_has_no_unit_at_a_time" = "yes"; then
+   AC_DEFINE([HAVE_GCC_HAS_NO_UNIT_AT_A_TIME], [1], [Define to 1 if gcc supports -fno-unit-at-a-time.])
+fi])
+
+# FP_SETUP_PROJECT_VERSION
+# ---------------------
+AC_DEFUN([FP_SETUP_PROJECT_VERSION],
+[# Some renamings
+AC_SUBST([ProjectName], [$PACKAGE_NAME])
+AC_SUBST([ProjectVersion], [$PACKAGE_VERSION])
+
+# Split PACKAGE_VERSION into (possibly empty) parts
+VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`
+VERSION_TMP=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/`
+VERSION_MINOR=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`
+ProjectPatchLevel=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/`
+
+# Calculate project version as an integer, using 2 digits for minor version
+case $VERSION_MINOR in
+  ?) ProjectVersionInt=${VERSION_MAJOR}0${VERSION_MINOR} ;;
+  ??) ProjectVersionInt=${VERSION_MAJOR}${VERSION_MINOR} ;;
+  *) AC_MSG_ERROR([bad minor version in $PACKAGE_VERSION]) ;;
+esac
+AC_SUBST([ProjectVersionInt])
+
+# The project patchlevel is zero unless stated otherwise
+test -z "$ProjectPatchLevel" && ProjectPatchLevel=0
+
+# Remove dots from the patch level; this allows us to have versions like 6.4.1.20050508
+ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'`
+
+AC_SUBST([ProjectPatchLevel])
+])# FP_SETUP_PROJECT_VERSION
+
 # LocalWords:  fi