From: Samuel Martin Date: Thu, 26 May 2016 21:46:40 +0000 (+0200) Subject: cmake: add check for explicit linking against libatomic X-Git-Tag: pulseview-0.4.0~292 X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=commitdiff_plain;h=4da54b6be6a1ca19a2026908d48ae5c8d327ec86;hp=4da54b6be6a1ca19a2026908d48ae5c8d327ec86 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. This fixes bug #810. Signed-off-by: Samuel Martin ---