Link against atomic if needed (found on armel)
authorJochen Sprickerhof <git@jochen.sprickerhof.de>
Sat, 1 Feb 2020 23:22:36 +0000 (00:22 +0100)
committerJochen Sprickerhof <jspricke@debian.org>
Sun, 25 Sep 2022 10:41:19 +0000 (11:41 +0100)
Gbp-Pq: Name 0002-Link-against-atomic-if-needed-found-on-armel.patch

CMakeLists.txt
cmake/pcl_targets.cmake

index 1e61bfdb59993f9e5d40712f297dbf4415111e53..02b690d02f5d05e1efc85f83cd89b88e71e614cd 100644 (file)
@@ -57,6 +57,20 @@ elseif(MINGW)
   set(CMAKE_COMPILER_IS_MINGW 1)
 endif()
 
+# https://github.com/fish-shell/fish-shell/issues/5865
+include(CheckCXXSourceCompiles)
+CHECK_CXX_SOURCE_COMPILES("
+#include <atomic>
+struct big { int foo[64]; };
+std::atomic<big> x;
+int main() {
+   return x.load().foo[13];
+}"
+LIBATOMIC_NOT_NEEDED)
+IF (NOT LIBATOMIC_NOT_NEEDED)
+    SET(ATOMIC_LIBRARY "atomic")
+ENDIF()
+
 # Create a variable with expected default CXX flags
 # This will be used further down the road to check if the user explicitly provided CXX flags
 if(CMAKE_COMPILER_IS_MSVC)
index ff79c207612eed6f4b92dc49d20f66a8d8aacc74..f12a472375cf59fa7932a5d0bb08ff1df9f4fa4e 100644 (file)
@@ -230,7 +230,7 @@ function(PCL_ADD_LIBRARY _name)
   endif()
 
   if((UNIX AND NOT ANDROID) OR MINGW)
-    target_link_libraries(${_name} m)
+    target_link_libraries(${_name} m ${ATOMIC_LIBRARY})
   endif()
 
   if(MINGW)
@@ -391,7 +391,7 @@ macro(PCL_ADD_TEST _name _exename)
   #target_link_libraries(${_exename} ${GTEST_BOTH_LIBRARIES} ${PCL_ADD_TEST_LINK_WITH})
   target_link_libraries(${_exename} ${PCL_ADD_TEST_LINK_WITH} ${CLANG_LIBRARIES})
 
-  target_link_libraries(${_exename} Threads::Threads)
+  target_link_libraries(${_exename} Threads::Threads ${ATOMIC_LIBRARY})
 
   #Only applies to MSVC
   if(MSVC)