aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2013-08-08 10:25:46 +0200
committerLukas Larsson <[email protected]>2013-08-08 10:25:46 +0200
commit3fbbe6760a0476fccc2375dc8ca5791546dbc876 (patch)
tree5e7b93a5ac7b77232177fcfa75001cead382afb6
parent4ba61d6fd151172768c62f254ca46371014f2061 (diff)
parent0642847e85a0517c4063e23f21dcd18052e8d94c (diff)
downloadotp-3fbbe6760a0476fccc2375dc8ca5791546dbc876.tar.gz
otp-3fbbe6760a0476fccc2375dc8ca5791546dbc876.tar.bz2
otp-3fbbe6760a0476fccc2375dc8ca5791546dbc876.zip
Merge branch 'lukas/erts/ethr_smp_req_native_compiletime/OTP-11196' into maint
* lukas/erts/ethr_smp_req_native_compiletime/OTP-11196: Bailout if no native implementations are found
-rw-r--r--erts/configure.in5
-rw-r--r--erts/include/internal/ethread.h4
2 files changed, 8 insertions, 1 deletions
diff --git a/erts/configure.in b/erts/configure.in
index 2f624e5853..64436e933c 100644
--- a/erts/configure.in
+++ b/erts/configure.in
@@ -1051,12 +1051,15 @@ if test $ERTS_BUILD_SMP_EMU = yes; then
AC_DEFINE(ERTS_HAVE_SMP_EMU, 1, [Define if the smp emulator is built])
+ test "X$smp_require_native_atomics" = "Xyes" &&
+ AC_DEFINE(ETHR_SMP_REQUIRE_NATIVE_IMPLS, 1, [Define if you want to enable check for native ethread implementations])
+
case "$ethr_have_native_atomics-$smp_require_native_atomics-$ethr_have_native_spinlock" in
yes-*)
;;
no-yes-*)
- AC_MSG_ERROR([No native atomic implementation found. See INSTALL.md for more information.])
+ AC_MSG_ERROR([No native atomic implementation found. See Configuring section in INSTALL.md for more information.])
;;
no-no-yes)
diff --git a/erts/include/internal/ethread.h b/erts/include/internal/ethread.h
index 407097d4b1..38b8e9e9b6 100644
--- a/erts/include/internal/ethread.h
+++ b/erts/include/internal/ethread.h
@@ -361,6 +361,10 @@ extern ethr_runtime_t ethr_runtime__;
# endif
#endif /* !ETHR_DISABLE_NATIVE_IMPLS */
+#if !defined(ETHR_HAVE_NATIVE_ATOMIC32) && !defined(ETHR_HAVE_NATIVE_ATOMIC64) && !defined(ETHR_DISABLE_NATIVE_IMPLS) && defined(ETHR_SMP_REQUIRE_NATIVE_IMPLS)
+#error "No native ethread implementation found. If you want to use fallbacks you have to disable native ethread support with configure."
+#endif
+
#include "ethr_atomics.h" /* The atomics API */
#if defined(__GNUC__)