summaryrefslogtreecommitdiff
path: root/media-gfx/krita/files/krita-5.0.0-clang.patch
blob: 6c9c71d4fca2731ff41b076d40b0a7782512edae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
From 0b755beaa1fdba03d38f887b93a15a58fc0830c7 Mon Sep 17 00:00:00 2001
From: Sharaf Zaman <shzam@sdf.org>
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<uint64_t> 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