diff options
Diffstat (limited to 'package/pulseview/0002-cmake-add-check-for-explicit-linking-against-libatom.patch')
-rw-r--r-- | package/pulseview/0002-cmake-add-check-for-explicit-linking-against-libatom.patch | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/package/pulseview/0002-cmake-add-check-for-explicit-linking-against-libatom.patch b/package/pulseview/0002-cmake-add-check-for-explicit-linking-against-libatom.patch deleted file mode 100644 index 70549e6d72..0000000000 --- a/package/pulseview/0002-cmake-add-check-for-explicit-linking-against-libatom.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 71830c804be76cf6abe913ac2fe584947b7a91ea Mon Sep 17 00:00:00 2001 -From: Samuel Martin <s.martin49@gmail.com> -Date: Tue, 24 May 2016 23:08:40 +0200 -Subject: [PATCH] cmake: add check for explicit linking against libatomic - -To use atomics functions, some toolchains requires to explicitly add --latomic to the linker flags (because they are not provided by libc, -but libatomic). - -This change adds a helper function trying to build/link a test program -using atomics, then calls it to: -* first check if atomics are directly available in the libc; -* if not and libatomic has been found, then run the same test with - "-latomic" added to the linker flags. -The pulseview link library list is updated according to the results of -these tests. - -This issue was triggered by the Buildroot farms: - http://autobuild.buildroot.org/results/1e3/1e3101261252d5f30fdf842cc99604e4f4c25eef/build-end.log - -Notes: -1- CMAKE_REQUIRED_* variables are only used in check functions. They - are not automatically forwarded to/handled by the target commands - (such as target_link_library), because the check functions are - implemented as macro in CMake code, whereas many target commands - are native. -2- Because of note #1, CMAKE_REQUIRED_LIBRARIES (or its value) must be - explicitly passed to the target_link_library command when this is - needed. -3- In this implementation, LIBATOMIC_LIBRARY is only set when it is - needed; so, unconditionally appending it to PULSEVIEW_LINK_LIBS - will produce the expected behavior. - -Signed-off-by: Samuel Martin <s.martin49@gmail.com> - ---- -changes v1->v2: -- use std::atomic_fetch_add_explicit function instead of - __atomic_fetch_add_4; -- rework code using cmake_*_check_state and find_library helpers; -- quiet-ize checks and clean outputs -- extend the commit log ---- - CMakeLists.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 50 insertions(+) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9dac69f..44f810e 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -107,6 +107,55 @@ endif() - # This will set ${CMAKE_THREAD_LIBS_INIT} to the correct, OS-specific value. - find_package(Threads REQUIRED) - -+ -+# Check for explicit link against libatomic -+# -+# Depending on the toolchain, linking a program using atomic functions may need -+# "-latomic" explicitly passed to the linker -+# -+# This check first tests if atomics are available in the C-library, if not and -+# libatomic exists, then it runs the same test with -latomic added to the -+# linker flags. -+ -+# Helper for checking for atomics -+function(check_working_cxx_atomics varname additional_lib) -+ include(CheckCXXSourceCompiles) -+ include(CMakePushCheckState) -+ cmake_push_check_state() -+ set(CMAKE_REQUIRED_FLAGS "-std=c++11") -+ set(CMAKE_REQUIRED_LIBRARIES "${additional_lib}") -+ set(CMAKE_REQUIRED_QUIET 1) -+ CHECK_CXX_SOURCE_COMPILES(" -+#include <atomic> -+std::atomic<int> x; -+int main() { -+ return std::atomic_fetch_add_explicit(&x, 1, std::memory_order_seq_cst); -+} -+" ${varname}) -+ cmake_pop_check_state() -+endfunction(check_working_cxx_atomics) -+ -+# First check if atomics work without the library. -+# If not, check if the library exists, and atomics work with it. -+check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB "") -+if(HAVE_CXX_ATOMICS_WITHOUT_LIB) -+ message(STATUS "Atomics provided by the C-library - yes") -+else() -+ message(STATUS "Atomics provided by the C-library - no") -+ find_library(LIBATOMIC_LIBRARY NAMES atomic PATH_SUFFIXES lib) -+ if(LIBATOMIC_LIBRARY) -+ check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB "${LIBATOMIC_LIBRARY}") -+ if (HAVE_CXX_ATOMICS_WITH_LIB) -+ message(STATUS "Atomics provided by libatomic - yes") -+ else() -+ message(STATUS "Atomics provided by libatomic - no") -+ message(FATAL_ERROR "Compiler must support std::atomic!") -+ endif() -+ else() -+ message(FATAL_ERROR "Compiler appears to require libatomic, but cannot find it.") -+ endif() -+endif() -+ - #=============================================================================== - #= System Introspection - #------------------------------------------------------------------------------- -@@ -387,6 +436,7 @@ set(PULSEVIEW_LINK_LIBS - ${Boost_LIBRARIES} - ${QT_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} -+ ${LIBATOMIC_LIBRARY} - ) - - if(STATIC_PKGDEPS_LIBS) --- -2.8.3 - |