add_-latomic_to_ghc-prim
authorDebian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org>
Wed, 19 Jun 2019 21:08:21 +0000 (22:08 +0100)
committerIlias Tsitsimpis <iliastsi@debian.org>
Wed, 19 Jun 2019 21:08:21 +0000 (22:08 +0100)
commit ec9aacf3eb2975fd302609163aaef429962ecd87
Author: Moritz Angermann <moritz.angermann@gmail.com>
Date:   Thu Feb 8 16:07:07 2018 +0800

    adds -latomic to. ghc-prim

    Reviewers: bgamari, hvr

    Reviewed By: bgamari

    Subscribers: erikd, hvr, rwbarton, thomie, carter

    Differential Revision: https://phabricator.haskell.org/D4378

    iliastsi: The original patch fails to correctly detect and use C11
    atomics, so I modified it based on https://phabricator.haskell.org/D5154.

Gbp-Pq: Name add_-latomic_to_ghc-prim

aclocal.m4
configure.ac
libraries/ghc-prim/Setup.hs
libraries/ghc-prim/aclocal.m4 [new file with mode: 0644]
libraries/ghc-prim/configure.ac [new file with mode: 0644]
libraries/ghc-prim/ghc-prim.buildinfo.in [new file with mode: 0644]

index b2685af317e48cd14a208d01eb4577392b654140..1ff96ae84f5ab4762115f98b56b7e41c3b60c568 100644 (file)
@@ -1284,24 +1284,6 @@ AC_SUBST(GccIsClang)
 rm -f conftest.txt
 ])
 
-# FP_GCC_SUPPORTS__ATOMICS
-# ------------------------
-# Does gcc support the __atomic_* family of builtins?
-AC_DEFUN([FP_GCC_SUPPORTS__ATOMICS],
-[
-   AC_REQUIRE([AC_PROG_CC])
-   AC_MSG_CHECKING([whether GCC supports __atomic_ builtins])
-   echo 'int test(int *x) { int y; __atomic_load(&x, &y, __ATOMIC_SEQ_CST); return x; }' > conftest.c
-   if $CC -c conftest.c > /dev/null 2>&1; then
-       CONF_GCC_SUPPORTS__ATOMICS=YES
-       AC_MSG_RESULT([yes])
-   else
-       CONF_GCC_SUPPORTS__ATOMICS=NO
-       AC_MSG_RESULT([no])
-   fi
-   rm -f conftest.c conftest.o
-])
-
 # FP_GCC_SUPPORTS_NO_PIE
 # ----------------------
 # Does gcc support the -no-pie option? If so we should pass it to gcc when
index 222b8617f6cdb186001fc5822ae028e0fb09c089..cf28796f183685411e292dbf0660d1b3a3042058 100644 (file)
@@ -714,11 +714,6 @@ FP_GCC_VERSION
 dnl ** See whether gcc supports -no-pie
 FP_GCC_SUPPORTS_NO_PIE
 
-dnl ** Used to determine how to compile ghc-prim's atomics.c, used by
-dnl    unregisterised, Sparc, and PPC backends.
-FP_GCC_SUPPORTS__ATOMICS
-AC_DEFINE([HAVE_C11_ATOMICS], [$CONF_GCC_SUPPORTS__ATOMICS], [Does GCC support __atomic primitives?])
-
 FP_GCC_EXTRA_FLAGS
 
 dnl ** look to see if we have a C compiler using an llvm back end.
index 5bb17e239228e94e4b7c6f58e8068b6013c6d544..cccc416d789f954a09ab56bf2dda22a3a75a9d31 100644 (file)
@@ -18,7 +18,7 @@ import System.Exit
 import System.Directory
 
 main :: IO ()
-main = do let hooks = simpleUserHooks {
+main = do let hooks = autoconfUserHooks {
                   regHook = addPrimModule
                           $ regHook simpleUserHooks,
                   buildHook = build_primitive_sources
diff --git a/libraries/ghc-prim/aclocal.m4 b/libraries/ghc-prim/aclocal.m4
new file mode 100644 (file)
index 0000000..81fc44c
--- /dev/null
@@ -0,0 +1,17 @@
+# FP_GCC_SUPPORTS__ATOMICS
+# ------------------------
+# Does gcc support the __atomic_* family of builtins?
+AC_DEFUN([FP_GCC_SUPPORTS__ATOMICS],
+[
+   AC_REQUIRE([AC_PROG_CC])
+   AC_MSG_CHECKING([whether GCC supports __atomic_ builtins])
+   echo 'int test(int *x) { int y; __atomic_load(x, &y, __ATOMIC_SEQ_CST); return y; }' > conftest.c
+   if $CC -c conftest.c > /dev/null 2>&1; then
+       CONF_GCC_SUPPORTS__ATOMICS=YES
+       AC_MSG_RESULT([yes])
+   else
+       CONF_GCC_SUPPORTS__ATOMICS=NO
+       AC_MSG_RESULT([no])
+   fi
+   rm -f conftest.c conftest.o
+])
diff --git a/libraries/ghc-prim/configure.ac b/libraries/ghc-prim/configure.ac
new file mode 100644 (file)
index 0000000..8249be3
--- /dev/null
@@ -0,0 +1,18 @@
+AC_INIT([ghc-prim package], [2.1], [glasgow-haskell-bugs@haskell.org], [ghc-prim])
+
+AC_CONFIG_SRCDIR([ghc-prim.cabal])
+
+# -------------------------------------------------------------------------
+dnl ** Used to determine how to compile ghc-prim's atomics.c, used by
+dnl    unregisterised, Sparc, and PPC backends.
+FP_GCC_SUPPORTS__ATOMICS
+AC_DEFINE([HAVE_C11_ATOMICS], [$CONF_GCC_SUPPORTS__ATOMICS], [Does GCC support __atomic primitives?])
+
+if test "$CONF_GCC_SUPPORTS__ATOMICS" = "YES"
+then PRIM_CFLAGS=-DHAVE_C11_ATOMICS
+     PRIM_EXTRA_LIBRARIES=atomic
+fi
+AC_SUBST([PRIM_CFLAGS])
+AC_SUBST([PRIM_EXTRA_LIBRARIES])
+AC_CONFIG_FILES([ghc-prim.buildinfo])
+AC_OUTPUT
diff --git a/libraries/ghc-prim/ghc-prim.buildinfo.in b/libraries/ghc-prim/ghc-prim.buildinfo.in
new file mode 100644 (file)
index 0000000..a093282
--- /dev/null
@@ -0,0 +1,2 @@
+cc-options: @PRIM_CFLAGS@
+extra-libraries: @PRIM_EXTRA_LIBRARIES@
\ No newline at end of file