[FFmpeg-devel] [PATCH] configure: link to libatomic when it's present

James Almer jamrial at gmail.com
Wed Jan 19 17:23:26 EET 2022


On 1/19/2022 10:48 AM, Anton Khirnov wrote:
> C11 atomics in some configurations (e.g. 64bit operations on ppc64 with
> GCC) require linking to libatomic.
> 
> Fixes #9275
> ---
>   configure | 25 ++++++++++++++++---------
>   1 file changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/configure b/configure
> index 1413122d87..3059c154df 100755
> --- a/configure
> +++ b/configure
> @@ -3794,20 +3794,20 @@ cws2fws_extralibs="zlib_extralibs"
>   
>   # libraries, in any order
>   avcodec_deps="avutil"
> -avcodec_suggest="libm"
> +avcodec_suggest="libm stdatomic"
>   avdevice_deps="avformat avcodec avutil"
> -avdevice_suggest="libm"
> +avdevice_suggest="libm stdatomic"
>   avfilter_deps="avutil"
> -avfilter_suggest="libm"
> +avfilter_suggest="libm stdatomic"
>   avformat_deps="avcodec avutil"
> -avformat_suggest="libm network zlib"
> -avutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi vulkan videotoolbox corefoundation corevideo coremedia bcrypt"
> +avformat_suggest="libm network zlib stdatomic"
> +avutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi vulkan videotoolbox corefoundation corevideo coremedia bcrypt stdatomic"
>   postproc_deps="avutil gpl"
> -postproc_suggest="libm"
> +postproc_suggest="libm stdatomic"
>   swresample_deps="avutil"
> -swresample_suggest="libm libsoxr"
> +swresample_suggest="libm libsoxr stdatomic"
>   swscale_deps="avutil"
> -swscale_suggest="libm"
> +swscale_suggest="libm stdatomic"
>   
>   avcodec_extralibs="pthreads_extralibs iconv_extralibs dxva2_extralibs"
>   avfilter_extralibs="pthreads_extralibs"
> @@ -6324,7 +6324,14 @@ check_headers 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 stdatomic.h "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0); foo += bar"
> +#
> +# some configurations also require linking to libatomic, so try
> +# both with -latomic and without
> +for LATOMIC in "-latomic" ""; do
> +    check_builtin stdatomic stdatomic.h                                                 \
> +        "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0); foo += bar"  \
> +        $LATOMIC && eval stdatomic_extralibs="\$LATOMIC" && break
> +done

LGTM now, thanks.

>   
>   check_lib advapi32 "windows.h"            RegCloseKey          -ladvapi32
>   check_lib bcrypt   "windows.h bcrypt.h"   BCryptGenRandom      -lbcrypt &&


More information about the ffmpeg-devel mailing list