aboutsummaryrefslogtreecommitdiffstats
path: root/erts
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2013-07-29 15:08:18 +0200
committerLukas Larsson <[email protected]>2013-07-29 15:08:18 +0200
commit0642847e85a0517c4063e23f21dcd18052e8d94c (patch)
tree76b8820c5dcf3947a7e92fcb3ddda1a11bec9f90 /erts
parenta938fc96881564f5f56a510b0c750efaa9ed48e4 (diff)
downloadotp-0642847e85a0517c4063e23f21dcd18052e8d94c.tar.gz
otp-0642847e85a0517c4063e23f21dcd18052e8d94c.tar.bz2
otp-0642847e85a0517c4063e23f21dcd18052e8d94c.zip
Bailout if no native implementations are found
Some basic tests are already done in configure. This makes sure we cover all cases by bailing out when compiling as well.
Diffstat (limited to 'erts')
-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__)