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 /erts | |
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.
Diffstat (limited to 'erts')
-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__) |