diff options
author | Lukas Larsson <[email protected]> | 2013-07-29 15:08:18 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2013-07-29 15:08:18 +0200 |
commit | 0642847e85a0517c4063e23f21dcd18052e8d94c (patch) | |
tree | 76b8820c5dcf3947a7e92fcb3ddda1a11bec9f90 | |
parent | a938fc96881564f5f56a510b0c750efaa9ed48e4 (diff) | |
download | otp-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.
-rw-r--r-- | erts/configure.in | 5 | ||||
-rw-r--r-- | erts/include/internal/ethread.h | 4 |
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__) |