[FFmpeg-devel] [PATCH 1/2] compat: drop gcc, suncc, and pthreads stdatomic emulation
Anton Khirnov
anton at khirnov.net
Mon Sep 9 17:51:15 EEST 2024
Since we now require a C11-compliant compiler, there should be no
supported configurations where any of these is used.
---
compat/atomics/gcc/stdatomic.h | 173 -------------------------
compat/atomics/pthread/stdatomic.c | 39 ------
compat/atomics/pthread/stdatomic.h | 197 -----------------------------
compat/atomics/suncc/stdatomic.h | 186 ---------------------------
configure | 19 +--
5 files changed, 1 insertion(+), 613 deletions(-)
delete mode 100644 compat/atomics/gcc/stdatomic.h
delete mode 100644 compat/atomics/pthread/stdatomic.c
delete mode 100644 compat/atomics/pthread/stdatomic.h
delete mode 100644 compat/atomics/suncc/stdatomic.h
diff --git a/compat/atomics/gcc/stdatomic.h b/compat/atomics/gcc/stdatomic.h
deleted file mode 100644
index e13ed0e068..0000000000
--- a/compat/atomics/gcc/stdatomic.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * based on vlc_atomic.h from VLC
- * Copyright (C) 2010 Rémi Denis-Courmont
- */
-
-#ifndef COMPAT_ATOMICS_GCC_STDATOMIC_H
-#define COMPAT_ATOMICS_GCC_STDATOMIC_H
-
-#include <stddef.h>
-#include <stdint.h>
-
-#define ATOMIC_FLAG_INIT 0
-
-#define ATOMIC_VAR_INIT(value) (value)
-
-#define atomic_init(obj, value) \
-do { \
- *(obj) = (value); \
-} while(0)
-
-#define kill_dependency(y) ((void)0)
-
-#define atomic_thread_fence(order) \
- __sync_synchronize()
-
-#define atomic_signal_fence(order) \
- ((void)0)
-
-#define atomic_is_lock_free(obj) 0
-
-typedef _Bool atomic_flag;
-typedef _Bool atomic_bool;
-typedef char atomic_char;
-typedef signed char atomic_schar;
-typedef unsigned char atomic_uchar;
-typedef short atomic_short;
-typedef unsigned short atomic_ushort;
-typedef int atomic_int;
-typedef unsigned int atomic_uint;
-typedef long atomic_long;
-typedef unsigned long atomic_ulong;
-typedef long long atomic_llong;
-typedef unsigned long long atomic_ullong;
-typedef wchar_t atomic_wchar_t;
-typedef int_least8_t atomic_int_least8_t;
-typedef uint_least8_t atomic_uint_least8_t;
-typedef int_least16_t atomic_int_least16_t;
-typedef uint_least16_t atomic_uint_least16_t;
-typedef int_least32_t atomic_int_least32_t;
-typedef uint_least32_t atomic_uint_least32_t;
-typedef int_least64_t atomic_int_least64_t;
-typedef uint_least64_t atomic_uint_least64_t;
-typedef int_fast8_t atomic_int_fast8_t;
-typedef uint_fast8_t atomic_uint_fast8_t;
-typedef int_fast16_t atomic_int_fast16_t;
-typedef uint_fast16_t atomic_uint_fast16_t;
-typedef int_fast32_t atomic_int_fast32_t;
-typedef uint_fast32_t atomic_uint_fast32_t;
-typedef int_fast64_t atomic_int_fast64_t;
-typedef uint_fast64_t atomic_uint_fast64_t;
-typedef intptr_t atomic_intptr_t;
-typedef uintptr_t atomic_uintptr_t;
-typedef size_t atomic_size_t;
-typedef ptrdiff_t atomic_ptrdiff_t;
-typedef intmax_t atomic_intmax_t;
-typedef uintmax_t atomic_uintmax_t;
-
-#define atomic_store(object, desired) \
-do { \
- *(object) = (desired); \
- __sync_synchronize(); \
-} while (0)
-
-#define atomic_store_explicit(object, desired, order) \
- atomic_store(object, desired)
-
-#define atomic_load(object) \
- (__sync_synchronize(), *(object))
-
-#define atomic_load_explicit(object, order) \
- atomic_load(object)
-
-#define atomic_exchange(object, desired) \
-({ \
- __typeof__(object) _obj = (object); \
- __typeof__(*object) _old; \
- do \
- _old = atomic_load(_obj); \
- while (!__sync_bool_compare_and_swap(_obj, _old, (desired))); \
- _old; \
-})
-
-#define atomic_exchange_explicit(object, desired, order) \
- atomic_exchange(object, desired)
-
-#define atomic_compare_exchange_strong(object, expected, desired) \
-({ \
- __typeof__(object) _exp = (expected); \
- __typeof__(*object) _old = *_exp; \
- *_exp = __sync_val_compare_and_swap((object), _old, (desired)); \
- *_exp == _old; \
-})
-
-#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
- atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak(object, expected, desired) \
- atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
- atomic_compare_exchange_weak(object, expected, desired)
-
-#define atomic_fetch_add(object, operand) \
- __sync_fetch_and_add(object, operand)
-
-#define atomic_fetch_add_explicit(object, operand, order) \
- atomic_fetch_add(object, operand)
-
-#define atomic_fetch_sub(object, operand) \
- __sync_fetch_and_sub(object, operand)
-
-#define atomic_fetch_sub_explicit(object, operand, order) \
- atomic_fetch_sub(object, operand)
-
-#define atomic_fetch_or(object, operand) \
- __sync_fetch_and_or(object, operand)
-
-#define atomic_fetch_or_explicit(object, operand, order) \
- atomic_fetch_or(object, operand)
-
-#define atomic_fetch_xor(object, operand) \
- __sync_fetch_and_xor(object, operand)
-
-#define atomic_fetch_xor_explicit(object, operand, order) \
- atomic_fetch_xor(object, operand)
-
-#define atomic_fetch_and(object, operand) \
- __sync_fetch_and_and(object, operand)
-
-#define atomic_fetch_and_explicit(object, operand, order) \
- atomic_fetch_and(object, operand)
-
-#define atomic_flag_test_and_set(object) \
- atomic_exchange(object, 1)
-
-#define atomic_flag_test_and_set_explicit(object, order) \
- atomic_flag_test_and_set(object)
-
-#define atomic_flag_clear(object) \
- atomic_store(object, 0)
-
-#define atomic_flag_clear_explicit(object, order) \
- atomic_flag_clear(object)
-
-#endif /* COMPAT_ATOMICS_GCC_STDATOMIC_H */
diff --git a/compat/atomics/pthread/stdatomic.c b/compat/atomics/pthread/stdatomic.c
deleted file mode 100644
index 9fca98980b..0000000000
--- a/compat/atomics/pthread/stdatomic.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * based on vlc_atomic.h from VLC
- * Copyright (C) 2010 Rémi Denis-Courmont
- */
-
-#include <pthread.h>
-#include <stdint.h>
-
-#include "stdatomic.h"
-
-static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER;
-
-void avpriv_atomic_lock(void)
-{
- pthread_mutex_lock(&atomic_lock);
-}
-
-void avpriv_atomic_unlock(void)
-{
- pthread_mutex_unlock(&atomic_lock);
-}
diff --git a/compat/atomics/pthread/stdatomic.h b/compat/atomics/pthread/stdatomic.h
deleted file mode 100644
index 81a60f102b..0000000000
--- a/compat/atomics/pthread/stdatomic.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/*
- * based on vlc_atomic.h from VLC
- * Copyright (C) 2010 Rémi Denis-Courmont
- */
-
-#ifndef COMPAT_ATOMICS_PTHREAD_STDATOMIC_H
-#define COMPAT_ATOMICS_PTHREAD_STDATOMIC_H
-
-#include <stdint.h>
-
-#define ATOMIC_FLAG_INIT 0
-
-#define ATOMIC_VAR_INIT(value) (value)
-
-#define atomic_init(obj, value) \
-do { \
- *(obj) = (value); \
-} while(0)
-
-#define kill_dependency(y) ((void)0)
-
-#define atomic_signal_fence(order) \
- ((void)0)
-
-#define atomic_is_lock_free(obj) 0
-
-typedef intptr_t atomic_flag;
-typedef intptr_t atomic_bool;
-typedef intptr_t atomic_char;
-typedef intptr_t atomic_schar;
-typedef intptr_t atomic_uchar;
-typedef intptr_t atomic_short;
-typedef intptr_t atomic_ushort;
-typedef intptr_t atomic_int;
-typedef intptr_t atomic_uint;
-typedef intptr_t atomic_long;
-typedef intptr_t atomic_ulong;
-typedef intptr_t atomic_llong;
-typedef intptr_t atomic_ullong;
-typedef intptr_t atomic_wchar_t;
-typedef intptr_t atomic_int_least8_t;
-typedef intptr_t atomic_uint_least8_t;
-typedef intptr_t atomic_int_least16_t;
-typedef intptr_t atomic_uint_least16_t;
-typedef intptr_t atomic_int_least32_t;
-typedef intptr_t atomic_uint_least32_t;
-typedef intptr_t atomic_int_least64_t;
-typedef intptr_t atomic_uint_least64_t;
-typedef intptr_t atomic_int_fast8_t;
-typedef intptr_t atomic_uint_fast8_t;
-typedef intptr_t atomic_int_fast16_t;
-typedef intptr_t atomic_uint_fast16_t;
-typedef intptr_t atomic_int_fast32_t;
-typedef intptr_t atomic_uint_fast32_t;
-typedef intptr_t atomic_int_fast64_t;
-typedef intptr_t atomic_uint_fast64_t;
-typedef intptr_t atomic_intptr_t;
-typedef intptr_t atomic_uintptr_t;
-typedef intptr_t atomic_size_t;
-typedef intptr_t atomic_ptrdiff_t;
-typedef intptr_t atomic_intmax_t;
-typedef intptr_t atomic_uintmax_t;
-
-void avpriv_atomic_lock(void);
-void avpriv_atomic_unlock(void);
-
-static inline void atomic_thread_fence(int order)
-{
- avpriv_atomic_lock();
- avpriv_atomic_unlock();
-}
-
-static inline void atomic_store(intptr_t *object, intptr_t desired)
-{
- avpriv_atomic_lock();
- *object = desired;
- avpriv_atomic_unlock();
-}
-
-#define atomic_store_explicit(object, desired, order) \
- atomic_store(object, desired)
-
-static inline intptr_t atomic_load(intptr_t *object)
-{
- intptr_t ret;
- avpriv_atomic_lock();
- ret = *object;
- avpriv_atomic_unlock();
- return ret;
-}
-
-#define atomic_load_explicit(object, order) \
- atomic_load(object)
-
-static inline intptr_t atomic_exchange(intptr_t *object, intptr_t desired)
-{
- intptr_t ret;
- avpriv_atomic_lock();
- ret = *object;
- *object = desired;
- avpriv_atomic_unlock();
- return ret;
-}
-
-#define atomic_exchange_explicit(object, desired, order) \
- atomic_exchange(object, desired)
-
-static inline int atomic_compare_exchange_strong(intptr_t *object, intptr_t *expected,
- intptr_t desired)
-{
- int ret;
- avpriv_atomic_lock();
- if (*object == *expected) {
- ret = 1;
- *object = desired;
- } else {
- ret = 0;
- *expected = *object;
- }
- avpriv_atomic_unlock();
- return ret;
-}
-
-#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
- atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak(object, expected, desired) \
- atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
- atomic_compare_exchange_weak(object, expected, desired)
-
-#define FETCH_MODIFY(opname, op) \
-static inline intptr_t atomic_fetch_ ## opname(intptr_t *object, intptr_t operand) \
-{ \
- intptr_t ret; \
- avpriv_atomic_lock(); \
- ret = *object; \
- *object = *object op operand; \
- avpriv_atomic_unlock(); \
- return ret; \
-}
-
-FETCH_MODIFY(add, +)
-FETCH_MODIFY(sub, -)
-FETCH_MODIFY(or, |)
-FETCH_MODIFY(xor, ^)
-FETCH_MODIFY(and, &)
-
-#undef FETCH_MODIFY
-
-#define atomic_fetch_add_explicit(object, operand, order) \
- atomic_fetch_add(object, operand)
-
-#define atomic_fetch_sub_explicit(object, operand, order) \
- atomic_fetch_sub(object, operand)
-
-#define atomic_fetch_or_explicit(object, operand, order) \
- atomic_fetch_or(object, operand)
-
-#define atomic_fetch_xor_explicit(object, operand, order) \
- atomic_fetch_xor(object, operand)
-
-#define atomic_fetch_and_explicit(object, operand, order) \
- atomic_fetch_and(object, operand)
-
-#define atomic_flag_test_and_set(object) \
- atomic_exchange(object, 1)
-
-#define atomic_flag_test_and_set_explicit(object, order) \
- atomic_flag_test_and_set(object)
-
-#define atomic_flag_clear(object) \
- atomic_store(object, 0)
-
-#define atomic_flag_clear_explicit(object, order) \
- atomic_flag_clear(object)
-
-#endif /* COMPAT_ATOMICS_PTHREAD_STDATOMIC_H */
diff --git a/compat/atomics/suncc/stdatomic.h b/compat/atomics/suncc/stdatomic.h
deleted file mode 100644
index 0cf89e0f78..0000000000
--- a/compat/atomics/suncc/stdatomic.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * This file is part of FFmpeg.
- *
- * FFmpeg is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * FFmpeg is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef COMPAT_ATOMICS_SUNCC_STDATOMIC_H
-#define COMPAT_ATOMICS_SUNCC_STDATOMIC_H
-
-#include <atomic.h>
-#include <mbarrier.h>
-#include <stddef.h>
-#include <stdint.h>
-
-#define ATOMIC_FLAG_INIT 0
-
-#define ATOMIC_VAR_INIT(value) (value)
-
-#define atomic_init(obj, value) \
-do { \
- *(obj) = (value); \
-} while(0)
-
-#define kill_dependency(y) ((void)0)
-
-#define atomic_thread_fence(order) \
- __machine_rw_barrier();
-
-#define atomic_signal_fence(order) \
- ((void)0)
-
-#define atomic_is_lock_free(obj) 0
-
-typedef intptr_t atomic_flag;
-typedef intptr_t atomic_bool;
-typedef intptr_t atomic_char;
-typedef intptr_t atomic_schar;
-typedef intptr_t atomic_uchar;
-typedef intptr_t atomic_short;
-typedef intptr_t atomic_ushort;
-typedef intptr_t atomic_int;
-typedef intptr_t atomic_uint;
-typedef intptr_t atomic_long;
-typedef intptr_t atomic_ulong;
-typedef intptr_t atomic_llong;
-typedef intptr_t atomic_ullong;
-typedef intptr_t atomic_wchar_t;
-typedef intptr_t atomic_int_least8_t;
-typedef intptr_t atomic_uint_least8_t;
-typedef intptr_t atomic_int_least16_t;
-typedef intptr_t atomic_uint_least16_t;
-typedef intptr_t atomic_int_least32_t;
-typedef intptr_t atomic_uint_least32_t;
-typedef intptr_t atomic_int_least64_t;
-typedef intptr_t atomic_uint_least64_t;
-typedef intptr_t atomic_int_fast8_t;
-typedef intptr_t atomic_uint_fast8_t;
-typedef intptr_t atomic_int_fast16_t;
-typedef intptr_t atomic_uint_fast16_t;
-typedef intptr_t atomic_int_fast32_t;
-typedef intptr_t atomic_uint_fast32_t;
-typedef intptr_t atomic_int_fast64_t;
-typedef intptr_t atomic_uint_fast64_t;
-typedef intptr_t atomic_intptr_t;
-typedef intptr_t atomic_uintptr_t;
-typedef intptr_t atomic_size_t;
-typedef intptr_t atomic_ptrdiff_t;
-typedef intptr_t atomic_intmax_t;
-typedef intptr_t atomic_uintmax_t;
-
-static inline void atomic_store(intptr_t *object, intptr_t desired)
-{
- *object = desired;
- __machine_rw_barrier();
-}
-
-#define atomic_store_explicit(object, desired, order) \
- atomic_store(object, desired)
-
-static inline intptr_t atomic_load(intptr_t *object)
-{
- __machine_rw_barrier();
- return *object;
-}
-
-#define atomic_load_explicit(object, order) \
- atomic_load(object)
-
-#define atomic_exchange(object, desired) \
- atomic_swap_ptr(object, desired)
-
-#define atomic_exchange_explicit(object, desired, order) \
- atomic_exchange(object, desired)
-
-static inline int atomic_compare_exchange_strong(intptr_t *object, intptr_t *expected,
- intptr_t desired)
-{
- intptr_t old = *expected;
- *expected = (intptr_t)atomic_cas_ptr(object, (void *)old, (void *)desired);
- return *expected == old;
-}
-
-#define atomic_compare_exchange_strong_explicit(object, expected, desired, success, failure) \
- atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak(object, expected, desired) \
- atomic_compare_exchange_strong(object, expected, desired)
-
-#define atomic_compare_exchange_weak_explicit(object, expected, desired, success, failure) \
- atomic_compare_exchange_weak(object, expected, desired)
-
-static inline intptr_t atomic_fetch_add(intptr_t *object, intptr_t operand)
-{
- return atomic_add_ptr_nv(object, operand) - operand;
-}
-
-#define atomic_fetch_sub(object, operand) \
- atomic_fetch_add(object, -(operand))
-
-static inline intptr_t atomic_fetch_or(intptr_t *object, intptr_t operand)
-{
- intptr_t old;
- do {
- old = atomic_load(object);
- } while (!atomic_compare_exchange_strong(object, old, old | operand));
- return old;
-}
-
-static inline intptr_t atomic_fetch_xor(intptr_t *object, intptr_t operand)
-{
- intptr_t old;
- do {
- old = atomic_load(object);
- } while (!atomic_compare_exchange_strong(object, old, old ^ operand));
- return old;
-}
-
-static inline intptr_t atomic_fetch_and(intptr_t *object, intptr_t operand)
-{
- intptr_t old;
- do {
- old = atomic_load(object);
- } while (!atomic_compare_exchange_strong(object, old, old & operand));
- return old;
-}
-
-#define atomic_fetch_add_explicit(object, operand, order) \
- atomic_fetch_add(object, operand)
-
-#define atomic_fetch_sub_explicit(object, operand, order) \
- atomic_fetch_sub(object, operand)
-
-#define atomic_fetch_or_explicit(object, operand, order) \
- atomic_fetch_or(object, operand)
-
-#define atomic_fetch_xor_explicit(object, operand, order) \
- atomic_fetch_xor(object, operand)
-
-#define atomic_fetch_and_explicit(object, operand, order) \
- atomic_fetch_and(object, operand)
-
-#define atomic_flag_test_and_set(object) \
- atomic_exchange(object, 1)
-
-#define atomic_flag_test_and_set_explicit(object, order) \
- atomic_flag_test_and_set(object)
-
-#define atomic_flag_clear(object) \
- atomic_store(object, 0)
-
-#define atomic_flag_clear_explicit(object, order) \
- atomic_flag_clear(object)
-
-#endif /* COMPAT_ATOMICS_SUNCC_STDATOMIC_H */
diff --git a/configure b/configure
index a8e67d230c..172f8ce2fe 100755
--- a/configure
+++ b/configure
@@ -2117,8 +2117,6 @@ THREADS_LIST="
"
ATOMICS_LIST="
- atomics_gcc
- atomics_suncc
atomics_win32
"
@@ -2249,13 +2247,10 @@ ARCH_FEATURES="
"
BUILTIN_LIST="
- atomic_cas_ptr
- machine_rw_barrier
MemoryBarrier
mm_empty
rdtsc
sem_timedwait
- sync_val_compare_and_swap
"
HAVE_LIST_CMDLINE="
inline_asm
@@ -2833,8 +2828,6 @@ valgrind_backtrace_conflict="optimizations"
valgrind_backtrace_deps="valgrind_valgrind_h"
# threading support
-atomics_gcc_if="sync_val_compare_and_swap"
-atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
atomics_win32_if="MemoryBarrier"
atomics_native_if_any="$ATOMICS_LIST"
w32threads_deps="atomics_native"
@@ -6506,10 +6499,7 @@ if ! disabled network; then
fi
fi
-check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
-check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
check_builtin MemoryBarrier windows.h "MemoryBarrier()"
-check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)"
check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)"
@@ -7766,15 +7756,8 @@ for thread in $THREADS_LIST; do
done
if disabled stdatomic; then
- if enabled atomics_gcc; then
- add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
- elif enabled atomics_win32; then
+ if enabled atomics_win32; then
add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
- elif enabled atomics_suncc; then
- add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
- elif enabled pthreads; then
- add_compat atomics/pthread/stdatomic.o
- add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
else
enabled threads && die "Threading is enabled, but no atomics are available"
add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
--
2.43.0
More information about the ffmpeg-devel
mailing list