summaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-11-23 21:54:53 -0800
committerMichael Niedermayer <michael@niedermayer.cc>2016-11-27 13:07:07 +0100
commit6a4e24280dd7f15c41628ebfb01ee25661d8b258 (patch)
tree7e27e5d9959222deb21fe99e138dc9e87b152a88 /configure
parent4719e563a4237adb5bf83119bba46b61c2e40ceb (diff)
configure: check for stdatomic.h
Since this is a C11 feature, it requires -std=c11. Not actually used for anything yet, that will be added in the following commits. This merges libav commit 13f5d2bf75b95a0bfdb9940a5e359a719e242bed. Signed-off-by: Wan-Teh Chang <wtc@google.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure29
1 files changed, 28 insertions, 1 deletions
diff --git a/configure b/configure
index d0c00564ec..8041ca84c1 100755
--- a/configure
+++ b/configure
@@ -1189,6 +1189,19 @@ check_cpp_condition(){
EOF
}
+test_cflags_cpp(){
+ log test_cflags_cpp "$@"
+ flags=$1
+ condition=$2
+ shift 2
+ set -- $($cflags_filter "$flags")
+ check_cpp "$@" <<EOF
+#if !($condition)
+#error "unsatisfied condition: $condition"
+#endif
+EOF
+}
+
check_lib(){
log check_lib "$@"
header="$1"
@@ -1836,6 +1849,7 @@ HEADERS_LIST="
poll_h
sndio_h
soundcard_h
+ stdatomic_h
sys_mman_h
sys_param_h
sys_resource_h
@@ -4579,7 +4593,15 @@ fi
add_cppflags -D_ISOC99_SOURCE
add_cxxflags -D__STDC_CONSTANT_MACROS
add_cxxflags -std=c++98
-check_cflags -std=c99
+
+# some compilers silently accept -std=c11, so we also need to check that the
+# version macro is defined properly
+if test_cflags_cpp -std=c11 "__STDC_VERSION__ >= 201112L"; then
+ add_cflags -std=c11
+else
+ check_cflags -std=c99
+fi
+
check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
#include <stdlib.h>
EOF
@@ -5569,6 +5591,11 @@ check_header windows.h
check_header X11/extensions/XvMClib.h
check_header asm/types.h
+# it seems there are versions of clang in some distros that try to use the
+# gcc headers, which explodes for stdatomic
+# so we also check that atomics actually work here
+check_builtin stdatomic_h stdatomic.h "atomic_int foo; atomic_store(&foo, 0)"
+
check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi