https://github.com/Z3Prover/z3/commit/3d87d86c2825437780167ae6ff8f5b203f15ee7f.patch https://bugs.gentoo.org/835003 From b2b407cdedc586f8d11f9dd029e1c3016c80bba7 Mon Sep 17 00:00:00 2001 From: Revy Date: Tue, 15 Mar 2022 02:11:40 +0800 Subject: [PATCH] fix: build on non-x86 platform Signed-off-by: Revy --- CMakeLists.txt | 5 +++++ cmake/check_link_atomic.cmake | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 cmake/check_link_atomic.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index be300607dd..477410ba8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -431,6 +431,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") string(APPEND CMAKE_SHARED_LINKER_FLAGS " /RELEASE") endif() +################################################################################ +# Check atomic linking as needed +################################################################################ +include(${PROJECT_SOURCE_DIR}/cmake/check_link_atomic.cmake) + ################################################################################ # Report default CMake flags ################################################################################ diff --git a/cmake/check_link_atomic.cmake b/cmake/check_link_atomic.cmake new file mode 100644 index 0000000000..d462191a0b --- /dev/null +++ b/cmake/check_link_atomic.cmake @@ -0,0 +1,23 @@ +set(ATOMIC_TEST_SOURCE " +#include +std::atomic x; +std::atomic y; +std::atomic z; +std::atomic w; +int main() { + ++z; + ++y; + ++w; + return ++x; +}") +CHECK_CXX_SOURCE_COMPILES("${ATOMIC_TEST_SOURCE}" BUILTIN_ATOMIC) +if (NOT BUILTIN_ATOMIC) + set(CMAKE_REQUIRED_LIBRARIES atomic) + CHECK_CXX_SOURCE_COMPILES("${ATOMIC_TEST_SOURCE}" ATOMICS_REQUIRE_LIBATOMIC) + unset(CMAKE_REQUIRED_LIBRARIES) + if (ATOMICS_REQUIRE_LIBATOMIC) + list(APPEND Z3_DEPENDENT_LIBS atomic) + else() + message(FATAL_ERROR "Host compiler must support std::atomic!") + endif() +endif()