https://bugs.kde.org/show_bug.cgi?id=430872
Bug ID: 430872
Summary: Fails to build on RISC-V due to failing to link with
atomics
Product: krita
Version: 4.4.1
Platform: Debian unstable
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: General
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Hi,
Krita [fails to build on RISC-V with Debian
unstable](https://buildd.debian.org/status/package.php?p=krita&suite=sid), and
although I don't have a patch, I'm pretty sure I've found the cause. (I'm more
of a GLib/GTK person myself.)
It fails like
/usr/bin/ld: CMakeFiles/kritaimage.dir/tiles3/kis_tile_data_store.cc.o: in
function `Leapfrog<ConcurrentMap<int, KisTileData*, DefaultKeyTraits<int>,
DefaultValueTraits<KisTileData*> > >::TableMigration::run()':
./obj-riscv64-linux-gnu/libs/image/./libs/image/3rdparty/lock_free_map/leapfrog.h:475:
undefined reference to `__atomic_exchange_1'
```
The CMake module that tries to check atomic support seems to be doing this:
if (LLVM_COMPILER_IS_GCC_COMPATIBLE)
# First check if atomics work without the library.
check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB)
# If not, check if the library exists, and atomics work with it.
if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
check_library_exists(atomic __atomic_fetch_add_4 ""
HAVE_LIBATOMIC)
On RISC-V, atomics of four and eight bytes do not require library support (such
as with `-pthread`), but for one and two bytes it does. Hence if this check is
missing out on checking the need to link for one-byte atomics, that would
explain the failure.
For a more eloquent explanation, here's a similar issue in zstd that was fixed:
https://github.com/facebook/zstd/pull/1103
--
You are receiving this mail because:
You are watching all bug changes.