summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--toolchain/toolchain-common.in19
1 files changed, 17 insertions, 2 deletions
diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
index 46970a68e3..0907c5e830 100644
--- a/toolchain/toolchain-common.in
+++ b/toolchain/toolchain-common.in
@@ -378,15 +378,30 @@ config BR2_TOOLCHAIN_HAS_SYNC_8
default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8
+# libatomic is available since gcc 4.8, when thread support is
+# enabled.
+config BR2_TOOLCHAIN_HAS_LIBATOMIC
+ bool
+ default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
+ BR2_TOOLCHAIN_HAS_THREADS
+
# __atomic intrinsics are available:
# - with gcc 4.8, either through built-ins or libatomic, on all
-# architectures
+# architectures. Since we don't want to separate the cases where
+# libatomic is needed vs. not needed, we simplify thing and only
+# support situations where libatomic is available, even if on some
+# architectures libatomic is not strictly needed as all __atomic
+# intrinsics might be built-in. The only case where libatomic is
+# missing entirely is when the toolchain does not have support for
+# threads. However, a package that does not need threads but still
+# uses atomics is quite a corner case, which does not warrant the
+# added complexity.
# - with gcc 4.7, libatomic did not exist, so only built-ins are
# available. This means that __atomic can only be used in a subset
# of the architectures
config BR2_TOOLCHAIN_HAS_ATOMIC
bool
- default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+ default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb
default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa
OpenPOWER on IntegriCloud