Summary: | Build failure on Linux Clang targets with usage of atomics | ||
---|---|---|---|
Product: | [Frameworks and Libraries] extra-cmake-modules | Reporter: | sh_zam <shzam> |
Component: | general | Assignee: | ecm-bugs-null <ecm-bugs-null> |
Status: | REPORTED --- | ||
Severity: | normal | CC: | alex.fan.q |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Manjaro | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
sh_zam
2021-10-28 14:41:48 UTC
Git commit 0b755beaa1fdba03d38f887b93a15a58fc0830c7 by Sharaf Zaman. Committed on 28/10/2021 at 14:42. Pushed by szaman into branch 'master'. 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 Related: bug 444247 M +1 -0 cmake/modules/CheckAtomic.cmake M +2 -4 libs/image/CMakeLists.txt https://invent.kde.org/graphics/krita/commit/0b755beaa1fdba03d38f887b93a15a58fc0830c7 Can we include the ```HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB``` part in 5.1.0 and possibly also 5.0.x? Currently as I see, this patch only exists in master branch. The reason is not clang specific, but on platforms like riscv that have builtin 64bits atomics while lacks anything smaller, HAVE_CXX_ATOMICS_WITHOUT_LIB is FALSE and HAVE_CXX_ATOMICS64_WITHOUT_LIB is TRUE. So the condition ``` if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB) if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)``` still doesn't link atomic though checkatomic.cmake sets these value correctly. Git commit 1418085400e95b5a13218e98d318333dd591e8b9 by L. E. Segovia, on behalf of Sharaf Zaman. Committed on 17/03/2022 at 14:50. Pushed by lsegovia into branch 'krita/5.0'. 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 Related: bug 444247 (cherry picked from commit 0b755beaa1fdba03d38f887b93a15a58fc0830c7) M +1 -0 cmake/modules/CheckAtomic.cmake M +2 -4 libs/image/CMakeLists.txt https://invent.kde.org/graphics/krita/commit/1418085400e95b5a13218e98d318333dd591e8b9 |