|
@@ -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
|