diff options
-rw-r--r-- | configure.ac | 21 | ||||
-rw-r--r-- | rts/rts.cabal.in | 5 |
2 files changed, 26 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index d69ff312b8..67c645a3d0 100644 --- a/configure.ac +++ b/configure.ac @@ -1211,6 +1211,27 @@ AC_CHECK_FUNC(pthread_create, AC_DEFINE_UNQUOTED([NEED_PTHREAD_LIB], [$need_lpthread], [Define 1 if we need to link code using pthreads with -lpthread]) +AC_MSG_CHECKING(whether -latomic is needed for sub-word-sized atomic operations) +AC_CHECK_FUNC(atomic_fetch_or, + [ + AC_MSG_RESULT(no) + AC_SUBST([CabalNeedAtomic],[False]) + need_latomic=0 + ], + [ + AC_CHECK_LIB(atomic, atomic_fetch_or, + [ + AC_MSG_RESULT(yes) + AC_SUBST([CabalNeedAtomic],[True]) + need_latomic=1 + ], + [ + AC_SUBST([CabalNeedAtomic],[False]) + AC_MSG_ERROR([sub-word-sized atomic operations not available.]) + need_latomic=0 + ]) + ]) + dnl ** pthread_setname_np is a recent addition to glibc, and OS X has dnl a different single-argument version. AC_CHECK_LIB(pthread, pthread_setname_np) diff --git a/rts/rts.cabal.in b/rts/rts.cabal.in index ed727111ca..b41e3538b0 100644 --- a/rts/rts.cabal.in +++ b/rts/rts.cabal.in @@ -18,6 +18,8 @@ flag libbfd default: @CabalHaveLibbfd@ flag mingwex default: @CabalMingwex@ +flag need-atomic + default: @CabalNeedLibatomic@ flag libdw default: @CabalHaveLibdw@ flag libnuma @@ -120,6 +122,9 @@ library if flag(need-pthread) -- for pthread_getthreadid_np, pthread_create, ... extra-libraries: pthread + if flag(need-libatomic) + -- for sub-word-sized atomic operations (#19119) + extra-libraries: atomic if flag(libbfd) -- for debugging extra-libraries: bfd iberty |