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

Hendrik Leppkes h.leppkes at gmail.com
Sat Jan 22 11:00:28 EET 2022


On Sat, Jan 22, 2022 at 7:43 AM Brad Smith
<brad-at-comstyle.com at ffmpeg.org> wrote:
>
> 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.
>

This was covered earlier in the thread for the reason it is not - its
deliberate, because exhaustive functionality checks would be very
complicated.

- Hendrik


More information about the ffmpeg-devel mailing list