Annotate thread stop events with the owner of the black hole
[ghc-hetmet.git] / aclocal.m4
index f386b35..09ef225 100644 (file)
@@ -6,9 +6,15 @@
 
 # FPTOOLS_SET_C_LD_FLAGS
 # ----------------------------------
-# Set the C and LD flags for a given platform
+# Set the C, LD and CPP flags for a given platform
+# $1 is the platform
+# $2 is the name of the CC flags variable
+# $3 is the name of the linker flags variable when linking with gcc
+# $4 is the name of the linker flags variable when linking with ld
+# $5 is the name of the CPP flags variable
 AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
 [
+    AC_MSG_CHECKING([Setting up $2, $3, $4 and $5])
     case $$1 in
     i386-apple-darwin)
         # By default, gcc on OS X will generate SSE
@@ -17,10 +23,24 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
         # back to generic i686 compatibility. Trac #2983.
         $2="$$2 -march=i686 -m32"
         $3="$$3 -march=i686 -m32"
+        $4="$$4 -arch i386"
+        $5="$$5 -march=i686 -m32"
         ;;
     x86_64-apple-darwin)
         $2="$$2 -m64"
         $3="$$3 -m64"
+        $4="$$4 -arch x86_64"
+        $5="$$5 -m64"
+        ;;
+    esac
+
+    case $$1 in
+    i386-apple-darwin|x86_64-apple-darwin)
+        # We support back to OS X 10.5
+        $2="$$2 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"
+        $3="$$3 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"
+        $4="$$4  -macosx_version_min 10.5"
+        $5="$$5 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"
         ;;
     esac
 
@@ -31,7 +51,26 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
     then
         $2="$$2 -fno-stack-protector"
     fi
-    rm conftest.c conftest.o
+    rm -f conftest.c conftest.o
+    AC_MSG_RESULT([done])
+])
+
+
+# FP_VISIBILITY_HIDDEN
+# ----------------------------------
+# Is the visibility hidden attribute supported?
+AC_DEFUN([FP_VISIBILITY_HIDDEN],
+[
+    AC_MSG_CHECKING([whether __attribute__((visibility("hidden"))) is supported])
+    echo '__attribute__((visibility("hidden"))) void foo(void) {}' > conftest.c
+    if $CC -Wall -Werror -c conftest.c > /dev/null 2>&1
+    then
+        AC_MSG_RESULT([yes])
+        AC_DEFINE(HAS_VISIBILITY_HIDDEN, 1, [Has visibility hidden])
+    else
+        AC_MSG_RESULT([no])
+    fi
+    rm -f conftest.c conftest.o
 ])
 
 
@@ -1199,27 +1238,53 @@ case $fptools_cv_timer_create_works in
 esac
 ])
 
-# FP_ARG_GMP
+# FP_ICONV
 # -------------
-AC_DEFUN([FP_ARG_GMP],
+AC_DEFUN([FP_ICONV],
 [
-AC_ARG_WITH([gmp-includes],
-  [AC_HELP_STRING([--with-gmp-includes],
-    [directory containing gmp.h])],
-    [gmp_includes=$withval],
-    [gmp_includes=NONE])
-
-AC_ARG_WITH([gmp-libraries],
-  [AC_HELP_STRING([--with-gmp-libraries],
-    [directory containing gmp library])],
-    [gmp_libraries=$withval],
-    [gmp_libraries=NONE])
-])# FP_ARG_GMP
-
-AC_DEFUN([CHECK_GMP],
-[AC_REQUIRE([AC_PROG_CPP])
-AC_REQUIRE([AC_PROG_CC])
-])
+  dnl--------------------------------------------------------------------
+  dnl * Deal with arguments telling us iconv is somewhere odd
+  dnl--------------------------------------------------------------------
+
+  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)
+])# FP_ICONV
+
+# FP_GMP
+# -------------
+AC_DEFUN([FP_GMP],
+[
+  dnl--------------------------------------------------------------------
+  dnl * Deal with arguments telling us gmp is somewhere odd
+  dnl--------------------------------------------------------------------
+
+  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_GMP
 
 # FP_CHECK_MACOSX_DEPLOYMENT_TARGET
 # ---------------------------------
@@ -1254,43 +1319,49 @@ fi
 # Calculate absolute path to build tree
 # --------------------------------------------------------------
 
-AC_DEFUN([FP_FIND_ROOT],[
-AC_MSG_CHECKING(for path to top of build tree)
+AC_DEFUN([FP_INTREE_GHC_PWD],[
+AC_MSG_NOTICE(Building in-tree ghc-pwd)
+    dnl This would be
+    dnl     make -C utils/ghc-pwd clean && make -C utils/ghc-pwd
+    dnl except we don't want to have to know what make is called. Sigh.
+    rm -rf utils/ghc-pwd/dist-boot
+    mkdir  utils/ghc-pwd/dist-boot
+    if ! "$WithGhc" -v0 -no-user-package-conf -hidir utils/ghc-pwd/dist-boot -odir utils/ghc-pwd/dist-boot -stubdir utils/ghc-pwd/dist-boot --make utils/ghc-pwd/Main.hs -o utils/ghc-pwd/dist-boot/ghc-pwd
+    then
+        AC_MSG_ERROR([Building ghc-pwd failed])
+    fi
 
-dnl This would be
-dnl     make -C utils/ghc-pwd clean && make -C utils/ghc-pwd
-dnl except we don't want to have to know what make is called. Sigh.
-if test ! -f utils/ghc-pwd/ghc-pwd && test ! -f utils/ghc-pwd/ghc-pwd.exe; then
-  cd utils/ghc-pwd
-  rm -f *.o
-  rm -f *.hi
-  rm -f ghc-pwd
-  rm -f ghc-pwd.exe
-  "$WithGhc" -v0 -no-user-package-conf --make ghc-pwd -o ghc-pwd
-  cd ../..
-fi
+    GHC_PWD=utils/ghc-pwd/dist-boot/ghc-pwd
+])
 
-hardtop=`utils/ghc-pwd/ghc-pwd`
+AC_DEFUN([FP_BINDIST_GHC_PWD],[
+    GHC_PWD=utils/ghc-pwd/dist/build/tmp/ghc-pwd
+])
 
-if ! test -d "$hardtop"; then
-  AC_MSG_ERROR([cannot determine current directory])
-fi   
+AC_DEFUN([FP_FIND_ROOT],[
+AC_MSG_CHECKING(for path to top of build tree)
+    hardtop=`$GHC_PWD`
 
-dnl Remove common automounter nonsense
-dnl
-hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'`
+    dnl Remove common automounter nonsense
+    hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'`
 
-AC_SUBST(hardtop)
+    if ! test -d "$hardtop"; then
+        AC_MSG_ERROR([cannot determine current directory])
+    fi
 
-AC_MSG_RESULT(${hardtop})
+    dnl We don't support building in directories with spaces.
+    case "$hardtop" in
+    *' '*)
+        AC_MSG_ERROR([
+        The build system does not support building in a directory
+        containing space characters.
+        Suggestion: move the build tree somewhere else.])
+        ;;
+    esac
 
-# We don't support building in directories with spaces.
-case "$hardtop" in
-  *' '*) AC_MSG_ERROR([
-   The build system does not support building in a directory containing
-   space characters.  Suggestion: move the build tree somewhere else.])
- ;;
-esac
+    AC_SUBST(hardtop)
+
+    AC_MSG_RESULT($hardtop)
 ])
 
 # GHC_CONVERT_CPU(cpu, target_var)