From 0b755beaa1fdba03d38f887b93a15a58fc0830c7 Mon Sep 17 00:00:00 2001 From: Sharaf Zaman Date: Wed, 27 Oct 2021 22:19:07 +0000 Subject: [PATCH] Fix build on linux clang targets In CheckAtomic.cmake we include is_lock_free because these routines don't seem to be included in the compiler's "simple atomics". This triggers a failure in clang toolchain, forcing it to link libatomic. Resulting in error: ld.lld: error: undefined symbol: __atomic_is_lock_free CCBUG:444247 CCBUG:444547 --- cmake/modules/CheckAtomic.cmake | 1 + libs/image/CMakeLists.txt | 6 ++---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/cmake/modules/CheckAtomic.cmake b/cmake/modules/CheckAtomic.cmake index b061e2d65b..df6b70504c 100644 --- a/cmake/modules/CheckAtomic.cmake +++ b/cmake/modules/CheckAtomic.cmake @@ -46,6 +46,7 @@ function(check_working_cxx_atomics64 varname) std::atomic x (0); int main() { uint64_t i = x.load(std::memory_order_relaxed); + x.is_lock_free(); return 0; } " ${varname}) diff --git a/libs/image/CMakeLists.txt b/libs/image/CMakeLists.txt index e883c7f1c8..43c945fad3 100644 --- a/libs/image/CMakeLists.txt +++ b/libs/image/CMakeLists.txt @@ -372,10 +372,8 @@ target_link_libraries(kritaimage target_link_libraries(kritaimage PUBLIC ${Boost_SYSTEM_LIBRARY}) -if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB) - if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB) - target_link_libraries(kritaimage PUBLIC atomic) - endif() +if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB) + target_link_libraries(kritaimage PUBLIC atomic) endif() if(OpenEXR_FOUND) -- GitLab