diff --git a/configure b/configure index f5196e115c..051b216be5 100755 --- a/configure +++ b/configure @@ -1264,6 +1264,12 @@ THREADS_LIST=' os2threads ' +ATOMICS_LIST=' + atomics_gcc + atomics_win32 + atomics_suncc +' + ARCH_LIST=' aarch64 alpha @@ -1374,6 +1380,7 @@ HAVE_LIST=" $HAVE_LIST_CMDLINE $HAVE_LIST_PUB $THREADS_LIST + $ATOMICS_LIST $MATH_FUNCS access aligned_malloc @@ -1384,6 +1391,7 @@ HAVE_LIST=" asm_mod_q asm_mod_y asm_types_h + atomics_native attribute_may_alias attribute_packed cdio_paranoia_h @@ -3909,6 +3917,10 @@ if enabled pthreads; then check_func pthread_cancel fi +enabled sync_val_compare_and_swap && enable atomics_gcc +enabled machine_rw_barrier && enable atomics_suncc +enabled MemoryBarrier && enable atomics_win32 + check_lib math.h sin -lm && LIBM="-lm" disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd enabled vaapi && require vaapi va/va.h vaInitialize -lva @@ -4248,8 +4260,9 @@ case $target_os in ;; esac -enabled_any $THREADS_LIST && enable threads enable frame_thread_encoder +enabled_any $THREADS_LIST && enable threads +enabled_any $ATOMICS_LIST && enable atomics_native enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } diff --git a/libavutil/Makefile b/libavutil/Makefile index b520473d9b..92dea3b1ab 100644 --- a/libavutil/Makefile +++ b/libavutil/Makefile @@ -114,9 +114,9 @@ OBJS += $(COMPAT_OBJS:%=../compat/%) SKIPHEADERS = old_pix_fmts.h -SKIPHEADERS-$(HAVE_MACHINE_RW_BARRIER) += atomic_suncc.h -SKIPHEADERS-$(HAVE_MEMORYBARRIER) += atomic_win32.h -SKIPHEADERS-$(HAVE_SYNC_VAL_COMPARE_AND_SWAP) += atomic_gcc.h +SKIPHEADERS-$(HAVE_ATOMICS_SUNCC) += atomic_suncc.h +SKIPHEADERS-$(HAVE_ATOMICS_WIN32) += atomic_win32.h +SKIPHEADERS-$(HAVE_ATOMICS_GCC) += atomic_gcc.h TESTPROGS = adler32 \ aes \ diff --git a/libavutil/atomic.c b/libavutil/atomic.c index 0780d8a679..04182f2330 100644 --- a/libavutil/atomic.c +++ b/libavutil/atomic.c @@ -20,7 +20,7 @@ #include "atomic.h" -#if !HAVE_MEMORYBARRIER && !HAVE_SYNC_VAL_COMPARE_AND_SWAP && !HAVE_MACHINE_RW_BARRIER +#if !HAVE_ATOMICS_NATIVE #if HAVE_PTHREADS diff --git a/libavutil/atomic.h b/libavutil/atomic.h index 1d2a34548e..fd7d8fc03e 100644 --- a/libavutil/atomic.h +++ b/libavutil/atomic.h @@ -23,11 +23,11 @@ #include "config.h" -#if HAVE_SYNC_VAL_COMPARE_AND_SWAP +#if HAVE_ATOMICS_GCC #include "atomic_gcc.h" -#elif HAVE_MEMORYBARRIER +#elif HAVE_ATOMICS_WIN32 #include "atomic_win32.h" -#elif HAVE_MACHINE_RW_BARRIER +#elif HAVE_ATOMICS_SUNCC #include "atomic_suncc.h" #else