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