]> sigrok.org Git - pulseview.git/commit
cmake: add check for explicit linking against libatomic
authorSamuel Martin <redacted>
Thu, 26 May 2016 21:46:40 +0000 (23:46 +0200)
committerUwe Hermann <redacted>
Sun, 12 Jun 2016 18:20:29 +0000 (20:20 +0200)
commit4da54b6be6a1ca19a2026908d48ae5c8d327ec86
tree5a3574cc7a12b2d000d1d7489741bfa7c9361008
parentbb4dede4c8bd711628566d3eb2136442f7205a41
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 <redacted>
CMakeLists.txt