Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
   377         kx #!/bin/sh
   377         kx #
   377         kx # FFmpeg configure script
   377         kx #
   377         kx # Copyright (c) 2000-2002 Fabrice Bellard
   377         kx # Copyright (c) 2005-2008 Diego Biurrun
   377         kx # Copyright (c) 2005-2008 Mans Rullgard
   377         kx #
   377         kx 
   377         kx # Prevent locale nonsense from breaking basic text processing.
   377         kx LC_ALL=C
   377         kx export LC_ALL
   377         kx 
   377         kx # make sure we are running under a compatible shell
   377         kx # try to make this part work with most shells
   377         kx 
   377         kx try_exec(){
   377         kx     echo "Trying shell $1"
   377         kx     type "$1" > /dev/null 2>&1 && exec "$@"
   377         kx }
   377         kx 
   377         kx unset foo
   377         kx (: ${foo%%bar}) 2> /dev/null
   377         kx E1="$?"
   377         kx 
   377         kx (: ${foo?}) 2> /dev/null
   377         kx E2="$?"
   377         kx 
   377         kx if test "$E1" != 0 || test "$E2" = 0; then
   377         kx     echo "Broken shell detected.  Trying alternatives."
   377         kx     export FF_CONF_EXEC
   377         kx     if test "0$FF_CONF_EXEC" -lt 1; then
   377         kx         FF_CONF_EXEC=1
   377         kx         try_exec bash "$0" "$@"
   377         kx     fi
   377         kx     if test "0$FF_CONF_EXEC" -lt 2; then
   377         kx         FF_CONF_EXEC=2
   377         kx         try_exec ksh "$0" "$@"
   377         kx     fi
   377         kx     if test "0$FF_CONF_EXEC" -lt 3; then
   377         kx         FF_CONF_EXEC=3
   377         kx         try_exec /usr/xpg4/bin/sh "$0" "$@"
   377         kx     fi
   377         kx     echo "No compatible shell script interpreter found."
   377         kx     echo "This configure script requires a POSIX-compatible shell"
   377         kx     echo "such as bash or ksh."
   377         kx     echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
   377         kx     echo "Instead, install a working POSIX-compatible shell."
   377         kx     echo "Disabling this configure test will create a broken FFmpeg."
   377         kx     if test "$BASH_VERSION" = '2.04.0(1)-release'; then
   377         kx         echo "This bash version ($BASH_VERSION) is broken on your platform."
   377         kx         echo "Upgrade to a later version if available."
   377         kx     fi
   377         kx     exit 1
   377         kx fi
   377         kx 
   377         kx test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH
   377         kx 
   377         kx show_help(){
   377         kx     cat <<EOF
   377         kx Usage: configure [options]
   377         kx Options: [defaults in brackets after descriptions]
   377         kx 
   377         kx Help options:
   377         kx   --help                   print this message
   377         kx   --quiet                  Suppress showing informative output
   377         kx   --list-decoders          show all available decoders
   377         kx   --list-encoders          show all available encoders
   377         kx   --list-hwaccels          show all available hardware accelerators
   377         kx   --list-demuxers          show all available demuxers
   377         kx   --list-muxers            show all available muxers
   377         kx   --list-parsers           show all available parsers
   377         kx   --list-protocols         show all available protocols
   377         kx   --list-bsfs              show all available bitstream filters
   377         kx   --list-indevs            show all available input devices
   377         kx   --list-outdevs           show all available output devices
   377         kx   --list-filters           show all available filters
   377         kx 
   377         kx Standard options:
   377         kx   --logfile=FILE           log tests and output to FILE [ffbuild/config.log]
   377         kx   --disable-logging        do not log configure debug information
   377         kx   --fatal-warnings         fail if any configure warning is generated
   377         kx   --prefix=PREFIX          install in PREFIX [$prefix_default]
   377         kx   --bindir=DIR             install binaries in DIR [PREFIX/bin]
   377         kx   --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
   377         kx   --docdir=DIR             install documentation in DIR [PREFIX/share/doc/ffmpeg]
   377         kx   --libdir=DIR             install libs in DIR [PREFIX/lib]
   377         kx   --shlibdir=DIR           install shared libs in DIR [LIBDIR]
   377         kx   --incdir=DIR             install includes in DIR [PREFIX/include]
   377         kx   --mandir=DIR             install man page in DIR [PREFIX/share/man]
   377         kx   --pkgconfigdir=DIR       install pkg-config files in DIR [LIBDIR/pkgconfig]
   377         kx   --enable-rpath           use rpath to allow installing libraries in paths
   377         kx                            not part of the dynamic linker search path
   377         kx                            use rpath when linking programs (USE WITH CARE)
   377         kx   --install-name-dir=DIR   Darwin directory name for installed targets
   377         kx 
   377         kx Licensing options:
   377         kx   --enable-gpl             allow use of GPL code, the resulting libs
   377         kx                            and binaries will be under GPL [no]
   377         kx   --enable-version3        upgrade (L)GPL to version 3 [no]
   377         kx   --enable-nonfree         allow use of nonfree code, the resulting libs
   377         kx                            and binaries will be unredistributable [no]
   377         kx 
   377         kx Configuration options:
   377         kx   --disable-static         do not build static libraries [no]
   377         kx   --enable-shared          build shared libraries [no]
   377         kx   --enable-small           optimize for size instead of speed
   377         kx   --disable-runtime-cpudetect disable detecting CPU capabilities at runtime (smaller binary)
   377         kx   --enable-gray            enable full grayscale support (slower color)
   377         kx   --disable-swscale-alpha  disable alpha channel support in swscale
   377         kx   --disable-all            disable building components, libraries and programs
   377         kx   --disable-autodetect     disable automatically detected external libraries [no]
   377         kx 
   377         kx Program options:
   377         kx   --disable-programs       do not build command line programs
   377         kx   --disable-ffmpeg         disable ffmpeg build
   377         kx   --disable-ffplay         disable ffplay build
   377         kx   --disable-ffprobe        disable ffprobe build
   377         kx 
   377         kx Documentation options:
   377         kx   --disable-doc            do not build documentation
   377         kx   --disable-htmlpages      do not build HTML documentation pages
   377         kx   --disable-manpages       do not build man documentation pages
   377         kx   --disable-podpages       do not build POD documentation pages
   377         kx   --disable-txtpages       do not build text documentation pages
   377         kx 
   377         kx Component options:
   377         kx   --disable-avdevice       disable libavdevice build
   377         kx   --disable-avcodec        disable libavcodec build
   377         kx   --disable-avformat       disable libavformat build
   377         kx   --disable-swresample     disable libswresample build
   377         kx   --disable-swscale        disable libswscale build
   377         kx   --disable-postproc       disable libpostproc build
   377         kx   --disable-avfilter       disable libavfilter build
   377         kx   --enable-avresample      enable libavresample build (deprecated) [no]
   377         kx   --disable-pthreads       disable pthreads [autodetect]
   377         kx   --disable-w32threads     disable Win32 threads [autodetect]
   377         kx   --disable-os2threads     disable OS/2 threads [autodetect]
   377         kx   --disable-network        disable network support [no]
   377         kx   --disable-dct            disable DCT code
   377         kx   --disable-dwt            disable DWT code
   377         kx   --disable-error-resilience disable error resilience code
   377         kx   --disable-lsp            disable LSP code
   377         kx   --disable-lzo            disable LZO decoder code
   377         kx   --disable-mdct           disable MDCT code
   377         kx   --disable-rdft           disable RDFT code
   377         kx   --disable-fft            disable FFT code
   377         kx   --disable-faan           disable floating point AAN (I)DCT code
   377         kx   --disable-pixelutils     disable pixel utils in libavutil
   377         kx 
   377         kx Individual component options:
   377         kx   --disable-everything     disable all components listed below
   377         kx   --disable-encoder=NAME   disable encoder NAME
   377         kx   --enable-encoder=NAME    enable encoder NAME
   377         kx   --disable-encoders       disable all encoders
   377         kx   --disable-decoder=NAME   disable decoder NAME
   377         kx   --enable-decoder=NAME    enable decoder NAME
   377         kx   --disable-decoders       disable all decoders
   377         kx   --disable-hwaccel=NAME   disable hwaccel NAME
   377         kx   --enable-hwaccel=NAME    enable hwaccel NAME
   377         kx   --disable-hwaccels       disable all hwaccels
   377         kx   --disable-muxer=NAME     disable muxer NAME
   377         kx   --enable-muxer=NAME      enable muxer NAME
   377         kx   --disable-muxers         disable all muxers
   377         kx   --disable-demuxer=NAME   disable demuxer NAME
   377         kx   --enable-demuxer=NAME    enable demuxer NAME
   377         kx   --disable-demuxers       disable all demuxers
   377         kx   --enable-parser=NAME     enable parser NAME
   377         kx   --disable-parser=NAME    disable parser NAME
   377         kx   --disable-parsers        disable all parsers
   377         kx   --enable-bsf=NAME        enable bitstream filter NAME
   377         kx   --disable-bsf=NAME       disable bitstream filter NAME
   377         kx   --disable-bsfs           disable all bitstream filters
   377         kx   --enable-protocol=NAME   enable protocol NAME
   377         kx   --disable-protocol=NAME  disable protocol NAME
   377         kx   --disable-protocols      disable all protocols
   377         kx   --enable-indev=NAME      enable input device NAME
   377         kx   --disable-indev=NAME     disable input device NAME
   377         kx   --disable-indevs         disable input devices
   377         kx   --enable-outdev=NAME     enable output device NAME
   377         kx   --disable-outdev=NAME    disable output device NAME
   377         kx   --disable-outdevs        disable output devices
   377         kx   --disable-devices        disable all devices
   377         kx   --enable-filter=NAME     enable filter NAME
   377         kx   --disable-filter=NAME    disable filter NAME
   377         kx   --disable-filters        disable all filters
   377         kx 
   377         kx External library support:
   377         kx 
   377         kx   Using any of the following switches will allow FFmpeg to link to the
   377         kx   corresponding external library. All the components depending on that library
   377         kx   will become enabled, if all their other dependencies are met and they are not
   377         kx   explicitly disabled. E.g. --enable-libopus will enable linking to
   377         kx   libopus and allow the libopus encoder to be built, unless it is
   377         kx   specifically disabled with --disable-encoder=libopus.
   377         kx 
   377         kx   Note that only the system libraries are auto-detected. All the other external
   377         kx   libraries must be explicitly enabled.
   377         kx 
   377         kx   Also note that the following help text describes the purpose of the libraries
   377         kx   themselves, not all their features will necessarily be usable by FFmpeg.
   377         kx 
   377         kx   --disable-alsa           disable ALSA support [autodetect]
   377         kx   --disable-appkit         disable Apple AppKit framework [autodetect]
   377         kx   --disable-avfoundation   disable Apple AVFoundation framework [autodetect]
   377         kx   --enable-avisynth        enable reading of AviSynth script files [no]
   377         kx   --disable-bzlib          disable bzlib [autodetect]
   377         kx   --disable-coreimage      disable Apple CoreImage framework [autodetect]
   377         kx   --enable-chromaprint     enable audio fingerprinting with chromaprint [no]
   377         kx   --enable-frei0r          enable frei0r video filtering [no]
   377         kx   --enable-gcrypt          enable gcrypt, needed for rtmp(t)e support
   377         kx                            if openssl, librtmp or gmp is not used [no]
   377         kx   --enable-gmp             enable gmp, needed for rtmp(t)e support
   377         kx                            if openssl or librtmp is not used [no]
   377         kx   --enable-gnutls          enable gnutls, needed for https support
   377         kx                            if openssl, libtls or mbedtls is not used [no]
   377         kx   --disable-iconv          disable iconv [autodetect]
   377         kx   --enable-jni             enable JNI support [no]
   377         kx   --enable-ladspa          enable LADSPA audio filtering [no]
   377         kx   --enable-libaom          enable AV1 video encoding/decoding via libaom [no]
   377         kx   --enable-libaribb24      enable ARIB text and caption decoding via libaribb24 [no]
   377         kx   --enable-libass          enable libass subtitles rendering,
   377         kx                            needed for subtitles and ass filter [no]
   377         kx   --enable-libbluray       enable BluRay reading using libbluray [no]
   377         kx   --enable-libbs2b         enable bs2b DSP library [no]
   377         kx   --enable-libcaca         enable textual display using libcaca [no]
   377         kx   --enable-libcelt         enable CELT decoding via libcelt [no]
   377         kx   --enable-libcdio         enable audio CD grabbing with libcdio [no]
   377         kx   --enable-libcodec2       enable codec2 en/decoding using libcodec2 [no]
   377         kx   --enable-libdav1d        enable AV1 decoding via libdav1d [no]
   377         kx   --enable-libdavs2        enable AVS2 decoding via libdavs2 [no]
   377         kx   --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
   377         kx                            and libraw1394 [no]
   377         kx   --enable-libfdk-aac      enable AAC de/encoding via libfdk-aac [no]
   377         kx   --enable-libflite        enable flite (voice synthesis) support via libflite [no]
   377         kx   --enable-libfontconfig   enable libfontconfig, useful for drawtext filter [no]
   377         kx   --enable-libfreetype     enable libfreetype, needed for drawtext filter [no]
   377         kx   --enable-libfribidi      enable libfribidi, improves drawtext filter [no]
   377         kx   --enable-libglslang      enable GLSL->SPIRV compilation via libglslang [no]
   377         kx   --enable-libgme          enable Game Music Emu via libgme [no]
   377         kx   --enable-libgsm          enable GSM de/encoding via libgsm [no]
   377         kx   --enable-libiec61883     enable iec61883 via libiec61883 [no]
   377         kx   --enable-libilbc         enable iLBC de/encoding via libilbc [no]
   377         kx   --enable-libjack         enable JACK audio sound server [no]
   377         kx   --enable-libklvanc       enable Kernel Labs VANC processing [no]
   377         kx   --enable-libkvazaar      enable HEVC encoding via libkvazaar [no]
   377         kx   --enable-liblensfun      enable lensfun lens correction [no]
   377         kx   --enable-libmodplug      enable ModPlug via libmodplug [no]
   377         kx   --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
   377         kx   --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
   377         kx   --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
   377         kx   --enable-libopencv       enable video filtering via libopencv [no]
   377         kx   --enable-libopenh264     enable H.264 encoding via OpenH264 [no]
   377         kx   --enable-libopenjpeg     enable JPEG 2000 de/encoding via OpenJPEG [no]
   377         kx   --enable-libopenmpt      enable decoding tracked files via libopenmpt [no]
   377         kx   --enable-libopenvino     enable OpenVINO as a DNN module backend
   377         kx                            for DNN based filters like dnn_processing [no]
   377         kx   --enable-libopus         enable Opus de/encoding via libopus [no]
   377         kx   --enable-libpulse        enable Pulseaudio input via libpulse [no]
   377         kx   --enable-librabbitmq     enable RabbitMQ library [no]
   377         kx   --enable-librav1e        enable AV1 encoding via rav1e [no]
   377         kx   --enable-librist         enable RIST via librist [no]
   377         kx   --enable-librsvg         enable SVG rasterization via librsvg [no]
   377         kx   --enable-librubberband   enable rubberband needed for rubberband filter [no]
   377         kx   --enable-librtmp         enable RTMP[E] support via librtmp [no]
   377         kx   --enable-libshine        enable fixed-point MP3 encoding via libshine [no]
   377         kx   --enable-libsmbclient    enable Samba protocol via libsmbclient [no]
   377         kx   --enable-libsnappy       enable Snappy compression, needed for hap encoding [no]
   377         kx   --enable-libsoxr         enable Include libsoxr resampling [no]
   377         kx   --enable-libspeex        enable Speex de/encoding via libspeex [no]
   377         kx   --enable-libsrt          enable Haivision SRT protocol via libsrt [no]
   377         kx   --enable-libssh          enable SFTP protocol via libssh [no]
   377         kx   --enable-libsvtav1       enable AV1 encoding via SVT [no]
   377         kx   --enable-libtensorflow   enable TensorFlow as a DNN module backend
   377         kx                            for DNN based filters like sr [no]
   377         kx   --enable-libtesseract    enable Tesseract, needed for ocr filter [no]
   377         kx   --enable-libtheora       enable Theora encoding via libtheora [no]
   377         kx   --enable-libtls          enable LibreSSL (via libtls), needed for https support
   377         kx                            if openssl, gnutls or mbedtls is not used [no]
   377         kx   --enable-libtwolame      enable MP2 encoding via libtwolame [no]
   377         kx   --enable-libuavs3d       enable AVS3 decoding via libuavs3d [no]
   377         kx   --enable-libv4l2         enable libv4l2/v4l-utils [no]
   377         kx   --enable-libvidstab      enable video stabilization using vid.stab [no]
   377         kx   --enable-libvmaf         enable vmaf filter via libvmaf [no]
   377         kx   --enable-libvo-amrwbenc  enable AMR-WB encoding via libvo-amrwbenc [no]
   377         kx   --enable-libvorbis       enable Vorbis en/decoding via libvorbis,
   377         kx                            native implementation exists [no]
   377         kx   --enable-libvpx          enable VP8 and VP9 de/encoding via libvpx [no]
   377         kx   --enable-libwebp         enable WebP encoding via libwebp [no]
   377         kx   --enable-libx264         enable H.264 encoding via x264 [no]
   377         kx   --enable-libx265         enable HEVC encoding via x265 [no]
   377         kx   --enable-libxavs         enable AVS encoding via xavs [no]
   377         kx   --enable-libxavs2        enable AVS2 encoding via xavs2 [no]
   377         kx   --enable-libxcb          enable X11 grabbing using XCB [autodetect]
   377         kx   --enable-libxcb-shm      enable X11 grabbing shm communication [autodetect]
   377         kx   --enable-libxcb-xfixes   enable X11 grabbing mouse rendering [autodetect]
   377         kx   --enable-libxcb-shape    enable X11 grabbing shape rendering [autodetect]
   377         kx   --enable-libxvid         enable Xvid encoding via xvidcore,
   377         kx                            native MPEG-4/Xvid encoder exists [no]
   377         kx   --enable-libxml2         enable XML parsing using the C library libxml2, needed
   377         kx                            for dash demuxing support [no]
   377         kx   --enable-libzimg         enable z.lib, needed for zscale filter [no]
   377         kx   --enable-libzmq          enable message passing via libzmq [no]
   377         kx   --enable-libzvbi         enable teletext support via libzvbi [no]
   377         kx   --enable-lv2             enable LV2 audio filtering [no]
   377         kx   --disable-lzma           disable lzma [autodetect]
   377         kx   --enable-decklink        enable Blackmagic DeckLink I/O support [no]
   377         kx   --enable-mbedtls         enable mbedTLS, needed for https support
   377         kx                            if openssl, gnutls or libtls is not used [no]
   377         kx   --enable-mediacodec      enable Android MediaCodec support [no]
   377         kx   --enable-mediafoundation enable encoding via MediaFoundation [auto]
   377         kx   --enable-libmysofa       enable libmysofa, needed for sofalizer filter [no]
   377         kx   --enable-openal          enable OpenAL 1.1 capture support [no]
   377         kx   --enable-opencl          enable OpenCL processing [no]
   377         kx   --enable-opengl          enable OpenGL rendering [no]
   377         kx   --enable-openssl         enable openssl, needed for https support
   377         kx                            if gnutls, libtls or mbedtls is not used [no]
   377         kx   --enable-pocketsphinx    enable PocketSphinx, needed for asr filter [no]
   377         kx   --disable-sndio          disable sndio support [autodetect]
   377         kx   --disable-schannel       disable SChannel SSP, needed for TLS support on
   377         kx                            Windows if openssl and gnutls are not used [autodetect]
   377         kx   --disable-sdl2           disable sdl2 [autodetect]
   377         kx   --disable-securetransport disable Secure Transport, needed for TLS support
   377         kx                            on OSX if openssl and gnutls are not used [autodetect]
   377         kx   --enable-vapoursynth     enable VapourSynth demuxer [no]
   377         kx   --enable-vulkan          enable Vulkan code [no]
   377         kx   --disable-xlib           disable xlib [autodetect]
   377         kx   --disable-zlib           disable zlib [autodetect]
   377         kx 
   377         kx   The following libraries provide various hardware acceleration features:
   377         kx   --disable-amf            disable AMF video encoding code [autodetect]
   377         kx   --disable-audiotoolbox   disable Apple AudioToolbox code [autodetect]
   377         kx   --enable-cuda-nvcc       enable Nvidia CUDA compiler [no]
   377         kx   --disable-cuda-llvm      disable CUDA compilation using clang [autodetect]
   377         kx   --disable-cuvid          disable Nvidia CUVID support [autodetect]
   377         kx   --disable-d3d11va        disable Microsoft Direct3D 11 video acceleration code [autodetect]
   377         kx   --disable-dxva2          disable Microsoft DirectX 9 video acceleration code [autodetect]
   377         kx   --disable-ffnvcodec      disable dynamically linked Nvidia code [autodetect]
   377         kx   --enable-libdrm          enable DRM code (Linux) [no]
   377         kx   --enable-libmfx          enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
   377         kx   --enable-libnpp          enable Nvidia Performance Primitives-based code [no]
   377         kx   --enable-mmal            enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
   377         kx   --disable-nvdec          disable Nvidia video decoding acceleration (via hwaccel) [autodetect]
   377         kx   --disable-nvenc          disable Nvidia video encoding code [autodetect]
   377         kx   --enable-omx             enable OpenMAX IL code [no]
   377         kx   --enable-omx-rpi         enable OpenMAX IL code for Raspberry Pi [no]
   377         kx   --enable-omx-img         enable OpenMAX IL code for Imagination PowerVR D5500 video decoder [no]
   377         kx   --enable-rkmpp           enable Rockchip Media Process Platform code [no]
   377         kx   --disable-v4l2-m2m       disable V4L2 mem2mem code [autodetect]
   377         kx   --disable-vaapi          disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
   377         kx   --disable-vdpau          disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
   377         kx   --disable-videotoolbox   disable VideoToolbox code [autodetect]
   377         kx 
   377         kx Toolchain options:
   377         kx   --arch=ARCH              select architecture [$arch]
   377         kx   --cpu=CPU                select the minimum required CPU (affects
   377         kx                            instruction selection, may crash on older CPUs)
   377         kx   --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
   377         kx   --progs-suffix=SUFFIX    program name suffix []
   377         kx   --enable-cross-compile   assume a cross-compiler is used
   377         kx   --sysroot=PATH           root of cross-build tree
   377         kx   --sysinclude=PATH        location of cross-build system headers
   377         kx   --target-os=OS           compiler targets OS [$target_os]
   377         kx   --target-exec=CMD        command to run executables on target
   377         kx   --target-path=DIR        path to view of build directory on target
   377         kx   --target-samples=DIR     path to samples directory on target
   377         kx   --tempprefix=PATH        force fixed dir/prefix instead of mktemp for checks
   377         kx   --toolchain=NAME         set tool defaults according to NAME
   377         kx                            (gcc-asan, clang-asan, gcc-msan, clang-msan,
   377         kx                            gcc-tsan, clang-tsan, gcc-usan, clang-usan,
   377         kx                            valgrind-massif, valgrind-memcheck,
   377         kx                            msvc, icl, gcov, llvm-cov, hardened)
   377         kx   --nm=NM                  use nm tool NM [$nm_default]
   377         kx   --ar=AR                  use archive tool AR [$ar_default]
   377         kx   --as=AS                  use assembler AS [$as_default]
   377         kx   --ln_s=LN_S              use symbolic link tool LN_S [$ln_s_default]
   377         kx   --strip=STRIP            use strip tool STRIP [$strip_default]
   377         kx   --windres=WINDRES        use windows resource compiler WINDRES [$windres_default]
   377         kx   --x86asmexe=EXE          use nasm-compatible assembler EXE [$x86asmexe_default]
   377         kx   --cc=CC                  use C compiler CC [$cc_default]
   377         kx   --cxx=CXX                use C compiler CXX [$cxx_default]
   377         kx   --objcc=OCC              use ObjC compiler OCC [$cc_default]
   377         kx   --dep-cc=DEPCC           use dependency generator DEPCC [$cc_default]
   377         kx   --nvcc=NVCC              use Nvidia CUDA compiler NVCC or clang [$nvcc_default]
   377         kx   --ld=LD                  use linker LD [$ld_default]
   377         kx   --pkg-config=PKGCONFIG   use pkg-config tool PKGCONFIG [$pkg_config_default]
   377         kx   --pkg-config-flags=FLAGS pass additional flags to pkgconf []
   377         kx   --ranlib=RANLIB          use ranlib RANLIB [$ranlib_default]
   377         kx   --doxygen=DOXYGEN        use DOXYGEN to generate API doc [$doxygen_default]
   377         kx   --host-cc=HOSTCC         use host C compiler HOSTCC
   377         kx   --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
   377         kx   --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
   377         kx   --host-ld=HOSTLD         use host linker HOSTLD
   377         kx   --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
   377         kx   --host-extralibs=HLIBS   use libs HLIBS when linking for host
   377         kx   --host-os=OS             compiler host OS [$target_os]
   377         kx   --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
   377         kx   --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
   377         kx   --extra-objcflags=FLAGS  add FLAGS to OBJCFLAGS [$CFLAGS]
   377         kx   --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
   377         kx   --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
   377         kx   --extra-ldsoflags=ELDFLAGS add ELDFLAGS to LDSOFLAGS [$LDSOFLAGS]
   377         kx   --extra-libs=ELIBS       add ELIBS [$ELIBS]
   377         kx   --extra-version=STRING   version string suffix []
   377         kx   --optflags=OPTFLAGS      override optimization-related compiler flags
   377         kx   --nvccflags=NVCCFLAGS    override nvcc flags [$nvccflags_default]
   377         kx   --build-suffix=SUFFIX    library name suffix []
   377         kx   --enable-pic             build position-independent code
   377         kx   --enable-thumb           compile for Thumb instruction set
   377         kx   --enable-lto             use link-time optimization
   377         kx   --env="ENV=override"     override the environment variables
   377         kx 
   377         kx Advanced options (experts only):
   377         kx   --malloc-prefix=PREFIX   prefix malloc and related names with PREFIX
   377         kx   --custom-allocator=NAME  use a supported custom allocator
   377         kx   --disable-symver         disable symbol versioning
   377         kx   --enable-hardcoded-tables use hardcoded tables instead of runtime generation
   377         kx   --disable-safe-bitstream-reader
   377         kx                            disable buffer boundary checking in bitreaders
   377         kx                            (faster, but may crash)
   377         kx   --sws-max-filter-size=N  the max filter size swscale uses [$sws_max_filter_size_default]
   377         kx 
   377         kx Optimization options (experts only):
   377         kx   --disable-asm            disable all assembly optimizations
   377         kx   --disable-altivec        disable AltiVec optimizations
   377         kx   --disable-vsx            disable VSX optimizations
   377         kx   --disable-power8         disable POWER8 optimizations
   377         kx   --disable-amd3dnow       disable 3DNow! optimizations
   377         kx   --disable-amd3dnowext    disable 3DNow! extended optimizations
   377         kx   --disable-mmx            disable MMX optimizations
   377         kx   --disable-mmxext         disable MMXEXT optimizations
   377         kx   --disable-sse            disable SSE optimizations
   377         kx   --disable-sse2           disable SSE2 optimizations
   377         kx   --disable-sse3           disable SSE3 optimizations
   377         kx   --disable-ssse3          disable SSSE3 optimizations
   377         kx   --disable-sse4           disable SSE4 optimizations
   377         kx   --disable-sse42          disable SSE4.2 optimizations
   377         kx   --disable-avx            disable AVX optimizations
   377         kx   --disable-xop            disable XOP optimizations
   377         kx   --disable-fma3           disable FMA3 optimizations
   377         kx   --disable-fma4           disable FMA4 optimizations
   377         kx   --disable-avx2           disable AVX2 optimizations
   377         kx   --disable-avx512         disable AVX-512 optimizations
   377         kx   --disable-aesni          disable AESNI optimizations
   377         kx   --disable-armv5te        disable armv5te optimizations
   377         kx   --disable-armv6          disable armv6 optimizations
   377         kx   --disable-armv6t2        disable armv6t2 optimizations
   377         kx   --disable-vfp            disable VFP optimizations
   377         kx   --disable-neon           disable NEON optimizations
   377         kx   --disable-inline-asm     disable use of inline assembly
   377         kx   --disable-x86asm         disable use of standalone x86 assembly
   377         kx   --disable-mipsdsp        disable MIPS DSP ASE R1 optimizations
   377         kx   --disable-mipsdspr2      disable MIPS DSP ASE R2 optimizations
   377         kx   --disable-msa            disable MSA optimizations
   377         kx   --disable-msa2           disable MSA2 optimizations
   377         kx   --disable-mipsfpu        disable floating point MIPS optimizations
   377         kx   --disable-mmi            disable Loongson SIMD optimizations
   377         kx   --disable-fast-unaligned consider unaligned accesses slow
   377         kx 
   377         kx Developer options (useful when working on FFmpeg itself):
   377         kx   --disable-debug          disable debugging symbols
   377         kx   --enable-debug=LEVEL     set the debug level [$debuglevel]
   377         kx   --disable-optimizations  disable compiler optimizations
   377         kx   --enable-extra-warnings  enable more compiler warnings
   377         kx   --disable-stripping      disable stripping of executables and shared libraries
   377         kx   --assert-level=level     0(default), 1 or 2, amount of assertion testing,
   377         kx                            2 causes a slowdown at runtime.
   377         kx   --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
   377         kx   --valgrind=VALGRIND      run "make fate" tests through valgrind to detect memory
   377         kx                            leaks and errors, using the specified valgrind binary.
   377         kx                            Cannot be combined with --target-exec
   377         kx   --enable-ftrapv          Trap arithmetic overflows
   377         kx   --samples=PATH           location of test samples for FATE, if not set use
   377         kx                            \$FATE_SAMPLES at make invocation time.
   377         kx   --enable-neon-clobber-test check NEON registers for clobbering (should be
   377         kx                            used only for debugging purposes)
   377         kx   --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
   377         kx                            should be used only for debugging purposes)
   377         kx   --enable-random          randomly enable/disable components
   377         kx   --disable-random
   377         kx   --enable-random=LIST     randomly enable/disable specific components or
   377         kx   --disable-random=LIST    component groups. LIST is a comma-separated list
   377         kx                            of NAME[:PROB] entries where NAME is a component
   377         kx                            (group) and PROB the probability associated with
   377         kx                            NAME (default 0.5).
   377         kx   --random-seed=VALUE      seed value for --enable/disable-random
   377         kx   --disable-valgrind-backtrace do not print a backtrace under Valgrind
   377         kx                            (only applies to --disable-optimizations builds)
   377         kx   --enable-ossfuzz         Enable building fuzzer tool
   377         kx   --libfuzzer=PATH         path to libfuzzer
   377         kx   --ignore-tests=TESTS     comma-separated list (without "fate-" prefix
   377         kx                            in the name) of tests whose result is ignored
   377         kx   --enable-linux-perf      enable Linux Performance Monitor API
   377         kx   --disable-large-tests    disable tests that use a large amount of memory
   377         kx 
   377         kx NOTE: Object files are built at the place where configure is launched.
   377         kx EOF
   377         kx   exit 0
   377         kx }
   377         kx 
   377         kx if test -t 1 && which tput >/dev/null 2>&1; then
   377         kx     ncolors=$(tput colors)
   377         kx     if test -n "$ncolors" && test $ncolors -ge 8; then
   377         kx         bold_color=$(tput bold)
   377         kx         warn_color=$(tput setaf 3)
   377         kx         error_color=$(tput setaf 1)
   377         kx         reset_color=$(tput sgr0)
   377         kx     fi
   377         kx     # 72 used instead of 80 since that's the default of pr
   377         kx     ncols=$(tput cols)
   377         kx fi
   377         kx : ${ncols:=72}
   377         kx 
   377         kx log(){
   377         kx     echo "$@" >> $logfile
   377         kx }
   377         kx 
   377         kx log_file(){
   377         kx     log BEGIN "$1"
   377         kx     log_file_i=1
   377         kx     while IFS= read -r log_file_line; do
   377         kx         printf '%5d\t%s\n' "$log_file_i" "$log_file_line"
   377         kx         log_file_i=$(($log_file_i+1))
   377         kx     done < "$1" >> "$logfile"
   377         kx     log END "$1"
   377         kx }
   377         kx 
   377         kx warn(){
   377         kx     log "WARNING: $*"
   377         kx     WARNINGS="${WARNINGS}WARNING: $*\n"
   377         kx }
   377         kx 
   377         kx die(){
   377         kx     log "$@"
   377         kx     echo "$error_color$bold_color$@$reset_color"
   377         kx     cat <<EOF
   377         kx 
   377         kx If you think configure made a mistake, make sure you are using the latest
   377         kx version from Git.  If the latest version fails, report the problem to the
   377         kx ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.libera.chat.
   377         kx EOF
   377         kx     if disabled logging; then
   377         kx         cat <<EOF
   377         kx Rerun configure with logging enabled (do not use --disable-logging), and
   377         kx include the log this produces with your report.
   377         kx EOF
   377         kx     else
   377         kx         cat <<EOF
   377         kx Include the log file "$logfile" produced by configure as this will help
   377         kx solve the problem.
   377         kx EOF
   377         kx     fi
   377         kx     exit 1
   377         kx }
   377         kx 
   377         kx # Avoid locale weirdness, besides we really just want to translate ASCII.
   377         kx toupper(){
   377         kx     echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
   377         kx }
   377         kx 
   377         kx tolower(){
   377         kx     echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
   377         kx }
   377         kx 
   377         kx c_escape(){
   377         kx     echo "$*" | sed 's/["\\]/\\\0/g'
   377         kx }
   377         kx 
   377         kx sh_quote(){
   377         kx     v=$(echo "$1" | sed "s/'/'\\\\''/g")
   377         kx     test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
   377         kx     echo "$v"
   377         kx }
   377         kx 
   377         kx cleanws(){
   377         kx     echo "$@" | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//'
   377         kx }
   377         kx 
   377         kx filter(){
   377         kx     pat=$1
   377         kx     shift
   377         kx     for v; do
   377         kx         eval "case '$v' in $pat) printf '%s ' '$v' ;; esac"
   377         kx     done
   377         kx }
   377         kx 
   377         kx filter_out(){
   377         kx     pat=$1
   377         kx     shift
   377         kx     for v; do
   377         kx         eval "case '$v' in $pat) ;; *) printf '%s ' '$v' ;; esac"
   377         kx     done
   377         kx }
   377         kx 
   377         kx map(){
   377         kx     m=$1
   377         kx     shift
   377         kx     for v; do eval $m; done
   377         kx }
   377         kx 
   377         kx add_suffix(){
   377         kx     suffix=$1
   377         kx     shift
   377         kx     for v; do echo ${v}${suffix}; done
   377         kx }
   377         kx 
   377         kx remove_suffix(){
   377         kx     suffix=$1
   377         kx     shift
   377         kx     for v; do echo ${v%$suffix}; done
   377         kx }
   377         kx 
   377         kx set_all(){
   377         kx     value=$1
   377         kx     shift
   377         kx     for var in $*; do
   377         kx         eval $var=$value
   377         kx     done
   377         kx }
   377         kx 
   377         kx set_weak(){
   377         kx     value=$1
   377         kx     shift
   377         kx     for var; do
   377         kx         eval : \${$var:=$value}
   377         kx     done
   377         kx }
   377         kx 
   377         kx sanitize_var_name(){
   377         kx     echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
   377         kx }
   377         kx 
   377         kx set_sanitized(){
   377         kx     var=$1
   377         kx     shift
   377         kx     eval $(sanitize_var_name "$var")='$*'
   377         kx }
   377         kx 
   377         kx get_sanitized(){
   377         kx     eval echo \$$(sanitize_var_name "$1")
   377         kx }
   377         kx 
   377         kx pushvar(){
   377         kx     for pvar in $*; do
   377         kx         eval level=\${${pvar}_level:=0}
   377         kx         eval ${pvar}_${level}="\$$pvar"
   377         kx         eval ${pvar}_level=$(($level+1))
   377         kx     done
   377         kx }
   377         kx 
   377         kx popvar(){
   377         kx     for pvar in $*; do
   377         kx         eval level=\${${pvar}_level:-0}
   377         kx         test $level = 0 && continue
   377         kx         eval level=$(($level-1))
   377         kx         eval $pvar="\${${pvar}_${level}}"
   377         kx         eval ${pvar}_level=$level
   377         kx         eval unset ${pvar}_${level}
   377         kx     done
   377         kx }
   377         kx 
   377         kx request(){
   377         kx     for var in $*; do
   377         kx         eval ${var}_requested=yes
   377         kx         eval $var=
   377         kx     done
   377         kx }
   377         kx 
   377         kx warn_if_gets_disabled(){
   377         kx     for var in $*; do
   377         kx         WARN_IF_GETS_DISABLED_LIST="$WARN_IF_GETS_DISABLED_LIST $var"
   377         kx     done
   377         kx }
   377         kx 
   377         kx enable(){
   377         kx     set_all yes $*
   377         kx }
   377         kx 
   377         kx disable(){
   377         kx     set_all no $*
   377         kx }
   377         kx 
   377         kx disable_with_reason(){
   377         kx     disable $1
   377         kx     eval "${1}_disable_reason=\"$2\""
   377         kx     if requested $1; then
   377         kx         die "ERROR: $1 requested, but $2"
   377         kx     fi
   377         kx }
   377         kx 
   377         kx enable_weak(){
   377         kx     set_weak yes $*
   377         kx }
   377         kx 
   377         kx disable_weak(){
   377         kx     set_weak no $*
   377         kx }
   377         kx 
   377         kx enable_sanitized(){
   377         kx     for var; do
   377         kx         enable $(sanitize_var_name $var)
   377         kx     done
   377         kx }
   377         kx 
   377         kx disable_sanitized(){
   377         kx     for var; do
   377         kx         disable $(sanitize_var_name $var)
   377         kx     done
   377         kx }
   377         kx 
   377         kx do_enable_deep(){
   377         kx     for var; do
   377         kx         enabled $var && continue
   377         kx         set -- $var
   377         kx         eval enable_deep \$${var}_select
   377         kx         var=$1
   377         kx         eval enable_deep_weak \$${var}_suggest
   377         kx     done
   377         kx }
   377         kx 
   377         kx enable_deep(){
   377         kx     do_enable_deep $*
   377         kx     enable $*
   377         kx }
   377         kx 
   377         kx enable_deep_weak(){
   377         kx     for var; do
   377         kx         disabled $var && continue
   377         kx         set -- $var
   377         kx         do_enable_deep $var
   377         kx         var=$1
   377         kx         enable_weak $var
   377         kx     done
   377         kx }
   377         kx 
   377         kx requested(){
   377         kx     test "${1#!}" = "$1" && op="=" || op="!="
   377         kx     eval test "x\$${1#!}_requested" $op "xyes"
   377         kx }
   377         kx 
   377         kx enabled(){
   377         kx     test "${1#!}" = "$1" && op="=" || op="!="
   377         kx     eval test "x\$${1#!}" $op "xyes"
   377         kx }
   377         kx 
   377         kx disabled(){
   377         kx     test "${1#!}" = "$1" && op="=" || op="!="
   377         kx     eval test "x\$${1#!}" $op "xno"
   377         kx }
   377         kx 
   377         kx enabled_all(){
   377         kx     for opt; do
   377         kx         enabled $opt || return 1
   377         kx     done
   377         kx }
   377         kx 
   377         kx disabled_all(){
   377         kx     for opt; do
   377         kx         disabled $opt || return 1
   377         kx     done
   377         kx }
   377         kx 
   377         kx enabled_any(){
   377         kx     for opt; do
   377         kx         enabled $opt && return 0
   377         kx     done
   377         kx }
   377         kx 
   377         kx disabled_any(){
   377         kx     for opt; do
   377         kx         disabled $opt && return 0
   377         kx     done
   377         kx     return 1
   377         kx }
   377         kx 
   377         kx set_default(){
   377         kx     for opt; do
   377         kx         eval : \${$opt:=\$${opt}_default}
   377         kx     done
   377         kx }
   377         kx 
   377         kx is_in(){
   377         kx     value=$1
   377         kx     shift
   377         kx     for var in $*; do
   377         kx         [ $var = $value ] && return 0
   377         kx     done
   377         kx     return 1
   377         kx }
   377         kx 
   377         kx # The cfg loop is very hot (several thousands iterations), and in bash also
   377         kx # potentialy quite slow. Try to abort the iterations early, preferably without
   377         kx # calling functions. 70%+ of the time cfg is already done or without deps.
   377         kx check_deps(){
   377         kx     for cfg; do
   377         kx         eval [ x\$${cfg}_checking = xdone ] && continue
   377         kx         eval [ x\$${cfg}_checking = xinprogress ] && die "Circular dependency for $cfg."
   377         kx 
   377         kx         eval "
   377         kx         dep_all=\$${cfg}_deps
   377         kx         dep_any=\$${cfg}_deps_any
   377         kx         dep_con=\$${cfg}_conflict
   377         kx         dep_sel=\$${cfg}_select
   377         kx         dep_sgs=\$${cfg}_suggest
   377         kx         dep_ifa=\$${cfg}_if
   377         kx         dep_ifn=\$${cfg}_if_any
   377         kx         "
   377         kx 
   377         kx         # most of the time here $cfg has no deps - avoid costly no-op work
   377         kx         if [ "$dep_all$dep_any$dep_con$dep_sel$dep_sgs$dep_ifa$dep_ifn" ]; then
   377         kx             eval ${cfg}_checking=inprogress
   377         kx 
   377         kx             set -- $cfg "$dep_all" "$dep_any" "$dep_con" "$dep_sel" "$dep_sgs" "$dep_ifa" "$dep_ifn"
   377         kx             check_deps $dep_all $dep_any $dep_con $dep_sel $dep_sgs $dep_ifa $dep_ifn
   377         kx             cfg=$1; dep_all=$2; dep_any=$3; dep_con=$4; dep_sel=$5 dep_sgs=$6; dep_ifa=$7; dep_ifn=$8
   377         kx 
   377         kx             [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
   377         kx             [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
   377         kx             enabled_all  $dep_all || { disable_with_reason $cfg "not all dependencies are satisfied: $dep_all"; }
   377         kx             enabled_any  $dep_any || { disable_with_reason $cfg "not any dependency is satisfied: $dep_any"; }
   377         kx             disabled_all $dep_con || { disable_with_reason $cfg "some conflicting dependencies are unsatisfied: $dep_con"; }
   377         kx             disabled_any $dep_sel && { disable_with_reason $cfg "some selected dependency is unsatisfied: $dep_sel"; }
   377         kx 
   377         kx             enabled $cfg && enable_deep_weak $dep_sel $dep_sgs
   377         kx 
   377         kx             for dep in $dep_all $dep_any $dep_sel $dep_sgs; do
   377         kx                 # filter out library deps, these do not belong in extralibs
   377         kx                 is_in $dep $LIBRARY_LIST && continue
   377         kx                 enabled $dep && eval append ${cfg}_extralibs ${dep}_extralibs
   377         kx             done
   377         kx         fi
   377         kx 
   377         kx         eval ${cfg}_checking=done
   377         kx     done
   377         kx }
   377         kx 
   377         kx print_config(){
   377         kx     pfx=$1
   377         kx     files=$2
   377         kx     shift 2
   377         kx     map 'eval echo "$v \${$v:-no}"' "$@" |
   377         kx     awk "BEGIN { split(\"$files\", files) }
   377         kx         {
   377         kx             c = \"$pfx\" toupper(\$1);
   377         kx             v = \$2;
   377         kx             sub(/yes/, 1, v);
   377         kx             sub(/no/,  0, v);
   377         kx             for (f in files) {
   377         kx                 file = files[f];
   377         kx                 if (file ~ /\\.h\$/) {
   377         kx                     printf(\"#define %s %d\\n\", c, v) >>file;
   377         kx                 } else if (file ~ /\\.asm\$/) {
   377         kx                     printf(\"%%define %s %d\\n\", c, v) >>file;
   377         kx                 } else if (file ~ /\\.mak\$/) {
   377         kx                     n = -v ? \"\" : \"!\";
   377         kx                     printf(\"%s%s=yes\\n\", n, c) >>file;
   377         kx                 } else if (file ~ /\\.texi\$/) {
   377         kx                     pre = -v ? \"\" : \"@c \";
   377         kx                     yesno = \$2;
   377         kx                     c2 = tolower(c);
   377         kx                     gsub(/_/, \"-\", c2);
   377         kx                     printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
   377         kx                 }
   377         kx             }
   377         kx         }"
   377         kx }
   377         kx 
   377         kx print_enabled(){
   377         kx     suf=$1
   377         kx     shift
   377         kx     for v; do
   377         kx         enabled $v && printf "%s\n" ${v%$suf}
   377         kx     done
   377         kx }
   377         kx 
   377         kx append(){
   377         kx     var=$1
   377         kx     shift
   377         kx     eval "$var=\"\$$var $*\""
   377         kx }
   377         kx 
   377         kx prepend(){
   377         kx     var=$1
   377         kx     shift
   377         kx     eval "$var=\"$* \$$var\""
   377         kx }
   377         kx 
   377         kx reverse () {
   377         kx     eval '
   377         kx         reverse_out=
   377         kx         for v in $'$1'; do
   377         kx             reverse_out="$v $reverse_out"
   377         kx         done
   377         kx         '$1'=$reverse_out
   377         kx     '
   377         kx }
   377         kx 
   377         kx # keeps the last occurence of each non-unique item
   377         kx unique(){
   377         kx     unique_out=
   377         kx     eval unique_in=\$$1
   377         kx     reverse unique_in
   377         kx     for v in $unique_in; do
   377         kx         # " $unique_out" +space such that every item is surrounded with spaces
   377         kx         case " $unique_out" in *" $v "*) continue; esac  # already in list
   377         kx         unique_out="$unique_out$v "
   377         kx     done
   377         kx     reverse unique_out
   377         kx     eval $1=\$unique_out
   377         kx }
   377         kx 
   377         kx resolve(){
   377         kx     resolve_out=
   377         kx     eval resolve_in=\$$1
   377         kx     for v in $resolve_in; do
   377         kx         eval 'resolve_out="$resolve_out$'$v' "'
   377         kx     done
   377         kx     eval $1=\$resolve_out
   377         kx }
   377         kx 
   377         kx add_cppflags(){
   377         kx     append CPPFLAGS "$@"
   377         kx }
   377         kx 
   377         kx add_cflags(){
   377         kx     append CFLAGS $($cflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_cflags_headers(){
   377         kx     append CFLAGS_HEADERS $($cflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_cxxflags(){
   377         kx     append CXXFLAGS $($cflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_objcflags(){
   377         kx     append OBJCFLAGS $($objcflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_asflags(){
   377         kx     append ASFLAGS $($asflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_ldflags(){
   377         kx     append LDFLAGS $($ldflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_ldexeflags(){
   377         kx     append LDEXEFLAGS $($ldflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_ldsoflags(){
   377         kx     append LDSOFLAGS $($ldflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_extralibs(){
   377         kx     prepend extralibs $($ldflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_stripflags(){
   377         kx     append ASMSTRIPFLAGS "$@"
   377         kx }
   377         kx 
   377         kx add_host_cppflags(){
   377         kx     append host_cppflags "$@"
   377         kx }
   377         kx 
   377         kx add_host_cflags(){
   377         kx     append host_cflags $($host_cflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_host_ldflags(){
   377         kx     append host_ldflags $($host_ldflags_filter "$@")
   377         kx }
   377         kx 
   377         kx add_compat(){
   377         kx     append compat_objs $1
   377         kx     shift
   377         kx     map 'add_cppflags -D$v' "$@"
   377         kx }
   377         kx 
   377         kx test_cmd(){
   377         kx     log "$@"
   377         kx     "$@" >> $logfile 2>&1
   377         kx }
   377         kx 
   377         kx test_stat(){
   377         kx     log test_stat "$@"
   377         kx     stat "$1" >> $logfile 2>&1
   377         kx }
   377         kx 
   377         kx cc_e(){
   377         kx     eval printf '%s\\n' $CC_E
   377         kx }
   377         kx 
   377         kx cc_o(){
   377         kx     eval printf '%s\\n' $CC_O
   377         kx }
   377         kx 
   377         kx as_o(){
   377         kx     eval printf '%s\\n' $AS_O
   377         kx }
   377         kx 
   377         kx x86asm_o(){
   377         kx     eval printf '%s\\n' $X86ASM_O
   377         kx }
   377         kx 
   377         kx ld_o(){
   377         kx     eval printf '%s\\n' $LD_O
   377         kx }
   377         kx 
   377         kx hostcc_e(){
   377         kx     eval printf '%s\\n' $HOSTCC_E
   377         kx }
   377         kx 
   377         kx hostcc_o(){
   377         kx     eval printf '%s\\n' $HOSTCC_O
   377         kx }
   377         kx 
   377         kx nvcc_o(){
   377         kx     eval printf '%s\\n' $NVCC_O
   377         kx }
   377         kx 
   377         kx test_cc(){
   377         kx     log test_cc "$@"
   377         kx     cat > $TMPC
   377         kx     log_file $TMPC
   377         kx     test_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
   377         kx }
   377         kx 
   377         kx test_cxx(){
   377         kx     log test_cxx "$@"
   377         kx     cat > $TMPCPP
   377         kx     log_file $TMPCPP
   377         kx     test_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
   377         kx }
   377         kx 
   377         kx test_objcc(){
   377         kx     log test_objcc "$@"
   377         kx     cat > $TMPM
   377         kx     log_file $TMPM
   377         kx     test_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
   377         kx }
   377         kx 
   377         kx test_nvcc(){
   377         kx     log test_nvcc "$@"
   377         kx     cat > $TMPCU
   377         kx     log_file $TMPCU
   377         kx     tmpcu_=$TMPCU
   377         kx     tmpo_=$TMPO
   377         kx     [ -x "$(command -v cygpath)" ] && tmpcu_=$(cygpath -m $tmpcu_) && tmpo_=$(cygpath -m $tmpo_)
   377         kx     test_cmd $nvcc $nvccflags "$@" $NVCC_C $(nvcc_o $tmpo_) $tmpcu_
   377         kx }
   377         kx 
   377         kx check_nvcc() {
   377         kx     log check_nvcc "$@"
   377         kx     name=$1
   377         kx     shift 1
   377         kx     disabled $name && return
   377         kx     disable $name
   377         kx     test_nvcc "$@" <<EOF && enable $name
   377         kx extern "C" {
   377         kx     __global__ void hello(unsigned char *data) {}
   377         kx }
   377         kx EOF
   377         kx }
   377         kx 
   377         kx test_cpp(){
   377         kx     log test_cpp "$@"
   377         kx     cat > $TMPC
   377         kx     log_file $TMPC
   377         kx     test_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
   377         kx }
   377         kx 
   377         kx test_as(){
   377         kx     log test_as "$@"
   377         kx     cat > $TMPS
   377         kx     log_file $TMPS
   377         kx     test_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
   377         kx }
   377         kx 
   377         kx test_x86asm(){
   377         kx     log test_x86asm "$@"
   377         kx     echo "$1" > $TMPASM
   377         kx     log_file $TMPASM
   377         kx     shift
   377         kx     test_cmd $x86asmexe $X86ASMFLAGS -Werror "$@" $(x86asm_o $TMPO) $TMPASM
   377         kx }
   377         kx 
   377         kx check_cmd(){
   377         kx     log check_cmd "$@"
   377         kx     cmd=$1
   377         kx     disabled $cmd && return
   377         kx     disable $cmd
   377         kx     test_cmd $@ && enable $cmd
   377         kx }
   377         kx 
   377         kx check_as(){
   377         kx     log check_as "$@"
   377         kx     name=$1
   377         kx     code=$2
   377         kx     shift 2
   377         kx     disable $name
   377         kx     test_as $@ <<EOF && enable $name
   377         kx $code
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_inline_asm(){
   377         kx     log check_inline_asm "$@"
   377         kx     name="$1"
   377         kx     code="$2"
   377         kx     shift 2
   377         kx     disable $name
   377         kx     test_cc "$@" <<EOF && enable $name
   377         kx void foo(void){ __asm__ volatile($code); }
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_inline_asm_flags(){
   377         kx     log check_inline_asm_flags "$@"
   377         kx     name="$1"
   377         kx     code="$2"
   377         kx     flags=''
   377         kx     shift 2
   377         kx     while [ "$1" != "" ]; do
   377         kx       append flags $1
   377         kx       shift
   377         kx     done;
   377         kx     disable $name
   377         kx     cat > $TMPC <<EOF
   377         kx void foo(void){ __asm__ volatile($code); }
   377         kx EOF
   377         kx     log_file $TMPC
   377         kx     test_cmd $cc $CPPFLAGS $CFLAGS $flags "$@" $CC_C $(cc_o $TMPO) $TMPC &&
   377         kx     enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags
   377         kx }
   377         kx 
   377         kx check_insn(){
   377         kx     log check_insn "$@"
   377         kx     check_inline_asm ${1}_inline "\"$2\""
   377         kx     check_as ${1}_external "$2"
   377         kx }
   377         kx 
   377         kx check_x86asm(){
   377         kx     log check_x86asm "$@"
   377         kx     name=$1
   377         kx     shift
   377         kx     disable $name
   377         kx     test_x86asm "$@" && enable $name
   377         kx }
   377         kx 
   377         kx test_ld(){
   377         kx     log test_ld "$@"
   377         kx     type=$1
   377         kx     shift 1
   377         kx     flags=$(filter_out '-l*|*.so' $@)
   377         kx     libs=$(filter '-l*|*.so' $@)
   377         kx     test_$type $($cflags_filter $flags) || return
   377         kx     flags=$($ldflags_filter $flags)
   377         kx     libs=$($ldflags_filter $libs)
   377         kx     test_cmd $ld $LDFLAGS $LDEXEFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
   377         kx }
   377         kx 
   377         kx check_ld(){
   377         kx     log check_ld "$@"
   377         kx     type=$1
   377         kx     name=$2
   377         kx     shift 2
   377         kx     disable $name
   377         kx     test_ld $type $@ && enable $name
   377         kx }
   377         kx 
   377         kx print_include(){
   377         kx     hdr=$1
   377         kx     test "${hdr%.h}" = "${hdr}" &&
   377         kx         echo "#include $hdr"    ||
   377         kx         echo "#include <$hdr>"
   377         kx }
   377         kx 
   377         kx test_code(){
   377         kx     log test_code "$@"
   377         kx     check=$1
   377         kx     headers=$2
   377         kx     code=$3
   377         kx     shift 3
   377         kx     {
   377         kx         for hdr in $headers; do
   377         kx             print_include $hdr
   377         kx         done
   377         kx         echo "int main(void) { $code; return 0; }"
   377         kx     } | test_$check "$@"
   377         kx }
   377         kx 
   377         kx check_cppflags(){
   377         kx     log check_cppflags "$@"
   377         kx     test_cpp "$@" <<EOF && append CPPFLAGS "$@"
   377         kx #include <stdlib.h>
   377         kx EOF
   377         kx }
   377         kx 
   377         kx test_cflags(){
   377         kx     log test_cflags "$@"
   377         kx     set -- $($cflags_filter "$@")
   377         kx     test_cc "$@" <<EOF
   377         kx int x;
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_cflags(){
   377         kx     log check_cflags "$@"
   377         kx     test_cflags "$@" && add_cflags "$@"
   377         kx }
   377         kx 
   377         kx check_cxxflags(){
   377         kx     log check_cxxflags "$@"
   377         kx     set -- $($cflags_filter "$@")
   377         kx     test_cxx "$@" <<EOF && append CXXFLAGS "$@"
   377         kx int x;
   377         kx EOF
   377         kx }
   377         kx 
   377         kx test_objcflags(){
   377         kx     log test_objcflags "$@"
   377         kx     set -- $($objcflags_filter "$@")
   377         kx     test_objcc "$@" <<EOF
   377         kx int x;
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_objcflags(){
   377         kx     log check_objcflags "$@"
   377         kx     test_objcflags "$@" && add_objcflags "$@"
   377         kx }
   377         kx 
   377         kx test_ldflags(){
   377         kx     log test_ldflags "$@"
   377         kx     set -- $($ldflags_filter "$@")
   377         kx     test_ld "cc" "$@" <<EOF
   377         kx int main(void){ return 0; }
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_ldflags(){
   377         kx     log check_ldflags "$@"
   377         kx     test_ldflags "$@" && add_ldflags "$@"
   377         kx }
   377         kx 
   377         kx test_stripflags(){
   377         kx     log test_stripflags "$@"
   377         kx     # call test_cc to get a fresh TMPO
   377         kx     test_cc <<EOF
   377         kx int main(void) { return 0; }
   377         kx EOF
   377         kx     test_cmd $strip $ASMSTRIPFLAGS "$@" $TMPO
   377         kx }
   377         kx 
   377         kx check_stripflags(){
   377         kx     log check_stripflags "$@"
   377         kx     test_stripflags "$@" && add_stripflags "$@"
   377         kx }
   377         kx 
   377         kx check_headers(){
   377         kx     log check_headers "$@"
   377         kx     headers=$1
   377         kx     shift
   377         kx     disable_sanitized $headers
   377         kx     {
   377         kx         for hdr in $headers; do
   377         kx             print_include $hdr
   377         kx         done
   377         kx         echo "int x;"
   377         kx     } | test_cpp "$@" && enable_sanitized $headers
   377         kx }
   377         kx 
   377         kx check_header_objcc(){
   377         kx     log check_header_objcc "$@"
   377         kx     rm -f -- "$TMPO"
   377         kx     header=$1
   377         kx     shift
   377         kx     disable_sanitized $header
   377         kx     {
   377         kx        echo "#include <$header>"
   377         kx        echo "int main(void) { return 0; }"
   377         kx     } | test_objcc && test_stat "$TMPO" && enable_sanitized $header
   377         kx }
   377         kx 
   377         kx check_apple_framework(){
   377         kx     log check_apple_framework "$@"
   377         kx     framework="$1"
   377         kx     name="$(tolower $framework)"
   377         kx     header="${framework}/${framework}.h"
   377         kx     disable $name
   377         kx     check_header_objcc $header &&
   377         kx         enable $name && eval ${name}_extralibs='"-framework $framework"'
   377         kx }
   377         kx 
   377         kx check_func(){
   377         kx     log check_func "$@"
   377         kx     func=$1
   377         kx     shift
   377         kx     disable $func
   377         kx     test_ld "cc" "$@" <<EOF && enable $func
   377         kx extern int $func();
   377         kx int main(void){ $func(); }
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_complexfunc(){
   377         kx     log check_complexfunc "$@"
   377         kx     func=$1
   377         kx     narg=$2
   377         kx     shift 2
   377         kx     test $narg = 2 && args="f, g" || args="f * I"
   377         kx     disable $func
   377         kx     test_ld "cc" "$@" <<EOF && enable $func
   377         kx #include <complex.h>
   377         kx #include <math.h>
   377         kx float foo(complex float f, complex float g) { return $func($args); }
   377         kx int main(void){ return (int) foo; }
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_mathfunc(){
   377         kx     log check_mathfunc "$@"
   377         kx     func=$1
   377         kx     narg=$2
   377         kx     shift 2
   377         kx     test $narg = 2 && args="f, g" || args="f"
   377         kx     disable $func
   377         kx     test_ld "cc" "$@" <<EOF && enable $func
   377         kx #include <math.h>
   377         kx float foo(float f, float g) { return $func($args); }
   377         kx int main(void){ return (int) foo; }
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_func_headers(){
   377         kx     log check_func_headers "$@"
   377         kx     headers=$1
   377         kx     funcs=$2
   377         kx     shift 2
   377         kx     {
   377         kx         for hdr in $headers; do
   377         kx             print_include $hdr
   377         kx         done
   377         kx         echo "#include <stdint.h>"
   377         kx         for func in $funcs; do
   377         kx             echo "long check_$func(void) { return (long) $func; }"
   377         kx         done
   377         kx         echo "int main(void) { int ret = 0;"
   377         kx         # LTO could optimize out the test functions without this
   377         kx         for func in $funcs; do
   377         kx             echo " ret |= ((intptr_t)check_$func) & 0xFFFF;"
   377         kx         done
   377         kx         echo "return ret; }"
   377         kx     } | test_ld "cc" "$@" && enable $funcs && enable_sanitized $headers
   377         kx }
   377         kx 
   377         kx check_class_headers_cpp(){
   377         kx     log check_class_headers_cpp "$@"
   377         kx     headers=$1
   377         kx     classes=$2
   377         kx     shift 2
   377         kx     {
   377         kx         for hdr in $headers; do
   377         kx             echo "#include <$hdr>"
   377         kx         done
   377         kx         echo "int main(void) { "
   377         kx         i=1
   377         kx         for class in $classes; do
   377         kx             echo "$class obj$i;"
   377         kx             i=$(expr $i + 1)
   377         kx         done
   377         kx         echo "return 0; }"
   377         kx     } | test_ld "cxx" "$@" && enable $funcs && enable_sanitized $headers
   377         kx }
   377         kx 
   377         kx test_cpp_condition(){
   377         kx     log test_cpp_condition "$@"
   377         kx     header=$1
   377         kx     condition=$2
   377         kx     shift 2
   377         kx     test_cpp "$@" <<EOF
   377         kx #include <$header>
   377         kx #if !($condition)
   377         kx #error "unsatisfied condition: $condition"
   377         kx #endif
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_cpp_condition(){
   377         kx     log check_cpp_condition "$@"
   377         kx     name=$1
   377         kx     shift 1
   377         kx     disable $name
   377         kx     test_cpp_condition "$@" && enable $name
   377         kx }
   377         kx 
   377         kx test_cflags_cc(){
   377         kx     log test_cflags_cc "$@"
   377         kx     flags=$1
   377         kx     header=$2
   377         kx     condition=$3
   377         kx     shift 3
   377         kx     set -- $($cflags_filter "$flags")
   377         kx     test_cc "$@" <<EOF
   377         kx #include <$header>
   377         kx #if !($condition)
   377         kx #error "unsatisfied condition: $condition"
   377         kx #endif
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_lib(){
   377         kx     log check_lib "$@"
   377         kx     name="$1"
   377         kx     headers="$2"
   377         kx     funcs="$3"
   377         kx     shift 3
   377         kx     disable $name
   377         kx     check_func_headers "$headers" "$funcs" "$@" &&
   377         kx         enable $name && eval ${name}_extralibs="\$@"
   377         kx }
   377         kx 
   377         kx check_lib_cpp(){
   377         kx     log check_lib_cpp "$@"
   377         kx     name="$1"
   377         kx     headers="$2"
   377         kx     classes="$3"
   377         kx     shift 3
   377         kx     disable $name
   377         kx     check_class_headers_cpp "$headers" "$classes" "$@" &&
   377         kx         enable $name && eval ${name}_extralibs="\$@"
   377         kx }
   377         kx 
   377         kx test_pkg_config(){
   377         kx     log test_pkg_config "$@"
   377         kx     name="$1"
   377         kx     pkg_version="$2"
   377         kx     pkg="${2%% *}"
   377         kx     headers="$3"
   377         kx     funcs="$4"
   377         kx     shift 4
   377         kx     disable $name
   377         kx     test_cmd $pkg_config --exists --print-errors $pkg_version || return
   377         kx     pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
   377         kx     pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
   377         kx     check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
   377         kx         enable $name &&
   377         kx         set_sanitized "${name}_cflags"    $pkg_cflags &&
   377         kx         set_sanitized "${name}_extralibs" $pkg_libs
   377         kx }
   377         kx 
   377         kx check_pkg_config(){
   377         kx     log check_pkg_config "$@"
   377         kx     name="$1"
   377         kx     test_pkg_config "$@" &&
   377         kx         eval add_cflags \$${name}_cflags
   377         kx }
   377         kx 
   377         kx test_exec(){
   377         kx     test_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
   377         kx }
   377         kx 
   377         kx check_exec_crash(){
   377         kx     log check_exec_crash "$@"
   377         kx     code=$(cat)
   377         kx 
   377         kx     # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
   377         kx     # are safe but may not be available everywhere.  Thus we use
   377         kx     # raise(SIGTERM) instead.  The check is run in a subshell so we
   377         kx     # can redirect the "Terminated" message from the shell.  SIGBUS
   377         kx     # is not defined by standard C so it is used conditionally.
   377         kx 
   377         kx     (test_exec "$@") >> $logfile 2>&1 <<EOF
   377         kx #include <signal.h>
   377         kx static void sighandler(int sig){
   377         kx     raise(SIGTERM);
   377         kx }
   377         kx int foo(void){
   377         kx     $code
   377         kx }
   377         kx int (*func_ptr)(void) = foo;
   377         kx int main(void){
   377         kx     signal(SIGILL, sighandler);
   377         kx     signal(SIGFPE, sighandler);
   377         kx     signal(SIGSEGV, sighandler);
   377         kx #ifdef SIGBUS
   377         kx     signal(SIGBUS, sighandler);
   377         kx #endif
   377         kx     return func_ptr();
   377         kx }
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_type(){
   377         kx     log check_type "$@"
   377         kx     headers=$1
   377         kx     type=$2
   377         kx     shift 2
   377         kx     disable_sanitized "$type"
   377         kx     test_code cc "$headers" "$type v" "$@" && enable_sanitized "$type"
   377         kx }
   377         kx 
   377         kx check_struct(){
   377         kx     log check_struct "$@"
   377         kx     headers=$1
   377         kx     struct=$2
   377         kx     member=$3
   377         kx     shift 3
   377         kx     disable_sanitized "${struct}_${member}"
   377         kx     test_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
   377         kx         enable_sanitized "${struct}_${member}"
   377         kx }
   377         kx 
   377         kx check_builtin(){
   377         kx     log check_builtin "$@"
   377         kx     name=$1
   377         kx     headers=$2
   377         kx     builtin=$3
   377         kx     shift 3
   377         kx     disable "$name"
   377         kx     test_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
   377         kx }
   377         kx 
   377         kx check_compile_assert(){
   377         kx     log check_compile_assert "$@"
   377         kx     name=$1
   377         kx     headers=$2
   377         kx     condition=$3
   377         kx     shift 3
   377         kx     disable "$name"
   377         kx     test_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
   377         kx }
   377         kx 
   377         kx check_cc(){
   377         kx     log check_cc "$@"
   377         kx     name=$1
   377         kx     shift
   377         kx     disable "$name"
   377         kx     test_code cc "$@" && enable "$name"
   377         kx }
   377         kx 
   377         kx require(){
   377         kx     log require "$@"
   377         kx     name_version="$1"
   377         kx     name="${1%% *}"
   377         kx     shift
   377         kx     check_lib $name "$@" || die "ERROR: $name_version not found"
   377         kx }
   377         kx 
   377         kx require_cc(){
   377         kx     log require_cc "$@"
   377         kx     name="$1"
   377         kx     check_cc "$@" || die "ERROR: $name failed"
   377         kx }
   377         kx 
   377         kx require_cpp(){
   377         kx     log require_cpp "$@"
   377         kx     name_version="$1"
   377         kx     name="${1%% *}"
   377         kx     shift
   377         kx     check_lib_cpp "$name" "$@" || die "ERROR: $name_version not found"
   377         kx }
   377         kx 
   377         kx require_headers(){
   377         kx     log require_headers "$@"
   377         kx     headers="$1"
   377         kx     check_headers "$@" || die "ERROR: $headers not found"
   377         kx }
   377         kx 
   377         kx require_cpp_condition(){
   377         kx     log require_cpp_condition "$@"
   377         kx     condition="$3"
   377         kx     check_cpp_condition "$@" || die "ERROR: $condition not satisfied"
   377         kx }
   377         kx 
   377         kx require_pkg_config(){
   377         kx     log require_pkg_config "$@"
   377         kx     pkg_version="$2"
   377         kx     check_pkg_config "$@" || die "ERROR: $pkg_version not found using pkg-config$pkg_config_fail_message"
   377         kx }
   377         kx 
   377         kx test_host_cc(){
   377         kx     log test_host_cc "$@"
   377         kx     cat > $TMPC
   377         kx     log_file $TMPC
   377         kx     test_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
   377         kx }
   377         kx 
   377         kx test_host_cpp(){
   377         kx     log test_host_cpp "$@"
   377         kx     cat > $TMPC
   377         kx     log_file $TMPC
   377         kx     test_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC
   377         kx }
   377         kx 
   377         kx check_host_cppflags(){
   377         kx     log check_host_cppflags "$@"
   377         kx     test_host_cpp "$@" <<EOF && append host_cppflags "$@"
   377         kx #include <stdlib.h>
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_host_cflags(){
   377         kx     log check_host_cflags "$@"
   377         kx     set -- $($host_cflags_filter "$@")
   377         kx     test_host_cc "$@" <<EOF && append host_cflags "$@"
   377         kx int x;
   377         kx EOF
   377         kx }
   377         kx 
   377         kx test_host_cpp_condition(){
   377         kx     log test_host_cpp_condition "$@"
   377         kx     header=$1
   377         kx     condition=$2
   377         kx     shift 2
   377         kx     test_host_cpp "$@" <<EOF
   377         kx #include <$header>
   377         kx #if !($condition)
   377         kx #error "unsatisfied condition: $condition"
   377         kx #endif
   377         kx EOF
   377         kx }
   377         kx 
   377         kx check_host_cpp_condition(){
   377         kx     log check_host_cpp_condition "$@"
   377         kx     name=$1
   377         kx     shift 1
   377         kx     disable $name
   377         kx     test_host_cpp_condition "$@" && enable $name
   377         kx }
   377         kx 
   377         kx cp_if_changed(){
   377         kx     cmp -s "$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return
   377         kx     mkdir -p "$(dirname $2)"
   377         kx     cp -f "$1" "$2"
   377         kx }
   377         kx 
   377         kx # CONFIG_LIST contains configurable options, while HAVE_LIST is for
   377         kx # system-dependent things.
   377         kx 
   377         kx AVCODEC_COMPONENTS="
   377         kx     bsfs
   377         kx     decoders
   377         kx     encoders
   377         kx     hwaccels
   377         kx     parsers
   377         kx "
   377         kx 
   377         kx AVDEVICE_COMPONENTS="
   377         kx     indevs
   377         kx     outdevs
   377         kx "
   377         kx 
   377         kx AVFILTER_COMPONENTS="
   377         kx     filters
   377         kx "
   377         kx 
   377         kx AVFORMAT_COMPONENTS="
   377         kx     demuxers
   377         kx     muxers
   377         kx     protocols
   377         kx "
   377         kx 
   377         kx COMPONENT_LIST="
   377         kx     $AVCODEC_COMPONENTS
   377         kx     $AVDEVICE_COMPONENTS
   377         kx     $AVFILTER_COMPONENTS
   377         kx     $AVFORMAT_COMPONENTS
   377         kx "
   377         kx 
   377         kx EXAMPLE_LIST="
   377         kx     avio_list_dir_example
   377         kx     avio_reading_example
   377         kx     decode_audio_example
   377         kx     decode_video_example
   377         kx     demuxing_decoding_example
   377         kx     encode_audio_example
   377         kx     encode_video_example
   377         kx     extract_mvs_example
   377         kx     filter_audio_example
   377         kx     filtering_audio_example
   377         kx     filtering_video_example
   377         kx     http_multiclient_example
   377         kx     hw_decode_example
   377         kx     metadata_example
   377         kx     muxing_example
   377         kx     qsvdec_example
   377         kx     remuxing_example
   377         kx     resampling_audio_example
   377         kx     scaling_video_example
   377         kx     transcode_aac_example
   377         kx     transcoding_example
   377         kx     vaapi_encode_example
   377         kx     vaapi_transcode_example
   377         kx "
   377         kx 
   377         kx EXTERNAL_AUTODETECT_LIBRARY_LIST="
   377         kx     alsa
   377         kx     appkit
   377         kx     avfoundation
   377         kx     bzlib
   377         kx     coreimage
   377         kx     iconv
   377         kx     libxcb
   377         kx     libxcb_shm
   377         kx     libxcb_shape
   377         kx     libxcb_xfixes
   377         kx     lzma
   377         kx     mediafoundation
   377         kx     schannel
   377         kx     sdl2
   377         kx     securetransport
   377         kx     sndio
   377         kx     xlib
   377         kx     zlib
   377         kx "
   377         kx 
   377         kx EXTERNAL_LIBRARY_GPL_LIST="
   377         kx     avisynth
   377         kx     frei0r
   377         kx     libcdio
   377         kx     libdavs2
   377         kx     librubberband
   377         kx     libvidstab
   377         kx     libx264
   377         kx     libx265
   377         kx     libxavs
   377         kx     libxavs2
   377         kx     libxvid
   377         kx "
   377         kx 
   377         kx EXTERNAL_LIBRARY_NONFREE_LIST="
   377         kx     decklink
   377         kx     libfdk_aac
   377         kx     openssl
   377         kx     libtls
   377         kx "
   377         kx 
   377         kx EXTERNAL_LIBRARY_VERSION3_LIST="
   377         kx     gmp
   377         kx     libaribb24
   377         kx     liblensfun
   377         kx     libopencore_amrnb
   377         kx     libopencore_amrwb
   377         kx     libvo_amrwbenc
   377         kx     mbedtls
   377         kx     rkmpp
   377         kx "
   377         kx 
   377         kx EXTERNAL_LIBRARY_GPLV3_LIST="
   377         kx     libsmbclient
   377         kx "
   377         kx 
   377         kx EXTERNAL_LIBRARY_LIST="
   377         kx     $EXTERNAL_LIBRARY_GPL_LIST
   377         kx     $EXTERNAL_LIBRARY_NONFREE_LIST
   377         kx     $EXTERNAL_LIBRARY_VERSION3_LIST
   377         kx     $EXTERNAL_LIBRARY_GPLV3_LIST
   377         kx     chromaprint
   377         kx     gcrypt
   377         kx     gnutls
   377         kx     jni
   377         kx     ladspa
   377         kx     libaom
   377         kx     libass
   377         kx     libbluray
   377         kx     libbs2b
   377         kx     libcaca
   377         kx     libcelt
   377         kx     libcodec2
   377         kx     libdav1d
   377         kx     libdc1394
   377         kx     libdrm
   377         kx     libflite
   377         kx     libfontconfig
   377         kx     libfreetype
   377         kx     libfribidi
   377         kx     libglslang
   377         kx     libgme
   377         kx     libgsm
   377         kx     libiec61883
   377         kx     libilbc
   377         kx     libjack
   377         kx     libklvanc
   377         kx     libkvazaar
   377         kx     libmodplug
   377         kx     libmp3lame
   377         kx     libmysofa
   377         kx     libopencv
   377         kx     libopenh264
   377         kx     libopenjpeg
   377         kx     libopenmpt
   377         kx     libopenvino
   377         kx     libopus
   377         kx     libpulse
   377         kx     librabbitmq
   377         kx     librav1e
   377         kx     librist
   377         kx     librsvg
   377         kx     librtmp
   377         kx     libshine
   377         kx     libsmbclient
   377         kx     libsnappy
   377         kx     libsoxr
   377         kx     libspeex
   377         kx     libsrt
   377         kx     libssh
   377         kx     libsvtav1
   377         kx     libtensorflow
   377         kx     libtesseract
   377         kx     libtheora
   377         kx     libtwolame
   377         kx     libuavs3d
   377         kx     libv4l2
   377         kx     libvmaf
   377         kx     libvorbis
   377         kx     libvpx
   377         kx     libwebp
   377         kx     libxml2
   377         kx     libzimg
   377         kx     libzmq
   377         kx     libzvbi
   377         kx     lv2
   377         kx     mediacodec
   377         kx     openal
   377         kx     opengl
   377         kx     pocketsphinx
   377         kx     vapoursynth
   377         kx "
   377         kx 
   377         kx HWACCEL_AUTODETECT_LIBRARY_LIST="
   377         kx     amf
   377         kx     audiotoolbox
   377         kx     crystalhd
   377         kx     cuda
   377         kx     cuda_llvm
   377         kx     cuvid
   377         kx     d3d11va
   377         kx     dxva2
   377         kx     ffnvcodec
   377         kx     nvdec
   377         kx     nvenc
   377         kx     vaapi
   377         kx     vdpau
   377         kx     videotoolbox
   377         kx     v4l2_m2m
   377         kx     xvmc
   377         kx "
   377         kx 
   377         kx # catchall list of things that require external libs to link
   377         kx EXTRALIBS_LIST="
   377         kx     cpu_init
   377         kx     cws2fws
   377         kx "
   377         kx 
   377         kx HWACCEL_LIBRARY_NONFREE_LIST="
   377         kx     cuda_nvcc
   377         kx     cuda_sdk
   377         kx     libnpp
   377         kx "
   377         kx 
   377         kx HWACCEL_LIBRARY_LIST="
   377         kx     $HWACCEL_LIBRARY_NONFREE_LIST
   377         kx     libmfx
   377         kx     mmal
   377         kx     omx
   377         kx     opencl
   377         kx     vulkan
   377         kx "
   377         kx 
   377         kx DOCUMENT_LIST="
   377         kx     doc
   377         kx     htmlpages
   377         kx     manpages
   377         kx     podpages
   377         kx     txtpages
   377         kx "
   377         kx 
   377         kx FEATURE_LIST="
   377         kx     ftrapv
   377         kx     gray
   377         kx     hardcoded_tables
   377         kx     omx_rpi
   377         kx     omx_img
   377         kx     runtime_cpudetect
   377         kx     safe_bitstream_reader
   377         kx     shared
   377         kx     small
   377         kx     static
   377         kx     swscale_alpha
   377         kx "
   377         kx 
   377         kx # this list should be kept in linking order
   377         kx LIBRARY_LIST="
   377         kx     avdevice
   377         kx     avfilter
   377         kx     swscale
   377         kx     postproc
   377         kx     avformat
   377         kx     avcodec
   377         kx     swresample
   377         kx     avresample
   377         kx     avutil
   377         kx "
   377         kx 
   377         kx LICENSE_LIST="
   377         kx     gpl
   377         kx     nonfree
   377         kx     version3
   377         kx "
   377         kx 
   377         kx PROGRAM_LIST="
   377         kx     ffplay
   377         kx     ffprobe
   377         kx     ffmpeg
   377         kx "
   377         kx 
   377         kx SUBSYSTEM_LIST="
   377         kx     dct
   377         kx     dwt
   377         kx     error_resilience
   377         kx     faan
   377         kx     fast_unaligned
   377         kx     fft
   377         kx     lsp
   377         kx     lzo
   377         kx     mdct
   377         kx     pixelutils
   377         kx     network
   377         kx     rdft
   377         kx "
   377         kx 
   377         kx # COMPONENT_LIST needs to come last to ensure correct dependency checking
   377         kx CONFIG_LIST="
   377         kx     $DOCUMENT_LIST
   377         kx     $EXAMPLE_LIST
   377         kx     $EXTERNAL_LIBRARY_LIST
   377         kx     $EXTERNAL_AUTODETECT_LIBRARY_LIST
   377         kx     $HWACCEL_LIBRARY_LIST
   377         kx     $HWACCEL_AUTODETECT_LIBRARY_LIST
   377         kx     $FEATURE_LIST
   377         kx     $LICENSE_LIST
   377         kx     $LIBRARY_LIST
   377         kx     $PROGRAM_LIST
   377         kx     $SUBSYSTEM_LIST
   377         kx     autodetect
   377         kx     fontconfig
   377         kx     large_tests
   377         kx     linux_perf
   377         kx     memory_poisoning
   377         kx     neon_clobber_test
   377         kx     ossfuzz
   377         kx     pic
   377         kx     thumb
   377         kx     valgrind_backtrace
   377         kx     xmm_clobber_test
   377         kx     $COMPONENT_LIST
   377         kx "
   377         kx 
   377         kx THREADS_LIST="
   377         kx     pthreads
   377         kx     os2threads
   377         kx     w32threads
   377         kx "
   377         kx 
   377         kx ATOMICS_LIST="
   377         kx     atomics_gcc
   377         kx     atomics_suncc
   377         kx     atomics_win32
   377         kx "
   377         kx 
   377         kx AUTODETECT_LIBS="
   377         kx     $EXTERNAL_AUTODETECT_LIBRARY_LIST
   377         kx     $HWACCEL_AUTODETECT_LIBRARY_LIST
   377         kx     $THREADS_LIST
   377         kx "
   377         kx 
   377         kx ARCH_LIST="
   377         kx     aarch64
   377         kx     alpha
   377         kx     arm
   377         kx     avr32
   377         kx     avr32_ap
   377         kx     avr32_uc
   377         kx     bfin
   377         kx     ia64
   377         kx     m68k
   377         kx     mips
   377         kx     mips64
   377         kx     parisc
   377         kx     ppc
   377         kx     ppc64
   377         kx     s390
   377         kx     sh4
   377         kx     sparc
   377         kx     sparc64
   377         kx     tilegx
   377         kx     tilepro
   377         kx     tomi
   377         kx     x86
   377         kx     x86_32
   377         kx     x86_64
   377         kx "
   377         kx 
   377         kx ARCH_EXT_LIST_ARM="
   377         kx     armv5te
   377         kx     armv6
   377         kx     armv6t2
   377         kx     armv8
   377         kx     neon
   377         kx     vfp
   377         kx     vfpv3
   377         kx     setend
   377         kx "
   377         kx 
   377         kx ARCH_EXT_LIST_MIPS="
   377         kx     mipsfpu
   377         kx     mips32r2
   377         kx     mips32r5
   377         kx     mips64r2
   377         kx     mips32r6
   377         kx     mips64r6
   377         kx     mipsdsp
   377         kx     mipsdspr2
   377         kx     msa
   377         kx     msa2
   377         kx "
   377         kx 
   377         kx ARCH_EXT_LIST_LOONGSON="
   377         kx     loongson2
   377         kx     loongson3
   377         kx     mmi
   377         kx "
   377         kx 
   377         kx ARCH_EXT_LIST_X86_SIMD="
   377         kx     aesni
   377         kx     amd3dnow
   377         kx     amd3dnowext
   377         kx     avx
   377         kx     avx2
   377         kx     avx512
   377         kx     fma3
   377         kx     fma4
   377         kx     mmx
   377         kx     mmxext
   377         kx     sse
   377         kx     sse2
   377         kx     sse3
   377         kx     sse4
   377         kx     sse42
   377         kx     ssse3
   377         kx     xop
   377         kx "
   377         kx 
   377         kx ARCH_EXT_LIST_PPC="
   377         kx     altivec
   377         kx     dcbzl
   377         kx     ldbrx
   377         kx     power8
   377         kx     ppc4xx
   377         kx     vsx
   377         kx "
   377         kx 
   377         kx ARCH_EXT_LIST_X86="
   377         kx     $ARCH_EXT_LIST_X86_SIMD
   377         kx     cpunop
   377         kx     i686
   377         kx "
   377         kx 
   377         kx ARCH_EXT_LIST="
   377         kx     $ARCH_EXT_LIST_ARM
   377         kx     $ARCH_EXT_LIST_PPC
   377         kx     $ARCH_EXT_LIST_X86
   377         kx     $ARCH_EXT_LIST_MIPS
   377         kx     $ARCH_EXT_LIST_LOONGSON
   377         kx "
   377         kx 
   377         kx ARCH_FEATURES="
   377         kx     aligned_stack
   377         kx     fast_64bit
   377         kx     fast_clz
   377         kx     fast_cmov
   377         kx     local_aligned
   377         kx     simd_align_16
   377         kx     simd_align_32
   377         kx     simd_align_64
   377         kx "
   377         kx 
   377         kx BUILTIN_LIST="
   377         kx     atomic_cas_ptr
   377         kx     machine_rw_barrier
   377         kx     MemoryBarrier
   377         kx     mm_empty
   377         kx     rdtsc
   377         kx     sem_timedwait
   377         kx     sync_val_compare_and_swap
   377         kx "
   377         kx HAVE_LIST_CMDLINE="
   377         kx     inline_asm
   377         kx     symver
   377         kx     x86asm
   377         kx "
   377         kx 
   377         kx HAVE_LIST_PUB="
   377         kx     bigendian
   377         kx     fast_unaligned
   377         kx "
   377         kx 
   377         kx HEADERS_LIST="
   377         kx     arpa_inet_h
   377         kx     asm_types_h
   377         kx     cdio_paranoia_h
   377         kx     cdio_paranoia_paranoia_h
   377         kx     cuda_h
   377         kx     dispatch_dispatch_h
   377         kx     dev_bktr_ioctl_bt848_h
   377         kx     dev_bktr_ioctl_meteor_h
   377         kx     dev_ic_bt8xx_h
   377         kx     dev_video_bktr_ioctl_bt848_h
   377         kx     dev_video_meteor_ioctl_meteor_h
   377         kx     direct_h
   377         kx     dirent_h
   377         kx     dxgidebug_h
   377         kx     dxva_h
   377         kx     ES2_gl_h
   377         kx     gsm_h
   377         kx     io_h
   377         kx     linux_dma_buf_h
   377         kx     linux_perf_event_h
   377         kx     machine_ioctl_bt848_h
   377         kx     machine_ioctl_meteor_h
   377         kx     malloc_h
   377         kx     opencv2_core_core_c_h
   377         kx     OpenGL_gl3_h
   377         kx     poll_h
   377         kx     sys_param_h
   377         kx     sys_resource_h
   377         kx     sys_select_h
   377         kx     sys_soundcard_h
   377         kx     sys_time_h
   377         kx     sys_un_h
   377         kx     sys_videoio_h
   377         kx     termios_h
   377         kx     udplite_h
   377         kx     unistd_h
   377         kx     valgrind_valgrind_h
   377         kx     windows_h
   377         kx     winsock2_h
   377         kx "
   377         kx 
   377         kx INTRINSICS_LIST="
   377         kx     intrinsics_neon
   377         kx "
   377         kx 
   377         kx COMPLEX_FUNCS="
   377         kx     cabs
   377         kx     cexp
   377         kx "
   377         kx 
   377         kx MATH_FUNCS="
   377         kx     atanf
   377         kx     atan2f
   377         kx     cbrt
   377         kx     cbrtf
   377         kx     copysign
   377         kx     cosf
   377         kx     erf
   377         kx     exp2
   377         kx     exp2f
   377         kx     expf
   377         kx     hypot
   377         kx     isfinite
   377         kx     isinf
   377         kx     isnan
   377         kx     ldexpf
   377         kx     llrint
   377         kx     llrintf
   377         kx     log2
   377         kx     log2f
   377         kx     log10f
   377         kx     lrint
   377         kx     lrintf
   377         kx     powf
   377         kx     rint
   377         kx     round
   377         kx     roundf
   377         kx     sinf
   377         kx     trunc
   377         kx     truncf
   377         kx "
   377         kx 
   377         kx SYSTEM_FEATURES="
   377         kx     dos_paths
   377         kx     libc_msvcrt
   377         kx     MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
   377         kx     section_data_rel_ro
   377         kx     threads
   377         kx     uwp
   377         kx     winrt
   377         kx "
   377         kx 
   377         kx SYSTEM_FUNCS="
   377         kx     access
   377         kx     aligned_malloc
   377         kx     arc4random
   377         kx     clock_gettime
   377         kx     closesocket
   377         kx     CommandLineToArgvW
   377         kx     fcntl
   377         kx     getaddrinfo
   377         kx     gethrtime
   377         kx     getopt
   377         kx     GetModuleHandle
   377         kx     GetProcessAffinityMask
   377         kx     GetProcessMemoryInfo
   377         kx     GetProcessTimes
   377         kx     getrusage
   377         kx     GetStdHandle
   377         kx     GetSystemTimeAsFileTime
   377         kx     gettimeofday
   377         kx     glob
   377         kx     glXGetProcAddress
   377         kx     gmtime_r
   377         kx     inet_aton
   377         kx     isatty
   377         kx     kbhit
   377         kx     localtime_r
   377         kx     lstat
   377         kx     lzo1x_999_compress
   377         kx     mach_absolute_time
   377         kx     MapViewOfFile
   377         kx     memalign
   377         kx     mkstemp
   377         kx     mmap
   377         kx     mprotect
   377         kx     nanosleep
   377         kx     PeekNamedPipe
   377         kx     posix_memalign
   377         kx     pthread_cancel
   377         kx     sched_getaffinity
   377         kx     SecItemImport
   377         kx     SetConsoleTextAttribute
   377         kx     SetConsoleCtrlHandler
   377         kx     SetDllDirectory
   377         kx     setmode
   377         kx     setrlimit
   377         kx     Sleep
   377         kx     strerror_r
   377         kx     sysconf
   377         kx     sysctl
   377         kx     usleep
   377         kx     UTGetOSTypeFromString
   377         kx     VirtualAlloc
   377         kx     wglGetProcAddress
   377         kx "
   377         kx 
   377         kx SYSTEM_LIBRARIES="
   377         kx     bcrypt
   377         kx     vaapi_drm
   377         kx     vaapi_x11
   377         kx     vdpau_x11
   377         kx "
   377         kx 
   377         kx TOOLCHAIN_FEATURES="
   377         kx     as_arch_directive
   377         kx     as_dn_directive
   377         kx     as_fpu_directive
   377         kx     as_func
   377         kx     as_object_arch
   377         kx     asm_mod_q
   377         kx     blocks_extension
   377         kx     ebp_available
   377         kx     ebx_available
   377         kx     gnu_as
   377         kx     gnu_windres
   377         kx     ibm_asm
   377         kx     inline_asm_direct_symbol_refs
   377         kx     inline_asm_labels
   377         kx     inline_asm_nonlocal_labels
   377         kx     pragma_deprecated
   377         kx     rsync_contimeout
   377         kx     symver_asm_label
   377         kx     symver_gnu_asm
   377         kx     vfp_args
   377         kx     xform_asm
   377         kx     xmm_clobbers
   377         kx "
   377         kx 
   377         kx TYPES_LIST="
   377         kx     kCMVideoCodecType_HEVC
   377         kx     kCMVideoCodecType_HEVCWithAlpha
   377         kx     kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange
   377         kx     kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ
   377         kx     kCVImageBufferTransferFunction_ITU_R_2100_HLG
   377         kx     kCVImageBufferTransferFunction_Linear
   377         kx     socklen_t
   377         kx     struct_addrinfo
   377         kx     struct_group_source_req
   377         kx     struct_ip_mreq_source
   377         kx     struct_ipv6_mreq
   377         kx     struct_msghdr_msg_flags
   377         kx     struct_pollfd
   377         kx     struct_rusage_ru_maxrss
   377         kx     struct_sctp_event_subscribe
   377         kx     struct_sockaddr_in6
   377         kx     struct_sockaddr_sa_len
   377         kx     struct_sockaddr_storage
   377         kx     struct_stat_st_mtim_tv_nsec
   377         kx     struct_v4l2_frmivalenum_discrete
   377         kx "
   377         kx 
   377         kx HAVE_LIST="
   377         kx     $ARCH_EXT_LIST
   377         kx     $(add_suffix _external $ARCH_EXT_LIST)
   377         kx     $(add_suffix _inline   $ARCH_EXT_LIST)
   377         kx     $ARCH_FEATURES
   377         kx     $BUILTIN_LIST
   377         kx     $COMPLEX_FUNCS
   377         kx     $HAVE_LIST_CMDLINE
   377         kx     $HAVE_LIST_PUB
   377         kx     $HEADERS_LIST
   377         kx     $INTRINSICS_LIST
   377         kx     $MATH_FUNCS
   377         kx     $SYSTEM_FEATURES
   377         kx     $SYSTEM_FUNCS
   377         kx     $SYSTEM_LIBRARIES
   377         kx     $THREADS_LIST
   377         kx     $TOOLCHAIN_FEATURES
   377         kx     $TYPES_LIST
   377         kx     libdrm_getfb2
   377         kx     makeinfo
   377         kx     makeinfo_html
   377         kx     opencl_d3d11
   377         kx     opencl_drm_arm
   377         kx     opencl_drm_beignet
   377         kx     opencl_dxva2
   377         kx     opencl_vaapi_beignet
   377         kx     opencl_vaapi_intel_media
   377         kx     perl
   377         kx     pod2man
   377         kx     texi2html
   377         kx "
   377         kx 
   377         kx # options emitted with CONFIG_ prefix but not available on the command line
   377         kx CONFIG_EXTRA="
   377         kx     aandcttables
   377         kx     ac3dsp
   377         kx     adts_header
   377         kx     atsc_a53
   377         kx     audio_frame_queue
   377         kx     audiodsp
   377         kx     blockdsp
   377         kx     bswapdsp
   377         kx     cabac
   377         kx     cbs
   377         kx     cbs_av1
   377         kx     cbs_h264
   377         kx     cbs_h265
   377         kx     cbs_jpeg
   377         kx     cbs_mpeg2
   377         kx     cbs_vp9
   377         kx     dirac_parse
   377         kx     dnn
   377         kx     dvprofile
   377         kx     exif
   377         kx     faandct
   377         kx     faanidct
   377         kx     fdctdsp
   377         kx     flacdsp
   377         kx     fmtconvert
   377         kx     frame_thread_encoder
   377         kx     g722dsp
   377         kx     golomb
   377         kx     gplv3
   377         kx     h263dsp
   377         kx     h264chroma
   377         kx     h264dsp
   377         kx     h264parse
   377         kx     h264pred
   377         kx     h264qpel
   377         kx     hevcparse
   377         kx     hpeldsp
   377         kx     huffman
   377         kx     huffyuvdsp
   377         kx     huffyuvencdsp
   377         kx     idctdsp
   377         kx     iirfilter
   377         kx     mdct15
   377         kx     intrax8
   377         kx     iso_media
   377         kx     ividsp
   377         kx     jpegtables
   377         kx     lgplv3
   377         kx     libx262
   377         kx     llauddsp
   377         kx     llviddsp
   377         kx     llvidencdsp
   377         kx     lpc
   377         kx     lzf
   377         kx     me_cmp
   377         kx     mpeg_er
   377         kx     mpegaudio
   377         kx     mpegaudiodsp
   377         kx     mpegaudioheader
   377         kx     mpegvideo
   377         kx     mpegvideoenc
   377         kx     mss34dsp
   377         kx     pixblockdsp
   377         kx     qpeldsp
   377         kx     qsv
   377         kx     qsvdec
   377         kx     qsvenc
   377         kx     qsvvpp
   377         kx     rangecoder
   377         kx     riffdec
   377         kx     riffenc
   377         kx     rtpdec
   377         kx     rtpenc_chain
   377         kx     rv34dsp
   377         kx     scene_sad
   377         kx     sinewin
   377         kx     snappy
   377         kx     srtp
   377         kx     startcode
   377         kx     texturedsp
   377         kx     texturedspenc
   377         kx     tpeldsp
   377         kx     vaapi_1
   377         kx     vaapi_encode
   377         kx     vc1dsp
   377         kx     videodsp
   377         kx     vp3dsp
   377         kx     vp56dsp
   377         kx     vp8dsp
   377         kx     wma_freqs
   377         kx     wmv2dsp
   377         kx "
   377         kx 
   377         kx CMDLINE_SELECT="
   377         kx     $ARCH_EXT_LIST
   377         kx     $CONFIG_LIST
   377         kx     $HAVE_LIST_CMDLINE
   377         kx     $THREADS_LIST
   377         kx     asm
   377         kx     cross_compile
   377         kx     debug
   377         kx     extra_warnings
   377         kx     logging
   377         kx     lto
   377         kx     optimizations
   377         kx     rpath
   377         kx     stripping
   377         kx "
   377         kx 
   377         kx PATHS_LIST="
   377         kx     bindir
   377         kx     datadir
   377         kx     docdir
   377         kx     incdir
   377         kx     libdir
   377         kx     mandir
   377         kx     pkgconfigdir
   377         kx     prefix
   377         kx     shlibdir
   377         kx     install_name_dir
   377         kx "
   377         kx 
   377         kx CMDLINE_SET="
   377         kx     $PATHS_LIST
   377         kx     ar
   377         kx     arch
   377         kx     as
   377         kx     assert_level
   377         kx     build_suffix
   377         kx     cc
   377         kx     objcc
   377         kx     cpu
   377         kx     cross_prefix
   377         kx     custom_allocator
   377         kx     cxx
   377         kx     dep_cc
   377         kx     doxygen
   377         kx     env
   377         kx     extra_version
   377         kx     gas
   377         kx     host_cc
   377         kx     host_cflags
   377         kx     host_extralibs
   377         kx     host_ld
   377         kx     host_ldflags
   377         kx     host_os
   377         kx     ignore_tests
   377         kx     install
   377         kx     ld
   377         kx     ln_s
   377         kx     logfile
   377         kx     malloc_prefix
   377         kx     nm
   377         kx     optflags
   377         kx     nvcc
   377         kx     nvccflags
   377         kx     pkg_config
   377         kx     pkg_config_flags
   377         kx     progs_suffix
   377         kx     random_seed
   377         kx     ranlib
   377         kx     samples
   377         kx     strip
   377         kx     sws_max_filter_size
   377         kx     sysinclude
   377         kx     sysroot
   377         kx     target_exec
   377         kx     target_os
   377         kx     target_path
   377         kx     target_samples
   377         kx     tempprefix
   377         kx     toolchain
   377         kx     valgrind
   377         kx     windres
   377         kx     x86asmexe
   377         kx "
   377         kx 
   377         kx CMDLINE_APPEND="
   377         kx     extra_cflags
   377         kx     extra_cxxflags
   377         kx     extra_objcflags
   377         kx     host_cppflags
   377         kx "
   377         kx 
   377         kx # code dependency declarations
   377         kx 
   377         kx # architecture extensions
   377         kx 
   377         kx armv5te_deps="arm"
   377         kx armv6_deps="arm"
   377         kx armv6t2_deps="arm"
   377         kx armv8_deps="aarch64"
   377         kx neon_deps_any="aarch64 arm"
   377         kx intrinsics_neon_deps="neon"
   377         kx vfp_deps_any="aarch64 arm"
   377         kx vfpv3_deps="vfp"
   377         kx setend_deps="arm"
   377         kx 
   377         kx map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
   377         kx 
   377         kx altivec_deps="ppc"
   377         kx dcbzl_deps="ppc"
   377         kx ldbrx_deps="ppc"
   377         kx ppc4xx_deps="ppc"
   377         kx vsx_deps="altivec"
   377         kx power8_deps="vsx"
   377         kx 
   377         kx loongson2_deps="mips"
   377         kx loongson3_deps="mips"
   377         kx mips32r2_deps="mips"
   377         kx mips32r5_deps="mips"
   377         kx mips32r6_deps="mips"
   377         kx mips64r2_deps="mips"
   377         kx mips64r6_deps="mips"
   377         kx mipsfpu_deps="mips"
   377         kx mipsdsp_deps="mips"
   377         kx mipsdspr2_deps="mips"
   377         kx mmi_deps_any="loongson2 loongson3"
   377         kx msa_deps="mipsfpu"
   377         kx msa2_deps="msa"
   377         kx 
   377         kx cpunop_deps="i686"
   377         kx x86_64_select="i686"
   377         kx x86_64_suggest="fast_cmov"
   377         kx 
   377         kx amd3dnow_deps="mmx"
   377         kx amd3dnowext_deps="amd3dnow"
   377         kx i686_deps="x86"
   377         kx mmx_deps="x86"
   377         kx mmxext_deps="mmx"
   377         kx sse_deps="mmxext"
   377         kx sse2_deps="sse"
   377         kx sse3_deps="sse2"
   377         kx ssse3_deps="sse3"
   377         kx sse4_deps="ssse3"
   377         kx sse42_deps="sse4"
   377         kx aesni_deps="sse42"
   377         kx avx_deps="sse42"
   377         kx xop_deps="avx"
   377         kx fma3_deps="avx"
   377         kx fma4_deps="avx"
   377         kx avx2_deps="avx"
   377         kx avx512_deps="avx2"
   377         kx 
   377         kx mmx_external_deps="x86asm"
   377         kx mmx_inline_deps="inline_asm x86"
   377         kx mmx_suggest="mmx_external mmx_inline"
   377         kx 
   377         kx for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do
   377         kx     eval dep=\$${ext}_deps
   377         kx     eval ${ext}_external_deps='"${dep}_external"'
   377         kx     eval ${ext}_inline_deps='"${dep}_inline"'
   377         kx     eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
   377         kx done
   377         kx 
   377         kx aligned_stack_if_any="aarch64 ppc x86"
   377         kx fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
   377         kx fast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
   377         kx fast_unaligned_if_any="aarch64 ppc x86"
   377         kx simd_align_16_if_any="altivec neon sse"
   377         kx simd_align_32_if_any="avx"
   377         kx simd_align_64_if_any="avx512"
   377         kx 
   377         kx # system capabilities
   377         kx linux_perf_deps="linux_perf_event_h"
   377         kx symver_if_any="symver_asm_label symver_gnu_asm"
   377         kx valgrind_backtrace_conflict="optimizations"
   377         kx valgrind_backtrace_deps="valgrind_valgrind_h"
   377         kx 
   377         kx # threading support
   377         kx atomics_gcc_if="sync_val_compare_and_swap"
   377         kx atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
   377         kx atomics_win32_if="MemoryBarrier"
   377         kx atomics_native_if_any="$ATOMICS_LIST"
   377         kx w32threads_deps="atomics_native"
   377         kx threads_if_any="$THREADS_LIST"
   377         kx 
   377         kx # subsystems
   377         kx cbs_av1_select="cbs"
   377         kx cbs_h264_select="cbs"
   377         kx cbs_h265_select="cbs"
   377         kx cbs_jpeg_select="cbs"
   377         kx cbs_mpeg2_select="cbs"
   377         kx cbs_vp9_select="cbs"
   377         kx dct_select="rdft"
   377         kx dirac_parse_select="golomb"
   377         kx dnn_suggest="libtensorflow libopenvino"
   377         kx dnn_deps="swscale"
   377         kx error_resilience_select="me_cmp"
   377         kx faandct_deps="faan"
   377         kx faandct_select="fdctdsp"
   377         kx faanidct_deps="faan"
   377         kx faanidct_select="idctdsp"
   377         kx h264dsp_select="startcode"
   377         kx hevcparse_select="atsc_a53 golomb"
   377         kx frame_thread_encoder_deps="encoders threads"
   377         kx intrax8_select="blockdsp idctdsp"
   377         kx mdct_select="fft"
   377         kx mdct15_select="fft"
   377         kx me_cmp_select="fdctdsp idctdsp pixblockdsp"
   377         kx mpeg_er_select="error_resilience"
   377         kx mpegaudio_select="mpegaudiodsp mpegaudioheader"
   377         kx mpegaudiodsp_select="dct"
   377         kx mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp"
   377         kx mpegvideoenc_select="aandcttables me_cmp mpegvideo pixblockdsp qpeldsp"
   377         kx vc1dsp_select="h264chroma qpeldsp startcode"
   377         kx rdft_select="fft"
   377         kx 
   377         kx # decoders / encoders
   377         kx aac_decoder_select="adts_header mdct15 mdct sinewin"
   377         kx aac_fixed_decoder_select="adts_header mdct"
   377         kx aac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin"
   377         kx aac_latm_decoder_select="aac_decoder aac_latm_parser"
   377         kx ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct"
   377         kx ac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct"
   377         kx ac3_encoder_select="ac3dsp audiodsp mdct me_cmp"
   377         kx ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp"
   377         kx acelp_kelvin_decoder_select="audiodsp"
   377         kx adpcm_g722_decoder_select="g722dsp"
   377         kx adpcm_g722_encoder_select="g722dsp"
   377         kx aic_decoder_select="golomb idctdsp"
   377         kx alac_encoder_select="lpc"
   377         kx als_decoder_select="bswapdsp"
   377         kx amrnb_decoder_select="lsp"
   377         kx amrwb_decoder_select="lsp"
   377         kx amv_decoder_select="sp5x_decoder exif"
   377         kx amv_encoder_select="jpegtables mpegvideoenc"
   377         kx ape_decoder_select="bswapdsp llauddsp"
   377         kx apng_decoder_deps="zlib"
   377         kx apng_encoder_deps="zlib"
   377         kx apng_encoder_select="llvidencdsp"
   377         kx aptx_decoder_select="audio_frame_queue"
   377         kx aptx_encoder_select="audio_frame_queue"
   377         kx aptx_hd_decoder_select="audio_frame_queue"
   377         kx aptx_hd_encoder_select="audio_frame_queue"
   377         kx asv1_decoder_select="blockdsp bswapdsp idctdsp"
   377         kx asv1_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp"
   377         kx asv2_decoder_select="blockdsp bswapdsp idctdsp"
   377         kx asv2_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp"
   377         kx atrac1_decoder_select="mdct sinewin"
   377         kx atrac3_decoder_select="mdct"
   377         kx atrac3al_decoder_select="mdct"
   377         kx atrac3p_decoder_select="mdct sinewin"
   377         kx atrac3pal_decoder_select="mdct sinewin"
   377         kx atrac9_decoder_select="mdct"
   377         kx av1_decoder_select="cbs_av1"
   377         kx bink_decoder_select="blockdsp hpeldsp"
   377         kx binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
   377         kx binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
   377         kx cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
   377         kx clearvideo_decoder_select="idctdsp"
   377         kx cllc_decoder_select="bswapdsp"
   377         kx comfortnoise_encoder_select="lpc"
   377         kx cook_decoder_select="audiodsp mdct sinewin"
   377         kx cscd_decoder_select="lzo"
   377         kx cscd_decoder_suggest="zlib"
   377         kx dca_decoder_select="mdct"
   377         kx dca_encoder_select="mdct"
   377         kx dds_decoder_select="texturedsp"
   377         kx dirac_decoder_select="dirac_parse dwt golomb videodsp mpegvideoenc"
   377         kx dnxhd_decoder_select="blockdsp idctdsp"
   377         kx dnxhd_encoder_select="blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
   377         kx dolby_e_decoder_select="mdct"
   377         kx dvvideo_decoder_select="dvprofile idctdsp"
   377         kx dvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp"
   377         kx dxa_decoder_deps="zlib"
   377         kx dxv_decoder_select="lzf texturedsp"
   377         kx eac3_decoder_select="ac3_decoder"
   377         kx eac3_encoder_select="ac3_encoder"
   377         kx eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo"
   377         kx eatgq_decoder_select="aandcttables"
   377         kx eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp"
   377         kx exr_decoder_deps="zlib"
   377         kx exr_encoder_deps="zlib"
   377         kx ffv1_decoder_select="rangecoder"
   377         kx ffv1_encoder_select="rangecoder"
   377         kx ffvhuff_decoder_select="huffyuv_decoder"
   377         kx ffvhuff_encoder_select="huffyuv_encoder"
   377         kx fic_decoder_select="golomb"
   377         kx flac_decoder_select="flacdsp"
   377         kx flac_encoder_select="bswapdsp flacdsp lpc"
   377         kx flashsv2_decoder_deps="zlib"
   377         kx flashsv2_encoder_deps="zlib"
   377         kx flashsv_decoder_deps="zlib"
   377         kx flashsv_encoder_deps="zlib"
   377         kx flv_decoder_select="h263_decoder"
   377         kx flv_encoder_select="h263_encoder"
   377         kx fourxm_decoder_select="blockdsp bswapdsp"
   377         kx fraps_decoder_select="bswapdsp huffman"
   377         kx g2m_decoder_deps="zlib"
   377         kx g2m_decoder_select="blockdsp idctdsp jpegtables"
   377         kx g729_decoder_select="audiodsp"
   377         kx h261_decoder_select="mpegvideo"
   377         kx h261_encoder_select="mpegvideoenc"
   377         kx h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp"
   377         kx h263_encoder_select="h263dsp mpegvideoenc"
   377         kx h263i_decoder_select="h263_decoder"
   377         kx h263p_decoder_select="h263_decoder"
   377         kx h263p_encoder_select="h263_encoder"
   377         kx h264_decoder_select="atsc_a53 cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp"
   377         kx h264_decoder_suggest="error_resilience"
   377         kx hap_decoder_select="snappy texturedsp"
   377         kx hap_encoder_deps="libsnappy"
   377         kx hap_encoder_select="texturedspenc"
   377         kx hevc_decoder_select="atsc_a53 bswapdsp cabac golomb hevcparse videodsp"
   377         kx huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp"
   377         kx huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp"
   377         kx hymt_decoder_select="huffyuv_decoder"
   377         kx iac_decoder_select="imc_decoder"
   377         kx imc_decoder_select="bswapdsp fft mdct sinewin"
   377         kx imm4_decoder_select="bswapdsp"
   377         kx imm5_decoder_select="h264_decoder hevc_decoder"
   377         kx indeo3_decoder_select="hpeldsp"
   377         kx indeo4_decoder_select="ividsp"
   377         kx indeo5_decoder_select="ividsp"
   377         kx interplay_video_decoder_select="hpeldsp"
   377         kx ipu_decoder_select="mpegvideo"
   377         kx jpegls_decoder_select="mjpeg_decoder"
   377         kx jv_decoder_select="blockdsp"
   377         kx lagarith_decoder_select="llviddsp"
   377         kx ljpeg_encoder_select="idctdsp jpegtables"
   377         kx lscr_decoder_deps="zlib"
   377         kx magicyuv_decoder_select="llviddsp"
   377         kx magicyuv_encoder_select="llvidencdsp"
   377         kx mdec_decoder_select="blockdsp bswapdsp idctdsp mpegvideo"
   377         kx metasound_decoder_select="lsp mdct sinewin"
   377         kx mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp"
   377         kx mjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables"
   377         kx mjpeg_encoder_select="jpegtables mpegvideoenc"
   377         kx mjpegb_decoder_select="mjpeg_decoder"
   377         kx mlp_decoder_select="mlp_parser"
   377         kx mlp_encoder_select="lpc audio_frame_queue"
   377         kx mobiclip_decoder_select="bswapdsp golomb"
   377         kx motionpixels_decoder_select="bswapdsp"
   377         kx mp1_decoder_select="mpegaudio"
   377         kx mp1float_decoder_select="mpegaudio"
   377         kx mp2_decoder_select="mpegaudio"
   377         kx mp2float_decoder_select="mpegaudio"
   377         kx mp3_decoder_select="mpegaudio"
   377         kx mp3adu_decoder_select="mpegaudio"
   377         kx mp3adufloat_decoder_select="mpegaudio"
   377         kx mp3float_decoder_select="mpegaudio"
   377         kx mp3on4_decoder_select="mpegaudio"
   377         kx mp3on4float_decoder_select="mpegaudio"
   377         kx mpc7_decoder_select="bswapdsp mpegaudiodsp"
   377         kx mpc8_decoder_select="mpegaudiodsp"
   377         kx mpegvideo_decoder_select="mpegvideo"
   377         kx mpeg1video_decoder_select="mpegvideo"
   377         kx mpeg1video_encoder_select="mpegvideoenc h263dsp"
   377         kx mpeg2video_decoder_select="mpegvideo"
   377         kx mpeg2video_encoder_select="mpegvideoenc h263dsp"
   377         kx mpeg4_decoder_select="h263_decoder mpeg4video_parser"
   377         kx mpeg4_encoder_select="h263_encoder"
   377         kx msa1_decoder_select="mss34dsp"
   377         kx mscc_decoder_deps="zlib"
   377         kx msmpeg4v1_decoder_select="h263_decoder"
   377         kx msmpeg4v2_decoder_select="h263_decoder"
   377         kx msmpeg4v2_encoder_select="h263_encoder"
   377         kx msmpeg4v3_decoder_select="h263_decoder"
   377         kx msmpeg4v3_encoder_select="h263_encoder"
   377         kx mss2_decoder_select="mpegvideo qpeldsp vc1_decoder"
   377         kx mts2_decoder_select="jpegtables mss34dsp"
   377         kx mv30_decoder_select="aandcttables blockdsp"
   377         kx mvha_decoder_deps="zlib"
   377         kx mvha_decoder_select="llviddsp"
   377         kx mwsc_decoder_deps="zlib"
   377         kx mxpeg_decoder_select="mjpeg_decoder"
   377         kx nellymoser_decoder_select="mdct sinewin"
   377         kx nellymoser_encoder_select="audio_frame_queue mdct sinewin"
   377         kx notchlc_decoder_select="lzf"
   377         kx nuv_decoder_select="idctdsp lzo"
   377         kx on2avc_decoder_select="mdct"
   377         kx opus_decoder_deps="swresample"
   377         kx opus_decoder_select="mdct15"
   377         kx opus_encoder_select="audio_frame_queue mdct15"
   377         kx png_decoder_deps="zlib"
   377         kx png_encoder_deps="zlib"
   377         kx png_encoder_select="llvidencdsp"
   377         kx prores_decoder_select="blockdsp idctdsp"
   377         kx prores_encoder_select="fdctdsp"
   377         kx qcelp_decoder_select="lsp"
   377         kx qdm2_decoder_select="mdct rdft mpegaudiodsp"
   377         kx ra_144_decoder_select="audiodsp"
   377         kx ra_144_encoder_select="audio_frame_queue lpc audiodsp"
   377         kx ralf_decoder_select="golomb"
   377         kx rasc_decoder_deps="zlib"
   377         kx rawvideo_decoder_select="bswapdsp"
   377         kx rscc_decoder_deps="zlib"
   377         kx rtjpeg_decoder_select="me_cmp"
   377         kx rv10_decoder_select="h263_decoder"
   377         kx rv10_encoder_select="h263_encoder"
   377         kx rv20_decoder_select="h263_decoder"
   377         kx rv20_encoder_select="h263_encoder"
   377         kx rv30_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
   377         kx rv40_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
   377         kx screenpresso_decoder_deps="zlib"
   377         kx shorten_decoder_select="bswapdsp"
   377         kx sipr_decoder_select="lsp"
   377         kx smvjpeg_decoder_select="mjpeg_decoder"
   377         kx snow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp"
   377         kx snow_encoder_select="dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder"
   377         kx sonic_decoder_select="golomb rangecoder"
   377         kx sonic_encoder_select="golomb rangecoder"
   377         kx sonic_ls_encoder_select="golomb rangecoder"
   377         kx sp5x_decoder_select="mjpeg_decoder"
   377         kx speedhq_decoder_select="mpegvideo"
   377         kx speedhq_encoder_select="mpegvideoenc"
   377         kx srgc_decoder_deps="zlib"
   377         kx svq1_decoder_select="hpeldsp"
   377         kx svq1_encoder_select="hpeldsp me_cmp mpegvideoenc"
   377         kx svq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
   377         kx svq3_decoder_suggest="zlib"
   377         kx tak_decoder_select="audiodsp"
   377         kx tdsc_decoder_deps="zlib"
   377         kx tdsc_decoder_select="mjpeg_decoder"
   377         kx theora_decoder_select="vp3_decoder"
   377         kx thp_decoder_select="mjpeg_decoder"
   377         kx tiff_decoder_select="mjpeg_decoder"
   377         kx tiff_decoder_suggest="zlib lzma"
   377         kx tiff_encoder_suggest="zlib"
   377         kx truehd_decoder_select="mlp_parser"
   377         kx truehd_encoder_select="lpc audio_frame_queue"
   377         kx truemotion2_decoder_select="bswapdsp"
   377         kx truespeech_decoder_select="bswapdsp"
   377         kx tscc_decoder_deps="zlib"
   377         kx twinvq_decoder_select="mdct lsp sinewin"
   377         kx txd_decoder_select="texturedsp"
   377         kx utvideo_decoder_select="bswapdsp llviddsp"
   377         kx utvideo_encoder_select="bswapdsp huffman llvidencdsp"
   377         kx vble_decoder_select="llviddsp"
   377         kx vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp"
   377         kx vc1image_decoder_select="vc1_decoder"
   377         kx vorbis_decoder_select="mdct"
   377         kx vorbis_encoder_select="audio_frame_queue mdct"
   377         kx vp3_decoder_select="hpeldsp vp3dsp videodsp"
   377         kx vp4_decoder_select="vp3_decoder"
   377         kx vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
   377         kx vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
   377         kx vp6a_decoder_select="vp6_decoder"
   377         kx vp6f_decoder_select="vp6_decoder"
   377         kx vp7_decoder_select="h264pred videodsp vp8dsp"
   377         kx vp8_decoder_select="h264pred videodsp vp8dsp"
   377         kx vp9_decoder_select="videodsp vp9_parser vp9_superframe_split_bsf"
   377         kx wcmv_decoder_deps="zlib"
   377         kx webp_decoder_select="vp8_decoder exif"
   377         kx wmalossless_decoder_select="llauddsp"
   377         kx wmapro_decoder_select="mdct sinewin wma_freqs"
   377         kx wmav1_decoder_select="mdct sinewin wma_freqs"
   377         kx wmav1_encoder_select="mdct sinewin wma_freqs"
   377         kx wmav2_decoder_select="mdct sinewin wma_freqs"
   377         kx wmav2_encoder_select="mdct sinewin wma_freqs"
   377         kx wmavoice_decoder_select="lsp rdft dct mdct sinewin"
   377         kx wmv1_decoder_select="h263_decoder"
   377         kx wmv1_encoder_select="h263_encoder"
   377         kx wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
   377         kx wmv2_encoder_select="h263_encoder wmv2dsp"
   377         kx wmv3_decoder_select="vc1_decoder"
   377         kx wmv3image_decoder_select="wmv3_decoder"
   377         kx xma1_decoder_select="wmapro_decoder"
   377         kx xma2_decoder_select="wmapro_decoder"
   377         kx ylc_decoder_select="bswapdsp"
   377         kx zerocodec_decoder_deps="zlib"
   377         kx zlib_decoder_deps="zlib"
   377         kx zlib_encoder_deps="zlib"
   377         kx zmbv_decoder_deps="zlib"
   377         kx zmbv_encoder_deps="zlib"
   377         kx 
   377         kx # hardware accelerators
   377         kx crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
   377         kx cuda_deps="ffnvcodec"
   377         kx cuvid_deps="ffnvcodec"
   377         kx d3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext"
   377         kx dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32 user32"
   377         kx ffnvcodec_deps_any="libdl LoadLibrary"
   377         kx nvdec_deps="ffnvcodec"
   377         kx vaapi_x11_deps="xlib"
   377         kx videotoolbox_hwaccel_deps="videotoolbox pthreads"
   377         kx videotoolbox_hwaccel_extralibs="-framework QuartzCore"
   377         kx xvmc_deps="X11_extensions_XvMClib_h"
   377         kx 
   377         kx av1_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_AV1"
   377         kx av1_d3d11va_hwaccel_select="av1_decoder"
   377         kx av1_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_AV1"
   377         kx av1_d3d11va2_hwaccel_select="av1_decoder"
   377         kx av1_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_AV1"
   377         kx av1_dxva2_hwaccel_select="av1_decoder"
   377         kx av1_nvdec_hwaccel_deps="nvdec CUVIDAV1PICPARAMS"
   377         kx av1_nvdec_hwaccel_select="av1_decoder"
   377         kx av1_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferAV1_bit_depth_idx"
   377         kx av1_vaapi_hwaccel_select="av1_decoder"
   377         kx h263_vaapi_hwaccel_deps="vaapi"
   377         kx h263_vaapi_hwaccel_select="h263_decoder"
   377         kx h263_videotoolbox_hwaccel_deps="videotoolbox"
   377         kx h263_videotoolbox_hwaccel_select="h263_decoder"
   377         kx h264_d3d11va_hwaccel_deps="d3d11va"
   377         kx h264_d3d11va_hwaccel_select="h264_decoder"
   377         kx h264_d3d11va2_hwaccel_deps="d3d11va"
   377         kx h264_d3d11va2_hwaccel_select="h264_decoder"
   377         kx h264_dxva2_hwaccel_deps="dxva2"
   377         kx h264_dxva2_hwaccel_select="h264_decoder"
   377         kx h264_nvdec_hwaccel_deps="nvdec"
   377         kx h264_nvdec_hwaccel_select="h264_decoder"
   377         kx h264_vaapi_hwaccel_deps="vaapi"
   377         kx h264_vaapi_hwaccel_select="h264_decoder"
   377         kx h264_vdpau_hwaccel_deps="vdpau"
   377         kx h264_vdpau_hwaccel_select="h264_decoder"
   377         kx h264_videotoolbox_hwaccel_deps="videotoolbox"
   377         kx h264_videotoolbox_hwaccel_select="h264_decoder"
   377         kx hevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
   377         kx hevc_d3d11va_hwaccel_select="hevc_decoder"
   377         kx hevc_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
   377         kx hevc_d3d11va2_hwaccel_select="hevc_decoder"
   377         kx hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
   377         kx hevc_dxva2_hwaccel_select="hevc_decoder"
   377         kx hevc_nvdec_hwaccel_deps="nvdec"
   377         kx hevc_nvdec_hwaccel_select="hevc_decoder"
   377         kx hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
   377         kx hevc_vaapi_hwaccel_select="hevc_decoder"
   377         kx hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
   377         kx hevc_vdpau_hwaccel_select="hevc_decoder"
   377         kx hevc_videotoolbox_hwaccel_deps="videotoolbox"
   377         kx hevc_videotoolbox_hwaccel_select="hevc_decoder"
   377         kx mjpeg_nvdec_hwaccel_deps="nvdec"
   377         kx mjpeg_nvdec_hwaccel_select="mjpeg_decoder"
   377         kx mjpeg_vaapi_hwaccel_deps="vaapi"
   377         kx mjpeg_vaapi_hwaccel_select="mjpeg_decoder"
   377         kx mpeg_xvmc_hwaccel_deps="xvmc"
   377         kx mpeg_xvmc_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg1_nvdec_hwaccel_deps="nvdec"
   377         kx mpeg1_nvdec_hwaccel_select="mpeg1video_decoder"
   377         kx mpeg1_vdpau_hwaccel_deps="vdpau"
   377         kx mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
   377         kx mpeg1_videotoolbox_hwaccel_deps="videotoolbox"
   377         kx mpeg1_videotoolbox_hwaccel_select="mpeg1video_decoder"
   377         kx mpeg1_xvmc_hwaccel_deps="xvmc"
   377         kx mpeg1_xvmc_hwaccel_select="mpeg1video_decoder"
   377         kx mpeg2_d3d11va_hwaccel_deps="d3d11va"
   377         kx mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg2_d3d11va2_hwaccel_deps="d3d11va"
   377         kx mpeg2_d3d11va2_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg2_dxva2_hwaccel_deps="dxva2"
   377         kx mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg2_nvdec_hwaccel_deps="nvdec"
   377         kx mpeg2_nvdec_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg2_vaapi_hwaccel_deps="vaapi"
   377         kx mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg2_vdpau_hwaccel_deps="vdpau"
   377         kx mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg2_videotoolbox_hwaccel_deps="videotoolbox"
   377         kx mpeg2_videotoolbox_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg2_xvmc_hwaccel_deps="xvmc"
   377         kx mpeg2_xvmc_hwaccel_select="mpeg2video_decoder"
   377         kx mpeg4_nvdec_hwaccel_deps="nvdec"
   377         kx mpeg4_nvdec_hwaccel_select="mpeg4_decoder"
   377         kx mpeg4_vaapi_hwaccel_deps="vaapi"
   377         kx mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
   377         kx mpeg4_vdpau_hwaccel_deps="vdpau"
   377         kx mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
   377         kx mpeg4_videotoolbox_hwaccel_deps="videotoolbox"
   377         kx mpeg4_videotoolbox_hwaccel_select="mpeg4_decoder"
   377         kx vc1_d3d11va_hwaccel_deps="d3d11va"
   377         kx vc1_d3d11va_hwaccel_select="vc1_decoder"
   377         kx vc1_d3d11va2_hwaccel_deps="d3d11va"
   377         kx vc1_d3d11va2_hwaccel_select="vc1_decoder"
   377         kx vc1_dxva2_hwaccel_deps="dxva2"
   377         kx vc1_dxva2_hwaccel_select="vc1_decoder"
   377         kx vc1_nvdec_hwaccel_deps="nvdec"
   377         kx vc1_nvdec_hwaccel_select="vc1_decoder"
   377         kx vc1_vaapi_hwaccel_deps="vaapi"
   377         kx vc1_vaapi_hwaccel_select="vc1_decoder"
   377         kx vc1_vdpau_hwaccel_deps="vdpau"
   377         kx vc1_vdpau_hwaccel_select="vc1_decoder"
   377         kx vp8_nvdec_hwaccel_deps="nvdec"
   377         kx vp8_nvdec_hwaccel_select="vp8_decoder"
   377         kx vp8_vaapi_hwaccel_deps="vaapi"
   377         kx vp8_vaapi_hwaccel_select="vp8_decoder"
   377         kx vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
   377         kx vp9_d3d11va_hwaccel_select="vp9_decoder"
   377         kx vp9_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
   377         kx vp9_d3d11va2_hwaccel_select="vp9_decoder"
   377         kx vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
   377         kx vp9_dxva2_hwaccel_select="vp9_decoder"
   377         kx vp9_nvdec_hwaccel_deps="nvdec"
   377         kx vp9_nvdec_hwaccel_select="vp9_decoder"
   377         kx vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth"
   377         kx vp9_vaapi_hwaccel_select="vp9_decoder"
   377         kx vp9_vdpau_hwaccel_deps="vdpau VdpPictureInfoVP9"
   377         kx vp9_vdpau_hwaccel_select="vp9_decoder"
   377         kx wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
   377         kx wmv3_d3d11va2_hwaccel_select="vc1_d3d11va2_hwaccel"
   377         kx wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
   377         kx wmv3_nvdec_hwaccel_select="vc1_nvdec_hwaccel"
   377         kx wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
   377         kx wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
   377         kx 
   377         kx # hardware-accelerated codecs
   377         kx mediafoundation_deps="mftransform_h MFCreateAlignedMemoryBuffer"
   377         kx mediafoundation_extralibs="-lmfplat -lmfuuid -lole32 -lstrmiids"
   377         kx omx_deps="libdl pthreads"
   377         kx omx_rpi_select="omx"
   377         kx omx_img_deps="swscale"
   377         kx omx_img_select="omx"
   377         kx qsv_deps="libmfx"
   377         kx qsvdec_select="qsv"
   377         kx qsvenc_select="qsv"
   377         kx qsvvpp_select="qsv"
   377         kx vaapi_encode_deps="vaapi"
   377         kx v4l2_m2m_deps="linux_videodev2_h sem_timedwait"
   377         kx 
   377         kx hwupload_cuda_filter_deps="ffnvcodec"
   377         kx scale_npp_filter_deps="ffnvcodec libnpp"
   377         kx scale_cuda_filter_deps="ffnvcodec"
   377         kx scale_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
   377         kx thumbnail_cuda_filter_deps="ffnvcodec"
   377         kx thumbnail_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
   377         kx transpose_npp_filter_deps="ffnvcodec libnpp"
   377         kx overlay_cuda_filter_deps="ffnvcodec"
   377         kx overlay_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
   377         kx 
   377         kx amf_deps_any="libdl LoadLibrary"
   377         kx nvenc_deps="ffnvcodec"
   377         kx nvenc_deps_any="libdl LoadLibrary"
   377         kx nvenc_encoder_deps="nvenc"
   377         kx 
   377         kx aac_mf_encoder_deps="mediafoundation"
   377         kx ac3_mf_encoder_deps="mediafoundation"
   377         kx av1_cuvid_decoder_deps="cuvid CUVIDAV1PICPARAMS"
   377         kx avs_omx_decoder_deps="omx_img"
   377         kx h263_omx_decoder_deps="omx"
   377         kx h263_v4l2m2m_decoder_deps="v4l2_m2m h263_v4l2_m2m"
   377         kx h263_v4l2m2m_encoder_deps="v4l2_m2m h263_v4l2_m2m"
   377         kx h264_amf_encoder_deps="amf"
   377         kx h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
   377         kx h264_cuvid_decoder_deps="cuvid"
   377         kx h264_cuvid_decoder_select="h264_mp4toannexb_bsf"
   377         kx h264_mediacodec_decoder_deps="mediacodec"
   377         kx h264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser"
   377         kx h264_mf_encoder_deps="mediafoundation"
   377         kx h264_mmal_decoder_deps="mmal"
   377         kx h264_nvenc_encoder_deps="nvenc"
   377         kx h264_nvenc_encoder_select="atsc_a53"
   377         kx h264_omx_decoder_deps="omx"
   377         kx h264_omx_encoder_deps="omx"
   377         kx h264_qsv_decoder_select="h264_mp4toannexb_bsf qsvdec"
   377         kx h264_qsv_encoder_select="atsc_a53 qsvenc"
   377         kx h264_rkmpp_decoder_deps="rkmpp"
   377         kx h264_rkmpp_decoder_select="h264_mp4toannexb_bsf"
   377         kx h264_vaapi_encoder_select="cbs_h264 vaapi_encode"
   377         kx h264_v4l2m2m_decoder_deps="v4l2_m2m h264_v4l2_m2m"
   377         kx h264_v4l2m2m_decoder_select="h264_mp4toannexb_bsf"
   377         kx h264_v4l2m2m_encoder_deps="v4l2_m2m h264_v4l2_m2m"
   377         kx hevc_amf_encoder_deps="amf"
   377         kx hevc_cuvid_decoder_deps="cuvid"
   377         kx hevc_cuvid_decoder_select="hevc_mp4toannexb_bsf"
   377         kx hevc_mediacodec_decoder_deps="mediacodec"
   377         kx hevc_mediacodec_decoder_select="hevc_mp4toannexb_bsf hevc_parser"
   377         kx hevc_mf_encoder_deps="mediafoundation"
   377         kx hevc_nvenc_encoder_deps="nvenc"
   377         kx hevc_nvenc_encoder_select="atsc_a53"
   377         kx hevc_omx_decoder_deps="omx"
   377         kx hevc_qsv_decoder_select="hevc_mp4toannexb_bsf qsvdec"
   377         kx hevc_qsv_encoder_select="hevcparse qsvenc"
   377         kx hevc_rkmpp_decoder_deps="rkmpp"
   377         kx hevc_rkmpp_decoder_select="hevc_mp4toannexb_bsf"
   377         kx hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC"
   377         kx hevc_vaapi_encoder_select="cbs_h265 vaapi_encode"
   377         kx hevc_v4l2m2m_decoder_deps="v4l2_m2m hevc_v4l2_m2m"
   377         kx hevc_v4l2m2m_decoder_select="hevc_mp4toannexb_bsf"
   377         kx hevc_v4l2m2m_encoder_deps="v4l2_m2m hevc_v4l2_m2m"
   377         kx mjpeg_cuvid_decoder_deps="cuvid"
   377         kx mjpeg_omx_decoder_deps="omx"
   377         kx mjpeg_qsv_decoder_select="qsvdec"
   377         kx mjpeg_qsv_encoder_deps="libmfx"
   377         kx mjpeg_qsv_encoder_select="qsvenc"
   377         kx mjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
   377         kx mjpeg_vaapi_encoder_select="cbs_jpeg jpegtables vaapi_encode"
   377         kx mp3_mf_encoder_deps="mediafoundation"
   377         kx mpeg1_cuvid_decoder_deps="cuvid"
   377         kx mpeg1_v4l2m2m_decoder_deps="v4l2_m2m mpeg1_v4l2_m2m"
   377         kx mpeg2_crystalhd_decoder_select="crystalhd"
   377         kx mpeg2_cuvid_decoder_deps="cuvid"
   377         kx mpeg2_mmal_decoder_deps="mmal"
   377         kx mpeg2_mediacodec_decoder_deps="mediacodec"
   377         kx mpeg2_omx_decoder_deps="omx"
   377         kx mpeg2_qsv_decoder_select="qsvdec"
   377         kx mpeg2_qsv_encoder_select="qsvenc"
   377         kx mpeg2_vaapi_encoder_select="cbs_mpeg2 vaapi_encode"
   377         kx mpeg2_v4l2m2m_decoder_deps="v4l2_m2m mpeg2_v4l2_m2m"
   377         kx mpeg4_crystalhd_decoder_select="crystalhd"
   377         kx mpeg4_cuvid_decoder_deps="cuvid"
   377         kx mpeg4_mediacodec_decoder_deps="mediacodec"
   377         kx mpeg4_mmal_decoder_deps="mmal"
   377         kx mpeg4_omx_decoder_deps="omx"
   377         kx mpeg4_omx_encoder_deps="omx"
   377         kx mpeg4_v4l2m2m_decoder_deps="v4l2_m2m mpeg4_v4l2_m2m"
   377         kx mpeg4_v4l2m2m_encoder_deps="v4l2_m2m mpeg4_v4l2_m2m"
   377         kx msmpeg4_crystalhd_decoder_select="crystalhd"
   377         kx rv30_omx_decoder_deps="omx"
   377         kx rv40_omx_decoder_deps="omx"
   377         kx sorenson_omx_decoder_deps="omx_img"
   377         kx nvenc_h264_encoder_select="h264_nvenc_encoder"
   377         kx nvenc_hevc_encoder_select="hevc_nvenc_encoder"
   377         kx vc1_crystalhd_decoder_select="crystalhd"
   377         kx vc1_cuvid_decoder_deps="cuvid"
   377         kx vc1_mmal_decoder_deps="mmal"
   377         kx vc1_omx_decoder_deps="omx_img"
   377         kx vc1_qsv_decoder_select="qsvdec"
   377         kx vc1_v4l2m2m_decoder_deps="v4l2_m2m vc1_v4l2_m2m"
   377         kx vp6_omx_decoder_deps="omx_img"
   377         kx vp8_cuvid_decoder_deps="cuvid"
   377         kx vp8_mediacodec_decoder_deps="mediacodec"
   377         kx vp8_omx_decoder_deps="omx"
   377         kx vp8_qsv_decoder_select="qsvdec"
   377         kx vp8_rkmpp_decoder_deps="rkmpp"
   377         kx vp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8"
   377         kx vp8_vaapi_encoder_select="vaapi_encode"
   377         kx vp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m"
   377         kx vp8_v4l2m2m_encoder_deps="v4l2_m2m vp8_v4l2_m2m"
   377         kx vp9_cuvid_decoder_deps="cuvid"
   377         kx vp9_mediacodec_decoder_deps="mediacodec"
   377         kx vp9_qsv_decoder_select="qsvdec"
   377         kx vp9_rkmpp_decoder_deps="rkmpp"
   377         kx vp9_vaapi_encoder_deps="VAEncPictureParameterBufferVP9"
   377         kx vp9_vaapi_encoder_select="vaapi_encode"
   377         kx vp9_qsv_encoder_deps="libmfx MFX_CODEC_VP9"
   377         kx vp9_qsv_encoder_select="qsvenc"
   377         kx vp9_v4l2m2m_decoder_deps="v4l2_m2m vp9_v4l2_m2m"
   377         kx wmv3_crystalhd_decoder_select="crystalhd"
   377         kx wmv3_omx_decoder_deps="omx"
   377         kx av1_qsv_decoder_select="qsvdec"
   377         kx 
   377         kx # parsers
   377         kx aac_parser_select="adts_header"
   377         kx av1_parser_select="cbs_av1"
   377         kx h264_parser_select="atsc_a53 golomb h264dsp h264parse"
   377         kx hevc_parser_select="hevcparse"
   377         kx mpegaudio_parser_select="mpegaudioheader"
   377         kx mpegvideo_parser_select="mpegvideo"
   377         kx mpeg4video_parser_select="h263dsp mpegvideo qpeldsp"
   377         kx vc1_parser_select="vc1dsp"
   377         kx 
   377         kx # bitstream_filters
   377         kx aac_adtstoasc_bsf_select="adts_header"
   377         kx av1_frame_merge_bsf_select="cbs_av1"
   377         kx av1_frame_split_bsf_select="cbs_av1"
   377         kx av1_metadata_bsf_select="cbs_av1"
   377         kx eac3_core_bsf_select="ac3_parser"
   377         kx filter_units_bsf_select="cbs"
   377         kx h264_metadata_bsf_deps="const_nan"
   377         kx h264_metadata_bsf_select="cbs_h264"
   377         kx h264_redundant_pps_bsf_select="cbs_h264"
   377         kx hevc_metadata_bsf_select="cbs_h265"
   377         kx mjpeg2jpeg_bsf_select="jpegtables"
   377         kx mpeg2_metadata_bsf_select="cbs_mpeg2"
   377         kx trace_headers_bsf_select="cbs"
   377         kx vp9_metadata_bsf_select="cbs_vp9"
   377         kx 
   377         kx # external libraries
   377         kx aac_at_decoder_deps="audiotoolbox"
   377         kx aac_at_decoder_select="aac_adtstoasc_bsf"
   377         kx ac3_at_decoder_deps="audiotoolbox"
   377         kx ac3_at_decoder_select="ac3_parser"
   377         kx adpcm_ima_qt_at_decoder_deps="audiotoolbox"
   377         kx alac_at_decoder_deps="audiotoolbox"
   377         kx amr_nb_at_decoder_deps="audiotoolbox"
   377         kx avisynth_deps_any="libdl LoadLibrary"
   377         kx avisynth_demuxer_deps="avisynth"
   377         kx avisynth_demuxer_select="riffdec"
   377         kx eac3_at_decoder_deps="audiotoolbox"
   377         kx eac3_at_decoder_select="ac3_parser"
   377         kx gsm_ms_at_decoder_deps="audiotoolbox"
   377         kx ilbc_at_decoder_deps="audiotoolbox"
   377         kx mp1_at_decoder_deps="audiotoolbox"
   377         kx mp2_at_decoder_deps="audiotoolbox"
   377         kx mp3_at_decoder_deps="audiotoolbox"
   377         kx mp1_at_decoder_select="mpegaudioheader"
   377         kx mp2_at_decoder_select="mpegaudioheader"
   377         kx mp3_at_decoder_select="mpegaudioheader"
   377         kx pcm_alaw_at_decoder_deps="audiotoolbox"
   377         kx pcm_mulaw_at_decoder_deps="audiotoolbox"
   377         kx qdmc_decoder_select="fft"
   377         kx qdmc_at_decoder_deps="audiotoolbox"
   377         kx qdm2_at_decoder_deps="audiotoolbox"
   377         kx aac_at_encoder_deps="audiotoolbox"
   377         kx aac_at_encoder_select="audio_frame_queue"
   377         kx alac_at_encoder_deps="audiotoolbox"
   377         kx alac_at_encoder_select="audio_frame_queue"
   377         kx ilbc_at_encoder_deps="audiotoolbox"
   377         kx ilbc_at_encoder_select="audio_frame_queue"
   377         kx pcm_alaw_at_encoder_deps="audiotoolbox"
   377         kx pcm_alaw_at_encoder_select="audio_frame_queue"
   377         kx pcm_mulaw_at_encoder_deps="audiotoolbox"
   377         kx pcm_mulaw_at_encoder_select="audio_frame_queue"
   377         kx chromaprint_muxer_deps="chromaprint"
   377         kx h264_videotoolbox_encoder_deps="pthreads"
   377         kx h264_videotoolbox_encoder_select="atsc_a53 videotoolbox_encoder"
   377         kx hevc_videotoolbox_encoder_deps="pthreads"
   377         kx hevc_videotoolbox_encoder_select="atsc_a53 videotoolbox_encoder"
   377         kx libaom_av1_decoder_deps="libaom"
   377         kx libaom_av1_encoder_deps="libaom"
   377         kx libaom_av1_encoder_select="extract_extradata_bsf"
   377         kx libaribb24_decoder_deps="libaribb24"
   377         kx libcelt_decoder_deps="libcelt"
   377         kx libcodec2_decoder_deps="libcodec2"
   377         kx libcodec2_encoder_deps="libcodec2"
   377         kx libdav1d_decoder_deps="libdav1d"
   377         kx libdav1d_decoder_select="atsc_a53"
   377         kx libdavs2_decoder_deps="libdavs2"
   377         kx libfdk_aac_decoder_deps="libfdk_aac"
   377         kx libfdk_aac_encoder_deps="libfdk_aac"
   377         kx libfdk_aac_encoder_select="audio_frame_queue"
   377         kx libgme_demuxer_deps="libgme"
   377         kx libgsm_decoder_deps="libgsm"
   377         kx libgsm_encoder_deps="libgsm"
   377         kx libgsm_ms_decoder_deps="libgsm"
   377         kx libgsm_ms_encoder_deps="libgsm"
   377         kx libilbc_decoder_deps="libilbc"
   377         kx libilbc_encoder_deps="libilbc"
   377         kx libkvazaar_encoder_deps="libkvazaar"
   377         kx libmodplug_demuxer_deps="libmodplug"
   377         kx libmp3lame_encoder_deps="libmp3lame"
   377         kx libmp3lame_encoder_select="audio_frame_queue mpegaudioheader"
   377         kx libopencore_amrnb_decoder_deps="libopencore_amrnb"
   377         kx libopencore_amrnb_encoder_deps="libopencore_amrnb"
   377         kx libopencore_amrnb_encoder_select="audio_frame_queue"
   377         kx libopencore_amrwb_decoder_deps="libopencore_amrwb"
   377         kx libopenh264_decoder_deps="libopenh264"
   377         kx libopenh264_decoder_select="h264_mp4toannexb_bsf"
   377         kx libopenh264_encoder_deps="libopenh264"
   377         kx libopenjpeg_decoder_deps="libopenjpeg"
   377         kx libopenjpeg_encoder_deps="libopenjpeg"
   377         kx libopenmpt_demuxer_deps="libopenmpt"
   377         kx libopus_decoder_deps="libopus"
   377         kx libopus_encoder_deps="libopus"
   377         kx libopus_encoder_select="audio_frame_queue"
   377         kx librav1e_encoder_deps="librav1e"
   377         kx librav1e_encoder_select="extract_extradata_bsf"
   377         kx librsvg_decoder_deps="librsvg"
   377         kx libshine_encoder_deps="libshine"
   377         kx libshine_encoder_select="audio_frame_queue mpegaudioheader"
   377         kx libspeex_decoder_deps="libspeex"
   377         kx libspeex_encoder_deps="libspeex"
   377         kx libspeex_encoder_select="audio_frame_queue"
   377         kx libsvtav1_encoder_deps="libsvtav1"
   377         kx libtheora_encoder_deps="libtheora"
   377         kx libtwolame_encoder_deps="libtwolame"
   377         kx libuavs3d_decoder_deps="libuavs3d"
   377         kx libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
   377         kx libvorbis_decoder_deps="libvorbis"
   377         kx libvorbis_encoder_deps="libvorbis libvorbisenc"
   377         kx libvorbis_encoder_select="audio_frame_queue"
   377         kx libvpx_vp8_decoder_deps="libvpx"
   377         kx libvpx_vp8_encoder_deps="libvpx"
   377         kx libvpx_vp9_decoder_deps="libvpx"
   377         kx libvpx_vp9_encoder_deps="libvpx"
   377         kx libwebp_encoder_deps="libwebp"
   377         kx libwebp_anim_encoder_deps="libwebp"
   377         kx libx262_encoder_deps="libx262"
   377         kx libx264_encoder_deps="libx264"
   377         kx libx264_encoder_select="atsc_a53"
   377         kx libx264rgb_encoder_deps="libx264 x264_csp_bgr"
   377         kx libx264rgb_encoder_select="libx264_encoder"
   377         kx libx265_encoder_deps="libx265"
   377         kx libxavs_encoder_deps="libxavs"
   377         kx libxavs2_encoder_deps="libxavs2"
   377         kx libxvid_encoder_deps="libxvid"
   377         kx libzvbi_teletext_decoder_deps="libzvbi"
   377         kx vapoursynth_demuxer_deps="vapoursynth"
   377         kx videotoolbox_suggest="coreservices"
   377         kx videotoolbox_deps="corefoundation coremedia corevideo"
   377         kx videotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames"
   377         kx 
   377         kx # demuxers / muxers
   377         kx ac3_demuxer_select="ac3_parser"
   377         kx act_demuxer_select="riffdec"
   377         kx aiff_muxer_select="iso_media"
   377         kx asf_demuxer_select="riffdec"
   377         kx asf_o_demuxer_select="riffdec"
   377         kx asf_muxer_select="riffenc"
   377         kx asf_stream_muxer_select="asf_muxer"
   377         kx av1_demuxer_select="av1_frame_merge_bsf av1_parser"
   377         kx avi_demuxer_select="riffdec exif"
   377         kx avi_muxer_select="riffenc"
   377         kx caf_demuxer_select="iso_media"
   377         kx caf_muxer_select="iso_media"
   377         kx dash_muxer_select="mp4_muxer"
   377         kx dash_demuxer_deps="libxml2"
   377         kx dirac_demuxer_select="dirac_parser"
   377         kx dts_demuxer_select="dca_parser"
   377         kx dtshd_demuxer_select="dca_parser"
   377         kx dv_demuxer_select="dvprofile"
   377         kx dv_muxer_select="dvprofile"
   377         kx dxa_demuxer_select="riffdec"
   377         kx eac3_demuxer_select="ac3_parser"
   377         kx f4v_muxer_select="mov_muxer"
   377         kx fifo_muxer_deps="threads"
   377         kx flac_demuxer_select="flac_parser"
   377         kx flv_muxer_select="aac_adtstoasc_bsf"
   377         kx gxf_muxer_select="pcm_rechunk_bsf"
   377         kx hds_muxer_select="flv_muxer"
   377         kx hls_muxer_select="mpegts_muxer"
   377         kx hls_muxer_suggest="gcrypt openssl"
   377         kx image2_alias_pix_demuxer_select="image2_demuxer"
   377         kx image2_brender_pix_demuxer_select="image2_demuxer"
   377         kx ipod_muxer_select="mov_muxer"
   377         kx ismv_muxer_select="mov_muxer"
   377         kx ivf_muxer_select="av1_metadata_bsf vp9_superframe_bsf"
   377         kx latm_muxer_select="aac_adtstoasc_bsf"
   377         kx matroska_audio_muxer_select="matroska_muxer"
   377         kx matroska_demuxer_select="riffdec"
   377         kx matroska_demuxer_suggest="bzlib lzo zlib"
   377         kx matroska_muxer_select="riffenc vp9_superframe_bsf aac_adtstoasc_bsf"
   377         kx mlp_demuxer_select="mlp_parser"
   377         kx mmf_muxer_select="riffenc"
   377         kx mov_demuxer_select="iso_media riffdec"
   377         kx mov_demuxer_suggest="zlib"
   377         kx mov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf"
   377         kx mp3_demuxer_select="mpegaudio_parser"
   377         kx mp3_muxer_select="mpegaudioheader"
   377         kx mp4_muxer_select="mov_muxer"
   377         kx mpegts_demuxer_select="iso_media"
   377         kx mpegts_muxer_select="ac3_parser adts_muxer latm_muxer h264_mp4toannexb_bsf hevc_mp4toannexb_bsf"
   377         kx mpegtsraw_demuxer_select="mpegts_demuxer"
   377         kx mxf_muxer_select="golomb pcm_rechunk_bsf"
   377         kx mxf_d10_muxer_select="mxf_muxer"
   377         kx mxf_opatom_muxer_select="mxf_muxer"
   377         kx nut_muxer_select="riffenc"
   377         kx nuv_demuxer_select="riffdec"
   377         kx obu_demuxer_select="av1_frame_merge_bsf av1_parser"
   377         kx oga_muxer_select="ogg_muxer"
   377         kx ogg_demuxer_select="dirac_parse"
   377         kx ogv_muxer_select="ogg_muxer"
   377         kx opus_muxer_select="ogg_muxer"
   377         kx psp_muxer_select="mov_muxer"
   377         kx rtp_demuxer_select="sdp_demuxer"
   377         kx rtp_muxer_select="golomb jpegtables"
   377         kx rtp_mpegts_muxer_select="mpegts_muxer rtp_muxer"
   377         kx rtpdec_select="asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
   377         kx rtsp_demuxer_select="http_protocol rtpdec"
   377         kx rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
   377         kx sap_demuxer_select="sdp_demuxer"
   377         kx sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
   377         kx sdp_demuxer_select="rtpdec"
   377         kx smoothstreaming_muxer_select="ismv_muxer"
   377         kx spdif_demuxer_select="adts_header"
   377         kx spdif_muxer_select="adts_header"
   377         kx spx_muxer_select="ogg_muxer"
   377         kx swf_demuxer_suggest="zlib"
   377         kx tak_demuxer_select="tak_parser"
   377         kx truehd_demuxer_select="mlp_parser"
   377         kx tg2_muxer_select="mov_muxer"
   377         kx tgp_muxer_select="mov_muxer"
   377         kx vobsub_demuxer_select="mpegps_demuxer"
   377         kx w64_demuxer_select="wav_demuxer"
   377         kx w64_muxer_select="wav_muxer"
   377         kx wav_demuxer_select="riffdec"
   377         kx wav_muxer_select="riffenc"
   377         kx webm_chunk_muxer_select="webm_muxer"
   377         kx webm_muxer_select="riffenc"
   377         kx webm_dash_manifest_demuxer_select="matroska_demuxer"
   377         kx wtv_demuxer_select="mpegts_demuxer riffdec"
   377         kx wtv_muxer_select="mpegts_muxer riffenc"
   377         kx xmv_demuxer_select="riffdec"
   377         kx xwma_demuxer_select="riffdec"
   377         kx 
   377         kx # indevs / outdevs
   377         kx android_camera_indev_deps="android camera2ndk mediandk pthreads"
   377         kx android_camera_indev_extralibs="-landroid -lcamera2ndk -lmediandk"
   377         kx alsa_indev_deps="alsa"
   377         kx alsa_outdev_deps="alsa"
   377         kx avfoundation_indev_deps="avfoundation corevideo coremedia pthreads"
   377         kx avfoundation_indev_suggest="coregraphics applicationservices"
   377         kx avfoundation_indev_extralibs="-framework Foundation"
   377         kx audiotoolbox_outdev_deps="audiotoolbox pthreads"
   377         kx audiotoolbox_outdev_extralibs="-framework AudioToolbox -framework CoreAudio"
   377         kx bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
   377         kx caca_outdev_deps="libcaca"
   377         kx decklink_deps_any="libdl LoadLibrary"
   377         kx decklink_indev_deps="decklink threads"
   377         kx decklink_indev_extralibs="-lstdc++"
   377         kx decklink_outdev_deps="decklink threads"
   377         kx decklink_outdev_suggest="libklvanc"
   377         kx decklink_outdev_extralibs="-lstdc++"
   377         kx dshow_indev_deps="IBaseFilter"
   377         kx dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi"
   377         kx fbdev_indev_deps="linux_fb_h"
   377         kx fbdev_outdev_deps="linux_fb_h"
   377         kx gdigrab_indev_deps="CreateDIBSection"
   377         kx gdigrab_indev_extralibs="-lgdi32"
   377         kx gdigrab_indev_select="bmp_decoder"
   377         kx iec61883_indev_deps="libiec61883"
   377         kx jack_indev_deps="libjack"
   377         kx jack_indev_deps_any="sem_timedwait dispatch_dispatch_h"
   377         kx kmsgrab_indev_deps="libdrm"
   377         kx lavfi_indev_deps="avfilter"
   377         kx libcdio_indev_deps="libcdio"
   377         kx libdc1394_indev_deps="libdc1394"
   377         kx openal_indev_deps="openal"
   377         kx opengl_outdev_deps="opengl"
   377         kx opengl_outdev_suggest="sdl2"
   377         kx oss_indev_deps_any="sys_soundcard_h"
   377         kx oss_outdev_deps_any="sys_soundcard_h"
   377         kx pulse_indev_deps="libpulse"
   377         kx pulse_outdev_deps="libpulse"
   377         kx sdl2_outdev_deps="sdl2"
   377         kx sndio_indev_deps="sndio"
   377         kx sndio_outdev_deps="sndio"
   377         kx v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
   377         kx v4l2_indev_suggest="libv4l2"
   377         kx v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h"
   377         kx v4l2_outdev_suggest="libv4l2"
   377         kx vfwcap_indev_deps="vfw32 vfwcap_defines"
   377         kx xcbgrab_indev_deps="libxcb"
   377         kx xcbgrab_indev_suggest="libxcb_shm libxcb_shape libxcb_xfixes"
   377         kx xv_outdev_deps="xlib"
   377         kx 
   377         kx # protocols
   377         kx async_protocol_deps="threads"
   377         kx bluray_protocol_deps="libbluray"
   377         kx ffrtmpcrypt_protocol_conflict="librtmp_protocol"
   377         kx ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl mbedtls"
   377         kx ffrtmpcrypt_protocol_select="tcp_protocol"
   377         kx ffrtmphttp_protocol_conflict="librtmp_protocol"
   377         kx ffrtmphttp_protocol_select="http_protocol"
   377         kx ftp_protocol_select="tcp_protocol"
   377         kx gopher_protocol_select="tcp_protocol"
   377         kx gophers_protocol_select="tls_protocol"
   377         kx http_protocol_select="tcp_protocol"
   377         kx http_protocol_suggest="zlib"
   377         kx httpproxy_protocol_select="tcp_protocol"
   377         kx httpproxy_protocol_suggest="zlib"
   377         kx https_protocol_select="tls_protocol"
   377         kx https_protocol_suggest="zlib"
   377         kx icecast_protocol_select="http_protocol"
   377         kx mmsh_protocol_select="http_protocol"
   377         kx mmst_protocol_select="network"
   377         kx rtmp_protocol_conflict="librtmp_protocol"
   377         kx rtmp_protocol_select="tcp_protocol"
   377         kx rtmp_protocol_suggest="zlib"
   377         kx rtmpe_protocol_select="ffrtmpcrypt_protocol"
   377         kx rtmpe_protocol_suggest="zlib"
   377         kx rtmps_protocol_conflict="librtmp_protocol"
   377         kx rtmps_protocol_select="tls_protocol"
   377         kx rtmps_protocol_suggest="zlib"
   377         kx rtmpt_protocol_select="ffrtmphttp_protocol"
   377         kx rtmpt_protocol_suggest="zlib"
   377         kx rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
   377         kx rtmpte_protocol_suggest="zlib"
   377         kx rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
   377         kx rtmpts_protocol_suggest="zlib"
   377         kx rtp_protocol_select="udp_protocol"
   377         kx schannel_conflict="openssl gnutls libtls mbedtls"
   377         kx sctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
   377         kx sctp_protocol_select="network"
   377         kx securetransport_conflict="openssl gnutls libtls mbedtls"
   377         kx srtp_protocol_select="rtp_protocol srtp"
   377         kx tcp_protocol_select="network"
   377         kx tls_protocol_deps_any="gnutls openssl schannel securetransport libtls mbedtls"
   377         kx tls_protocol_select="tcp_protocol"
   377         kx udp_protocol_select="network"
   377         kx udplite_protocol_select="network"
   377         kx unix_protocol_deps="sys_un_h"
   377         kx unix_protocol_select="network"
   377         kx 
   377         kx # external library protocols
   377         kx libamqp_protocol_deps="librabbitmq"
   377         kx libamqp_protocol_select="network"
   377         kx librist_protocol_deps="librist"
   377         kx librist_protocol_select="network"
   377         kx librtmp_protocol_deps="librtmp"
   377         kx librtmpe_protocol_deps="librtmp"
   377         kx librtmps_protocol_deps="librtmp"
   377         kx librtmpt_protocol_deps="librtmp"
   377         kx librtmpte_protocol_deps="librtmp"
   377         kx libsmbclient_protocol_deps="libsmbclient gplv3"
   377         kx libsrt_protocol_deps="libsrt"
   377         kx libsrt_protocol_select="network"
   377         kx libssh_protocol_deps="libssh"
   377         kx libtls_conflict="openssl gnutls mbedtls"
   377         kx libzmq_protocol_deps="libzmq"
   377         kx libzmq_protocol_select="network"
   377         kx 
   377         kx # filters
   377         kx afftdn_filter_deps="avcodec"
   377         kx afftdn_filter_select="fft"
   377         kx afftfilt_filter_deps="avcodec"
   377         kx afftfilt_filter_select="fft"
   377         kx afir_filter_deps="avcodec"
   377         kx afir_filter_select="rdft"
   377         kx amovie_filter_deps="avcodec avformat"
   377         kx aresample_filter_deps="swresample"
   377         kx asoftclip_filter_deps="swresample"
   377         kx asr_filter_deps="pocketsphinx"
   377         kx ass_filter_deps="libass"
   377         kx atempo_filter_deps="avcodec"
   377         kx atempo_filter_select="rdft"
   377         kx avgblur_opencl_filter_deps="opencl"
   377         kx avgblur_vulkan_filter_deps="vulkan libglslang"
   377         kx azmq_filter_deps="libzmq"
   377         kx blackframe_filter_deps="gpl"
   377         kx bm3d_filter_deps="avcodec"
   377         kx bm3d_filter_select="dct"
   377         kx boxblur_filter_deps="gpl"
   377         kx boxblur_opencl_filter_deps="opencl gpl"
   377         kx bs2b_filter_deps="libbs2b"
   377         kx chromaber_vulkan_filter_deps="vulkan libglslang"
   377         kx colorkey_opencl_filter_deps="opencl"
   377         kx colormatrix_filter_deps="gpl"
   377         kx convolution_opencl_filter_deps="opencl"
   377         kx convolve_filter_deps="avcodec"
   377         kx convolve_filter_select="fft"
   377         kx coreimage_filter_deps="coreimage appkit"
   377         kx coreimage_filter_extralibs="-framework OpenGL"
   377         kx coreimagesrc_filter_deps="coreimage appkit"
   377         kx coreimagesrc_filter_extralibs="-framework OpenGL"
   377         kx cover_rect_filter_deps="avcodec avformat gpl"
   377         kx cropdetect_filter_deps="gpl"
   377         kx deconvolve_filter_deps="avcodec"
   377         kx deconvolve_filter_select="fft"
   377         kx deinterlace_qsv_filter_deps="libmfx"
   377         kx deinterlace_vaapi_filter_deps="vaapi"
   377         kx delogo_filter_deps="gpl"
   377         kx denoise_vaapi_filter_deps="vaapi"
   377         kx derain_filter_select="dnn"
   377         kx deshake_filter_select="pixelutils"
   377         kx deshake_opencl_filter_deps="opencl"
   377         kx dilation_opencl_filter_deps="opencl"
   377         kx dnn_processing_filter_select="dnn"
   377         kx drawtext_filter_deps="libfreetype"
   377         kx drawtext_filter_suggest="libfontconfig libfribidi"
   377         kx elbg_filter_deps="avcodec"
   377         kx eq_filter_deps="gpl"
   377         kx erosion_opencl_filter_deps="opencl"
   377         kx fftfilt_filter_deps="avcodec"
   377         kx fftfilt_filter_select="rdft"
   377         kx fftdnoiz_filter_deps="avcodec"
   377         kx fftdnoiz_filter_select="fft"
   377         kx find_rect_filter_deps="avcodec avformat gpl"
   377         kx firequalizer_filter_deps="avcodec"
   377         kx firequalizer_filter_select="rdft"
   377         kx flite_filter_deps="libflite"
   377         kx framerate_filter_select="scene_sad"
   377         kx freezedetect_filter_select="scene_sad"
   377         kx frei0r_filter_deps="frei0r libdl"
   377         kx frei0r_src_filter_deps="frei0r libdl"
   377         kx fspp_filter_deps="gpl"
   377         kx headphone_filter_select="fft"
   377         kx histeq_filter_deps="gpl"
   377         kx hqdn3d_filter_deps="gpl"
   377         kx interlace_filter_deps="gpl"
   377         kx kerndeint_filter_deps="gpl"
   377         kx ladspa_filter_deps="ladspa libdl"
   377         kx lensfun_filter_deps="liblensfun version3"
   377         kx lv2_filter_deps="lv2"
   377         kx mcdeint_filter_deps="avcodec gpl"
   377         kx movie_filter_deps="avcodec avformat"
   377         kx mpdecimate_filter_deps="gpl"
   377         kx mpdecimate_filter_select="pixelutils"
   377         kx minterpolate_filter_select="scene_sad"
   377         kx mptestsrc_filter_deps="gpl"
   377         kx negate_filter_deps="lut_filter"
   377         kx nlmeans_opencl_filter_deps="opencl"
   377         kx nnedi_filter_deps="gpl"
   377         kx ocr_filter_deps="libtesseract"
   377         kx ocv_filter_deps="libopencv"
   377         kx openclsrc_filter_deps="opencl"
   377         kx overlay_opencl_filter_deps="opencl"
   377         kx overlay_qsv_filter_deps="libmfx"
   377         kx overlay_qsv_filter_select="qsvvpp"
   377         kx overlay_vulkan_filter_deps="vulkan libglslang"
   377         kx owdenoise_filter_deps="gpl"
   377         kx pad_opencl_filter_deps="opencl"
   377         kx pan_filter_deps="swresample"
   377         kx perspective_filter_deps="gpl"
   377         kx phase_filter_deps="gpl"
   377         kx pp7_filter_deps="gpl"
   377         kx pp_filter_deps="gpl postproc"
   377         kx prewitt_opencl_filter_deps="opencl"
   377         kx procamp_vaapi_filter_deps="vaapi"
   377         kx program_opencl_filter_deps="opencl"
   377         kx pullup_filter_deps="gpl"
   377         kx removelogo_filter_deps="avcodec avformat swscale"
   377         kx repeatfields_filter_deps="gpl"
   377         kx resample_filter_deps="avresample"
   377         kx roberts_opencl_filter_deps="opencl"
   377         kx rubberband_filter_deps="librubberband"
   377         kx sab_filter_deps="gpl swscale"
   377         kx scale2ref_filter_deps="swscale"
   377         kx scale_filter_deps="swscale"
   377         kx scale_qsv_filter_deps="libmfx"
   377         kx scdet_filter_select="scene_sad"
   377         kx select_filter_select="scene_sad"
   377         kx sharpness_vaapi_filter_deps="vaapi"
   377         kx showcqt_filter_deps="avcodec avformat swscale"
   377         kx showcqt_filter_suggest="libfontconfig libfreetype"
   377         kx showcqt_filter_select="fft"
   377         kx showfreqs_filter_deps="avcodec"
   377         kx showfreqs_filter_select="fft"
   377         kx showspatial_filter_select="fft"
   377         kx showspectrum_filter_deps="avcodec"
   377         kx showspectrum_filter_select="fft"
   377         kx showspectrumpic_filter_deps="avcodec"
   377         kx showspectrumpic_filter_select="fft"
   377         kx signature_filter_deps="gpl avcodec avformat"
   377         kx sinc_filter_select="rdft"
   377         kx smartblur_filter_deps="gpl swscale"
   377         kx sobel_opencl_filter_deps="opencl"
   377         kx sofalizer_filter_deps="libmysofa avcodec"
   377         kx sofalizer_filter_select="fft"
   377         kx spectrumsynth_filter_deps="avcodec"
   377         kx spectrumsynth_filter_select="fft"
   377         kx spp_filter_deps="gpl avcodec"
   377         kx spp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp"
   377         kx sr_filter_deps="avformat swscale"
   377         kx sr_filter_select="dnn"
   377         kx stereo3d_filter_deps="gpl"
   377         kx subtitles_filter_deps="avformat avcodec libass"
   377         kx super2xsai_filter_deps="gpl"
   377         kx pixfmts_super2xsai_test_deps="super2xsai_filter"
   377         kx superequalizer_filter_select="rdft"
   377         kx surround_filter_select="rdft"
   377         kx tinterlace_filter_deps="gpl"
   377         kx tinterlace_merge_test_deps="tinterlace_filter"
   377         kx tinterlace_pad_test_deps="tinterlace_filter"
   377         kx tonemap_filter_deps="const_nan"
   377         kx tonemap_vaapi_filter_deps="vaapi VAProcFilterParameterBufferHDRToneMapping"
   377         kx tonemap_opencl_filter_deps="opencl const_nan"
   377         kx transpose_opencl_filter_deps="opencl"
   377         kx transpose_vaapi_filter_deps="vaapi VAProcPipelineCaps_rotation_flags"
   377         kx unsharp_opencl_filter_deps="opencl"
   377         kx uspp_filter_deps="gpl avcodec"
   377         kx vaguedenoiser_filter_deps="gpl"
   377         kx vidstabdetect_filter_deps="libvidstab"
   377         kx vidstabtransform_filter_deps="libvidstab"
   377         kx libvmaf_filter_deps="libvmaf pthreads"
   377         kx zmq_filter_deps="libzmq"
   377         kx zoompan_filter_deps="swscale"
   377         kx zscale_filter_deps="libzimg const_nan"
   377         kx scale_vaapi_filter_deps="vaapi"
   377         kx scale_vulkan_filter_deps="vulkan libglslang"
   377         kx vpp_qsv_filter_deps="libmfx"
   377         kx vpp_qsv_filter_select="qsvvpp"
   377         kx xfade_opencl_filter_deps="opencl"
   377         kx yadif_cuda_filter_deps="ffnvcodec"
   377         kx yadif_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
   377         kx 
   377         kx # examples
   377         kx avio_list_dir_deps="avformat avutil"
   377         kx avio_reading_deps="avformat avcodec avutil"
   377         kx decode_audio_example_deps="avcodec avutil"
   377         kx decode_video_example_deps="avcodec avutil"
   377         kx demuxing_decoding_example_deps="avcodec avformat avutil"
   377         kx encode_audio_example_deps="avcodec avutil"
   377         kx encode_video_example_deps="avcodec avutil"
   377         kx extract_mvs_example_deps="avcodec avformat avutil"
   377         kx filter_audio_example_deps="avfilter avutil"
   377         kx filtering_audio_example_deps="avfilter avcodec avformat avutil"
   377         kx filtering_video_example_deps="avfilter avcodec avformat avutil"
   377         kx http_multiclient_example_deps="avformat avutil fork"
   377         kx hw_decode_example_deps="avcodec avformat avutil"
   377         kx metadata_example_deps="avformat avutil"
   377         kx muxing_example_deps="avcodec avformat avutil swscale"
   377         kx qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder"
   377         kx remuxing_example_deps="avcodec avformat avutil"
   377         kx resampling_audio_example_deps="avutil swresample"
   377         kx scaling_video_example_deps="avutil swscale"
   377         kx transcode_aac_example_deps="avcodec avformat swresample"
   377         kx transcoding_example_deps="avfilter avcodec avformat avutil"
   377         kx vaapi_encode_example_deps="avcodec avutil h264_vaapi_encoder"
   377         kx vaapi_transcode_example_deps="avcodec avformat avutil h264_vaapi_encoder"
   377         kx 
   377         kx # EXTRALIBS_LIST
   377         kx cpu_init_extralibs="pthreads_extralibs"
   377         kx cws2fws_extralibs="zlib_extralibs"
   377         kx 
   377         kx # libraries, in any order
   377         kx avcodec_deps="avutil"
   377         kx avcodec_suggest="libm stdatomic"
   377         kx avcodec_select="null_bsf"
   377         kx avdevice_deps="avformat avcodec avutil"
   377         kx avdevice_suggest="libm stdatomic"
   377         kx avfilter_deps="avutil"
   377         kx avfilter_suggest="libm stdatomic"
   377         kx avformat_deps="avcodec avutil"
   377         kx avformat_suggest="libm network zlib stdatomic"
   377         kx avresample_deps="avutil"
   377         kx avresample_suggest="libm"
   377         kx avutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi vulkan videotoolbox corefoundation corevideo coremedia bcrypt stdatomic"
   377         kx postproc_deps="avutil gpl"
   377         kx postproc_suggest="libm stdatomic"
   377         kx swresample_deps="avutil"
   377         kx swresample_suggest="libm libsoxr stdatomic"
   377         kx swscale_deps="avutil"
   377         kx swscale_suggest="libm stdatomic"
   377         kx 
   377         kx avcodec_extralibs="pthreads_extralibs iconv_extralibs dxva2_extralibs"
   377         kx avfilter_extralibs="pthreads_extralibs"
   377         kx avutil_extralibs="d3d11va_extralibs nanosleep_extralibs pthreads_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs"
   377         kx 
   377         kx # programs
   377         kx ffmpeg_deps="avcodec avfilter avformat"
   377         kx ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter
   377         kx                hflip_filter null_filter
   377         kx                transpose_filter trim_filter vflip_filter"
   377         kx ffmpeg_suggest="ole32 psapi shell32"
   377         kx ffplay_deps="avcodec avformat swscale swresample sdl2"
   377         kx ffplay_select="rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter"
   377         kx ffplay_suggest="shell32"
   377         kx ffprobe_deps="avcodec avformat"
   377         kx ffprobe_suggest="shell32"
   377         kx 
   377         kx # documentation
   377         kx podpages_deps="perl"
   377         kx manpages_deps="perl pod2man"
   377         kx htmlpages_deps="perl"
   377         kx htmlpages_deps_any="makeinfo_html texi2html"
   377         kx txtpages_deps="perl makeinfo"
   377         kx doc_deps_any="manpages htmlpages podpages txtpages"
   377         kx 
   377         kx # default parameters
   377         kx 
   377         kx logfile="ffbuild/config.log"
   377         kx 
   377         kx # installation paths
   377         kx prefix_default="/usr/local"
   377         kx bindir_default='${prefix}/bin'
   377         kx datadir_default='${prefix}/share/ffmpeg'
   377         kx docdir_default='${prefix}/share/doc/ffmpeg'
   377         kx incdir_default='${prefix}/include'
   377         kx libdir_default='${prefix}/lib'
   377         kx mandir_default='${prefix}/share/man'
   377         kx 
   377         kx # toolchain
   377         kx ar_default="ar"
   377         kx cc_default="gcc"
   377         kx cxx_default="g++"
   377         kx host_cc_default="gcc"
   377         kx doxygen_default="doxygen"
   377         kx install="install"
   377         kx ln_s_default="ln -s -f"
   377         kx nm_default="nm -g"
   377         kx pkg_config_default=pkg-config
   377         kx ranlib_default="ranlib"
   377         kx strip_default="strip"
   377         kx version_script='--version-script'
   377         kx objformat="elf32"
   377         kx x86asmexe_default="nasm"
   377         kx windres_default="windres"
   377         kx striptype="direct"
   377         kx 
   377         kx # OS
   377         kx target_os_default=$(tolower $(uname -s))
   377         kx host_os=$target_os_default
   377         kx 
   377         kx # machine
   377         kx if test "$target_os_default" = aix; then
   377         kx     arch_default=$(uname -p)
   377         kx     strip_default="strip -X32_64"
   377         kx     nm_default="nm -g -X32_64"
   377         kx else
   377         kx     arch_default=$(uname -m)
   377         kx fi
   377         kx cpu="generic"
   377         kx intrinsics="none"
   377         kx 
   377         kx # configurable options
   377         kx enable $PROGRAM_LIST
   377         kx enable $DOCUMENT_LIST
   377         kx enable $EXAMPLE_LIST
   377         kx enable $(filter_out avresample $LIBRARY_LIST)
   377         kx enable stripping
   377         kx 
   377         kx enable asm
   377         kx enable debug
   377         kx enable doc
   377         kx enable faan faandct faanidct
   377         kx enable large_tests
   377         kx enable optimizations
   377         kx enable runtime_cpudetect
   377         kx enable safe_bitstream_reader
   377         kx enable static
   377         kx enable swscale_alpha
   377         kx enable valgrind_backtrace
   377         kx 
   377         kx sws_max_filter_size_default=256
   377         kx set_default sws_max_filter_size
   377         kx 
   377         kx # internal components are enabled by default
   377         kx enable $EXTRALIBS_LIST
   377         kx 
   377         kx # Avoid external, non-system, libraries getting enabled by dependency resolution
   377         kx disable $EXTERNAL_LIBRARY_LIST $HWACCEL_LIBRARY_LIST
   377         kx 
   377         kx # build settings
   377         kx SHFLAGS='-shared -Wl,-soname,$$(@F)'
   377         kx LIBPREF="lib"
   377         kx LIBSUF=".a"
   377         kx FULLNAME='$(NAME)$(BUILDSUF)'
   377         kx LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
   377         kx SLIBPREF="lib"
   377         kx SLIBSUF=".so"
   377         kx SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
   377         kx SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
   377         kx SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
   377         kx LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
   377         kx SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
   377         kx SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
   377         kx VERSION_SCRIPT_POSTPROCESS_CMD="cat"
   377         kx 
   377         kx asflags_filter=echo
   377         kx cflags_filter=echo
   377         kx ldflags_filter=echo
   377         kx 
   377         kx AS_C='-c'
   377         kx AS_O='-o $@'
   377         kx CC_C='-c'
   377         kx CC_E='-E -o $@'
   377         kx CC_O='-o $@'
   377         kx CXX_C='-c'
   377         kx CXX_O='-o $@'
   377         kx OBJCC_C='-c'
   377         kx OBJCC_E='-E -o $@'
   377         kx OBJCC_O='-o $@'
   377         kx X86ASM_O='-o $@'
   377         kx LD_O='-o $@'
   377         kx LD_LIB='-l%'
   377         kx LD_PATH='-L'
   377         kx HOSTCC_C='-c'
   377         kx HOSTCC_E='-E -o $@'
   377         kx HOSTCC_O='-o $@'
   377         kx HOSTLD_O='-o $@'
   377         kx NVCC_C='-c'
   377         kx NVCC_O='-o $@'
   377         kx 
   377         kx host_extralibs='-lm'
   377         kx host_cflags_filter=echo
   377         kx host_ldflags_filter=echo
   377         kx 
   377         kx target_path='$(CURDIR)'
   377         kx 
   377         kx # since the object filename is not given with the -MM flag, the compiler
   377         kx # is only able to print the basename, and we must add the path ourselves
   377         kx DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)'
   377         kx DEPFLAGS='-MM'
   377         kx 
   377         kx mkdir -p ffbuild
   377         kx 
   377         kx # find source path
   377         kx if test -f configure; then
   377         kx     source_path=.
   377         kx elif test -f src/configure; then
   377         kx     source_path=src
   377         kx else
   377         kx     source_path=$(cd $(dirname "$0"); pwd)
   377         kx     case "$source_path" in
   377         kx         *[[:blank:]]*) die "Out of tree builds are impossible with whitespace in source path." ;;
   377         kx     esac
   377         kx     test -e "$source_path/config.h" &&
   377         kx         die "Out of tree builds are impossible with config.h in source dir."
   377         kx fi
   377         kx 
   377         kx for v in "$@"; do
   377         kx     r=${v#*=}
   377         kx     l=${v%"$r"}
   377         kx     r=$(sh_quote "$r")
   377         kx     FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
   377         kx done
   377         kx 
   377         kx find_things_extern(){
   377         kx     thing=$1
   377         kx     pattern=$2
   377         kx     file=$source_path/$3
   377         kx     out=${4:-$thing}
   377         kx     sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$out/p" "$file"
   377         kx }
   377         kx 
   377         kx find_filters_extern(){
   377         kx     file=$source_path/$1
   377         kx     sed -n 's/^extern AVFilter ff_[avfsinkrc]\{2,5\}_\([[:alnum:]_]\{1,\}\);/\1_filter/p' $file
   377         kx }
   377         kx 
   377         kx FILTER_LIST=$(find_filters_extern libavfilter/allfilters.c)
   377         kx OUTDEV_LIST=$(find_things_extern muxer AVOutputFormat libavdevice/alldevices.c outdev)
   377         kx INDEV_LIST=$(find_things_extern demuxer AVInputFormat libavdevice/alldevices.c indev)
   377         kx MUXER_LIST=$(find_things_extern muxer AVOutputFormat libavformat/allformats.c)
   377         kx DEMUXER_LIST=$(find_things_extern demuxer AVInputFormat libavformat/allformats.c)
   377         kx ENCODER_LIST=$(find_things_extern encoder AVCodec libavcodec/allcodecs.c)
   377         kx DECODER_LIST=$(find_things_extern decoder AVCodec libavcodec/allcodecs.c)
   377         kx CODEC_LIST="
   377         kx     $ENCODER_LIST
   377         kx     $DECODER_LIST
   377         kx "
   377         kx PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parsers.c)
   377         kx BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
   377         kx HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)
   377         kx PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
   377         kx 
   377         kx AVCODEC_COMPONENTS_LIST="
   377         kx     $BSF_LIST
   377         kx     $DECODER_LIST
   377         kx     $ENCODER_LIST
   377         kx     $HWACCEL_LIST
   377         kx     $PARSER_LIST
   377         kx "
   377         kx 
   377         kx AVDEVICE_COMPONENTS_LIST="
   377         kx     $INDEV_LIST
   377         kx     $OUTDEV_LIST
   377         kx "
   377         kx 
   377         kx AVFILTER_COMPONENTS_LIST="
   377         kx     $FILTER_LIST
   377         kx "
   377         kx 
   377         kx AVFORMAT_COMPONENTS_LIST="
   377         kx     $DEMUXER_LIST
   377         kx     $MUXER_LIST
   377         kx     $PROTOCOL_LIST
   377         kx "
   377         kx 
   377         kx ALL_COMPONENTS="
   377         kx     $AVCODEC_COMPONENTS_LIST
   377         kx     $AVDEVICE_COMPONENTS_LIST
   377         kx     $AVFILTER_COMPONENTS_LIST
   377         kx     $AVFORMAT_COMPONENTS_LIST
   377         kx "
   377         kx 
   377         kx for n in $COMPONENT_LIST; do
   377         kx     v=$(toupper ${n%s})_LIST
   377         kx     eval enable \$$v
   377         kx     eval ${n}_if_any="\$$v"
   377         kx done
   377         kx 
   377         kx enable $ARCH_EXT_LIST
   377         kx 
   377         kx die_unknown(){
   377         kx     echo "Unknown option \"$1\"."
   377         kx     echo "See $0 --help for available options."
   377         kx     exit 1
   377         kx }
   377         kx 
   377         kx print_in_columns() {
   377         kx     tr ' ' '\n' | sort | tr '\r\n' '  ' | awk -v col_width=24 -v width="$ncols" '
   377         kx     {
   377         kx         num_cols = width > col_width ? int(width / col_width) : 1;
   377         kx         num_rows = int((NF + num_cols-1) / num_cols);
   377         kx         y = x = 1;
   377         kx         for (y = 1; y <= num_rows; y++) {
   377         kx             i = y;
   377         kx             for (x = 1; x <= num_cols; x++) {
   377         kx                 if (i <= NF) {
   377         kx                   line = sprintf("%s%-" col_width "s", line, $i);
   377         kx                 }
   377         kx                 i = i + num_rows;
   377         kx             }
   377         kx             print line; line = "";
   377         kx         }
   377         kx     }' | sed 's/ *$//'
   377         kx }
   377         kx 
   377         kx show_list() {
   377         kx     suffix=_$1
   377         kx     shift
   377         kx     echo $* | sed s/$suffix//g | print_in_columns
   377         kx     exit 0
   377         kx }
   377         kx 
   377         kx rand_list(){
   377         kx     IFS=', '
   377         kx     set -- $*
   377         kx     unset IFS
   377         kx     for thing; do
   377         kx         comp=${thing%:*}
   377         kx         prob=${thing#$comp}
   377         kx         prob=${prob#:}
   377         kx         is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
   377         kx         echo "prob ${prob:-0.5}"
   377         kx         printf '%s\n' $comp
   377         kx     done
   377         kx }
   377         kx 
   377         kx do_random(){
   377         kx     action=$1
   377         kx     shift
   377         kx     random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
   377         kx     $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
   377         kx }
   377         kx 
   377         kx for opt do
   377         kx     optval="${opt#*=}"
   377         kx     case "$opt" in
   377         kx         --extra-ldflags=*)
   377         kx             add_ldflags $optval
   377         kx         ;;
   377         kx         --extra-ldexeflags=*)
   377         kx             add_ldexeflags $optval
   377         kx         ;;
   377         kx         --extra-ldsoflags=*)
   377         kx             add_ldsoflags $optval
   377         kx         ;;
   377         kx         --extra-ldlibflags=*)
   377         kx             warn "The --extra-ldlibflags option is only provided for compatibility and will be\n"\
   377         kx                  "removed in the future. Use --extra-ldsoflags instead."
   377         kx             add_ldsoflags $optval
   377         kx         ;;
   377         kx         --extra-libs=*)
   377         kx             add_extralibs $optval
   377         kx         ;;
   377         kx         --disable-devices)
   377         kx             disable $INDEV_LIST $OUTDEV_LIST
   377         kx         ;;
   377         kx         --enable-debug=*)
   377         kx             debuglevel="$optval"
   377         kx         ;;
   377         kx         --disable-programs)
   377         kx             disable $PROGRAM_LIST
   377         kx         ;;
   377         kx         --disable-everything)
   377         kx             map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
   377         kx         ;;
   377         kx         --disable-all)
   377         kx             map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
   377         kx             disable $LIBRARY_LIST $PROGRAM_LIST doc
   377         kx             enable avutil
   377         kx         ;;
   377         kx         --enable-random|--disable-random)
   377         kx             action=${opt%%-random}
   377         kx             do_random ${action#--} $COMPONENT_LIST
   377         kx         ;;
   377         kx         --enable-random=*|--disable-random=*)
   377         kx             action=${opt%%-random=*}
   377         kx             do_random ${action#--} $optval
   377         kx         ;;
   377         kx         --enable-sdl)
   377         kx             enable sdl2
   377         kx         ;;
   377         kx         --enable-*=*|--disable-*=*)
   377         kx             eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
   377         kx             is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
   377         kx             eval list=\$$(toupper $thing)_LIST
   377         kx             name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
   377         kx             list=$(filter "$name" $list)
   377         kx             [ "$list" = "" ] && warn "Option $opt did not match anything"
   377         kx             test $action = enable && warn_if_gets_disabled $list
   377         kx             $action $list
   377         kx         ;;
   377         kx         --enable-yasm|--disable-yasm)
   377         kx             warn "The ${opt} option is only provided for compatibility and will be\n"\
   377         kx                  "removed in the future. Use --enable-x86asm / --disable-x86asm instead."
   377         kx             test $opt = --enable-yasm && x86asm=yes || x86asm=no
   377         kx         ;;
   377         kx         --yasmexe=*)
   377         kx             warn "The --yasmexe option is only provided for compatibility and will be\n"\
   377         kx                  "removed in the future. Use --x86asmexe instead."
   377         kx             x86asmexe="$optval"
   377         kx         ;;
   377         kx         --enable-?*|--disable-?*)
   377         kx             eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
   377         kx             if is_in $option $COMPONENT_LIST; then
   377         kx                 test $action = disable && action=unset
   377         kx                 eval $action \$$(toupper ${option%s})_LIST
   377         kx             elif is_in $option $CMDLINE_SELECT; then
   377         kx                 $action $option
   377         kx             else
   377         kx                 die_unknown $opt
   377         kx             fi
   377         kx         ;;
   377         kx         --list-*)
   377         kx             NAME="${opt#--list-}"
   377         kx             is_in $NAME $COMPONENT_LIST || die_unknown $opt
   377         kx             NAME=${NAME%s}
   377         kx             eval show_list $NAME \$$(toupper $NAME)_LIST
   377         kx         ;;
   377         kx         --help|-h) show_help
   377         kx         ;;
   377         kx         --quiet|-q) quiet=yes
   377         kx         ;;
   377         kx         --fatal-warnings) enable fatal_warnings
   377         kx         ;;
   377         kx         --libfuzzer=*)
   377         kx             libfuzzer_path="$optval"
   377         kx         ;;
   377         kx         *)
   377         kx             optname="${opt%%=*}"
   377         kx             optname="${optname#--}"
   377         kx             optname=$(echo "$optname" | sed 's/-/_/g')
   377         kx             if is_in $optname $CMDLINE_SET; then
   377         kx                 eval $optname='$optval'
   377         kx             elif is_in $optname $CMDLINE_APPEND; then
   377         kx                 append $optname "$optval"
   377         kx             else
   377         kx                 die_unknown $opt
   377         kx             fi
   377         kx         ;;
   377         kx     esac
   377         kx done
   377         kx 
   377         kx for e in $env; do
   377         kx     eval "export $e"
   377         kx done
   377         kx 
   377         kx if disabled autodetect; then
   377         kx 
   377         kx     # Unless iconv is explicitely disabled by the user, we still want to probe
   377         kx     # for the iconv from the libc.
   377         kx     disabled iconv || enable libc_iconv
   377         kx 
   377         kx     disable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST
   377         kx     disable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST
   377         kx fi
   377         kx # Mark specifically enabled, but normally autodetected libraries as requested.
   377         kx for lib in $AUTODETECT_LIBS; do
   377         kx     enabled $lib && request $lib
   377         kx done
   377         kx #TODO: switch to $AUTODETECT_LIBS when $THREADS_LIST is supported the same way
   377         kx enable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST
   377         kx enable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST
   377         kx 
   377         kx disabled logging && logfile=/dev/null
   377         kx 
   377         kx # command line configuration sanity checks
   377         kx 
   377         kx # we need to build at least one lib type
   377         kx if ! enabled_any static shared; then
   377         kx     cat <<EOF
   377         kx At least one library type must be built.
   377         kx Specify --enable-static to build the static libraries or --enable-shared to
   377         kx build the shared libraries as well. To only build the shared libraries specify
   377         kx --disable-static in addition to --enable-shared.
   377         kx EOF
   377         kx     exit 1
   377         kx fi
   377         kx 
   377         kx die_license_disabled() {
   377         kx     enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; }
   377         kx }
   377         kx 
   377         kx die_license_disabled_gpl() {
   377         kx     enabled $1 || { enabled $v && die "$v is incompatible with the gpl and --enable-$1 is not specified."; }
   377         kx }
   377         kx 
   377         kx map "die_license_disabled gpl"      $EXTERNAL_LIBRARY_GPL_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
   377         kx map "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
   377         kx 
   377         kx enabled gpl && map "die_license_disabled_gpl nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST
   377         kx map "die_license_disabled nonfree" $HWACCEL_LIBRARY_NONFREE_LIST
   377         kx 
   377         kx enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
   377         kx 
   377         kx if enabled nonfree; then
   377         kx     license="nonfree and unredistributable"
   377         kx elif enabled gplv3; then
   377         kx     license="GPL version 3 or later"
   377         kx elif enabled lgplv3; then
   377         kx     license="LGPL version 3 or later"
   377         kx elif enabled gpl; then
   377         kx     license="GPL version 2 or later"
   377         kx else
   377         kx     license="LGPL version 2.1 or later"
   377         kx fi
   377         kx 
   377         kx enabled_all gnutls openssl &&
   377         kx     die "GnuTLS and OpenSSL must not be enabled at the same time."
   377         kx 
   377         kx enabled_all gnutls mbedtls &&
   377         kx     die "GnuTLS and mbedTLS must not be enabled at the same time."
   377         kx 
   377         kx enabled_all openssl mbedtls &&
   377         kx     die "OpenSSL and mbedTLS must not be enabled at the same time."
   377         kx 
   377         kx # Disable all the library-specific components if the library itself
   377         kx # is disabled, see AVCODEC_LIST and following _LIST variables.
   377         kx 
   377         kx disable_components(){
   377         kx     disabled ${1} && disable $(
   377         kx         eval components="\$$(toupper ${1})_COMPONENTS"
   377         kx         map 'eval echo \${$(toupper ${v%s})_LIST}' $components
   377         kx     )
   377         kx }
   377         kx 
   377         kx map 'disable_components $v' $LIBRARY_LIST
   377         kx 
   377         kx echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
   377         kx set >> $logfile
   377         kx 
   377         kx test -n "$valgrind" && toolchain="valgrind-memcheck"
   377         kx 
   377         kx enabled ossfuzz && ! echo $CFLAGS | grep -q -- "-fsanitize="  && ! echo $CFLAGS | grep -q -- "-fcoverage-mapping" &&{
   377         kx     add_cflags  -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp -fno-omit-frame-pointer
   377         kx     add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp
   377         kx }
   377         kx 
   377         kx case "$toolchain" in
   377         kx     *-asan)
   377         kx         cc_default="${toolchain%-asan}"
   377         kx         add_cflags  -fsanitize=address
   377         kx         add_ldflags -fsanitize=address
   377         kx     ;;
   377         kx     *-msan)
   377         kx         cc_default="${toolchain%-msan}"
   377         kx         add_cflags  -fsanitize=memory -fsanitize-memory-track-origins
   377         kx         add_ldflags -fsanitize=memory
   377         kx     ;;
   377         kx     *-tsan)
   377         kx         cc_default="${toolchain%-tsan}"
   377         kx         add_cflags  -fsanitize=thread
   377         kx         add_ldflags -fsanitize=thread
   377         kx         case "$toolchain" in
   377         kx             gcc-tsan)
   377         kx                 add_cflags  -fPIC
   377         kx                 add_ldflags -fPIC
   377         kx                 ;;
   377         kx         esac
   377         kx     ;;
   377         kx     *-usan)
   377         kx         cc_default="${toolchain%-usan}"
   377         kx         add_cflags  -fsanitize=undefined
   377         kx         add_ldflags -fsanitize=undefined
   377         kx     ;;
   377         kx     valgrind-*)
   377         kx         target_exec_default="valgrind"
   377         kx         case "$toolchain" in
   377         kx             valgrind-massif)
   377         kx                 target_exec_args="--tool=massif --alloc-fn=av_malloc --alloc-fn=av_mallocz --alloc-fn=av_calloc --alloc-fn=av_fast_padded_malloc --alloc-fn=av_fast_malloc --alloc-fn=av_realloc_f --alloc-fn=av_fast_realloc --alloc-fn=av_realloc"
   377         kx                 ;;
   377         kx             valgrind-memcheck)
   377         kx                 target_exec_args="--error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp"
   377         kx                 ;;
   377         kx         esac
   377         kx     ;;
   377         kx     msvc)
   377         kx         # Check whether the current MSVC version needs the C99 converter.
   377         kx         # From MSVC 2013 (compiler major version 18) onwards, it does actually
   377         kx         # support enough of C99 to build ffmpeg. Default to the new
   377         kx         # behaviour if the regexp was unable to match anything, since this
   377         kx         # successfully parses the version number of existing supported
   377         kx         # versions that require the converter (MSVC 2010 and 2012).
   377         kx         cl_major_ver=$(cl.exe 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
   377         kx         if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
   377         kx             cc_default="cl.exe"
   377         kx             cxx_default="cl.exe"
   377         kx         else
   377         kx             die "Unsupported MSVC version (2013 or newer required)"
   377         kx         fi
   377         kx         ld_default="$source_path/compat/windows/mslink"
   377         kx         nm_default="dumpbin.exe -symbols"
   377         kx         ar_default="lib.exe"
   377         kx         case "${arch:-$arch_default}" in
   377         kx         aarch64|arm64)
   377         kx             as_default="armasm64.exe"
   377         kx             ;;
   377         kx         arm*)
   377         kx             as_default="armasm.exe"
   377         kx             ;;
   377         kx         esac
   377         kx         target_os_default="win32"
   377         kx         # Use a relative path for TMPDIR. This makes sure all the
   377         kx         # ffconf temp files are written with a relative path, avoiding
   377         kx         # issues with msys/win32 path conversion for MSVC parameters
   377         kx         # such as -Fo<file> or -out:<file>.
   377         kx         TMPDIR=.
   377         kx     ;;
   377         kx     icl)
   377         kx         cc_default="icl"
   377         kx         ld_default="xilink"
   377         kx         nm_default="dumpbin -symbols"
   377         kx         ar_default="xilib"
   377         kx         target_os_default="win32"
   377         kx         TMPDIR=.
   377         kx     ;;
   377         kx     gcov)
   377         kx         add_cflags  -fprofile-arcs -ftest-coverage
   377         kx         add_ldflags -fprofile-arcs -ftest-coverage
   377         kx     ;;
   377         kx     llvm-cov)
   377         kx         add_cflags -fprofile-arcs -ftest-coverage
   377         kx         add_ldflags --coverage
   377         kx     ;;
   377         kx     hardened)
   377         kx         add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
   377         kx         add_cflags   -fno-strict-overflow -fstack-protector-all
   377         kx         add_ldflags  -Wl,-z,relro -Wl,-z,now
   377         kx         add_cflags   -fPIE
   377         kx         add_ldexeflags -fPIE -pie
   377         kx     ;;
   377         kx     ?*)
   377         kx         die "Unknown toolchain $toolchain"
   377         kx     ;;
   377         kx esac
   377         kx 
   377         kx if test -n "$cross_prefix"; then
   377         kx     test -n "$arch" && test -n "$target_os" ||
   377         kx         die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
   377         kx     enable cross_compile
   377         kx fi
   377         kx 
   377         kx set_default target_os
   377         kx if test "$target_os" = android; then
   377         kx     cc_default="clang"
   377         kx fi
   377         kx 
   377         kx ar_default="${cross_prefix}${ar_default}"
   377         kx cc_default="${cross_prefix}${cc_default}"
   377         kx cxx_default="${cross_prefix}${cxx_default}"
   377         kx nm_default="${cross_prefix}${nm_default}"
   377         kx pkg_config_default="${cross_prefix}${pkg_config_default}"
   377         kx if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
   377         kx     ranlib_default="${cross_prefix}${ranlib_default} -D"
   377         kx else
   377         kx     ranlib_default="${cross_prefix}${ranlib_default}"
   377         kx fi
   377         kx strip_default="${cross_prefix}${strip_default}"
   377         kx windres_default="${cross_prefix}${windres_default}"
   377         kx 
   377         kx sysinclude_default="${sysroot}/usr/include"
   377         kx 
   377         kx if enabled cuda_sdk; then
   377         kx     warn "Option --enable-cuda-sdk is deprecated. Use --enable-cuda-nvcc instead."
   377         kx     enable cuda_nvcc
   377         kx fi
   377         kx 
   377         kx if enabled cuda_nvcc; then
   377         kx     nvcc_default="nvcc"
   377         kx     nvccflags_default="-gencode arch=compute_30,code=sm_30 -O2"
   377         kx else
   377         kx     nvcc_default="clang"
   377         kx     nvccflags_default="--cuda-gpu-arch=sm_30 -O2"
   377         kx     NVCC_C=""
   377         kx fi
   377         kx 
   377         kx set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
   377         kx     target_exec x86asmexe nvcc
   377         kx enabled cross_compile || host_cc_default=$cc
   377         kx set_default host_cc
   377         kx 
   377         kx pkg_config_fail_message=""
   377         kx if ! $pkg_config --version >/dev/null 2>&1; then
   377         kx     warn "$pkg_config not found, library detection may fail."
   377         kx     pkg_config=false
   377         kx elif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags; then
   377         kx     pkg_config_fail_message="
   377         kx Note: When building a static binary, add --pkg-config-flags=\"--static\"."
   377         kx fi
   377         kx 
   377         kx if test $doxygen != $doxygen_default && \
   377         kx   ! $doxygen --version >/dev/null 2>&1; then
   377         kx     warn "Specified doxygen \"$doxygen\" not found, API documentation will fail to build."
   377         kx fi
   377         kx 
   377         kx exesuf() {
   377         kx     case $1 in
   377         kx         mingw32*|mingw64*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
   377         kx     esac
   377         kx }
   377         kx 
   377         kx EXESUF=$(exesuf $target_os)
   377         kx HOSTEXESUF=$(exesuf $host_os)
   377         kx 
   377         kx # set temporary file name
   377         kx : ${TMPDIR:=$TEMPDIR}
   377         kx : ${TMPDIR:=$TMP}
   377         kx : ${TMPDIR:=/tmp}
   377         kx 
   377         kx if [ -n "$tempprefix" ] ; then
   377         kx     mktemp(){
   377         kx         tmpname="$tempprefix.${HOSTNAME}.${UID}"
   377         kx         echo "$tmpname"
   377         kx         mkdir "$tmpname"
   377         kx     }
   377         kx elif ! test_cmd mktemp -u XXXXXX; then
   377         kx     # simple replacement for missing mktemp
   377         kx     # NOT SAFE FOR GENERAL USE
   377         kx     mktemp(){
   377         kx         tmpname="${2%%XXX*}.${HOSTNAME}.${UID}.$$"
   377         kx         echo "$tmpname"
   377         kx         mkdir "$tmpname"
   377         kx     }
   377         kx fi
   377         kx 
   377         kx FFTMPDIR=$(mktemp -d "${TMPDIR}/ffconf.XXXXXXXX" 2> /dev/null) ||
   377         kx     die "Unable to create temporary directory in $TMPDIR."
   377         kx 
   377         kx tmpfile(){
   377         kx     tmp="${FFTMPDIR}/test"$2
   377         kx     (set -C; exec > $tmp) 2> /dev/null ||
   377         kx         die "Unable to create temporary file in $FFTMPDIR."
   377         kx     eval $1=$tmp
   377         kx }
   377         kx 
   377         kx trap 'rm -rf -- "$FFTMPDIR"' EXIT
   377         kx trap 'exit 2' INT
   377         kx 
   377         kx tmpfile TMPASM .asm
   377         kx tmpfile TMPC   .c
   377         kx tmpfile TMPCPP .cpp
   377         kx tmpfile TMPE   $EXESUF
   377         kx tmpfile TMPH   .h
   377         kx tmpfile TMPM   .m
   377         kx tmpfile TMPCU  .cu
   377         kx tmpfile TMPO   .o
   377         kx tmpfile TMPS   .S
   377         kx tmpfile TMPSH  .sh
   377         kx tmpfile TMPV   .ver
   377         kx 
   377         kx unset -f mktemp
   377         kx 
   377         kx chmod +x $TMPE
   377         kx 
   377         kx # make sure we can execute files in $TMPDIR
   377         kx cat > $TMPSH 2>> $logfile <<EOF
   377         kx #! /bin/sh
   377         kx EOF
   377         kx chmod +x $TMPSH >> $logfile 2>&1
   377         kx if ! $TMPSH >> $logfile 2>&1; then
   377         kx     cat <<EOF
   377         kx Unable to create and execute files in $TMPDIR.  Set the TMPDIR environment
   377         kx variable to another directory and make sure that it is not mounted noexec.
   377         kx EOF
   377         kx     die "Sanity test failed."
   377         kx fi
   377         kx 
   377         kx armasm_flags(){
   377         kx     for flag; do
   377         kx         case $flag in
   377         kx             # Filter out MSVC cl.exe options from cflags that shouldn't
   377         kx             # be passed to gas-preprocessor
   377         kx             -M[TD]*)                                            ;;
   377         kx             *)                  echo $flag                      ;;
   377         kx         esac
   377         kx    done
   377         kx }
   377         kx 
   377         kx cparser_flags(){
   377         kx     for flag; do
   377         kx         case $flag in
   377         kx             -Wno-switch)             echo -Wno-switch-enum ;;
   377         kx             -Wno-format-zero-length) ;;
   377         kx             -Wdisabled-optimization) ;;
   377         kx             -Wno-pointer-sign)       echo -Wno-other ;;
   377         kx             *)                       echo $flag ;;
   377         kx         esac
   377         kx     done
   377         kx }
   377         kx 
   377         kx msvc_common_flags(){
   377         kx     for flag; do
   377         kx         case $flag in
   377         kx             # In addition to specifying certain flags under the compiler
   377         kx             # specific filters, they must be specified here as well or else the
   377         kx             # generic catch all at the bottom will print the original flag.
   377         kx             -Wall)                ;;
   377         kx             -Wextra)              ;;
   377         kx             -std=c*)              ;;
   377         kx             # Common flags
   377         kx             -fomit-frame-pointer) ;;
   377         kx             -g)                   echo -Z7 ;;
   377         kx             -fno-math-errno)      ;;
   377         kx             -fno-common)          ;;
   377         kx             -fno-signed-zeros)    ;;
   377         kx             -fPIC)                ;;
   377         kx             -mthumb)              ;;
   377         kx             -march=*)             ;;
   377         kx             -lz)                  echo zlib.lib ;;
   377         kx             -lx264)               echo libx264.lib ;;
   377         kx             -lstdc++)             ;;
   377         kx             -l*)                  echo ${flag#-l}.lib ;;
   377         kx             -LARGEADDRESSAWARE)   echo $flag ;;
   377         kx             -L*)                  echo -libpath:${flag#-L} ;;
   377         kx             -Wl,*)                ;;
   377         kx             *)                    echo $flag ;;
   377         kx         esac
   377         kx     done
   377         kx }
   377         kx 
   377         kx msvc_flags(){
   377         kx     msvc_common_flags "$@"
   377         kx     for flag; do
   377         kx         case $flag in
   377         kx             -Wall)                echo -W3 -wd4018 -wd4146 -wd4244 -wd4305     \
   377         kx                                        -wd4554 ;;
   377         kx             -Wextra)              echo -W4 -wd4244 -wd4127 -wd4018 -wd4389     \
   377         kx                                        -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
   377         kx                                        -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
   377         kx                                        -wd4307 \
   377         kx                                        -wd4273 -wd4554 -wd4701 -wd4703 ;;
   377         kx         esac
   377         kx     done
   377         kx }
   377         kx 
   377         kx icl_flags(){
   377         kx     msvc_common_flags "$@"
   377         kx     for flag; do
   377         kx         case $flag in
   377         kx             # Despite what Intel's documentation says -Wall, which is supported
   377         kx             # on Windows, does enable remarks so disable them here.
   377         kx             -Wall)                echo $flag -Qdiag-disable:remark ;;
   377         kx             -std=c99)             echo -Qstd=c99 ;;
   377         kx             -flto)                echo -ipo ;;
   377         kx         esac
   377         kx     done
   377         kx }
   377         kx 
   377         kx icc_flags(){
   377         kx     for flag; do
   377         kx         case $flag in
   377         kx             -flto)                echo -ipo ;;
   377         kx             *)                    echo $flag ;;
   377         kx         esac
   377         kx     done
   377         kx }
   377         kx 
   377         kx suncc_flags(){
   377         kx     for flag; do
   377         kx         case $flag in
   377         kx             -march=*|-mcpu=*)
   377         kx                 case "${flag#*=}" in
   377         kx                     native)                   echo -xtarget=native       ;;
   377         kx                     v9|niagara)               echo -xarch=sparc          ;;
   377         kx                     ultrasparc)               echo -xarch=sparcvis       ;;
   377         kx                     ultrasparc3|niagara2)     echo -xarch=sparcvis2      ;;
   377         kx                     i586|pentium)             echo -xchip=pentium        ;;
   377         kx                     i686|pentiumpro|pentium2) echo -xtarget=pentium_pro  ;;
   377         kx                     pentium3*|c3-2)           echo -xtarget=pentium3     ;;
   377         kx                     pentium-m)          echo -xarch=sse2 -xchip=pentium3 ;;
   377         kx                     pentium4*)          echo -xtarget=pentium4           ;;
   377         kx                     prescott|nocona)    echo -xarch=sse3 -xchip=pentium4 ;;
   377         kx                     *-sse3)             echo -xarch=sse3                 ;;
   377         kx                     core2)              echo -xarch=ssse3 -xchip=core2   ;;
   377         kx                     bonnell)                   echo -xarch=ssse3         ;;
   377         kx                     corei7|nehalem)            echo -xtarget=nehalem     ;;
   377         kx                     westmere)                  echo -xtarget=westmere    ;;
   377         kx                     silvermont)                echo -xarch=sse4_2        ;;
   377         kx                     corei7-avx|sandybridge)    echo -xtarget=sandybridge ;;
   377         kx                     core-avx*|ivybridge|haswell|broadwell|skylake*|knl)
   377         kx                                                echo -xarch=avx           ;;
   377         kx                     amdfam10|barcelona)        echo -xtarget=barcelona   ;;
   377         kx                     btver1)                    echo -xarch=amdsse4a      ;;
   377         kx                     btver2|bdver*|znver*)      echo -xarch=avx           ;;
   377         kx                     athlon-4|athlon-[mx]p)     echo -xarch=ssea          ;;
   377         kx                     k8|opteron|athlon64|athlon-fx)
   377         kx                                                echo -xarch=sse2a         ;;
   377         kx                     athlon*)                   echo -xarch=pentium_proa  ;;
   377         kx                 esac
   377         kx                 ;;
   377         kx             -std=c99)             echo -xc99              ;;
   377         kx             -fomit-frame-pointer) echo -xregs=frameptr    ;;
   377         kx             -fPIC)                echo -KPIC -xcode=pic32 ;;
   377         kx             -W*,*)                echo $flag              ;;
   377         kx             -f*-*|-W*|-mimpure-text)                      ;;
   377         kx             -shared)              echo -G                 ;;
   377         kx             *)                    echo $flag              ;;
   377         kx         esac
   377         kx     done
   377         kx }
   377         kx 
   377         kx probe_cc(){
   377         kx     pfx=$1
   377         kx     _cc=$2
   377         kx     first=$3
   377         kx 
   377         kx     unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
   377         kx     unset _ld_o _ldflags _ld_lib _ld_path
   377         kx     unset _depflags _DEPCMD _DEPFLAGS
   377         kx     _flags_filter=echo
   377         kx 
   377         kx     if $_cc --version 2>&1 | grep -q '^GNU assembler'; then
   377         kx         true # no-op to avoid reading stdin in following checks
   377         kx     elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
   377         kx         _type=llvm_gcc
   377         kx         gcc_extra_ver=$(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)')
   377         kx         _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver"
   377         kx         _depflags='-MMD -MF $(@:.o=.d) -MT $@'
   377         kx         _cflags_speed='-O3'
   377         kx         _cflags_size='-Os'
   377         kx     elif $_cc -v 2>&1 | grep -qi ^gcc; then
   377         kx         _type=gcc
   377         kx         gcc_version=$($_cc --version | head -n1)
   377         kx         gcc_basever=$($_cc -dumpversion)
   377         kx         gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
   377         kx         gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
   377         kx         _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
   377         kx         case $gcc_basever in
   377         kx             2) ;;
   377         kx             2.*) ;;
   377         kx             *) _depflags='-MMD -MF $(@:.o=.d) -MT $@' ;;
   377         kx         esac
   377         kx         if [ "$first" = true ]; then
   377         kx             case $gcc_basever in
   377         kx                 4.2*)
   377         kx                 warn "gcc 4.2 is outdated and may miscompile FFmpeg. Please use a newer compiler." ;;
   377         kx             esac
   377         kx         fi
   377         kx         _cflags_speed='-O3'
   377         kx         _cflags_size='-Os'
   377         kx     elif $_cc --version 2>/dev/null | grep -q ^icc; then
   377         kx         _type=icc
   377         kx         _ident=$($_cc --version | head -n1)
   377         kx         _depflags='-MMD'
   377         kx         _cflags_speed='-O3'
   377         kx         _cflags_size='-Os'
   377         kx         _cflags_noopt='-O1'
   377         kx         _flags_filter=icc_flags
   377         kx     elif $_cc -v 2>&1 | grep -q xlc; then
   377         kx         _type=xlc
   377         kx         _ident=$($_cc -qversion 2>/dev/null | head -n1)
   377         kx         _cflags_speed='-O5'
   377         kx         _cflags_size='-O5 -qcompact'
   377         kx     elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then
   377         kx         test -d "$sysroot" || die "No valid sysroot specified."
   377         kx         _type=armcc
   377         kx         _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //')
   377         kx         armcc_conf="$PWD/armcc.conf"
   377         kx         $_cc --arm_linux_configure                 \
   377         kx              --arm_linux_config_file="$armcc_conf" \
   377         kx              --configure_sysroot="$sysroot"        \
   377         kx              --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
   377         kx              die "Error creating armcc configuration file."
   377         kx         $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
   377         kx         _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
   377         kx         as_default="${cross_prefix}gcc"
   377         kx         _depflags='-MMD'
   377         kx         _cflags_speed='-O3'
   377         kx         _cflags_size='-Os'
   377         kx     elif $_cc -v 2>&1 | grep -q clang && ! $_cc -? > /dev/null 2>&1; then
   377         kx         _type=clang
   377         kx         _ident=$($_cc --version 2>/dev/null | head -n1)
   377         kx         _depflags='-MMD -MF $(@:.o=.d) -MT $@'
   377         kx         _cflags_speed='-O3'
   377         kx         _cflags_size='-Oz'
   377         kx     elif $_cc -V 2>&1 | grep -q Sun; then
   377         kx         _type=suncc
   377         kx         _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
   377         kx         _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
   377         kx         _DEPFLAGS='-xM1 -xc99'
   377         kx         _ldflags='-std=c99'
   377         kx         _cflags_speed='-O5'
   377         kx         _cflags_size='-O5 -xspace'
   377         kx         _flags_filter=suncc_flags
   377         kx     elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
   377         kx         _type=pathscale
   377         kx         _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
   377         kx         _depflags='-MMD -MF $(@:.o=.d) -MT $@'
   377         kx         _cflags_speed='-O2'
   377         kx         _cflags_size='-Os'
   377         kx         _flags_filter='filter_out -Wdisabled-optimization'
   377         kx     elif $_cc -v 2>&1 | grep -q Open64; then
   377         kx         _type=open64
   377         kx         _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
   377         kx         _depflags='-MMD -MF $(@:.o=.d) -MT $@'
   377         kx         _cflags_speed='-O2'
   377         kx         _cflags_size='-Os'
   377         kx         _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
   377         kx     elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then
   377         kx         _type=armasm
   377         kx         _ident=$($_cc | head -n1)
   377         kx         # 4509: "This form of conditional instruction is deprecated"
   377         kx         _flags="-nologo -ignore 4509"
   377         kx         _flags_filter=armasm_flags
   377         kx     elif $_cc 2>&1 | grep -q Intel; then
   377         kx         _type=icl
   377         kx         _ident=$($_cc 2>&1 | head -n1)
   377         kx         _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@'
   377         kx         # Not only is O3 broken on 13.x+ but it is slower on all previous
   377         kx         # versions (tested) as well.
   377         kx         _cflags_speed="-O2"
   377         kx         _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff
   377         kx         if $_cc 2>&1 | grep -q Linker; then
   377         kx             _ld_o='-out:$@'
   377         kx         else
   377         kx             _ld_o='-Fe$@'
   377         kx         fi
   377         kx         _cc_o='-Fo$@'
   377         kx         _cc_e='-P'
   377         kx         _flags_filter=icl_flags
   377         kx         _ld_lib='lib%.a'
   377         kx         _ld_path='-libpath:'
   377         kx         # -Qdiag-error to make icl error when seeing certain unknown arguments
   377         kx         _flags='-nologo -Qdiag-error:4044,10157'
   377         kx         # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency
   377         kx         # with MSVC which enables it by default.
   377         kx         _cflags='-Qms0 -Qvec- -Qsimd- -GS -fp:precise'
   377         kx         disable stripping
   377         kx     elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then
   377         kx         # lld can emulate multiple different linkers; in ms link.exe mode,
   377         kx         # the -? parameter gives the help output which contains an identifyable
   377         kx         # string, while it gives an error in other modes.
   377         kx         _type=lld-link
   377         kx         # The link.exe mode doesn't have a switch for getting the version,
   377         kx         # but we can force it back to gnu mode and get the version from there.
   377         kx         _ident=$($_cc -flavor gnu --version 2>/dev/null)
   377         kx         _ld_o='-out:$@'
   377         kx         _flags_filter=msvc_flags
   377         kx         _ld_lib='lib%.a'
   377         kx         _ld_path='-libpath:'
   377         kx     elif $_cc -nologo- 2>&1 | grep -q Microsoft || { $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; }; then
   377         kx         _type=msvc
   377         kx         if $_cc -nologo- 2>&1 | grep -q Microsoft; then
   377         kx             _ident=$($_cc 2>&1 | head -n1 | tr -d '\r')
   377         kx         else
   377         kx             _ident=$($_cc --version 2>/dev/null | head -n1 | tr -d '\r')
   377         kx         fi
   377         kx         _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
   377         kx         _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
   377         kx         _cflags_speed="-O2"
   377         kx         _cflags_size="-O1"
   377         kx         _cflags_noopt="-O1"
   377         kx         if $_cc -nologo- 2>&1 | grep -q Linker; then
   377         kx             _ld_o='-out:$@'
   377         kx         else
   377         kx             _ld_o='-Fe$@'
   377         kx         fi
   377         kx         _cc_o='-Fo$@'
   377         kx         _cc_e='-P -Fi$@'
   377         kx         _flags_filter=msvc_flags
   377         kx         _ld_lib='lib%.a'
   377         kx         _ld_path='-libpath:'
   377         kx         _flags='-nologo'
   377         kx         disable stripping
   377         kx     elif $_cc --version 2>/dev/null | grep -q ^cparser; then
   377         kx         _type=cparser
   377         kx         _ident=$($_cc --version | head -n1)
   377         kx         _depflags='-MMD'
   377         kx         _cflags_speed='-O4'
   377         kx         _cflags_size='-O2'
   377         kx         _flags_filter=cparser_flags
   377         kx     fi
   377         kx 
   377         kx     eval ${pfx}_type=\$_type
   377         kx     eval ${pfx}_ident=\$_ident
   377         kx }
   377         kx 
   377         kx set_ccvars(){
   377         kx     eval ${1}_C=\${_cc_c-\${${1}_C}}
   377         kx     eval ${1}_E=\${_cc_e-\${${1}_E}}
   377         kx     eval ${1}_O=\${_cc_o-\${${1}_O}}
   377         kx 
   377         kx     if [ -n "$_depflags" ]; then
   377         kx         eval ${1}_DEPFLAGS=\$_depflags
   377         kx     else
   377         kx         eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
   377         kx         eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
   377         kx         eval DEP${1}FLAGS=\$_flags
   377         kx     fi
   377         kx }
   377         kx 
   377         kx probe_cc cc "$cc" "true"
   377         kx cflags_filter=$_flags_filter
   377         kx cflags_speed=$_cflags_speed
   377         kx cflags_size=$_cflags_size
   377         kx cflags_noopt=$_cflags_noopt
   377         kx add_cflags $_flags $_cflags
   377         kx cc_ldflags=$_ldflags
   377         kx set_ccvars CC
   377         kx set_ccvars CXX
   377         kx 
   377         kx probe_cc hostcc "$host_cc"
   377         kx host_cflags_filter=$_flags_filter
   377         kx host_cflags_speed=$_cflags_speed
   377         kx add_host_cflags  $_flags $_cflags
   377         kx set_ccvars HOSTCC
   377         kx 
   377         kx test -n "$cc_type" && enable $cc_type ||
   377         kx     warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
   377         kx 
   377         kx : ${as_default:=$cc}
   377         kx : ${objcc_default:=$cc}
   377         kx : ${dep_cc_default:=$cc}
   377         kx : ${ld_default:=$cc}
   377         kx : ${host_ld_default:=$host_cc}
   377         kx set_default ar as objcc dep_cc ld ln_s host_ld windres
   377         kx 
   377         kx probe_cc as "$as"
   377         kx asflags_filter=$_flags_filter
   377         kx add_asflags $_flags $_cflags
   377         kx set_ccvars AS
   377         kx 
   377         kx probe_cc objcc "$objcc"
   377         kx objcflags_filter=$_flags_filter
   377         kx add_objcflags $_flags $_cflags
   377         kx set_ccvars OBJC
   377         kx 
   377         kx probe_cc ld "$ld"
   377         kx ldflags_filter=$_flags_filter
   377         kx add_ldflags $_flags $_ldflags
   377         kx test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
   377         kx LD_O=${_ld_o-$LD_O}
   377         kx LD_LIB=${_ld_lib-$LD_LIB}
   377         kx LD_PATH=${_ld_path-$LD_PATH}
   377         kx 
   377         kx probe_cc hostld "$host_ld"
   377         kx host_ldflags_filter=$_flags_filter
   377         kx add_host_ldflags $_flags $_ldflags
   377         kx HOSTLD_O=${_ld_o-$HOSTLD_O}
   377         kx 
   377         kx if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
   377         kx     probe_cc depcc "$dep_cc"
   377         kx     CCDEP=${_DEPCMD:-$DEPCMD}
   377         kx     CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
   377         kx     DEPCCFLAGS=$_flags
   377         kx fi
   377         kx 
   377         kx if $ar 2>&1 | grep -q Microsoft; then
   377         kx     arflags="-nologo"
   377         kx     ar_o='-out:$@'
   377         kx elif $ar 2>&1 | grep -q "\[D\] "; then
   377         kx     arflags="rcD"
   377         kx     ar_o='$@'
   377         kx else
   377         kx     arflags="rc"
   377         kx     ar_o='$@'
   377         kx fi
   377         kx 
   377         kx add_cflags $extra_cflags
   377         kx add_cxxflags $extra_cxxflags
   377         kx add_objcflags $extra_objcflags
   377         kx add_asflags $extra_cflags
   377         kx 
   377         kx if test -n "$sysroot"; then
   377         kx     case "$cc_type" in
   377         kx         gcc|llvm_gcc|clang)
   377         kx             add_cppflags --sysroot="$sysroot"
   377         kx             add_ldflags --sysroot="$sysroot"
   377         kx         ;;
   377         kx     esac
   377         kx fi
   377         kx 
   377         kx if test "$cpu" = host; then
   377         kx     enabled cross_compile &&
   377         kx         warn "--cpu=host makes no sense when cross-compiling."
   377         kx 
   377         kx     case "$cc_type" in
   377         kx         gcc|llvm_gcc)
   377         kx             check_native(){
   377         kx                 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
   377         kx                 sed -n "/cc1.*$1=/{
   377         kx                             s/.*$1=\\([^ ]*\\).*/\\1/
   377         kx                             p
   377         kx                             q
   377         kx                         }" $TMPE
   377         kx             }
   377         kx             cpu=$(check_native -march || check_native -mcpu)
   377         kx         ;;
   377         kx         clang)
   377         kx             check_native(){
   377         kx                 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
   377         kx                 sed -n "/cc1.*-target-cpu /{
   377         kx                             s/.*-target-cpu \\([^ ]*\\).*/\\1/
   377         kx                             p
   377         kx                             q
   377         kx                         }" $TMPE
   377         kx             }
   377         kx             cpu=$(check_native -march)
   377         kx         ;;
   377         kx     esac
   377         kx 
   377         kx     test "${cpu:-host}" = host &&
   377         kx         die "--cpu=host not supported with compiler $cc"
   377         kx fi
   377         kx 
   377         kx # Deal with common $arch aliases
   377         kx case "$arch" in
   377         kx     aarch64|arm64)
   377         kx         arch="aarch64"
   377         kx     ;;
   377         kx     arm*|iPad*|iPhone*)
   377         kx         arch="arm"
   377         kx     ;;
   377         kx     mips*|IP*)
   377         kx         case "$arch" in
   377         kx         *el)
   377         kx             add_cppflags -EL
   377         kx             add_ldflags -EL
   377         kx         ;;
   377         kx         *eb)
   377         kx             add_cppflags -EB
   377         kx             add_ldflags -EB
   377         kx         ;;
   377         kx         esac
   377         kx         arch="mips"
   377         kx     ;;
   377         kx     parisc*|hppa*)
   377         kx         arch="parisc"
   377         kx     ;;
   377         kx     "Power Macintosh"|ppc*|powerpc*)
   377         kx         arch="ppc"
   377         kx     ;;
   377         kx     s390|s390x)
   377         kx         arch="s390"
   377         kx     ;;
   377         kx     sh4|sh)
   377         kx         arch="sh4"
   377         kx     ;;
   377         kx     sun4*|sparc*)
   377         kx         arch="sparc"
   377         kx     ;;
   377         kx     tilegx|tile-gx)
   377         kx         arch="tilegx"
   377         kx     ;;
   377         kx     i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
   377         kx         arch="x86"
   377         kx     ;;
   377         kx esac
   377         kx 
   377         kx is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
   377         kx enable $arch
   377         kx 
   377         kx # Add processor-specific flags
   377         kx if enabled aarch64; then
   377         kx 
   377         kx     case $cpu in
   377         kx         armv*)
   377         kx             cpuflags="-march=$cpu"
   377         kx         ;;
   377         kx         *)
   377         kx             cpuflags="-mcpu=$cpu"
   377         kx         ;;
   377         kx     esac
   377         kx 
   377         kx elif enabled alpha; then
   377         kx 
   377         kx     cpuflags="-mcpu=$cpu"
   377         kx 
   377         kx elif enabled arm; then
   377         kx 
   377         kx     check_arm_arch() {
   377         kx         test_cpp_condition stddef.h \
   377         kx             "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
   377         kx             $cpuflags
   377         kx     }
   377         kx 
   377         kx     probe_arm_arch() {
   377         kx         if   check_arm_arch 4;        then echo armv4
   377         kx         elif check_arm_arch 4T;       then echo armv4t
   377         kx         elif check_arm_arch 5;        then echo armv5
   377         kx         elif check_arm_arch 5E;       then echo armv5e
   377         kx         elif check_arm_arch 5T;       then echo armv5t
   377         kx         elif check_arm_arch 5TE;      then echo armv5te
   377         kx         elif check_arm_arch 5TEJ;     then echo armv5te
   377         kx         elif check_arm_arch 6;        then echo armv6
   377         kx         elif check_arm_arch 6J;       then echo armv6j
   377         kx         elif check_arm_arch 6K;       then echo armv6k
   377         kx         elif check_arm_arch 6Z;       then echo armv6z
   377         kx         elif check_arm_arch 6KZ;      then echo armv6zk
   377         kx         elif check_arm_arch 6ZK;      then echo armv6zk
   377         kx         elif check_arm_arch 6T2;      then echo armv6t2
   377         kx         elif check_arm_arch 7;        then echo armv7
   377         kx         elif check_arm_arch 7A  7_A;  then echo armv7-a
   377         kx         elif check_arm_arch 7S;       then echo armv7-a
   377         kx         elif check_arm_arch 7R  7_R;  then echo armv7-r
   377         kx         elif check_arm_arch 7M  7_M;  then echo armv7-m
   377         kx         elif check_arm_arch 7EM 7E_M; then echo armv7-m
   377         kx         elif check_arm_arch 8A  8_A;  then echo armv8-a
   377         kx         fi
   377         kx     }
   377         kx 
   377         kx     [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
   377         kx 
   377         kx     case $cpu in
   377         kx         armv*)
   377         kx             cpuflags="-march=$cpu"
   377         kx             subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
   377         kx         ;;
   377         kx         *)
   377         kx             cpuflags="-mcpu=$cpu"
   377         kx             case $cpu in
   377         kx                 cortex-a*)                               subarch=armv7a  ;;
   377         kx                 cortex-r*)                               subarch=armv7r  ;;
   377         kx                 cortex-m*)                 enable thumb; subarch=armv7m  ;;
   377         kx                 arm11*)                                  subarch=armv6   ;;
   377         kx                 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
   377         kx                 armv4*|arm7*|arm9[24]*)                  subarch=armv4   ;;
   377         kx                 *)                             subarch=$(probe_arm_arch) ;;
   377         kx             esac
   377         kx         ;;
   377         kx     esac
   377         kx 
   377         kx     case "$subarch" in
   377         kx         armv5t*)    enable fast_clz                ;;
   377         kx         armv[6-8]*)
   377         kx             enable fast_clz
   377         kx             disabled fast_unaligned || enable fast_unaligned
   377         kx             ;;
   377         kx     esac
   377         kx 
   377         kx elif enabled avr32; then
   377         kx 
   377         kx     case $cpu in
   377         kx         ap7[02]0[0-2])
   377         kx             subarch="avr32_ap"
   377         kx             cpuflags="-mpart=$cpu"
   377         kx         ;;
   377         kx         ap)
   377         kx             subarch="avr32_ap"
   377         kx             cpuflags="-march=$cpu"
   377         kx         ;;
   377         kx         uc3[ab]*)
   377         kx             subarch="avr32_uc"
   377         kx             cpuflags="-mcpu=$cpu"
   377         kx         ;;
   377         kx         uc)
   377         kx             subarch="avr32_uc"
   377         kx             cpuflags="-march=$cpu"
   377         kx         ;;
   377         kx     esac
   377         kx 
   377         kx elif enabled bfin; then
   377         kx 
   377         kx     cpuflags="-mcpu=$cpu"
   377         kx 
   377         kx elif enabled mips; then
   377         kx 
   377         kx     if [ "$cpu" != "generic" ]; then
   377         kx         disable mips32r2
   377         kx         disable mips32r5
   377         kx         disable mips64r2
   377         kx         disable mips32r6
   377         kx         disable mips64r6
   377         kx         disable loongson2
   377         kx         disable loongson3
   377         kx         disable mipsdsp
   377         kx         disable mipsdspr2
   377         kx 
   377         kx         cpuflags="-march=$cpu"
   377         kx 
   377         kx         case $cpu in
   377         kx             # General ISA levels
   377         kx             mips1|mips3)
   377         kx             ;;
   377         kx             mips32r2)
   377         kx                 enable mips32r2
   377         kx             ;;
   377         kx             mips32r5)
   377         kx                 enable mips32r2
   377         kx                 enable mips32r5
   377         kx             ;;
   377         kx             mips64r2|mips64r5)
   377         kx                 enable mips64r2
   377         kx                 enable loongson3
   377         kx             ;;
   377         kx             # Cores from MIPS(MTI)
   377         kx             24kc)
   377         kx                 disable mipsfpu
   377         kx                 enable mips32r2
   377         kx             ;;
   377         kx             24kf*|24kec|34kc|74Kc|1004kc)
   377         kx                 enable mips32r2
   377         kx             ;;
   377         kx             24kef*|34kf*|1004kf*)
   377         kx                 enable mipsdsp
   377         kx                 enable mips32r2
   377         kx             ;;
   377         kx             p5600)
   377         kx                 enable mips32r2
   377         kx                 enable mips32r5
   377         kx                 check_cflags "-mtune=p5600" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops"
   377         kx             ;;
   377         kx             i6400)
   377         kx                 enable mips64r6
   377         kx                 check_cflags "-mtune=i6400 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
   377         kx             ;;
   377         kx             p6600)
   377         kx                 enable mips64r6
   377         kx                 check_cflags "-mtune=p6600 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
   377         kx             ;;
   377         kx             # Cores from Loongson
   377         kx             loongson2e|loongson2f|loongson3*)
   377         kx                 enable local_aligned
   377         kx                 enable simd_align_16
   377         kx                 enable fast_64bit
   377         kx                 enable fast_clz
   377         kx                 enable fast_cmov
   377         kx                 enable fast_unaligned
   377         kx                 disable aligned_stack
   377         kx                 # When gcc version less than 5.3.0, add -fno-expensive-optimizations flag.
   377         kx                 if test "$cc_type" = "gcc"; then
   377         kx                     case $gcc_basever in
   377         kx                         2|2.*|3.*|4.*|5.0|5.1|5.2)
   377         kx                         expensive_optimization_flag="-fno-expensive-optimizations"
   377         kx                         ;;
   377         kx                         *)
   377         kx                         expensive_optimization_flag=""
   377         kx                         ;;
   377         kx                     esac
   377         kx                 fi
   377         kx 
   377         kx                 case $cpu in
   377         kx                     loongson3*)
   377         kx                         enable loongson3
   377         kx                         cpuflags="-march=loongson3a -mhard-float $expensive_optimization_flag"
   377         kx                     ;;
   377         kx                     loongson2e)
   377         kx                         enable loongson2
   377         kx                         cpuflags="-march=loongson2e -mhard-float $expensive_optimization_flag"
   377         kx                     ;;
   377         kx                     loongson2f)
   377         kx                         enable loongson2
   377         kx                         cpuflags="-march=loongson2f -mhard-float $expensive_optimization_flag"
   377         kx                     ;;
   377         kx                 esac
   377         kx             ;;
   377         kx             *)
   377         kx                 warn "unknown MIPS CPU"
   377         kx             ;;
   377         kx         esac
   377         kx 
   377         kx     else
   377         kx         disable mipsdsp
   377         kx         disable mipsdspr2
   377         kx         # Disable DSP stuff for generic CPU, it can't be detected at runtime.
   377         kx         warn 'generic cpu selected'
   377         kx     fi
   377         kx 
   377         kx elif enabled ppc; then
   377         kx 
   377         kx     disable ldbrx
   377         kx 
   377         kx     case $(tolower $cpu) in
   377         kx         601|ppc601|powerpc601)
   377         kx             cpuflags="-mcpu=601"
   377         kx             disable altivec
   377         kx         ;;
   377         kx         603*|ppc603*|powerpc603*)
   377         kx             cpuflags="-mcpu=603"
   377         kx             disable altivec
   377         kx         ;;
   377         kx         604*|ppc604*|powerpc604*)
   377         kx             cpuflags="-mcpu=604"
   377         kx             disable altivec
   377         kx         ;;
   377         kx         g3|75*|ppc75*|powerpc75*)
   377         kx             cpuflags="-mcpu=750"
   377         kx             disable altivec
   377         kx         ;;
   377         kx         g4|745*|ppc745*|powerpc745*)
   377         kx             cpuflags="-mcpu=7450"
   377         kx             disable vsx
   377         kx         ;;
   377         kx         74*|ppc74*|powerpc74*)
   377         kx             cpuflags="-mcpu=7400"
   377         kx             disable vsx
   377         kx         ;;
   377         kx         g5|970|ppc970|powerpc970)
   377         kx             cpuflags="-mcpu=970"
   377         kx             disable vsx
   377         kx         ;;
   377         kx         power[3-6]*)
   377         kx             cpuflags="-mcpu=$cpu"
   377         kx             disable vsx
   377         kx         ;;
   377         kx         power[7-8]*)
   377         kx             cpuflags="-mcpu=$cpu"
   377         kx         ;;
   377         kx         cell)
   377         kx             cpuflags="-mcpu=cell"
   377         kx             enable ldbrx
   377         kx             disable vsx
   377         kx         ;;
   377         kx         e500mc)
   377         kx             cpuflags="-mcpu=e500mc"
   377         kx             disable altivec
   377         kx         ;;
   377         kx         e500v2)
   377         kx             cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
   377         kx             disable altivec
   377         kx             disable dcbzl
   377         kx         ;;
   377         kx         e500)
   377         kx             cpuflags="-mcpu=8540 -mhard-float"
   377         kx             disable altivec
   377         kx             disable dcbzl
   377         kx         ;;
   377         kx     esac
   377         kx 
   377         kx elif enabled sparc; then
   377         kx 
   377         kx     case $cpu in
   377         kx         cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
   377         kx             cpuflags="-mcpu=$cpu"
   377         kx         ;;
   377         kx         ultrasparc*|niagara[234])
   377         kx             cpuflags="-mcpu=$cpu"
   377         kx         ;;
   377         kx     esac
   377         kx 
   377         kx elif enabled x86; then
   377         kx 
   377         kx     case $cpu in
   377         kx         i[345]86|pentium)
   377         kx             cpuflags="-march=$cpu"
   377         kx             disable i686
   377         kx             disable mmx
   377         kx         ;;
   377         kx         # targets that do NOT support nopl and conditional mov (cmov)
   377         kx         pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
   377         kx             cpuflags="-march=$cpu"
   377         kx             disable i686
   377         kx         ;;
   377         kx         # targets that do support nopl and conditional mov (cmov)
   377         kx         i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx\
   377         kx         |core*|atom|bonnell|nehalem|westmere|silvermont|sandybridge|ivybridge|haswell|broadwell|skylake*|knl\
   377         kx         |amdfam10|barcelona|b[dt]ver*|znver*)
   377         kx             cpuflags="-march=$cpu"
   377         kx             enable i686
   377         kx             enable fast_cmov
   377         kx         ;;
   377         kx         # targets that do support conditional mov but on which it's slow
   377         kx         pentium4|pentium4m|prescott|nocona)
   377         kx             cpuflags="-march=$cpu"
   377         kx             enable i686
   377         kx             disable fast_cmov
   377         kx         ;;
   377         kx     esac
   377         kx 
   377         kx fi
   377         kx 
   377         kx if [ "$cpu" != generic ]; then
   377         kx     add_cflags  $cpuflags
   377         kx     add_asflags $cpuflags
   377         kx     test "$cc_type" = "$ld_type" && add_ldflags $cpuflags
   377         kx fi
   377         kx 
   377         kx # compiler sanity check
   377         kx test_exec <<EOF
   377         kx int main(void){ return 0; }
   377         kx EOF
   377         kx if test "$?" != 0; then
   377         kx     echo "$cc is unable to create an executable file."
   377         kx     if test -z "$cross_prefix" && ! enabled cross_compile ; then
   377         kx         echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
   377         kx         echo "Only do this if you know what cross compiling means."
   377         kx     fi
   377         kx     die "C compiler test failed."
   377         kx fi
   377         kx 
   377         kx add_cppflags -D_ISOC99_SOURCE
   377         kx add_cxxflags -D__STDC_CONSTANT_MACROS
   377         kx check_cxxflags -std=c++11 || check_cxxflags -std=c++0x
   377         kx 
   377         kx # some compilers silently accept -std=c11, so we also need to check that the
   377         kx # version macro is defined properly
   377         kx test_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" &&
   377         kx     add_cflags -std=c11 ||
   377         kx     check_cflags -std=c99
   377         kx 
   377         kx check_cppflags -D_FILE_OFFSET_BITS=64
   377         kx check_cppflags -D_LARGEFILE_SOURCE
   377         kx 
   377         kx add_host_cppflags -D_ISOC99_SOURCE
   377         kx check_host_cflags -std=c99
   377         kx check_host_cflags -Wall
   377         kx check_host_cflags $host_cflags_speed
   377         kx 
   377         kx check_64bit(){
   377         kx     arch32=$1
   377         kx     arch64=$2
   377         kx     expr=${3:-'sizeof(void *) > 4'}
   377         kx     test_code cc "" "int test[2*($expr) - 1]" &&
   377         kx         subarch=$arch64 || subarch=$arch32
   377         kx     enable $subarch
   377         kx }
   377         kx 
   377         kx case "$arch" in
   377         kx     aarch64|alpha|ia64)
   377         kx         enabled shared && enable_weak pic
   377         kx     ;;
   377         kx     mips)
   377         kx         check_64bit mips mips64 '_MIPS_SIM > 1'
   377         kx         enabled shared && enable_weak pic
   377         kx     ;;
   377         kx     parisc)
   377         kx         check_64bit parisc parisc64
   377         kx         enabled shared && enable_weak pic
   377         kx     ;;
   377         kx     ppc)
   377         kx         check_64bit ppc ppc64
   377         kx         enabled shared && enable_weak pic
   377         kx     ;;
   377         kx     s390)
   377         kx         check_64bit s390 s390x
   377         kx         enabled shared && enable_weak pic
   377         kx     ;;
   377         kx     sparc)
   377         kx         check_64bit sparc sparc64
   377         kx         enabled shared && enable_weak pic
   377         kx     ;;
   377         kx     x86)
   377         kx         check_64bit x86_32 x86_64
   377         kx         # Treat x32 as x64 for now. Note it also needs pic if shared
   377         kx         test "$subarch" = "x86_32" && test_cpp_condition stddef.h 'defined(__x86_64__)' &&
   377         kx             subarch=x86_64 && enable x86_64 && disable x86_32
   377         kx         if enabled x86_64; then
   377         kx             enabled shared && enable_weak pic
   377         kx             objformat=elf64
   377         kx         fi
   377         kx     ;;
   377         kx esac
   377         kx 
   377         kx # OS specific
   377         kx case $target_os in
   377         kx     aix)
   377         kx         SHFLAGS=-shared
   377         kx         add_cppflags '-I\$(SRC_PATH)/compat/aix'
   377         kx         enabled shared && add_ldflags -Wl,-brtl
   377         kx         arflags='-Xany -r -c'
   377         kx         striptype=""
   377         kx         ;;
   377         kx     android)
   377         kx         disable symver
   377         kx         enable section_data_rel_ro
   377         kx         add_cflags -fPIE
   377         kx         add_ldexeflags -fPIE -pie
   377         kx         SLIB_INSTALL_NAME='$(SLIBNAME)'
   377         kx         SLIB_INSTALL_LINKS=
   377         kx         SHFLAGS='-shared -Wl,-soname,$(SLIBNAME)'
   377         kx         ;;
   377         kx     haiku)
   377         kx         prefix_default="/boot/common"
   377         kx         network_extralibs="-lnetwork"
   377         kx         host_extralibs=
   377         kx         ;;
   377         kx     sunos)
   377         kx         SHFLAGS='-shared -Wl,-h,$$(@F)'
   377         kx         enabled x86 && append SHFLAGS -mimpure-text
   377         kx         network_extralibs="-lsocket -lnsl"
   377         kx         add_cppflags -D__EXTENSIONS__
   377         kx         # When using suncc to build, the Solaris linker will mark
   377         kx         # an executable with each instruction set encountered by
   377         kx         # the Solaris assembler.  As our libraries contain their own
   377         kx         # guards for processor-specific code, instead suppress
   377         kx         # generation of the HWCAPS ELF section on Solaris x86 only.
   377         kx         enabled_all suncc x86 &&
   377         kx             echo "hwcap_1 = OVERRIDE;" > mapfile &&
   377         kx             add_ldflags -Wl,-M,mapfile
   377         kx         nm_default='nm -P -g'
   377         kx         striptype=""
   377         kx         version_script='-M'
   377         kx         VERSION_SCRIPT_POSTPROCESS_CMD='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
   377         kx         ;;
   377         kx     netbsd)
   377         kx         disable symver
   377         kx         oss_indev_extralibs="-lossaudio"
   377         kx         oss_outdev_extralibs="-lossaudio"
   377         kx         enabled gcc || check_ldflags -Wl,-zmuldefs
   377         kx         ;;
   377         kx     openbsd|bitrig)
   377         kx         disable symver
   377         kx         enable section_data_rel_ro
   377         kx         striptype=""
   377         kx         SHFLAGS='-shared'
   377         kx         SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
   377         kx         SLIB_INSTALL_LINKS=
   377         kx         oss_indev_extralibs="-lossaudio"
   377         kx         oss_outdev_extralibs="-lossaudio"
   377         kx         ;;
   377         kx     dragonfly)
   377         kx         disable symver
   377         kx         ;;
   377         kx     freebsd)
   377         kx         ;;
   377         kx     bsd/os)
   377         kx         add_extralibs -lpoll -lgnugetopt
   377         kx         strip="strip -d"
   377         kx         ;;
   377         kx     darwin)
   377         kx         enabled ppc && add_asflags -force_cpusubtype_ALL
   377         kx         install_name_dir_default='$(SHLIBDIR)'
   377         kx         SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
   377         kx         enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
   377         kx         strip="${strip} -x"
   377         kx         add_ldflags -Wl,-dynamic,-search_paths_first
   377         kx         check_cflags -Werror=partial-availability
   377         kx         SLIBSUF=".dylib"
   377         kx         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
   377         kx         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
   377         kx         enabled x86_64 && objformat="macho64" || objformat="macho32"
   377         kx         enabled_any pic shared x86_64 ||
   377         kx             { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
   377         kx         check_headers dispatch/dispatch.h &&
   377         kx             add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore'
   377         kx         if test -n "$sysroot"; then
   377         kx             is_in -isysroot $cc $CPPFLAGS $CFLAGS || check_cppflags -isysroot $sysroot
   377         kx             is_in -isysroot $ld $LDFLAGS          || check_ldflags  -isysroot $sysroot
   377         kx         fi
   377         kx         version_script='-exported_symbols_list'
   377         kx         VERSION_SCRIPT_POSTPROCESS_CMD='tr " " "\n" | sed -n /global:/,/local:/p | grep ";" | tr ";" "\n" | sed -E "s/(.+)/_\1/g" | sed -E "s/(.+[^*])$$$$/\1*/"'
   377         kx         # Workaround for Xcode 11 -fstack-check bug
   377         kx         if enabled clang; then
   377         kx             clang_version=$($cc -dumpversion)
   377         kx             test ${clang_version%%.*} -eq 11 && add_cflags -fno-stack-check
   377         kx         fi
   377         kx         ;;
   377         kx     msys*)
   377         kx         die "Native MSYS builds are discouraged, please use the MINGW environment."
   377         kx         ;;
   377         kx     mingw32*|mingw64*)
   377         kx         target_os=mingw32
   377         kx         LIBTARGET=i386
   377         kx         if enabled x86_64; then
   377         kx             LIBTARGET="i386:x86-64"
   377         kx         elif enabled arm; then
   377         kx             LIBTARGET="arm"
   377         kx         elif enabled aarch64; then
   377         kx             LIBTARGET="arm64"
   377         kx         fi
   377         kx         if enabled shared; then
   377         kx             # Cannot build both shared and static libs when using dllimport.
   377         kx             disable static
   377         kx         fi
   377         kx         enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres
   377         kx         enabled x86_32 && check_ldflags -Wl,--large-address-aware
   377         kx         shlibdir_default="$bindir_default"
   377         kx         SLIBPREF=""
   377         kx         SLIBSUF=".dll"
   377         kx         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
   377         kx         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
   377         kx         if test_cmd lib.exe -list; then
   377         kx             SLIB_EXTRA_CMD=-'lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
   377         kx             if enabled x86_64; then
   377         kx                 LIBTARGET=x64
   377         kx             fi
   377         kx         else
   377         kx             SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
   377         kx         fi
   377         kx         SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
   377         kx         SLIB_INSTALL_LINKS=
   377         kx         SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
   377         kx         SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
   377         kx         SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" AR="$(AR_CMD)" NM="$(NM_CMD)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
   377         kx         SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--disable-auto-image-base $$(@:$(SLIBSUF)=.def)'
   377         kx         enabled x86_64 && objformat="win64" || objformat="win32"
   377         kx         dlltool="${cross_prefix}dlltool"
   377         kx         ranlib=:
   377         kx         enable dos_paths
   377         kx         check_ldflags -Wl,--nxcompat,--dynamicbase
   377         kx         # Lets work around some stupidity in binutils.
   377         kx         # ld will strip relocations from executables even though we need them
   377         kx         # for dynamicbase (ASLR).  Using -pie does retain the reloc section
   377         kx         # however ld then forgets what the entry point should be (oops) so we
   377         kx         # have to manually (re)set it.
   377         kx         if enabled x86_32; then
   377         kx             disabled debug && add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup
   377         kx         elif enabled x86_64; then
   377         kx             disabled debug && add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup
   377         kx             check_ldflags -Wl,--high-entropy-va # binutils 2.25
   377         kx             # Set image base >4GB for extra entropy with HEASLR
   377         kx             add_ldexeflags -Wl,--image-base,0x140000000
   377         kx             append SHFLAGS -Wl,--image-base,0x180000000
   377         kx         fi
   377         kx         ;;
   377         kx     win32|win64)
   377         kx         disable symver
   377         kx         if enabled shared; then
   377         kx             # Link to the import library instead of the normal static library
   377         kx             # for shared libs.
   377         kx             LD_LIB='%.lib'
   377         kx             # Cannot build both shared and static libs with MSVC or icl.
   377         kx             disable static
   377         kx         fi
   377         kx         enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
   377         kx         shlibdir_default="$bindir_default"
   377         kx         SLIBPREF=""
   377         kx         SLIBSUF=".dll"
   377         kx         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
   377         kx         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
   377         kx         SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
   377         kx         SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
   377         kx         SLIB_INSTALL_LINKS=
   377         kx         SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
   377         kx         SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
   377         kx         SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
   377         kx         enabled x86_64 && objformat="win64" || objformat="win32"
   377         kx         ranlib=:
   377         kx         enable dos_paths
   377         kx         ;;
   377         kx     cygwin*)
   377         kx         target_os=cygwin
   377         kx         shlibdir_default="$bindir_default"
   377         kx         SLIBPREF="cyg"
   377         kx         SLIBSUF=".dll"
   377         kx         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
   377         kx         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
   377         kx         SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
   377         kx         SLIB_INSTALL_LINKS=
   377         kx         SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
   377         kx         SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
   377         kx         enabled x86_64 && objformat="win64" || objformat="win32"
   377         kx         enable dos_paths
   377         kx         enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres
   377         kx         add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
   377         kx         ;;
   377         kx     *-dos|freedos|opendos)
   377         kx         network_extralibs="-lsocket"
   377         kx         objformat="coff"
   377         kx         enable dos_paths
   377         kx         ;;
   377         kx     linux)
   377         kx         enable section_data_rel_ro
   377         kx         enabled_any arm aarch64 && enable_weak linux_perf
   377         kx         ;;
   377         kx     irix*)
   377         kx         target_os=irix
   377         kx         ranlib="echo ignoring ranlib"
   377         kx         ;;
   377         kx     os/2*)
   377         kx         strip="lxlite -CS"
   377         kx         striptype=""
   377         kx         objformat="aout"
   377         kx         add_cppflags -D_GNU_SOURCE
   377         kx         add_ldflags -Zomf -Zbin-files -Zargs-wild -Zhigh-mem -Zmap
   377         kx         SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
   377         kx         LIBSUF="_s.a"
   377         kx         SLIBPREF=""
   377         kx         SLIBSUF=".dll"
   377         kx         SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
   377         kx         SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(FULLNAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
   377         kx         SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(FULLNAME).def; \
   377         kx             echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(FULLNAME).def; \
   377         kx             echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(FULLNAME).def; \
   377         kx             echo EXPORTS >> $(SUBDIR)$(FULLNAME).def; \
   377         kx             emxexp $(OBJS) >> $(SUBDIR)$(FULLNAME).def'
   377         kx         SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.a $(SUBDIR)$(FULLNAME).def; \
   377         kx             emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.lib $(SUBDIR)$(FULLNAME).def;'
   377         kx         SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
   377         kx         SLIB_INSTALL_LINKS=
   377         kx         SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(FULLNAME)_dll.a $(LIBPREF)$(FULLNAME)_dll.lib'
   377         kx         enable dos_paths
   377         kx         enable_weak os2threads
   377         kx         ;;
   377         kx     gnu/kfreebsd)
   377         kx         add_cppflags -D_BSD_SOURCE
   377         kx         ;;
   377         kx     gnu)
   377         kx         ;;
   377         kx     qnx)
   377         kx         add_cppflags -D_QNX_SOURCE
   377         kx         network_extralibs="-lsocket"
   377         kx         ;;
   377         kx     symbian)
   377         kx         SLIBSUF=".dll"
   377         kx         enable dos_paths
   377         kx         add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
   377         kx         add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
   377         kx         add_ldflags -Wl,--target1-abs,--no-undefined \
   377         kx                     -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
   377         kx                     -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
   377         kx         add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
   377         kx                       -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
   377         kx                       -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
   377         kx         ;;
   377         kx     minix)
   377         kx         ;;
   377         kx     none)
   377         kx         ;;
   377         kx     *)
   377         kx         die "Unknown OS '$target_os'."
   377         kx         ;;
   377         kx esac
   377         kx 
   377         kx # test if creating links works
   377         kx link_dest=$(mktemp -u $TMPDIR/dest_XXXXXXXX)
   377         kx link_name=$(mktemp -u $TMPDIR/name_XXXXXXXX)
   377         kx mkdir "$link_dest"
   377         kx $ln_s "$link_dest" "$link_name"
   377         kx touch "$link_dest/test_file"
   377         kx if [ "$source_path" != "." ] && [ "$source_path" != "src" ] && ([ ! -d src ] || [ -L src ]) && [ -e "$link_name/test_file" ]; then
   377         kx     # create link to source path
   377         kx     [ -e src ] && rm src
   377         kx     $ln_s "$source_path" src
   377         kx     source_link=src
   377         kx else
   377         kx     # creating directory links doesn't work
   377         kx     # fall back to using the full source path
   377         kx     source_link="$source_path"
   377         kx fi
   377         kx # cleanup
   377         kx rm -r "$link_dest"
   377         kx rm -r "$link_name"
   377         kx 
   377         kx # determine libc flavour
   377         kx 
   377         kx probe_libc(){
   377         kx     pfx=$1
   377         kx     pfx_no_=${pfx%_}
   377         kx     # uclibc defines __GLIBC__, so it needs to be checked before glibc.
   377         kx     if test_${pfx}cpp_condition features.h "defined __UCLIBC__"; then
   377         kx         eval ${pfx}libc_type=uclibc
   377         kx         add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
   377         kx     elif test_${pfx}cpp_condition features.h "defined __GLIBC__"; then
   377         kx         eval ${pfx}libc_type=glibc
   377         kx         add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
   377         kx     # MinGW headers can be installed on Cygwin, so check for newlib first.
   377         kx     elif test_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
   377         kx         eval ${pfx}libc_type=newlib
   377         kx         add_${pfx}cppflags -U__STRICT_ANSI__ -D_XOPEN_SOURCE=600
   377         kx     # MinGW64 is backwards compatible with MinGW32, so check for it first.
   377         kx     elif test_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
   377         kx         eval ${pfx}libc_type=mingw64
   377         kx         if test_${pfx}cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then
   377         kx             add_compat msvcrt/snprintf.o
   377         kx             add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
   377         kx         fi
   377         kx         add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
   377         kx         eval test \$${pfx_no_}cc_type = "gcc" &&
   377         kx             add_${pfx}cppflags -D__printf__=__gnu_printf__
   377         kx         test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" &&
   377         kx             add_${pfx}cppflags -D_WIN32_WINNT=0x0600
   377         kx         add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
   377         kx     elif test_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION"  ||
   377         kx          test_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
   377         kx         eval ${pfx}libc_type=mingw32
   377         kx         test_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
   377         kx             (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
   377         kx             die "ERROR: MinGW32 runtime version must be >= 3.15."
   377         kx         add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
   377         kx         test_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700" &&
   377         kx             add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700
   377         kx         test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" &&
   377         kx             add_${pfx}cppflags -D_WIN32_WINNT=0x0600
   377         kx         eval test \$${pfx_no_}cc_type = "gcc" &&
   377         kx             add_${pfx}cppflags -D__printf__=__gnu_printf__
   377         kx         add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
   377         kx     elif test_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
   377         kx         eval ${pfx}libc_type=msvcrt
   377         kx         if test_${pfx}cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14"; then
   377         kx             if [ "$pfx" = host_ ]; then
   377         kx                 add_host_cppflags -Dsnprintf=_snprintf
   377         kx             else
   377         kx                 add_compat strtod.o strtod=avpriv_strtod
   377         kx                 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf   \
   377         kx                                              _snprintf=avpriv_snprintf  \
   377         kx                                              vsnprintf=avpriv_vsnprintf
   377         kx             fi
   377         kx         fi
   377         kx         add_${pfx}cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS
   377         kx         # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
   377         kx         # 0x601 by default unless something else is set by the user.
   377         kx         # This can easily lead to us detecting functions only present
   377         kx         # in such new versions and producing binaries requiring windows 7.0.
   377         kx         # Therefore explicitly set the default to Vista unless the user has
   377         kx         # set something else on the command line.
   377         kx         # Don't do this if WINAPI_FAMILY is set and is set to a non-desktop
   377         kx         # family. For these cases, configure is free to use any functions
   377         kx         # found in the SDK headers by default. (Alternatively, we could force
   377         kx         # _WIN32_WINNT to 0x0602 in that case.)
   377         kx         test_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
   377         kx             { test_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0600; }
   377         kx #ifdef WINAPI_FAMILY
   377         kx #include <winapifamily.h>
   377         kx #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   377         kx #error not desktop
   377         kx #endif
   377         kx #endif
   377         kx EOF
   377         kx         if [ "$pfx" = "" ]; then
   377         kx             check_func strtoll || add_cflags -Dstrtoll=_strtoi64
   377         kx             check_func strtoull || add_cflags -Dstrtoull=_strtoui64
   377         kx         fi
   377         kx     elif test_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
   377         kx         eval ${pfx}libc_type=klibc
   377         kx     elif test_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
   377         kx         eval ${pfx}libc_type=bionic
   377         kx     elif test_${pfx}cpp_condition sys/brand.h "defined LABELED_BRAND_NAME"; then
   377         kx         eval ${pfx}libc_type=solaris
   377         kx         add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
   377         kx     elif test_${pfx}cpp_condition sys/version.h "defined __DJGPP__"; then
   377         kx         eval ${pfx}libc_type=djgpp
   377         kx         add_cppflags -U__STRICT_ANSI__
   377         kx         add_cflags "-include $source_path/compat/djgpp/math.h"
   377         kx         add_compat djgpp/math.o
   377         kx     fi
   377         kx     test_${pfx}cc <<EOF
   377         kx #include <time.h>
   377         kx void *v = localtime_r;
   377         kx EOF
   377         kx test "$?" != 0 && test_${pfx}cc -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 <<EOF && add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
   377         kx #include <time.h>
   377         kx void *v = localtime_r;
   377         kx EOF
   377         kx 
   377         kx     eval test -n "\${${pfx}libc_type}" && enable ${pfx}libc_${libc_type}
   377         kx }
   377         kx 
   377         kx probe_libc
   377         kx probe_libc host_
   377         kx 
   377         kx # hacks for compiler/libc/os combinations
   377         kx 
   377         kx case $libc_type in
   377         kx     bionic)
   377         kx         add_compat strtod.o strtod=avpriv_strtod
   377         kx         ;;
   377         kx esac
   377         kx 
   377         kx check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
   377         kx     add_cppflags '-I\$(SRC_PATH)/compat/float'
   377         kx 
   377         kx test_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
   377         kx 
   377         kx set_default libdir
   377         kx : ${shlibdir_default:="$libdir"}
   377         kx : ${pkgconfigdir_default:="$libdir/pkgconfig"}
   377         kx 
   377         kx set_default $PATHS_LIST
   377         kx set_default nm
   377         kx 
   377         kx disabled optimizations || enabled ossfuzz || check_cflags -fomit-frame-pointer
   377         kx 
   377         kx enable_weak_pic() {
   377         kx     disabled pic && return
   377         kx     enable pic
   377         kx     add_cppflags -DPIC
   377         kx     case "$target_os" in
   377         kx     mingw*|cygwin*|win*)
   377         kx         ;;
   377         kx     *)
   377         kx         add_cflags -fPIC
   377         kx         add_asflags -fPIC
   377         kx         ;;
   377         kx     esac
   377         kx }
   377         kx 
   377         kx enabled pic && enable_weak_pic
   377         kx 
   377         kx test_cc <<EOF || die "Symbol mangling check failed."
   377         kx int ff_extern;
   377         kx EOF
   377         kx sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
   377         kx extern_prefix=${sym%%ff_extern*}
   377         kx 
   377         kx ! disabled inline_asm && check_inline_asm inline_asm '"" ::'
   377         kx 
   377         kx for restrict_keyword in restrict __restrict__ __restrict ""; do
   377         kx     test_code cc "" "char * $restrict_keyword p" && break
   377         kx done
   377         kx 
   377         kx check_cc pragma_deprecated "" '_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")'
   377         kx 
   377         kx # The global variable ensures the bits appear unchanged in the object file.
   377         kx test_cc <<EOF || die "endian test failed"
   377         kx unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
   377         kx EOF
   377         kx od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
   377         kx 
   377         kx check_cc const_nan math.h "struct { double d; } static const bar[] = { { NAN } }"
   377         kx 
   377         kx if ! enabled ppc64 || enabled bigendian; then
   377         kx     disable vsx
   377         kx fi
   377         kx 
   377         kx check_gas() {
   377         kx     log "check_gas using '$as' as AS"
   377         kx     # :vararg is used on aarch64, arm and ppc altivec
   377         kx     check_as vararg "
   377         kx .macro m n, y:vararg=0
   377         kx \n: .int \y
   377         kx .endm
   377         kx m x" || return 1
   377         kx     # .altmacro is only used in arm asm
   377         kx     ! enabled arm || check_as gnu_as ".altmacro"
   377         kx }
   377         kx 
   377         kx if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then
   377         kx     nogas=:
   377         kx     enabled_any arm aarch64 && nogas=die
   377         kx     enabled_all ppc altivec && [ $target_os_default != aix ] && nogas=warn
   377         kx     as_noop=-v
   377         kx 
   377         kx     case $as_type in
   377         kx         arm*) gaspp_as_type=armasm; as_noop=-h ;;
   377         kx         gcc)  gaspp_as_type=gas ;;
   377         kx         *)    gaspp_as_type=$as_type ;;
   377         kx     esac
   377         kx 
   377         kx     [ $target_os = "darwin" ] && gaspp_as_type="apple-$gaspp_as_type"
   377         kx 
   377         kx     test "${as#*gas-preprocessor.pl}" != "$as" ||
   377         kx     test_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- ${as:=$cc} $as_noop &&
   377         kx         gas="${gas:=gas-preprocessor.pl} -arch $arch -as-type $gaspp_as_type -- ${as:=$cc}"
   377         kx 
   377         kx     if ! check_gas ; then
   377         kx         as=${gas:=$as}
   377         kx         check_gas || \
   377         kx             $nogas "GNU assembler not found, install/update gas-preprocessor"
   377         kx     fi
   377         kx 
   377         kx     check_as as_func ".func test
   377         kx                       .endfunc"
   377         kx fi
   377         kx 
   377         kx check_inline_asm inline_asm_labels '"1:\n"'
   377         kx 
   377         kx check_inline_asm inline_asm_nonlocal_labels '"Label:\n"'
   377         kx 
   377         kx if enabled aarch64; then
   377         kx     enabled armv8 && check_insn armv8 'prfm   pldl1strm, [x0]'
   377         kx     # internal assembler in clang 3.3 does not support this instruction
   377         kx     enabled neon && check_insn neon 'ext   v0.8B, v0.8B, v1.8B, #1'
   377         kx     enabled vfp  && check_insn vfp  'fmadd d0,    d0,    d1,    d2'
   377         kx 
   377         kx     map 'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM
   377         kx 
   377         kx elif enabled alpha; then
   377         kx 
   377         kx     check_cflags -mieee
   377         kx 
   377         kx elif enabled arm; then
   377         kx 
   377         kx     enabled msvc && check_cpp_condition thumb stddef.h "defined _M_ARMT"
   377         kx     test_cpp_condition stddef.h "defined __thumb__" && test_cc <<EOF && enable_weak thumb
   377         kx float func(float a, float b){ return a+b; }
   377         kx EOF
   377         kx     enabled thumb && check_cflags -mthumb || check_cflags -marm
   377         kx 
   377         kx     if check_cpp_condition vfp_args stddef.h "defined __ARM_PCS_VFP"; then
   377         kx         :
   377         kx     elif check_cpp_condition vfp_args stddef.h "defined _M_ARM_FP && _M_ARM_FP >= 30"; then
   377         kx         :
   377         kx     elif ! test_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ]; then
   377         kx         case "${cross_prefix:-$cc}" in
   377         kx             *hardfloat*) enable vfp_args; fpabi=vfp ;;
   377         kx             *) check_ld "cc" vfp_args <<EOF && fpabi=vfp || fpabi=soft ;;
   377         kx __asm__ (".eabi_attribute 28, 1");
   377         kx int main(void) { return 0; }
   377         kx EOF
   377         kx         esac
   377         kx         warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
   377         kx     fi
   377         kx 
   377         kx     enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
   377         kx     enabled armv6   && check_insn armv6   'sadd16 r0, r0, r0'
   377         kx     enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
   377         kx     enabled neon    && check_insn neon    'vadd.i16 q0, q0, q0'
   377         kx     enabled vfp     && check_insn vfp     'fadds s0, s0, s0'
   377         kx     enabled vfpv3   && check_insn vfpv3   'vmov.f32 s0, #1.0'
   377         kx     enabled setend  && check_insn setend  'setend be'
   377         kx 
   377         kx     [ $target_os = linux ] || [ $target_os = android ] ||
   377         kx         map 'enabled_any ${v}_external ${v}_inline || disable $v' \
   377         kx             $ARCH_EXT_LIST_ARM
   377         kx 
   377         kx     check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
   377         kx 
   377         kx     check_as as_arch_directive ".arch armv7-a"
   377         kx     check_as as_dn_directive   "ra .dn d0.i16"
   377         kx     check_as as_fpu_directive  ".fpu neon"
   377         kx 
   377         kx     # llvm's integrated assembler supports .object_arch from llvm 3.5
   377         kx     [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] &&
   377         kx         check_as as_object_arch ".object_arch armv4"
   377         kx 
   377         kx     # MS armasm fails to assemble our PIC constructs
   377         kx     [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
   377         kx 
   377         kx elif enabled mips; then
   377         kx 
   377         kx     # Check toolchain ISA level
   377         kx     if enabled mips64; then
   377         kx         enabled mips64r6 && check_inline_asm mips64r6 '"dlsa $0, $0, $0, 1"' &&
   377         kx             disable mips64r2
   377         kx 
   377         kx         enabled mips64r2 && check_inline_asm mips64r2 '"dext $0, $0, 0, 1"'
   377         kx 
   377         kx         disable mips32r6 && disable mips32r5 && disable mips32r2
   377         kx     else
   377         kx         enabled mips32r6 && check_inline_asm mips32r6 '"aui $0, $0, 0"' &&
   377         kx             disable mips32r5 && disable mips32r2
   377         kx 
   377         kx         enabled mips32r5 && check_inline_asm mips32r5 '"eretnc"'
   377         kx         enabled mips32r2 && check_inline_asm mips32r2 '"ext $0, $0, 0, 1"'
   377         kx 
   377         kx         disable mips64r6 && disable mips64r5 && disable mips64r2
   377         kx     fi
   377         kx 
   377         kx     enabled mipsfpu && check_inline_asm mipsfpu '"cvt.d.l $f0, $f2"'
   377         kx     enabled mipsfpu && (enabled mips32r5 || enabled mips32r6 || enabled mips64r6) && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f1"' '-mfp64'
   377         kx 
   377         kx     enabled mipsdsp && check_inline_asm_flags mipsdsp '"addu.qb $t0, $t1, $t2"' '-mdsp'
   377         kx     enabled mipsdspr2 && check_inline_asm_flags mipsdspr2 '"absq_s.qb $t0, $t1"' '-mdspr2'
   377         kx 
   377         kx     # MSA and MSA2 can be detected at runtime so we supply extra flags here
   377         kx     enabled mipsfpu && enabled msa && check_inline_asm msa '"addvi.b $w0, $w1, 1"' '-mmsa' && append MSAFLAGS '-mmsa'
   377         kx     enabled msa && enabled msa2 && check_inline_asm msa2 '"nxbits.any.b $w0, $w0"' '-mmsa2' && append MSAFLAGS '-mmsa2'
   377         kx 
   377         kx     # loongson2 have no switch cflag so we can only probe toolchain ability
   377         kx     enabled loongson2 && check_inline_asm loongson2 '"dmult.g $8, $9, $10"' && disable loongson3
   377         kx 
   377         kx     # loongson3 is paired with MMI
   377         kx     enabled loongson3 && check_inline_asm loongson3 '"gsldxc1 $f0, 0($2, $3)"' '-mloongson-ext' && append MMIFLAGS '-mloongson-ext'
   377         kx 
   377         kx     # MMI can be detected at runtime too
   377         kx     enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"' '-mloongson-mmi' && append MMIFLAGS '-mloongson-mmi'
   377         kx 
   377         kx     if enabled bigendian && enabled msa; then
   377         kx         disable msa
   377         kx     fi
   377         kx 
   377         kx elif enabled parisc; then
   377         kx 
   377         kx     if enabled gcc; then
   377         kx         case $($cc -dumpversion) in
   377         kx             4.[3-9].*) check_cflags -fno-optimize-sibling-calls ;;
   377         kx         esac
   377         kx     fi
   377         kx 
   377         kx elif enabled ppc; then
   377         kx 
   377         kx     enable local_aligned
   377         kx 
   377         kx     check_inline_asm dcbzl     '"dcbzl 0, %0" :: "r"(0)'
   377         kx     check_inline_asm ibm_asm   '"add 0, 0, 0"'
   377         kx     check_inline_asm ppc4xx    '"maclhw r10, r11, r12"'
   377         kx     check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
   377         kx 
   377         kx     if enabled altivec; then
   377         kx         check_cflags -maltivec -mabi=altivec
   377         kx 
   377         kx         # check if our compiler supports Motorola AltiVec C API
   377         kx         check_cc altivec altivec.h "vector signed int v1 = (vector signed int) { 0 };
   377         kx                                     vector signed int v2 = (vector signed int) { 1 };
   377         kx                                     v1 = vec_add(v1, v2);"
   377         kx 
   377         kx         enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
   377         kx     fi
   377         kx 
   377         kx     if enabled vsx; then
   377         kx         check_cflags -mvsx &&
   377         kx         check_cc vsx altivec.h "int v[4] = { 0 };
   377         kx                                 vector signed int v1 = vec_vsx_ld(0, v);"
   377         kx     fi
   377         kx 
   377         kx     if enabled power8; then
   377         kx         check_cpp_condition power8 "altivec.h" "defined(_ARCH_PWR8)"
   377         kx     fi
   377         kx 
   377         kx elif enabled x86; then
   377         kx 
   377         kx     check_builtin rdtsc    intrin.h   "__rdtsc()"
   377         kx     check_builtin mm_empty mmintrin.h "_mm_empty()"
   377         kx 
   377         kx     enable local_aligned
   377         kx 
   377         kx     # check whether EBP is available on x86
   377         kx     # As 'i' is stored on the stack, this program will crash
   377         kx     # if the base pointer is used to access it because the
   377         kx     # base pointer is cleared in the inline assembly code.
   377         kx     check_exec_crash <<EOF && enable ebp_available
   377         kx volatile int i=0;
   377         kx __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
   377         kx return i;
   377         kx EOF
   377         kx 
   377         kx     # check whether EBX is available on x86
   377         kx     check_inline_asm ebx_available '""::"b"(0)' &&
   377         kx         check_inline_asm ebx_available '"":::"%ebx"'
   377         kx 
   377         kx     # check whether xmm clobbers are supported
   377         kx     check_inline_asm xmm_clobbers '"":::"%xmm0"'
   377         kx 
   377         kx     check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test, %eax"' ||
   377         kx         check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test(%rip), %eax"'
   377         kx 
   377         kx     # check whether binutils is new enough to compile SSSE3/MMXEXT
   377         kx     enabled ssse3  && check_inline_asm ssse3_inline  '"pabsw %xmm0, %xmm0"'
   377         kx     enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
   377         kx 
   377         kx     probe_x86asm(){
   377         kx         x86asmexe_probe=$1
   377         kx         if test_cmd $x86asmexe_probe -v; then
   377         kx             x86asmexe=$x86asmexe_probe
   377         kx             x86asm_type=nasm
   377         kx             x86asm_debug="-g -F dwarf"
   377         kx             X86ASMDEP=
   377         kx             X86ASM_DEPFLAGS='-MD $(@:.o=.d)'
   377         kx         elif test_cmd $x86asmexe_probe --version; then
   377         kx             x86asmexe=$x86asmexe_probe
   377         kx             x86asm_type=yasm
   377         kx             x86asm_debug="-g dwarf2"
   377         kx             X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)'
   377         kx             X86ASM_DEPFLAGS=
   377         kx         fi
   377         kx         check_x86asm x86asm "movbe ecx, [5]"
   377         kx     }
   377         kx 
   377         kx     if ! disabled_any asm mmx x86asm; then
   377         kx         disable x86asm
   377         kx         for program in $x86asmexe nasm yasm; do
   377         kx             probe_x86asm $program && break
   377         kx         done
   377         kx         disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build."
   377         kx         X86ASMFLAGS="-f $objformat"
   377         kx         enabled pic               && append X86ASMFLAGS "-DPIC"
   377         kx         test -n "$extern_prefix"  && append X86ASMFLAGS "-DPREFIX"
   377         kx         case "$objformat" in
   377         kx             elf*) enabled debug && append X86ASMFLAGS $x86asm_debug ;;
   377         kx         esac
   377         kx 
   377         kx         enabled avx512 && check_x86asm avx512_external "vmovdqa32 [eax]{k1}{z}, zmm0"
   377         kx         enabled avx2   && check_x86asm avx2_external   "vextracti128 xmm0, ymm0, 0"
   377         kx         enabled xop    && check_x86asm xop_external    "vpmacsdd xmm0, xmm1, xmm2, xmm3"
   377         kx         enabled fma4   && check_x86asm fma4_external   "vfmaddps ymm0, ymm1, ymm2, ymm3"
   377         kx         check_x86asm cpunop          "CPU amdnop"
   377         kx     fi
   377         kx 
   377         kx     case "$cpu" in
   377         kx         athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
   377         kx             disable fast_clz
   377         kx         ;;
   377         kx     esac
   377         kx 
   377         kx fi
   377         kx 
   377         kx check_cc intrinsics_neon arm_neon.h "int16x8_t test = vdupq_n_s16(0)"
   377         kx 
   377         kx check_ldflags -Wl,--as-needed
   377         kx check_ldflags -Wl,-z,noexecstack
   377         kx 
   377         kx if ! disabled network; then
   377         kx     check_func getaddrinfo $network_extralibs
   377         kx     check_func inet_aton $network_extralibs
   377         kx 
   377         kx     check_type netdb.h "struct addrinfo"
   377         kx     check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
   377         kx     check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
   377         kx     check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
   377         kx     check_type poll.h "struct pollfd"
   377         kx     check_type netinet/sctp.h "struct sctp_event_subscribe"
   377         kx     check_struct "sys/socket.h" "struct msghdr" msg_flags
   377         kx     check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
   377         kx     check_type netinet/in.h "struct sockaddr_in6"
   377         kx     check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
   377         kx     check_type "sys/types.h sys/socket.h" socklen_t
   377         kx 
   377         kx     # Prefer arpa/inet.h over winsock2
   377         kx     if check_headers arpa/inet.h ; then
   377         kx         check_func closesocket
   377         kx     elif check_headers winsock2.h ; then
   377         kx         check_func_headers winsock2.h closesocket -lws2 &&
   377         kx             network_extralibs="-lws2" ||
   377         kx         { check_func_headers winsock2.h closesocket -lws2_32 &&
   377         kx             network_extralibs="-lws2_32"; } || disable winsock2_h network
   377         kx         check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
   377         kx 
   377         kx         check_type ws2tcpip.h socklen_t
   377         kx         check_type ws2tcpip.h "struct addrinfo"
   377         kx         check_type ws2tcpip.h "struct group_source_req"
   377         kx         check_type ws2tcpip.h "struct ip_mreq_source"
   377         kx         check_type ws2tcpip.h "struct ipv6_mreq"
   377         kx         check_type winsock2.h "struct pollfd"
   377         kx         check_struct winsock2.h "struct sockaddr" sa_len
   377         kx         check_type ws2tcpip.h "struct sockaddr_in6"
   377         kx         check_type ws2tcpip.h "struct sockaddr_storage"
   377         kx     else
   377         kx         disable network
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
   377         kx check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
   377         kx check_builtin MemoryBarrier windows.h "MemoryBarrier()"
   377         kx check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
   377         kx check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)"
   377         kx check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)"
   377         kx check_builtin x264_csp_bgr "stdint.h x264.h" "X264_CSP_BGR"
   377         kx 
   377         kx case "$custom_allocator" in
   377         kx     jemalloc)
   377         kx         # jemalloc by default does not use a prefix
   377         kx         require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc
   377         kx     ;;
   377         kx     tcmalloc)
   377         kx         require_pkg_config libtcmalloc libtcmalloc gperftools/tcmalloc.h tc_malloc
   377         kx         malloc_prefix=tc_
   377         kx     ;;
   377         kx esac
   377         kx 
   377         kx check_func_headers malloc.h _aligned_malloc     && enable aligned_malloc
   377         kx check_func  ${malloc_prefix}memalign            && enable memalign
   377         kx check_func  ${malloc_prefix}posix_memalign      && enable posix_memalign
   377         kx 
   377         kx check_func  access
   377         kx check_func_headers stdlib.h arc4random
   377         kx check_lib   clock_gettime time.h clock_gettime || check_lib clock_gettime time.h clock_gettime -lrt
   377         kx check_func  fcntl
   377         kx check_func  fork
   377         kx check_func  gethrtime
   377         kx check_func  getopt
   377         kx check_func  getrusage
   377         kx check_func  gettimeofday
   377         kx check_func  isatty
   377         kx check_func  mkstemp
   377         kx check_func  mmap
   377         kx check_func  mprotect
   377         kx # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
   377         kx check_func_headers time.h nanosleep || check_lib nanosleep time.h nanosleep -lrt
   377         kx check_func  sched_getaffinity
   377         kx check_func  setrlimit
   377         kx check_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE
   377         kx check_func  strerror_r
   377         kx check_func  sysconf
   377         kx check_func  sysctl
   377         kx check_func  usleep
   377         kx 
   377         kx check_func_headers conio.h kbhit
   377         kx check_func_headers io.h setmode
   377         kx check_func_headers lzo/lzo1x.h lzo1x_999_compress
   377         kx check_func_headers mach/mach_time.h mach_absolute_time
   377         kx check_func_headers stdlib.h getenv
   377         kx check_func_headers sys/stat.h lstat
   377         kx 
   377         kx check_func_headers windows.h GetModuleHandle
   377         kx check_func_headers windows.h GetProcessAffinityMask
   377         kx check_func_headers windows.h GetProcessTimes
   377         kx check_func_headers windows.h GetStdHandle
   377         kx check_func_headers windows.h GetSystemTimeAsFileTime
   377         kx check_func_headers windows.h LoadLibrary
   377         kx check_func_headers windows.h MapViewOfFile
   377         kx check_func_headers windows.h PeekNamedPipe
   377         kx check_func_headers windows.h SetConsoleTextAttribute
   377         kx check_func_headers windows.h SetConsoleCtrlHandler
   377         kx check_func_headers windows.h SetDllDirectory
   377         kx check_func_headers windows.h Sleep
   377         kx check_func_headers windows.h VirtualAlloc
   377         kx check_func_headers glob.h glob
   377         kx enabled xlib &&
   377         kx     check_lib xlib "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext
   377         kx 
   377         kx check_headers direct.h
   377         kx check_headers dirent.h
   377         kx check_headers dxgidebug.h
   377         kx check_headers dxva.h
   377         kx check_headers dxva2api.h -D_WIN32_WINNT=0x0600
   377         kx check_headers io.h
   377         kx enabled libdrm &&
   377         kx     check_headers linux/dma-buf.h
   377         kx 
   377         kx check_headers linux/perf_event.h
   377         kx check_headers libcrystalhd/libcrystalhd_if.h
   377         kx check_headers malloc.h
   377         kx check_headers mftransform.h
   377         kx check_headers net/udplite.h
   377         kx check_headers poll.h
   377         kx check_headers sys/param.h
   377         kx check_headers sys/resource.h
   377         kx check_headers sys/select.h
   377         kx check_headers sys/time.h
   377         kx check_headers sys/un.h
   377         kx check_headers termios.h
   377         kx check_headers unistd.h
   377         kx check_headers valgrind/valgrind.h
   377         kx check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepareToEncodeFrames -framework VideoToolbox
   377         kx check_headers windows.h
   377         kx check_headers X11/extensions/XvMClib.h
   377         kx check_headers asm/types.h
   377         kx 
   377         kx # it seems there are versions of clang in some distros that try to use the
   377         kx # gcc headers, which explodes for stdatomic
   377         kx # so we also check that atomics actually work here
   377         kx #
   377         kx # some configurations also require linking to libatomic, so try
   377         kx # both with -latomic and without
   377         kx for LATOMIC in "-latomic" ""; do
   377         kx     check_builtin stdatomic stdatomic.h                                                 \
   377         kx         "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0); foo += bar"  \
   377         kx         $LATOMIC && eval stdatomic_extralibs="\$LATOMIC" && break
   377         kx done
   377         kx 
   377         kx check_lib advapi32 "windows.h"            RegCloseKey          -ladvapi32
   377         kx check_lib bcrypt   "windows.h bcrypt.h"   BCryptGenRandom      -lbcrypt &&
   377         kx     check_cpp_condition bcrypt bcrypt.h "defined BCRYPT_RNG_ALGORITHM"
   377         kx check_lib ole32    "windows.h"            CoTaskMemFree        -lole32
   377         kx check_lib shell32  "windows.h shellapi.h" CommandLineToArgvW   -lshell32
   377         kx check_lib psapi    "windows.h psapi.h"    GetProcessMemoryInfo -lpsapi
   377         kx 
   377         kx check_lib android android/native_window.h ANativeWindow_acquire -landroid
   377         kx check_lib mediandk "stdint.h media/NdkImage.h" AImage_delete -lmediandk
   377         kx check_lib camera2ndk "stdbool.h stdint.h camera/NdkCameraManager.h" ACameraManager_create -lcamera2ndk
   377         kx 
   377         kx enabled appkit       && check_apple_framework AppKit
   377         kx enabled audiotoolbox && check_apple_framework AudioToolbox
   377         kx enabled avfoundation && check_apple_framework AVFoundation
   377         kx enabled coreimage    && check_apple_framework CoreImage
   377         kx enabled videotoolbox && check_apple_framework VideoToolbox
   377         kx 
   377         kx check_apple_framework CoreFoundation
   377         kx check_apple_framework CoreMedia
   377         kx check_apple_framework CoreVideo
   377         kx check_apple_framework CoreAudio
   377         kx 
   377         kx enabled avfoundation && {
   377         kx     disable coregraphics applicationservices
   377         kx     check_lib coregraphics        CoreGraphics/CoreGraphics.h               CGGetActiveDisplayList "-framework CoreGraphics" ||
   377         kx     check_lib applicationservices ApplicationServices/ApplicationServices.h CGGetActiveDisplayList "-framework ApplicationServices"; }
   377         kx 
   377         kx enabled videotoolbox && {
   377         kx     check_lib coreservices CoreServices/CoreServices.h UTGetOSTypeFromString "-framework CoreServices"
   377         kx     check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVC "-framework CoreMedia"
   377         kx     check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVCWithAlpha "-framework CoreMedia"
   377         kx     check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange "-framework CoreVideo"
   377         kx     check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ "-framework CoreVideo"
   377         kx     check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_ITU_R_2100_HLG "-framework CoreVideo"
   377         kx     check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_Linear "-framework CoreVideo"
   377         kx }
   377         kx 
   377         kx check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
   377         kx 
   377         kx check_type "windows.h dxva.h" "DXVA_PicParams_AV1" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
   377         kx check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
   377         kx check_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
   377         kx check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
   377         kx check_type "windows.h d3d11.h" "ID3D11VideoContext"
   377         kx check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
   377         kx check_func_headers mfapi.h MFCreateAlignedMemoryBuffer -lmfplat
   377         kx 
   377         kx check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
   377         kx check_type "vdpau/vdpau.h" "VdpPictureInfoVP9"
   377         kx 
   377         kx if [ -z "$nvccflags" ]; then
   377         kx     nvccflags=$nvccflags_default
   377         kx fi
   377         kx 
   377         kx if enabled x86_64 || enabled ppc64 || enabled aarch64; then
   377         kx     nvccflags="$nvccflags -m64"
   377         kx else
   377         kx     nvccflags="$nvccflags -m32"
   377         kx fi
   377         kx 
   377         kx if enabled cuda_nvcc; then
   377         kx     nvccflags="$nvccflags -ptx"
   377         kx else
   377         kx     nvccflags="$nvccflags -S -nocudalib -nocudainc --cuda-device-only -Wno-c++11-narrowing -include ${source_link}/compat/cuda/cuda_runtime.h"
   377         kx     check_nvcc cuda_llvm
   377         kx fi
   377         kx 
   377         kx if ! disabled ffnvcodec; then
   377         kx     ffnv_hdr_list="ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h"
   377         kx     check_pkg_config ffnvcodec "ffnvcodec >= 9.1.23.1" "$ffnv_hdr_list" "" || \
   377         kx       check_pkg_config ffnvcodec "ffnvcodec >= 9.0.18.3 ffnvcodec < 9.1" "$ffnv_hdr_list" "" || \
   377         kx       check_pkg_config ffnvcodec "ffnvcodec >= 8.2.15.10 ffnvcodec < 8.3" "$ffnv_hdr_list" "" || \
   377         kx       check_pkg_config ffnvcodec "ffnvcodec >= 8.1.24.11 ffnvcodec < 8.2" "$ffnv_hdr_list" ""
   377         kx fi
   377         kx 
   377         kx check_cpp_condition winrt windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)"
   377         kx 
   377         kx if ! disabled w32threads && ! enabled pthreads; then
   377         kx     check_func_headers "windows.h process.h" _beginthreadex &&
   377         kx         check_type "windows.h" CONDITION_VARIABLE &&
   377         kx         check_type "windows.h" INIT_ONCE &&
   377         kx         enable w32threads || disable w32threads
   377         kx     if ! enabled w32threads && enabled winrt; then
   377         kx         check_func_headers "windows.h" CreateThread &&
   377         kx             enable w32threads || disable w32threads
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx # check for some common methods of building with pthread support
   377         kx # do this before the optional library checks as some of them require pthreads
   377         kx if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
   377         kx     if check_lib pthreads pthread.h pthread_join   -pthread &&
   377         kx        check_lib pthreads pthread.h pthread_create -pthread; then
   377         kx         add_cflags -pthread
   377         kx     elif check_lib pthreads pthread.h pthread_join   -pthreads &&
   377         kx          check_lib pthreads pthread.h pthread_create -pthreads; then
   377         kx         add_cflags -pthreads
   377         kx     elif check_lib pthreads pthread.h pthread_join   -ldl -pthread &&
   377         kx          check_lib pthreads pthread.h pthread_create -ldl -pthread; then
   377         kx         add_cflags -ldl -pthread
   377         kx     elif check_lib pthreads pthread.h pthread_join   -lpthreadGC2 &&
   377         kx          check_lib pthreads pthread.h pthread_create -lpthreadGC2; then
   377         kx         :
   377         kx     elif check_lib pthreads pthread.h pthread_join   -lpthread &&
   377         kx          check_lib pthreads pthread.h pthread_create -lpthread; then
   377         kx         :
   377         kx     elif check_func pthread_join && check_func pthread_create; then
   377         kx         enable pthreads
   377         kx     fi
   377         kx     check_cc pthreads "pthread.h" "static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER"
   377         kx 
   377         kx     if enabled pthreads; then
   377         kx         check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" $pthreads_extralibs
   377         kx         check_func pthread_cancel $pthreads_extralibs
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx enabled  zlib && { check_pkg_config zlib zlib "zlib.h" zlibVersion ||
   377         kx                    check_lib zlib   zlib.h      zlibVersion    -lz; }
   377         kx enabled bzlib && check_lib bzlib bzlib.h BZ2_bzlibVersion    -lbz2
   377         kx enabled  lzma && check_lib lzma   lzma.h lzma_version_number -llzma
   377         kx 
   377         kx # On some systems dynamic loading requires no extra linker flags
   377         kx check_lib libdl dlfcn.h "dlopen dlsym" || check_lib libdl dlfcn.h "dlopen dlsym" -ldl
   377         kx 
   377         kx check_lib libm math.h sin -lm
   377         kx 
   377         kx atan2f_args=2
   377         kx copysign_args=2
   377         kx hypot_args=2
   377         kx ldexpf_args=2
   377         kx powf_args=2
   377         kx 
   377         kx for func in $MATH_FUNCS; do
   377         kx     eval check_mathfunc $func \${${func}_args:-1} $libm_extralibs
   377         kx done
   377         kx 
   377         kx for func in $COMPLEX_FUNCS; do
   377         kx     eval check_complexfunc $func \${${func}_args:-1}
   377         kx done
   377         kx 
   377         kx # these are off by default, so fail if requested and not available
   377         kx enabled avisynth          && require_headers "avisynth/avisynth_c.h"
   377         kx enabled cuda_nvcc         && { check_nvcc cuda_nvcc || die "ERROR: failed checking for nvcc."; }
   377         kx enabled chromaprint       && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint
   377         kx enabled decklink          && { require_headers DeckLinkAPI.h &&
   377         kx                                { test_cpp_condition DeckLinkAPIVersion.h "BLACKMAGIC_DECKLINK_API_VERSION >= 0x0a0a0000" || die "ERROR: Decklink API version must be >= 10.10"; } }
   377         kx enabled frei0r            && require_headers "frei0r.h dlfcn.h"
   377         kx enabled gmp               && require gmp gmp.h mpz_export -lgmp
   377         kx enabled gnutls            && require_pkg_config gnutls gnutls gnutls/gnutls.h gnutls_global_init
   377         kx enabled jni               && { [ $target_os = "android" ] && check_headers jni.h && enabled pthreads || die "ERROR: jni not found"; }
   377         kx enabled ladspa            && require_headers "ladspa.h dlfcn.h"
   377         kx enabled libaom            && require_pkg_config libaom "aom >= 1.0.0" aom/aom_codec.h aom_codec_version
   377         kx enabled libaribb24        && { check_pkg_config libaribb24 "aribb24 > 1.0.3" "aribb24/aribb24.h" arib_instance_new ||
   377         kx                                { enabled gpl && require_pkg_config libaribb24 aribb24 "aribb24/aribb24.h" arib_instance_new; } ||
   377         kx                                die "ERROR: libaribb24 requires version higher than 1.0.3 or --enable-gpl."; }
   377         kx enabled lv2               && require_pkg_config lv2 lilv-0 "lilv/lilv.h" lilv_world_new
   377         kx enabled libiec61883       && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
   377         kx enabled libass            && require_pkg_config libass libass ass/ass.h ass_library_init
   377         kx enabled libbluray         && require_pkg_config libbluray libbluray libbluray/bluray.h bd_open
   377         kx enabled libbs2b           && require_pkg_config libbs2b libbs2b bs2b.h bs2b_open
   377         kx enabled libcelt           && require libcelt celt/celt.h celt_decode -lcelt0 &&
   377         kx                              { check_lib libcelt celt/celt.h celt_decoder_create_custom -lcelt0 ||
   377         kx                                die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
   377         kx enabled libcaca           && require_pkg_config libcaca caca caca.h caca_create_canvas
   377         kx enabled libcodec2         && require libcodec2 codec2/codec2.h codec2_create -lcodec2
   377         kx enabled libdav1d          && require_pkg_config libdav1d "dav1d >= 0.5.0" "dav1d/dav1d.h" dav1d_version
   377         kx enabled libdavs2          && require_pkg_config libdavs2 "davs2 >= 1.6.0" davs2.h davs2_decoder_open
   377         kx enabled libdc1394         && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new
   377         kx enabled libdrm            && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion
   377         kx enabled libfdk_aac        && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
   377         kx                                { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
   377         kx                                  warn "using libfdk without pkg-config"; } }
   377         kx flite_extralibs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
   377         kx enabled libflite          && require libflite "flite/flite.h" flite_init $flite_extralibs
   377         kx enabled fontconfig        && enable libfontconfig
   377         kx enabled libfontconfig     && require_pkg_config libfontconfig fontconfig "fontconfig/fontconfig.h" FcInit
   377         kx enabled libfreetype       && require_pkg_config libfreetype freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
   377         kx enabled libfribidi        && require_pkg_config libfribidi fribidi fribidi.h fribidi_version_info
   377         kx enabled libglslang        && require_cpp libglslang glslang/SPIRV/GlslangToSpv.h "glslang::TIntermediate*" -lglslang -lMachineIndependent -lOSDependent -lHLSL -lOGLCompiler -lGenericCodeGen -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++
   377         kx enabled libgme            && { check_pkg_config libgme libgme gme/gme.h gme_new_emu ||
   377         kx                                require libgme gme/gme.h gme_new_emu -lgme -lstdc++; }
   377         kx enabled libgsm            && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
   377         kx                                    check_lib libgsm "${gsm_hdr}" gsm_create -lgsm && break;
   377         kx                                done || die "ERROR: libgsm not found"; }
   377         kx enabled libilbc           && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc $pthreads_extralibs
   377         kx enabled libklvanc         && require libklvanc libklvanc/vanc.h klvanc_context_create -lklvanc
   377         kx enabled libkvazaar        && require_pkg_config libkvazaar "kvazaar >= 0.8.1" kvazaar.h kvz_api_get
   377         kx enabled liblensfun        && require_pkg_config liblensfun lensfun lensfun.h lf_db_new
   377         kx # While it may appear that require is being used as a pkg-config
   377         kx # fallback for libmfx, it is actually being used to detect a different
   377         kx # installation route altogether.  If libmfx is installed via the Intel
   377         kx # Media SDK or Intel Media Server Studio, these don't come with
   377         kx # pkg-config support.  Instead, users should make sure that the build
   377         kx # can find the libraries and headers through other means.
   377         kx enabled libmfx            && { check_pkg_config libmfx libmfx "mfx/mfxvideo.h" MFXInit ||
   377         kx                                { require libmfx "mfx/mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } }
   377         kx if enabled libmfx; then
   377         kx    check_cc MFX_CODEC_VP9 "mfx/mfxvp9.h mfx/mfxstructures.h" "MFX_CODEC_VP9"
   377         kx fi
   377         kx 
   377         kx enabled libmodplug        && require_pkg_config libmodplug libmodplug libmodplug/modplug.h ModPlug_Load
   377         kx enabled libmp3lame        && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame $libm_extralibs
   377         kx enabled libmysofa         && { check_pkg_config libmysofa libmysofa mysofa.h mysofa_neighborhood_init_withstepdefine ||
   377         kx                                require libmysofa mysofa.h mysofa_neighborhood_init_withstepdefine -lmysofa $zlib_extralibs; }
   377         kx enabled libnpp            && { check_lib libnpp npp.h nppGetLibVersion -lnppig -lnppicc -lnppc -lnppidei ||
   377         kx                                check_lib libnpp npp.h nppGetLibVersion -lnppi -lnppc -lnppidei ||
   377         kx                                die "ERROR: libnpp not found"; }
   377         kx enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
   377         kx enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
   377         kx enabled libopencv         && { check_headers opencv2/core/core_c.h &&
   377         kx                                { check_pkg_config libopencv opencv opencv2/core/core_c.h cvCreateImageHeader ||
   377         kx                                  require libopencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
   377         kx                                require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; }
   377         kx enabled libopenh264       && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
   377         kx enabled libopenjpeg       && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version ||
   377         kx                                { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
   377         kx enabled libopenmpt        && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
   377         kx enabled libopenvino       && require libopenvino c_api/ie_c_api.h ie_c_api_version -linference_engine_c_api
   377         kx enabled libopus           && {
   377         kx     enabled libopus_decoder && {
   377         kx         require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
   377         kx     }
   377         kx     enabled libopus_encoder && {
   377         kx         require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
   377         kx     }
   377         kx }
   377         kx enabled libpulse          && require_pkg_config libpulse libpulse pulse/pulseaudio.h pa_context_new
   377         kx enabled librabbitmq       && require_pkg_config librabbitmq "librabbitmq >= 0.7.1" amqp.h amqp_new_connection
   377         kx enabled librav1e          && require_pkg_config librav1e "rav1e >= 0.4.0" rav1e.h rav1e_context_new
   377         kx enabled librist           && require_pkg_config librist "librist >= 0.2" librist/librist.h rist_receiver_create
   377         kx enabled librsvg           && require_pkg_config librsvg librsvg-2.0 librsvg-2.0/librsvg/rsvg.h rsvg_handle_render_cairo
   377         kx enabled librtmp           && require_pkg_config librtmp librtmp librtmp/rtmp.h RTMP_Socket
   377         kx enabled librubberband     && require_pkg_config librubberband "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new -lstdc++ && append librubberband_extralibs "-lstdc++"
   377         kx enabled libshine          && require_pkg_config libshine shine shine/layer3.h shine_encode_buffer
   377         kx enabled libsmbclient      && { check_pkg_config libsmbclient smbclient libsmbclient.h smbc_init ||
   377         kx                                require libsmbclient libsmbclient.h smbc_init -lsmbclient; }
   377         kx enabled libsnappy         && require libsnappy snappy-c.h snappy_compress -lsnappy -lstdc++
   377         kx enabled libsoxr           && require libsoxr soxr.h soxr_create -lsoxr
   377         kx enabled libssh            && require_pkg_config libssh libssh libssh/sftp.h sftp_init
   377         kx enabled libspeex          && require_pkg_config libspeex speex speex/speex.h speex_decoder_init
   377         kx enabled libsrt            && require_pkg_config libsrt "srt >= 1.3.0" srt/srt.h srt_socket
   377         kx enabled libsvtav1         && require_pkg_config libsvtav1 "SvtAv1Enc >= 0.8.4" EbSvtAv1Enc.h svt_av1_enc_init_handle
   377         kx enabled libtensorflow     && require libtensorflow tensorflow/c/c_api.h TF_Version -ltensorflow
   377         kx enabled libtesseract      && require_pkg_config libtesseract tesseract tesseract/capi.h TessBaseAPICreate
   377         kx enabled libtheora         && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
   377         kx enabled libtls            && require_pkg_config libtls libtls tls.h tls_configure
   377         kx enabled libtwolame        && require libtwolame twolame.h twolame_init -ltwolame &&
   377         kx                              { check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
   377         kx                                die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
   377         kx enabled libuavs3d         && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode
   377         kx enabled libv4l2           && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
   377         kx enabled libvidstab        && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
   377         kx enabled libvmaf           && require_pkg_config libvmaf "libvmaf >= 1.5.2" libvmaf.h compute_vmaf
   377         kx enabled libvo_amrwbenc    && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
   377         kx enabled libvorbis         && require_pkg_config libvorbis vorbis vorbis/codec.h vorbis_info_init &&
   377         kx                              require_pkg_config libvorbisenc vorbisenc vorbis/vorbisenc.h vorbis_encode_init
   377         kx 
   377         kx enabled libvpx            && {
   377         kx     enabled libvpx_vp8_decoder && {
   377         kx         check_pkg_config libvpx_vp8_decoder "vpx >= 1.4.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx ||
   377         kx             check_lib libvpx_vp8_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp8_dx VPX_IMG_FMT_HIGHBITDEPTH" "-lvpx $libm_extralibs $pthreads_extralibs"
   377         kx     }
   377         kx     enabled libvpx_vp8_encoder && {
   377         kx         check_pkg_config libvpx_vp8_encoder "vpx >= 1.4.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx ||
   377         kx             check_lib libvpx_vp8_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp8_cx VPX_IMG_FMT_HIGHBITDEPTH" "-lvpx $libm_extralibs $pthreads_extralibs"
   377         kx     }
   377         kx     enabled libvpx_vp9_decoder && {
   377         kx         check_pkg_config libvpx_vp9_decoder "vpx >= 1.4.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx ||
   377         kx             check_lib libvpx_vp9_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx VPX_IMG_FMT_HIGHBITDEPTH" "-lvpx $libm_extralibs $pthreads_extralibs"
   377         kx     }
   377         kx     enabled libvpx_vp9_encoder && {
   377         kx         check_pkg_config libvpx_vp9_encoder "vpx >= 1.4.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx ||
   377         kx             check_lib libvpx_vp9_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx VPX_IMG_FMT_HIGHBITDEPTH" "-lvpx $libm_extralibs $pthreads_extralibs"
   377         kx     }
   377         kx     if disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder; then
   377         kx         die "libvpx enabled but no supported decoders found"
   377         kx     fi
   377         kx }
   377         kx 
   377         kx enabled libwebp           && {
   377         kx     enabled libwebp_encoder      && require_pkg_config libwebp "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
   377         kx     enabled libwebp_anim_encoder && check_pkg_config libwebp_anim_encoder "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit; }
   377         kx enabled libx264           && { check_pkg_config libx264 x264 "stdint.h x264.h" x264_encoder_encode ||
   377         kx                                { require libx264 "stdint.h x264.h" x264_encoder_encode "-lx264 $pthreads_extralibs $libm_extralibs" &&
   377         kx                                  warn "using libx264 without pkg-config"; } } &&
   377         kx                              require_cpp_condition libx264 x264.h "X264_BUILD >= 118" &&
   377         kx                              check_cpp_condition libx262 x264.h "X264_MPEG2"
   377         kx enabled libx265           && require_pkg_config libx265 x265 x265.h x265_api_get &&
   377         kx                              require_cpp_condition libx265 x265.h "X265_BUILD >= 70"
   377         kx enabled libxavs           && require libxavs "stdint.h xavs.h" xavs_encoder_encode "-lxavs $pthreads_extralibs $libm_extralibs"
   377         kx enabled libxavs2          && require_pkg_config libxavs2 "xavs2 >= 1.3.0" "stdint.h xavs2.h" xavs2_api_get
   377         kx enabled libxvid           && require libxvid xvid.h xvid_global -lxvidcore
   377         kx enabled libzimg           && require_pkg_config libzimg "zimg >= 2.7.0" zimg.h zimg_get_api_version
   377         kx enabled libzmq            && require_pkg_config libzmq "libzmq >= 4.2.1" zmq.h zmq_ctx_new
   377         kx enabled libzvbi           && require_pkg_config libzvbi zvbi-0.2 libzvbi.h vbi_decoder_new &&
   377         kx                              { test_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" ||
   377         kx                                enabled gpl || die "ERROR: libzvbi requires version 0.2.28 or --enable-gpl."; }
   377         kx enabled libxml2           && require_pkg_config libxml2 libxml-2.0 libxml2/libxml/xmlversion.h xmlCheckVersion
   377         kx enabled mbedtls           && { check_pkg_config mbedtls mbedtls mbedtls/x509_crt.h mbedtls_x509_crt_init ||
   377         kx                                check_pkg_config mbedtls mbedtls mbedtls/ssl.h mbedtls_ssl_init ||
   377         kx                                check_lib mbedtls mbedtls/ssl.h mbedtls_ssl_init -lmbedtls -lmbedx509 -lmbedcrypto ||
   377         kx                                die "ERROR: mbedTLS not found"; }
   377         kx enabled mediacodec        && { enabled jni || die "ERROR: mediacodec requires --enable-jni"; }
   377         kx enabled mmal              && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
   377         kx                                { ! enabled cross_compile &&
   377         kx                                  add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
   377         kx                                  add_ldflags -L/opt/vc/lib/ &&
   377         kx                                  check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
   377         kx                                die "ERROR: mmal not found" &&
   377         kx                                check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
   377         kx enabled openal            && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
   377         kx                                check_lib openal 'AL/al.h' alGetError "${al_extralibs}" && break; done } ||
   377         kx                                die "ERROR: openal not found"; } &&
   377         kx                              { test_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
   377         kx                                die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
   377         kx enabled opencl            && { check_pkg_config opencl OpenCL CL/cl.h clEnqueueNDRangeKernel ||
   377         kx                                check_lib opencl OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
   377         kx                                check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
   377         kx                                die "ERROR: opencl not found"; } &&
   377         kx                              { test_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
   377         kx                                test_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
   377         kx                                die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
   377         kx enabled opengl            && { check_lib opengl GL/glx.h glXGetProcAddress "-lGL" ||
   377         kx                                check_lib opengl windows.h wglGetProcAddress "-lopengl32 -lgdi32" ||
   377         kx                                check_lib opengl OpenGL/gl3.h glGetError "-Wl,-framework,OpenGL" ||
   377         kx                                check_lib opengl ES2/gl.h glGetError "-isysroot=${sysroot} -Wl,-framework,OpenGLES" ||
   377         kx                                die "ERROR: opengl not found."
   377         kx                              }
   377         kx enabled omx_rpi           && { test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoRequestIFrame ||
   377         kx                                { ! enabled cross_compile &&
   377         kx                                  add_cflags -isystem/opt/vc/include/IL &&
   377         kx                                  test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoRequestIFrame; } ||
   377         kx                                die "ERROR: OpenMAX IL headers from raspberrypi/firmware not found"; } &&
   377         kx                              enable omx
   377         kx enabled omx_img           && add_cppflags "-I$source_path/compat/OpenMAX/IL" &&
   377         kx                              prepend avcodec_deps "swscale" &&
   377         kx                              enable omx
   377         kx enabled omx               && require_headers OMX_Core.h
   377         kx enabled openssl           && { check_pkg_config openssl openssl openssl/ssl.h OPENSSL_init_ssl ||
   377         kx                                check_pkg_config openssl openssl openssl/ssl.h SSL_library_init ||
   377         kx                                check_lib openssl openssl/ssl.h OPENSSL_init_ssl -lssl -lcrypto ||
   377         kx                                check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
   377         kx                                check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
   377         kx                                check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
   377         kx                                die "ERROR: openssl not found"; }
   377         kx enabled pocketsphinx      && require_pkg_config pocketsphinx pocketsphinx pocketsphinx/pocketsphinx.h ps_init
   377         kx enabled rkmpp             && { require_pkg_config rkmpp rockchip_mpp  rockchip/rk_mpi.h mpp_create &&
   377         kx                                require_pkg_config rockchip_mpp "rockchip_mpp >= 1.3.7" rockchip/rk_mpi.h mpp_create &&
   377         kx                                { enabled libdrm ||
   377         kx                                  die "ERROR: rkmpp requires --enable-libdrm"; }
   377         kx                              }
   377         kx enabled vapoursynth       && require_pkg_config vapoursynth "vapoursynth-script >= 42" VSScript.h vsscript_init
   377         kx 
   377         kx 
   377         kx if enabled gcrypt; then
   377         kx     GCRYPT_CONFIG="${cross_prefix}libgcrypt-config"
   377         kx     if "${GCRYPT_CONFIG}" --version > /dev/null 2>&1; then
   377         kx         gcrypt_cflags=$("${GCRYPT_CONFIG}" --cflags)
   377         kx         gcrypt_extralibs=$("${GCRYPT_CONFIG}" --libs)
   377         kx         check_func_headers gcrypt.h gcry_mpi_new $gcrypt_cflags $gcrypt_extralibs ||
   377         kx             die "ERROR: gcrypt not found"
   377         kx         add_cflags $gcrypt_cflags
   377         kx     else
   377         kx         require gcrypt gcrypt.h gcry_mpi_new -lgcrypt
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx if enabled sdl2; then
   377         kx     SDL2_CONFIG="${cross_prefix}sdl2-config"
   377         kx     test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 3.0.0" SDL_events.h SDL_PollEvent
   377         kx     if disabled sdl2 && "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
   377         kx         sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
   377         kx         sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
   377         kx         test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
   377         kx         test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
   377         kx         check_func_headers SDL_events.h SDL_PollEvent $sdl2_extralibs $sdl2_cflags &&
   377         kx             enable sdl2
   377         kx     fi
   377         kx     if test $target_os = "mingw32"; then
   377         kx         sdl2_extralibs=$(filter_out '-mwindows' $sdl2_extralibs)
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx if enabled decklink; then
   377         kx     case $target_os in
   377         kx         mingw32*|mingw64*|win32|win64)
   377         kx             decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 -loleaut32"
   377         kx             decklink_indev_extralibs="$decklink_indev_extralibs -lole32 -loleaut32"
   377         kx             ;;
   377         kx     esac
   377         kx fi
   377         kx 
   377         kx enabled securetransport &&
   377         kx     check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
   377         kx     check_lib securetransport "Security/SecureTransport.h Security/Security.h" "SSLCreateContext" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" ||
   377         kx         disable securetransport
   377         kx 
   377         kx enabled securetransport &&
   377         kx     check_func SecItemImport "-Wl,-framework,CoreFoundation -Wl,-framework,Security"
   377         kx 
   377         kx enabled schannel &&
   377         kx     check_func_headers "windows.h security.h" InitializeSecurityContext -DSECURITY_WIN32 -lsecur32 &&
   377         kx     test_cpp_condition winerror.h "defined(SEC_I_CONTEXT_EXPIRED)" &&
   377         kx     schannel_extralibs="-lsecur32" ||
   377         kx         disable schannel
   377         kx 
   377         kx makeinfo --version > /dev/null 2>&1 && enable makeinfo  || disable makeinfo
   377         kx enabled makeinfo \
   377         kx     && [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \
   377         kx     && enable makeinfo_html || disable makeinfo_html
   377         kx disabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
   377         kx perl -v            > /dev/null 2>&1 && enable perl      || disable perl
   377         kx pod2man --help     > /dev/null 2>&1 && enable pod2man   || disable pod2man
   377         kx rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
   377         kx 
   377         kx # check V4L2 codecs available in the API
   377         kx if enabled v4l2_m2m; then
   377         kx     check_headers linux/fb.h
   377         kx     check_headers linux/videodev2.h
   377         kx     test_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
   377         kx     check_cc v4l2_m2m linux/videodev2.h "int i = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_VIDEO_M2M | V4L2_BUF_FLAG_LAST;"
   377         kx     check_cc vc1_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VC1_ANNEX_G;"
   377         kx     check_cc mpeg1_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG1;"
   377         kx     check_cc mpeg2_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG2;"
   377         kx     check_cc mpeg4_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG4;"
   377         kx     check_cc hevc_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_HEVC;"
   377         kx     check_cc h263_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H263;"
   377         kx     check_cc h264_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H264;"
   377         kx     check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;"
   377         kx     check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
   377         kx fi
   377         kx 
   377         kx check_headers sys/videoio.h
   377         kx test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
   377         kx 
   377         kx check_lib user32 "windows.h winuser.h" GetShellWindow -luser32
   377         kx check_lib vfw32 "windows.h vfw.h" capCreateCaptureWindow -lvfw32
   377         kx # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
   377         kx # w32api 3.12 had it defined wrong
   377         kx check_cpp_condition vfwcap_defines vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER"
   377         kx 
   377         kx check_type "dshow.h" IBaseFilter
   377         kx 
   377         kx # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
   377         kx check_headers "dev/bktr/ioctl_meteor.h dev/bktr/ioctl_bt848.h"                   ||
   377         kx     check_headers "machine/ioctl_meteor.h machine/ioctl_bt848.h"                 ||
   377         kx     check_headers "dev/video/meteor/ioctl_meteor.h dev/video/bktr/ioctl_bt848.h" ||
   377         kx     check_headers "dev/ic/bt8xx.h"
   377         kx 
   377         kx if check_struct sys/soundcard.h audio_buf_info bytes; then
   377         kx     enable_sanitized sys/soundcard.h
   377         kx else
   377         kx     test_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_sanitized sys/soundcard.h
   377         kx     #include <sys/soundcard.h>
   377         kx     audio_buf_info abc;
   377         kx EOF
   377         kx fi
   377         kx 
   377         kx enabled alsa && { check_pkg_config alsa alsa "alsa/asoundlib.h" snd_pcm_htimestamp ||
   377         kx                   check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound; }
   377         kx 
   377         kx enabled libjack &&
   377         kx     require_pkg_config libjack jack jack/jack.h jack_port_get_latency_range
   377         kx 
   377         kx enabled sndio && check_lib sndio sndio.h sio_open -lsndio
   377         kx 
   377         kx if enabled libcdio; then
   377         kx     check_pkg_config libcdio libcdio_paranoia "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open ||
   377         kx     check_pkg_config libcdio libcdio_paranoia "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open ||
   377         kx     check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
   377         kx     check_lib libcdio "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
   377         kx     die "ERROR: No usable libcdio/cdparanoia found"
   377         kx fi
   377         kx 
   377         kx enabled libxcb && check_pkg_config libxcb "xcb >= 1.4" xcb/xcb.h xcb_connect ||
   377         kx     disable libxcb_shm libxcb_shape libxcb_xfixes
   377         kx 
   377         kx if enabled libxcb; then
   377         kx     enabled libxcb_shm    && check_pkg_config libxcb_shm    xcb-shm    xcb/shm.h    xcb_shm_attach
   377         kx     enabled libxcb_shape  && check_pkg_config libxcb_shape  xcb-shape  xcb/shape.h  xcb_shape_get_rectangles
   377         kx     enabled libxcb_xfixes && check_pkg_config libxcb_xfixes xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image
   377         kx fi
   377         kx 
   377         kx check_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs"
   377         kx 
   377         kx # d3d11va requires linking directly to dxgi and d3d11 if not building for
   377         kx # the desktop api partition
   377         kx test_cpp <<EOF && enable uwp && d3d11va_extralibs="-ldxgi -ld3d11"
   377         kx #ifdef WINAPI_FAMILY
   377         kx #include <winapifamily.h>
   377         kx #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
   377         kx #error desktop, not uwp
   377         kx #else
   377         kx // WINAPI_FAMILY_APP, WINAPI_FAMILY_PHONE_APP => UWP
   377         kx #endif
   377         kx #else
   377         kx #error no family set
   377         kx #endif
   377         kx EOF
   377         kx 
   377         kx enabled libdrm &&
   377         kx     check_pkg_config libdrm_getfb2 libdrm "xf86drmMode.h" drmModeGetFB2
   377         kx 
   377         kx enabled vaapi &&
   377         kx     check_pkg_config vaapi "libva >= 0.35.0" "va/va.h" vaInitialize
   377         kx 
   377         kx if enabled vaapi; then
   377         kx     check_pkg_config vaapi_drm "libva-drm" "va/va_drm.h" vaGetDisplayDRM
   377         kx 
   377         kx     if enabled xlib; then
   377         kx         check_pkg_config vaapi_x11 "libva-x11" "va/va_x11.h" vaGetDisplay
   377         kx     fi
   377         kx 
   377         kx     check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)"
   377         kx 
   377         kx     check_type "va/va.h va/va_dec_hevc.h" "VAPictureParameterBufferHEVC"
   377         kx     check_struct "va/va.h" "VADecPictureParameterBufferVP9" bit_depth
   377         kx     check_struct "va/va.h" "VADecPictureParameterBufferAV1" bit_depth_idx
   377         kx     check_type   "va/va.h va/va_vpp.h" "VAProcFilterParameterBufferHDRToneMapping"
   377         kx     check_struct "va/va.h va/va_vpp.h" "VAProcPipelineCaps" rotation_flags
   377         kx     check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC"
   377         kx     check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
   377         kx     check_type "va/va.h va/va_enc_vp8.h"  "VAEncPictureParameterBufferVP8"
   377         kx     check_type "va/va.h va/va_enc_vp9.h"  "VAEncPictureParameterBufferVP9"
   377         kx fi
   377         kx 
   377         kx if enabled_all opencl libdrm ; then
   377         kx     check_type "CL/cl_intel.h" "clCreateImageFromFdINTEL_fn" &&
   377         kx         enable opencl_drm_beignet
   377         kx     check_func_headers "CL/cl_ext.h" clImportMemoryARM &&
   377         kx         enable opencl_drm_arm
   377         kx fi
   377         kx 
   377         kx if enabled_all opencl vaapi ; then
   377         kx     if enabled opencl_drm_beignet ; then
   377         kx         enable opencl_vaapi_beignet
   377         kx     else
   377         kx         check_type "CL/cl.h CL/cl_va_api_media_sharing_intel.h" "clCreateFromVA_APIMediaSurfaceINTEL_fn" &&
   377         kx             enable opencl_vaapi_intel_media
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx if enabled_all opencl dxva2 ; then
   377         kx     check_type "CL/cl_dx9_media_sharing.h" cl_dx9_surface_info_khr &&
   377         kx         enable opencl_dxva2
   377         kx fi
   377         kx 
   377         kx if enabled_all opencl d3d11va ; then
   377         kx     check_type "CL/cl_d3d11.h" clGetDeviceIDsFromD3D11KHR_fn &&
   377         kx         enable opencl_d3d11
   377         kx fi
   377         kx 
   377         kx enabled vdpau &&
   377         kx     check_cpp_condition vdpau vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP"
   377         kx 
   377         kx enabled vdpau &&
   377         kx     check_lib vdpau_x11 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11
   377         kx 
   377         kx enabled crystalhd && check_lib crystalhd "stdint.h libcrystalhd/libcrystalhd_if.h" DtsCrystalHDVersion -lcrystalhd
   377         kx 
   377         kx enabled vulkan &&
   377         kx     require_pkg_config vulkan "vulkan >= 1.1.97" "vulkan/vulkan.h" vkCreateInstance
   377         kx 
   377         kx if enabled x86; then
   377         kx     case $target_os in
   377         kx         mingw32*|mingw64*|win32|win64|linux|cygwin*)
   377         kx             ;;
   377         kx         *)
   377         kx             disable ffnvcodec cuvid nvdec nvenc
   377         kx             ;;
   377         kx     esac
   377         kx elif enabled_any aarch64 ppc64 && ! enabled bigendian; then
   377         kx     case $target_os in
   377         kx         linux)
   377         kx             ;;
   377         kx         *)
   377         kx             disable ffnvcodec cuvid nvdec nvenc
   377         kx             ;;
   377         kx     esac
   377         kx else
   377         kx     disable ffnvcodec cuvid nvdec nvenc
   377         kx fi
   377         kx 
   377         kx enabled ffnvcodec && enable cuda
   377         kx 
   377         kx enabled nvenc &&
   377         kx     test_cc -I$source_path <<EOF || disable nvenc
   377         kx #include <ffnvcodec/nvEncodeAPI.h>
   377         kx NV_ENCODE_API_FUNCTION_LIST flist;
   377         kx void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; }
   377         kx int main(void) { return 0; }
   377         kx EOF
   377         kx 
   377         kx if enabled_any nvdec cuvid; then
   377         kx     check_type "ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h" "CUVIDAV1PICPARAMS"
   377         kx fi
   377         kx 
   377         kx enabled amf &&
   377         kx     check_cpp_condition amf "AMF/core/Version.h" \
   377         kx         "(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x0001000400090000"
   377         kx 
   377         kx # Funny iconv installations are not unusual, so check it after all flags have been set
   377         kx if enabled libc_iconv; then
   377         kx     check_func_headers iconv.h iconv
   377         kx elif enabled iconv; then
   377         kx     check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv
   377         kx fi
   377         kx 
   377         kx enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
   377         kx 
   377         kx # add some useful compiler flags if supported
   377         kx check_cflags -Wdeclaration-after-statement
   377         kx check_cflags -Wall
   377         kx check_cflags -Wdisabled-optimization
   377         kx check_cflags -Wpointer-arith
   377         kx check_cflags -Wredundant-decls
   377         kx check_cflags -Wwrite-strings
   377         kx check_cflags -Wtype-limits
   377         kx check_cflags -Wundef
   377         kx check_cflags -Wmissing-prototypes
   377         kx check_cflags -Wno-pointer-to-int-cast
   377         kx check_cflags -Wstrict-prototypes
   377         kx check_cflags -Wempty-body
   377         kx 
   377         kx if enabled extra_warnings; then
   377         kx     check_cflags -Wcast-qual
   377         kx     check_cflags -Wextra
   377         kx     check_cflags -Wpedantic
   377         kx fi
   377         kx 
   377         kx check_disable_warning(){
   377         kx     warning_flag=-W${1#-Wno-}
   377         kx     test_cflags $unknown_warning_flags $warning_flag && add_cflags $1
   377         kx }
   377         kx 
   377         kx test_cflags -Werror=unused-command-line-argument &&
   377         kx     append unknown_warning_flags "-Werror=unused-command-line-argument"
   377         kx test_cflags -Werror=unknown-warning-option &&
   377         kx     append unknown_warning_flags "-Werror=unknown-warning-option"
   377         kx 
   377         kx check_disable_warning -Wno-parentheses
   377         kx check_disable_warning -Wno-switch
   377         kx check_disable_warning -Wno-format-zero-length
   377         kx check_disable_warning -Wno-pointer-sign
   377         kx check_disable_warning -Wno-unused-const-variable
   377         kx check_disable_warning -Wno-bool-operation
   377         kx check_disable_warning -Wno-char-subscripts
   377         kx 
   377         kx check_disable_warning_headers(){
   377         kx     warning_flag=-W${1#-Wno-}
   377         kx     test_cflags $warning_flag && add_cflags_headers $1
   377         kx }
   377         kx 
   377         kx check_disable_warning_headers -Wno-deprecated-declarations
   377         kx check_disable_warning_headers -Wno-unused-variable
   377         kx 
   377         kx test_cc <<EOF && enable blocks_extension
   377         kx void (^block)(void);
   377         kx EOF
   377         kx 
   377         kx # add some linker flags
   377         kx check_ldflags -Wl,--warn-common
   377         kx check_ldflags -Wl,-rpath-link=:libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
   377         kx enabled rpath && add_ldexeflags -Wl,-rpath,$libdir && add_ldsoflags -Wl,-rpath,$libdir
   377         kx test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
   377         kx 
   377         kx # add some strip flags
   377         kx check_stripflags -x
   377         kx 
   377         kx enabled neon_clobber_test &&
   377         kx     check_ldflags -Wl,--wrap,avcodec_open2              \
   377         kx                   -Wl,--wrap,avcodec_decode_audio4      \
   377         kx                   -Wl,--wrap,avcodec_decode_video2      \
   377         kx                   -Wl,--wrap,avcodec_decode_subtitle2   \
   377         kx                   -Wl,--wrap,avcodec_encode_audio2      \
   377         kx                   -Wl,--wrap,avcodec_encode_video2      \
   377         kx                   -Wl,--wrap,avcodec_encode_subtitle    \
   377         kx                   -Wl,--wrap,avcodec_send_packet        \
   377         kx                   -Wl,--wrap,avcodec_receive_packet     \
   377         kx                   -Wl,--wrap,avcodec_send_frame         \
   377         kx                   -Wl,--wrap,avcodec_receive_frame      \
   377         kx                   -Wl,--wrap,swr_convert                \
   377         kx                   -Wl,--wrap,avresample_convert ||
   377         kx     disable neon_clobber_test
   377         kx 
   377         kx enabled xmm_clobber_test &&
   377         kx     check_ldflags -Wl,--wrap,avcodec_open2              \
   377         kx                   -Wl,--wrap,avcodec_decode_audio4      \
   377         kx                   -Wl,--wrap,avcodec_decode_video2      \
   377         kx                   -Wl,--wrap,avcodec_decode_subtitle2   \
   377         kx                   -Wl,--wrap,avcodec_encode_audio2      \
   377         kx                   -Wl,--wrap,avcodec_encode_video2      \
   377         kx                   -Wl,--wrap,avcodec_encode_subtitle    \
   377         kx                   -Wl,--wrap,avcodec_send_packet        \
   377         kx                   -Wl,--wrap,avcodec_receive_packet     \
   377         kx                   -Wl,--wrap,avcodec_send_frame         \
   377         kx                   -Wl,--wrap,avcodec_receive_frame      \
   377         kx                   -Wl,--wrap,swr_convert                \
   377         kx                   -Wl,--wrap,avresample_convert         \
   377         kx                   -Wl,--wrap,sws_scale ||
   377         kx     disable xmm_clobber_test
   377         kx 
   377         kx check_ld "cc" proper_dce <<EOF
   377         kx extern const int array[512];
   377         kx static inline int func(void) { return array[0]; }
   377         kx int main(void) { return 0; }
   377         kx EOF
   377         kx 
   377         kx if enabled proper_dce; then
   377         kx     echo "X { local: *; };" > $TMPV
   377         kx     if test_ldflags -Wl,${version_script},$TMPV; then
   377         kx         append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver'
   377         kx         quotes='""'
   377         kx         test_cc <<EOF && enable symver_asm_label
   377         kx void ff_foo(void) __asm__ ("av_foo@VERSION");
   377         kx void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
   377         kx EOF
   377         kx         test_cc <<EOF && enable symver_gnu_asm
   377         kx __asm__(".symver ff_foo,av_foo@VERSION");
   377         kx void ff_foo(void) {}
   377         kx EOF
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx if [ -z "$optflags" ]; then
   377         kx     if enabled small; then
   377         kx         optflags=$cflags_size
   377         kx     elif enabled optimizations; then
   377         kx         optflags=$cflags_speed
   377         kx     else
   377         kx         optflags=$cflags_noopt
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx check_optflags(){
   377         kx     check_cflags "$@"
   377         kx     enabled lto && check_ldflags "$@"
   377         kx }
   377         kx 
   377         kx check_optflags $optflags
   377         kx check_optflags -fno-math-errno
   377         kx check_optflags -fno-signed-zeros
   377         kx 
   377         kx if enabled lto; then
   377         kx     test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
   377         kx     check_cflags  -flto
   377         kx     check_ldflags -flto $cpuflags
   377         kx     disable inline_asm_direct_symbol_refs
   377         kx fi
   377         kx 
   377         kx enabled ftrapv && check_cflags -ftrapv
   377         kx 
   377         kx test_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
   377         kx int x;
   377         kx EOF
   377         kx 
   377         kx 
   377         kx if enabled icc; then
   377         kx     # Just warnings, no remarks
   377         kx     check_cflags -w1
   377         kx     # -wd: Disable following warnings
   377         kx     # 144, 167, 556: -Wno-pointer-sign
   377         kx     # 188: enumerated type mixed with another type
   377         kx     # 1292: attribute "foo" ignored
   377         kx     # 1419: external declaration in primary source file
   377         kx     # 10006: ignoring unknown option -fno-signed-zeros
   377         kx     # 10148: ignoring unknown option -Wno-parentheses
   377         kx     # 10156: ignoring option '-W'; no argument required
   377         kx     # 13200: No EMMS instruction before call to function
   377         kx     # 13203: No EMMS instruction before return from function
   377         kx     check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156,13200,13203
   377         kx     # 11030: Warning unknown option --as-needed
   377         kx     # 10156: ignoring option '-export'; no argument required
   377         kx     check_ldflags -wd10156,11030
   377         kx     # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
   377         kx     enable ebp_available
   377         kx     # The test above does not test linking
   377         kx     enabled lto && disable symver_asm_label
   377         kx     if enabled x86_32; then
   377         kx         icc_version=$($cc -dumpversion)
   377         kx         test ${icc_version%%.*} -ge 11 &&
   377         kx             check_cflags -falign-stack=maintain-16-byte ||
   377         kx             disable aligned_stack
   377         kx     fi
   377         kx elif enabled gcc; then
   377         kx     check_optflags -fno-tree-vectorize
   377         kx     check_cflags -Werror=format-security
   377         kx     check_cflags -Werror=implicit-function-declaration
   377         kx     check_cflags -Werror=missing-prototypes
   377         kx     check_cflags -Werror=return-type
   377         kx     check_cflags -Werror=vla
   377         kx     check_cflags -Wformat
   377         kx     check_cflags -fdiagnostics-color=auto
   377         kx     enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized
   377         kx     if enabled x86_32; then
   377         kx         case $target_os in
   377         kx         *bsd*)
   377         kx             # BSDs don't guarantee a 16 byte aligned stack, but we can
   377         kx             # request GCC to try to maintain 16 byte alignment throughout
   377         kx             # function calls. Library entry points that might call assembly
   377         kx             # functions align the stack. (The parameter means 2^4 bytes.)
   377         kx             check_cflags -mpreferred-stack-boundary=4
   377         kx             ;;
   377         kx         esac
   377         kx     fi
   377         kx elif enabled llvm_gcc; then
   377         kx     check_cflags -mllvm -stack-alignment=16
   377         kx elif enabled clang; then
   377         kx     if enabled x86_32; then
   377         kx         # Clang doesn't support maintaining alignment without assuming the
   377         kx         # same alignment in every function. If 16 byte alignment would be
   377         kx         # enabled, one would also have to either add attribute_align_arg on
   377         kx         # every single entry point into the libraries or enable -mstackrealign
   377         kx         # (doing stack realignment in every single function).
   377         kx         case $target_os in
   377         kx         mingw32|win32|*bsd*)
   377         kx             disable aligned_stack
   377         kx             ;;
   377         kx         *)
   377         kx             check_cflags -mllvm -stack-alignment=16
   377         kx             check_cflags -mstack-alignment=16
   377         kx             ;;
   377         kx         esac
   377         kx     else
   377         kx         check_cflags -mllvm -stack-alignment=16
   377         kx         check_cflags -mstack-alignment=16
   377         kx     fi
   377         kx     check_cflags -Qunused-arguments
   377         kx     check_cflags -Werror=implicit-function-declaration
   377         kx     check_cflags -Werror=missing-prototypes
   377         kx     check_cflags -Werror=return-type
   377         kx elif enabled cparser; then
   377         kx     add_cflags -Wno-missing-variable-declarations
   377         kx     add_cflags -Wno-empty-statement
   377         kx elif enabled armcc; then
   377         kx     add_cflags -W${armcc_opt},--diag_suppress=4343 # hardfp compat
   377         kx     add_cflags -W${armcc_opt},--diag_suppress=3036 # using . as system include dir
   377         kx     # 2523: use of inline assembly is deprecated
   377         kx     add_cflags -W${armcc_opt},--diag_suppress=2523
   377         kx     add_cflags -W${armcc_opt},--diag_suppress=1207
   377         kx     add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
   377         kx     add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
   377         kx     add_cflags -W${armcc_opt},--diag_suppress=167  # pointer sign
   377         kx     add_cflags -W${armcc_opt},--diag_suppress=513  # pointer sign
   377         kx elif enabled pathscale; then
   377         kx     add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
   377         kx     disable inline_asm
   377         kx elif enabled_any msvc icl; then
   377         kx     enabled x86_32 && disable aligned_stack
   377         kx     enabled_all x86_32 debug && add_cflags -Oy-
   377         kx     enabled debug && add_ldflags -debug
   377         kx     enable pragma_deprecated
   377         kx     if enabled icl; then
   377         kx         # -Qansi-alias is basically -fstrict-aliasing, but does not work
   377         kx         # (correctly) on icl 13.x.
   377         kx         test_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" &&
   377         kx             add_cflags -Qansi-alias
   377         kx         # Some inline asm is not compilable in debug
   377         kx         if enabled debug; then
   377         kx             disable ebp_available
   377         kx             disable ebx_available
   377         kx         fi
   377         kx     fi
   377         kx     # msvcrt10 x64 incorrectly enables log2, only msvcrt12 (MSVC 2013) onwards actually has log2.
   377         kx     check_cpp_condition log2 crtversion.h "_VC_CRT_MAJOR_VERSION >= 12"
   377         kx     # The CRT headers contain __declspec(restrict) in a few places, but if redefining
   377         kx     # restrict, this might break. MSVC 2010 and 2012 fail with __declspec(__restrict)
   377         kx     # (as it ends up if the restrict redefine is done before including stdlib.h), while
   377         kx     # MSVC 2013 and newer can handle it fine.
   377         kx     # If this declspec fails, force including stdlib.h before the restrict redefinition
   377         kx     # happens in config.h.
   377         kx     if [ $restrict_keyword != restrict ]; then
   377         kx         test_cc <<EOF || add_cflags -FIstdlib.h
   377         kx __declspec($restrict_keyword) void *foo(int);
   377         kx EOF
   377         kx     fi
   377         kx     # the new SSA optimzer in VS2015 U3 is mis-optimizing some parts of the code
   377         kx     # Issue has been fixed in MSVC v19.00.24218.
   377         kx     test_cpp_condition windows.h "_MSC_FULL_VER >= 190024218" ||
   377         kx         check_cflags -d2SSAOptimizer-
   377         kx     # enable utf-8 source processing on VS2015 U2 and newer
   377         kx     test_cpp_condition windows.h "_MSC_FULL_VER >= 190023918" &&
   377         kx         add_cflags -utf-8
   377         kx fi
   377         kx 
   377         kx for pfx in "" host_; do
   377         kx     varname=${pfx%_}cc_type
   377         kx     eval "type=\$$varname"
   377         kx     if [ "$type" = "msvc" ]; then
   377         kx         test_${pfx}cc <<EOF || add_${pfx}cflags -Dinline=__inline
   377         kx static inline int foo(int a) { return a; }
   377         kx EOF
   377         kx     fi
   377         kx done
   377         kx 
   377         kx case $as_type in
   377         kx     clang)
   377         kx         add_asflags -Qunused-arguments
   377         kx     ;;
   377         kx esac
   377         kx 
   377         kx case $ld_type in
   377         kx     clang)
   377         kx         check_ldflags -Qunused-arguments
   377         kx     ;;
   377         kx esac
   377         kx 
   377         kx enable frame_thread_encoder
   377         kx 
   377         kx enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
   377         kx 
   377         kx check_deps $CONFIG_LIST       \
   377         kx            $CONFIG_EXTRA      \
   377         kx            $HAVE_LIST         \
   377         kx            $ALL_COMPONENTS    \
   377         kx 
   377         kx enabled threads && ! enabled pthreads && ! enabled atomics_native && die "non pthread threading without atomics not supported, try adding --enable-pthreads or --cpu=i486 or higher if you are on x86"
   377         kx enabled avresample && warn "Building with deprecated library libavresample"
   377         kx 
   377         kx case $target_os in
   377         kx haiku)
   377         kx     disable memalign
   377         kx     disable posix_memalign
   377         kx     ;;
   377         kx *-dos|freedos|opendos)
   377         kx     if test_cpp_condition sys/version.h "defined(__DJGPP__) && __DJGPP__ == 2 && __DJGPP_MINOR__ == 5"; then
   377         kx         disable memalign
   377         kx     fi
   377         kx     ;;
   377         kx esac
   377         kx 
   377         kx flatten_extralibs(){
   377         kx     nested_entries=
   377         kx     list_name=$1
   377         kx     eval list=\$${1}
   377         kx     for entry in $list; do
   377         kx         entry_copy=$entry
   377         kx         resolve entry_copy
   377         kx         flat_entries=
   377         kx         for e in $entry_copy; do
   377         kx             case $e in
   377         kx                 *_extralibs) nested_entries="$nested_entries$e ";;
   377         kx                           *) flat_entries="$flat_entries$e ";;
   377         kx             esac
   377         kx         done
   377         kx         eval $entry="\$flat_entries"
   377         kx     done
   377         kx     append $list_name "$nested_entries"
   377         kx 
   377         kx     resolve nested_entries
   377         kx     if test -n "$(filter '*_extralibs' $nested_entries)"; then
   377         kx         flatten_extralibs $list_name
   377         kx     fi
   377         kx }
   377         kx 
   377         kx flatten_extralibs_wrapper(){
   377         kx     list_name=$1
   377         kx     flatten_extralibs $list_name
   377         kx     unique $list_name
   377         kx     resolve $list_name
   377         kx     eval $list_name=\$\(\$ldflags_filter \$$list_name\)
   377         kx     eval printf \''%s'\' \""\$$list_name"\"
   377         kx }
   377         kx 
   377         kx for linkunit in $LIBRARY_LIST; do
   377         kx     unset current_extralibs
   377         kx     eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST
   377         kx     for comp in ${components}; do
   377         kx         enabled $comp || continue
   377         kx         comp_extralibs="${comp}_extralibs"
   377         kx         append current_extralibs $comp_extralibs
   377         kx     done
   377         kx     eval prepend ${linkunit}_extralibs $current_extralibs
   377         kx done
   377         kx 
   377         kx for linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
   377         kx     eval ${linkunit}_extralibs=\$\(flatten_extralibs_wrapper ${linkunit}_extralibs\)
   377         kx done
   377         kx 
   377         kx map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
   377         kx 
   377         kx for thread in $THREADS_LIST; do
   377         kx     if enabled $thread; then
   377         kx         test -n "$thread_type" &&
   377         kx             die "ERROR: Only one thread type must be selected." ||
   377         kx             thread_type="$thread"
   377         kx     fi
   377         kx done
   377         kx 
   377         kx if disabled stdatomic; then
   377         kx     if enabled atomics_gcc; then
   377         kx         add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
   377         kx     elif enabled atomics_win32; then
   377         kx         add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
   377         kx     elif enabled atomics_suncc; then
   377         kx         add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
   377         kx     elif enabled pthreads; then
   377         kx         add_compat atomics/pthread/stdatomic.o
   377         kx         add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
   377         kx     else
   377         kx         enabled threads && die "Threading is enabled, but no atomics are available"
   377         kx         add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
   377         kx     fi
   377         kx fi
   377         kx 
   377         kx # Check if requested libraries were found.
   377         kx for lib in $AUTODETECT_LIBS; do
   377         kx     requested $lib && ! enabled $lib && die "ERROR: $lib requested but not found";
   377         kx done
   377         kx 
   377         kx enabled zlib && add_cppflags -DZLIB_CONST
   377         kx 
   377         kx # conditional library dependencies, in any order
   377         kx enabled afftdn_filter       && prepend avfilter_deps "avcodec"
   377         kx enabled afftfilt_filter     && prepend avfilter_deps "avcodec"
   377         kx enabled afir_filter         && prepend avfilter_deps "avcodec"
   377         kx enabled amovie_filter       && prepend avfilter_deps "avformat avcodec"
   377         kx enabled aresample_filter    && prepend avfilter_deps "swresample"
   377         kx enabled atempo_filter       && prepend avfilter_deps "avcodec"
   377         kx enabled bm3d_filter         && prepend avfilter_deps "avcodec"
   377         kx enabled cover_rect_filter   && prepend avfilter_deps "avformat avcodec"
   377         kx enabled convolve_filter     && prepend avfilter_deps "avcodec"
   377         kx enabled deconvolve_filter   && prepend avfilter_deps "avcodec"
   377         kx enabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample"
   377         kx enabled elbg_filter         && prepend avfilter_deps "avcodec"
   377         kx enabled fftfilt_filter      && prepend avfilter_deps "avcodec"
   377         kx enabled find_rect_filter    && prepend avfilter_deps "avformat avcodec"
   377         kx enabled firequalizer_filter && prepend avfilter_deps "avcodec"
   377         kx enabled mcdeint_filter      && prepend avfilter_deps "avcodec"
   377         kx enabled movie_filter    && prepend avfilter_deps "avformat avcodec"
   377         kx enabled pan_filter          && prepend avfilter_deps "swresample"
   377         kx enabled pp_filter           && prepend avfilter_deps "postproc"
   377         kx enabled removelogo_filter   && prepend avfilter_deps "avformat avcodec swscale"
   377         kx enabled resample_filter && prepend avfilter_deps "avresample"
   377         kx enabled sab_filter          && prepend avfilter_deps "swscale"
   377         kx enabled scale_filter    && prepend avfilter_deps "swscale"
   377         kx enabled scale2ref_filter    && prepend avfilter_deps "swscale"
   377         kx enabled sofalizer_filter    && prepend avfilter_deps "avcodec"
   377         kx enabled showcqt_filter      && prepend avfilter_deps "avformat avcodec swscale"
   377         kx enabled showfreqs_filter    && prepend avfilter_deps "avcodec"
   377         kx enabled showspectrum_filter && prepend avfilter_deps "avcodec"
   377         kx enabled signature_filter    && prepend avfilter_deps "avcodec avformat"
   377         kx enabled smartblur_filter    && prepend avfilter_deps "swscale"
   377         kx enabled spectrumsynth_filter && prepend avfilter_deps "avcodec"
   377         kx enabled spp_filter          && prepend avfilter_deps "avcodec"
   377         kx enabled sr_filter           && prepend avfilter_deps "avformat swscale"
   377         kx enabled subtitles_filter    && prepend avfilter_deps "avformat avcodec"
   377         kx enabled uspp_filter         && prepend avfilter_deps "avcodec"
   377         kx enabled zoompan_filter      && prepend avfilter_deps "swscale"
   377         kx 
   377         kx enabled lavfi_indev         && prepend avdevice_deps "avfilter"
   377         kx 
   377         kx #FIXME
   377         kx enabled_any sdl2_outdev opengl_outdev && enabled sdl2 &&
   377         kx     add_cflags $(filter_out '-Dmain=SDL_main' $sdl2_cflags)
   377         kx 
   377         kx enabled opus_decoder    && prepend avcodec_deps "swresample"
   377         kx 
   377         kx # reorder the items at var $1 to align with the items order at var $2 .
   377         kx # die if an item at $1 is not at $2 .
   377         kx reorder_by(){
   377         kx     eval rb_in=\$$1
   377         kx     eval rb_ordered=\$$2
   377         kx 
   377         kx     for rb in $rb_in; do
   377         kx         is_in $rb $rb_ordered || die "$rb at \$$1 is not at \$$2"
   377         kx     done
   377         kx 
   377         kx     rb_out=
   377         kx     for rb in $rb_ordered; do
   377         kx         is_in $rb $rb_in && rb_out="$rb_out$rb "
   377         kx     done
   377         kx     eval $1=\$rb_out
   377         kx }
   377         kx 
   377         kx # deps-expand fflib $1:  N x {append all expanded deps; unique}
   377         kx # within a set of N items, N expansions are enough to expose a cycle.
   377         kx expand_deps(){
   377         kx     unique ${1}_deps  # required for the early break test.
   377         kx     for dummy in $LIBRARY_LIST; do  # N iteratios
   377         kx         eval deps=\$${1}_deps
   377         kx         append ${1}_deps $(map 'eval echo \$${v}_deps' $deps)
   377         kx         unique ${1}_deps
   377         kx         eval '[ ${#deps} = ${#'${1}_deps'} ]' && break  # doesn't expand anymore
   377         kx     done
   377         kx 
   377         kx     eval is_in $1 \$${1}_deps && die "Dependency cycle at ${1}_deps"
   377         kx     reorder_by ${1}_deps LIBRARY_LIST  # linking order is expected later
   377         kx }
   377         kx 
   377         kx #we have to remove gpl from the deps here as some code assumes all lib deps are libs
   377         kx postproc_deps="$(filter_out 'gpl' $postproc_deps)"
   377         kx 
   377         kx map 'expand_deps $v' $LIBRARY_LIST
   377         kx 
   377         kx if test "$quiet" != "yes"; then
   377         kx 
   377         kx echo "install prefix            $prefix"
   377         kx echo "source path               $source_path"
   377         kx echo "C compiler                $cc"
   377         kx echo "C library                 $libc_type"
   377         kx if test "$host_cc" != "$cc"; then
   377         kx     echo "host C compiler           $host_cc"
   377         kx     echo "host C library            $host_libc_type"
   377         kx fi
   377         kx echo "ARCH                      $arch ($cpu)"
   377         kx if test "$build_suffix" != ""; then
   377         kx     echo "build suffix              $build_suffix"
   377         kx fi
   377         kx if test "$progs_suffix" != ""; then
   377         kx     echo "progs suffix              $progs_suffix"
   377         kx fi
   377         kx if test "$extra_version" != ""; then
   377         kx     echo "version string suffix     $extra_version"
   377         kx fi
   377         kx echo "big-endian                ${bigendian-no}"
   377         kx echo "runtime cpu detection     ${runtime_cpudetect-no}"
   377         kx if enabled x86; then
   377         kx     echo "standalone assembly       ${x86asm-no}"
   377         kx     echo "x86 assembler             ${x86asmexe}"
   377         kx     echo "MMX enabled               ${mmx-no}"
   377         kx     echo "MMXEXT enabled            ${mmxext-no}"
   377         kx     echo "3DNow! enabled            ${amd3dnow-no}"
   377         kx     echo "3DNow! extended enabled   ${amd3dnowext-no}"
   377         kx     echo "SSE enabled               ${sse-no}"
   377         kx     echo "SSSE3 enabled             ${ssse3-no}"
   377         kx     echo "AESNI enabled             ${aesni-no}"
   377         kx     echo "AVX enabled               ${avx-no}"
   377         kx     echo "AVX2 enabled              ${avx2-no}"
   377         kx     echo "AVX-512 enabled           ${avx512-no}"
   377         kx     echo "XOP enabled               ${xop-no}"
   377         kx     echo "FMA3 enabled              ${fma3-no}"
   377         kx     echo "FMA4 enabled              ${fma4-no}"
   377         kx     echo "i686 features enabled     ${i686-no}"
   377         kx     echo "CMOV is fast              ${fast_cmov-no}"
   377         kx     echo "EBX available             ${ebx_available-no}"
   377         kx     echo "EBP available             ${ebp_available-no}"
   377         kx fi
   377         kx if enabled aarch64; then
   377         kx     echo "NEON enabled              ${neon-no}"
   377         kx     echo "VFP enabled               ${vfp-no}"
   377         kx fi
   377         kx if enabled arm; then
   377         kx     echo "ARMv5TE enabled           ${armv5te-no}"
   377         kx     echo "ARMv6 enabled             ${armv6-no}"
   377         kx     echo "ARMv6T2 enabled           ${armv6t2-no}"
   377         kx     echo "VFP enabled               ${vfp-no}"
   377         kx     echo "NEON enabled              ${neon-no}"
   377         kx     echo "THUMB enabled             ${thumb-no}"
   377         kx fi
   377         kx if enabled mips; then
   377         kx     echo "MIPS FPU enabled          ${mipsfpu-no}"
   377         kx     echo "MIPS DSP R1 enabled       ${mipsdsp-no}"
   377         kx     echo "MIPS DSP R2 enabled       ${mipsdspr2-no}"
   377         kx     echo "MIPS MSA enabled          ${msa-no}"
   377         kx     echo "MIPS MSA2 enabled         ${msa2-no}"
   377         kx     echo "LOONGSON MMI enabled      ${mmi-no}"
   377         kx fi
   377         kx if enabled ppc; then
   377         kx     echo "AltiVec enabled           ${altivec-no}"
   377         kx     echo "VSX enabled               ${vsx-no}"
   377         kx     echo "POWER8 enabled            ${power8-no}"
   377         kx     echo "PPC 4xx optimizations     ${ppc4xx-no}"
   377         kx     echo "dcbzl available           ${dcbzl-no}"
   377         kx fi
   377         kx echo "debug symbols             ${debug-no}"
   377         kx echo "strip symbols             ${stripping-no}"
   377         kx echo "optimize for size         ${small-no}"
   377         kx echo "optimizations             ${optimizations-no}"
   377         kx echo "static                    ${static-no}"
   377         kx echo "shared                    ${shared-no}"
   377         kx echo "postprocessing support    ${postproc-no}"
   377         kx echo "network support           ${network-no}"
   377         kx echo "threading support         ${thread_type-no}"
   377         kx echo "safe bitstream reader     ${safe_bitstream_reader-no}"
   377         kx echo "texi2html enabled         ${texi2html-no}"
   377         kx echo "perl enabled              ${perl-no}"
   377         kx echo "pod2man enabled           ${pod2man-no}"
   377         kx echo "makeinfo enabled          ${makeinfo-no}"
   377         kx echo "makeinfo supports HTML    ${makeinfo_html-no}"
   377         kx test -n "$random_seed" &&
   377         kx     echo "random seed               ${random_seed}"
   377         kx echo
   377         kx 
   377         kx echo "External libraries:"
   377         kx print_enabled '' $EXTERNAL_LIBRARY_LIST $EXTERNAL_AUTODETECT_LIBRARY_LIST | print_in_columns
   377         kx echo
   377         kx 
   377         kx echo "External libraries providing hardware acceleration:"
   377         kx print_enabled '' $HWACCEL_LIBRARY_LIST $HWACCEL_AUTODETECT_LIBRARY_LIST | print_in_columns
   377         kx echo
   377         kx 
   377         kx echo "Libraries:"
   377         kx print_enabled '' $LIBRARY_LIST | print_in_columns
   377         kx echo
   377         kx 
   377         kx echo "Programs:"
   377         kx print_enabled '' $PROGRAM_LIST | print_in_columns
   377         kx echo
   377         kx 
   377         kx for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
   377         kx     echo "Enabled ${type}s:"
   377         kx     eval list=\$$(toupper $type)_LIST
   377         kx     print_enabled '_*' $list | print_in_columns
   377         kx     echo
   377         kx done
   377         kx 
   377         kx if test -n "$ignore_tests"; then
   377         kx     ignore_tests=$(echo $ignore_tests | tr ',' ' ')
   377         kx     echo "Ignored FATE tests:"
   377         kx     echo $ignore_tests | print_in_columns
   377         kx     echo
   377         kx fi
   377         kx 
   377         kx echo "License: $license"
   377         kx 
   377         kx fi # test "$quiet" != "yes"
   377         kx 
   377         kx if test -n "$WARN_IF_GETS_DISABLED_LIST"; then
   377         kx     for cfg in $WARN_IF_GETS_DISABLED_LIST; do
   377         kx         if disabled $cfg; then
   377         kx             varname=${cfg}_disable_reason
   377         kx             eval "warn \"Disabled $cfg because \$$varname\""
   377         kx         fi
   377         kx     done
   377         kx fi
   377         kx 
   377         kx if test -n "$WARNINGS"; then
   377         kx     printf "\n%s%s$WARNINGS%s" "$warn_color" "$bold_color" "$reset_color"
   377         kx     enabled fatal_warnings && exit 1
   377         kx fi
   377         kx 
   377         kx test -e Makefile || echo "include $source_path/Makefile" > Makefile
   377         kx 
   377         kx esc(){
   377         kx     echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
   377         kx }
   377         kx 
   377         kx echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" > ffbuild/config.fate
   377         kx 
   377         kx enabled stripping || strip="echo skipping strip"
   377         kx enabled stripping || striptype=""
   377         kx 
   377         kx config_files="$TMPH ffbuild/config.mak doc/config.texi"
   377         kx 
   377         kx cat > ffbuild/config.mak <<EOF
   377         kx # Automatically generated by configure - do not modify!
   377         kx ifndef FFMPEG_CONFIG_MAK
   377         kx FFMPEG_CONFIG_MAK=1
   377         kx FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
   377         kx prefix=$prefix
   377         kx LIBDIR=\$(DESTDIR)$libdir
   377         kx SHLIBDIR=\$(DESTDIR)$shlibdir
   377         kx INCDIR=\$(DESTDIR)$incdir
   377         kx BINDIR=\$(DESTDIR)$bindir
   377         kx DATADIR=\$(DESTDIR)$datadir
   377         kx DOCDIR=\$(DESTDIR)$docdir
   377         kx MANDIR=\$(DESTDIR)$mandir
   377         kx PKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir
   377         kx INSTALL_NAME_DIR=$install_name_dir
   377         kx SRC_PATH=$source_path
   377         kx SRC_LINK=$source_link
   377         kx ifndef MAIN_MAKEFILE
   377         kx SRC_PATH:=\$(SRC_PATH:.%=..%)
   377         kx endif
   377         kx CC_IDENT=$cc_ident
   377         kx ARCH=$arch
   377         kx INTRINSICS=$intrinsics
   377         kx EXTERN_PREFIX=$extern_prefix
   377         kx CC=$cc
   377         kx CXX=$cxx
   377         kx AS=$as
   377         kx OBJCC=$objcc
   377         kx LD=$ld
   377         kx DEPCC=$dep_cc
   377         kx DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
   377         kx DEPAS=$as
   377         kx DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
   377         kx X86ASM=$x86asmexe
   377         kx DEPX86ASM=$x86asmexe
   377         kx DEPX86ASMFLAGS=\$(X86ASMFLAGS)
   377         kx AR=$ar
   377         kx ARFLAGS=$arflags
   377         kx AR_O=$ar_o
   377         kx AR_CMD=$ar
   377         kx NM_CMD=$nm
   377         kx RANLIB=$ranlib
   377         kx STRIP=$strip
   377         kx STRIPTYPE=$striptype
   377         kx NVCC=$nvcc
   377         kx CP=cp -p
   377         kx LN_S=$ln_s
   377         kx CPPFLAGS=$CPPFLAGS
   377         kx CFLAGS=$CFLAGS
   377         kx CXXFLAGS=$CXXFLAGS
   377         kx OBJCFLAGS=$OBJCFLAGS
   377         kx ASFLAGS=$ASFLAGS
   377         kx NVCCFLAGS=$nvccflags
   377         kx AS_C=$AS_C
   377         kx AS_O=$AS_O
   377         kx OBJCC_C=$OBJCC_C
   377         kx OBJCC_E=$OBJCC_E
   377         kx OBJCC_O=$OBJCC_O
   377         kx CC_C=$CC_C
   377         kx CC_E=$CC_E
   377         kx CC_O=$CC_O
   377         kx CXX_C=$CXX_C
   377         kx CXX_O=$CXX_O
   377         kx NVCC_C=$NVCC_C
   377         kx NVCC_O=$NVCC_O
   377         kx LD_O=$LD_O
   377         kx X86ASM_O=$X86ASM_O
   377         kx LD_LIB=$LD_LIB
   377         kx LD_PATH=$LD_PATH
   377         kx DLLTOOL=$dlltool
   377         kx WINDRES=$windres
   377         kx DOXYGEN=$doxygen
   377         kx LDFLAGS=$LDFLAGS
   377         kx LDEXEFLAGS=$LDEXEFLAGS
   377         kx LDSOFLAGS=$LDSOFLAGS
   377         kx SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
   377         kx ASMSTRIPFLAGS=$ASMSTRIPFLAGS
   377         kx X86ASMFLAGS=$X86ASMFLAGS
   377         kx MSAFLAGS=$MSAFLAGS
   377         kx MMIFLAGS=$MMIFLAGS
   377         kx BUILDSUF=$build_suffix
   377         kx PROGSSUF=$progs_suffix
   377         kx FULLNAME=$FULLNAME
   377         kx LIBPREF=$LIBPREF
   377         kx LIBSUF=$LIBSUF
   377         kx LIBNAME=$LIBNAME
   377         kx SLIBPREF=$SLIBPREF
   377         kx SLIBSUF=$SLIBSUF
   377         kx EXESUF=$EXESUF
   377         kx EXTRA_VERSION=$extra_version
   377         kx CCDEP=$CCDEP
   377         kx CXXDEP=$CXXDEP
   377         kx CCDEP_FLAGS=$CCDEP_FLAGS
   377         kx ASDEP=$ASDEP
   377         kx ASDEP_FLAGS=$ASDEP_FLAGS
   377         kx X86ASMDEP=$X86ASMDEP
   377         kx X86ASMDEP_FLAGS=$X86ASMDEP_FLAGS
   377         kx CC_DEPFLAGS=$CC_DEPFLAGS
   377         kx AS_DEPFLAGS=$AS_DEPFLAGS
   377         kx X86ASM_DEPFLAGS=$X86ASM_DEPFLAGS
   377         kx HOSTCC=$host_cc
   377         kx HOSTLD=$host_ld
   377         kx HOSTCFLAGS=$host_cflags
   377         kx HOSTCPPFLAGS=$host_cppflags
   377         kx HOSTEXESUF=$HOSTEXESUF
   377         kx HOSTLDFLAGS=$host_ldflags
   377         kx HOSTEXTRALIBS=$host_extralibs
   377         kx DEPHOSTCC=$host_cc
   377         kx DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
   377         kx HOSTCCDEP=$HOSTCCDEP
   377         kx HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
   377         kx HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
   377         kx HOSTCC_C=$HOSTCC_C
   377         kx HOSTCC_O=$HOSTCC_O
   377         kx HOSTLD_O=$HOSTLD_O
   377         kx TARGET_EXEC=$target_exec $target_exec_args
   377         kx TARGET_PATH=$target_path
   377         kx TARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
   377         kx CFLAGS-ffplay=${sdl2_cflags}
   377         kx CFLAGS_HEADERS=$CFLAGS_HEADERS
   377         kx LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
   377         kx EXTRALIBS=$extralibs
   377         kx COMPAT_OBJS=$compat_objs
   377         kx INSTALL=$install
   377         kx LIBTARGET=${LIBTARGET}
   377         kx SLIBNAME=${SLIBNAME}
   377         kx SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
   377         kx SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
   377         kx SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
   377         kx SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
   377         kx SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
   377         kx SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
   377         kx SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
   377         kx SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
   377         kx VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
   377         kx SAMPLES:=${samples:-\$(FATE_SAMPLES)}
   377         kx NOREDZONE_FLAGS=$noredzone_flags
   377         kx LIBFUZZER_PATH=$libfuzzer_path
   377         kx IGNORE_TESTS=$ignore_tests
   377         kx EOF
   377         kx 
   377         kx map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST
   377         kx 
   377         kx for entry in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
   377         kx     eval echo "EXTRALIBS-${entry}=\$${entry}_extralibs" >> ffbuild/config.mak
   377         kx done
   377         kx 
   377         kx cat > $TMPH <<EOF
   377         kx /* Automatically generated by configure - do not modify! */
   377         kx #ifndef FFMPEG_CONFIG_H
   377         kx #define FFMPEG_CONFIG_H
   377         kx #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
   377         kx #define FFMPEG_LICENSE "$(c_escape $license)"
   377         kx #define CONFIG_THIS_YEAR 2023
   377         kx #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
   377         kx #define AVCONV_DATADIR "$(eval c_escape $datadir)"
   377         kx #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
   377         kx #define OS_NAME $target_os
   377         kx #define av_restrict $restrict_keyword
   377         kx #define EXTERN_PREFIX "${extern_prefix}"
   377         kx #define EXTERN_ASM ${extern_prefix}
   377         kx #define BUILDSUF "$build_suffix"
   377         kx #define SLIBSUF "$SLIBSUF"
   377         kx #define HAVE_MMX2 HAVE_MMXEXT
   377         kx #define SWS_MAX_FILTER_SIZE $sws_max_filter_size
   377         kx EOF
   377         kx 
   377         kx test -n "$assert_level" &&
   377         kx     echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
   377         kx 
   377         kx test -n "$malloc_prefix" &&
   377         kx     echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
   377         kx 
   377         kx if enabled x86asm; then
   377         kx     append config_files $TMPASM
   377         kx     cat > $TMPASM <<EOF
   377         kx ; Automatically generated by configure - do not modify!
   377         kx EOF
   377         kx fi
   377         kx 
   377         kx enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
   377         kx 
   377         kx 
   377         kx mkdir -p doc
   377         kx mkdir -p tests
   377         kx mkdir -p tests/api
   377         kx echo "@c auto-generated by configure - do not modify! " > doc/config.texi
   377         kx 
   377         kx print_config ARCH_   "$config_files" $ARCH_LIST
   377         kx print_config HAVE_   "$config_files" $HAVE_LIST
   377         kx print_config CONFIG_ "$config_files" $CONFIG_LIST       \
   377         kx                                      $CONFIG_EXTRA      \
   377         kx                                      $ALL_COMPONENTS    \
   377         kx 
   377         kx echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
   377         kx echo "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak
   377         kx 
   377         kx # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
   377         kx cp_if_changed $TMPH config.h
   377         kx touch ffbuild/.config
   377         kx 
   377         kx enabled x86asm && cp_if_changed $TMPASM config.asm
   377         kx 
   377         kx cat > $TMPH <<EOF
   377         kx /* Generated by ffmpeg configure */
   377         kx #ifndef AVUTIL_AVCONFIG_H
   377         kx #define AVUTIL_AVCONFIG_H
   377         kx EOF
   377         kx 
   377         kx print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
   377         kx 
   377         kx echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
   377         kx 
   377         kx cp_if_changed $TMPH libavutil/avconfig.h
   377         kx 
   377         kx # full_filter_name_foo=vf_foo
   377         kx # full_filter_name_bar=asrc_bar
   377         kx # ...
   377         kx eval "$(sed -n "s/^extern AVFilter ff_\([avfsinkrc]\{2,5\}\)_\(.*\);/full_filter_name_\2=\1_\2/p" $source_path/libavfilter/allfilters.c)"
   377         kx 
   377         kx # generate the lists of enabled components
   377         kx print_enabled_components(){
   377         kx     file=$1
   377         kx     struct_name=$2
   377         kx     name=$3
   377         kx     shift 3
   377         kx     echo "static const $struct_name * const $name[] = {" > $TMPH
   377         kx     for c in $*; do
   377         kx         if enabled $c; then
   377         kx             case $name in
   377         kx                 filter_list)
   377         kx                     eval c=\$full_filter_name_${c%_filter}
   377         kx                 ;;
   377         kx                 indev_list)
   377         kx                     c=${c%_indev}_demuxer
   377         kx                 ;;
   377         kx                 outdev_list)
   377         kx                     c=${c%_outdev}_muxer
   377         kx                 ;;
   377         kx             esac
   377         kx             printf "    &ff_%s,\n" $c >> $TMPH
   377         kx         fi
   377         kx     done
   377         kx     if [ "$name" = "filter_list" ]; then
   377         kx         for c in asrc_abuffer vsrc_buffer asink_abuffer vsink_buffer; do
   377         kx             printf "    &ff_%s,\n" $c >> $TMPH
   377         kx         done
   377         kx     fi
   377         kx     echo "    NULL };" >> $TMPH
   377         kx     cp_if_changed $TMPH $file
   377         kx }
   377         kx 
   377         kx print_enabled_components libavfilter/filter_list.c AVFilter filter_list $FILTER_LIST
   377         kx print_enabled_components libavcodec/codec_list.c AVCodec codec_list $CODEC_LIST
   377         kx print_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST
   377         kx print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
   377         kx print_enabled_components libavformat/demuxer_list.c AVInputFormat demuxer_list $DEMUXER_LIST
   377         kx print_enabled_components libavformat/muxer_list.c AVOutputFormat muxer_list $MUXER_LIST
   377         kx print_enabled_components libavdevice/indev_list.c AVInputFormat indev_list $INDEV_LIST
   377         kx print_enabled_components libavdevice/outdev_list.c AVOutputFormat outdev_list $OUTDEV_LIST
   377         kx print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
   377         kx 
   377         kx # Settings for pkg-config files
   377         kx 
   377         kx cat > $TMPH <<EOF
   377         kx # Automatically generated by configure - do not modify!
   377         kx shared=$shared
   377         kx build_suffix=$build_suffix
   377         kx prefix=$prefix
   377         kx libdir=$libdir
   377         kx incdir=$incdir
   377         kx rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}")
   377         kx source_path=${source_path}
   377         kx LIBPREF=${LIBPREF}
   377         kx LIBSUF=${LIBSUF}
   377         kx extralibs_avutil="$avutil_extralibs"
   377         kx extralibs_avcodec="$avcodec_extralibs"
   377         kx extralibs_avformat="$avformat_extralibs"
   377         kx extralibs_avdevice="$avdevice_extralibs"
   377         kx extralibs_avfilter="$avfilter_extralibs"
   377         kx extralibs_avresample="$avresample_extralibs"
   377         kx extralibs_postproc="$postproc_extralibs"
   377         kx extralibs_swscale="$swscale_extralibs"
   377         kx extralibs_swresample="$swresample_extralibs"
   377         kx EOF
   377         kx 
   377         kx for lib in $LIBRARY_LIST; do
   377         kx     lib_deps="$(eval echo \$${lib}_deps)"
   377         kx     echo ${lib}_deps=\"$lib_deps\" >> $TMPH
   377         kx done
   377         kx 
   377         kx cp_if_changed $TMPH ffbuild/config.sh