| From 5a635a0066b10d2ba25e0ce78cc57b2be619371c Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| Date: Mon, 8 Aug 2016 23:34:32 +0200 |
| Subject: [PATCH] wscript: improve stdatomic check |
| |
| The current stdatomic check verifies the availability of the function by |
| calling atomic_load(). It also uses this test to check if linking |
| against libatomic is needed or not. |
| |
| Unfortunately, on specific architectures (namely SPARC), using |
| atomic_load() does *not* require linking against libatomic, while other |
| atomic operations do. Due to this, mpv's wscript concludes that |
| stdatomic is available, and that linking against libatomic is not |
| needed, causing the following link failure: |
| |
| [190/190] Linking build/mpv |
| audio/out/ao.c.13.o: In function `ao_query_and_reset_events': |
| /home/peko/autobuild/instance-0/output/build/mpv-0.18.1/build/../audio/out/ao.c:399: undefined reference to `__atomic_fetch_and_4' |
| |
| In order to fix this, the stdatomic check is adjusted to call |
| atomic_fetch_add() instead, which does require libatomic. Thanks to |
| this, the wscript realizes that linking against libatomic is needed, and |
| the build works fine. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| --- |
| Submitted upstream: https://github.com/mpv-player/mpv/pull/3403 |
| |
| wscript | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/wscript b/wscript |
| index a18df6f..4c49caf 100644 |
| --- a/wscript |
| +++ b/wscript |
| @@ -154,7 +154,7 @@ main_dependencies = [ |
| 'func': check_libs(['atomic'], |
| check_statement('stdatomic.h', |
| 'atomic_int_least64_t test = ATOMIC_VAR_INIT(123);' |
| - 'int test2 = atomic_load(&test)')) |
| + 'atomic_fetch_add(&test, 1)')) |
| }, { |
| 'name': 'atomic-builtins', |
| 'desc': 'compiler support for __atomic built-ins', |
| -- |
| 2.7.4 |
| |