Make another parse error more informative
[ghc-hetmet.git] / aclocal.m4
index 031145d..5358cc2 100644 (file)
@@ -4,6 +4,24 @@
 # ensure we don't clash with any pre-supplied autoconf ones.
 
 
+# FPTOOLS_SET_C_LD_FLAGS
+# ----------------------------------
+# Set the C and LD flags for a given platform
+AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
+[
+    case $$1 in
+    i386-apple-darwin|powerpc-apple-darwin)
+        $2="$$2 -m32"
+        $3="$$3 -m32"
+        ;;
+    x86_64-apple-darwin)
+        $2="$$2 -m64"
+        $3="$$3 -m64"
+        ;;
+    esac
+])
+
+
 # FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
 # ----------------------------------
 # Little endian Arm on Linux with some ABIs has big endian word order
@@ -907,24 +925,24 @@ fi
 # FP_PROG_GHC_PKG
 # ----------------
 # Try to find a ghc-pkg matching the ghc mentioned in the environment variable
-# WithGhc. If the latter is unset or no matching ghc-pkg can be found, try to
-# find a plain ghc-pkg. Sets the output variable GhcPkgCmd.
+# WithGhc. Sets the output variable GhcPkgCmd.
 AC_DEFUN([FP_PROG_GHC_PKG],
 [AC_CACHE_CHECK([for ghc-pkg matching $WithGhc], fp_cv_matching_ghc_pkg,
-[fp_ghc_pkg_guess=`echo $WithGhc | sed 's,ghc\(@<:@^/\\@:>@*\)$,ghc-pkg\1,'`
-if "$fp_ghc_pkg_guess" -l > /dev/null 2>&1; then
-  fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess
-elif "$fp_ghc_pkg_guess" list > /dev/null 2>&1; then
-  # from 6.10, ghc-pkg doesn't support the old -l syntax any more
+[
+# If we are told to use ghc-stage2, then we're using an in-tree
+# compiler. In this case, we just want ghc-pkg, not ghc-pkg-stage2,
+# so we sed off -stage[0-9]$. However, if we are told to use
+# ghc-6.12.1 then we want to use ghc-pkg-6.12.1, so we keep any
+# other suffix.
+fp_ghc_pkg_guess=`echo $WithGhc | sed -e 's/-stage@<:@0-9@:>@$//' -e 's,ghc\(@<:@^/\\@:>@*\)$,ghc-pkg\1,'`
+if "$fp_ghc_pkg_guess" list > /dev/null 2>&1; then
   fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess
 else
-  fp_cv_matching_ghc_pkg=no
+  AC_MSG_ERROR([Cannot find matching ghc-pkg])
 fi])
-if test x"$fp_cv_matching_ghc_pkg" = xno; then
-  AC_PATH_PROG([GhcPkgCmd], [ghc-pkg])
-else
-  GhcPkgCmd=$fp_cv_matching_ghc_pkg
-fi])# FP_PROG_GHC_PKG
+GhcPkgCmd=$fp_cv_matching_ghc_pkg
+AC_SUBST([GhcPkgCmd])
+])# FP_PROG_GHC_PKG
 
 
 # FP_GCC_EXTRA_FLAGS
@@ -944,6 +962,9 @@ fi])# FP_PROG_GHC_PKG
 # reordering things in the module and confusing the manger and/or splitter.
 # (eg. Trac #1427)
 #
+# If gcc knows about the stack protector, turn it off.
+# Otherwise the stack-smash handler gets triggered.
+#
 AC_DEFUN([FP_GCC_EXTRA_FLAGS],
 [AC_REQUIRE([FP_HAVE_GCC])
 AC_CACHE_CHECK([for extra options to pass gcc when compiling via C], [fp_cv_gcc_extra_opts],
@@ -969,6 +990,12 @@ AC_CACHE_CHECK([for extra options to pass gcc when compiling via C], [fp_cv_gcc_
       [])
   ;;
  esac
+ echo 'int main(void) {return 0;}' > conftest.c
+ if $CC -c conftest.c -fno-stack-protector > /dev/null 2>&1
+ then
+     fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-stack-protector"
+ fi
+ rm conftest.c conftest.o
 ])
 AC_SUBST([GccExtraViaCOpts],$fp_cv_gcc_extra_opts)
 ])