aboutsummaryrefslogtreecommitdiffstats
path: root/community/cmus/c11-atomics-check.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/cmus/c11-atomics-check.patch')
-rw-r--r--community/cmus/c11-atomics-check.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/community/cmus/c11-atomics-check.patch b/community/cmus/c11-atomics-check.patch
new file mode 100644
index 0000000000..b5c22e9be8
--- /dev/null
+++ b/community/cmus/c11-atomics-check.patch
@@ -0,0 +1,57 @@
+--- a/Makefile
++++ b/Makefile
+@@ -21,7 +21,7 @@
+ FFMPEG_CFLAGS += $(shell pkg-config --cflags libswresample)
+ FFMPEG_LIBS += $(shell pkg-config --libs libswresample)
+
+-CMUS_LIBS = $(PTHREAD_LIBS) $(NCURSES_LIBS) $(ICONV_LIBS) $(DL_LIBS) $(DISCID_LIBS) \
++CMUS_LIBS = $(ATOMIC_LIBS) $(PTHREAD_LIBS) $(NCURSES_LIBS) $(ICONV_LIBS) $(DL_LIBS) $(DISCID_LIBS) \
+ -lm $(COMPAT_LIBS) $(LIBSYSTEMD_LIBS)
+
+ input.o main.o ui_curses.o op/pulse.lo: .version
+--- a/configure
++++ b/configure
+@@ -39,7 +39,35 @@
+ return 1
+ }
+
++readonly atomic_code="
++#include <stdatomic.h>
+
++int main(int argc, char *argv[])
++{
++ static atomic_llong x = ATOMIC_VAR_INIT(1);
++ return atomic_fetch_add_explicit(&x, argc, memory_order_relaxed) == 2;
++}
++"
++
++check_atomic()
++{
++ msg_checking "if -latomic is needed for C11 atomics"
++ if try_compile_link "$atomic_code"
++ then
++ msg_result "no"
++ ATOMIC_LIBS=
++ elif try_compile_link "$atomic_code" -latomic
++ then
++ msg_result "yes"
++ ATOMIC_LIBS=-latomic
++ else
++ msg_result "no C11 atomics?!"
++ return 1
++ fi
++ makefile_vars ATOMIC_LIBS
++ return 0
++}
++
+ check_compat()
+ {
+ COMPAT_LIBS=
+@@ -517,6 +545,7 @@
+ check check_cflags
+ check check_cc_depgen
+ check check_endianness
++check check_atomic
+ check check_compat
+ check check_dl
+ check check_pthread