diff options
author | Brad King <brad.king@kitware.com> | 2023-07-28 13:08:29 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2023-07-28 13:08:40 (GMT) |
commit | 8268fc8661e54d03b02abf677c7f4afdb021e14e (patch) | |
tree | dc47bc9803c256fa9c216b8c5e876f8b4d0f635d /Source/Checks | |
parent | e1699f123e6968eab5a1c1fe2336c0ce8258b3a1 (diff) | |
parent | 78bbd585451752e7b23eafbfa1dc009fd5cda750 (diff) | |
download | CMake-8268fc8661e54d03b02abf677c7f4afdb021e14e.zip CMake-8268fc8661e54d03b02abf677c7f4afdb021e14e.tar.gz CMake-8268fc8661e54d03b02abf677c7f4afdb021e14e.tar.bz2 |
Merge topic 'cxx-atomic'
78bbd58545 Source: Link libatomic when needed on Linux 32-bit ARM
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8663
Diffstat (limited to 'Source/Checks')
-rw-r--r-- | Source/Checks/cm_cxx_atomic.cxx | 6 | ||||
-rw-r--r-- | Source/Checks/cm_cxx_atomic_builtin.cxx | 1 | ||||
-rw-r--r-- | Source/Checks/cm_cxx_atomic_lib.cxx | 1 | ||||
-rw-r--r-- | Source/Checks/cm_cxx_features.cmake | 11 |
4 files changed, 19 insertions, 0 deletions
diff --git a/Source/Checks/cm_cxx_atomic.cxx b/Source/Checks/cm_cxx_atomic.cxx new file mode 100644 index 0000000..098a7a7 --- /dev/null +++ b/Source/Checks/cm_cxx_atomic.cxx @@ -0,0 +1,6 @@ +#include <atomic> +int main() +{ + std::atomic<long long>(0).load(); + return 0; +} diff --git a/Source/Checks/cm_cxx_atomic_builtin.cxx b/Source/Checks/cm_cxx_atomic_builtin.cxx new file mode 100644 index 0000000..d284f6c --- /dev/null +++ b/Source/Checks/cm_cxx_atomic_builtin.cxx @@ -0,0 +1 @@ +#include "cm_cxx_atomic.cxx" diff --git a/Source/Checks/cm_cxx_atomic_lib.cxx b/Source/Checks/cm_cxx_atomic_lib.cxx new file mode 100644 index 0000000..d284f6c --- /dev/null +++ b/Source/Checks/cm_cxx_atomic_lib.cxx @@ -0,0 +1 @@ +#include "cm_cxx_atomic.cxx" diff --git a/Source/Checks/cm_cxx_features.cmake b/Source/Checks/cm_cxx_features.cmake index f5b7587..98d5eff 100644 --- a/Source/Checks/cm_cxx_features.cmake +++ b/Source/Checks/cm_cxx_features.cmake @@ -17,6 +17,7 @@ function(cm_check_cxx_feature name) try_run(CMake_RUN_CXX_${FEATURE} CMake_COMPILE_CXX_${FEATURE} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_LIST_DIR}/cm_cxx_${name}.cxx + LINK_LIBRARIES ${cm_check_cxx_feature_LINK_LIBRARIES} CMAKE_FLAGS ${maybe_cxx_standard} OUTPUT_VARIABLE OUTPUT ) @@ -29,6 +30,7 @@ function(cm_check_cxx_feature name) try_compile(CMake_HAVE_CXX_${FEATURE} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_LIST_DIR}/cm_cxx_${name}.cxx + LINK_LIBRARIES ${cm_check_cxx_feature_LINK_LIBRARIES} CMAKE_FLAGS ${maybe_cxx_standard} OUTPUT_VARIABLE OUTPUT ) @@ -93,3 +95,12 @@ if (NOT CMAKE_CXX_STANDARD LESS "17") else() set(CMake_HAVE_CXX_FILESYSTEM FALSE) endif() + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR MATCHES "armv7l|sparc") + cm_check_cxx_feature(atomic_builtin) + if(NOT CMake_HAVE_CXX_ATOMIC_BUILTIN) + set(cm_check_cxx_feature_LINK_LIBRARIES atomic) + cm_check_cxx_feature(atomic_lib) # defines CMake_HAVE_CXX_ATOMIC_LIB + unset(cm_check_cxx_feature_LINK_LIBRARIES) + endif() +endif() |