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

Brad Smith brad at comstyle.com
Sat Jan 22 08:42:55 EET 2022


On 1/19/2022 10:23 AM, James Almer wrote:

> 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 &&

Wait, this should be checking without first then with, if the first test 
without fails.



More information about the ffmpeg-devel mailing list