11bd4fe43Sopenharmony_ci#!/bin/sh
21bd4fe43Sopenharmony_ci#
31bd4fe43Sopenharmony_ci# FFmpeg configure script
41bd4fe43Sopenharmony_ci#
51bd4fe43Sopenharmony_ci# Copyright (c) 2000-2002 Fabrice Bellard
61bd4fe43Sopenharmony_ci# Copyright (c) 2005-2008 Diego Biurrun
71bd4fe43Sopenharmony_ci# Copyright (c) 2005-2008 Mans Rullgard
81bd4fe43Sopenharmony_ci#
91bd4fe43Sopenharmony_ci
101bd4fe43Sopenharmony_ci# Prevent locale nonsense from breaking basic text processing.
111bd4fe43Sopenharmony_ciLC_ALL=C
121bd4fe43Sopenharmony_ciexport LC_ALL
131bd4fe43Sopenharmony_ci
141bd4fe43Sopenharmony_ci# make sure we are running under a compatible shell
151bd4fe43Sopenharmony_ci# try to make this part work with most shells
161bd4fe43Sopenharmony_ci
171bd4fe43Sopenharmony_citry_exec(){
181bd4fe43Sopenharmony_ci    echo "Trying shell $1"
191bd4fe43Sopenharmony_ci    type "$1" > /dev/null 2>&1 && exec "$@"
201bd4fe43Sopenharmony_ci}
211bd4fe43Sopenharmony_ci
221bd4fe43Sopenharmony_ciunset foo
231bd4fe43Sopenharmony_ci(: ${foo%%bar}) 2> /dev/null
241bd4fe43Sopenharmony_ciE1="$?"
251bd4fe43Sopenharmony_ci
261bd4fe43Sopenharmony_ci(: ${foo?}) 2> /dev/null
271bd4fe43Sopenharmony_ciE2="$?"
281bd4fe43Sopenharmony_ci
291bd4fe43Sopenharmony_ciif test "$E1" != 0 || test "$E2" = 0; then
301bd4fe43Sopenharmony_ci    echo "Broken shell detected.  Trying alternatives."
311bd4fe43Sopenharmony_ci    export FF_CONF_EXEC
321bd4fe43Sopenharmony_ci    if test "0$FF_CONF_EXEC" -lt 1; then
331bd4fe43Sopenharmony_ci        FF_CONF_EXEC=1
341bd4fe43Sopenharmony_ci        try_exec bash "$0" "$@"
351bd4fe43Sopenharmony_ci    fi
361bd4fe43Sopenharmony_ci    if test "0$FF_CONF_EXEC" -lt 2; then
371bd4fe43Sopenharmony_ci        FF_CONF_EXEC=2
381bd4fe43Sopenharmony_ci        try_exec ksh "$0" "$@"
391bd4fe43Sopenharmony_ci    fi
401bd4fe43Sopenharmony_ci    if test "0$FF_CONF_EXEC" -lt 3; then
411bd4fe43Sopenharmony_ci        FF_CONF_EXEC=3
421bd4fe43Sopenharmony_ci        try_exec /usr/xpg4/bin/sh "$0" "$@"
431bd4fe43Sopenharmony_ci    fi
441bd4fe43Sopenharmony_ci    echo "No compatible shell script interpreter found."
451bd4fe43Sopenharmony_ci    echo "This configure script requires a POSIX-compatible shell"
461bd4fe43Sopenharmony_ci    echo "such as bash or ksh."
471bd4fe43Sopenharmony_ci    echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
481bd4fe43Sopenharmony_ci    echo "Instead, install a working POSIX-compatible shell."
491bd4fe43Sopenharmony_ci    echo "Disabling this configure test will create a broken FFmpeg."
501bd4fe43Sopenharmony_ci    if test "$BASH_VERSION" = '2.04.0(1)-release'; then
511bd4fe43Sopenharmony_ci        echo "This bash version ($BASH_VERSION) is broken on your platform."
521bd4fe43Sopenharmony_ci        echo "Upgrade to a later version if available."
531bd4fe43Sopenharmony_ci    fi
541bd4fe43Sopenharmony_ci    exit 1
551bd4fe43Sopenharmony_cifi
561bd4fe43Sopenharmony_ci
571bd4fe43Sopenharmony_citest -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH
581bd4fe43Sopenharmony_ci
591bd4fe43Sopenharmony_cishow_help(){
601bd4fe43Sopenharmony_ci    cat <<EOF
611bd4fe43Sopenharmony_ciUsage: configure [options]
621bd4fe43Sopenharmony_ciOptions: [defaults in brackets after descriptions]
631bd4fe43Sopenharmony_ci
641bd4fe43Sopenharmony_ciHelp options:
651bd4fe43Sopenharmony_ci  --help                   print this message
661bd4fe43Sopenharmony_ci  --quiet                  Suppress showing informative output
671bd4fe43Sopenharmony_ci  --list-decoders          show all available decoders
681bd4fe43Sopenharmony_ci  --list-encoders          show all available encoders
691bd4fe43Sopenharmony_ci  --list-hwaccels          show all available hardware accelerators
701bd4fe43Sopenharmony_ci  --list-demuxers          show all available demuxers
711bd4fe43Sopenharmony_ci  --list-muxers            show all available muxers
721bd4fe43Sopenharmony_ci  --list-parsers           show all available parsers
731bd4fe43Sopenharmony_ci  --list-protocols         show all available protocols
741bd4fe43Sopenharmony_ci  --list-bsfs              show all available bitstream filters
751bd4fe43Sopenharmony_ci  --list-indevs            show all available input devices
761bd4fe43Sopenharmony_ci  --list-outdevs           show all available output devices
771bd4fe43Sopenharmony_ci  --list-filters           show all available filters
781bd4fe43Sopenharmony_ci
791bd4fe43Sopenharmony_ciStandard options:
801bd4fe43Sopenharmony_ci  --logfile=FILE           log tests and output to FILE [ffbuild/config.log]
811bd4fe43Sopenharmony_ci  --disable-logging        do not log configure debug information
821bd4fe43Sopenharmony_ci  --fatal-warnings         fail if any configure warning is generated
831bd4fe43Sopenharmony_ci  --prefix=PREFIX          install in PREFIX [$prefix_default]
841bd4fe43Sopenharmony_ci  --bindir=DIR             install binaries in DIR [PREFIX/bin]
851bd4fe43Sopenharmony_ci  --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
861bd4fe43Sopenharmony_ci  --docdir=DIR             install documentation in DIR [PREFIX/share/doc/ffmpeg]
871bd4fe43Sopenharmony_ci  --libdir=DIR             install libs in DIR [PREFIX/lib]
881bd4fe43Sopenharmony_ci  --shlibdir=DIR           install shared libs in DIR [LIBDIR]
891bd4fe43Sopenharmony_ci  --incdir=DIR             install includes in DIR [PREFIX/include]
901bd4fe43Sopenharmony_ci  --mandir=DIR             install man page in DIR [PREFIX/share/man]
911bd4fe43Sopenharmony_ci  --pkgconfigdir=DIR       install pkg-config files in DIR [LIBDIR/pkgconfig]
921bd4fe43Sopenharmony_ci  --enable-rpath           use rpath to allow installing libraries in paths
931bd4fe43Sopenharmony_ci                           not part of the dynamic linker search path
941bd4fe43Sopenharmony_ci                           use rpath when linking programs (USE WITH CARE)
951bd4fe43Sopenharmony_ci  --install-name-dir=DIR   Darwin directory name for installed targets
961bd4fe43Sopenharmony_ci
971bd4fe43Sopenharmony_ciLicensing options:
981bd4fe43Sopenharmony_ci  --enable-gpl             allow use of GPL code, the resulting libs
991bd4fe43Sopenharmony_ci                           and binaries will be under GPL [no]
1001bd4fe43Sopenharmony_ci  --enable-version3        upgrade (L)GPL to version 3 [no]
1011bd4fe43Sopenharmony_ci  --enable-nonfree         allow use of nonfree code, the resulting libs
1021bd4fe43Sopenharmony_ci                           and binaries will be unredistributable [no]
1031bd4fe43Sopenharmony_ci
1041bd4fe43Sopenharmony_ciConfiguration options:
1051bd4fe43Sopenharmony_ci  --disable-static         do not build static libraries [no]
1061bd4fe43Sopenharmony_ci  --enable-shared          build shared libraries [no]
1071bd4fe43Sopenharmony_ci  --enable-small           optimize for size instead of speed
1081bd4fe43Sopenharmony_ci  --disable-runtime-cpudetect disable detecting CPU capabilities at runtime (smaller binary)
1091bd4fe43Sopenharmony_ci  --enable-gray            enable full grayscale support (slower color)
1101bd4fe43Sopenharmony_ci  --disable-swscale-alpha  disable alpha channel support in swscale
1111bd4fe43Sopenharmony_ci  --disable-all            disable building components, libraries and programs
1121bd4fe43Sopenharmony_ci  --disable-autodetect     disable automatically detected external libraries [no]
1131bd4fe43Sopenharmony_ci
1141bd4fe43Sopenharmony_ciProgram options:
1151bd4fe43Sopenharmony_ci  --disable-programs       do not build command line programs
1161bd4fe43Sopenharmony_ci  --disable-ffmpeg         disable ffmpeg build
1171bd4fe43Sopenharmony_ci  --disable-ffplay         disable ffplay build
1181bd4fe43Sopenharmony_ci  --disable-ffprobe        disable ffprobe build
1191bd4fe43Sopenharmony_ci
1201bd4fe43Sopenharmony_ciDocumentation options:
1211bd4fe43Sopenharmony_ci  --disable-doc            do not build documentation
1221bd4fe43Sopenharmony_ci  --disable-htmlpages      do not build HTML documentation pages
1231bd4fe43Sopenharmony_ci  --disable-manpages       do not build man documentation pages
1241bd4fe43Sopenharmony_ci  --disable-podpages       do not build POD documentation pages
1251bd4fe43Sopenharmony_ci  --disable-txtpages       do not build text documentation pages
1261bd4fe43Sopenharmony_ci
1271bd4fe43Sopenharmony_ciComponent options:
1281bd4fe43Sopenharmony_ci  --disable-avdevice       disable libavdevice build
1291bd4fe43Sopenharmony_ci  --disable-avcodec        disable libavcodec build
1301bd4fe43Sopenharmony_ci  --disable-avformat       disable libavformat build
1311bd4fe43Sopenharmony_ci  --disable-swresample     disable libswresample build
1321bd4fe43Sopenharmony_ci  --disable-swscale        disable libswscale build
1331bd4fe43Sopenharmony_ci  --disable-postproc       disable libpostproc build
1341bd4fe43Sopenharmony_ci  --disable-avfilter       disable libavfilter build
1351bd4fe43Sopenharmony_ci  --enable-avresample      enable libavresample build (deprecated) [no]
1361bd4fe43Sopenharmony_ci  --disable-pthreads       disable pthreads [autodetect]
1371bd4fe43Sopenharmony_ci  --disable-w32threads     disable Win32 threads [autodetect]
1381bd4fe43Sopenharmony_ci  --disable-os2threads     disable OS/2 threads [autodetect]
1391bd4fe43Sopenharmony_ci  --disable-network        disable network support [no]
1401bd4fe43Sopenharmony_ci  --disable-dct            disable DCT code
1411bd4fe43Sopenharmony_ci  --disable-dwt            disable DWT code
1421bd4fe43Sopenharmony_ci  --disable-error-resilience disable error resilience code
1431bd4fe43Sopenharmony_ci  --disable-lsp            disable LSP code
1441bd4fe43Sopenharmony_ci  --disable-lzo            disable LZO decoder code
1451bd4fe43Sopenharmony_ci  --disable-mdct           disable MDCT code
1461bd4fe43Sopenharmony_ci  --disable-rdft           disable RDFT code
1471bd4fe43Sopenharmony_ci  --disable-fft            disable FFT code
1481bd4fe43Sopenharmony_ci  --disable-faan           disable floating point AAN (I)DCT code
1491bd4fe43Sopenharmony_ci  --disable-pixelutils     disable pixel utils in libavutil
1501bd4fe43Sopenharmony_ci
1511bd4fe43Sopenharmony_ciIndividual component options:
1521bd4fe43Sopenharmony_ci  --disable-everything     disable all components listed below
1531bd4fe43Sopenharmony_ci  --disable-encoder=NAME   disable encoder NAME
1541bd4fe43Sopenharmony_ci  --enable-encoder=NAME    enable encoder NAME
1551bd4fe43Sopenharmony_ci  --disable-encoders       disable all encoders
1561bd4fe43Sopenharmony_ci  --disable-decoder=NAME   disable decoder NAME
1571bd4fe43Sopenharmony_ci  --enable-decoder=NAME    enable decoder NAME
1581bd4fe43Sopenharmony_ci  --disable-decoders       disable all decoders
1591bd4fe43Sopenharmony_ci  --disable-hwaccel=NAME   disable hwaccel NAME
1601bd4fe43Sopenharmony_ci  --enable-hwaccel=NAME    enable hwaccel NAME
1611bd4fe43Sopenharmony_ci  --disable-hwaccels       disable all hwaccels
1621bd4fe43Sopenharmony_ci  --disable-muxer=NAME     disable muxer NAME
1631bd4fe43Sopenharmony_ci  --enable-muxer=NAME      enable muxer NAME
1641bd4fe43Sopenharmony_ci  --disable-muxers         disable all muxers
1651bd4fe43Sopenharmony_ci  --disable-demuxer=NAME   disable demuxer NAME
1661bd4fe43Sopenharmony_ci  --enable-demuxer=NAME    enable demuxer NAME
1671bd4fe43Sopenharmony_ci  --disable-demuxers       disable all demuxers
1681bd4fe43Sopenharmony_ci  --enable-parser=NAME     enable parser NAME
1691bd4fe43Sopenharmony_ci  --disable-parser=NAME    disable parser NAME
1701bd4fe43Sopenharmony_ci  --disable-parsers        disable all parsers
1711bd4fe43Sopenharmony_ci  --enable-bsf=NAME        enable bitstream filter NAME
1721bd4fe43Sopenharmony_ci  --disable-bsf=NAME       disable bitstream filter NAME
1731bd4fe43Sopenharmony_ci  --disable-bsfs           disable all bitstream filters
1741bd4fe43Sopenharmony_ci  --enable-protocol=NAME   enable protocol NAME
1751bd4fe43Sopenharmony_ci  --disable-protocol=NAME  disable protocol NAME
1761bd4fe43Sopenharmony_ci  --disable-protocols      disable all protocols
1771bd4fe43Sopenharmony_ci  --enable-indev=NAME      enable input device NAME
1781bd4fe43Sopenharmony_ci  --disable-indev=NAME     disable input device NAME
1791bd4fe43Sopenharmony_ci  --disable-indevs         disable input devices
1801bd4fe43Sopenharmony_ci  --enable-outdev=NAME     enable output device NAME
1811bd4fe43Sopenharmony_ci  --disable-outdev=NAME    disable output device NAME
1821bd4fe43Sopenharmony_ci  --disable-outdevs        disable output devices
1831bd4fe43Sopenharmony_ci  --disable-devices        disable all devices
1841bd4fe43Sopenharmony_ci  --enable-filter=NAME     enable filter NAME
1851bd4fe43Sopenharmony_ci  --disable-filter=NAME    disable filter NAME
1861bd4fe43Sopenharmony_ci  --disable-filters        disable all filters
1871bd4fe43Sopenharmony_ci
1881bd4fe43Sopenharmony_ciExternal library support:
1891bd4fe43Sopenharmony_ci
1901bd4fe43Sopenharmony_ci  Using any of the following switches will allow FFmpeg to link to the
1911bd4fe43Sopenharmony_ci  corresponding external library. All the components depending on that library
1921bd4fe43Sopenharmony_ci  will become enabled, if all their other dependencies are met and they are not
1931bd4fe43Sopenharmony_ci  explicitly disabled. E.g. --enable-libopus will enable linking to
1941bd4fe43Sopenharmony_ci  libopus and allow the libopus encoder to be built, unless it is
1951bd4fe43Sopenharmony_ci  specifically disabled with --disable-encoder=libopus.
1961bd4fe43Sopenharmony_ci
1971bd4fe43Sopenharmony_ci  Note that only the system libraries are auto-detected. All the other external
1981bd4fe43Sopenharmony_ci  libraries must be explicitly enabled.
1991bd4fe43Sopenharmony_ci
2001bd4fe43Sopenharmony_ci  Also note that the following help text describes the purpose of the libraries
2011bd4fe43Sopenharmony_ci  themselves, not all their features will necessarily be usable by FFmpeg.
2021bd4fe43Sopenharmony_ci
2031bd4fe43Sopenharmony_ci  --disable-alsa           disable ALSA support [autodetect]
2041bd4fe43Sopenharmony_ci  --disable-appkit         disable Apple AppKit framework [autodetect]
2051bd4fe43Sopenharmony_ci  --disable-avfoundation   disable Apple AVFoundation framework [autodetect]
2061bd4fe43Sopenharmony_ci  --enable-avisynth        enable reading of AviSynth script files [no]
2071bd4fe43Sopenharmony_ci  --disable-bzlib          disable bzlib [autodetect]
2081bd4fe43Sopenharmony_ci  --disable-coreimage      disable Apple CoreImage framework [autodetect]
2091bd4fe43Sopenharmony_ci  --enable-chromaprint     enable audio fingerprinting with chromaprint [no]
2101bd4fe43Sopenharmony_ci  --enable-frei0r          enable frei0r video filtering [no]
2111bd4fe43Sopenharmony_ci  --enable-gcrypt          enable gcrypt, needed for rtmp(t)e support
2121bd4fe43Sopenharmony_ci                           if openssl, librtmp or gmp is not used [no]
2131bd4fe43Sopenharmony_ci  --enable-gmp             enable gmp, needed for rtmp(t)e support
2141bd4fe43Sopenharmony_ci                           if openssl or librtmp is not used [no]
2151bd4fe43Sopenharmony_ci  --enable-gnutls          enable gnutls, needed for https support
2161bd4fe43Sopenharmony_ci                           if openssl, libtls or mbedtls is not used [no]
2171bd4fe43Sopenharmony_ci  --disable-iconv          disable iconv [autodetect]
2181bd4fe43Sopenharmony_ci  --enable-jni             enable JNI support [no]
2191bd4fe43Sopenharmony_ci  --enable-ladspa          enable LADSPA audio filtering [no]
2201bd4fe43Sopenharmony_ci  --enable-libaom          enable AV1 video encoding/decoding via libaom [no]
2211bd4fe43Sopenharmony_ci  --enable-libaribb24      enable ARIB text and caption decoding via libaribb24 [no]
2221bd4fe43Sopenharmony_ci  --enable-libass          enable libass subtitles rendering,
2231bd4fe43Sopenharmony_ci                           needed for subtitles and ass filter [no]
2241bd4fe43Sopenharmony_ci  --enable-libbluray       enable BluRay reading using libbluray [no]
2251bd4fe43Sopenharmony_ci  --enable-libbs2b         enable bs2b DSP library [no]
2261bd4fe43Sopenharmony_ci  --enable-libcaca         enable textual display using libcaca [no]
2271bd4fe43Sopenharmony_ci  --enable-libcelt         enable CELT decoding via libcelt [no]
2281bd4fe43Sopenharmony_ci  --enable-libcdio         enable audio CD grabbing with libcdio [no]
2291bd4fe43Sopenharmony_ci  --enable-libcodec2       enable codec2 en/decoding using libcodec2 [no]
2301bd4fe43Sopenharmony_ci  --enable-libdav1d        enable AV1 decoding via libdav1d [no]
2311bd4fe43Sopenharmony_ci  --enable-libdavs2        enable AVS2 decoding via libdavs2 [no]
2321bd4fe43Sopenharmony_ci  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
2331bd4fe43Sopenharmony_ci                           and libraw1394 [no]
2341bd4fe43Sopenharmony_ci  --enable-libfdk-aac      enable AAC de/encoding via libfdk-aac [no]
2351bd4fe43Sopenharmony_ci  --enable-libflite        enable flite (voice synthesis) support via libflite [no]
2361bd4fe43Sopenharmony_ci  --enable-libfontconfig   enable libfontconfig, useful for drawtext filter [no]
2371bd4fe43Sopenharmony_ci  --enable-libfreetype     enable libfreetype, needed for drawtext filter [no]
2381bd4fe43Sopenharmony_ci  --enable-libfribidi      enable libfribidi, improves drawtext filter [no]
2391bd4fe43Sopenharmony_ci  --enable-libglslang      enable GLSL->SPIRV compilation via libglslang [no]
2401bd4fe43Sopenharmony_ci  --enable-libgme          enable Game Music Emu via libgme [no]
2411bd4fe43Sopenharmony_ci  --enable-libgsm          enable GSM de/encoding via libgsm [no]
2421bd4fe43Sopenharmony_ci  --enable-libiec61883     enable iec61883 via libiec61883 [no]
2431bd4fe43Sopenharmony_ci  --enable-libilbc         enable iLBC de/encoding via libilbc [no]
2441bd4fe43Sopenharmony_ci  --enable-libjack         enable JACK audio sound server [no]
2451bd4fe43Sopenharmony_ci  --enable-libklvanc       enable Kernel Labs VANC processing [no]
2461bd4fe43Sopenharmony_ci  --enable-libkvazaar      enable HEVC encoding via libkvazaar [no]
2471bd4fe43Sopenharmony_ci  --enable-liblensfun      enable lensfun lens correction [no]
2481bd4fe43Sopenharmony_ci  --enable-libmodplug      enable ModPlug via libmodplug [no]
2491bd4fe43Sopenharmony_ci  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
2501bd4fe43Sopenharmony_ci  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
2511bd4fe43Sopenharmony_ci  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
2521bd4fe43Sopenharmony_ci  --enable-libopencv       enable video filtering via libopencv [no]
2531bd4fe43Sopenharmony_ci  --enable-libopenh264     enable H.264 encoding via OpenH264 [no]
2541bd4fe43Sopenharmony_ci  --enable-libopenjpeg     enable JPEG 2000 de/encoding via OpenJPEG [no]
2551bd4fe43Sopenharmony_ci  --enable-libopenmpt      enable decoding tracked files via libopenmpt [no]
2561bd4fe43Sopenharmony_ci  --enable-libopenvino     enable OpenVINO as a DNN module backend
2571bd4fe43Sopenharmony_ci                           for DNN based filters like dnn_processing [no]
2581bd4fe43Sopenharmony_ci  --enable-libopus         enable Opus de/encoding via libopus [no]
2591bd4fe43Sopenharmony_ci  --enable-libpulse        enable Pulseaudio input via libpulse [no]
2601bd4fe43Sopenharmony_ci  --enable-librabbitmq     enable RabbitMQ library [no]
2611bd4fe43Sopenharmony_ci  --enable-librav1e        enable AV1 encoding via rav1e [no]
2621bd4fe43Sopenharmony_ci  --enable-librist         enable RIST via librist [no]
2631bd4fe43Sopenharmony_ci  --enable-librsvg         enable SVG rasterization via librsvg [no]
2641bd4fe43Sopenharmony_ci  --enable-librubberband   enable rubberband needed for rubberband filter [no]
2651bd4fe43Sopenharmony_ci  --enable-librtmp         enable RTMP[E] support via librtmp [no]
2661bd4fe43Sopenharmony_ci  --enable-libshine        enable fixed-point MP3 encoding via libshine [no]
2671bd4fe43Sopenharmony_ci  --enable-libsmbclient    enable Samba protocol via libsmbclient [no]
2681bd4fe43Sopenharmony_ci  --enable-libsnappy       enable Snappy compression, needed for hap encoding [no]
2691bd4fe43Sopenharmony_ci  --enable-libsoxr         enable Include libsoxr resampling [no]
2701bd4fe43Sopenharmony_ci  --enable-libspeex        enable Speex de/encoding via libspeex [no]
2711bd4fe43Sopenharmony_ci  --enable-libsrt          enable Haivision SRT protocol via libsrt [no]
2721bd4fe43Sopenharmony_ci  --enable-libssh          enable SFTP protocol via libssh [no]
2731bd4fe43Sopenharmony_ci  --enable-libsvtav1       enable AV1 encoding via SVT [no]
2741bd4fe43Sopenharmony_ci  --enable-libtensorflow   enable TensorFlow as a DNN module backend
2751bd4fe43Sopenharmony_ci                           for DNN based filters like sr [no]
2761bd4fe43Sopenharmony_ci  --enable-libtesseract    enable Tesseract, needed for ocr filter [no]
2771bd4fe43Sopenharmony_ci  --enable-libtheora       enable Theora encoding via libtheora [no]
2781bd4fe43Sopenharmony_ci  --enable-libtls          enable LibreSSL (via libtls), needed for https support
2791bd4fe43Sopenharmony_ci                           if openssl, gnutls or mbedtls is not used [no]
2801bd4fe43Sopenharmony_ci  --enable-libtwolame      enable MP2 encoding via libtwolame [no]
2811bd4fe43Sopenharmony_ci  --enable-libuavs3d       enable AVS3 decoding via libuavs3d [no]
2821bd4fe43Sopenharmony_ci  --enable-libv4l2         enable libv4l2/v4l-utils [no]
2831bd4fe43Sopenharmony_ci  --enable-libvidstab      enable video stabilization using vid.stab [no]
2841bd4fe43Sopenharmony_ci  --enable-libvmaf         enable vmaf filter via libvmaf [no]
2851bd4fe43Sopenharmony_ci  --enable-libvo-amrwbenc  enable AMR-WB encoding via libvo-amrwbenc [no]
2861bd4fe43Sopenharmony_ci  --enable-libvorbis       enable Vorbis en/decoding via libvorbis,
2871bd4fe43Sopenharmony_ci                           native implementation exists [no]
2881bd4fe43Sopenharmony_ci  --enable-libvpx          enable VP8 and VP9 de/encoding via libvpx [no]
2891bd4fe43Sopenharmony_ci  --enable-libwebp         enable WebP encoding via libwebp [no]
2901bd4fe43Sopenharmony_ci  --enable-libx264         enable H.264 encoding via x264 [no]
2911bd4fe43Sopenharmony_ci  --enable-libx265         enable HEVC encoding via x265 [no]
2921bd4fe43Sopenharmony_ci  --enable-libxavs         enable AVS encoding via xavs [no]
2931bd4fe43Sopenharmony_ci  --enable-libxavs2        enable AVS2 encoding via xavs2 [no]
2941bd4fe43Sopenharmony_ci  --enable-libxcb          enable X11 grabbing using XCB [autodetect]
2951bd4fe43Sopenharmony_ci  --enable-libxcb-shm      enable X11 grabbing shm communication [autodetect]
2961bd4fe43Sopenharmony_ci  --enable-libxcb-xfixes   enable X11 grabbing mouse rendering [autodetect]
2971bd4fe43Sopenharmony_ci  --enable-libxcb-shape    enable X11 grabbing shape rendering [autodetect]
2981bd4fe43Sopenharmony_ci  --enable-libxvid         enable Xvid encoding via xvidcore,
2991bd4fe43Sopenharmony_ci                           native MPEG-4/Xvid encoder exists [no]
3001bd4fe43Sopenharmony_ci  --enable-libxml2         enable XML parsing using the C library libxml2, needed
3011bd4fe43Sopenharmony_ci                           for dash demuxing support [no]
3021bd4fe43Sopenharmony_ci  --enable-libzimg         enable z.lib, needed for zscale filter [no]
3031bd4fe43Sopenharmony_ci  --enable-libzmq          enable message passing via libzmq [no]
3041bd4fe43Sopenharmony_ci  --enable-libzvbi         enable teletext support via libzvbi [no]
3051bd4fe43Sopenharmony_ci  --enable-lv2             enable LV2 audio filtering [no]
3061bd4fe43Sopenharmony_ci  --disable-lzma           disable lzma [autodetect]
3071bd4fe43Sopenharmony_ci  --enable-decklink        enable Blackmagic DeckLink I/O support [no]
3081bd4fe43Sopenharmony_ci  --enable-mbedtls         enable mbedTLS, needed for https support
3091bd4fe43Sopenharmony_ci                           if openssl, gnutls or libtls is not used [no]
3101bd4fe43Sopenharmony_ci  --enable-mediacodec      enable Android MediaCodec support [no]
3111bd4fe43Sopenharmony_ci  --enable-mediafoundation enable encoding via MediaFoundation [auto]
3121bd4fe43Sopenharmony_ci  --enable-libmysofa       enable libmysofa, needed for sofalizer filter [no]
3131bd4fe43Sopenharmony_ci  --enable-openal          enable OpenAL 1.1 capture support [no]
3141bd4fe43Sopenharmony_ci  --enable-opencl          enable OpenCL processing [no]
3151bd4fe43Sopenharmony_ci  --enable-opengl          enable OpenGL rendering [no]
3161bd4fe43Sopenharmony_ci  --enable-openssl         enable openssl, needed for https support
3171bd4fe43Sopenharmony_ci                           if gnutls, libtls or mbedtls is not used [no]
3181bd4fe43Sopenharmony_ci  --enable-pocketsphinx    enable PocketSphinx, needed for asr filter [no]
3191bd4fe43Sopenharmony_ci  --disable-sndio          disable sndio support [autodetect]
3201bd4fe43Sopenharmony_ci  --disable-schannel       disable SChannel SSP, needed for TLS support on
3211bd4fe43Sopenharmony_ci                           Windows if openssl and gnutls are not used [autodetect]
3221bd4fe43Sopenharmony_ci  --disable-sdl2           disable sdl2 [autodetect]
3231bd4fe43Sopenharmony_ci  --disable-securetransport disable Secure Transport, needed for TLS support
3241bd4fe43Sopenharmony_ci                           on OSX if openssl and gnutls are not used [autodetect]
3251bd4fe43Sopenharmony_ci  --enable-vapoursynth     enable VapourSynth demuxer [no]
3261bd4fe43Sopenharmony_ci  --enable-vulkan          enable Vulkan code [no]
3271bd4fe43Sopenharmony_ci  --disable-xlib           disable xlib [autodetect]
3281bd4fe43Sopenharmony_ci  --disable-zlib           disable zlib [autodetect]
3291bd4fe43Sopenharmony_ci
3301bd4fe43Sopenharmony_ci  The following libraries provide various hardware acceleration features:
3311bd4fe43Sopenharmony_ci  --disable-amf            disable AMF video encoding code [autodetect]
3321bd4fe43Sopenharmony_ci  --disable-audiotoolbox   disable Apple AudioToolbox code [autodetect]
3331bd4fe43Sopenharmony_ci  --enable-cuda-nvcc       enable Nvidia CUDA compiler [no]
3341bd4fe43Sopenharmony_ci  --disable-cuda-llvm      disable CUDA compilation using clang [autodetect]
3351bd4fe43Sopenharmony_ci  --disable-cuvid          disable Nvidia CUVID support [autodetect]
3361bd4fe43Sopenharmony_ci  --disable-d3d11va        disable Microsoft Direct3D 11 video acceleration code [autodetect]
3371bd4fe43Sopenharmony_ci  --disable-dxva2          disable Microsoft DirectX 9 video acceleration code [autodetect]
3381bd4fe43Sopenharmony_ci  --disable-ffnvcodec      disable dynamically linked Nvidia code [autodetect]
3391bd4fe43Sopenharmony_ci  --enable-libdrm          enable DRM code (Linux) [no]
3401bd4fe43Sopenharmony_ci  --enable-libmfx          enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
3411bd4fe43Sopenharmony_ci  --enable-libnpp          enable Nvidia Performance Primitives-based code [no]
3421bd4fe43Sopenharmony_ci  --enable-mmal            enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
3431bd4fe43Sopenharmony_ci  --disable-nvdec          disable Nvidia video decoding acceleration (via hwaccel) [autodetect]
3441bd4fe43Sopenharmony_ci  --disable-nvenc          disable Nvidia video encoding code [autodetect]
3451bd4fe43Sopenharmony_ci  --enable-omx             enable OpenMAX IL code [no]
3461bd4fe43Sopenharmony_ci  --enable-omx-rpi         enable OpenMAX IL code for Raspberry Pi [no]
3471bd4fe43Sopenharmony_ci  --enable-rkmpp           enable Rockchip Media Process Platform code [no]
3481bd4fe43Sopenharmony_ci  --disable-v4l2-m2m       disable V4L2 mem2mem code [autodetect]
3491bd4fe43Sopenharmony_ci  --disable-vaapi          disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
3501bd4fe43Sopenharmony_ci  --disable-vdpau          disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
3511bd4fe43Sopenharmony_ci  --disable-videotoolbox   disable VideoToolbox code [autodetect]
3521bd4fe43Sopenharmony_ci
3531bd4fe43Sopenharmony_ciToolchain options:
3541bd4fe43Sopenharmony_ci  --arch=ARCH              select architecture [$arch]
3551bd4fe43Sopenharmony_ci  --cpu=CPU                select the minimum required CPU (affects
3561bd4fe43Sopenharmony_ci                           instruction selection, may crash on older CPUs)
3571bd4fe43Sopenharmony_ci  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
3581bd4fe43Sopenharmony_ci  --progs-suffix=SUFFIX    program name suffix []
3591bd4fe43Sopenharmony_ci  --enable-cross-compile   assume a cross-compiler is used
3601bd4fe43Sopenharmony_ci  --sysroot=PATH           root of cross-build tree
3611bd4fe43Sopenharmony_ci  --sysinclude=PATH        location of cross-build system headers
3621bd4fe43Sopenharmony_ci  --target-os=OS           compiler targets OS [$target_os]
3631bd4fe43Sopenharmony_ci  --target-exec=CMD        command to run executables on target
3641bd4fe43Sopenharmony_ci  --target-path=DIR        path to view of build directory on target
3651bd4fe43Sopenharmony_ci  --target-samples=DIR     path to samples directory on target
3661bd4fe43Sopenharmony_ci  --tempprefix=PATH        force fixed dir/prefix instead of mktemp for checks
3671bd4fe43Sopenharmony_ci  --toolchain=NAME         set tool defaults according to NAME
3681bd4fe43Sopenharmony_ci                           (gcc-asan, clang-asan, gcc-msan, clang-msan,
3691bd4fe43Sopenharmony_ci                           gcc-tsan, clang-tsan, gcc-usan, clang-usan,
3701bd4fe43Sopenharmony_ci                           valgrind-massif, valgrind-memcheck,
3711bd4fe43Sopenharmony_ci                           msvc, icl, gcov, llvm-cov, hardened)
3721bd4fe43Sopenharmony_ci  --nm=NM                  use nm tool NM [$nm_default]
3731bd4fe43Sopenharmony_ci  --ar=AR                  use archive tool AR [$ar_default]
3741bd4fe43Sopenharmony_ci  --as=AS                  use assembler AS [$as_default]
3751bd4fe43Sopenharmony_ci  --ln_s=LN_S              use symbolic link tool LN_S [$ln_s_default]
3761bd4fe43Sopenharmony_ci  --strip=STRIP            use strip tool STRIP [$strip_default]
3771bd4fe43Sopenharmony_ci  --windres=WINDRES        use windows resource compiler WINDRES [$windres_default]
3781bd4fe43Sopenharmony_ci  --x86asmexe=EXE          use nasm-compatible assembler EXE [$x86asmexe_default]
3791bd4fe43Sopenharmony_ci  --cc=CC                  use C compiler CC [$cc_default]
3801bd4fe43Sopenharmony_ci  --cxx=CXX                use C compiler CXX [$cxx_default]
3811bd4fe43Sopenharmony_ci  --objcc=OCC              use ObjC compiler OCC [$cc_default]
3821bd4fe43Sopenharmony_ci  --dep-cc=DEPCC           use dependency generator DEPCC [$cc_default]
3831bd4fe43Sopenharmony_ci  --nvcc=NVCC              use Nvidia CUDA compiler NVCC or clang [$nvcc_default]
3841bd4fe43Sopenharmony_ci  --ld=LD                  use linker LD [$ld_default]
3851bd4fe43Sopenharmony_ci  --pkg-config=PKGCONFIG   use pkg-config tool PKGCONFIG [$pkg_config_default]
3861bd4fe43Sopenharmony_ci  --pkg-config-flags=FLAGS pass additional flags to pkgconf []
3871bd4fe43Sopenharmony_ci  --ranlib=RANLIB          use ranlib RANLIB [$ranlib_default]
3881bd4fe43Sopenharmony_ci  --doxygen=DOXYGEN        use DOXYGEN to generate API doc [$doxygen_default]
3891bd4fe43Sopenharmony_ci  --host-cc=HOSTCC         use host C compiler HOSTCC
3901bd4fe43Sopenharmony_ci  --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
3911bd4fe43Sopenharmony_ci  --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
3921bd4fe43Sopenharmony_ci  --host-ld=HOSTLD         use host linker HOSTLD
3931bd4fe43Sopenharmony_ci  --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
3941bd4fe43Sopenharmony_ci  --host-extralibs=HLIBS   use libs HLIBS when linking for host
3951bd4fe43Sopenharmony_ci  --host-os=OS             compiler host OS [$target_os]
3961bd4fe43Sopenharmony_ci  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
3971bd4fe43Sopenharmony_ci  --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
3981bd4fe43Sopenharmony_ci  --extra-objcflags=FLAGS  add FLAGS to OBJCFLAGS [$CFLAGS]
3991bd4fe43Sopenharmony_ci  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
4001bd4fe43Sopenharmony_ci  --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
4011bd4fe43Sopenharmony_ci  --extra-ldsoflags=ELDFLAGS add ELDFLAGS to LDSOFLAGS [$LDSOFLAGS]
4021bd4fe43Sopenharmony_ci  --extra-libs=ELIBS       add ELIBS [$ELIBS]
4031bd4fe43Sopenharmony_ci  --extra-version=STRING   version string suffix []
4041bd4fe43Sopenharmony_ci  --optflags=OPTFLAGS      override optimization-related compiler flags
4051bd4fe43Sopenharmony_ci  --nvccflags=NVCCFLAGS    override nvcc flags [$nvccflags_default]
4061bd4fe43Sopenharmony_ci  --build-suffix=SUFFIX    library name suffix []
4071bd4fe43Sopenharmony_ci  --enable-pic             build position-independent code
4081bd4fe43Sopenharmony_ci  --enable-thumb           compile for Thumb instruction set
4091bd4fe43Sopenharmony_ci  --enable-lto             use link-time optimization
4101bd4fe43Sopenharmony_ci  --env="ENV=override"     override the environment variables
4111bd4fe43Sopenharmony_ci
4121bd4fe43Sopenharmony_ciAdvanced options (experts only):
4131bd4fe43Sopenharmony_ci  --malloc-prefix=PREFIX   prefix malloc and related names with PREFIX
4141bd4fe43Sopenharmony_ci  --custom-allocator=NAME  use a supported custom allocator
4151bd4fe43Sopenharmony_ci  --disable-symver         disable symbol versioning
4161bd4fe43Sopenharmony_ci  --enable-hardcoded-tables use hardcoded tables instead of runtime generation
4171bd4fe43Sopenharmony_ci  --disable-safe-bitstream-reader
4181bd4fe43Sopenharmony_ci                           disable buffer boundary checking in bitreaders
4191bd4fe43Sopenharmony_ci                           (faster, but may crash)
4201bd4fe43Sopenharmony_ci  --sws-max-filter-size=N  the max filter size swscale uses [$sws_max_filter_size_default]
4211bd4fe43Sopenharmony_ci
4221bd4fe43Sopenharmony_ciOptimization options (experts only):
4231bd4fe43Sopenharmony_ci  --disable-asm            disable all assembly optimizations
4241bd4fe43Sopenharmony_ci  --disable-altivec        disable AltiVec optimizations
4251bd4fe43Sopenharmony_ci  --disable-vsx            disable VSX optimizations
4261bd4fe43Sopenharmony_ci  --disable-power8         disable POWER8 optimizations
4271bd4fe43Sopenharmony_ci  --disable-amd3dnow       disable 3DNow! optimizations
4281bd4fe43Sopenharmony_ci  --disable-amd3dnowext    disable 3DNow! extended optimizations
4291bd4fe43Sopenharmony_ci  --disable-mmx            disable MMX optimizations
4301bd4fe43Sopenharmony_ci  --disable-mmxext         disable MMXEXT optimizations
4311bd4fe43Sopenharmony_ci  --disable-sse            disable SSE optimizations
4321bd4fe43Sopenharmony_ci  --disable-sse2           disable SSE2 optimizations
4331bd4fe43Sopenharmony_ci  --disable-sse3           disable SSE3 optimizations
4341bd4fe43Sopenharmony_ci  --disable-ssse3          disable SSSE3 optimizations
4351bd4fe43Sopenharmony_ci  --disable-sse4           disable SSE4 optimizations
4361bd4fe43Sopenharmony_ci  --disable-sse42          disable SSE4.2 optimizations
4371bd4fe43Sopenharmony_ci  --disable-avx            disable AVX optimizations
4381bd4fe43Sopenharmony_ci  --disable-xop            disable XOP optimizations
4391bd4fe43Sopenharmony_ci  --disable-fma3           disable FMA3 optimizations
4401bd4fe43Sopenharmony_ci  --disable-fma4           disable FMA4 optimizations
4411bd4fe43Sopenharmony_ci  --disable-avx2           disable AVX2 optimizations
4421bd4fe43Sopenharmony_ci  --disable-avx512         disable AVX-512 optimizations
4431bd4fe43Sopenharmony_ci  --disable-aesni          disable AESNI optimizations
4441bd4fe43Sopenharmony_ci  --disable-armv5te        disable armv5te optimizations
4451bd4fe43Sopenharmony_ci  --disable-armv6          disable armv6 optimizations
4461bd4fe43Sopenharmony_ci  --disable-armv6t2        disable armv6t2 optimizations
4471bd4fe43Sopenharmony_ci  --disable-vfp            disable VFP optimizations
4481bd4fe43Sopenharmony_ci  --disable-neon           disable NEON optimizations
4491bd4fe43Sopenharmony_ci  --disable-inline-asm     disable use of inline assembly
4501bd4fe43Sopenharmony_ci  --disable-x86asm         disable use of standalone x86 assembly
4511bd4fe43Sopenharmony_ci  --disable-mipsdsp        disable MIPS DSP ASE R1 optimizations
4521bd4fe43Sopenharmony_ci  --disable-mipsdspr2      disable MIPS DSP ASE R2 optimizations
4531bd4fe43Sopenharmony_ci  --disable-msa            disable MSA optimizations
4541bd4fe43Sopenharmony_ci  --disable-msa2           disable MSA2 optimizations
4551bd4fe43Sopenharmony_ci  --disable-mipsfpu        disable floating point MIPS optimizations
4561bd4fe43Sopenharmony_ci  --disable-mmi            disable Loongson SIMD optimizations
4571bd4fe43Sopenharmony_ci  --disable-fast-unaligned consider unaligned accesses slow
4581bd4fe43Sopenharmony_ci
4591bd4fe43Sopenharmony_ciDeveloper options (useful when working on FFmpeg itself):
4601bd4fe43Sopenharmony_ci  --disable-debug          disable debugging symbols
4611bd4fe43Sopenharmony_ci  --enable-debug=LEVEL     set the debug level [$debuglevel]
4621bd4fe43Sopenharmony_ci  --disable-optimizations  disable compiler optimizations
4631bd4fe43Sopenharmony_ci  --enable-extra-warnings  enable more compiler warnings
4641bd4fe43Sopenharmony_ci  --disable-stripping      disable stripping of executables and shared libraries
4651bd4fe43Sopenharmony_ci  --assert-level=level     0(default), 1 or 2, amount of assertion testing,
4661bd4fe43Sopenharmony_ci                           2 causes a slowdown at runtime.
4671bd4fe43Sopenharmony_ci  --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
4681bd4fe43Sopenharmony_ci  --valgrind=VALGRIND      run "make fate" tests through valgrind to detect memory
4691bd4fe43Sopenharmony_ci                           leaks and errors, using the specified valgrind binary.
4701bd4fe43Sopenharmony_ci                           Cannot be combined with --target-exec
4711bd4fe43Sopenharmony_ci  --enable-ftrapv          Trap arithmetic overflows
4721bd4fe43Sopenharmony_ci  --samples=PATH           location of test samples for FATE, if not set use
4731bd4fe43Sopenharmony_ci                           \$FATE_SAMPLES at make invocation time.
4741bd4fe43Sopenharmony_ci  --enable-neon-clobber-test check NEON registers for clobbering (should be
4751bd4fe43Sopenharmony_ci                           used only for debugging purposes)
4761bd4fe43Sopenharmony_ci  --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
4771bd4fe43Sopenharmony_ci                           should be used only for debugging purposes)
4781bd4fe43Sopenharmony_ci  --enable-random          randomly enable/disable components
4791bd4fe43Sopenharmony_ci  --disable-random
4801bd4fe43Sopenharmony_ci  --enable-random=LIST     randomly enable/disable specific components or
4811bd4fe43Sopenharmony_ci  --disable-random=LIST    component groups. LIST is a comma-separated list
4821bd4fe43Sopenharmony_ci                           of NAME[:PROB] entries where NAME is a component
4831bd4fe43Sopenharmony_ci                           (group) and PROB the probability associated with
4841bd4fe43Sopenharmony_ci                           NAME (default 0.5).
4851bd4fe43Sopenharmony_ci  --random-seed=VALUE      seed value for --enable/disable-random
4861bd4fe43Sopenharmony_ci  --disable-valgrind-backtrace do not print a backtrace under Valgrind
4871bd4fe43Sopenharmony_ci                           (only applies to --disable-optimizations builds)
4881bd4fe43Sopenharmony_ci  --enable-ossfuzz         Enable building fuzzer tool
4891bd4fe43Sopenharmony_ci  --libfuzzer=PATH         path to libfuzzer
4901bd4fe43Sopenharmony_ci  --ignore-tests=TESTS     comma-separated list (without "fate-" prefix
4911bd4fe43Sopenharmony_ci                           in the name) of tests whose result is ignored
4921bd4fe43Sopenharmony_ci  --enable-linux-perf      enable Linux Performance Monitor API
4931bd4fe43Sopenharmony_ci  --disable-large-tests    disable tests that use a large amount of memory
4941bd4fe43Sopenharmony_ci
4951bd4fe43Sopenharmony_ciNOTE: Object files are built at the place where configure is launched.
4961bd4fe43Sopenharmony_ciEOF
4971bd4fe43Sopenharmony_ci  exit 0
4981bd4fe43Sopenharmony_ci}
4991bd4fe43Sopenharmony_ci
5001bd4fe43Sopenharmony_ciif test -t 1 && which tput >/dev/null 2>&1; then
5011bd4fe43Sopenharmony_ci    ncolors=$(tput colors)
5021bd4fe43Sopenharmony_ci    if test -n "$ncolors" && test $ncolors -ge 8; then
5031bd4fe43Sopenharmony_ci        bold_color=$(tput bold)
5041bd4fe43Sopenharmony_ci        warn_color=$(tput setaf 3)
5051bd4fe43Sopenharmony_ci        error_color=$(tput setaf 1)
5061bd4fe43Sopenharmony_ci        reset_color=$(tput sgr0)
5071bd4fe43Sopenharmony_ci    fi
5081bd4fe43Sopenharmony_ci    # 72 used instead of 80 since that's the default of pr
5091bd4fe43Sopenharmony_ci    ncols=$(tput cols)
5101bd4fe43Sopenharmony_cifi
5111bd4fe43Sopenharmony_ci: ${ncols:=72}
5121bd4fe43Sopenharmony_ci
5131bd4fe43Sopenharmony_cilog(){
5141bd4fe43Sopenharmony_ci    echo "$@" >> $logfile
5151bd4fe43Sopenharmony_ci}
5161bd4fe43Sopenharmony_ci
5171bd4fe43Sopenharmony_cilog_file(){
5181bd4fe43Sopenharmony_ci    log BEGIN "$1"
5191bd4fe43Sopenharmony_ci    log_file_i=1
5201bd4fe43Sopenharmony_ci    while IFS= read -r log_file_line; do
5211bd4fe43Sopenharmony_ci        printf '%5d\t%s\n' "$log_file_i" "$log_file_line"
5221bd4fe43Sopenharmony_ci        log_file_i=$(($log_file_i+1))
5231bd4fe43Sopenharmony_ci    done < "$1" >> "$logfile"
5241bd4fe43Sopenharmony_ci    log END "$1"
5251bd4fe43Sopenharmony_ci}
5261bd4fe43Sopenharmony_ci
5271bd4fe43Sopenharmony_ciwarn(){
5281bd4fe43Sopenharmony_ci    log "WARNING: $*"
5291bd4fe43Sopenharmony_ci    WARNINGS="${WARNINGS}WARNING: $*\n"
5301bd4fe43Sopenharmony_ci}
5311bd4fe43Sopenharmony_ci
5321bd4fe43Sopenharmony_cidie(){
5331bd4fe43Sopenharmony_ci    log "$@"
5341bd4fe43Sopenharmony_ci    echo "$error_color$bold_color$@$reset_color"
5351bd4fe43Sopenharmony_ci    cat <<EOF
5361bd4fe43Sopenharmony_ci
5371bd4fe43Sopenharmony_ciIf you think configure made a mistake, make sure you are using the latest
5381bd4fe43Sopenharmony_civersion from Git.  If the latest version fails, report the problem to the
5391bd4fe43Sopenharmony_ciffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.libera.chat.
5401bd4fe43Sopenharmony_ciEOF
5411bd4fe43Sopenharmony_ci    if disabled logging; then
5421bd4fe43Sopenharmony_ci        cat <<EOF
5431bd4fe43Sopenharmony_ciRerun configure with logging enabled (do not use --disable-logging), and
5441bd4fe43Sopenharmony_ciinclude the log this produces with your report.
5451bd4fe43Sopenharmony_ciEOF
5461bd4fe43Sopenharmony_ci    else
5471bd4fe43Sopenharmony_ci        cat <<EOF
5481bd4fe43Sopenharmony_ciInclude the log file "$logfile" produced by configure as this will help
5491bd4fe43Sopenharmony_cisolve the problem.
5501bd4fe43Sopenharmony_ciEOF
5511bd4fe43Sopenharmony_ci    fi
5521bd4fe43Sopenharmony_ci    exit 1
5531bd4fe43Sopenharmony_ci}
5541bd4fe43Sopenharmony_ci
5551bd4fe43Sopenharmony_ci# Avoid locale weirdness, besides we really just want to translate ASCII.
5561bd4fe43Sopenharmony_citoupper(){
5571bd4fe43Sopenharmony_ci    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
5581bd4fe43Sopenharmony_ci}
5591bd4fe43Sopenharmony_ci
5601bd4fe43Sopenharmony_citolower(){
5611bd4fe43Sopenharmony_ci    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
5621bd4fe43Sopenharmony_ci}
5631bd4fe43Sopenharmony_ci
5641bd4fe43Sopenharmony_cic_escape(){
5651bd4fe43Sopenharmony_ci    echo "$*" | sed 's/["\\]/\\\0/g'
5661bd4fe43Sopenharmony_ci}
5671bd4fe43Sopenharmony_ci
5681bd4fe43Sopenharmony_cish_quote(){
5691bd4fe43Sopenharmony_ci    v=$(echo "$1" | sed "s/'/'\\\\''/g")
5701bd4fe43Sopenharmony_ci    test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
5711bd4fe43Sopenharmony_ci    echo "$v"
5721bd4fe43Sopenharmony_ci}
5731bd4fe43Sopenharmony_ci
5741bd4fe43Sopenharmony_cicleanws(){
5751bd4fe43Sopenharmony_ci    echo "$@" | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//'
5761bd4fe43Sopenharmony_ci}
5771bd4fe43Sopenharmony_ci
5781bd4fe43Sopenharmony_cifilter(){
5791bd4fe43Sopenharmony_ci    pat=$1
5801bd4fe43Sopenharmony_ci    shift
5811bd4fe43Sopenharmony_ci    for v; do
5821bd4fe43Sopenharmony_ci        eval "case '$v' in $pat) printf '%s ' '$v' ;; esac"
5831bd4fe43Sopenharmony_ci    done
5841bd4fe43Sopenharmony_ci}
5851bd4fe43Sopenharmony_ci
5861bd4fe43Sopenharmony_cifilter_out(){
5871bd4fe43Sopenharmony_ci    pat=$1
5881bd4fe43Sopenharmony_ci    shift
5891bd4fe43Sopenharmony_ci    for v; do
5901bd4fe43Sopenharmony_ci        eval "case '$v' in $pat) ;; *) printf '%s ' '$v' ;; esac"
5911bd4fe43Sopenharmony_ci    done
5921bd4fe43Sopenharmony_ci}
5931bd4fe43Sopenharmony_ci
5941bd4fe43Sopenharmony_cimap(){
5951bd4fe43Sopenharmony_ci    m=$1
5961bd4fe43Sopenharmony_ci    shift
5971bd4fe43Sopenharmony_ci    for v; do eval $m; done
5981bd4fe43Sopenharmony_ci}
5991bd4fe43Sopenharmony_ci
6001bd4fe43Sopenharmony_ciadd_suffix(){
6011bd4fe43Sopenharmony_ci    suffix=$1
6021bd4fe43Sopenharmony_ci    shift
6031bd4fe43Sopenharmony_ci    for v; do echo ${v}${suffix}; done
6041bd4fe43Sopenharmony_ci}
6051bd4fe43Sopenharmony_ci
6061bd4fe43Sopenharmony_ciremove_suffix(){
6071bd4fe43Sopenharmony_ci    suffix=$1
6081bd4fe43Sopenharmony_ci    shift
6091bd4fe43Sopenharmony_ci    for v; do echo ${v%$suffix}; done
6101bd4fe43Sopenharmony_ci}
6111bd4fe43Sopenharmony_ci
6121bd4fe43Sopenharmony_ciset_all(){
6131bd4fe43Sopenharmony_ci    value=$1
6141bd4fe43Sopenharmony_ci    shift
6151bd4fe43Sopenharmony_ci    for var in $*; do
6161bd4fe43Sopenharmony_ci        eval $var=$value
6171bd4fe43Sopenharmony_ci    done
6181bd4fe43Sopenharmony_ci}
6191bd4fe43Sopenharmony_ci
6201bd4fe43Sopenharmony_ciset_weak(){
6211bd4fe43Sopenharmony_ci    value=$1
6221bd4fe43Sopenharmony_ci    shift
6231bd4fe43Sopenharmony_ci    for var; do
6241bd4fe43Sopenharmony_ci        eval : \${$var:=$value}
6251bd4fe43Sopenharmony_ci    done
6261bd4fe43Sopenharmony_ci}
6271bd4fe43Sopenharmony_ci
6281bd4fe43Sopenharmony_cisanitize_var_name(){
6291bd4fe43Sopenharmony_ci    echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
6301bd4fe43Sopenharmony_ci}
6311bd4fe43Sopenharmony_ci
6321bd4fe43Sopenharmony_ciset_sanitized(){
6331bd4fe43Sopenharmony_ci    var=$1
6341bd4fe43Sopenharmony_ci    shift
6351bd4fe43Sopenharmony_ci    eval $(sanitize_var_name "$var")='$*'
6361bd4fe43Sopenharmony_ci}
6371bd4fe43Sopenharmony_ci
6381bd4fe43Sopenharmony_ciget_sanitized(){
6391bd4fe43Sopenharmony_ci    eval echo \$$(sanitize_var_name "$1")
6401bd4fe43Sopenharmony_ci}
6411bd4fe43Sopenharmony_ci
6421bd4fe43Sopenharmony_cipushvar(){
6431bd4fe43Sopenharmony_ci    for pvar in $*; do
6441bd4fe43Sopenharmony_ci        eval level=\${${pvar}_level:=0}
6451bd4fe43Sopenharmony_ci        eval ${pvar}_${level}="\$$pvar"
6461bd4fe43Sopenharmony_ci        eval ${pvar}_level=$(($level+1))
6471bd4fe43Sopenharmony_ci    done
6481bd4fe43Sopenharmony_ci}
6491bd4fe43Sopenharmony_ci
6501bd4fe43Sopenharmony_cipopvar(){
6511bd4fe43Sopenharmony_ci    for pvar in $*; do
6521bd4fe43Sopenharmony_ci        eval level=\${${pvar}_level:-0}
6531bd4fe43Sopenharmony_ci        test $level = 0 && continue
6541bd4fe43Sopenharmony_ci        eval level=$(($level-1))
6551bd4fe43Sopenharmony_ci        eval $pvar="\${${pvar}_${level}}"
6561bd4fe43Sopenharmony_ci        eval ${pvar}_level=$level
6571bd4fe43Sopenharmony_ci        eval unset ${pvar}_${level}
6581bd4fe43Sopenharmony_ci    done
6591bd4fe43Sopenharmony_ci}
6601bd4fe43Sopenharmony_ci
6611bd4fe43Sopenharmony_cirequest(){
6621bd4fe43Sopenharmony_ci    for var in $*; do
6631bd4fe43Sopenharmony_ci        eval ${var}_requested=yes
6641bd4fe43Sopenharmony_ci        eval $var=
6651bd4fe43Sopenharmony_ci    done
6661bd4fe43Sopenharmony_ci}
6671bd4fe43Sopenharmony_ci
6681bd4fe43Sopenharmony_ciwarn_if_gets_disabled(){
6691bd4fe43Sopenharmony_ci    for var in $*; do
6701bd4fe43Sopenharmony_ci        WARN_IF_GETS_DISABLED_LIST="$WARN_IF_GETS_DISABLED_LIST $var"
6711bd4fe43Sopenharmony_ci    done
6721bd4fe43Sopenharmony_ci}
6731bd4fe43Sopenharmony_ci
6741bd4fe43Sopenharmony_cienable(){
6751bd4fe43Sopenharmony_ci    set_all yes $*
6761bd4fe43Sopenharmony_ci}
6771bd4fe43Sopenharmony_ci
6781bd4fe43Sopenharmony_cidisable(){
6791bd4fe43Sopenharmony_ci    set_all no $*
6801bd4fe43Sopenharmony_ci}
6811bd4fe43Sopenharmony_ci
6821bd4fe43Sopenharmony_cidisable_with_reason(){
6831bd4fe43Sopenharmony_ci    disable $1
6841bd4fe43Sopenharmony_ci    eval "${1}_disable_reason=\"$2\""
6851bd4fe43Sopenharmony_ci    if requested $1; then
6861bd4fe43Sopenharmony_ci        die "ERROR: $1 requested, but $2"
6871bd4fe43Sopenharmony_ci    fi
6881bd4fe43Sopenharmony_ci}
6891bd4fe43Sopenharmony_ci
6901bd4fe43Sopenharmony_cienable_weak(){
6911bd4fe43Sopenharmony_ci    set_weak yes $*
6921bd4fe43Sopenharmony_ci}
6931bd4fe43Sopenharmony_ci
6941bd4fe43Sopenharmony_cidisable_weak(){
6951bd4fe43Sopenharmony_ci    set_weak no $*
6961bd4fe43Sopenharmony_ci}
6971bd4fe43Sopenharmony_ci
6981bd4fe43Sopenharmony_cienable_sanitized(){
6991bd4fe43Sopenharmony_ci    for var; do
7001bd4fe43Sopenharmony_ci        enable $(sanitize_var_name $var)
7011bd4fe43Sopenharmony_ci    done
7021bd4fe43Sopenharmony_ci}
7031bd4fe43Sopenharmony_ci
7041bd4fe43Sopenharmony_cidisable_sanitized(){
7051bd4fe43Sopenharmony_ci    for var; do
7061bd4fe43Sopenharmony_ci        disable $(sanitize_var_name $var)
7071bd4fe43Sopenharmony_ci    done
7081bd4fe43Sopenharmony_ci}
7091bd4fe43Sopenharmony_ci
7101bd4fe43Sopenharmony_cido_enable_deep(){
7111bd4fe43Sopenharmony_ci    for var; do
7121bd4fe43Sopenharmony_ci        enabled $var && continue
7131bd4fe43Sopenharmony_ci        set -- $var
7141bd4fe43Sopenharmony_ci        eval enable_deep \$${var}_select
7151bd4fe43Sopenharmony_ci        var=$1
7161bd4fe43Sopenharmony_ci        eval enable_deep_weak \$${var}_suggest
7171bd4fe43Sopenharmony_ci    done
7181bd4fe43Sopenharmony_ci}
7191bd4fe43Sopenharmony_ci
7201bd4fe43Sopenharmony_cienable_deep(){
7211bd4fe43Sopenharmony_ci    do_enable_deep $*
7221bd4fe43Sopenharmony_ci    enable $*
7231bd4fe43Sopenharmony_ci}
7241bd4fe43Sopenharmony_ci
7251bd4fe43Sopenharmony_cienable_deep_weak(){
7261bd4fe43Sopenharmony_ci    for var; do
7271bd4fe43Sopenharmony_ci        disabled $var && continue
7281bd4fe43Sopenharmony_ci        set -- $var
7291bd4fe43Sopenharmony_ci        do_enable_deep $var
7301bd4fe43Sopenharmony_ci        var=$1
7311bd4fe43Sopenharmony_ci        enable_weak $var
7321bd4fe43Sopenharmony_ci    done
7331bd4fe43Sopenharmony_ci}
7341bd4fe43Sopenharmony_ci
7351bd4fe43Sopenharmony_cirequested(){
7361bd4fe43Sopenharmony_ci    test "${1#!}" = "$1" && op="=" || op="!="
7371bd4fe43Sopenharmony_ci    eval test "x\$${1#!}_requested" $op "xyes"
7381bd4fe43Sopenharmony_ci}
7391bd4fe43Sopenharmony_ci
7401bd4fe43Sopenharmony_cienabled(){
7411bd4fe43Sopenharmony_ci    test "${1#!}" = "$1" && op="=" || op="!="
7421bd4fe43Sopenharmony_ci    eval test "x\$${1#!}" $op "xyes"
7431bd4fe43Sopenharmony_ci}
7441bd4fe43Sopenharmony_ci
7451bd4fe43Sopenharmony_cidisabled(){
7461bd4fe43Sopenharmony_ci    test "${1#!}" = "$1" && op="=" || op="!="
7471bd4fe43Sopenharmony_ci    eval test "x\$${1#!}" $op "xno"
7481bd4fe43Sopenharmony_ci}
7491bd4fe43Sopenharmony_ci
7501bd4fe43Sopenharmony_cienabled_all(){
7511bd4fe43Sopenharmony_ci    for opt; do
7521bd4fe43Sopenharmony_ci        enabled $opt || return 1
7531bd4fe43Sopenharmony_ci    done
7541bd4fe43Sopenharmony_ci}
7551bd4fe43Sopenharmony_ci
7561bd4fe43Sopenharmony_cidisabled_all(){
7571bd4fe43Sopenharmony_ci    for opt; do
7581bd4fe43Sopenharmony_ci        disabled $opt || return 1
7591bd4fe43Sopenharmony_ci    done
7601bd4fe43Sopenharmony_ci}
7611bd4fe43Sopenharmony_ci
7621bd4fe43Sopenharmony_cienabled_any(){
7631bd4fe43Sopenharmony_ci    for opt; do
7641bd4fe43Sopenharmony_ci        enabled $opt && return 0
7651bd4fe43Sopenharmony_ci    done
7661bd4fe43Sopenharmony_ci}
7671bd4fe43Sopenharmony_ci
7681bd4fe43Sopenharmony_cidisabled_any(){
7691bd4fe43Sopenharmony_ci    for opt; do
7701bd4fe43Sopenharmony_ci        disabled $opt && return 0
7711bd4fe43Sopenharmony_ci    done
7721bd4fe43Sopenharmony_ci    return 1
7731bd4fe43Sopenharmony_ci}
7741bd4fe43Sopenharmony_ci
7751bd4fe43Sopenharmony_ciset_default(){
7761bd4fe43Sopenharmony_ci    for opt; do
7771bd4fe43Sopenharmony_ci        eval : \${$opt:=\$${opt}_default}
7781bd4fe43Sopenharmony_ci    done
7791bd4fe43Sopenharmony_ci}
7801bd4fe43Sopenharmony_ci
7811bd4fe43Sopenharmony_ciis_in(){
7821bd4fe43Sopenharmony_ci    value=$1
7831bd4fe43Sopenharmony_ci    shift
7841bd4fe43Sopenharmony_ci    for var in $*; do
7851bd4fe43Sopenharmony_ci        [ $var = $value ] && return 0
7861bd4fe43Sopenharmony_ci    done
7871bd4fe43Sopenharmony_ci    return 1
7881bd4fe43Sopenharmony_ci}
7891bd4fe43Sopenharmony_ci
7901bd4fe43Sopenharmony_ci# The cfg loop is very hot (several thousands iterations), and in bash also
7911bd4fe43Sopenharmony_ci# potentialy quite slow. Try to abort the iterations early, preferably without
7921bd4fe43Sopenharmony_ci# calling functions. 70%+ of the time cfg is already done or without deps.
7931bd4fe43Sopenharmony_cicheck_deps(){
7941bd4fe43Sopenharmony_ci    for cfg; do
7951bd4fe43Sopenharmony_ci        eval [ x\$${cfg}_checking = xdone ] && continue
7961bd4fe43Sopenharmony_ci        eval [ x\$${cfg}_checking = xinprogress ] && die "Circular dependency for $cfg."
7971bd4fe43Sopenharmony_ci
7981bd4fe43Sopenharmony_ci        eval "
7991bd4fe43Sopenharmony_ci        dep_all=\$${cfg}_deps
8001bd4fe43Sopenharmony_ci        dep_any=\$${cfg}_deps_any
8011bd4fe43Sopenharmony_ci        dep_con=\$${cfg}_conflict
8021bd4fe43Sopenharmony_ci        dep_sel=\$${cfg}_select
8031bd4fe43Sopenharmony_ci        dep_sgs=\$${cfg}_suggest
8041bd4fe43Sopenharmony_ci        dep_ifa=\$${cfg}_if
8051bd4fe43Sopenharmony_ci        dep_ifn=\$${cfg}_if_any
8061bd4fe43Sopenharmony_ci        "
8071bd4fe43Sopenharmony_ci
8081bd4fe43Sopenharmony_ci        # most of the time here $cfg has no deps - avoid costly no-op work
8091bd4fe43Sopenharmony_ci        if [ "$dep_all$dep_any$dep_con$dep_sel$dep_sgs$dep_ifa$dep_ifn" ]; then
8101bd4fe43Sopenharmony_ci            eval ${cfg}_checking=inprogress
8111bd4fe43Sopenharmony_ci
8121bd4fe43Sopenharmony_ci            set -- $cfg "$dep_all" "$dep_any" "$dep_con" "$dep_sel" "$dep_sgs" "$dep_ifa" "$dep_ifn"
8131bd4fe43Sopenharmony_ci            check_deps $dep_all $dep_any $dep_con $dep_sel $dep_sgs $dep_ifa $dep_ifn
8141bd4fe43Sopenharmony_ci            cfg=$1; dep_all=$2; dep_any=$3; dep_con=$4; dep_sel=$5 dep_sgs=$6; dep_ifa=$7; dep_ifn=$8
8151bd4fe43Sopenharmony_ci
8161bd4fe43Sopenharmony_ci            [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
8171bd4fe43Sopenharmony_ci            [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
8181bd4fe43Sopenharmony_ci            enabled_all  $dep_all || { disable_with_reason $cfg "not all dependencies are satisfied: $dep_all"; }
8191bd4fe43Sopenharmony_ci            enabled_any  $dep_any || { disable_with_reason $cfg "not any dependency is satisfied: $dep_any"; }
8201bd4fe43Sopenharmony_ci            disabled_all $dep_con || { disable_with_reason $cfg "some conflicting dependencies are unsatisfied: $dep_con"; }
8211bd4fe43Sopenharmony_ci            disabled_any $dep_sel && { disable_with_reason $cfg "some selected dependency is unsatisfied: $dep_sel"; }
8221bd4fe43Sopenharmony_ci
8231bd4fe43Sopenharmony_ci            enabled $cfg && enable_deep_weak $dep_sel $dep_sgs
8241bd4fe43Sopenharmony_ci
8251bd4fe43Sopenharmony_ci            for dep in $dep_all $dep_any $dep_sel $dep_sgs; do
8261bd4fe43Sopenharmony_ci                # filter out library deps, these do not belong in extralibs
8271bd4fe43Sopenharmony_ci                is_in $dep $LIBRARY_LIST && continue
8281bd4fe43Sopenharmony_ci                enabled $dep && eval append ${cfg}_extralibs ${dep}_extralibs
8291bd4fe43Sopenharmony_ci            done
8301bd4fe43Sopenharmony_ci        fi
8311bd4fe43Sopenharmony_ci
8321bd4fe43Sopenharmony_ci        eval ${cfg}_checking=done
8331bd4fe43Sopenharmony_ci    done
8341bd4fe43Sopenharmony_ci}
8351bd4fe43Sopenharmony_ci
8361bd4fe43Sopenharmony_ciprint_config(){
8371bd4fe43Sopenharmony_ci    pfx=$1
8381bd4fe43Sopenharmony_ci    files=$2
8391bd4fe43Sopenharmony_ci    shift 2
8401bd4fe43Sopenharmony_ci    map 'eval echo "$v \${$v:-no}"' "$@" |
8411bd4fe43Sopenharmony_ci    awk "BEGIN { split(\"$files\", files) }
8421bd4fe43Sopenharmony_ci        {
8431bd4fe43Sopenharmony_ci            c = \"$pfx\" toupper(\$1);
8441bd4fe43Sopenharmony_ci            v = \$2;
8451bd4fe43Sopenharmony_ci            sub(/yes/, 1, v);
8461bd4fe43Sopenharmony_ci            sub(/no/,  0, v);
8471bd4fe43Sopenharmony_ci            for (f in files) {
8481bd4fe43Sopenharmony_ci                file = files[f];
8491bd4fe43Sopenharmony_ci                if (file ~ /\\.h\$/) {
8501bd4fe43Sopenharmony_ci                    printf(\"#define %s %d\\n\", c, v) >>file;
8511bd4fe43Sopenharmony_ci                } else if (file ~ /\\.asm\$/) {
8521bd4fe43Sopenharmony_ci                    printf(\"%%define %s %d\\n\", c, v) >>file;
8531bd4fe43Sopenharmony_ci                } else if (file ~ /\\.mak\$/) {
8541bd4fe43Sopenharmony_ci                    n = -v ? \"\" : \"!\";
8551bd4fe43Sopenharmony_ci                    printf(\"%s%s=yes\\n\", n, c) >>file;
8561bd4fe43Sopenharmony_ci                } else if (file ~ /\\.texi\$/) {
8571bd4fe43Sopenharmony_ci                    pre = -v ? \"\" : \"@c \";
8581bd4fe43Sopenharmony_ci                    yesno = \$2;
8591bd4fe43Sopenharmony_ci                    c2 = tolower(c);
8601bd4fe43Sopenharmony_ci                    gsub(/_/, \"-\", c2);
8611bd4fe43Sopenharmony_ci                    printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
8621bd4fe43Sopenharmony_ci                }
8631bd4fe43Sopenharmony_ci            }
8641bd4fe43Sopenharmony_ci        }"
8651bd4fe43Sopenharmony_ci}
8661bd4fe43Sopenharmony_ci
8671bd4fe43Sopenharmony_ciprint_enabled(){
8681bd4fe43Sopenharmony_ci    suf=$1
8691bd4fe43Sopenharmony_ci    shift
8701bd4fe43Sopenharmony_ci    for v; do
8711bd4fe43Sopenharmony_ci        enabled $v && printf "%s\n" ${v%$suf}
8721bd4fe43Sopenharmony_ci    done
8731bd4fe43Sopenharmony_ci}
8741bd4fe43Sopenharmony_ci
8751bd4fe43Sopenharmony_ciappend(){
8761bd4fe43Sopenharmony_ci    var=$1
8771bd4fe43Sopenharmony_ci    shift
8781bd4fe43Sopenharmony_ci    eval "$var=\"\$$var $*\""
8791bd4fe43Sopenharmony_ci}
8801bd4fe43Sopenharmony_ci
8811bd4fe43Sopenharmony_ciprepend(){
8821bd4fe43Sopenharmony_ci    var=$1
8831bd4fe43Sopenharmony_ci    shift
8841bd4fe43Sopenharmony_ci    eval "$var=\"$* \$$var\""
8851bd4fe43Sopenharmony_ci}
8861bd4fe43Sopenharmony_ci
8871bd4fe43Sopenharmony_cireverse () {
8881bd4fe43Sopenharmony_ci    eval '
8891bd4fe43Sopenharmony_ci        reverse_out=
8901bd4fe43Sopenharmony_ci        for v in $'$1'; do
8911bd4fe43Sopenharmony_ci            reverse_out="$v $reverse_out"
8921bd4fe43Sopenharmony_ci        done
8931bd4fe43Sopenharmony_ci        '$1'=$reverse_out
8941bd4fe43Sopenharmony_ci    '
8951bd4fe43Sopenharmony_ci}
8961bd4fe43Sopenharmony_ci
8971bd4fe43Sopenharmony_ci# keeps the last occurence of each non-unique item
8981bd4fe43Sopenharmony_ciunique(){
8991bd4fe43Sopenharmony_ci    unique_out=
9001bd4fe43Sopenharmony_ci    eval unique_in=\$$1
9011bd4fe43Sopenharmony_ci    reverse unique_in
9021bd4fe43Sopenharmony_ci    for v in $unique_in; do
9031bd4fe43Sopenharmony_ci        # " $unique_out" +space such that every item is surrounded with spaces
9041bd4fe43Sopenharmony_ci        case " $unique_out" in *" $v "*) continue; esac  # already in list
9051bd4fe43Sopenharmony_ci        unique_out="$unique_out$v "
9061bd4fe43Sopenharmony_ci    done
9071bd4fe43Sopenharmony_ci    reverse unique_out
9081bd4fe43Sopenharmony_ci    eval $1=\$unique_out
9091bd4fe43Sopenharmony_ci}
9101bd4fe43Sopenharmony_ci
9111bd4fe43Sopenharmony_ciresolve(){
9121bd4fe43Sopenharmony_ci    resolve_out=
9131bd4fe43Sopenharmony_ci    eval resolve_in=\$$1
9141bd4fe43Sopenharmony_ci    for v in $resolve_in; do
9151bd4fe43Sopenharmony_ci        eval 'resolve_out="$resolve_out$'$v' "'
9161bd4fe43Sopenharmony_ci    done
9171bd4fe43Sopenharmony_ci    eval $1=\$resolve_out
9181bd4fe43Sopenharmony_ci}
9191bd4fe43Sopenharmony_ci
9201bd4fe43Sopenharmony_ciadd_cppflags(){
9211bd4fe43Sopenharmony_ci    append CPPFLAGS "$@"
9221bd4fe43Sopenharmony_ci}
9231bd4fe43Sopenharmony_ci
9241bd4fe43Sopenharmony_ciadd_cflags(){
9251bd4fe43Sopenharmony_ci    append CFLAGS $($cflags_filter "$@")
9261bd4fe43Sopenharmony_ci}
9271bd4fe43Sopenharmony_ci
9281bd4fe43Sopenharmony_ciadd_cflags_headers(){
9291bd4fe43Sopenharmony_ci    append CFLAGS_HEADERS $($cflags_filter "$@")
9301bd4fe43Sopenharmony_ci}
9311bd4fe43Sopenharmony_ci
9321bd4fe43Sopenharmony_ciadd_cxxflags(){
9331bd4fe43Sopenharmony_ci    append CXXFLAGS $($cflags_filter "$@")
9341bd4fe43Sopenharmony_ci}
9351bd4fe43Sopenharmony_ci
9361bd4fe43Sopenharmony_ciadd_objcflags(){
9371bd4fe43Sopenharmony_ci    append OBJCFLAGS $($objcflags_filter "$@")
9381bd4fe43Sopenharmony_ci}
9391bd4fe43Sopenharmony_ci
9401bd4fe43Sopenharmony_ciadd_asflags(){
9411bd4fe43Sopenharmony_ci    append ASFLAGS $($asflags_filter "$@")
9421bd4fe43Sopenharmony_ci}
9431bd4fe43Sopenharmony_ci
9441bd4fe43Sopenharmony_ciadd_ldflags(){
9451bd4fe43Sopenharmony_ci    append LDFLAGS $($ldflags_filter "$@")
9461bd4fe43Sopenharmony_ci}
9471bd4fe43Sopenharmony_ci
9481bd4fe43Sopenharmony_ciadd_ldexeflags(){
9491bd4fe43Sopenharmony_ci    append LDEXEFLAGS $($ldflags_filter "$@")
9501bd4fe43Sopenharmony_ci}
9511bd4fe43Sopenharmony_ci
9521bd4fe43Sopenharmony_ciadd_ldsoflags(){
9531bd4fe43Sopenharmony_ci    append LDSOFLAGS $($ldflags_filter "$@")
9541bd4fe43Sopenharmony_ci}
9551bd4fe43Sopenharmony_ci
9561bd4fe43Sopenharmony_ciadd_extralibs(){
9571bd4fe43Sopenharmony_ci    prepend extralibs $($ldflags_filter "$@")
9581bd4fe43Sopenharmony_ci}
9591bd4fe43Sopenharmony_ci
9601bd4fe43Sopenharmony_ciadd_stripflags(){
9611bd4fe43Sopenharmony_ci    append ASMSTRIPFLAGS "$@"
9621bd4fe43Sopenharmony_ci}
9631bd4fe43Sopenharmony_ci
9641bd4fe43Sopenharmony_ciadd_host_cppflags(){
9651bd4fe43Sopenharmony_ci    append host_cppflags "$@"
9661bd4fe43Sopenharmony_ci}
9671bd4fe43Sopenharmony_ci
9681bd4fe43Sopenharmony_ciadd_host_cflags(){
9691bd4fe43Sopenharmony_ci    append host_cflags $($host_cflags_filter "$@")
9701bd4fe43Sopenharmony_ci}
9711bd4fe43Sopenharmony_ci
9721bd4fe43Sopenharmony_ciadd_host_ldflags(){
9731bd4fe43Sopenharmony_ci    append host_ldflags $($host_ldflags_filter "$@")
9741bd4fe43Sopenharmony_ci}
9751bd4fe43Sopenharmony_ci
9761bd4fe43Sopenharmony_ciadd_compat(){
9771bd4fe43Sopenharmony_ci    append compat_objs $1
9781bd4fe43Sopenharmony_ci    shift
9791bd4fe43Sopenharmony_ci    map 'add_cppflags -D$v' "$@"
9801bd4fe43Sopenharmony_ci}
9811bd4fe43Sopenharmony_ci
9821bd4fe43Sopenharmony_citest_cmd(){
9831bd4fe43Sopenharmony_ci    log "$@"
9841bd4fe43Sopenharmony_ci    "$@" >> $logfile 2>&1
9851bd4fe43Sopenharmony_ci}
9861bd4fe43Sopenharmony_ci
9871bd4fe43Sopenharmony_citest_stat(){
9881bd4fe43Sopenharmony_ci    log test_stat "$@"
9891bd4fe43Sopenharmony_ci    stat "$1" >> $logfile 2>&1
9901bd4fe43Sopenharmony_ci}
9911bd4fe43Sopenharmony_ci
9921bd4fe43Sopenharmony_cicc_e(){
9931bd4fe43Sopenharmony_ci    eval printf '%s\\n' $CC_E
9941bd4fe43Sopenharmony_ci}
9951bd4fe43Sopenharmony_ci
9961bd4fe43Sopenharmony_cicc_o(){
9971bd4fe43Sopenharmony_ci    eval printf '%s\\n' $CC_O
9981bd4fe43Sopenharmony_ci}
9991bd4fe43Sopenharmony_ci
10001bd4fe43Sopenharmony_cias_o(){
10011bd4fe43Sopenharmony_ci    eval printf '%s\\n' $AS_O
10021bd4fe43Sopenharmony_ci}
10031bd4fe43Sopenharmony_ci
10041bd4fe43Sopenharmony_cix86asm_o(){
10051bd4fe43Sopenharmony_ci    eval printf '%s\\n' $X86ASM_O
10061bd4fe43Sopenharmony_ci}
10071bd4fe43Sopenharmony_ci
10081bd4fe43Sopenharmony_cild_o(){
10091bd4fe43Sopenharmony_ci    eval printf '%s\\n' $LD_O
10101bd4fe43Sopenharmony_ci}
10111bd4fe43Sopenharmony_ci
10121bd4fe43Sopenharmony_cihostcc_e(){
10131bd4fe43Sopenharmony_ci    eval printf '%s\\n' $HOSTCC_E
10141bd4fe43Sopenharmony_ci}
10151bd4fe43Sopenharmony_ci
10161bd4fe43Sopenharmony_cihostcc_o(){
10171bd4fe43Sopenharmony_ci    eval printf '%s\\n' $HOSTCC_O
10181bd4fe43Sopenharmony_ci}
10191bd4fe43Sopenharmony_ci
10201bd4fe43Sopenharmony_cinvcc_o(){
10211bd4fe43Sopenharmony_ci    eval printf '%s\\n' $NVCC_O
10221bd4fe43Sopenharmony_ci}
10231bd4fe43Sopenharmony_ci
10241bd4fe43Sopenharmony_citest_cc(){
10251bd4fe43Sopenharmony_ci    log test_cc "$@"
10261bd4fe43Sopenharmony_ci    cat > $TMPC
10271bd4fe43Sopenharmony_ci    log_file $TMPC
10281bd4fe43Sopenharmony_ci    test_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
10291bd4fe43Sopenharmony_ci}
10301bd4fe43Sopenharmony_ci
10311bd4fe43Sopenharmony_citest_cxx(){
10321bd4fe43Sopenharmony_ci    log test_cxx "$@"
10331bd4fe43Sopenharmony_ci    cat > $TMPCPP
10341bd4fe43Sopenharmony_ci    log_file $TMPCPP
10351bd4fe43Sopenharmony_ci    test_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
10361bd4fe43Sopenharmony_ci}
10371bd4fe43Sopenharmony_ci
10381bd4fe43Sopenharmony_citest_objcc(){
10391bd4fe43Sopenharmony_ci    log test_objcc "$@"
10401bd4fe43Sopenharmony_ci    cat > $TMPM
10411bd4fe43Sopenharmony_ci    log_file $TMPM
10421bd4fe43Sopenharmony_ci    test_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
10431bd4fe43Sopenharmony_ci}
10441bd4fe43Sopenharmony_ci
10451bd4fe43Sopenharmony_citest_nvcc(){
10461bd4fe43Sopenharmony_ci    log test_nvcc "$@"
10471bd4fe43Sopenharmony_ci    cat > $TMPCU
10481bd4fe43Sopenharmony_ci    log_file $TMPCU
10491bd4fe43Sopenharmony_ci    tmpcu_=$TMPCU
10501bd4fe43Sopenharmony_ci    tmpo_=$TMPO
10511bd4fe43Sopenharmony_ci    [ -x "$(command -v cygpath)" ] && tmpcu_=$(cygpath -m $tmpcu_) && tmpo_=$(cygpath -m $tmpo_)
10521bd4fe43Sopenharmony_ci    test_cmd $nvcc $nvccflags "$@" $NVCC_C $(nvcc_o $tmpo_) $tmpcu_
10531bd4fe43Sopenharmony_ci}
10541bd4fe43Sopenharmony_ci
10551bd4fe43Sopenharmony_cicheck_nvcc() {
10561bd4fe43Sopenharmony_ci    log check_nvcc "$@"
10571bd4fe43Sopenharmony_ci    name=$1
10581bd4fe43Sopenharmony_ci    shift 1
10591bd4fe43Sopenharmony_ci    disabled $name && return
10601bd4fe43Sopenharmony_ci    disable $name
10611bd4fe43Sopenharmony_ci    test_nvcc "$@" <<EOF && enable $name
10621bd4fe43Sopenharmony_ciextern "C" {
10631bd4fe43Sopenharmony_ci    __global__ void hello(unsigned char *data) {}
10641bd4fe43Sopenharmony_ci}
10651bd4fe43Sopenharmony_ciEOF
10661bd4fe43Sopenharmony_ci}
10671bd4fe43Sopenharmony_ci
10681bd4fe43Sopenharmony_citest_cpp(){
10691bd4fe43Sopenharmony_ci    log test_cpp "$@"
10701bd4fe43Sopenharmony_ci    cat > $TMPC
10711bd4fe43Sopenharmony_ci    log_file $TMPC
10721bd4fe43Sopenharmony_ci    test_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
10731bd4fe43Sopenharmony_ci}
10741bd4fe43Sopenharmony_ci
10751bd4fe43Sopenharmony_citest_as(){
10761bd4fe43Sopenharmony_ci    log test_as "$@"
10771bd4fe43Sopenharmony_ci    cat > $TMPS
10781bd4fe43Sopenharmony_ci    log_file $TMPS
10791bd4fe43Sopenharmony_ci    test_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
10801bd4fe43Sopenharmony_ci}
10811bd4fe43Sopenharmony_ci
10821bd4fe43Sopenharmony_citest_x86asm(){
10831bd4fe43Sopenharmony_ci    log test_x86asm "$@"
10841bd4fe43Sopenharmony_ci    echo "$1" > $TMPASM
10851bd4fe43Sopenharmony_ci    log_file $TMPASM
10861bd4fe43Sopenharmony_ci    shift
10871bd4fe43Sopenharmony_ci    test_cmd $x86asmexe $X86ASMFLAGS -Werror "$@" $(x86asm_o $TMPO) $TMPASM
10881bd4fe43Sopenharmony_ci}
10891bd4fe43Sopenharmony_ci
10901bd4fe43Sopenharmony_cicheck_cmd(){
10911bd4fe43Sopenharmony_ci    log check_cmd "$@"
10921bd4fe43Sopenharmony_ci    cmd=$1
10931bd4fe43Sopenharmony_ci    disabled $cmd && return
10941bd4fe43Sopenharmony_ci    disable $cmd
10951bd4fe43Sopenharmony_ci    test_cmd $@ && enable $cmd
10961bd4fe43Sopenharmony_ci}
10971bd4fe43Sopenharmony_ci
10981bd4fe43Sopenharmony_cicheck_as(){
10991bd4fe43Sopenharmony_ci    log check_as "$@"
11001bd4fe43Sopenharmony_ci    name=$1
11011bd4fe43Sopenharmony_ci    code=$2
11021bd4fe43Sopenharmony_ci    shift 2
11031bd4fe43Sopenharmony_ci    disable $name
11041bd4fe43Sopenharmony_ci    test_as $@ <<EOF && enable $name
11051bd4fe43Sopenharmony_ci$code
11061bd4fe43Sopenharmony_ciEOF
11071bd4fe43Sopenharmony_ci}
11081bd4fe43Sopenharmony_ci
11091bd4fe43Sopenharmony_cicheck_inline_asm(){
11101bd4fe43Sopenharmony_ci    log check_inline_asm "$@"
11111bd4fe43Sopenharmony_ci    name="$1"
11121bd4fe43Sopenharmony_ci    code="$2"
11131bd4fe43Sopenharmony_ci    shift 2
11141bd4fe43Sopenharmony_ci    disable $name
11151bd4fe43Sopenharmony_ci    test_cc "$@" <<EOF && enable $name
11161bd4fe43Sopenharmony_civoid foo(void){ __asm__ volatile($code); }
11171bd4fe43Sopenharmony_ciEOF
11181bd4fe43Sopenharmony_ci}
11191bd4fe43Sopenharmony_ci
11201bd4fe43Sopenharmony_cicheck_inline_asm_flags(){
11211bd4fe43Sopenharmony_ci    log check_inline_asm_flags "$@"
11221bd4fe43Sopenharmony_ci    name="$1"
11231bd4fe43Sopenharmony_ci    code="$2"
11241bd4fe43Sopenharmony_ci    flags=''
11251bd4fe43Sopenharmony_ci    shift 2
11261bd4fe43Sopenharmony_ci    while [ "$1" != "" ]; do
11271bd4fe43Sopenharmony_ci      append flags $1
11281bd4fe43Sopenharmony_ci      shift
11291bd4fe43Sopenharmony_ci    done;
11301bd4fe43Sopenharmony_ci    disable $name
11311bd4fe43Sopenharmony_ci    cat > $TMPC <<EOF
11321bd4fe43Sopenharmony_civoid foo(void){ __asm__ volatile($code); }
11331bd4fe43Sopenharmony_ciEOF
11341bd4fe43Sopenharmony_ci    log_file $TMPC
11351bd4fe43Sopenharmony_ci    test_cmd $cc $CPPFLAGS $CFLAGS $flags "$@" $CC_C $(cc_o $TMPO) $TMPC &&
11361bd4fe43Sopenharmony_ci    enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags
11371bd4fe43Sopenharmony_ci}
11381bd4fe43Sopenharmony_ci
11391bd4fe43Sopenharmony_cicheck_insn(){
11401bd4fe43Sopenharmony_ci    log check_insn "$@"
11411bd4fe43Sopenharmony_ci    check_inline_asm ${1}_inline "\"$2\""
11421bd4fe43Sopenharmony_ci    check_as ${1}_external "$2"
11431bd4fe43Sopenharmony_ci}
11441bd4fe43Sopenharmony_ci
11451bd4fe43Sopenharmony_cicheck_x86asm(){
11461bd4fe43Sopenharmony_ci    log check_x86asm "$@"
11471bd4fe43Sopenharmony_ci    name=$1
11481bd4fe43Sopenharmony_ci    shift
11491bd4fe43Sopenharmony_ci    disable $name
11501bd4fe43Sopenharmony_ci    test_x86asm "$@" && enable $name
11511bd4fe43Sopenharmony_ci}
11521bd4fe43Sopenharmony_ci
11531bd4fe43Sopenharmony_citest_ld(){
11541bd4fe43Sopenharmony_ci    log test_ld "$@"
11551bd4fe43Sopenharmony_ci    type=$1
11561bd4fe43Sopenharmony_ci    shift 1
11571bd4fe43Sopenharmony_ci    flags=$(filter_out '-l*|*.so' $@)
11581bd4fe43Sopenharmony_ci    libs=$(filter '-l*|*.so' $@)
11591bd4fe43Sopenharmony_ci    test_$type $($cflags_filter $flags) || return
11601bd4fe43Sopenharmony_ci    flags=$($ldflags_filter $flags)
11611bd4fe43Sopenharmony_ci    libs=$($ldflags_filter $libs)
11621bd4fe43Sopenharmony_ci    test_cmd $ld $LDFLAGS $LDEXEFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
11631bd4fe43Sopenharmony_ci}
11641bd4fe43Sopenharmony_ci
11651bd4fe43Sopenharmony_cicheck_ld(){
11661bd4fe43Sopenharmony_ci    log check_ld "$@"
11671bd4fe43Sopenharmony_ci    type=$1
11681bd4fe43Sopenharmony_ci    name=$2
11691bd4fe43Sopenharmony_ci    shift 2
11701bd4fe43Sopenharmony_ci    disable $name
11711bd4fe43Sopenharmony_ci    test_ld $type $@ && enable $name
11721bd4fe43Sopenharmony_ci}
11731bd4fe43Sopenharmony_ci
11741bd4fe43Sopenharmony_ciprint_include(){
11751bd4fe43Sopenharmony_ci    hdr=$1
11761bd4fe43Sopenharmony_ci    test "${hdr%.h}" = "${hdr}" &&
11771bd4fe43Sopenharmony_ci        echo "#include $hdr"    ||
11781bd4fe43Sopenharmony_ci        echo "#include <$hdr>"
11791bd4fe43Sopenharmony_ci}
11801bd4fe43Sopenharmony_ci
11811bd4fe43Sopenharmony_citest_code(){
11821bd4fe43Sopenharmony_ci    log test_code "$@"
11831bd4fe43Sopenharmony_ci    check=$1
11841bd4fe43Sopenharmony_ci    headers=$2
11851bd4fe43Sopenharmony_ci    code=$3
11861bd4fe43Sopenharmony_ci    shift 3
11871bd4fe43Sopenharmony_ci    {
11881bd4fe43Sopenharmony_ci        for hdr in $headers; do
11891bd4fe43Sopenharmony_ci            print_include $hdr
11901bd4fe43Sopenharmony_ci        done
11911bd4fe43Sopenharmony_ci        echo "int main(void) { $code; return 0; }"
11921bd4fe43Sopenharmony_ci    } | test_$check "$@"
11931bd4fe43Sopenharmony_ci}
11941bd4fe43Sopenharmony_ci
11951bd4fe43Sopenharmony_cicheck_cppflags(){
11961bd4fe43Sopenharmony_ci    log check_cppflags "$@"
11971bd4fe43Sopenharmony_ci    test_cpp "$@" <<EOF && append CPPFLAGS "$@"
11981bd4fe43Sopenharmony_ci#include <stdlib.h>
11991bd4fe43Sopenharmony_ciEOF
12001bd4fe43Sopenharmony_ci}
12011bd4fe43Sopenharmony_ci
12021bd4fe43Sopenharmony_citest_cflags(){
12031bd4fe43Sopenharmony_ci    log test_cflags "$@"
12041bd4fe43Sopenharmony_ci    set -- $($cflags_filter "$@")
12051bd4fe43Sopenharmony_ci    test_cc "$@" <<EOF
12061bd4fe43Sopenharmony_ciint x;
12071bd4fe43Sopenharmony_ciEOF
12081bd4fe43Sopenharmony_ci}
12091bd4fe43Sopenharmony_ci
12101bd4fe43Sopenharmony_cicheck_cflags(){
12111bd4fe43Sopenharmony_ci    log check_cflags "$@"
12121bd4fe43Sopenharmony_ci    test_cflags "$@" && add_cflags "$@"
12131bd4fe43Sopenharmony_ci}
12141bd4fe43Sopenharmony_ci
12151bd4fe43Sopenharmony_cicheck_cxxflags(){
12161bd4fe43Sopenharmony_ci    log check_cxxflags "$@"
12171bd4fe43Sopenharmony_ci    set -- $($cflags_filter "$@")
12181bd4fe43Sopenharmony_ci    test_cxx "$@" <<EOF && append CXXFLAGS "$@"
12191bd4fe43Sopenharmony_ciint x;
12201bd4fe43Sopenharmony_ciEOF
12211bd4fe43Sopenharmony_ci}
12221bd4fe43Sopenharmony_ci
12231bd4fe43Sopenharmony_citest_objcflags(){
12241bd4fe43Sopenharmony_ci    log test_objcflags "$@"
12251bd4fe43Sopenharmony_ci    set -- $($objcflags_filter "$@")
12261bd4fe43Sopenharmony_ci    test_objcc "$@" <<EOF
12271bd4fe43Sopenharmony_ciint x;
12281bd4fe43Sopenharmony_ciEOF
12291bd4fe43Sopenharmony_ci}
12301bd4fe43Sopenharmony_ci
12311bd4fe43Sopenharmony_cicheck_objcflags(){
12321bd4fe43Sopenharmony_ci    log check_objcflags "$@"
12331bd4fe43Sopenharmony_ci    test_objcflags "$@" && add_objcflags "$@"
12341bd4fe43Sopenharmony_ci}
12351bd4fe43Sopenharmony_ci
12361bd4fe43Sopenharmony_citest_ldflags(){
12371bd4fe43Sopenharmony_ci    log test_ldflags "$@"
12381bd4fe43Sopenharmony_ci    set -- $($ldflags_filter "$@")
12391bd4fe43Sopenharmony_ci    test_ld "cc" "$@" <<EOF
12401bd4fe43Sopenharmony_ciint main(void){ return 0; }
12411bd4fe43Sopenharmony_ciEOF
12421bd4fe43Sopenharmony_ci}
12431bd4fe43Sopenharmony_ci
12441bd4fe43Sopenharmony_cicheck_ldflags(){
12451bd4fe43Sopenharmony_ci    log check_ldflags "$@"
12461bd4fe43Sopenharmony_ci    test_ldflags "$@" && add_ldflags "$@"
12471bd4fe43Sopenharmony_ci}
12481bd4fe43Sopenharmony_ci
12491bd4fe43Sopenharmony_citest_stripflags(){
12501bd4fe43Sopenharmony_ci    log test_stripflags "$@"
12511bd4fe43Sopenharmony_ci    # call test_cc to get a fresh TMPO
12521bd4fe43Sopenharmony_ci    test_cc <<EOF
12531bd4fe43Sopenharmony_ciint main(void) { return 0; }
12541bd4fe43Sopenharmony_ciEOF
12551bd4fe43Sopenharmony_ci    test_cmd $strip $ASMSTRIPFLAGS "$@" $TMPO
12561bd4fe43Sopenharmony_ci}
12571bd4fe43Sopenharmony_ci
12581bd4fe43Sopenharmony_cicheck_stripflags(){
12591bd4fe43Sopenharmony_ci    log check_stripflags "$@"
12601bd4fe43Sopenharmony_ci    test_stripflags "$@" && add_stripflags "$@"
12611bd4fe43Sopenharmony_ci}
12621bd4fe43Sopenharmony_ci
12631bd4fe43Sopenharmony_cicheck_headers(){
12641bd4fe43Sopenharmony_ci    log check_headers "$@"
12651bd4fe43Sopenharmony_ci    headers=$1
12661bd4fe43Sopenharmony_ci    shift
12671bd4fe43Sopenharmony_ci    disable_sanitized $headers
12681bd4fe43Sopenharmony_ci    {
12691bd4fe43Sopenharmony_ci        for hdr in $headers; do
12701bd4fe43Sopenharmony_ci            print_include $hdr
12711bd4fe43Sopenharmony_ci        done
12721bd4fe43Sopenharmony_ci        echo "int x;"
12731bd4fe43Sopenharmony_ci    } | test_cpp "$@" && enable_sanitized $headers
12741bd4fe43Sopenharmony_ci}
12751bd4fe43Sopenharmony_ci
12761bd4fe43Sopenharmony_cicheck_header_objcc(){
12771bd4fe43Sopenharmony_ci    log check_header_objcc "$@"
12781bd4fe43Sopenharmony_ci    rm -f -- "$TMPO"
12791bd4fe43Sopenharmony_ci    header=$1
12801bd4fe43Sopenharmony_ci    shift
12811bd4fe43Sopenharmony_ci    disable_sanitized $header
12821bd4fe43Sopenharmony_ci    {
12831bd4fe43Sopenharmony_ci       echo "#include <$header>"
12841bd4fe43Sopenharmony_ci       echo "int main(void) { return 0; }"
12851bd4fe43Sopenharmony_ci    } | test_objcc && test_stat "$TMPO" && enable_sanitized $header
12861bd4fe43Sopenharmony_ci}
12871bd4fe43Sopenharmony_ci
12881bd4fe43Sopenharmony_cicheck_apple_framework(){
12891bd4fe43Sopenharmony_ci    log check_apple_framework "$@"
12901bd4fe43Sopenharmony_ci    framework="$1"
12911bd4fe43Sopenharmony_ci    name="$(tolower $framework)"
12921bd4fe43Sopenharmony_ci    header="${framework}/${framework}.h"
12931bd4fe43Sopenharmony_ci    disable $name
12941bd4fe43Sopenharmony_ci    check_header_objcc $header &&
12951bd4fe43Sopenharmony_ci        enable $name && eval ${name}_extralibs='"-framework $framework"'
12961bd4fe43Sopenharmony_ci}
12971bd4fe43Sopenharmony_ci
12981bd4fe43Sopenharmony_cicheck_func(){
12991bd4fe43Sopenharmony_ci    log check_func "$@"
13001bd4fe43Sopenharmony_ci    func=$1
13011bd4fe43Sopenharmony_ci    shift
13021bd4fe43Sopenharmony_ci    disable $func
13031bd4fe43Sopenharmony_ci    test_ld "cc" "$@" <<EOF && enable $func
13041bd4fe43Sopenharmony_ciextern int $func();
13051bd4fe43Sopenharmony_ciint main(void){ $func(); }
13061bd4fe43Sopenharmony_ciEOF
13071bd4fe43Sopenharmony_ci}
13081bd4fe43Sopenharmony_ci
13091bd4fe43Sopenharmony_cicheck_complexfunc(){
13101bd4fe43Sopenharmony_ci    log check_complexfunc "$@"
13111bd4fe43Sopenharmony_ci    func=$1
13121bd4fe43Sopenharmony_ci    narg=$2
13131bd4fe43Sopenharmony_ci    shift 2
13141bd4fe43Sopenharmony_ci    test $narg = 2 && args="f, g" || args="f * I"
13151bd4fe43Sopenharmony_ci    disable $func
13161bd4fe43Sopenharmony_ci    test_ld "cc" "$@" <<EOF && enable $func
13171bd4fe43Sopenharmony_ci#include <complex.h>
13181bd4fe43Sopenharmony_ci#include <math.h>
13191bd4fe43Sopenharmony_cifloat foo(complex float f, complex float g) { return $func($args); }
13201bd4fe43Sopenharmony_ciint main(void){ return (int) foo; }
13211bd4fe43Sopenharmony_ciEOF
13221bd4fe43Sopenharmony_ci}
13231bd4fe43Sopenharmony_ci
13241bd4fe43Sopenharmony_cicheck_mathfunc(){
13251bd4fe43Sopenharmony_ci    log check_mathfunc "$@"
13261bd4fe43Sopenharmony_ci    func=$1
13271bd4fe43Sopenharmony_ci    narg=$2
13281bd4fe43Sopenharmony_ci    shift 2
13291bd4fe43Sopenharmony_ci    test $narg = 2 && args="f, g" || args="f"
13301bd4fe43Sopenharmony_ci    disable $func
13311bd4fe43Sopenharmony_ci    test_ld "cc" "$@" <<EOF && enable $func
13321bd4fe43Sopenharmony_ci#include <math.h>
13331bd4fe43Sopenharmony_cifloat foo(float f, float g) { return $func($args); }
13341bd4fe43Sopenharmony_ciint main(void){ return (int) foo; }
13351bd4fe43Sopenharmony_ciEOF
13361bd4fe43Sopenharmony_ci}
13371bd4fe43Sopenharmony_ci
13381bd4fe43Sopenharmony_cicheck_func_headers(){
13391bd4fe43Sopenharmony_ci    log check_func_headers "$@"
13401bd4fe43Sopenharmony_ci    headers=$1
13411bd4fe43Sopenharmony_ci    funcs=$2
13421bd4fe43Sopenharmony_ci    shift 2
13431bd4fe43Sopenharmony_ci    {
13441bd4fe43Sopenharmony_ci        for hdr in $headers; do
13451bd4fe43Sopenharmony_ci            print_include $hdr
13461bd4fe43Sopenharmony_ci        done
13471bd4fe43Sopenharmony_ci        echo "#include <stdint.h>"
13481bd4fe43Sopenharmony_ci        for func in $funcs; do
13491bd4fe43Sopenharmony_ci            echo "long check_$func(void) { return (long) $func; }"
13501bd4fe43Sopenharmony_ci        done
13511bd4fe43Sopenharmony_ci        echo "int main(void) { int ret = 0;"
13521bd4fe43Sopenharmony_ci        # LTO could optimize out the test functions without this
13531bd4fe43Sopenharmony_ci        for func in $funcs; do
13541bd4fe43Sopenharmony_ci            echo " ret |= ((intptr_t)check_$func) & 0xFFFF;"
13551bd4fe43Sopenharmony_ci        done
13561bd4fe43Sopenharmony_ci        echo "return ret; }"
13571bd4fe43Sopenharmony_ci    } | test_ld "cc" "$@" && enable $funcs && enable_sanitized $headers
13581bd4fe43Sopenharmony_ci}
13591bd4fe43Sopenharmony_ci
13601bd4fe43Sopenharmony_cicheck_class_headers_cpp(){
13611bd4fe43Sopenharmony_ci    log check_class_headers_cpp "$@"
13621bd4fe43Sopenharmony_ci    headers=$1
13631bd4fe43Sopenharmony_ci    classes=$2
13641bd4fe43Sopenharmony_ci    shift 2
13651bd4fe43Sopenharmony_ci    {
13661bd4fe43Sopenharmony_ci        for hdr in $headers; do
13671bd4fe43Sopenharmony_ci            echo "#include <$hdr>"
13681bd4fe43Sopenharmony_ci        done
13691bd4fe43Sopenharmony_ci        echo "int main(void) { "
13701bd4fe43Sopenharmony_ci        i=1
13711bd4fe43Sopenharmony_ci        for class in $classes; do
13721bd4fe43Sopenharmony_ci            echo "$class obj$i;"
13731bd4fe43Sopenharmony_ci            i=$(expr $i + 1)
13741bd4fe43Sopenharmony_ci        done
13751bd4fe43Sopenharmony_ci        echo "return 0; }"
13761bd4fe43Sopenharmony_ci    } | test_ld "cxx" "$@" && enable $funcs && enable_sanitized $headers
13771bd4fe43Sopenharmony_ci}
13781bd4fe43Sopenharmony_ci
13791bd4fe43Sopenharmony_citest_cpp_condition(){
13801bd4fe43Sopenharmony_ci    log test_cpp_condition "$@"
13811bd4fe43Sopenharmony_ci    header=$1
13821bd4fe43Sopenharmony_ci    condition=$2
13831bd4fe43Sopenharmony_ci    shift 2
13841bd4fe43Sopenharmony_ci    test_cpp "$@" <<EOF
13851bd4fe43Sopenharmony_ci#include <$header>
13861bd4fe43Sopenharmony_ci#if !($condition)
13871bd4fe43Sopenharmony_ci#error "unsatisfied condition: $condition"
13881bd4fe43Sopenharmony_ci#endif
13891bd4fe43Sopenharmony_ciEOF
13901bd4fe43Sopenharmony_ci}
13911bd4fe43Sopenharmony_ci
13921bd4fe43Sopenharmony_cicheck_cpp_condition(){
13931bd4fe43Sopenharmony_ci    log check_cpp_condition "$@"
13941bd4fe43Sopenharmony_ci    name=$1
13951bd4fe43Sopenharmony_ci    shift 1
13961bd4fe43Sopenharmony_ci    disable $name
13971bd4fe43Sopenharmony_ci    test_cpp_condition "$@" && enable $name
13981bd4fe43Sopenharmony_ci}
13991bd4fe43Sopenharmony_ci
14001bd4fe43Sopenharmony_citest_cflags_cc(){
14011bd4fe43Sopenharmony_ci    log test_cflags_cc "$@"
14021bd4fe43Sopenharmony_ci    flags=$1
14031bd4fe43Sopenharmony_ci    header=$2
14041bd4fe43Sopenharmony_ci    condition=$3
14051bd4fe43Sopenharmony_ci    shift 3
14061bd4fe43Sopenharmony_ci    set -- $($cflags_filter "$flags")
14071bd4fe43Sopenharmony_ci    test_cc "$@" <<EOF
14081bd4fe43Sopenharmony_ci#include <$header>
14091bd4fe43Sopenharmony_ci#if !($condition)
14101bd4fe43Sopenharmony_ci#error "unsatisfied condition: $condition"
14111bd4fe43Sopenharmony_ci#endif
14121bd4fe43Sopenharmony_ciEOF
14131bd4fe43Sopenharmony_ci}
14141bd4fe43Sopenharmony_ci
14151bd4fe43Sopenharmony_cicheck_lib(){
14161bd4fe43Sopenharmony_ci    log check_lib "$@"
14171bd4fe43Sopenharmony_ci    name="$1"
14181bd4fe43Sopenharmony_ci    headers="$2"
14191bd4fe43Sopenharmony_ci    funcs="$3"
14201bd4fe43Sopenharmony_ci    shift 3
14211bd4fe43Sopenharmony_ci    disable $name
14221bd4fe43Sopenharmony_ci    check_func_headers "$headers" "$funcs" "$@" &&
14231bd4fe43Sopenharmony_ci        enable $name && eval ${name}_extralibs="\$@"
14241bd4fe43Sopenharmony_ci}
14251bd4fe43Sopenharmony_ci
14261bd4fe43Sopenharmony_cicheck_lib_cpp(){
14271bd4fe43Sopenharmony_ci    log check_lib_cpp "$@"
14281bd4fe43Sopenharmony_ci    name="$1"
14291bd4fe43Sopenharmony_ci    headers="$2"
14301bd4fe43Sopenharmony_ci    classes="$3"
14311bd4fe43Sopenharmony_ci    shift 3
14321bd4fe43Sopenharmony_ci    disable $name
14331bd4fe43Sopenharmony_ci    check_class_headers_cpp "$headers" "$classes" "$@" &&
14341bd4fe43Sopenharmony_ci        enable $name && eval ${name}_extralibs="\$@"
14351bd4fe43Sopenharmony_ci}
14361bd4fe43Sopenharmony_ci
14371bd4fe43Sopenharmony_citest_pkg_config(){
14381bd4fe43Sopenharmony_ci    log test_pkg_config "$@"
14391bd4fe43Sopenharmony_ci    name="$1"
14401bd4fe43Sopenharmony_ci    pkg_version="$2"
14411bd4fe43Sopenharmony_ci    pkg="${2%% *}"
14421bd4fe43Sopenharmony_ci    headers="$3"
14431bd4fe43Sopenharmony_ci    funcs="$4"
14441bd4fe43Sopenharmony_ci    shift 4
14451bd4fe43Sopenharmony_ci    disable $name
14461bd4fe43Sopenharmony_ci    test_cmd $pkg_config --exists --print-errors $pkg_version || return
14471bd4fe43Sopenharmony_ci    pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
14481bd4fe43Sopenharmony_ci    pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
14491bd4fe43Sopenharmony_ci    check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
14501bd4fe43Sopenharmony_ci        enable $name &&
14511bd4fe43Sopenharmony_ci        set_sanitized "${name}_cflags"    $pkg_cflags &&
14521bd4fe43Sopenharmony_ci        set_sanitized "${name}_extralibs" $pkg_libs
14531bd4fe43Sopenharmony_ci}
14541bd4fe43Sopenharmony_ci
14551bd4fe43Sopenharmony_cicheck_pkg_config(){
14561bd4fe43Sopenharmony_ci    log check_pkg_config "$@"
14571bd4fe43Sopenharmony_ci    name="$1"
14581bd4fe43Sopenharmony_ci    test_pkg_config "$@" &&
14591bd4fe43Sopenharmony_ci        eval add_cflags \$${name}_cflags
14601bd4fe43Sopenharmony_ci}
14611bd4fe43Sopenharmony_ci
14621bd4fe43Sopenharmony_citest_exec(){
14631bd4fe43Sopenharmony_ci    test_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
14641bd4fe43Sopenharmony_ci}
14651bd4fe43Sopenharmony_ci
14661bd4fe43Sopenharmony_cicheck_exec_crash(){
14671bd4fe43Sopenharmony_ci    log check_exec_crash "$@"
14681bd4fe43Sopenharmony_ci    code=$(cat)
14691bd4fe43Sopenharmony_ci
14701bd4fe43Sopenharmony_ci    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
14711bd4fe43Sopenharmony_ci    # are safe but may not be available everywhere.  Thus we use
14721bd4fe43Sopenharmony_ci    # raise(SIGTERM) instead.  The check is run in a subshell so we
14731bd4fe43Sopenharmony_ci    # can redirect the "Terminated" message from the shell.  SIGBUS
14741bd4fe43Sopenharmony_ci    # is not defined by standard C so it is used conditionally.
14751bd4fe43Sopenharmony_ci
14761bd4fe43Sopenharmony_ci    (test_exec "$@") >> $logfile 2>&1 <<EOF
14771bd4fe43Sopenharmony_ci#include <signal.h>
14781bd4fe43Sopenharmony_cistatic void sighandler(int sig){
14791bd4fe43Sopenharmony_ci    raise(SIGTERM);
14801bd4fe43Sopenharmony_ci}
14811bd4fe43Sopenharmony_ciint foo(void){
14821bd4fe43Sopenharmony_ci    $code
14831bd4fe43Sopenharmony_ci}
14841bd4fe43Sopenharmony_ciint (*func_ptr)(void) = foo;
14851bd4fe43Sopenharmony_ciint main(void){
14861bd4fe43Sopenharmony_ci    signal(SIGILL, sighandler);
14871bd4fe43Sopenharmony_ci    signal(SIGFPE, sighandler);
14881bd4fe43Sopenharmony_ci    signal(SIGSEGV, sighandler);
14891bd4fe43Sopenharmony_ci#ifdef SIGBUS
14901bd4fe43Sopenharmony_ci    signal(SIGBUS, sighandler);
14911bd4fe43Sopenharmony_ci#endif
14921bd4fe43Sopenharmony_ci    return func_ptr();
14931bd4fe43Sopenharmony_ci}
14941bd4fe43Sopenharmony_ciEOF
14951bd4fe43Sopenharmony_ci}
14961bd4fe43Sopenharmony_ci
14971bd4fe43Sopenharmony_cicheck_type(){
14981bd4fe43Sopenharmony_ci    log check_type "$@"
14991bd4fe43Sopenharmony_ci    headers=$1
15001bd4fe43Sopenharmony_ci    type=$2
15011bd4fe43Sopenharmony_ci    shift 2
15021bd4fe43Sopenharmony_ci    disable_sanitized "$type"
15031bd4fe43Sopenharmony_ci    test_code cc "$headers" "$type v" "$@" && enable_sanitized "$type"
15041bd4fe43Sopenharmony_ci}
15051bd4fe43Sopenharmony_ci
15061bd4fe43Sopenharmony_cicheck_struct(){
15071bd4fe43Sopenharmony_ci    log check_struct "$@"
15081bd4fe43Sopenharmony_ci    headers=$1
15091bd4fe43Sopenharmony_ci    struct=$2
15101bd4fe43Sopenharmony_ci    member=$3
15111bd4fe43Sopenharmony_ci    shift 3
15121bd4fe43Sopenharmony_ci    disable_sanitized "${struct}_${member}"
15131bd4fe43Sopenharmony_ci    test_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
15141bd4fe43Sopenharmony_ci        enable_sanitized "${struct}_${member}"
15151bd4fe43Sopenharmony_ci}
15161bd4fe43Sopenharmony_ci
15171bd4fe43Sopenharmony_cicheck_builtin(){
15181bd4fe43Sopenharmony_ci    log check_builtin "$@"
15191bd4fe43Sopenharmony_ci    name=$1
15201bd4fe43Sopenharmony_ci    headers=$2
15211bd4fe43Sopenharmony_ci    builtin=$3
15221bd4fe43Sopenharmony_ci    shift 3
15231bd4fe43Sopenharmony_ci    disable "$name"
15241bd4fe43Sopenharmony_ci    test_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
15251bd4fe43Sopenharmony_ci}
15261bd4fe43Sopenharmony_ci
15271bd4fe43Sopenharmony_cicheck_compile_assert(){
15281bd4fe43Sopenharmony_ci    log check_compile_assert "$@"
15291bd4fe43Sopenharmony_ci    name=$1
15301bd4fe43Sopenharmony_ci    headers=$2
15311bd4fe43Sopenharmony_ci    condition=$3
15321bd4fe43Sopenharmony_ci    shift 3
15331bd4fe43Sopenharmony_ci    disable "$name"
15341bd4fe43Sopenharmony_ci    test_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
15351bd4fe43Sopenharmony_ci}
15361bd4fe43Sopenharmony_ci
15371bd4fe43Sopenharmony_cicheck_cc(){
15381bd4fe43Sopenharmony_ci    log check_cc "$@"
15391bd4fe43Sopenharmony_ci    name=$1
15401bd4fe43Sopenharmony_ci    shift
15411bd4fe43Sopenharmony_ci    disable "$name"
15421bd4fe43Sopenharmony_ci    test_code cc "$@" && enable "$name"
15431bd4fe43Sopenharmony_ci}
15441bd4fe43Sopenharmony_ci
15451bd4fe43Sopenharmony_cirequire(){
15461bd4fe43Sopenharmony_ci    log require "$@"
15471bd4fe43Sopenharmony_ci    name_version="$1"
15481bd4fe43Sopenharmony_ci    name="${1%% *}"
15491bd4fe43Sopenharmony_ci    shift
15501bd4fe43Sopenharmony_ci    check_lib $name "$@" || die "ERROR: $name_version not found"
15511bd4fe43Sopenharmony_ci}
15521bd4fe43Sopenharmony_ci
15531bd4fe43Sopenharmony_cirequire_cc(){
15541bd4fe43Sopenharmony_ci    log require_cc "$@"
15551bd4fe43Sopenharmony_ci    name="$1"
15561bd4fe43Sopenharmony_ci    check_cc "$@" || die "ERROR: $name failed"
15571bd4fe43Sopenharmony_ci}
15581bd4fe43Sopenharmony_ci
15591bd4fe43Sopenharmony_cirequire_cpp(){
15601bd4fe43Sopenharmony_ci    log require_cpp "$@"
15611bd4fe43Sopenharmony_ci    name_version="$1"
15621bd4fe43Sopenharmony_ci    name="${1%% *}"
15631bd4fe43Sopenharmony_ci    shift
15641bd4fe43Sopenharmony_ci    check_lib_cpp "$name" "$@" || die "ERROR: $name_version not found"
15651bd4fe43Sopenharmony_ci}
15661bd4fe43Sopenharmony_ci
15671bd4fe43Sopenharmony_cirequire_headers(){
15681bd4fe43Sopenharmony_ci    log require_headers "$@"
15691bd4fe43Sopenharmony_ci    headers="$1"
15701bd4fe43Sopenharmony_ci    check_headers "$@" || die "ERROR: $headers not found"
15711bd4fe43Sopenharmony_ci}
15721bd4fe43Sopenharmony_ci
15731bd4fe43Sopenharmony_cirequire_cpp_condition(){
15741bd4fe43Sopenharmony_ci    log require_cpp_condition "$@"
15751bd4fe43Sopenharmony_ci    condition="$3"
15761bd4fe43Sopenharmony_ci    check_cpp_condition "$@" || die "ERROR: $condition not satisfied"
15771bd4fe43Sopenharmony_ci}
15781bd4fe43Sopenharmony_ci
15791bd4fe43Sopenharmony_cirequire_pkg_config(){
15801bd4fe43Sopenharmony_ci    log require_pkg_config "$@"
15811bd4fe43Sopenharmony_ci    pkg_version="$2"
15821bd4fe43Sopenharmony_ci    check_pkg_config "$@" || die "ERROR: $pkg_version not found using pkg-config$pkg_config_fail_message"
15831bd4fe43Sopenharmony_ci}
15841bd4fe43Sopenharmony_ci
15851bd4fe43Sopenharmony_citest_host_cc(){
15861bd4fe43Sopenharmony_ci    log test_host_cc "$@"
15871bd4fe43Sopenharmony_ci    cat > $TMPC
15881bd4fe43Sopenharmony_ci    log_file $TMPC
15891bd4fe43Sopenharmony_ci    test_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
15901bd4fe43Sopenharmony_ci}
15911bd4fe43Sopenharmony_ci
15921bd4fe43Sopenharmony_citest_host_cpp(){
15931bd4fe43Sopenharmony_ci    log test_host_cpp "$@"
15941bd4fe43Sopenharmony_ci    cat > $TMPC
15951bd4fe43Sopenharmony_ci    log_file $TMPC
15961bd4fe43Sopenharmony_ci    test_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC
15971bd4fe43Sopenharmony_ci}
15981bd4fe43Sopenharmony_ci
15991bd4fe43Sopenharmony_cicheck_host_cppflags(){
16001bd4fe43Sopenharmony_ci    log check_host_cppflags "$@"
16011bd4fe43Sopenharmony_ci    test_host_cpp "$@" <<EOF && append host_cppflags "$@"
16021bd4fe43Sopenharmony_ci#include <stdlib.h>
16031bd4fe43Sopenharmony_ciEOF
16041bd4fe43Sopenharmony_ci}
16051bd4fe43Sopenharmony_ci
16061bd4fe43Sopenharmony_cicheck_host_cflags(){
16071bd4fe43Sopenharmony_ci    log check_host_cflags "$@"
16081bd4fe43Sopenharmony_ci    set -- $($host_cflags_filter "$@")
16091bd4fe43Sopenharmony_ci    test_host_cc "$@" <<EOF && append host_cflags "$@"
16101bd4fe43Sopenharmony_ciint x;
16111bd4fe43Sopenharmony_ciEOF
16121bd4fe43Sopenharmony_ci}
16131bd4fe43Sopenharmony_ci
16141bd4fe43Sopenharmony_citest_host_cpp_condition(){
16151bd4fe43Sopenharmony_ci    log test_host_cpp_condition "$@"
16161bd4fe43Sopenharmony_ci    header=$1
16171bd4fe43Sopenharmony_ci    condition=$2
16181bd4fe43Sopenharmony_ci    shift 2
16191bd4fe43Sopenharmony_ci    test_host_cpp "$@" <<EOF
16201bd4fe43Sopenharmony_ci#include <$header>
16211bd4fe43Sopenharmony_ci#if !($condition)
16221bd4fe43Sopenharmony_ci#error "unsatisfied condition: $condition"
16231bd4fe43Sopenharmony_ci#endif
16241bd4fe43Sopenharmony_ciEOF
16251bd4fe43Sopenharmony_ci}
16261bd4fe43Sopenharmony_ci
16271bd4fe43Sopenharmony_cicheck_host_cpp_condition(){
16281bd4fe43Sopenharmony_ci    log check_host_cpp_condition "$@"
16291bd4fe43Sopenharmony_ci    name=$1
16301bd4fe43Sopenharmony_ci    shift 1
16311bd4fe43Sopenharmony_ci    disable $name
16321bd4fe43Sopenharmony_ci    test_host_cpp_condition "$@" && enable $name
16331bd4fe43Sopenharmony_ci}
16341bd4fe43Sopenharmony_ci
16351bd4fe43Sopenharmony_cicp_if_changed(){
16361bd4fe43Sopenharmony_ci    cmp -s "$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return
16371bd4fe43Sopenharmony_ci    mkdir -p "$(dirname $2)"
16381bd4fe43Sopenharmony_ci    cp -f "$1" "$2"
16391bd4fe43Sopenharmony_ci}
16401bd4fe43Sopenharmony_ci
16411bd4fe43Sopenharmony_ci# CONFIG_LIST contains configurable options, while HAVE_LIST is for
16421bd4fe43Sopenharmony_ci# system-dependent things.
16431bd4fe43Sopenharmony_ci
16441bd4fe43Sopenharmony_ciAVCODEC_COMPONENTS="
16451bd4fe43Sopenharmony_ci    bsfs
16461bd4fe43Sopenharmony_ci    decoders
16471bd4fe43Sopenharmony_ci    encoders
16481bd4fe43Sopenharmony_ci    hwaccels
16491bd4fe43Sopenharmony_ci    parsers
16501bd4fe43Sopenharmony_ci"
16511bd4fe43Sopenharmony_ci
16521bd4fe43Sopenharmony_ciAVDEVICE_COMPONENTS="
16531bd4fe43Sopenharmony_ci    indevs
16541bd4fe43Sopenharmony_ci    outdevs
16551bd4fe43Sopenharmony_ci"
16561bd4fe43Sopenharmony_ci
16571bd4fe43Sopenharmony_ciAVFILTER_COMPONENTS="
16581bd4fe43Sopenharmony_ci    filters
16591bd4fe43Sopenharmony_ci"
16601bd4fe43Sopenharmony_ci
16611bd4fe43Sopenharmony_ciAVFORMAT_COMPONENTS="
16621bd4fe43Sopenharmony_ci    demuxers
16631bd4fe43Sopenharmony_ci    muxers
16641bd4fe43Sopenharmony_ci    protocols
16651bd4fe43Sopenharmony_ci"
16661bd4fe43Sopenharmony_ci
16671bd4fe43Sopenharmony_ciCOMPONENT_LIST="
16681bd4fe43Sopenharmony_ci    $AVCODEC_COMPONENTS
16691bd4fe43Sopenharmony_ci    $AVDEVICE_COMPONENTS
16701bd4fe43Sopenharmony_ci    $AVFILTER_COMPONENTS
16711bd4fe43Sopenharmony_ci    $AVFORMAT_COMPONENTS
16721bd4fe43Sopenharmony_ci"
16731bd4fe43Sopenharmony_ci
16741bd4fe43Sopenharmony_ciEXAMPLE_LIST="
16751bd4fe43Sopenharmony_ci    avio_list_dir_example
16761bd4fe43Sopenharmony_ci    avio_reading_example
16771bd4fe43Sopenharmony_ci    decode_audio_example
16781bd4fe43Sopenharmony_ci    decode_video_example
16791bd4fe43Sopenharmony_ci    demuxing_decoding_example
16801bd4fe43Sopenharmony_ci    encode_audio_example
16811bd4fe43Sopenharmony_ci    encode_video_example
16821bd4fe43Sopenharmony_ci    extract_mvs_example
16831bd4fe43Sopenharmony_ci    filter_audio_example
16841bd4fe43Sopenharmony_ci    filtering_audio_example
16851bd4fe43Sopenharmony_ci    filtering_video_example
16861bd4fe43Sopenharmony_ci    http_multiclient_example
16871bd4fe43Sopenharmony_ci    hw_decode_example
16881bd4fe43Sopenharmony_ci    metadata_example
16891bd4fe43Sopenharmony_ci    muxing_example
16901bd4fe43Sopenharmony_ci    qsvdec_example
16911bd4fe43Sopenharmony_ci    remuxing_example
16921bd4fe43Sopenharmony_ci    resampling_audio_example
16931bd4fe43Sopenharmony_ci    scaling_video_example
16941bd4fe43Sopenharmony_ci    transcode_aac_example
16951bd4fe43Sopenharmony_ci    transcoding_example
16961bd4fe43Sopenharmony_ci    vaapi_encode_example
16971bd4fe43Sopenharmony_ci    vaapi_transcode_example
16981bd4fe43Sopenharmony_ci"
16991bd4fe43Sopenharmony_ci
17001bd4fe43Sopenharmony_ciEXTERNAL_AUTODETECT_LIBRARY_LIST="
17011bd4fe43Sopenharmony_ci    alsa
17021bd4fe43Sopenharmony_ci    appkit
17031bd4fe43Sopenharmony_ci    avfoundation
17041bd4fe43Sopenharmony_ci    bzlib
17051bd4fe43Sopenharmony_ci    coreimage
17061bd4fe43Sopenharmony_ci    iconv
17071bd4fe43Sopenharmony_ci    libxcb
17081bd4fe43Sopenharmony_ci    libxcb_shm
17091bd4fe43Sopenharmony_ci    libxcb_shape
17101bd4fe43Sopenharmony_ci    libxcb_xfixes
17111bd4fe43Sopenharmony_ci    lzma
17121bd4fe43Sopenharmony_ci    mediafoundation
17131bd4fe43Sopenharmony_ci    schannel
17141bd4fe43Sopenharmony_ci    sdl2
17151bd4fe43Sopenharmony_ci    securetransport
17161bd4fe43Sopenharmony_ci    sndio
17171bd4fe43Sopenharmony_ci    xlib
17181bd4fe43Sopenharmony_ci    zlib
17191bd4fe43Sopenharmony_ci"
17201bd4fe43Sopenharmony_ci
17211bd4fe43Sopenharmony_ciEXTERNAL_LIBRARY_GPL_LIST="
17221bd4fe43Sopenharmony_ci    avisynth
17231bd4fe43Sopenharmony_ci    frei0r
17241bd4fe43Sopenharmony_ci    libcdio
17251bd4fe43Sopenharmony_ci    libdavs2
17261bd4fe43Sopenharmony_ci    librubberband
17271bd4fe43Sopenharmony_ci    libvidstab
17281bd4fe43Sopenharmony_ci    libx264
17291bd4fe43Sopenharmony_ci    libx265
17301bd4fe43Sopenharmony_ci    libxavs
17311bd4fe43Sopenharmony_ci    libxavs2
17321bd4fe43Sopenharmony_ci    libxvid
17331bd4fe43Sopenharmony_ci"
17341bd4fe43Sopenharmony_ci
17351bd4fe43Sopenharmony_ciEXTERNAL_LIBRARY_NONFREE_LIST="
17361bd4fe43Sopenharmony_ci    decklink
17371bd4fe43Sopenharmony_ci    libfdk_aac
17381bd4fe43Sopenharmony_ci    openssl
17391bd4fe43Sopenharmony_ci    libtls
17401bd4fe43Sopenharmony_ci"
17411bd4fe43Sopenharmony_ci
17421bd4fe43Sopenharmony_ciEXTERNAL_LIBRARY_VERSION3_LIST="
17431bd4fe43Sopenharmony_ci    gmp
17441bd4fe43Sopenharmony_ci    libaribb24
17451bd4fe43Sopenharmony_ci    liblensfun
17461bd4fe43Sopenharmony_ci    libopencore_amrnb
17471bd4fe43Sopenharmony_ci    libopencore_amrwb
17481bd4fe43Sopenharmony_ci    libvo_amrwbenc
17491bd4fe43Sopenharmony_ci    mbedtls
17501bd4fe43Sopenharmony_ci    rkmpp
17511bd4fe43Sopenharmony_ci"
17521bd4fe43Sopenharmony_ci
17531bd4fe43Sopenharmony_ciEXTERNAL_LIBRARY_GPLV3_LIST="
17541bd4fe43Sopenharmony_ci    libsmbclient
17551bd4fe43Sopenharmony_ci"
17561bd4fe43Sopenharmony_ci
17571bd4fe43Sopenharmony_ciEXTERNAL_LIBRARY_LIST="
17581bd4fe43Sopenharmony_ci    $EXTERNAL_LIBRARY_GPL_LIST
17591bd4fe43Sopenharmony_ci    $EXTERNAL_LIBRARY_NONFREE_LIST
17601bd4fe43Sopenharmony_ci    $EXTERNAL_LIBRARY_VERSION3_LIST
17611bd4fe43Sopenharmony_ci    $EXTERNAL_LIBRARY_GPLV3_LIST
17621bd4fe43Sopenharmony_ci    chromaprint
17631bd4fe43Sopenharmony_ci    gcrypt
17641bd4fe43Sopenharmony_ci    gnutls
17651bd4fe43Sopenharmony_ci    jni
17661bd4fe43Sopenharmony_ci    ladspa
17671bd4fe43Sopenharmony_ci    libaom
17681bd4fe43Sopenharmony_ci    libass
17691bd4fe43Sopenharmony_ci    libbluray
17701bd4fe43Sopenharmony_ci    libbs2b
17711bd4fe43Sopenharmony_ci    libcaca
17721bd4fe43Sopenharmony_ci    libcelt
17731bd4fe43Sopenharmony_ci    libcodec2
17741bd4fe43Sopenharmony_ci    libdav1d
17751bd4fe43Sopenharmony_ci    libdc1394
17761bd4fe43Sopenharmony_ci    libdrm
17771bd4fe43Sopenharmony_ci    libflite
17781bd4fe43Sopenharmony_ci    libfontconfig
17791bd4fe43Sopenharmony_ci    libfreetype
17801bd4fe43Sopenharmony_ci    libfribidi
17811bd4fe43Sopenharmony_ci    libglslang
17821bd4fe43Sopenharmony_ci    libgme
17831bd4fe43Sopenharmony_ci    libgsm
17841bd4fe43Sopenharmony_ci    libiec61883
17851bd4fe43Sopenharmony_ci    libilbc
17861bd4fe43Sopenharmony_ci    libjack
17871bd4fe43Sopenharmony_ci    libklvanc
17881bd4fe43Sopenharmony_ci    libkvazaar
17891bd4fe43Sopenharmony_ci    libmodplug
17901bd4fe43Sopenharmony_ci    libmp3lame
17911bd4fe43Sopenharmony_ci    libmysofa
17921bd4fe43Sopenharmony_ci    libopencv
17931bd4fe43Sopenharmony_ci    libopenh264
17941bd4fe43Sopenharmony_ci    libopenjpeg
17951bd4fe43Sopenharmony_ci    libopenmpt
17961bd4fe43Sopenharmony_ci    libopenvino
17971bd4fe43Sopenharmony_ci    libopus
17981bd4fe43Sopenharmony_ci    libpulse
17991bd4fe43Sopenharmony_ci    librabbitmq
18001bd4fe43Sopenharmony_ci    librav1e
18011bd4fe43Sopenharmony_ci    librist
18021bd4fe43Sopenharmony_ci    librsvg
18031bd4fe43Sopenharmony_ci    librtmp
18041bd4fe43Sopenharmony_ci    libshine
18051bd4fe43Sopenharmony_ci    libsmbclient
18061bd4fe43Sopenharmony_ci    libsnappy
18071bd4fe43Sopenharmony_ci    libsoxr
18081bd4fe43Sopenharmony_ci    libspeex
18091bd4fe43Sopenharmony_ci    libsrt
18101bd4fe43Sopenharmony_ci    libssh
18111bd4fe43Sopenharmony_ci    libsvtav1
18121bd4fe43Sopenharmony_ci    libtensorflow
18131bd4fe43Sopenharmony_ci    libtesseract
18141bd4fe43Sopenharmony_ci    libtheora
18151bd4fe43Sopenharmony_ci    libtwolame
18161bd4fe43Sopenharmony_ci    libuavs3d
18171bd4fe43Sopenharmony_ci    libv4l2
18181bd4fe43Sopenharmony_ci    libvmaf
18191bd4fe43Sopenharmony_ci    libvorbis
18201bd4fe43Sopenharmony_ci    libvpx
18211bd4fe43Sopenharmony_ci    libwebp
18221bd4fe43Sopenharmony_ci    libxml2
18231bd4fe43Sopenharmony_ci    libzimg
18241bd4fe43Sopenharmony_ci    libzmq
18251bd4fe43Sopenharmony_ci    libzvbi
18261bd4fe43Sopenharmony_ci    lv2
18271bd4fe43Sopenharmony_ci    mediacodec
18281bd4fe43Sopenharmony_ci    openal
18291bd4fe43Sopenharmony_ci    opengl
18301bd4fe43Sopenharmony_ci    pocketsphinx
18311bd4fe43Sopenharmony_ci    vapoursynth
18321bd4fe43Sopenharmony_ci"
18331bd4fe43Sopenharmony_ci
18341bd4fe43Sopenharmony_ciHWACCEL_AUTODETECT_LIBRARY_LIST="
18351bd4fe43Sopenharmony_ci    amf
18361bd4fe43Sopenharmony_ci    audiotoolbox
18371bd4fe43Sopenharmony_ci    crystalhd
18381bd4fe43Sopenharmony_ci    cuda
18391bd4fe43Sopenharmony_ci    cuda_llvm
18401bd4fe43Sopenharmony_ci    cuvid
18411bd4fe43Sopenharmony_ci    d3d11va
18421bd4fe43Sopenharmony_ci    dxva2
18431bd4fe43Sopenharmony_ci    ffnvcodec
18441bd4fe43Sopenharmony_ci    nvdec
18451bd4fe43Sopenharmony_ci    nvenc
18461bd4fe43Sopenharmony_ci    vaapi
18471bd4fe43Sopenharmony_ci    vdpau
18481bd4fe43Sopenharmony_ci    videotoolbox
18491bd4fe43Sopenharmony_ci    v4l2_m2m
18501bd4fe43Sopenharmony_ci    xvmc
18511bd4fe43Sopenharmony_ci"
18521bd4fe43Sopenharmony_ci
18531bd4fe43Sopenharmony_ci# catchall list of things that require external libs to link
18541bd4fe43Sopenharmony_ciEXTRALIBS_LIST="
18551bd4fe43Sopenharmony_ci    cpu_init
18561bd4fe43Sopenharmony_ci    cws2fws
18571bd4fe43Sopenharmony_ci"
18581bd4fe43Sopenharmony_ci
18591bd4fe43Sopenharmony_ciHWACCEL_LIBRARY_NONFREE_LIST="
18601bd4fe43Sopenharmony_ci    cuda_nvcc
18611bd4fe43Sopenharmony_ci    cuda_sdk
18621bd4fe43Sopenharmony_ci    libnpp
18631bd4fe43Sopenharmony_ci"
18641bd4fe43Sopenharmony_ci
18651bd4fe43Sopenharmony_ciHWACCEL_LIBRARY_LIST="
18661bd4fe43Sopenharmony_ci    $HWACCEL_LIBRARY_NONFREE_LIST
18671bd4fe43Sopenharmony_ci    libmfx
18681bd4fe43Sopenharmony_ci    mmal
18691bd4fe43Sopenharmony_ci    omx
18701bd4fe43Sopenharmony_ci    opencl
18711bd4fe43Sopenharmony_ci    vulkan
18721bd4fe43Sopenharmony_ci"
18731bd4fe43Sopenharmony_ci
18741bd4fe43Sopenharmony_ciDOCUMENT_LIST="
18751bd4fe43Sopenharmony_ci    doc
18761bd4fe43Sopenharmony_ci    htmlpages
18771bd4fe43Sopenharmony_ci    manpages
18781bd4fe43Sopenharmony_ci    podpages
18791bd4fe43Sopenharmony_ci    txtpages
18801bd4fe43Sopenharmony_ci"
18811bd4fe43Sopenharmony_ci
18821bd4fe43Sopenharmony_ciFEATURE_LIST="
18831bd4fe43Sopenharmony_ci    ftrapv
18841bd4fe43Sopenharmony_ci    gray
18851bd4fe43Sopenharmony_ci    hardcoded_tables
18861bd4fe43Sopenharmony_ci    omx_rpi
18871bd4fe43Sopenharmony_ci    runtime_cpudetect
18881bd4fe43Sopenharmony_ci    safe_bitstream_reader
18891bd4fe43Sopenharmony_ci    shared
18901bd4fe43Sopenharmony_ci    small
18911bd4fe43Sopenharmony_ci    static
18921bd4fe43Sopenharmony_ci    swscale_alpha
18931bd4fe43Sopenharmony_ci"
18941bd4fe43Sopenharmony_ci
18951bd4fe43Sopenharmony_ci# this list should be kept in linking order
18961bd4fe43Sopenharmony_ciLIBRARY_LIST="
18971bd4fe43Sopenharmony_ci    avdevice
18981bd4fe43Sopenharmony_ci    avfilter
18991bd4fe43Sopenharmony_ci    swscale
19001bd4fe43Sopenharmony_ci    postproc
19011bd4fe43Sopenharmony_ci    avformat
19021bd4fe43Sopenharmony_ci    avcodec
19031bd4fe43Sopenharmony_ci    swresample
19041bd4fe43Sopenharmony_ci    avresample
19051bd4fe43Sopenharmony_ci    avutil
19061bd4fe43Sopenharmony_ci"
19071bd4fe43Sopenharmony_ci
19081bd4fe43Sopenharmony_ciLICENSE_LIST="
19091bd4fe43Sopenharmony_ci    gpl
19101bd4fe43Sopenharmony_ci    nonfree
19111bd4fe43Sopenharmony_ci    version3
19121bd4fe43Sopenharmony_ci"
19131bd4fe43Sopenharmony_ci
19141bd4fe43Sopenharmony_ciPROGRAM_LIST="
19151bd4fe43Sopenharmony_ci    ffplay
19161bd4fe43Sopenharmony_ci    ffprobe
19171bd4fe43Sopenharmony_ci    ffmpeg
19181bd4fe43Sopenharmony_ci"
19191bd4fe43Sopenharmony_ci
19201bd4fe43Sopenharmony_ciSUBSYSTEM_LIST="
19211bd4fe43Sopenharmony_ci    dct
19221bd4fe43Sopenharmony_ci    dwt
19231bd4fe43Sopenharmony_ci    error_resilience
19241bd4fe43Sopenharmony_ci    faan
19251bd4fe43Sopenharmony_ci    fast_unaligned
19261bd4fe43Sopenharmony_ci    fft
19271bd4fe43Sopenharmony_ci    lsp
19281bd4fe43Sopenharmony_ci    lzo
19291bd4fe43Sopenharmony_ci    mdct
19301bd4fe43Sopenharmony_ci    pixelutils
19311bd4fe43Sopenharmony_ci    network
19321bd4fe43Sopenharmony_ci    rdft
19331bd4fe43Sopenharmony_ci"
19341bd4fe43Sopenharmony_ci
19351bd4fe43Sopenharmony_ci# COMPONENT_LIST needs to come last to ensure correct dependency checking
19361bd4fe43Sopenharmony_ciCONFIG_LIST="
19371bd4fe43Sopenharmony_ci    $DOCUMENT_LIST
19381bd4fe43Sopenharmony_ci    $EXAMPLE_LIST
19391bd4fe43Sopenharmony_ci    $EXTERNAL_LIBRARY_LIST
19401bd4fe43Sopenharmony_ci    $EXTERNAL_AUTODETECT_LIBRARY_LIST
19411bd4fe43Sopenharmony_ci    $HWACCEL_LIBRARY_LIST
19421bd4fe43Sopenharmony_ci    $HWACCEL_AUTODETECT_LIBRARY_LIST
19431bd4fe43Sopenharmony_ci    $FEATURE_LIST
19441bd4fe43Sopenharmony_ci    $LICENSE_LIST
19451bd4fe43Sopenharmony_ci    $LIBRARY_LIST
19461bd4fe43Sopenharmony_ci    $PROGRAM_LIST
19471bd4fe43Sopenharmony_ci    $SUBSYSTEM_LIST
19481bd4fe43Sopenharmony_ci    autodetect
19491bd4fe43Sopenharmony_ci    fontconfig
19501bd4fe43Sopenharmony_ci    large_tests
19511bd4fe43Sopenharmony_ci    linux_perf
19521bd4fe43Sopenharmony_ci    memory_poisoning
19531bd4fe43Sopenharmony_ci    neon_clobber_test
19541bd4fe43Sopenharmony_ci    ossfuzz
19551bd4fe43Sopenharmony_ci    pic
19561bd4fe43Sopenharmony_ci    thumb
19571bd4fe43Sopenharmony_ci    valgrind_backtrace
19581bd4fe43Sopenharmony_ci    xmm_clobber_test
19591bd4fe43Sopenharmony_ci    $COMPONENT_LIST
19601bd4fe43Sopenharmony_ci"
19611bd4fe43Sopenharmony_ci
19621bd4fe43Sopenharmony_ciTHREADS_LIST="
19631bd4fe43Sopenharmony_ci    pthreads
19641bd4fe43Sopenharmony_ci    os2threads
19651bd4fe43Sopenharmony_ci    w32threads
19661bd4fe43Sopenharmony_ci"
19671bd4fe43Sopenharmony_ci
19681bd4fe43Sopenharmony_ciATOMICS_LIST="
19691bd4fe43Sopenharmony_ci    atomics_gcc
19701bd4fe43Sopenharmony_ci    atomics_suncc
19711bd4fe43Sopenharmony_ci    atomics_win32
19721bd4fe43Sopenharmony_ci"
19731bd4fe43Sopenharmony_ci
19741bd4fe43Sopenharmony_ciAUTODETECT_LIBS="
19751bd4fe43Sopenharmony_ci    $EXTERNAL_AUTODETECT_LIBRARY_LIST
19761bd4fe43Sopenharmony_ci    $HWACCEL_AUTODETECT_LIBRARY_LIST
19771bd4fe43Sopenharmony_ci    $THREADS_LIST
19781bd4fe43Sopenharmony_ci"
19791bd4fe43Sopenharmony_ci
19801bd4fe43Sopenharmony_ciARCH_LIST="
19811bd4fe43Sopenharmony_ci    aarch64
19821bd4fe43Sopenharmony_ci    alpha
19831bd4fe43Sopenharmony_ci    arm
19841bd4fe43Sopenharmony_ci    avr32
19851bd4fe43Sopenharmony_ci    avr32_ap
19861bd4fe43Sopenharmony_ci    avr32_uc
19871bd4fe43Sopenharmony_ci    bfin
19881bd4fe43Sopenharmony_ci    ia64
19891bd4fe43Sopenharmony_ci    m68k
19901bd4fe43Sopenharmony_ci    mips
19911bd4fe43Sopenharmony_ci    mips64
19921bd4fe43Sopenharmony_ci    parisc
19931bd4fe43Sopenharmony_ci    ppc
19941bd4fe43Sopenharmony_ci    ppc64
19951bd4fe43Sopenharmony_ci    s390
19961bd4fe43Sopenharmony_ci    sh4
19971bd4fe43Sopenharmony_ci    sparc
19981bd4fe43Sopenharmony_ci    sparc64
19991bd4fe43Sopenharmony_ci    tilegx
20001bd4fe43Sopenharmony_ci    tilepro
20011bd4fe43Sopenharmony_ci    tomi
20021bd4fe43Sopenharmony_ci    x86
20031bd4fe43Sopenharmony_ci    x86_32
20041bd4fe43Sopenharmony_ci    x86_64
20051bd4fe43Sopenharmony_ci"
20061bd4fe43Sopenharmony_ci
20071bd4fe43Sopenharmony_ciARCH_EXT_LIST_ARM="
20081bd4fe43Sopenharmony_ci    armv5te
20091bd4fe43Sopenharmony_ci    armv6
20101bd4fe43Sopenharmony_ci    armv6t2
20111bd4fe43Sopenharmony_ci    armv8
20121bd4fe43Sopenharmony_ci    neon
20131bd4fe43Sopenharmony_ci    vfp
20141bd4fe43Sopenharmony_ci    vfpv3
20151bd4fe43Sopenharmony_ci    setend
20161bd4fe43Sopenharmony_ci"
20171bd4fe43Sopenharmony_ci
20181bd4fe43Sopenharmony_ciARCH_EXT_LIST_MIPS="
20191bd4fe43Sopenharmony_ci    mipsfpu
20201bd4fe43Sopenharmony_ci    mips32r2
20211bd4fe43Sopenharmony_ci    mips32r5
20221bd4fe43Sopenharmony_ci    mips64r2
20231bd4fe43Sopenharmony_ci    mips32r6
20241bd4fe43Sopenharmony_ci    mips64r6
20251bd4fe43Sopenharmony_ci    mipsdsp
20261bd4fe43Sopenharmony_ci    mipsdspr2
20271bd4fe43Sopenharmony_ci    msa
20281bd4fe43Sopenharmony_ci    msa2
20291bd4fe43Sopenharmony_ci"
20301bd4fe43Sopenharmony_ci
20311bd4fe43Sopenharmony_ciARCH_EXT_LIST_LOONGSON="
20321bd4fe43Sopenharmony_ci    loongson2
20331bd4fe43Sopenharmony_ci    loongson3
20341bd4fe43Sopenharmony_ci    mmi
20351bd4fe43Sopenharmony_ci"
20361bd4fe43Sopenharmony_ci
20371bd4fe43Sopenharmony_ciARCH_EXT_LIST_X86_SIMD="
20381bd4fe43Sopenharmony_ci    aesni
20391bd4fe43Sopenharmony_ci    amd3dnow
20401bd4fe43Sopenharmony_ci    amd3dnowext
20411bd4fe43Sopenharmony_ci    avx
20421bd4fe43Sopenharmony_ci    avx2
20431bd4fe43Sopenharmony_ci    avx512
20441bd4fe43Sopenharmony_ci    fma3
20451bd4fe43Sopenharmony_ci    fma4
20461bd4fe43Sopenharmony_ci    mmx
20471bd4fe43Sopenharmony_ci    mmxext
20481bd4fe43Sopenharmony_ci    sse
20491bd4fe43Sopenharmony_ci    sse2
20501bd4fe43Sopenharmony_ci    sse3
20511bd4fe43Sopenharmony_ci    sse4
20521bd4fe43Sopenharmony_ci    sse42
20531bd4fe43Sopenharmony_ci    ssse3
20541bd4fe43Sopenharmony_ci    xop
20551bd4fe43Sopenharmony_ci"
20561bd4fe43Sopenharmony_ci
20571bd4fe43Sopenharmony_ciARCH_EXT_LIST_PPC="
20581bd4fe43Sopenharmony_ci    altivec
20591bd4fe43Sopenharmony_ci    dcbzl
20601bd4fe43Sopenharmony_ci    ldbrx
20611bd4fe43Sopenharmony_ci    power8
20621bd4fe43Sopenharmony_ci    ppc4xx
20631bd4fe43Sopenharmony_ci    vsx
20641bd4fe43Sopenharmony_ci"
20651bd4fe43Sopenharmony_ci
20661bd4fe43Sopenharmony_ciARCH_EXT_LIST_X86="
20671bd4fe43Sopenharmony_ci    $ARCH_EXT_LIST_X86_SIMD
20681bd4fe43Sopenharmony_ci    cpunop
20691bd4fe43Sopenharmony_ci    i686
20701bd4fe43Sopenharmony_ci"
20711bd4fe43Sopenharmony_ci
20721bd4fe43Sopenharmony_ciARCH_EXT_LIST="
20731bd4fe43Sopenharmony_ci    $ARCH_EXT_LIST_ARM
20741bd4fe43Sopenharmony_ci    $ARCH_EXT_LIST_PPC
20751bd4fe43Sopenharmony_ci    $ARCH_EXT_LIST_X86
20761bd4fe43Sopenharmony_ci    $ARCH_EXT_LIST_MIPS
20771bd4fe43Sopenharmony_ci    $ARCH_EXT_LIST_LOONGSON
20781bd4fe43Sopenharmony_ci"
20791bd4fe43Sopenharmony_ci
20801bd4fe43Sopenharmony_ciARCH_FEATURES="
20811bd4fe43Sopenharmony_ci    aligned_stack
20821bd4fe43Sopenharmony_ci    fast_64bit
20831bd4fe43Sopenharmony_ci    fast_clz
20841bd4fe43Sopenharmony_ci    fast_cmov
20851bd4fe43Sopenharmony_ci    local_aligned
20861bd4fe43Sopenharmony_ci    simd_align_16
20871bd4fe43Sopenharmony_ci    simd_align_32
20881bd4fe43Sopenharmony_ci    simd_align_64
20891bd4fe43Sopenharmony_ci"
20901bd4fe43Sopenharmony_ci
20911bd4fe43Sopenharmony_ciBUILTIN_LIST="
20921bd4fe43Sopenharmony_ci    atomic_cas_ptr
20931bd4fe43Sopenharmony_ci    machine_rw_barrier
20941bd4fe43Sopenharmony_ci    MemoryBarrier
20951bd4fe43Sopenharmony_ci    mm_empty
20961bd4fe43Sopenharmony_ci    rdtsc
20971bd4fe43Sopenharmony_ci    sem_timedwait
20981bd4fe43Sopenharmony_ci    sync_val_compare_and_swap
20991bd4fe43Sopenharmony_ci"
21001bd4fe43Sopenharmony_ciHAVE_LIST_CMDLINE="
21011bd4fe43Sopenharmony_ci    inline_asm
21021bd4fe43Sopenharmony_ci    symver
21031bd4fe43Sopenharmony_ci    x86asm
21041bd4fe43Sopenharmony_ci"
21051bd4fe43Sopenharmony_ci
21061bd4fe43Sopenharmony_ciHAVE_LIST_PUB="
21071bd4fe43Sopenharmony_ci    bigendian
21081bd4fe43Sopenharmony_ci    fast_unaligned
21091bd4fe43Sopenharmony_ci"
21101bd4fe43Sopenharmony_ci
21111bd4fe43Sopenharmony_ciHEADERS_LIST="
21121bd4fe43Sopenharmony_ci    arpa_inet_h
21131bd4fe43Sopenharmony_ci    asm_types_h
21141bd4fe43Sopenharmony_ci    cdio_paranoia_h
21151bd4fe43Sopenharmony_ci    cdio_paranoia_paranoia_h
21161bd4fe43Sopenharmony_ci    cuda_h
21171bd4fe43Sopenharmony_ci    dispatch_dispatch_h
21181bd4fe43Sopenharmony_ci    dev_bktr_ioctl_bt848_h
21191bd4fe43Sopenharmony_ci    dev_bktr_ioctl_meteor_h
21201bd4fe43Sopenharmony_ci    dev_ic_bt8xx_h
21211bd4fe43Sopenharmony_ci    dev_video_bktr_ioctl_bt848_h
21221bd4fe43Sopenharmony_ci    dev_video_meteor_ioctl_meteor_h
21231bd4fe43Sopenharmony_ci    direct_h
21241bd4fe43Sopenharmony_ci    dirent_h
21251bd4fe43Sopenharmony_ci    dxgidebug_h
21261bd4fe43Sopenharmony_ci    dxva_h
21271bd4fe43Sopenharmony_ci    ES2_gl_h
21281bd4fe43Sopenharmony_ci    gsm_h
21291bd4fe43Sopenharmony_ci    io_h
21301bd4fe43Sopenharmony_ci    linux_dma_buf_h
21311bd4fe43Sopenharmony_ci    linux_perf_event_h
21321bd4fe43Sopenharmony_ci    machine_ioctl_bt848_h
21331bd4fe43Sopenharmony_ci    machine_ioctl_meteor_h
21341bd4fe43Sopenharmony_ci    malloc_h
21351bd4fe43Sopenharmony_ci    opencv2_core_core_c_h
21361bd4fe43Sopenharmony_ci    OpenGL_gl3_h
21371bd4fe43Sopenharmony_ci    poll_h
21381bd4fe43Sopenharmony_ci    sys_param_h
21391bd4fe43Sopenharmony_ci    sys_resource_h
21401bd4fe43Sopenharmony_ci    sys_select_h
21411bd4fe43Sopenharmony_ci    sys_soundcard_h
21421bd4fe43Sopenharmony_ci    sys_time_h
21431bd4fe43Sopenharmony_ci    sys_un_h
21441bd4fe43Sopenharmony_ci    sys_videoio_h
21451bd4fe43Sopenharmony_ci    termios_h
21461bd4fe43Sopenharmony_ci    udplite_h
21471bd4fe43Sopenharmony_ci    unistd_h
21481bd4fe43Sopenharmony_ci    valgrind_valgrind_h
21491bd4fe43Sopenharmony_ci    windows_h
21501bd4fe43Sopenharmony_ci    winsock2_h
21511bd4fe43Sopenharmony_ci"
21521bd4fe43Sopenharmony_ci
21531bd4fe43Sopenharmony_ciINTRINSICS_LIST="
21541bd4fe43Sopenharmony_ci    intrinsics_neon
21551bd4fe43Sopenharmony_ci"
21561bd4fe43Sopenharmony_ci
21571bd4fe43Sopenharmony_ciCOMPLEX_FUNCS="
21581bd4fe43Sopenharmony_ci    cabs
21591bd4fe43Sopenharmony_ci    cexp
21601bd4fe43Sopenharmony_ci"
21611bd4fe43Sopenharmony_ci
21621bd4fe43Sopenharmony_ciMATH_FUNCS="
21631bd4fe43Sopenharmony_ci    atanf
21641bd4fe43Sopenharmony_ci    atan2f
21651bd4fe43Sopenharmony_ci    cbrt
21661bd4fe43Sopenharmony_ci    cbrtf
21671bd4fe43Sopenharmony_ci    copysign
21681bd4fe43Sopenharmony_ci    cosf
21691bd4fe43Sopenharmony_ci    erf
21701bd4fe43Sopenharmony_ci    exp2
21711bd4fe43Sopenharmony_ci    exp2f
21721bd4fe43Sopenharmony_ci    expf
21731bd4fe43Sopenharmony_ci    hypot
21741bd4fe43Sopenharmony_ci    isfinite
21751bd4fe43Sopenharmony_ci    isinf
21761bd4fe43Sopenharmony_ci    isnan
21771bd4fe43Sopenharmony_ci    ldexpf
21781bd4fe43Sopenharmony_ci    llrint
21791bd4fe43Sopenharmony_ci    llrintf
21801bd4fe43Sopenharmony_ci    log2
21811bd4fe43Sopenharmony_ci    log2f
21821bd4fe43Sopenharmony_ci    log10f
21831bd4fe43Sopenharmony_ci    lrint
21841bd4fe43Sopenharmony_ci    lrintf
21851bd4fe43Sopenharmony_ci    powf
21861bd4fe43Sopenharmony_ci    rint
21871bd4fe43Sopenharmony_ci    round
21881bd4fe43Sopenharmony_ci    roundf
21891bd4fe43Sopenharmony_ci    sinf
21901bd4fe43Sopenharmony_ci    trunc
21911bd4fe43Sopenharmony_ci    truncf
21921bd4fe43Sopenharmony_ci"
21931bd4fe43Sopenharmony_ci
21941bd4fe43Sopenharmony_ciSYSTEM_FEATURES="
21951bd4fe43Sopenharmony_ci    dos_paths
21961bd4fe43Sopenharmony_ci    libc_msvcrt
21971bd4fe43Sopenharmony_ci    MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
21981bd4fe43Sopenharmony_ci    section_data_rel_ro
21991bd4fe43Sopenharmony_ci    threads
22001bd4fe43Sopenharmony_ci    uwp
22011bd4fe43Sopenharmony_ci    winrt
22021bd4fe43Sopenharmony_ci"
22031bd4fe43Sopenharmony_ci
22041bd4fe43Sopenharmony_ciSYSTEM_FUNCS="
22051bd4fe43Sopenharmony_ci    access
22061bd4fe43Sopenharmony_ci    aligned_malloc
22071bd4fe43Sopenharmony_ci    arc4random
22081bd4fe43Sopenharmony_ci    clock_gettime
22091bd4fe43Sopenharmony_ci    closesocket
22101bd4fe43Sopenharmony_ci    CommandLineToArgvW
22111bd4fe43Sopenharmony_ci    fcntl
22121bd4fe43Sopenharmony_ci    getaddrinfo
22131bd4fe43Sopenharmony_ci    gethrtime
22141bd4fe43Sopenharmony_ci    getopt
22151bd4fe43Sopenharmony_ci    GetModuleHandle
22161bd4fe43Sopenharmony_ci    GetProcessAffinityMask
22171bd4fe43Sopenharmony_ci    GetProcessMemoryInfo
22181bd4fe43Sopenharmony_ci    GetProcessTimes
22191bd4fe43Sopenharmony_ci    getrusage
22201bd4fe43Sopenharmony_ci    GetStdHandle
22211bd4fe43Sopenharmony_ci    GetSystemTimeAsFileTime
22221bd4fe43Sopenharmony_ci    gettimeofday
22231bd4fe43Sopenharmony_ci    glob
22241bd4fe43Sopenharmony_ci    glXGetProcAddress
22251bd4fe43Sopenharmony_ci    gmtime_r
22261bd4fe43Sopenharmony_ci    inet_aton
22271bd4fe43Sopenharmony_ci    isatty
22281bd4fe43Sopenharmony_ci    kbhit
22291bd4fe43Sopenharmony_ci    localtime_r
22301bd4fe43Sopenharmony_ci    lstat
22311bd4fe43Sopenharmony_ci    lzo1x_999_compress
22321bd4fe43Sopenharmony_ci    mach_absolute_time
22331bd4fe43Sopenharmony_ci    MapViewOfFile
22341bd4fe43Sopenharmony_ci    memalign
22351bd4fe43Sopenharmony_ci    mkstemp
22361bd4fe43Sopenharmony_ci    mmap
22371bd4fe43Sopenharmony_ci    mprotect
22381bd4fe43Sopenharmony_ci    nanosleep
22391bd4fe43Sopenharmony_ci    PeekNamedPipe
22401bd4fe43Sopenharmony_ci    posix_memalign
22411bd4fe43Sopenharmony_ci    pthread_cancel
22421bd4fe43Sopenharmony_ci    sched_getaffinity
22431bd4fe43Sopenharmony_ci    SecItemImport
22441bd4fe43Sopenharmony_ci    SetConsoleTextAttribute
22451bd4fe43Sopenharmony_ci    SetConsoleCtrlHandler
22461bd4fe43Sopenharmony_ci    SetDllDirectory
22471bd4fe43Sopenharmony_ci    setmode
22481bd4fe43Sopenharmony_ci    setrlimit
22491bd4fe43Sopenharmony_ci    Sleep
22501bd4fe43Sopenharmony_ci    strerror_r
22511bd4fe43Sopenharmony_ci    sysconf
22521bd4fe43Sopenharmony_ci    sysctl
22531bd4fe43Sopenharmony_ci    usleep
22541bd4fe43Sopenharmony_ci    UTGetOSTypeFromString
22551bd4fe43Sopenharmony_ci    VirtualAlloc
22561bd4fe43Sopenharmony_ci    wglGetProcAddress
22571bd4fe43Sopenharmony_ci"
22581bd4fe43Sopenharmony_ci
22591bd4fe43Sopenharmony_ciSYSTEM_LIBRARIES="
22601bd4fe43Sopenharmony_ci    bcrypt
22611bd4fe43Sopenharmony_ci    vaapi_drm
22621bd4fe43Sopenharmony_ci    vaapi_x11
22631bd4fe43Sopenharmony_ci    vdpau_x11
22641bd4fe43Sopenharmony_ci"
22651bd4fe43Sopenharmony_ci
22661bd4fe43Sopenharmony_ciTOOLCHAIN_FEATURES="
22671bd4fe43Sopenharmony_ci    as_arch_directive
22681bd4fe43Sopenharmony_ci    as_dn_directive
22691bd4fe43Sopenharmony_ci    as_fpu_directive
22701bd4fe43Sopenharmony_ci    as_func
22711bd4fe43Sopenharmony_ci    as_object_arch
22721bd4fe43Sopenharmony_ci    asm_mod_q
22731bd4fe43Sopenharmony_ci    blocks_extension
22741bd4fe43Sopenharmony_ci    ebp_available
22751bd4fe43Sopenharmony_ci    ebx_available
22761bd4fe43Sopenharmony_ci    gnu_as
22771bd4fe43Sopenharmony_ci    gnu_windres
22781bd4fe43Sopenharmony_ci    ibm_asm
22791bd4fe43Sopenharmony_ci    inline_asm_direct_symbol_refs
22801bd4fe43Sopenharmony_ci    inline_asm_labels
22811bd4fe43Sopenharmony_ci    inline_asm_nonlocal_labels
22821bd4fe43Sopenharmony_ci    pragma_deprecated
22831bd4fe43Sopenharmony_ci    rsync_contimeout
22841bd4fe43Sopenharmony_ci    symver_asm_label
22851bd4fe43Sopenharmony_ci    symver_gnu_asm
22861bd4fe43Sopenharmony_ci    vfp_args
22871bd4fe43Sopenharmony_ci    xform_asm
22881bd4fe43Sopenharmony_ci    xmm_clobbers
22891bd4fe43Sopenharmony_ci"
22901bd4fe43Sopenharmony_ci
22911bd4fe43Sopenharmony_ciTYPES_LIST="
22921bd4fe43Sopenharmony_ci    kCMVideoCodecType_HEVC
22931bd4fe43Sopenharmony_ci    kCMVideoCodecType_HEVCWithAlpha
22941bd4fe43Sopenharmony_ci    kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange
22951bd4fe43Sopenharmony_ci    kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ
22961bd4fe43Sopenharmony_ci    kCVImageBufferTransferFunction_ITU_R_2100_HLG
22971bd4fe43Sopenharmony_ci    kCVImageBufferTransferFunction_Linear
22981bd4fe43Sopenharmony_ci    socklen_t
22991bd4fe43Sopenharmony_ci    struct_addrinfo
23001bd4fe43Sopenharmony_ci    struct_group_source_req
23011bd4fe43Sopenharmony_ci    struct_ip_mreq_source
23021bd4fe43Sopenharmony_ci    struct_ipv6_mreq
23031bd4fe43Sopenharmony_ci    struct_msghdr_msg_flags
23041bd4fe43Sopenharmony_ci    struct_pollfd
23051bd4fe43Sopenharmony_ci    struct_rusage_ru_maxrss
23061bd4fe43Sopenharmony_ci    struct_sctp_event_subscribe
23071bd4fe43Sopenharmony_ci    struct_sockaddr_in6
23081bd4fe43Sopenharmony_ci    struct_sockaddr_sa_len
23091bd4fe43Sopenharmony_ci    struct_sockaddr_storage
23101bd4fe43Sopenharmony_ci    struct_stat_st_mtim_tv_nsec
23111bd4fe43Sopenharmony_ci    struct_v4l2_frmivalenum_discrete
23121bd4fe43Sopenharmony_ci"
23131bd4fe43Sopenharmony_ci
23141bd4fe43Sopenharmony_ciHAVE_LIST="
23151bd4fe43Sopenharmony_ci    $ARCH_EXT_LIST
23161bd4fe43Sopenharmony_ci    $(add_suffix _external $ARCH_EXT_LIST)
23171bd4fe43Sopenharmony_ci    $(add_suffix _inline   $ARCH_EXT_LIST)
23181bd4fe43Sopenharmony_ci    $ARCH_FEATURES
23191bd4fe43Sopenharmony_ci    $BUILTIN_LIST
23201bd4fe43Sopenharmony_ci    $COMPLEX_FUNCS
23211bd4fe43Sopenharmony_ci    $HAVE_LIST_CMDLINE
23221bd4fe43Sopenharmony_ci    $HAVE_LIST_PUB
23231bd4fe43Sopenharmony_ci    $HEADERS_LIST
23241bd4fe43Sopenharmony_ci    $INTRINSICS_LIST
23251bd4fe43Sopenharmony_ci    $MATH_FUNCS
23261bd4fe43Sopenharmony_ci    $SYSTEM_FEATURES
23271bd4fe43Sopenharmony_ci    $SYSTEM_FUNCS
23281bd4fe43Sopenharmony_ci    $SYSTEM_LIBRARIES
23291bd4fe43Sopenharmony_ci    $THREADS_LIST
23301bd4fe43Sopenharmony_ci    $TOOLCHAIN_FEATURES
23311bd4fe43Sopenharmony_ci    $TYPES_LIST
23321bd4fe43Sopenharmony_ci    libdrm_getfb2
23331bd4fe43Sopenharmony_ci    makeinfo
23341bd4fe43Sopenharmony_ci    makeinfo_html
23351bd4fe43Sopenharmony_ci    opencl_d3d11
23361bd4fe43Sopenharmony_ci    opencl_drm_arm
23371bd4fe43Sopenharmony_ci    opencl_drm_beignet
23381bd4fe43Sopenharmony_ci    opencl_dxva2
23391bd4fe43Sopenharmony_ci    opencl_vaapi_beignet
23401bd4fe43Sopenharmony_ci    opencl_vaapi_intel_media
23411bd4fe43Sopenharmony_ci    perl
23421bd4fe43Sopenharmony_ci    pod2man
23431bd4fe43Sopenharmony_ci    texi2html
23441bd4fe43Sopenharmony_ci"
23451bd4fe43Sopenharmony_ci
23461bd4fe43Sopenharmony_ci# options emitted with CONFIG_ prefix but not available on the command line
23471bd4fe43Sopenharmony_ciCONFIG_EXTRA="
23481bd4fe43Sopenharmony_ci    aandcttables
23491bd4fe43Sopenharmony_ci    ac3dsp
23501bd4fe43Sopenharmony_ci    adts_header
23511bd4fe43Sopenharmony_ci    atsc_a53
23521bd4fe43Sopenharmony_ci    audio_frame_queue
23531bd4fe43Sopenharmony_ci    audiodsp
23541bd4fe43Sopenharmony_ci    blockdsp
23551bd4fe43Sopenharmony_ci    bswapdsp
23561bd4fe43Sopenharmony_ci    cabac
23571bd4fe43Sopenharmony_ci    cbs
23581bd4fe43Sopenharmony_ci    cbs_av1
23591bd4fe43Sopenharmony_ci    cbs_h264
23601bd4fe43Sopenharmony_ci    cbs_h265
23611bd4fe43Sopenharmony_ci    cbs_jpeg
23621bd4fe43Sopenharmony_ci    cbs_mpeg2
23631bd4fe43Sopenharmony_ci    cbs_vp9
23641bd4fe43Sopenharmony_ci    dirac_parse
23651bd4fe43Sopenharmony_ci    dnn
23661bd4fe43Sopenharmony_ci    dvprofile
23671bd4fe43Sopenharmony_ci    exif
23681bd4fe43Sopenharmony_ci    faandct
23691bd4fe43Sopenharmony_ci    faanidct
23701bd4fe43Sopenharmony_ci    fdctdsp
23711bd4fe43Sopenharmony_ci    flacdsp
23721bd4fe43Sopenharmony_ci    fmtconvert
23731bd4fe43Sopenharmony_ci    frame_thread_encoder
23741bd4fe43Sopenharmony_ci    g722dsp
23751bd4fe43Sopenharmony_ci    golomb
23761bd4fe43Sopenharmony_ci    gplv3
23771bd4fe43Sopenharmony_ci    h263dsp
23781bd4fe43Sopenharmony_ci    h264chroma
23791bd4fe43Sopenharmony_ci    h264dsp
23801bd4fe43Sopenharmony_ci    h264parse
23811bd4fe43Sopenharmony_ci    h264pred
23821bd4fe43Sopenharmony_ci    h264qpel
23831bd4fe43Sopenharmony_ci    hevcparse
23841bd4fe43Sopenharmony_ci    hpeldsp
23851bd4fe43Sopenharmony_ci    huffman
23861bd4fe43Sopenharmony_ci    huffyuvdsp
23871bd4fe43Sopenharmony_ci    huffyuvencdsp
23881bd4fe43Sopenharmony_ci    idctdsp
23891bd4fe43Sopenharmony_ci    iirfilter
23901bd4fe43Sopenharmony_ci    mdct15
23911bd4fe43Sopenharmony_ci    intrax8
23921bd4fe43Sopenharmony_ci    iso_media
23931bd4fe43Sopenharmony_ci    ividsp
23941bd4fe43Sopenharmony_ci    jpegtables
23951bd4fe43Sopenharmony_ci    lgplv3
23961bd4fe43Sopenharmony_ci    libx262
23971bd4fe43Sopenharmony_ci    llauddsp
23981bd4fe43Sopenharmony_ci    llviddsp
23991bd4fe43Sopenharmony_ci    llvidencdsp
24001bd4fe43Sopenharmony_ci    lpc
24011bd4fe43Sopenharmony_ci    lzf
24021bd4fe43Sopenharmony_ci    me_cmp
24031bd4fe43Sopenharmony_ci    mpeg_er
24041bd4fe43Sopenharmony_ci    mpegaudio
24051bd4fe43Sopenharmony_ci    mpegaudiodsp
24061bd4fe43Sopenharmony_ci    mpegaudioheader
24071bd4fe43Sopenharmony_ci    mpegvideo
24081bd4fe43Sopenharmony_ci    mpegvideoenc
24091bd4fe43Sopenharmony_ci    mss34dsp
24101bd4fe43Sopenharmony_ci    pixblockdsp
24111bd4fe43Sopenharmony_ci    qpeldsp
24121bd4fe43Sopenharmony_ci    qsv
24131bd4fe43Sopenharmony_ci    qsvdec
24141bd4fe43Sopenharmony_ci    qsvenc
24151bd4fe43Sopenharmony_ci    qsvvpp
24161bd4fe43Sopenharmony_ci    rangecoder
24171bd4fe43Sopenharmony_ci    riffdec
24181bd4fe43Sopenharmony_ci    riffenc
24191bd4fe43Sopenharmony_ci    rtpdec
24201bd4fe43Sopenharmony_ci    rtpenc_chain
24211bd4fe43Sopenharmony_ci    rv34dsp
24221bd4fe43Sopenharmony_ci    scene_sad
24231bd4fe43Sopenharmony_ci    sinewin
24241bd4fe43Sopenharmony_ci    snappy
24251bd4fe43Sopenharmony_ci    srtp
24261bd4fe43Sopenharmony_ci    startcode
24271bd4fe43Sopenharmony_ci    texturedsp
24281bd4fe43Sopenharmony_ci    texturedspenc
24291bd4fe43Sopenharmony_ci    tpeldsp
24301bd4fe43Sopenharmony_ci    vaapi_1
24311bd4fe43Sopenharmony_ci    vaapi_encode
24321bd4fe43Sopenharmony_ci    vc1dsp
24331bd4fe43Sopenharmony_ci    videodsp
24341bd4fe43Sopenharmony_ci    vp3dsp
24351bd4fe43Sopenharmony_ci    vp56dsp
24361bd4fe43Sopenharmony_ci    vp8dsp
24371bd4fe43Sopenharmony_ci    wma_freqs
24381bd4fe43Sopenharmony_ci    wmv2dsp
24391bd4fe43Sopenharmony_ci"
24401bd4fe43Sopenharmony_ci
24411bd4fe43Sopenharmony_ciCMDLINE_SELECT="
24421bd4fe43Sopenharmony_ci    $ARCH_EXT_LIST
24431bd4fe43Sopenharmony_ci    $CONFIG_LIST
24441bd4fe43Sopenharmony_ci    $HAVE_LIST_CMDLINE
24451bd4fe43Sopenharmony_ci    $THREADS_LIST
24461bd4fe43Sopenharmony_ci    asm
24471bd4fe43Sopenharmony_ci    cross_compile
24481bd4fe43Sopenharmony_ci    debug
24491bd4fe43Sopenharmony_ci    extra_warnings
24501bd4fe43Sopenharmony_ci    logging
24511bd4fe43Sopenharmony_ci    lto
24521bd4fe43Sopenharmony_ci    optimizations
24531bd4fe43Sopenharmony_ci    rpath
24541bd4fe43Sopenharmony_ci    stripping
24551bd4fe43Sopenharmony_ci"
24561bd4fe43Sopenharmony_ci
24571bd4fe43Sopenharmony_ciPATHS_LIST="
24581bd4fe43Sopenharmony_ci    bindir
24591bd4fe43Sopenharmony_ci    datadir
24601bd4fe43Sopenharmony_ci    docdir
24611bd4fe43Sopenharmony_ci    incdir
24621bd4fe43Sopenharmony_ci    libdir
24631bd4fe43Sopenharmony_ci    mandir
24641bd4fe43Sopenharmony_ci    pkgconfigdir
24651bd4fe43Sopenharmony_ci    prefix
24661bd4fe43Sopenharmony_ci    shlibdir
24671bd4fe43Sopenharmony_ci    install_name_dir
24681bd4fe43Sopenharmony_ci"
24691bd4fe43Sopenharmony_ci
24701bd4fe43Sopenharmony_ciCMDLINE_SET="
24711bd4fe43Sopenharmony_ci    $PATHS_LIST
24721bd4fe43Sopenharmony_ci    ar
24731bd4fe43Sopenharmony_ci    arch
24741bd4fe43Sopenharmony_ci    as
24751bd4fe43Sopenharmony_ci    assert_level
24761bd4fe43Sopenharmony_ci    build_suffix
24771bd4fe43Sopenharmony_ci    cc
24781bd4fe43Sopenharmony_ci    objcc
24791bd4fe43Sopenharmony_ci    cpu
24801bd4fe43Sopenharmony_ci    cross_prefix
24811bd4fe43Sopenharmony_ci    custom_allocator
24821bd4fe43Sopenharmony_ci    cxx
24831bd4fe43Sopenharmony_ci    dep_cc
24841bd4fe43Sopenharmony_ci    doxygen
24851bd4fe43Sopenharmony_ci    env
24861bd4fe43Sopenharmony_ci    extra_version
24871bd4fe43Sopenharmony_ci    gas
24881bd4fe43Sopenharmony_ci    host_cc
24891bd4fe43Sopenharmony_ci    host_cflags
24901bd4fe43Sopenharmony_ci    host_extralibs
24911bd4fe43Sopenharmony_ci    host_ld
24921bd4fe43Sopenharmony_ci    host_ldflags
24931bd4fe43Sopenharmony_ci    host_os
24941bd4fe43Sopenharmony_ci    ignore_tests
24951bd4fe43Sopenharmony_ci    install
24961bd4fe43Sopenharmony_ci    ld
24971bd4fe43Sopenharmony_ci    ln_s
24981bd4fe43Sopenharmony_ci    logfile
24991bd4fe43Sopenharmony_ci    malloc_prefix
25001bd4fe43Sopenharmony_ci    nm
25011bd4fe43Sopenharmony_ci    optflags
25021bd4fe43Sopenharmony_ci    nvcc
25031bd4fe43Sopenharmony_ci    nvccflags
25041bd4fe43Sopenharmony_ci    pkg_config
25051bd4fe43Sopenharmony_ci    pkg_config_flags
25061bd4fe43Sopenharmony_ci    progs_suffix
25071bd4fe43Sopenharmony_ci    random_seed
25081bd4fe43Sopenharmony_ci    ranlib
25091bd4fe43Sopenharmony_ci    samples
25101bd4fe43Sopenharmony_ci    strip
25111bd4fe43Sopenharmony_ci    sws_max_filter_size
25121bd4fe43Sopenharmony_ci    sysinclude
25131bd4fe43Sopenharmony_ci    sysroot
25141bd4fe43Sopenharmony_ci    target_exec
25151bd4fe43Sopenharmony_ci    target_os
25161bd4fe43Sopenharmony_ci    target_path
25171bd4fe43Sopenharmony_ci    target_samples
25181bd4fe43Sopenharmony_ci    tempprefix
25191bd4fe43Sopenharmony_ci    toolchain
25201bd4fe43Sopenharmony_ci    valgrind
25211bd4fe43Sopenharmony_ci    windres
25221bd4fe43Sopenharmony_ci    x86asmexe
25231bd4fe43Sopenharmony_ci"
25241bd4fe43Sopenharmony_ci
25251bd4fe43Sopenharmony_ciCMDLINE_APPEND="
25261bd4fe43Sopenharmony_ci    extra_cflags
25271bd4fe43Sopenharmony_ci    extra_cxxflags
25281bd4fe43Sopenharmony_ci    extra_objcflags
25291bd4fe43Sopenharmony_ci    host_cppflags
25301bd4fe43Sopenharmony_ci"
25311bd4fe43Sopenharmony_ci
25321bd4fe43Sopenharmony_ci# code dependency declarations
25331bd4fe43Sopenharmony_ci
25341bd4fe43Sopenharmony_ci# architecture extensions
25351bd4fe43Sopenharmony_ci
25361bd4fe43Sopenharmony_ciarmv5te_deps="arm"
25371bd4fe43Sopenharmony_ciarmv6_deps="arm"
25381bd4fe43Sopenharmony_ciarmv6t2_deps="arm"
25391bd4fe43Sopenharmony_ciarmv8_deps="aarch64"
25401bd4fe43Sopenharmony_cineon_deps_any="aarch64 arm"
25411bd4fe43Sopenharmony_ciintrinsics_neon_deps="neon"
25421bd4fe43Sopenharmony_civfp_deps_any="aarch64 arm"
25431bd4fe43Sopenharmony_civfpv3_deps="vfp"
25441bd4fe43Sopenharmony_cisetend_deps="arm"
25451bd4fe43Sopenharmony_ci
25461bd4fe43Sopenharmony_cimap 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
25471bd4fe43Sopenharmony_ci
25481bd4fe43Sopenharmony_cialtivec_deps="ppc"
25491bd4fe43Sopenharmony_cidcbzl_deps="ppc"
25501bd4fe43Sopenharmony_cildbrx_deps="ppc"
25511bd4fe43Sopenharmony_cippc4xx_deps="ppc"
25521bd4fe43Sopenharmony_civsx_deps="altivec"
25531bd4fe43Sopenharmony_cipower8_deps="vsx"
25541bd4fe43Sopenharmony_ci
25551bd4fe43Sopenharmony_ciloongson2_deps="mips"
25561bd4fe43Sopenharmony_ciloongson3_deps="mips"
25571bd4fe43Sopenharmony_cimips32r2_deps="mips"
25581bd4fe43Sopenharmony_cimips32r5_deps="mips"
25591bd4fe43Sopenharmony_cimips32r6_deps="mips"
25601bd4fe43Sopenharmony_cimips64r2_deps="mips"
25611bd4fe43Sopenharmony_cimips64r6_deps="mips"
25621bd4fe43Sopenharmony_cimipsfpu_deps="mips"
25631bd4fe43Sopenharmony_cimipsdsp_deps="mips"
25641bd4fe43Sopenharmony_cimipsdspr2_deps="mips"
25651bd4fe43Sopenharmony_cimmi_deps_any="loongson2 loongson3"
25661bd4fe43Sopenharmony_cimsa_deps="mipsfpu"
25671bd4fe43Sopenharmony_cimsa2_deps="msa"
25681bd4fe43Sopenharmony_ci
25691bd4fe43Sopenharmony_cicpunop_deps="i686"
25701bd4fe43Sopenharmony_cix86_64_select="i686"
25711bd4fe43Sopenharmony_cix86_64_suggest="fast_cmov"
25721bd4fe43Sopenharmony_ci
25731bd4fe43Sopenharmony_ciamd3dnow_deps="mmx"
25741bd4fe43Sopenharmony_ciamd3dnowext_deps="amd3dnow"
25751bd4fe43Sopenharmony_cii686_deps="x86"
25761bd4fe43Sopenharmony_cimmx_deps="x86"
25771bd4fe43Sopenharmony_cimmxext_deps="mmx"
25781bd4fe43Sopenharmony_cisse_deps="mmxext"
25791bd4fe43Sopenharmony_cisse2_deps="sse"
25801bd4fe43Sopenharmony_cisse3_deps="sse2"
25811bd4fe43Sopenharmony_cissse3_deps="sse3"
25821bd4fe43Sopenharmony_cisse4_deps="ssse3"
25831bd4fe43Sopenharmony_cisse42_deps="sse4"
25841bd4fe43Sopenharmony_ciaesni_deps="sse42"
25851bd4fe43Sopenharmony_ciavx_deps="sse42"
25861bd4fe43Sopenharmony_cixop_deps="avx"
25871bd4fe43Sopenharmony_cifma3_deps="avx"
25881bd4fe43Sopenharmony_cifma4_deps="avx"
25891bd4fe43Sopenharmony_ciavx2_deps="avx"
25901bd4fe43Sopenharmony_ciavx512_deps="avx2"
25911bd4fe43Sopenharmony_ci
25921bd4fe43Sopenharmony_cimmx_external_deps="x86asm"
25931bd4fe43Sopenharmony_cimmx_inline_deps="inline_asm x86"
25941bd4fe43Sopenharmony_cimmx_suggest="mmx_external mmx_inline"
25951bd4fe43Sopenharmony_ci
25961bd4fe43Sopenharmony_cifor ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do
25971bd4fe43Sopenharmony_ci    eval dep=\$${ext}_deps
25981bd4fe43Sopenharmony_ci    eval ${ext}_external_deps='"${dep}_external"'
25991bd4fe43Sopenharmony_ci    eval ${ext}_inline_deps='"${dep}_inline"'
26001bd4fe43Sopenharmony_ci    eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
26011bd4fe43Sopenharmony_cidone
26021bd4fe43Sopenharmony_ci
26031bd4fe43Sopenharmony_cialigned_stack_if_any="aarch64 ppc x86"
26041bd4fe43Sopenharmony_cifast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
26051bd4fe43Sopenharmony_cifast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
26061bd4fe43Sopenharmony_cifast_unaligned_if_any="aarch64 ppc x86"
26071bd4fe43Sopenharmony_cisimd_align_16_if_any="altivec neon sse"
26081bd4fe43Sopenharmony_cisimd_align_32_if_any="avx"
26091bd4fe43Sopenharmony_cisimd_align_64_if_any="avx512"
26101bd4fe43Sopenharmony_ci
26111bd4fe43Sopenharmony_ci# system capabilities
26121bd4fe43Sopenharmony_cilinux_perf_deps="linux_perf_event_h"
26131bd4fe43Sopenharmony_cisymver_if_any="symver_asm_label symver_gnu_asm"
26141bd4fe43Sopenharmony_civalgrind_backtrace_conflict="optimizations"
26151bd4fe43Sopenharmony_civalgrind_backtrace_deps="valgrind_valgrind_h"
26161bd4fe43Sopenharmony_ci
26171bd4fe43Sopenharmony_ci# threading support
26181bd4fe43Sopenharmony_ciatomics_gcc_if="sync_val_compare_and_swap"
26191bd4fe43Sopenharmony_ciatomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
26201bd4fe43Sopenharmony_ciatomics_win32_if="MemoryBarrier"
26211bd4fe43Sopenharmony_ciatomics_native_if_any="$ATOMICS_LIST"
26221bd4fe43Sopenharmony_ciw32threads_deps="atomics_native"
26231bd4fe43Sopenharmony_cithreads_if_any="$THREADS_LIST"
26241bd4fe43Sopenharmony_ci
26251bd4fe43Sopenharmony_ci# subsystems
26261bd4fe43Sopenharmony_cicbs_av1_select="cbs"
26271bd4fe43Sopenharmony_cicbs_h264_select="cbs"
26281bd4fe43Sopenharmony_cicbs_h265_select="cbs"
26291bd4fe43Sopenharmony_cicbs_jpeg_select="cbs"
26301bd4fe43Sopenharmony_cicbs_mpeg2_select="cbs"
26311bd4fe43Sopenharmony_cicbs_vp9_select="cbs"
26321bd4fe43Sopenharmony_cidct_select="rdft"
26331bd4fe43Sopenharmony_cidirac_parse_select="golomb"
26341bd4fe43Sopenharmony_cidnn_suggest="libtensorflow libopenvino"
26351bd4fe43Sopenharmony_cidnn_deps="swscale"
26361bd4fe43Sopenharmony_cierror_resilience_select="me_cmp"
26371bd4fe43Sopenharmony_cifaandct_deps="faan"
26381bd4fe43Sopenharmony_cifaandct_select="fdctdsp"
26391bd4fe43Sopenharmony_cifaanidct_deps="faan"
26401bd4fe43Sopenharmony_cifaanidct_select="idctdsp"
26411bd4fe43Sopenharmony_cih264dsp_select="startcode"
26421bd4fe43Sopenharmony_cihevcparse_select="atsc_a53 golomb"
26431bd4fe43Sopenharmony_ciframe_thread_encoder_deps="encoders threads"
26441bd4fe43Sopenharmony_ciintrax8_select="blockdsp idctdsp"
26451bd4fe43Sopenharmony_cimdct_select="fft"
26461bd4fe43Sopenharmony_cimdct15_select="fft"
26471bd4fe43Sopenharmony_cime_cmp_select="fdctdsp idctdsp pixblockdsp"
26481bd4fe43Sopenharmony_cimpeg_er_select="error_resilience"
26491bd4fe43Sopenharmony_cimpegaudio_select="mpegaudiodsp mpegaudioheader"
26501bd4fe43Sopenharmony_cimpegaudiodsp_select="dct"
26511bd4fe43Sopenharmony_cimpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp"
26521bd4fe43Sopenharmony_cimpegvideoenc_select="aandcttables me_cmp mpegvideo pixblockdsp qpeldsp"
26531bd4fe43Sopenharmony_civc1dsp_select="h264chroma qpeldsp startcode"
26541bd4fe43Sopenharmony_cirdft_select="fft"
26551bd4fe43Sopenharmony_ci
26561bd4fe43Sopenharmony_ci# decoders / encoders
26571bd4fe43Sopenharmony_ciaac_decoder_select="adts_header mdct15 mdct sinewin"
26581bd4fe43Sopenharmony_ciaac_fixed_decoder_select="adts_header mdct"
26591bd4fe43Sopenharmony_ciaac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin"
26601bd4fe43Sopenharmony_ciaac_latm_decoder_select="aac_decoder aac_latm_parser"
26611bd4fe43Sopenharmony_ciac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct"
26621bd4fe43Sopenharmony_ciac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct"
26631bd4fe43Sopenharmony_ciac3_encoder_select="ac3dsp audiodsp mdct me_cmp"
26641bd4fe43Sopenharmony_ciac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp"
26651bd4fe43Sopenharmony_ciacelp_kelvin_decoder_select="audiodsp"
26661bd4fe43Sopenharmony_ciadpcm_g722_decoder_select="g722dsp"
26671bd4fe43Sopenharmony_ciadpcm_g722_encoder_select="g722dsp"
26681bd4fe43Sopenharmony_ciaic_decoder_select="golomb idctdsp"
26691bd4fe43Sopenharmony_cialac_encoder_select="lpc"
26701bd4fe43Sopenharmony_cials_decoder_select="bswapdsp"
26711bd4fe43Sopenharmony_ciamrnb_decoder_select="lsp"
26721bd4fe43Sopenharmony_ciamrwb_decoder_select="lsp"
26731bd4fe43Sopenharmony_ciamv_decoder_select="sp5x_decoder exif"
26741bd4fe43Sopenharmony_ciamv_encoder_select="jpegtables mpegvideoenc"
26751bd4fe43Sopenharmony_ciape_decoder_select="bswapdsp llauddsp"
26761bd4fe43Sopenharmony_ciapng_decoder_deps="zlib"
26771bd4fe43Sopenharmony_ciapng_encoder_deps="zlib"
26781bd4fe43Sopenharmony_ciapng_encoder_select="llvidencdsp"
26791bd4fe43Sopenharmony_ciaptx_decoder_select="audio_frame_queue"
26801bd4fe43Sopenharmony_ciaptx_encoder_select="audio_frame_queue"
26811bd4fe43Sopenharmony_ciaptx_hd_decoder_select="audio_frame_queue"
26821bd4fe43Sopenharmony_ciaptx_hd_encoder_select="audio_frame_queue"
26831bd4fe43Sopenharmony_ciasv1_decoder_select="blockdsp bswapdsp idctdsp"
26841bd4fe43Sopenharmony_ciasv1_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp"
26851bd4fe43Sopenharmony_ciasv2_decoder_select="blockdsp bswapdsp idctdsp"
26861bd4fe43Sopenharmony_ciasv2_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp"
26871bd4fe43Sopenharmony_ciatrac1_decoder_select="mdct sinewin"
26881bd4fe43Sopenharmony_ciatrac3_decoder_select="mdct"
26891bd4fe43Sopenharmony_ciatrac3al_decoder_select="mdct"
26901bd4fe43Sopenharmony_ciatrac3p_decoder_select="mdct sinewin"
26911bd4fe43Sopenharmony_ciatrac3pal_decoder_select="mdct sinewin"
26921bd4fe43Sopenharmony_ciatrac9_decoder_select="mdct"
26931bd4fe43Sopenharmony_ciav1_decoder_select="cbs_av1"
26941bd4fe43Sopenharmony_cibink_decoder_select="blockdsp hpeldsp"
26951bd4fe43Sopenharmony_cibinkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
26961bd4fe43Sopenharmony_cibinkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
26971bd4fe43Sopenharmony_cicavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
26981bd4fe43Sopenharmony_ciclearvideo_decoder_select="idctdsp"
26991bd4fe43Sopenharmony_cicllc_decoder_select="bswapdsp"
27001bd4fe43Sopenharmony_cicomfortnoise_encoder_select="lpc"
27011bd4fe43Sopenharmony_cicook_decoder_select="audiodsp mdct sinewin"
27021bd4fe43Sopenharmony_cicscd_decoder_select="lzo"
27031bd4fe43Sopenharmony_cicscd_decoder_suggest="zlib"
27041bd4fe43Sopenharmony_cidca_decoder_select="mdct"
27051bd4fe43Sopenharmony_cidca_encoder_select="mdct"
27061bd4fe43Sopenharmony_cidds_decoder_select="texturedsp"
27071bd4fe43Sopenharmony_cidirac_decoder_select="dirac_parse dwt golomb videodsp mpegvideoenc"
27081bd4fe43Sopenharmony_cidnxhd_decoder_select="blockdsp idctdsp"
27091bd4fe43Sopenharmony_cidnxhd_encoder_select="blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
27101bd4fe43Sopenharmony_cidolby_e_decoder_select="mdct"
27111bd4fe43Sopenharmony_cidvvideo_decoder_select="dvprofile idctdsp"
27121bd4fe43Sopenharmony_cidvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp"
27131bd4fe43Sopenharmony_cidxa_decoder_deps="zlib"
27141bd4fe43Sopenharmony_cidxv_decoder_select="lzf texturedsp"
27151bd4fe43Sopenharmony_cieac3_decoder_select="ac3_decoder"
27161bd4fe43Sopenharmony_cieac3_encoder_select="ac3_encoder"
27171bd4fe43Sopenharmony_cieamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo"
27181bd4fe43Sopenharmony_cieatgq_decoder_select="aandcttables"
27191bd4fe43Sopenharmony_cieatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp"
27201bd4fe43Sopenharmony_ciexr_decoder_deps="zlib"
27211bd4fe43Sopenharmony_ciexr_encoder_deps="zlib"
27221bd4fe43Sopenharmony_ciffv1_decoder_select="rangecoder"
27231bd4fe43Sopenharmony_ciffv1_encoder_select="rangecoder"
27241bd4fe43Sopenharmony_ciffvhuff_decoder_select="huffyuv_decoder"
27251bd4fe43Sopenharmony_ciffvhuff_encoder_select="huffyuv_encoder"
27261bd4fe43Sopenharmony_cific_decoder_select="golomb"
27271bd4fe43Sopenharmony_ciflac_decoder_select="flacdsp"
27281bd4fe43Sopenharmony_ciflac_encoder_select="bswapdsp flacdsp lpc"
27291bd4fe43Sopenharmony_ciflashsv2_decoder_deps="zlib"
27301bd4fe43Sopenharmony_ciflashsv2_encoder_deps="zlib"
27311bd4fe43Sopenharmony_ciflashsv_decoder_deps="zlib"
27321bd4fe43Sopenharmony_ciflashsv_encoder_deps="zlib"
27331bd4fe43Sopenharmony_ciflv_decoder_select="h263_decoder"
27341bd4fe43Sopenharmony_ciflv_encoder_select="h263_encoder"
27351bd4fe43Sopenharmony_cifourxm_decoder_select="blockdsp bswapdsp"
27361bd4fe43Sopenharmony_cifraps_decoder_select="bswapdsp huffman"
27371bd4fe43Sopenharmony_cig2m_decoder_deps="zlib"
27381bd4fe43Sopenharmony_cig2m_decoder_select="blockdsp idctdsp jpegtables"
27391bd4fe43Sopenharmony_cig729_decoder_select="audiodsp"
27401bd4fe43Sopenharmony_cih261_decoder_select="mpegvideo"
27411bd4fe43Sopenharmony_cih261_encoder_select="mpegvideoenc"
27421bd4fe43Sopenharmony_cih263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp"
27431bd4fe43Sopenharmony_cih263_encoder_select="h263dsp mpegvideoenc"
27441bd4fe43Sopenharmony_cih263i_decoder_select="h263_decoder"
27451bd4fe43Sopenharmony_cih263p_decoder_select="h263_decoder"
27461bd4fe43Sopenharmony_cih263p_encoder_select="h263_encoder"
27471bd4fe43Sopenharmony_cih264_decoder_select="atsc_a53 cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp"
27481bd4fe43Sopenharmony_cih264_decoder_suggest="error_resilience"
27491bd4fe43Sopenharmony_cihap_decoder_select="snappy texturedsp"
27501bd4fe43Sopenharmony_cihap_encoder_deps="libsnappy"
27511bd4fe43Sopenharmony_cihap_encoder_select="texturedspenc"
27521bd4fe43Sopenharmony_cihevc_decoder_select="atsc_a53 bswapdsp cabac golomb hevcparse videodsp"
27531bd4fe43Sopenharmony_cihuffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp"
27541bd4fe43Sopenharmony_cihuffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp"
27551bd4fe43Sopenharmony_cihymt_decoder_select="huffyuv_decoder"
27561bd4fe43Sopenharmony_ciiac_decoder_select="imc_decoder"
27571bd4fe43Sopenharmony_ciimc_decoder_select="bswapdsp fft mdct sinewin"
27581bd4fe43Sopenharmony_ciimm4_decoder_select="bswapdsp"
27591bd4fe43Sopenharmony_ciimm5_decoder_select="h264_decoder hevc_decoder"
27601bd4fe43Sopenharmony_ciindeo3_decoder_select="hpeldsp"
27611bd4fe43Sopenharmony_ciindeo4_decoder_select="ividsp"
27621bd4fe43Sopenharmony_ciindeo5_decoder_select="ividsp"
27631bd4fe43Sopenharmony_ciinterplay_video_decoder_select="hpeldsp"
27641bd4fe43Sopenharmony_ciipu_decoder_select="mpegvideo"
27651bd4fe43Sopenharmony_cijpegls_decoder_select="mjpeg_decoder"
27661bd4fe43Sopenharmony_cijv_decoder_select="blockdsp"
27671bd4fe43Sopenharmony_cilagarith_decoder_select="llviddsp"
27681bd4fe43Sopenharmony_ciljpeg_encoder_select="idctdsp jpegtables"
27691bd4fe43Sopenharmony_cilscr_decoder_deps="zlib"
27701bd4fe43Sopenharmony_cimagicyuv_decoder_select="llviddsp"
27711bd4fe43Sopenharmony_cimagicyuv_encoder_select="llvidencdsp"
27721bd4fe43Sopenharmony_cimdec_decoder_select="blockdsp bswapdsp idctdsp mpegvideo"
27731bd4fe43Sopenharmony_cimetasound_decoder_select="lsp mdct sinewin"
27741bd4fe43Sopenharmony_cimimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp"
27751bd4fe43Sopenharmony_cimjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables"
27761bd4fe43Sopenharmony_cimjpeg_encoder_select="jpegtables mpegvideoenc"
27771bd4fe43Sopenharmony_cimjpegb_decoder_select="mjpeg_decoder"
27781bd4fe43Sopenharmony_cimlp_decoder_select="mlp_parser"
27791bd4fe43Sopenharmony_cimlp_encoder_select="lpc audio_frame_queue"
27801bd4fe43Sopenharmony_cimobiclip_decoder_select="bswapdsp golomb"
27811bd4fe43Sopenharmony_cimotionpixels_decoder_select="bswapdsp"
27821bd4fe43Sopenharmony_cimp1_decoder_select="mpegaudio"
27831bd4fe43Sopenharmony_cimp1float_decoder_select="mpegaudio"
27841bd4fe43Sopenharmony_cimp2_decoder_select="mpegaudio"
27851bd4fe43Sopenharmony_cimp2float_decoder_select="mpegaudio"
27861bd4fe43Sopenharmony_cimp3_decoder_select="mpegaudio"
27871bd4fe43Sopenharmony_cimp3adu_decoder_select="mpegaudio"
27881bd4fe43Sopenharmony_cimp3adufloat_decoder_select="mpegaudio"
27891bd4fe43Sopenharmony_cimp3float_decoder_select="mpegaudio"
27901bd4fe43Sopenharmony_cimp3on4_decoder_select="mpegaudio"
27911bd4fe43Sopenharmony_cimp3on4float_decoder_select="mpegaudio"
27921bd4fe43Sopenharmony_cimpc7_decoder_select="bswapdsp mpegaudiodsp"
27931bd4fe43Sopenharmony_cimpc8_decoder_select="mpegaudiodsp"
27941bd4fe43Sopenharmony_cimpegvideo_decoder_select="mpegvideo"
27951bd4fe43Sopenharmony_cimpeg1video_decoder_select="mpegvideo"
27961bd4fe43Sopenharmony_cimpeg1video_encoder_select="mpegvideoenc h263dsp"
27971bd4fe43Sopenharmony_cimpeg2video_decoder_select="mpegvideo"
27981bd4fe43Sopenharmony_cimpeg2video_encoder_select="mpegvideoenc h263dsp"
27991bd4fe43Sopenharmony_cimpeg4_decoder_select="h263_decoder mpeg4video_parser"
28001bd4fe43Sopenharmony_cimpeg4_encoder_select="h263_encoder"
28011bd4fe43Sopenharmony_cimsa1_decoder_select="mss34dsp"
28021bd4fe43Sopenharmony_cimscc_decoder_deps="zlib"
28031bd4fe43Sopenharmony_cimsmpeg4v1_decoder_select="h263_decoder"
28041bd4fe43Sopenharmony_cimsmpeg4v2_decoder_select="h263_decoder"
28051bd4fe43Sopenharmony_cimsmpeg4v2_encoder_select="h263_encoder"
28061bd4fe43Sopenharmony_cimsmpeg4v3_decoder_select="h263_decoder"
28071bd4fe43Sopenharmony_cimsmpeg4v3_encoder_select="h263_encoder"
28081bd4fe43Sopenharmony_cimss2_decoder_select="mpegvideo qpeldsp vc1_decoder"
28091bd4fe43Sopenharmony_cimts2_decoder_select="jpegtables mss34dsp"
28101bd4fe43Sopenharmony_cimv30_decoder_select="aandcttables blockdsp"
28111bd4fe43Sopenharmony_cimvha_decoder_deps="zlib"
28121bd4fe43Sopenharmony_cimvha_decoder_select="llviddsp"
28131bd4fe43Sopenharmony_cimwsc_decoder_deps="zlib"
28141bd4fe43Sopenharmony_cimxpeg_decoder_select="mjpeg_decoder"
28151bd4fe43Sopenharmony_cinellymoser_decoder_select="mdct sinewin"
28161bd4fe43Sopenharmony_cinellymoser_encoder_select="audio_frame_queue mdct sinewin"
28171bd4fe43Sopenharmony_cinotchlc_decoder_select="lzf"
28181bd4fe43Sopenharmony_cinuv_decoder_select="idctdsp lzo"
28191bd4fe43Sopenharmony_cion2avc_decoder_select="mdct"
28201bd4fe43Sopenharmony_ciopus_decoder_deps="swresample"
28211bd4fe43Sopenharmony_ciopus_decoder_select="mdct15"
28221bd4fe43Sopenharmony_ciopus_encoder_select="audio_frame_queue mdct15"
28231bd4fe43Sopenharmony_cipng_decoder_deps="zlib"
28241bd4fe43Sopenharmony_cipng_encoder_deps="zlib"
28251bd4fe43Sopenharmony_cipng_encoder_select="llvidencdsp"
28261bd4fe43Sopenharmony_ciprores_decoder_select="blockdsp idctdsp"
28271bd4fe43Sopenharmony_ciprores_encoder_select="fdctdsp"
28281bd4fe43Sopenharmony_ciqcelp_decoder_select="lsp"
28291bd4fe43Sopenharmony_ciqdm2_decoder_select="mdct rdft mpegaudiodsp"
28301bd4fe43Sopenharmony_cira_144_decoder_select="audiodsp"
28311bd4fe43Sopenharmony_cira_144_encoder_select="audio_frame_queue lpc audiodsp"
28321bd4fe43Sopenharmony_ciralf_decoder_select="golomb"
28331bd4fe43Sopenharmony_cirasc_decoder_deps="zlib"
28341bd4fe43Sopenharmony_cirawvideo_decoder_select="bswapdsp"
28351bd4fe43Sopenharmony_cirscc_decoder_deps="zlib"
28361bd4fe43Sopenharmony_cirtjpeg_decoder_select="me_cmp"
28371bd4fe43Sopenharmony_cirv10_decoder_select="h263_decoder"
28381bd4fe43Sopenharmony_cirv10_encoder_select="h263_encoder"
28391bd4fe43Sopenharmony_cirv20_decoder_select="h263_decoder"
28401bd4fe43Sopenharmony_cirv20_encoder_select="h263_encoder"
28411bd4fe43Sopenharmony_cirv30_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
28421bd4fe43Sopenharmony_cirv40_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
28431bd4fe43Sopenharmony_ciscreenpresso_decoder_deps="zlib"
28441bd4fe43Sopenharmony_cishorten_decoder_select="bswapdsp"
28451bd4fe43Sopenharmony_cisipr_decoder_select="lsp"
28461bd4fe43Sopenharmony_cismvjpeg_decoder_select="mjpeg_decoder"
28471bd4fe43Sopenharmony_cisnow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp"
28481bd4fe43Sopenharmony_cisnow_encoder_select="dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder"
28491bd4fe43Sopenharmony_cisonic_decoder_select="golomb rangecoder"
28501bd4fe43Sopenharmony_cisonic_encoder_select="golomb rangecoder"
28511bd4fe43Sopenharmony_cisonic_ls_encoder_select="golomb rangecoder"
28521bd4fe43Sopenharmony_cisp5x_decoder_select="mjpeg_decoder"
28531bd4fe43Sopenharmony_cispeedhq_decoder_select="mpegvideo"
28541bd4fe43Sopenharmony_cispeedhq_encoder_select="mpegvideoenc"
28551bd4fe43Sopenharmony_cisrgc_decoder_deps="zlib"
28561bd4fe43Sopenharmony_cisvq1_decoder_select="hpeldsp"
28571bd4fe43Sopenharmony_cisvq1_encoder_select="hpeldsp me_cmp mpegvideoenc"
28581bd4fe43Sopenharmony_cisvq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
28591bd4fe43Sopenharmony_cisvq3_decoder_suggest="zlib"
28601bd4fe43Sopenharmony_citak_decoder_select="audiodsp"
28611bd4fe43Sopenharmony_citdsc_decoder_deps="zlib"
28621bd4fe43Sopenharmony_citdsc_decoder_select="mjpeg_decoder"
28631bd4fe43Sopenharmony_citheora_decoder_select="vp3_decoder"
28641bd4fe43Sopenharmony_cithp_decoder_select="mjpeg_decoder"
28651bd4fe43Sopenharmony_citiff_decoder_select="mjpeg_decoder"
28661bd4fe43Sopenharmony_citiff_decoder_suggest="zlib lzma"
28671bd4fe43Sopenharmony_citiff_encoder_suggest="zlib"
28681bd4fe43Sopenharmony_citruehd_decoder_select="mlp_parser"
28691bd4fe43Sopenharmony_citruehd_encoder_select="lpc audio_frame_queue"
28701bd4fe43Sopenharmony_citruemotion2_decoder_select="bswapdsp"
28711bd4fe43Sopenharmony_citruespeech_decoder_select="bswapdsp"
28721bd4fe43Sopenharmony_citscc_decoder_deps="zlib"
28731bd4fe43Sopenharmony_citwinvq_decoder_select="mdct lsp sinewin"
28741bd4fe43Sopenharmony_citxd_decoder_select="texturedsp"
28751bd4fe43Sopenharmony_ciutvideo_decoder_select="bswapdsp llviddsp"
28761bd4fe43Sopenharmony_ciutvideo_encoder_select="bswapdsp huffman llvidencdsp"
28771bd4fe43Sopenharmony_civble_decoder_select="llviddsp"
28781bd4fe43Sopenharmony_civc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp"
28791bd4fe43Sopenharmony_civc1image_decoder_select="vc1_decoder"
28801bd4fe43Sopenharmony_civorbis_decoder_select="mdct"
28811bd4fe43Sopenharmony_civorbis_encoder_select="audio_frame_queue mdct"
28821bd4fe43Sopenharmony_civp3_decoder_select="hpeldsp vp3dsp videodsp"
28831bd4fe43Sopenharmony_civp4_decoder_select="vp3_decoder"
28841bd4fe43Sopenharmony_civp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
28851bd4fe43Sopenharmony_civp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
28861bd4fe43Sopenharmony_civp6a_decoder_select="vp6_decoder"
28871bd4fe43Sopenharmony_civp6f_decoder_select="vp6_decoder"
28881bd4fe43Sopenharmony_civp7_decoder_select="h264pred videodsp vp8dsp"
28891bd4fe43Sopenharmony_civp8_decoder_select="h264pred videodsp vp8dsp"
28901bd4fe43Sopenharmony_civp9_decoder_select="videodsp vp9_parser vp9_superframe_split_bsf"
28911bd4fe43Sopenharmony_ciwcmv_decoder_deps="zlib"
28921bd4fe43Sopenharmony_ciwebp_decoder_select="vp8_decoder exif"
28931bd4fe43Sopenharmony_ciwmalossless_decoder_select="llauddsp"
28941bd4fe43Sopenharmony_ciwmapro_decoder_select="mdct sinewin wma_freqs"
28951bd4fe43Sopenharmony_ciwmav1_decoder_select="mdct sinewin wma_freqs"
28961bd4fe43Sopenharmony_ciwmav1_encoder_select="mdct sinewin wma_freqs"
28971bd4fe43Sopenharmony_ciwmav2_decoder_select="mdct sinewin wma_freqs"
28981bd4fe43Sopenharmony_ciwmav2_encoder_select="mdct sinewin wma_freqs"
28991bd4fe43Sopenharmony_ciwmavoice_decoder_select="lsp rdft dct mdct sinewin"
29001bd4fe43Sopenharmony_ciwmv1_decoder_select="h263_decoder"
29011bd4fe43Sopenharmony_ciwmv1_encoder_select="h263_encoder"
29021bd4fe43Sopenharmony_ciwmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
29031bd4fe43Sopenharmony_ciwmv2_encoder_select="h263_encoder wmv2dsp"
29041bd4fe43Sopenharmony_ciwmv3_decoder_select="vc1_decoder"
29051bd4fe43Sopenharmony_ciwmv3image_decoder_select="wmv3_decoder"
29061bd4fe43Sopenharmony_cixma1_decoder_select="wmapro_decoder"
29071bd4fe43Sopenharmony_cixma2_decoder_select="wmapro_decoder"
29081bd4fe43Sopenharmony_ciylc_decoder_select="bswapdsp"
29091bd4fe43Sopenharmony_cizerocodec_decoder_deps="zlib"
29101bd4fe43Sopenharmony_cizlib_decoder_deps="zlib"
29111bd4fe43Sopenharmony_cizlib_encoder_deps="zlib"
29121bd4fe43Sopenharmony_cizmbv_decoder_deps="zlib"
29131bd4fe43Sopenharmony_cizmbv_encoder_deps="zlib"
29141bd4fe43Sopenharmony_ci
29151bd4fe43Sopenharmony_ci# hardware accelerators
29161bd4fe43Sopenharmony_cicrystalhd_deps="libcrystalhd_libcrystalhd_if_h"
29171bd4fe43Sopenharmony_cicuda_deps="ffnvcodec"
29181bd4fe43Sopenharmony_cicuvid_deps="ffnvcodec"
29191bd4fe43Sopenharmony_cid3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext"
29201bd4fe43Sopenharmony_cidxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32 user32"
29211bd4fe43Sopenharmony_ciffnvcodec_deps_any="libdl LoadLibrary"
29221bd4fe43Sopenharmony_cinvdec_deps="ffnvcodec"
29231bd4fe43Sopenharmony_civaapi_x11_deps="xlib"
29241bd4fe43Sopenharmony_civideotoolbox_hwaccel_deps="videotoolbox pthreads"
29251bd4fe43Sopenharmony_civideotoolbox_hwaccel_extralibs="-framework QuartzCore"
29261bd4fe43Sopenharmony_cixvmc_deps="X11_extensions_XvMClib_h"
29271bd4fe43Sopenharmony_ci
29281bd4fe43Sopenharmony_ciav1_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_AV1"
29291bd4fe43Sopenharmony_ciav1_d3d11va_hwaccel_select="av1_decoder"
29301bd4fe43Sopenharmony_ciav1_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_AV1"
29311bd4fe43Sopenharmony_ciav1_d3d11va2_hwaccel_select="av1_decoder"
29321bd4fe43Sopenharmony_ciav1_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_AV1"
29331bd4fe43Sopenharmony_ciav1_dxva2_hwaccel_select="av1_decoder"
29341bd4fe43Sopenharmony_ciav1_nvdec_hwaccel_deps="nvdec CUVIDAV1PICPARAMS"
29351bd4fe43Sopenharmony_ciav1_nvdec_hwaccel_select="av1_decoder"
29361bd4fe43Sopenharmony_ciav1_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferAV1_bit_depth_idx"
29371bd4fe43Sopenharmony_ciav1_vaapi_hwaccel_select="av1_decoder"
29381bd4fe43Sopenharmony_cih263_vaapi_hwaccel_deps="vaapi"
29391bd4fe43Sopenharmony_cih263_vaapi_hwaccel_select="h263_decoder"
29401bd4fe43Sopenharmony_cih263_videotoolbox_hwaccel_deps="videotoolbox"
29411bd4fe43Sopenharmony_cih263_videotoolbox_hwaccel_select="h263_decoder"
29421bd4fe43Sopenharmony_cih264_d3d11va_hwaccel_deps="d3d11va"
29431bd4fe43Sopenharmony_cih264_d3d11va_hwaccel_select="h264_decoder"
29441bd4fe43Sopenharmony_cih264_d3d11va2_hwaccel_deps="d3d11va"
29451bd4fe43Sopenharmony_cih264_d3d11va2_hwaccel_select="h264_decoder"
29461bd4fe43Sopenharmony_cih264_dxva2_hwaccel_deps="dxva2"
29471bd4fe43Sopenharmony_cih264_dxva2_hwaccel_select="h264_decoder"
29481bd4fe43Sopenharmony_cih264_nvdec_hwaccel_deps="nvdec"
29491bd4fe43Sopenharmony_cih264_nvdec_hwaccel_select="h264_decoder"
29501bd4fe43Sopenharmony_cih264_vaapi_hwaccel_deps="vaapi"
29511bd4fe43Sopenharmony_cih264_vaapi_hwaccel_select="h264_decoder"
29521bd4fe43Sopenharmony_cih264_vdpau_hwaccel_deps="vdpau"
29531bd4fe43Sopenharmony_cih264_vdpau_hwaccel_select="h264_decoder"
29541bd4fe43Sopenharmony_cih264_videotoolbox_hwaccel_deps="videotoolbox"
29551bd4fe43Sopenharmony_cih264_videotoolbox_hwaccel_select="h264_decoder"
29561bd4fe43Sopenharmony_cihevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
29571bd4fe43Sopenharmony_cihevc_d3d11va_hwaccel_select="hevc_decoder"
29581bd4fe43Sopenharmony_cihevc_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
29591bd4fe43Sopenharmony_cihevc_d3d11va2_hwaccel_select="hevc_decoder"
29601bd4fe43Sopenharmony_cihevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
29611bd4fe43Sopenharmony_cihevc_dxva2_hwaccel_select="hevc_decoder"
29621bd4fe43Sopenharmony_cihevc_nvdec_hwaccel_deps="nvdec"
29631bd4fe43Sopenharmony_cihevc_nvdec_hwaccel_select="hevc_decoder"
29641bd4fe43Sopenharmony_cihevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
29651bd4fe43Sopenharmony_cihevc_vaapi_hwaccel_select="hevc_decoder"
29661bd4fe43Sopenharmony_cihevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
29671bd4fe43Sopenharmony_cihevc_vdpau_hwaccel_select="hevc_decoder"
29681bd4fe43Sopenharmony_cihevc_videotoolbox_hwaccel_deps="videotoolbox"
29691bd4fe43Sopenharmony_cihevc_videotoolbox_hwaccel_select="hevc_decoder"
29701bd4fe43Sopenharmony_cimjpeg_nvdec_hwaccel_deps="nvdec"
29711bd4fe43Sopenharmony_cimjpeg_nvdec_hwaccel_select="mjpeg_decoder"
29721bd4fe43Sopenharmony_cimjpeg_vaapi_hwaccel_deps="vaapi"
29731bd4fe43Sopenharmony_cimjpeg_vaapi_hwaccel_select="mjpeg_decoder"
29741bd4fe43Sopenharmony_cimpeg_xvmc_hwaccel_deps="xvmc"
29751bd4fe43Sopenharmony_cimpeg_xvmc_hwaccel_select="mpeg2video_decoder"
29761bd4fe43Sopenharmony_cimpeg1_nvdec_hwaccel_deps="nvdec"
29771bd4fe43Sopenharmony_cimpeg1_nvdec_hwaccel_select="mpeg1video_decoder"
29781bd4fe43Sopenharmony_cimpeg1_vdpau_hwaccel_deps="vdpau"
29791bd4fe43Sopenharmony_cimpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
29801bd4fe43Sopenharmony_cimpeg1_videotoolbox_hwaccel_deps="videotoolbox"
29811bd4fe43Sopenharmony_cimpeg1_videotoolbox_hwaccel_select="mpeg1video_decoder"
29821bd4fe43Sopenharmony_cimpeg1_xvmc_hwaccel_deps="xvmc"
29831bd4fe43Sopenharmony_cimpeg1_xvmc_hwaccel_select="mpeg1video_decoder"
29841bd4fe43Sopenharmony_cimpeg2_d3d11va_hwaccel_deps="d3d11va"
29851bd4fe43Sopenharmony_cimpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
29861bd4fe43Sopenharmony_cimpeg2_d3d11va2_hwaccel_deps="d3d11va"
29871bd4fe43Sopenharmony_cimpeg2_d3d11va2_hwaccel_select="mpeg2video_decoder"
29881bd4fe43Sopenharmony_cimpeg2_dxva2_hwaccel_deps="dxva2"
29891bd4fe43Sopenharmony_cimpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
29901bd4fe43Sopenharmony_cimpeg2_nvdec_hwaccel_deps="nvdec"
29911bd4fe43Sopenharmony_cimpeg2_nvdec_hwaccel_select="mpeg2video_decoder"
29921bd4fe43Sopenharmony_cimpeg2_vaapi_hwaccel_deps="vaapi"
29931bd4fe43Sopenharmony_cimpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
29941bd4fe43Sopenharmony_cimpeg2_vdpau_hwaccel_deps="vdpau"
29951bd4fe43Sopenharmony_cimpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
29961bd4fe43Sopenharmony_cimpeg2_videotoolbox_hwaccel_deps="videotoolbox"
29971bd4fe43Sopenharmony_cimpeg2_videotoolbox_hwaccel_select="mpeg2video_decoder"
29981bd4fe43Sopenharmony_cimpeg2_xvmc_hwaccel_deps="xvmc"
29991bd4fe43Sopenharmony_cimpeg2_xvmc_hwaccel_select="mpeg2video_decoder"
30001bd4fe43Sopenharmony_cimpeg4_nvdec_hwaccel_deps="nvdec"
30011bd4fe43Sopenharmony_cimpeg4_nvdec_hwaccel_select="mpeg4_decoder"
30021bd4fe43Sopenharmony_cimpeg4_vaapi_hwaccel_deps="vaapi"
30031bd4fe43Sopenharmony_cimpeg4_vaapi_hwaccel_select="mpeg4_decoder"
30041bd4fe43Sopenharmony_cimpeg4_vdpau_hwaccel_deps="vdpau"
30051bd4fe43Sopenharmony_cimpeg4_vdpau_hwaccel_select="mpeg4_decoder"
30061bd4fe43Sopenharmony_cimpeg4_videotoolbox_hwaccel_deps="videotoolbox"
30071bd4fe43Sopenharmony_cimpeg4_videotoolbox_hwaccel_select="mpeg4_decoder"
30081bd4fe43Sopenharmony_civc1_d3d11va_hwaccel_deps="d3d11va"
30091bd4fe43Sopenharmony_civc1_d3d11va_hwaccel_select="vc1_decoder"
30101bd4fe43Sopenharmony_civc1_d3d11va2_hwaccel_deps="d3d11va"
30111bd4fe43Sopenharmony_civc1_d3d11va2_hwaccel_select="vc1_decoder"
30121bd4fe43Sopenharmony_civc1_dxva2_hwaccel_deps="dxva2"
30131bd4fe43Sopenharmony_civc1_dxva2_hwaccel_select="vc1_decoder"
30141bd4fe43Sopenharmony_civc1_nvdec_hwaccel_deps="nvdec"
30151bd4fe43Sopenharmony_civc1_nvdec_hwaccel_select="vc1_decoder"
30161bd4fe43Sopenharmony_civc1_vaapi_hwaccel_deps="vaapi"
30171bd4fe43Sopenharmony_civc1_vaapi_hwaccel_select="vc1_decoder"
30181bd4fe43Sopenharmony_civc1_vdpau_hwaccel_deps="vdpau"
30191bd4fe43Sopenharmony_civc1_vdpau_hwaccel_select="vc1_decoder"
30201bd4fe43Sopenharmony_civp8_nvdec_hwaccel_deps="nvdec"
30211bd4fe43Sopenharmony_civp8_nvdec_hwaccel_select="vp8_decoder"
30221bd4fe43Sopenharmony_civp8_vaapi_hwaccel_deps="vaapi"
30231bd4fe43Sopenharmony_civp8_vaapi_hwaccel_select="vp8_decoder"
30241bd4fe43Sopenharmony_civp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
30251bd4fe43Sopenharmony_civp9_d3d11va_hwaccel_select="vp9_decoder"
30261bd4fe43Sopenharmony_civp9_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
30271bd4fe43Sopenharmony_civp9_d3d11va2_hwaccel_select="vp9_decoder"
30281bd4fe43Sopenharmony_civp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
30291bd4fe43Sopenharmony_civp9_dxva2_hwaccel_select="vp9_decoder"
30301bd4fe43Sopenharmony_civp9_nvdec_hwaccel_deps="nvdec"
30311bd4fe43Sopenharmony_civp9_nvdec_hwaccel_select="vp9_decoder"
30321bd4fe43Sopenharmony_civp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth"
30331bd4fe43Sopenharmony_civp9_vaapi_hwaccel_select="vp9_decoder"
30341bd4fe43Sopenharmony_civp9_vdpau_hwaccel_deps="vdpau VdpPictureInfoVP9"
30351bd4fe43Sopenharmony_civp9_vdpau_hwaccel_select="vp9_decoder"
30361bd4fe43Sopenharmony_ciwmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
30371bd4fe43Sopenharmony_ciwmv3_d3d11va2_hwaccel_select="vc1_d3d11va2_hwaccel"
30381bd4fe43Sopenharmony_ciwmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
30391bd4fe43Sopenharmony_ciwmv3_nvdec_hwaccel_select="vc1_nvdec_hwaccel"
30401bd4fe43Sopenharmony_ciwmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
30411bd4fe43Sopenharmony_ciwmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
30421bd4fe43Sopenharmony_ci
30431bd4fe43Sopenharmony_ci# hardware-accelerated codecs
30441bd4fe43Sopenharmony_cimediafoundation_deps="mftransform_h MFCreateAlignedMemoryBuffer"
30451bd4fe43Sopenharmony_cimediafoundation_extralibs="-lmfplat -lmfuuid -lole32 -lstrmiids"
30461bd4fe43Sopenharmony_ciomx_deps="libdl pthreads"
30471bd4fe43Sopenharmony_ciomx_rpi_select="omx"
30481bd4fe43Sopenharmony_ciqsv_deps="libmfx"
30491bd4fe43Sopenharmony_ciqsvdec_select="qsv"
30501bd4fe43Sopenharmony_ciqsvenc_select="qsv"
30511bd4fe43Sopenharmony_ciqsvvpp_select="qsv"
30521bd4fe43Sopenharmony_civaapi_encode_deps="vaapi"
30531bd4fe43Sopenharmony_civ4l2_m2m_deps="linux_videodev2_h sem_timedwait"
30541bd4fe43Sopenharmony_ci
30551bd4fe43Sopenharmony_cihwupload_cuda_filter_deps="ffnvcodec"
30561bd4fe43Sopenharmony_ciscale_npp_filter_deps="ffnvcodec libnpp"
30571bd4fe43Sopenharmony_ciscale_cuda_filter_deps="ffnvcodec"
30581bd4fe43Sopenharmony_ciscale_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
30591bd4fe43Sopenharmony_cithumbnail_cuda_filter_deps="ffnvcodec"
30601bd4fe43Sopenharmony_cithumbnail_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
30611bd4fe43Sopenharmony_citranspose_npp_filter_deps="ffnvcodec libnpp"
30621bd4fe43Sopenharmony_cioverlay_cuda_filter_deps="ffnvcodec"
30631bd4fe43Sopenharmony_cioverlay_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
30641bd4fe43Sopenharmony_ci
30651bd4fe43Sopenharmony_ciamf_deps_any="libdl LoadLibrary"
30661bd4fe43Sopenharmony_cinvenc_deps="ffnvcodec"
30671bd4fe43Sopenharmony_cinvenc_deps_any="libdl LoadLibrary"
30681bd4fe43Sopenharmony_cinvenc_encoder_deps="nvenc"
30691bd4fe43Sopenharmony_ci
30701bd4fe43Sopenharmony_ciaac_mf_encoder_deps="mediafoundation"
30711bd4fe43Sopenharmony_ciac3_mf_encoder_deps="mediafoundation"
30721bd4fe43Sopenharmony_ciav1_cuvid_decoder_deps="cuvid CUVIDAV1PICPARAMS"
30731bd4fe43Sopenharmony_cih263_v4l2m2m_decoder_deps="v4l2_m2m h263_v4l2_m2m"
30741bd4fe43Sopenharmony_cih263_v4l2m2m_encoder_deps="v4l2_m2m h263_v4l2_m2m"
30751bd4fe43Sopenharmony_cih264_amf_encoder_deps="amf"
30761bd4fe43Sopenharmony_cih264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
30771bd4fe43Sopenharmony_cih264_cuvid_decoder_deps="cuvid"
30781bd4fe43Sopenharmony_cih264_cuvid_decoder_select="h264_mp4toannexb_bsf"
30791bd4fe43Sopenharmony_cih264_mediacodec_decoder_deps="mediacodec"
30801bd4fe43Sopenharmony_cih264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser"
30811bd4fe43Sopenharmony_cih264_mf_encoder_deps="mediafoundation"
30821bd4fe43Sopenharmony_cih264_mmal_decoder_deps="mmal"
30831bd4fe43Sopenharmony_cih264_nvenc_encoder_deps="nvenc"
30841bd4fe43Sopenharmony_cih264_nvenc_encoder_select="atsc_a53"
30851bd4fe43Sopenharmony_cih264_omx_encoder_deps="omx"
30861bd4fe43Sopenharmony_cih264_qsv_decoder_select="h264_mp4toannexb_bsf qsvdec"
30871bd4fe43Sopenharmony_cih264_qsv_encoder_select="atsc_a53 qsvenc"
30881bd4fe43Sopenharmony_cih264_rkmpp_decoder_deps="rkmpp"
30891bd4fe43Sopenharmony_cih264_rkmpp_decoder_select="h264_mp4toannexb_bsf"
30901bd4fe43Sopenharmony_cih264_vaapi_encoder_select="cbs_h264 vaapi_encode"
30911bd4fe43Sopenharmony_cih264_v4l2m2m_decoder_deps="v4l2_m2m h264_v4l2_m2m"
30921bd4fe43Sopenharmony_cih264_v4l2m2m_decoder_select="h264_mp4toannexb_bsf"
30931bd4fe43Sopenharmony_cih264_v4l2m2m_encoder_deps="v4l2_m2m h264_v4l2_m2m"
30941bd4fe43Sopenharmony_cihevc_amf_encoder_deps="amf"
30951bd4fe43Sopenharmony_cihevc_cuvid_decoder_deps="cuvid"
30961bd4fe43Sopenharmony_cihevc_cuvid_decoder_select="hevc_mp4toannexb_bsf"
30971bd4fe43Sopenharmony_cihevc_mediacodec_decoder_deps="mediacodec"
30981bd4fe43Sopenharmony_cihevc_mediacodec_decoder_select="hevc_mp4toannexb_bsf hevc_parser"
30991bd4fe43Sopenharmony_cihevc_mf_encoder_deps="mediafoundation"
31001bd4fe43Sopenharmony_cihevc_nvenc_encoder_deps="nvenc"
31011bd4fe43Sopenharmony_cihevc_nvenc_encoder_select="atsc_a53"
31021bd4fe43Sopenharmony_cihevc_qsv_decoder_select="hevc_mp4toannexb_bsf qsvdec"
31031bd4fe43Sopenharmony_cihevc_qsv_encoder_select="hevcparse qsvenc"
31041bd4fe43Sopenharmony_cihevc_rkmpp_decoder_deps="rkmpp"
31051bd4fe43Sopenharmony_cihevc_rkmpp_decoder_select="hevc_mp4toannexb_bsf"
31061bd4fe43Sopenharmony_cihevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC"
31071bd4fe43Sopenharmony_cihevc_vaapi_encoder_select="cbs_h265 vaapi_encode"
31081bd4fe43Sopenharmony_cihevc_v4l2m2m_decoder_deps="v4l2_m2m hevc_v4l2_m2m"
31091bd4fe43Sopenharmony_cihevc_v4l2m2m_decoder_select="hevc_mp4toannexb_bsf"
31101bd4fe43Sopenharmony_cihevc_v4l2m2m_encoder_deps="v4l2_m2m hevc_v4l2_m2m"
31111bd4fe43Sopenharmony_cimjpeg_cuvid_decoder_deps="cuvid"
31121bd4fe43Sopenharmony_cimjpeg_qsv_decoder_select="qsvdec"
31131bd4fe43Sopenharmony_cimjpeg_qsv_encoder_deps="libmfx"
31141bd4fe43Sopenharmony_cimjpeg_qsv_encoder_select="qsvenc"
31151bd4fe43Sopenharmony_cimjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
31161bd4fe43Sopenharmony_cimjpeg_vaapi_encoder_select="cbs_jpeg jpegtables vaapi_encode"
31171bd4fe43Sopenharmony_cimp3_mf_encoder_deps="mediafoundation"
31181bd4fe43Sopenharmony_cimpeg1_cuvid_decoder_deps="cuvid"
31191bd4fe43Sopenharmony_cimpeg1_v4l2m2m_decoder_deps="v4l2_m2m mpeg1_v4l2_m2m"
31201bd4fe43Sopenharmony_cimpeg2_crystalhd_decoder_select="crystalhd"
31211bd4fe43Sopenharmony_cimpeg2_cuvid_decoder_deps="cuvid"
31221bd4fe43Sopenharmony_cimpeg2_mmal_decoder_deps="mmal"
31231bd4fe43Sopenharmony_cimpeg2_mediacodec_decoder_deps="mediacodec"
31241bd4fe43Sopenharmony_cimpeg2_qsv_decoder_select="qsvdec"
31251bd4fe43Sopenharmony_cimpeg2_qsv_encoder_select="qsvenc"
31261bd4fe43Sopenharmony_cimpeg2_vaapi_encoder_select="cbs_mpeg2 vaapi_encode"
31271bd4fe43Sopenharmony_cimpeg2_v4l2m2m_decoder_deps="v4l2_m2m mpeg2_v4l2_m2m"
31281bd4fe43Sopenharmony_cimpeg4_crystalhd_decoder_select="crystalhd"
31291bd4fe43Sopenharmony_cimpeg4_cuvid_decoder_deps="cuvid"
31301bd4fe43Sopenharmony_cimpeg4_mediacodec_decoder_deps="mediacodec"
31311bd4fe43Sopenharmony_cimpeg4_mmal_decoder_deps="mmal"
31321bd4fe43Sopenharmony_cimpeg4_omx_encoder_deps="omx"
31331bd4fe43Sopenharmony_cimpeg4_v4l2m2m_decoder_deps="v4l2_m2m mpeg4_v4l2_m2m"
31341bd4fe43Sopenharmony_cimpeg4_v4l2m2m_encoder_deps="v4l2_m2m mpeg4_v4l2_m2m"
31351bd4fe43Sopenharmony_cimsmpeg4_crystalhd_decoder_select="crystalhd"
31361bd4fe43Sopenharmony_cinvenc_h264_encoder_select="h264_nvenc_encoder"
31371bd4fe43Sopenharmony_cinvenc_hevc_encoder_select="hevc_nvenc_encoder"
31381bd4fe43Sopenharmony_civc1_crystalhd_decoder_select="crystalhd"
31391bd4fe43Sopenharmony_civc1_cuvid_decoder_deps="cuvid"
31401bd4fe43Sopenharmony_civc1_mmal_decoder_deps="mmal"
31411bd4fe43Sopenharmony_civc1_qsv_decoder_select="qsvdec"
31421bd4fe43Sopenharmony_civc1_v4l2m2m_decoder_deps="v4l2_m2m vc1_v4l2_m2m"
31431bd4fe43Sopenharmony_civp8_cuvid_decoder_deps="cuvid"
31441bd4fe43Sopenharmony_civp8_mediacodec_decoder_deps="mediacodec"
31451bd4fe43Sopenharmony_civp8_qsv_decoder_select="qsvdec"
31461bd4fe43Sopenharmony_civp8_rkmpp_decoder_deps="rkmpp"
31471bd4fe43Sopenharmony_civp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8"
31481bd4fe43Sopenharmony_civp8_vaapi_encoder_select="vaapi_encode"
31491bd4fe43Sopenharmony_civp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m"
31501bd4fe43Sopenharmony_civp8_v4l2m2m_encoder_deps="v4l2_m2m vp8_v4l2_m2m"
31511bd4fe43Sopenharmony_civp9_cuvid_decoder_deps="cuvid"
31521bd4fe43Sopenharmony_civp9_mediacodec_decoder_deps="mediacodec"
31531bd4fe43Sopenharmony_civp9_qsv_decoder_select="qsvdec"
31541bd4fe43Sopenharmony_civp9_rkmpp_decoder_deps="rkmpp"
31551bd4fe43Sopenharmony_civp9_vaapi_encoder_deps="VAEncPictureParameterBufferVP9"
31561bd4fe43Sopenharmony_civp9_vaapi_encoder_select="vaapi_encode"
31571bd4fe43Sopenharmony_civp9_qsv_encoder_deps="libmfx MFX_CODEC_VP9"
31581bd4fe43Sopenharmony_civp9_qsv_encoder_select="qsvenc"
31591bd4fe43Sopenharmony_civp9_v4l2m2m_decoder_deps="v4l2_m2m vp9_v4l2_m2m"
31601bd4fe43Sopenharmony_ciwmv3_crystalhd_decoder_select="crystalhd"
31611bd4fe43Sopenharmony_ciav1_qsv_decoder_select="qsvdec"
31621bd4fe43Sopenharmony_ci
31631bd4fe43Sopenharmony_ci# parsers
31641bd4fe43Sopenharmony_ciaac_parser_select="adts_header"
31651bd4fe43Sopenharmony_ciav1_parser_select="cbs_av1"
31661bd4fe43Sopenharmony_cih264_parser_select="atsc_a53 golomb h264dsp h264parse"
31671bd4fe43Sopenharmony_cihevc_parser_select="hevcparse"
31681bd4fe43Sopenharmony_cimpegaudio_parser_select="mpegaudioheader"
31691bd4fe43Sopenharmony_cimpegvideo_parser_select="mpegvideo"
31701bd4fe43Sopenharmony_cimpeg4video_parser_select="h263dsp mpegvideo qpeldsp"
31711bd4fe43Sopenharmony_civc1_parser_select="vc1dsp"
31721bd4fe43Sopenharmony_ci
31731bd4fe43Sopenharmony_ci# bitstream_filters
31741bd4fe43Sopenharmony_ciaac_adtstoasc_bsf_select="adts_header"
31751bd4fe43Sopenharmony_ciav1_frame_merge_bsf_select="cbs_av1"
31761bd4fe43Sopenharmony_ciav1_frame_split_bsf_select="cbs_av1"
31771bd4fe43Sopenharmony_ciav1_metadata_bsf_select="cbs_av1"
31781bd4fe43Sopenharmony_cieac3_core_bsf_select="ac3_parser"
31791bd4fe43Sopenharmony_cifilter_units_bsf_select="cbs"
31801bd4fe43Sopenharmony_cih264_metadata_bsf_deps="const_nan"
31811bd4fe43Sopenharmony_cih264_metadata_bsf_select="cbs_h264"
31821bd4fe43Sopenharmony_cih264_redundant_pps_bsf_select="cbs_h264"
31831bd4fe43Sopenharmony_cihevc_metadata_bsf_select="cbs_h265"
31841bd4fe43Sopenharmony_cimjpeg2jpeg_bsf_select="jpegtables"
31851bd4fe43Sopenharmony_cimpeg2_metadata_bsf_select="cbs_mpeg2"
31861bd4fe43Sopenharmony_citrace_headers_bsf_select="cbs"
31871bd4fe43Sopenharmony_civp9_metadata_bsf_select="cbs_vp9"
31881bd4fe43Sopenharmony_ci
31891bd4fe43Sopenharmony_ci# external libraries
31901bd4fe43Sopenharmony_ciaac_at_decoder_deps="audiotoolbox"
31911bd4fe43Sopenharmony_ciaac_at_decoder_select="aac_adtstoasc_bsf"
31921bd4fe43Sopenharmony_ciac3_at_decoder_deps="audiotoolbox"
31931bd4fe43Sopenharmony_ciac3_at_decoder_select="ac3_parser"
31941bd4fe43Sopenharmony_ciadpcm_ima_qt_at_decoder_deps="audiotoolbox"
31951bd4fe43Sopenharmony_cialac_at_decoder_deps="audiotoolbox"
31961bd4fe43Sopenharmony_ciamr_nb_at_decoder_deps="audiotoolbox"
31971bd4fe43Sopenharmony_ciavisynth_deps_any="libdl LoadLibrary"
31981bd4fe43Sopenharmony_ciavisynth_demuxer_deps="avisynth"
31991bd4fe43Sopenharmony_ciavisynth_demuxer_select="riffdec"
32001bd4fe43Sopenharmony_cieac3_at_decoder_deps="audiotoolbox"
32011bd4fe43Sopenharmony_cieac3_at_decoder_select="ac3_parser"
32021bd4fe43Sopenharmony_cigsm_ms_at_decoder_deps="audiotoolbox"
32031bd4fe43Sopenharmony_ciilbc_at_decoder_deps="audiotoolbox"
32041bd4fe43Sopenharmony_cimp1_at_decoder_deps="audiotoolbox"
32051bd4fe43Sopenharmony_cimp2_at_decoder_deps="audiotoolbox"
32061bd4fe43Sopenharmony_cimp3_at_decoder_deps="audiotoolbox"
32071bd4fe43Sopenharmony_cimp1_at_decoder_select="mpegaudioheader"
32081bd4fe43Sopenharmony_cimp2_at_decoder_select="mpegaudioheader"
32091bd4fe43Sopenharmony_cimp3_at_decoder_select="mpegaudioheader"
32101bd4fe43Sopenharmony_cipcm_alaw_at_decoder_deps="audiotoolbox"
32111bd4fe43Sopenharmony_cipcm_mulaw_at_decoder_deps="audiotoolbox"
32121bd4fe43Sopenharmony_ciqdmc_decoder_select="fft"
32131bd4fe43Sopenharmony_ciqdmc_at_decoder_deps="audiotoolbox"
32141bd4fe43Sopenharmony_ciqdm2_at_decoder_deps="audiotoolbox"
32151bd4fe43Sopenharmony_ciaac_at_encoder_deps="audiotoolbox"
32161bd4fe43Sopenharmony_ciaac_at_encoder_select="audio_frame_queue"
32171bd4fe43Sopenharmony_cialac_at_encoder_deps="audiotoolbox"
32181bd4fe43Sopenharmony_cialac_at_encoder_select="audio_frame_queue"
32191bd4fe43Sopenharmony_ciilbc_at_encoder_deps="audiotoolbox"
32201bd4fe43Sopenharmony_ciilbc_at_encoder_select="audio_frame_queue"
32211bd4fe43Sopenharmony_cipcm_alaw_at_encoder_deps="audiotoolbox"
32221bd4fe43Sopenharmony_cipcm_alaw_at_encoder_select="audio_frame_queue"
32231bd4fe43Sopenharmony_cipcm_mulaw_at_encoder_deps="audiotoolbox"
32241bd4fe43Sopenharmony_cipcm_mulaw_at_encoder_select="audio_frame_queue"
32251bd4fe43Sopenharmony_cichromaprint_muxer_deps="chromaprint"
32261bd4fe43Sopenharmony_cih264_videotoolbox_encoder_deps="pthreads"
32271bd4fe43Sopenharmony_cih264_videotoolbox_encoder_select="atsc_a53 videotoolbox_encoder"
32281bd4fe43Sopenharmony_cihevc_videotoolbox_encoder_deps="pthreads"
32291bd4fe43Sopenharmony_cihevc_videotoolbox_encoder_select="atsc_a53 videotoolbox_encoder"
32301bd4fe43Sopenharmony_cilibaom_av1_decoder_deps="libaom"
32311bd4fe43Sopenharmony_cilibaom_av1_encoder_deps="libaom"
32321bd4fe43Sopenharmony_cilibaom_av1_encoder_select="extract_extradata_bsf"
32331bd4fe43Sopenharmony_cilibaribb24_decoder_deps="libaribb24"
32341bd4fe43Sopenharmony_cilibcelt_decoder_deps="libcelt"
32351bd4fe43Sopenharmony_cilibcodec2_decoder_deps="libcodec2"
32361bd4fe43Sopenharmony_cilibcodec2_encoder_deps="libcodec2"
32371bd4fe43Sopenharmony_cilibdav1d_decoder_deps="libdav1d"
32381bd4fe43Sopenharmony_cilibdav1d_decoder_select="atsc_a53"
32391bd4fe43Sopenharmony_cilibdavs2_decoder_deps="libdavs2"
32401bd4fe43Sopenharmony_cilibfdk_aac_decoder_deps="libfdk_aac"
32411bd4fe43Sopenharmony_cilibfdk_aac_encoder_deps="libfdk_aac"
32421bd4fe43Sopenharmony_cilibfdk_aac_encoder_select="audio_frame_queue"
32431bd4fe43Sopenharmony_cilibgme_demuxer_deps="libgme"
32441bd4fe43Sopenharmony_cilibgsm_decoder_deps="libgsm"
32451bd4fe43Sopenharmony_cilibgsm_encoder_deps="libgsm"
32461bd4fe43Sopenharmony_cilibgsm_ms_decoder_deps="libgsm"
32471bd4fe43Sopenharmony_cilibgsm_ms_encoder_deps="libgsm"
32481bd4fe43Sopenharmony_cilibilbc_decoder_deps="libilbc"
32491bd4fe43Sopenharmony_cilibilbc_encoder_deps="libilbc"
32501bd4fe43Sopenharmony_cilibkvazaar_encoder_deps="libkvazaar"
32511bd4fe43Sopenharmony_cilibmodplug_demuxer_deps="libmodplug"
32521bd4fe43Sopenharmony_cilibmp3lame_encoder_deps="libmp3lame"
32531bd4fe43Sopenharmony_cilibmp3lame_encoder_select="audio_frame_queue mpegaudioheader"
32541bd4fe43Sopenharmony_cilibopencore_amrnb_decoder_deps="libopencore_amrnb"
32551bd4fe43Sopenharmony_cilibopencore_amrnb_encoder_deps="libopencore_amrnb"
32561bd4fe43Sopenharmony_cilibopencore_amrnb_encoder_select="audio_frame_queue"
32571bd4fe43Sopenharmony_cilibopencore_amrwb_decoder_deps="libopencore_amrwb"
32581bd4fe43Sopenharmony_cilibopenh264_decoder_deps="libopenh264"
32591bd4fe43Sopenharmony_cilibopenh264_decoder_select="h264_mp4toannexb_bsf"
32601bd4fe43Sopenharmony_cilibopenh264_encoder_deps="libopenh264"
32611bd4fe43Sopenharmony_cilibopenjpeg_decoder_deps="libopenjpeg"
32621bd4fe43Sopenharmony_cilibopenjpeg_encoder_deps="libopenjpeg"
32631bd4fe43Sopenharmony_cilibopenmpt_demuxer_deps="libopenmpt"
32641bd4fe43Sopenharmony_cilibopus_decoder_deps="libopus"
32651bd4fe43Sopenharmony_cilibopus_encoder_deps="libopus"
32661bd4fe43Sopenharmony_cilibopus_encoder_select="audio_frame_queue"
32671bd4fe43Sopenharmony_cilibrav1e_encoder_deps="librav1e"
32681bd4fe43Sopenharmony_cilibrav1e_encoder_select="extract_extradata_bsf"
32691bd4fe43Sopenharmony_cilibrsvg_decoder_deps="librsvg"
32701bd4fe43Sopenharmony_cilibshine_encoder_deps="libshine"
32711bd4fe43Sopenharmony_cilibshine_encoder_select="audio_frame_queue"
32721bd4fe43Sopenharmony_cilibspeex_decoder_deps="libspeex"
32731bd4fe43Sopenharmony_cilibspeex_encoder_deps="libspeex"
32741bd4fe43Sopenharmony_cilibspeex_encoder_select="audio_frame_queue"
32751bd4fe43Sopenharmony_cilibsvtav1_encoder_deps="libsvtav1"
32761bd4fe43Sopenharmony_cilibtheora_encoder_deps="libtheora"
32771bd4fe43Sopenharmony_cilibtwolame_encoder_deps="libtwolame"
32781bd4fe43Sopenharmony_cilibuavs3d_decoder_deps="libuavs3d"
32791bd4fe43Sopenharmony_cilibvo_amrwbenc_encoder_deps="libvo_amrwbenc"
32801bd4fe43Sopenharmony_cilibvorbis_decoder_deps="libvorbis"
32811bd4fe43Sopenharmony_cilibvorbis_encoder_deps="libvorbis libvorbisenc"
32821bd4fe43Sopenharmony_cilibvorbis_encoder_select="audio_frame_queue"
32831bd4fe43Sopenharmony_cilibvpx_vp8_decoder_deps="libvpx"
32841bd4fe43Sopenharmony_cilibvpx_vp8_encoder_deps="libvpx"
32851bd4fe43Sopenharmony_cilibvpx_vp9_decoder_deps="libvpx"
32861bd4fe43Sopenharmony_cilibvpx_vp9_encoder_deps="libvpx"
32871bd4fe43Sopenharmony_cilibwebp_encoder_deps="libwebp"
32881bd4fe43Sopenharmony_cilibwebp_anim_encoder_deps="libwebp"
32891bd4fe43Sopenharmony_cilibx262_encoder_deps="libx262"
32901bd4fe43Sopenharmony_cilibx264_encoder_deps="libx264"
32911bd4fe43Sopenharmony_cilibx264_encoder_select="atsc_a53"
32921bd4fe43Sopenharmony_cilibx264rgb_encoder_deps="libx264 x264_csp_bgr"
32931bd4fe43Sopenharmony_cilibx264rgb_encoder_select="libx264_encoder"
32941bd4fe43Sopenharmony_cilibx265_encoder_deps="libx265"
32951bd4fe43Sopenharmony_cilibxavs_encoder_deps="libxavs"
32961bd4fe43Sopenharmony_cilibxavs2_encoder_deps="libxavs2"
32971bd4fe43Sopenharmony_cilibxvid_encoder_deps="libxvid"
32981bd4fe43Sopenharmony_cilibzvbi_teletext_decoder_deps="libzvbi"
32991bd4fe43Sopenharmony_civapoursynth_demuxer_deps="vapoursynth"
33001bd4fe43Sopenharmony_civideotoolbox_suggest="coreservices"
33011bd4fe43Sopenharmony_civideotoolbox_deps="corefoundation coremedia corevideo"
33021bd4fe43Sopenharmony_civideotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames"
33031bd4fe43Sopenharmony_ci
33041bd4fe43Sopenharmony_ci# demuxers / muxers
33051bd4fe43Sopenharmony_ciac3_demuxer_select="ac3_parser"
33061bd4fe43Sopenharmony_ciact_demuxer_select="riffdec"
33071bd4fe43Sopenharmony_ciaiff_muxer_select="iso_media"
33081bd4fe43Sopenharmony_ciasf_demuxer_select="riffdec"
33091bd4fe43Sopenharmony_ciasf_o_demuxer_select="riffdec"
33101bd4fe43Sopenharmony_ciasf_muxer_select="riffenc"
33111bd4fe43Sopenharmony_ciasf_stream_muxer_select="asf_muxer"
33121bd4fe43Sopenharmony_ciav1_demuxer_select="av1_frame_merge_bsf av1_parser"
33131bd4fe43Sopenharmony_ciavi_demuxer_select="riffdec exif"
33141bd4fe43Sopenharmony_ciavi_muxer_select="riffenc"
33151bd4fe43Sopenharmony_cicaf_demuxer_select="iso_media"
33161bd4fe43Sopenharmony_cicaf_muxer_select="iso_media"
33171bd4fe43Sopenharmony_cidash_muxer_select="mp4_muxer"
33181bd4fe43Sopenharmony_cidash_demuxer_deps="libxml2"
33191bd4fe43Sopenharmony_cidirac_demuxer_select="dirac_parser"
33201bd4fe43Sopenharmony_cidts_demuxer_select="dca_parser"
33211bd4fe43Sopenharmony_cidtshd_demuxer_select="dca_parser"
33221bd4fe43Sopenharmony_cidv_demuxer_select="dvprofile"
33231bd4fe43Sopenharmony_cidv_muxer_select="dvprofile"
33241bd4fe43Sopenharmony_cidxa_demuxer_select="riffdec"
33251bd4fe43Sopenharmony_cieac3_demuxer_select="ac3_parser"
33261bd4fe43Sopenharmony_cif4v_muxer_select="mov_muxer"
33271bd4fe43Sopenharmony_cififo_muxer_deps="threads"
33281bd4fe43Sopenharmony_ciflac_demuxer_select="flac_parser"
33291bd4fe43Sopenharmony_ciflv_muxer_select="aac_adtstoasc_bsf"
33301bd4fe43Sopenharmony_cigxf_muxer_select="pcm_rechunk_bsf"
33311bd4fe43Sopenharmony_cihds_muxer_select="flv_muxer"
33321bd4fe43Sopenharmony_cihls_muxer_select="mpegts_muxer"
33331bd4fe43Sopenharmony_cihls_muxer_suggest="gcrypt openssl"
33341bd4fe43Sopenharmony_ciimage2_alias_pix_demuxer_select="image2_demuxer"
33351bd4fe43Sopenharmony_ciimage2_brender_pix_demuxer_select="image2_demuxer"
33361bd4fe43Sopenharmony_ciipod_muxer_select="mov_muxer"
33371bd4fe43Sopenharmony_ciismv_muxer_select="mov_muxer"
33381bd4fe43Sopenharmony_ciivf_muxer_select="av1_metadata_bsf vp9_superframe_bsf"
33391bd4fe43Sopenharmony_cilatm_muxer_select="aac_adtstoasc_bsf"
33401bd4fe43Sopenharmony_cimatroska_audio_muxer_select="matroska_muxer"
33411bd4fe43Sopenharmony_cimatroska_demuxer_select="riffdec"
33421bd4fe43Sopenharmony_cimatroska_demuxer_suggest="bzlib lzo zlib"
33431bd4fe43Sopenharmony_cimatroska_muxer_select="riffenc vp9_superframe_bsf aac_adtstoasc_bsf"
33441bd4fe43Sopenharmony_cimlp_demuxer_select="mlp_parser"
33451bd4fe43Sopenharmony_cimmf_muxer_select="riffenc"
33461bd4fe43Sopenharmony_cimov_demuxer_select="iso_media riffdec"
33471bd4fe43Sopenharmony_cimov_demuxer_suggest="zlib"
33481bd4fe43Sopenharmony_cimov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf"
33491bd4fe43Sopenharmony_cimp3_demuxer_select="mpegaudio_parser"
33501bd4fe43Sopenharmony_cimp3_muxer_select="mpegaudioheader"
33511bd4fe43Sopenharmony_cimp4_muxer_select="mov_muxer"
33521bd4fe43Sopenharmony_cimpegts_demuxer_select="iso_media"
33531bd4fe43Sopenharmony_cimpegts_muxer_select="ac3_parser adts_muxer latm_muxer h264_mp4toannexb_bsf hevc_mp4toannexb_bsf"
33541bd4fe43Sopenharmony_cimpegtsraw_demuxer_select="mpegts_demuxer"
33551bd4fe43Sopenharmony_cimxf_muxer_select="golomb pcm_rechunk_bsf"
33561bd4fe43Sopenharmony_cimxf_d10_muxer_select="mxf_muxer"
33571bd4fe43Sopenharmony_cimxf_opatom_muxer_select="mxf_muxer"
33581bd4fe43Sopenharmony_cinut_muxer_select="riffenc"
33591bd4fe43Sopenharmony_cinuv_demuxer_select="riffdec"
33601bd4fe43Sopenharmony_ciobu_demuxer_select="av1_frame_merge_bsf av1_parser"
33611bd4fe43Sopenharmony_cioga_muxer_select="ogg_muxer"
33621bd4fe43Sopenharmony_ciogg_demuxer_select="dirac_parse"
33631bd4fe43Sopenharmony_ciogv_muxer_select="ogg_muxer"
33641bd4fe43Sopenharmony_ciopus_muxer_select="ogg_muxer"
33651bd4fe43Sopenharmony_cipsp_muxer_select="mov_muxer"
33661bd4fe43Sopenharmony_cirtp_demuxer_select="sdp_demuxer"
33671bd4fe43Sopenharmony_cirtp_muxer_select="golomb jpegtables"
33681bd4fe43Sopenharmony_cirtp_mpegts_muxer_select="mpegts_muxer rtp_muxer"
33691bd4fe43Sopenharmony_cirtpdec_select="asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
33701bd4fe43Sopenharmony_cirtsp_demuxer_select="http_protocol rtpdec"
33711bd4fe43Sopenharmony_cirtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
33721bd4fe43Sopenharmony_cisap_demuxer_select="sdp_demuxer"
33731bd4fe43Sopenharmony_cisap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
33741bd4fe43Sopenharmony_cisdp_demuxer_select="rtpdec"
33751bd4fe43Sopenharmony_cismoothstreaming_muxer_select="ismv_muxer"
33761bd4fe43Sopenharmony_cispdif_demuxer_select="adts_header"
33771bd4fe43Sopenharmony_cispdif_muxer_select="adts_header"
33781bd4fe43Sopenharmony_cispx_muxer_select="ogg_muxer"
33791bd4fe43Sopenharmony_ciswf_demuxer_suggest="zlib"
33801bd4fe43Sopenharmony_citak_demuxer_select="tak_parser"
33811bd4fe43Sopenharmony_citruehd_demuxer_select="mlp_parser"
33821bd4fe43Sopenharmony_citg2_muxer_select="mov_muxer"
33831bd4fe43Sopenharmony_citgp_muxer_select="mov_muxer"
33841bd4fe43Sopenharmony_civobsub_demuxer_select="mpegps_demuxer"
33851bd4fe43Sopenharmony_ciw64_demuxer_select="wav_demuxer"
33861bd4fe43Sopenharmony_ciw64_muxer_select="wav_muxer"
33871bd4fe43Sopenharmony_ciwav_demuxer_select="riffdec"
33881bd4fe43Sopenharmony_ciwav_muxer_select="riffenc"
33891bd4fe43Sopenharmony_ciwebm_chunk_muxer_select="webm_muxer"
33901bd4fe43Sopenharmony_ciwebm_muxer_select="riffenc"
33911bd4fe43Sopenharmony_ciwebm_dash_manifest_demuxer_select="matroska_demuxer"
33921bd4fe43Sopenharmony_ciwtv_demuxer_select="mpegts_demuxer riffdec"
33931bd4fe43Sopenharmony_ciwtv_muxer_select="mpegts_muxer riffenc"
33941bd4fe43Sopenharmony_cixmv_demuxer_select="riffdec"
33951bd4fe43Sopenharmony_cixwma_demuxer_select="riffdec"
33961bd4fe43Sopenharmony_ci
33971bd4fe43Sopenharmony_ci# indevs / outdevs
33981bd4fe43Sopenharmony_ciandroid_camera_indev_deps="android camera2ndk mediandk pthreads"
33991bd4fe43Sopenharmony_ciandroid_camera_indev_extralibs="-landroid -lcamera2ndk -lmediandk"
34001bd4fe43Sopenharmony_cialsa_indev_deps="alsa"
34011bd4fe43Sopenharmony_cialsa_outdev_deps="alsa"
34021bd4fe43Sopenharmony_ciavfoundation_indev_deps="avfoundation corevideo coremedia pthreads"
34031bd4fe43Sopenharmony_ciavfoundation_indev_suggest="coregraphics applicationservices"
34041bd4fe43Sopenharmony_ciavfoundation_indev_extralibs="-framework Foundation"
34051bd4fe43Sopenharmony_ciaudiotoolbox_outdev_deps="audiotoolbox pthreads"
34061bd4fe43Sopenharmony_ciaudiotoolbox_outdev_extralibs="-framework AudioToolbox -framework CoreAudio"
34071bd4fe43Sopenharmony_cibktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
34081bd4fe43Sopenharmony_cicaca_outdev_deps="libcaca"
34091bd4fe43Sopenharmony_cidecklink_deps_any="libdl LoadLibrary"
34101bd4fe43Sopenharmony_cidecklink_indev_deps="decklink threads"
34111bd4fe43Sopenharmony_cidecklink_indev_extralibs="-lstdc++"
34121bd4fe43Sopenharmony_cidecklink_outdev_deps="decklink threads"
34131bd4fe43Sopenharmony_cidecklink_outdev_suggest="libklvanc"
34141bd4fe43Sopenharmony_cidecklink_outdev_extralibs="-lstdc++"
34151bd4fe43Sopenharmony_cidshow_indev_deps="IBaseFilter"
34161bd4fe43Sopenharmony_cidshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi"
34171bd4fe43Sopenharmony_cifbdev_indev_deps="linux_fb_h"
34181bd4fe43Sopenharmony_cifbdev_outdev_deps="linux_fb_h"
34191bd4fe43Sopenharmony_cigdigrab_indev_deps="CreateDIBSection"
34201bd4fe43Sopenharmony_cigdigrab_indev_extralibs="-lgdi32"
34211bd4fe43Sopenharmony_cigdigrab_indev_select="bmp_decoder"
34221bd4fe43Sopenharmony_ciiec61883_indev_deps="libiec61883"
34231bd4fe43Sopenharmony_cijack_indev_deps="libjack"
34241bd4fe43Sopenharmony_cijack_indev_deps_any="sem_timedwait dispatch_dispatch_h"
34251bd4fe43Sopenharmony_cikmsgrab_indev_deps="libdrm"
34261bd4fe43Sopenharmony_cilavfi_indev_deps="avfilter"
34271bd4fe43Sopenharmony_cilibcdio_indev_deps="libcdio"
34281bd4fe43Sopenharmony_cilibdc1394_indev_deps="libdc1394"
34291bd4fe43Sopenharmony_ciopenal_indev_deps="openal"
34301bd4fe43Sopenharmony_ciopengl_outdev_deps="opengl"
34311bd4fe43Sopenharmony_ciopengl_outdev_suggest="sdl2"
34321bd4fe43Sopenharmony_cioss_indev_deps_any="sys_soundcard_h"
34331bd4fe43Sopenharmony_cioss_outdev_deps_any="sys_soundcard_h"
34341bd4fe43Sopenharmony_cipulse_indev_deps="libpulse"
34351bd4fe43Sopenharmony_cipulse_outdev_deps="libpulse"
34361bd4fe43Sopenharmony_cisdl2_outdev_deps="sdl2"
34371bd4fe43Sopenharmony_cisndio_indev_deps="sndio"
34381bd4fe43Sopenharmony_cisndio_outdev_deps="sndio"
34391bd4fe43Sopenharmony_civ4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
34401bd4fe43Sopenharmony_civ4l2_indev_suggest="libv4l2"
34411bd4fe43Sopenharmony_civ4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h"
34421bd4fe43Sopenharmony_civ4l2_outdev_suggest="libv4l2"
34431bd4fe43Sopenharmony_civfwcap_indev_deps="vfw32 vfwcap_defines"
34441bd4fe43Sopenharmony_cixcbgrab_indev_deps="libxcb"
34451bd4fe43Sopenharmony_cixcbgrab_indev_suggest="libxcb_shm libxcb_shape libxcb_xfixes"
34461bd4fe43Sopenharmony_cixv_outdev_deps="xlib"
34471bd4fe43Sopenharmony_ci
34481bd4fe43Sopenharmony_ci# protocols
34491bd4fe43Sopenharmony_ciasync_protocol_deps="threads"
34501bd4fe43Sopenharmony_cibluray_protocol_deps="libbluray"
34511bd4fe43Sopenharmony_ciffrtmpcrypt_protocol_conflict="librtmp_protocol"
34521bd4fe43Sopenharmony_ciffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl mbedtls"
34531bd4fe43Sopenharmony_ciffrtmpcrypt_protocol_select="tcp_protocol"
34541bd4fe43Sopenharmony_ciffrtmphttp_protocol_conflict="librtmp_protocol"
34551bd4fe43Sopenharmony_ciffrtmphttp_protocol_select="http_protocol"
34561bd4fe43Sopenharmony_ciftp_protocol_select="tcp_protocol"
34571bd4fe43Sopenharmony_cigopher_protocol_select="tcp_protocol"
34581bd4fe43Sopenharmony_cigophers_protocol_select="tls_protocol"
34591bd4fe43Sopenharmony_cihttp_protocol_select="tcp_protocol"
34601bd4fe43Sopenharmony_cihttp_protocol_suggest="zlib"
34611bd4fe43Sopenharmony_cihttpproxy_protocol_select="tcp_protocol"
34621bd4fe43Sopenharmony_cihttpproxy_protocol_suggest="zlib"
34631bd4fe43Sopenharmony_cihttps_protocol_select="tls_protocol"
34641bd4fe43Sopenharmony_cihttps_protocol_suggest="zlib"
34651bd4fe43Sopenharmony_ciicecast_protocol_select="http_protocol"
34661bd4fe43Sopenharmony_cimmsh_protocol_select="http_protocol"
34671bd4fe43Sopenharmony_cimmst_protocol_select="network"
34681bd4fe43Sopenharmony_cirtmp_protocol_conflict="librtmp_protocol"
34691bd4fe43Sopenharmony_cirtmp_protocol_select="tcp_protocol"
34701bd4fe43Sopenharmony_cirtmp_protocol_suggest="zlib"
34711bd4fe43Sopenharmony_cirtmpe_protocol_select="ffrtmpcrypt_protocol"
34721bd4fe43Sopenharmony_cirtmpe_protocol_suggest="zlib"
34731bd4fe43Sopenharmony_cirtmps_protocol_conflict="librtmp_protocol"
34741bd4fe43Sopenharmony_cirtmps_protocol_select="tls_protocol"
34751bd4fe43Sopenharmony_cirtmps_protocol_suggest="zlib"
34761bd4fe43Sopenharmony_cirtmpt_protocol_select="ffrtmphttp_protocol"
34771bd4fe43Sopenharmony_cirtmpt_protocol_suggest="zlib"
34781bd4fe43Sopenharmony_cirtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
34791bd4fe43Sopenharmony_cirtmpte_protocol_suggest="zlib"
34801bd4fe43Sopenharmony_cirtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
34811bd4fe43Sopenharmony_cirtmpts_protocol_suggest="zlib"
34821bd4fe43Sopenharmony_cirtp_protocol_select="udp_protocol"
34831bd4fe43Sopenharmony_cischannel_conflict="openssl gnutls libtls mbedtls"
34841bd4fe43Sopenharmony_cisctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
34851bd4fe43Sopenharmony_cisctp_protocol_select="network"
34861bd4fe43Sopenharmony_cisecuretransport_conflict="openssl gnutls libtls mbedtls"
34871bd4fe43Sopenharmony_cisrtp_protocol_select="rtp_protocol srtp"
34881bd4fe43Sopenharmony_citcp_protocol_select="network"
34891bd4fe43Sopenharmony_citls_protocol_deps_any="gnutls openssl schannel securetransport libtls mbedtls"
34901bd4fe43Sopenharmony_citls_protocol_select="tcp_protocol"
34911bd4fe43Sopenharmony_ciudp_protocol_select="network"
34921bd4fe43Sopenharmony_ciudplite_protocol_select="network"
34931bd4fe43Sopenharmony_ciunix_protocol_deps="sys_un_h"
34941bd4fe43Sopenharmony_ciunix_protocol_select="network"
34951bd4fe43Sopenharmony_ci
34961bd4fe43Sopenharmony_ci# external library protocols
34971bd4fe43Sopenharmony_cilibamqp_protocol_deps="librabbitmq"
34981bd4fe43Sopenharmony_cilibamqp_protocol_select="network"
34991bd4fe43Sopenharmony_cilibrist_protocol_deps="librist"
35001bd4fe43Sopenharmony_cilibrist_protocol_select="network"
35011bd4fe43Sopenharmony_cilibrtmp_protocol_deps="librtmp"
35021bd4fe43Sopenharmony_cilibrtmpe_protocol_deps="librtmp"
35031bd4fe43Sopenharmony_cilibrtmps_protocol_deps="librtmp"
35041bd4fe43Sopenharmony_cilibrtmpt_protocol_deps="librtmp"
35051bd4fe43Sopenharmony_cilibrtmpte_protocol_deps="librtmp"
35061bd4fe43Sopenharmony_cilibsmbclient_protocol_deps="libsmbclient gplv3"
35071bd4fe43Sopenharmony_cilibsrt_protocol_deps="libsrt"
35081bd4fe43Sopenharmony_cilibsrt_protocol_select="network"
35091bd4fe43Sopenharmony_cilibssh_protocol_deps="libssh"
35101bd4fe43Sopenharmony_cilibtls_conflict="openssl gnutls mbedtls"
35111bd4fe43Sopenharmony_cilibzmq_protocol_deps="libzmq"
35121bd4fe43Sopenharmony_cilibzmq_protocol_select="network"
35131bd4fe43Sopenharmony_ci
35141bd4fe43Sopenharmony_ci# filters
35151bd4fe43Sopenharmony_ciafftdn_filter_deps="avcodec"
35161bd4fe43Sopenharmony_ciafftdn_filter_select="fft"
35171bd4fe43Sopenharmony_ciafftfilt_filter_deps="avcodec"
35181bd4fe43Sopenharmony_ciafftfilt_filter_select="fft"
35191bd4fe43Sopenharmony_ciafir_filter_deps="avcodec"
35201bd4fe43Sopenharmony_ciafir_filter_select="rdft"
35211bd4fe43Sopenharmony_ciamovie_filter_deps="avcodec avformat"
35221bd4fe43Sopenharmony_ciaresample_filter_deps="swresample"
35231bd4fe43Sopenharmony_ciasoftclip_filter_deps="swresample"
35241bd4fe43Sopenharmony_ciasr_filter_deps="pocketsphinx"
35251bd4fe43Sopenharmony_ciass_filter_deps="libass"
35261bd4fe43Sopenharmony_ciatempo_filter_deps="avcodec"
35271bd4fe43Sopenharmony_ciatempo_filter_select="rdft"
35281bd4fe43Sopenharmony_ciavgblur_opencl_filter_deps="opencl"
35291bd4fe43Sopenharmony_ciavgblur_vulkan_filter_deps="vulkan libglslang"
35301bd4fe43Sopenharmony_ciazmq_filter_deps="libzmq"
35311bd4fe43Sopenharmony_ciblackframe_filter_deps="gpl"
35321bd4fe43Sopenharmony_cibm3d_filter_deps="avcodec"
35331bd4fe43Sopenharmony_cibm3d_filter_select="dct"
35341bd4fe43Sopenharmony_ciboxblur_filter_deps="gpl"
35351bd4fe43Sopenharmony_ciboxblur_opencl_filter_deps="opencl gpl"
35361bd4fe43Sopenharmony_cibs2b_filter_deps="libbs2b"
35371bd4fe43Sopenharmony_cichromaber_vulkan_filter_deps="vulkan libglslang"
35381bd4fe43Sopenharmony_cicolorkey_opencl_filter_deps="opencl"
35391bd4fe43Sopenharmony_cicolormatrix_filter_deps="gpl"
35401bd4fe43Sopenharmony_ciconvolution_opencl_filter_deps="opencl"
35411bd4fe43Sopenharmony_ciconvolve_filter_deps="avcodec"
35421bd4fe43Sopenharmony_ciconvolve_filter_select="fft"
35431bd4fe43Sopenharmony_cicoreimage_filter_deps="coreimage appkit"
35441bd4fe43Sopenharmony_cicoreimage_filter_extralibs="-framework OpenGL"
35451bd4fe43Sopenharmony_cicoreimagesrc_filter_deps="coreimage appkit"
35461bd4fe43Sopenharmony_cicoreimagesrc_filter_extralibs="-framework OpenGL"
35471bd4fe43Sopenharmony_cicover_rect_filter_deps="avcodec avformat gpl"
35481bd4fe43Sopenharmony_cicropdetect_filter_deps="gpl"
35491bd4fe43Sopenharmony_cideconvolve_filter_deps="avcodec"
35501bd4fe43Sopenharmony_cideconvolve_filter_select="fft"
35511bd4fe43Sopenharmony_cideinterlace_qsv_filter_deps="libmfx"
35521bd4fe43Sopenharmony_cideinterlace_vaapi_filter_deps="vaapi"
35531bd4fe43Sopenharmony_cidelogo_filter_deps="gpl"
35541bd4fe43Sopenharmony_cidenoise_vaapi_filter_deps="vaapi"
35551bd4fe43Sopenharmony_ciderain_filter_select="dnn"
35561bd4fe43Sopenharmony_cideshake_filter_select="pixelutils"
35571bd4fe43Sopenharmony_cideshake_opencl_filter_deps="opencl"
35581bd4fe43Sopenharmony_cidilation_opencl_filter_deps="opencl"
35591bd4fe43Sopenharmony_cidnn_processing_filter_select="dnn"
35601bd4fe43Sopenharmony_cidrawtext_filter_deps="libfreetype"
35611bd4fe43Sopenharmony_cidrawtext_filter_suggest="libfontconfig libfribidi"
35621bd4fe43Sopenharmony_cielbg_filter_deps="avcodec"
35631bd4fe43Sopenharmony_cieq_filter_deps="gpl"
35641bd4fe43Sopenharmony_cierosion_opencl_filter_deps="opencl"
35651bd4fe43Sopenharmony_cifftfilt_filter_deps="avcodec"
35661bd4fe43Sopenharmony_cifftfilt_filter_select="rdft"
35671bd4fe43Sopenharmony_cifftdnoiz_filter_deps="avcodec"
35681bd4fe43Sopenharmony_cifftdnoiz_filter_select="fft"
35691bd4fe43Sopenharmony_cifind_rect_filter_deps="avcodec avformat gpl"
35701bd4fe43Sopenharmony_cifirequalizer_filter_deps="avcodec"
35711bd4fe43Sopenharmony_cifirequalizer_filter_select="rdft"
35721bd4fe43Sopenharmony_ciflite_filter_deps="libflite"
35731bd4fe43Sopenharmony_ciframerate_filter_select="scene_sad"
35741bd4fe43Sopenharmony_cifreezedetect_filter_select="scene_sad"
35751bd4fe43Sopenharmony_cifrei0r_filter_deps="frei0r libdl"
35761bd4fe43Sopenharmony_cifrei0r_src_filter_deps="frei0r libdl"
35771bd4fe43Sopenharmony_cifspp_filter_deps="gpl"
35781bd4fe43Sopenharmony_ciheadphone_filter_select="fft"
35791bd4fe43Sopenharmony_cihisteq_filter_deps="gpl"
35801bd4fe43Sopenharmony_cihqdn3d_filter_deps="gpl"
35811bd4fe43Sopenharmony_ciinterlace_filter_deps="gpl"
35821bd4fe43Sopenharmony_cikerndeint_filter_deps="gpl"
35831bd4fe43Sopenharmony_ciladspa_filter_deps="ladspa libdl"
35841bd4fe43Sopenharmony_cilensfun_filter_deps="liblensfun version3"
35851bd4fe43Sopenharmony_cilv2_filter_deps="lv2"
35861bd4fe43Sopenharmony_cimcdeint_filter_deps="avcodec gpl"
35871bd4fe43Sopenharmony_cimovie_filter_deps="avcodec avformat"
35881bd4fe43Sopenharmony_cimpdecimate_filter_deps="gpl"
35891bd4fe43Sopenharmony_cimpdecimate_filter_select="pixelutils"
35901bd4fe43Sopenharmony_ciminterpolate_filter_select="scene_sad"
35911bd4fe43Sopenharmony_cimptestsrc_filter_deps="gpl"
35921bd4fe43Sopenharmony_cinegate_filter_deps="lut_filter"
35931bd4fe43Sopenharmony_cinlmeans_opencl_filter_deps="opencl"
35941bd4fe43Sopenharmony_cinnedi_filter_deps="gpl"
35951bd4fe43Sopenharmony_ciocr_filter_deps="libtesseract"
35961bd4fe43Sopenharmony_ciocv_filter_deps="libopencv"
35971bd4fe43Sopenharmony_ciopenclsrc_filter_deps="opencl"
35981bd4fe43Sopenharmony_cioverlay_opencl_filter_deps="opencl"
35991bd4fe43Sopenharmony_cioverlay_qsv_filter_deps="libmfx"
36001bd4fe43Sopenharmony_cioverlay_qsv_filter_select="qsvvpp"
36011bd4fe43Sopenharmony_cioverlay_vulkan_filter_deps="vulkan libglslang"
36021bd4fe43Sopenharmony_ciowdenoise_filter_deps="gpl"
36031bd4fe43Sopenharmony_cipad_opencl_filter_deps="opencl"
36041bd4fe43Sopenharmony_cipan_filter_deps="swresample"
36051bd4fe43Sopenharmony_ciperspective_filter_deps="gpl"
36061bd4fe43Sopenharmony_ciphase_filter_deps="gpl"
36071bd4fe43Sopenharmony_cipp7_filter_deps="gpl"
36081bd4fe43Sopenharmony_cipp_filter_deps="gpl postproc"
36091bd4fe43Sopenharmony_ciprewitt_opencl_filter_deps="opencl"
36101bd4fe43Sopenharmony_ciprocamp_vaapi_filter_deps="vaapi"
36111bd4fe43Sopenharmony_ciprogram_opencl_filter_deps="opencl"
36121bd4fe43Sopenharmony_cipullup_filter_deps="gpl"
36131bd4fe43Sopenharmony_ciremovelogo_filter_deps="avcodec avformat swscale"
36141bd4fe43Sopenharmony_cirepeatfields_filter_deps="gpl"
36151bd4fe43Sopenharmony_ciresample_filter_deps="avresample"
36161bd4fe43Sopenharmony_ciroberts_opencl_filter_deps="opencl"
36171bd4fe43Sopenharmony_cirubberband_filter_deps="librubberband"
36181bd4fe43Sopenharmony_cisab_filter_deps="gpl swscale"
36191bd4fe43Sopenharmony_ciscale2ref_filter_deps="swscale"
36201bd4fe43Sopenharmony_ciscale_filter_deps="swscale"
36211bd4fe43Sopenharmony_ciscale_qsv_filter_deps="libmfx"
36221bd4fe43Sopenharmony_ciscdet_filter_select="scene_sad"
36231bd4fe43Sopenharmony_ciselect_filter_select="scene_sad"
36241bd4fe43Sopenharmony_cisharpness_vaapi_filter_deps="vaapi"
36251bd4fe43Sopenharmony_cishowcqt_filter_deps="avcodec avformat swscale"
36261bd4fe43Sopenharmony_cishowcqt_filter_suggest="libfontconfig libfreetype"
36271bd4fe43Sopenharmony_cishowcqt_filter_select="fft"
36281bd4fe43Sopenharmony_cishowfreqs_filter_deps="avcodec"
36291bd4fe43Sopenharmony_cishowfreqs_filter_select="fft"
36301bd4fe43Sopenharmony_cishowspatial_filter_select="fft"
36311bd4fe43Sopenharmony_cishowspectrum_filter_deps="avcodec"
36321bd4fe43Sopenharmony_cishowspectrum_filter_select="fft"
36331bd4fe43Sopenharmony_cishowspectrumpic_filter_deps="avcodec"
36341bd4fe43Sopenharmony_cishowspectrumpic_filter_select="fft"
36351bd4fe43Sopenharmony_cisignature_filter_deps="gpl avcodec avformat"
36361bd4fe43Sopenharmony_cisinc_filter_select="rdft"
36371bd4fe43Sopenharmony_cismartblur_filter_deps="gpl swscale"
36381bd4fe43Sopenharmony_cisobel_opencl_filter_deps="opencl"
36391bd4fe43Sopenharmony_cisofalizer_filter_deps="libmysofa avcodec"
36401bd4fe43Sopenharmony_cisofalizer_filter_select="fft"
36411bd4fe43Sopenharmony_cispectrumsynth_filter_deps="avcodec"
36421bd4fe43Sopenharmony_cispectrumsynth_filter_select="fft"
36431bd4fe43Sopenharmony_cispp_filter_deps="gpl avcodec"
36441bd4fe43Sopenharmony_cispp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp"
36451bd4fe43Sopenharmony_cisr_filter_deps="avformat swscale"
36461bd4fe43Sopenharmony_cisr_filter_select="dnn"
36471bd4fe43Sopenharmony_cistereo3d_filter_deps="gpl"
36481bd4fe43Sopenharmony_cisubtitles_filter_deps="avformat avcodec libass"
36491bd4fe43Sopenharmony_cisuper2xsai_filter_deps="gpl"
36501bd4fe43Sopenharmony_cipixfmts_super2xsai_test_deps="super2xsai_filter"
36511bd4fe43Sopenharmony_cisuperequalizer_filter_select="rdft"
36521bd4fe43Sopenharmony_cisurround_filter_select="rdft"
36531bd4fe43Sopenharmony_citinterlace_filter_deps="gpl"
36541bd4fe43Sopenharmony_citinterlace_merge_test_deps="tinterlace_filter"
36551bd4fe43Sopenharmony_citinterlace_pad_test_deps="tinterlace_filter"
36561bd4fe43Sopenharmony_citonemap_filter_deps="const_nan"
36571bd4fe43Sopenharmony_citonemap_vaapi_filter_deps="vaapi VAProcFilterParameterBufferHDRToneMapping"
36581bd4fe43Sopenharmony_citonemap_opencl_filter_deps="opencl const_nan"
36591bd4fe43Sopenharmony_citranspose_opencl_filter_deps="opencl"
36601bd4fe43Sopenharmony_citranspose_vaapi_filter_deps="vaapi VAProcPipelineCaps_rotation_flags"
36611bd4fe43Sopenharmony_ciunsharp_opencl_filter_deps="opencl"
36621bd4fe43Sopenharmony_ciuspp_filter_deps="gpl avcodec"
36631bd4fe43Sopenharmony_civaguedenoiser_filter_deps="gpl"
36641bd4fe43Sopenharmony_cividstabdetect_filter_deps="libvidstab"
36651bd4fe43Sopenharmony_cividstabtransform_filter_deps="libvidstab"
36661bd4fe43Sopenharmony_cilibvmaf_filter_deps="libvmaf pthreads"
36671bd4fe43Sopenharmony_cizmq_filter_deps="libzmq"
36681bd4fe43Sopenharmony_cizoompan_filter_deps="swscale"
36691bd4fe43Sopenharmony_cizscale_filter_deps="libzimg const_nan"
36701bd4fe43Sopenharmony_ciscale_vaapi_filter_deps="vaapi"
36711bd4fe43Sopenharmony_ciscale_vulkan_filter_deps="vulkan libglslang"
36721bd4fe43Sopenharmony_civpp_qsv_filter_deps="libmfx"
36731bd4fe43Sopenharmony_civpp_qsv_filter_select="qsvvpp"
36741bd4fe43Sopenharmony_cixfade_opencl_filter_deps="opencl"
36751bd4fe43Sopenharmony_ciyadif_cuda_filter_deps="ffnvcodec"
36761bd4fe43Sopenharmony_ciyadif_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
36771bd4fe43Sopenharmony_ci
36781bd4fe43Sopenharmony_ci# examples
36791bd4fe43Sopenharmony_ciavio_list_dir_deps="avformat avutil"
36801bd4fe43Sopenharmony_ciavio_reading_deps="avformat avcodec avutil"
36811bd4fe43Sopenharmony_cidecode_audio_example_deps="avcodec avutil"
36821bd4fe43Sopenharmony_cidecode_video_example_deps="avcodec avutil"
36831bd4fe43Sopenharmony_cidemuxing_decoding_example_deps="avcodec avformat avutil"
36841bd4fe43Sopenharmony_ciencode_audio_example_deps="avcodec avutil"
36851bd4fe43Sopenharmony_ciencode_video_example_deps="avcodec avutil"
36861bd4fe43Sopenharmony_ciextract_mvs_example_deps="avcodec avformat avutil"
36871bd4fe43Sopenharmony_cifilter_audio_example_deps="avfilter avutil"
36881bd4fe43Sopenharmony_cifiltering_audio_example_deps="avfilter avcodec avformat avutil"
36891bd4fe43Sopenharmony_cifiltering_video_example_deps="avfilter avcodec avformat avutil"
36901bd4fe43Sopenharmony_cihttp_multiclient_example_deps="avformat avutil fork"
36911bd4fe43Sopenharmony_cihw_decode_example_deps="avcodec avformat avutil"
36921bd4fe43Sopenharmony_cimetadata_example_deps="avformat avutil"
36931bd4fe43Sopenharmony_cimuxing_example_deps="avcodec avformat avutil swscale"
36941bd4fe43Sopenharmony_ciqsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder"
36951bd4fe43Sopenharmony_ciremuxing_example_deps="avcodec avformat avutil"
36961bd4fe43Sopenharmony_ciresampling_audio_example_deps="avutil swresample"
36971bd4fe43Sopenharmony_ciscaling_video_example_deps="avutil swscale"
36981bd4fe43Sopenharmony_citranscode_aac_example_deps="avcodec avformat swresample"
36991bd4fe43Sopenharmony_citranscoding_example_deps="avfilter avcodec avformat avutil"
37001bd4fe43Sopenharmony_civaapi_encode_example_deps="avcodec avutil h264_vaapi_encoder"
37011bd4fe43Sopenharmony_civaapi_transcode_example_deps="avcodec avformat avutil h264_vaapi_encoder"
37021bd4fe43Sopenharmony_ci
37031bd4fe43Sopenharmony_ci# EXTRALIBS_LIST
37041bd4fe43Sopenharmony_cicpu_init_extralibs="pthreads_extralibs"
37051bd4fe43Sopenharmony_cicws2fws_extralibs="zlib_extralibs"
37061bd4fe43Sopenharmony_ci
37071bd4fe43Sopenharmony_ci# libraries, in any order
37081bd4fe43Sopenharmony_ciavcodec_deps="avutil"
37091bd4fe43Sopenharmony_ciavcodec_suggest="libm"
37101bd4fe43Sopenharmony_ciavcodec_select="null_bsf"
37111bd4fe43Sopenharmony_ciavdevice_deps="avformat avcodec avutil"
37121bd4fe43Sopenharmony_ciavdevice_suggest="libm"
37131bd4fe43Sopenharmony_ciavfilter_deps="avutil"
37141bd4fe43Sopenharmony_ciavfilter_suggest="libm"
37151bd4fe43Sopenharmony_ciavformat_deps="avcodec avutil"
37161bd4fe43Sopenharmony_ciavformat_suggest="libm network zlib"
37171bd4fe43Sopenharmony_ciavresample_deps="avutil"
37181bd4fe43Sopenharmony_ciavresample_suggest="libm"
37191bd4fe43Sopenharmony_ciavutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi vulkan videotoolbox corefoundation corevideo coremedia bcrypt"
37201bd4fe43Sopenharmony_cipostproc_deps="avutil gpl"
37211bd4fe43Sopenharmony_cipostproc_suggest="libm"
37221bd4fe43Sopenharmony_ciswresample_deps="avutil"
37231bd4fe43Sopenharmony_ciswresample_suggest="libm libsoxr"
37241bd4fe43Sopenharmony_ciswscale_deps="avutil"
37251bd4fe43Sopenharmony_ciswscale_suggest="libm"
37261bd4fe43Sopenharmony_ci
37271bd4fe43Sopenharmony_ciavcodec_extralibs="pthreads_extralibs iconv_extralibs dxva2_extralibs"
37281bd4fe43Sopenharmony_ciavfilter_extralibs="pthreads_extralibs"
37291bd4fe43Sopenharmony_ciavutil_extralibs="d3d11va_extralibs nanosleep_extralibs pthreads_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs"
37301bd4fe43Sopenharmony_ci
37311bd4fe43Sopenharmony_ci# programs
37321bd4fe43Sopenharmony_ciffmpeg_deps="avcodec avfilter avformat"
37331bd4fe43Sopenharmony_ciffmpeg_select="aformat_filter anull_filter atrim_filter format_filter
37341bd4fe43Sopenharmony_ci               hflip_filter null_filter
37351bd4fe43Sopenharmony_ci               transpose_filter trim_filter vflip_filter"
37361bd4fe43Sopenharmony_ciffmpeg_suggest="ole32 psapi shell32"
37371bd4fe43Sopenharmony_ciffplay_deps="avcodec avformat swscale swresample sdl2"
37381bd4fe43Sopenharmony_ciffplay_select="rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter"
37391bd4fe43Sopenharmony_ciffplay_suggest="shell32"
37401bd4fe43Sopenharmony_ciffprobe_deps="avcodec avformat"
37411bd4fe43Sopenharmony_ciffprobe_suggest="shell32"
37421bd4fe43Sopenharmony_ci
37431bd4fe43Sopenharmony_ci# documentation
37441bd4fe43Sopenharmony_cipodpages_deps="perl"
37451bd4fe43Sopenharmony_cimanpages_deps="perl pod2man"
37461bd4fe43Sopenharmony_cihtmlpages_deps="perl"
37471bd4fe43Sopenharmony_cihtmlpages_deps_any="makeinfo_html texi2html"
37481bd4fe43Sopenharmony_citxtpages_deps="perl makeinfo"
37491bd4fe43Sopenharmony_cidoc_deps_any="manpages htmlpages podpages txtpages"
37501bd4fe43Sopenharmony_ci
37511bd4fe43Sopenharmony_ci# default parameters
37521bd4fe43Sopenharmony_ci
37531bd4fe43Sopenharmony_cilogfile="ffbuild/config.log"
37541bd4fe43Sopenharmony_ci
37551bd4fe43Sopenharmony_ci# installation paths
37561bd4fe43Sopenharmony_ciprefix_default="/usr/local"
37571bd4fe43Sopenharmony_cibindir_default='${prefix}/bin'
37581bd4fe43Sopenharmony_cidatadir_default='${prefix}/share/ffmpeg'
37591bd4fe43Sopenharmony_cidocdir_default='${prefix}/share/doc/ffmpeg'
37601bd4fe43Sopenharmony_ciincdir_default='${prefix}/include'
37611bd4fe43Sopenharmony_cilibdir_default='${prefix}/lib'
37621bd4fe43Sopenharmony_cimandir_default='${prefix}/share/man'
37631bd4fe43Sopenharmony_ci
37641bd4fe43Sopenharmony_ci# toolchain
37651bd4fe43Sopenharmony_ciar_default="llvm-ar"
37661bd4fe43Sopenharmony_cicc_default="clang"
37671bd4fe43Sopenharmony_cicxx_default="clang++"
37681bd4fe43Sopenharmony_cihost_cc_default="clang"
37691bd4fe43Sopenharmony_cidoxygen_default="doxygen"
37701bd4fe43Sopenharmony_ciinstall="install"
37711bd4fe43Sopenharmony_ciln_s_default="ln -s -f"
37721bd4fe43Sopenharmony_cinm_default="llvm-nm -g"
37731bd4fe43Sopenharmony_cipkg_config_default=pkg-config
37741bd4fe43Sopenharmony_ciranlib_default="llvm-ranlib"
37751bd4fe43Sopenharmony_cistrip_default="llvm-strip"
37761bd4fe43Sopenharmony_civersion_script='--version-script'
37771bd4fe43Sopenharmony_ciobjformat="elf32"
37781bd4fe43Sopenharmony_cix86asmexe_default="nasm"
37791bd4fe43Sopenharmony_ciwindres_default="windres"
37801bd4fe43Sopenharmony_cistriptype="direct"
37811bd4fe43Sopenharmony_ci
37821bd4fe43Sopenharmony_ci# OS
37831bd4fe43Sopenharmony_citarget_os_default=$(tolower $(uname -s))
37841bd4fe43Sopenharmony_cihost_os=$target_os_default
37851bd4fe43Sopenharmony_ci
37861bd4fe43Sopenharmony_ci# machine
37871bd4fe43Sopenharmony_ciif test "$target_os_default" = aix; then
37881bd4fe43Sopenharmony_ci    arch_default=$(uname -p)
37891bd4fe43Sopenharmony_ci    strip_default="strip -X32_64"
37901bd4fe43Sopenharmony_ci    nm_default="nm -g -X32_64"
37911bd4fe43Sopenharmony_cielse
37921bd4fe43Sopenharmony_ci    arch_default=$(uname -m)
37931bd4fe43Sopenharmony_cifi
37941bd4fe43Sopenharmony_cicpu="generic"
37951bd4fe43Sopenharmony_ciintrinsics="none"
37961bd4fe43Sopenharmony_ci
37971bd4fe43Sopenharmony_ci# configurable options
37981bd4fe43Sopenharmony_cienable $PROGRAM_LIST
37991bd4fe43Sopenharmony_cienable $DOCUMENT_LIST
38001bd4fe43Sopenharmony_cienable $EXAMPLE_LIST
38011bd4fe43Sopenharmony_cienable $(filter_out avresample $LIBRARY_LIST)
38021bd4fe43Sopenharmony_cienable stripping
38031bd4fe43Sopenharmony_ci
38041bd4fe43Sopenharmony_cienable asm
38051bd4fe43Sopenharmony_cienable debug
38061bd4fe43Sopenharmony_cienable doc
38071bd4fe43Sopenharmony_cienable faan faandct faanidct
38081bd4fe43Sopenharmony_cienable large_tests
38091bd4fe43Sopenharmony_cienable optimizations
38101bd4fe43Sopenharmony_cienable runtime_cpudetect
38111bd4fe43Sopenharmony_cienable safe_bitstream_reader
38121bd4fe43Sopenharmony_cienable static
38131bd4fe43Sopenharmony_cienable swscale_alpha
38141bd4fe43Sopenharmony_cienable valgrind_backtrace
38151bd4fe43Sopenharmony_ci
38161bd4fe43Sopenharmony_cisws_max_filter_size_default=256
38171bd4fe43Sopenharmony_ciset_default sws_max_filter_size
38181bd4fe43Sopenharmony_ci
38191bd4fe43Sopenharmony_ci# internal components are enabled by default
38201bd4fe43Sopenharmony_cienable $EXTRALIBS_LIST
38211bd4fe43Sopenharmony_ci
38221bd4fe43Sopenharmony_ci# Avoid external, non-system, libraries getting enabled by dependency resolution
38231bd4fe43Sopenharmony_cidisable $EXTERNAL_LIBRARY_LIST $HWACCEL_LIBRARY_LIST
38241bd4fe43Sopenharmony_ci
38251bd4fe43Sopenharmony_ci# build settings
38261bd4fe43Sopenharmony_ciSHFLAGS='-shared -Wl,-soname,$$(@F)'
38271bd4fe43Sopenharmony_ciLIBPREF="lib"
38281bd4fe43Sopenharmony_ciLIBSUF=".a"
38291bd4fe43Sopenharmony_ciFULLNAME='$(NAME)$(BUILDSUF)'
38301bd4fe43Sopenharmony_ciLIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
38311bd4fe43Sopenharmony_ciSLIBPREF="lib"
38321bd4fe43Sopenharmony_ciSLIBSUF=".so"
38331bd4fe43Sopenharmony_ciSLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
38341bd4fe43Sopenharmony_ciSLIBNAME_WITH_VERSION='$(SLIBNAME)'
38351bd4fe43Sopenharmony_ciSLIBNAME_WITH_MAJOR='$(SLIBNAME)'
38361bd4fe43Sopenharmony_ciLIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
38371bd4fe43Sopenharmony_ciSLIB_INSTALL_NAME='$(SLIBNAME)'
38381bd4fe43Sopenharmony_ciVERSION_SCRIPT_POSTPROCESS_CMD="cat"
38391bd4fe43Sopenharmony_ci
38401bd4fe43Sopenharmony_ciasflags_filter=echo
38411bd4fe43Sopenharmony_cicflags_filter=echo
38421bd4fe43Sopenharmony_cildflags_filter=echo
38431bd4fe43Sopenharmony_ci
38441bd4fe43Sopenharmony_ciAS_C='-c'
38451bd4fe43Sopenharmony_ciAS_O='-o $@'
38461bd4fe43Sopenharmony_ciCC_C='-c'
38471bd4fe43Sopenharmony_ciCC_E='-E -o $@'
38481bd4fe43Sopenharmony_ciCC_O='-o $@'
38491bd4fe43Sopenharmony_ciCXX_C='-c'
38501bd4fe43Sopenharmony_ciCXX_O='-o $@'
38511bd4fe43Sopenharmony_ciOBJCC_C='-c'
38521bd4fe43Sopenharmony_ciOBJCC_E='-E -o $@'
38531bd4fe43Sopenharmony_ciOBJCC_O='-o $@'
38541bd4fe43Sopenharmony_ciX86ASM_O='-o $@'
38551bd4fe43Sopenharmony_ciLD_O='-o $@'
38561bd4fe43Sopenharmony_ciLD_LIB='-l%'
38571bd4fe43Sopenharmony_ciLD_PATH='-L'
38581bd4fe43Sopenharmony_ciHOSTCC_C='-c'
38591bd4fe43Sopenharmony_ciHOSTCC_E='-E -o $@'
38601bd4fe43Sopenharmony_ciHOSTCC_O='-o $@'
38611bd4fe43Sopenharmony_ciHOSTLD_O='-o $@'
38621bd4fe43Sopenharmony_ciNVCC_C='-c'
38631bd4fe43Sopenharmony_ciNVCC_O='-o $@'
38641bd4fe43Sopenharmony_ci
38651bd4fe43Sopenharmony_cihost_extralibs='-lm'
38661bd4fe43Sopenharmony_cihost_cflags_filter=echo
38671bd4fe43Sopenharmony_cihost_ldflags_filter=echo
38681bd4fe43Sopenharmony_ci
38691bd4fe43Sopenharmony_citarget_path='$(CURDIR)'
38701bd4fe43Sopenharmony_ci
38711bd4fe43Sopenharmony_ci# since the object filename is not given with the -MM flag, the compiler
38721bd4fe43Sopenharmony_ci# is only able to print the basename, and we must add the path ourselves
38731bd4fe43Sopenharmony_ciDEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)'
38741bd4fe43Sopenharmony_ciDEPFLAGS='-MM'
38751bd4fe43Sopenharmony_ci
38761bd4fe43Sopenharmony_cimkdir -p ffbuild
38771bd4fe43Sopenharmony_ci
38781bd4fe43Sopenharmony_ci# find source path
38791bd4fe43Sopenharmony_ciif test -f configure; then
38801bd4fe43Sopenharmony_ci    source_path=.
38811bd4fe43Sopenharmony_cielif test -f src/configure; then
38821bd4fe43Sopenharmony_ci    source_path=src
38831bd4fe43Sopenharmony_cielse
38841bd4fe43Sopenharmony_ci    source_path=$(cd $(dirname "$0"); pwd)
38851bd4fe43Sopenharmony_ci    case "$source_path" in
38861bd4fe43Sopenharmony_ci        *[[:blank:]]*) die "Out of tree builds are impossible with whitespace in source path." ;;
38871bd4fe43Sopenharmony_ci    esac
38881bd4fe43Sopenharmony_ci    test -e "$source_path/config.h" &&
38891bd4fe43Sopenharmony_ci        die "Out of tree builds are impossible with config.h in source dir."
38901bd4fe43Sopenharmony_cifi
38911bd4fe43Sopenharmony_ci
38921bd4fe43Sopenharmony_cifor v in "$@"; do
38931bd4fe43Sopenharmony_ci    r=${v#*=}
38941bd4fe43Sopenharmony_ci    l=${v%"$r"}
38951bd4fe43Sopenharmony_ci    r=$(sh_quote "$r")
38961bd4fe43Sopenharmony_ci    FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
38971bd4fe43Sopenharmony_cidone
38981bd4fe43Sopenharmony_ci
38991bd4fe43Sopenharmony_cifind_things_extern(){
39001bd4fe43Sopenharmony_ci    thing=$1
39011bd4fe43Sopenharmony_ci    pattern=$2
39021bd4fe43Sopenharmony_ci    file=$source_path/$3
39031bd4fe43Sopenharmony_ci    out=${4:-$thing}
39041bd4fe43Sopenharmony_ci    sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$out/p" "$file"
39051bd4fe43Sopenharmony_ci}
39061bd4fe43Sopenharmony_ci
39071bd4fe43Sopenharmony_cifind_filters_extern(){
39081bd4fe43Sopenharmony_ci    file=$source_path/$1
39091bd4fe43Sopenharmony_ci    sed -n 's/^extern AVFilter ff_[avfsinkrc]\{2,5\}_\([[:alnum:]_]\{1,\}\);/\1_filter/p' $file
39101bd4fe43Sopenharmony_ci}
39111bd4fe43Sopenharmony_ci
39121bd4fe43Sopenharmony_ciFILTER_LIST=$(find_filters_extern libavfilter/allfilters.c)
39131bd4fe43Sopenharmony_ciOUTDEV_LIST=$(find_things_extern muxer AVOutputFormat libavdevice/alldevices.c outdev)
39141bd4fe43Sopenharmony_ciINDEV_LIST=$(find_things_extern demuxer AVInputFormat libavdevice/alldevices.c indev)
39151bd4fe43Sopenharmony_ciMUXER_LIST=$(find_things_extern muxer AVOutputFormat libavformat/allformats.c)
39161bd4fe43Sopenharmony_ciDEMUXER_LIST=$(find_things_extern demuxer AVInputFormat libavformat/allformats.c)
39171bd4fe43Sopenharmony_ciENCODER_LIST=$(find_things_extern encoder AVCodec libavcodec/allcodecs.c)
39181bd4fe43Sopenharmony_ciDECODER_LIST=$(find_things_extern decoder AVCodec libavcodec/allcodecs.c)
39191bd4fe43Sopenharmony_ciCODEC_LIST="
39201bd4fe43Sopenharmony_ci    $ENCODER_LIST
39211bd4fe43Sopenharmony_ci    $DECODER_LIST
39221bd4fe43Sopenharmony_ci"
39231bd4fe43Sopenharmony_ciPARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parsers.c)
39241bd4fe43Sopenharmony_ciBSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
39251bd4fe43Sopenharmony_ciHWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)
39261bd4fe43Sopenharmony_ciPROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
39271bd4fe43Sopenharmony_ci
39281bd4fe43Sopenharmony_ciAVCODEC_COMPONENTS_LIST="
39291bd4fe43Sopenharmony_ci    $BSF_LIST
39301bd4fe43Sopenharmony_ci    $DECODER_LIST
39311bd4fe43Sopenharmony_ci    $ENCODER_LIST
39321bd4fe43Sopenharmony_ci    $HWACCEL_LIST
39331bd4fe43Sopenharmony_ci    $PARSER_LIST
39341bd4fe43Sopenharmony_ci"
39351bd4fe43Sopenharmony_ci
39361bd4fe43Sopenharmony_ciAVDEVICE_COMPONENTS_LIST="
39371bd4fe43Sopenharmony_ci    $INDEV_LIST
39381bd4fe43Sopenharmony_ci    $OUTDEV_LIST
39391bd4fe43Sopenharmony_ci"
39401bd4fe43Sopenharmony_ci
39411bd4fe43Sopenharmony_ciAVFILTER_COMPONENTS_LIST="
39421bd4fe43Sopenharmony_ci    $FILTER_LIST
39431bd4fe43Sopenharmony_ci"
39441bd4fe43Sopenharmony_ci
39451bd4fe43Sopenharmony_ciAVFORMAT_COMPONENTS_LIST="
39461bd4fe43Sopenharmony_ci    $DEMUXER_LIST
39471bd4fe43Sopenharmony_ci    $MUXER_LIST
39481bd4fe43Sopenharmony_ci    $PROTOCOL_LIST
39491bd4fe43Sopenharmony_ci"
39501bd4fe43Sopenharmony_ci
39511bd4fe43Sopenharmony_ciALL_COMPONENTS="
39521bd4fe43Sopenharmony_ci    $AVCODEC_COMPONENTS_LIST
39531bd4fe43Sopenharmony_ci    $AVDEVICE_COMPONENTS_LIST
39541bd4fe43Sopenharmony_ci    $AVFILTER_COMPONENTS_LIST
39551bd4fe43Sopenharmony_ci    $AVFORMAT_COMPONENTS_LIST
39561bd4fe43Sopenharmony_ci"
39571bd4fe43Sopenharmony_ci
39581bd4fe43Sopenharmony_cifor n in $COMPONENT_LIST; do
39591bd4fe43Sopenharmony_ci    v=$(toupper ${n%s})_LIST
39601bd4fe43Sopenharmony_ci    eval enable \$$v
39611bd4fe43Sopenharmony_ci    eval ${n}_if_any="\$$v"
39621bd4fe43Sopenharmony_cidone
39631bd4fe43Sopenharmony_ci
39641bd4fe43Sopenharmony_cienable $ARCH_EXT_LIST
39651bd4fe43Sopenharmony_ci
39661bd4fe43Sopenharmony_cidie_unknown(){
39671bd4fe43Sopenharmony_ci    echo "Unknown option \"$1\"."
39681bd4fe43Sopenharmony_ci    echo "See $0 --help for available options."
39691bd4fe43Sopenharmony_ci    exit 1
39701bd4fe43Sopenharmony_ci}
39711bd4fe43Sopenharmony_ci
39721bd4fe43Sopenharmony_ciprint_in_columns() {
39731bd4fe43Sopenharmony_ci    tr ' ' '\n' | sort | tr '\r\n' '  ' | awk -v col_width=24 -v width="$ncols" '
39741bd4fe43Sopenharmony_ci    {
39751bd4fe43Sopenharmony_ci        num_cols = width > col_width ? int(width / col_width) : 1;
39761bd4fe43Sopenharmony_ci        num_rows = int((NF + num_cols-1) / num_cols);
39771bd4fe43Sopenharmony_ci        y = x = 1;
39781bd4fe43Sopenharmony_ci        for (y = 1; y <= num_rows; y++) {
39791bd4fe43Sopenharmony_ci            i = y;
39801bd4fe43Sopenharmony_ci            for (x = 1; x <= num_cols; x++) {
39811bd4fe43Sopenharmony_ci                if (i <= NF) {
39821bd4fe43Sopenharmony_ci                  line = sprintf("%s%-" col_width "s", line, $i);
39831bd4fe43Sopenharmony_ci                }
39841bd4fe43Sopenharmony_ci                i = i + num_rows;
39851bd4fe43Sopenharmony_ci            }
39861bd4fe43Sopenharmony_ci            print line; line = "";
39871bd4fe43Sopenharmony_ci        }
39881bd4fe43Sopenharmony_ci    }' | sed 's/ *$//'
39891bd4fe43Sopenharmony_ci}
39901bd4fe43Sopenharmony_ci
39911bd4fe43Sopenharmony_cishow_list() {
39921bd4fe43Sopenharmony_ci    suffix=_$1
39931bd4fe43Sopenharmony_ci    shift
39941bd4fe43Sopenharmony_ci    echo $* | sed s/$suffix//g | print_in_columns
39951bd4fe43Sopenharmony_ci    exit 0
39961bd4fe43Sopenharmony_ci}
39971bd4fe43Sopenharmony_ci
39981bd4fe43Sopenharmony_cirand_list(){
39991bd4fe43Sopenharmony_ci    IFS=', '
40001bd4fe43Sopenharmony_ci    set -- $*
40011bd4fe43Sopenharmony_ci    unset IFS
40021bd4fe43Sopenharmony_ci    for thing; do
40031bd4fe43Sopenharmony_ci        comp=${thing%:*}
40041bd4fe43Sopenharmony_ci        prob=${thing#$comp}
40051bd4fe43Sopenharmony_ci        prob=${prob#:}
40061bd4fe43Sopenharmony_ci        is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
40071bd4fe43Sopenharmony_ci        echo "prob ${prob:-0.5}"
40081bd4fe43Sopenharmony_ci        printf '%s\n' $comp
40091bd4fe43Sopenharmony_ci    done
40101bd4fe43Sopenharmony_ci}
40111bd4fe43Sopenharmony_ci
40121bd4fe43Sopenharmony_cido_random(){
40131bd4fe43Sopenharmony_ci    action=$1
40141bd4fe43Sopenharmony_ci    shift
40151bd4fe43Sopenharmony_ci    random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
40161bd4fe43Sopenharmony_ci    $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
40171bd4fe43Sopenharmony_ci}
40181bd4fe43Sopenharmony_ci
40191bd4fe43Sopenharmony_cifor opt do
40201bd4fe43Sopenharmony_ci    optval="${opt#*=}"
40211bd4fe43Sopenharmony_ci    case "$opt" in
40221bd4fe43Sopenharmony_ci        --extra-ldflags=*)
40231bd4fe43Sopenharmony_ci            add_ldflags $optval
40241bd4fe43Sopenharmony_ci        ;;
40251bd4fe43Sopenharmony_ci        --extra-ldexeflags=*)
40261bd4fe43Sopenharmony_ci            add_ldexeflags $optval
40271bd4fe43Sopenharmony_ci        ;;
40281bd4fe43Sopenharmony_ci        --extra-ldsoflags=*)
40291bd4fe43Sopenharmony_ci            add_ldsoflags $optval
40301bd4fe43Sopenharmony_ci        ;;
40311bd4fe43Sopenharmony_ci        --extra-ldlibflags=*)
40321bd4fe43Sopenharmony_ci            warn "The --extra-ldlibflags option is only provided for compatibility and will be\n"\
40331bd4fe43Sopenharmony_ci                 "removed in the future. Use --extra-ldsoflags instead."
40341bd4fe43Sopenharmony_ci            add_ldsoflags $optval
40351bd4fe43Sopenharmony_ci        ;;
40361bd4fe43Sopenharmony_ci        --extra-libs=*)
40371bd4fe43Sopenharmony_ci            add_extralibs $optval
40381bd4fe43Sopenharmony_ci        ;;
40391bd4fe43Sopenharmony_ci        --disable-devices)
40401bd4fe43Sopenharmony_ci            disable $INDEV_LIST $OUTDEV_LIST
40411bd4fe43Sopenharmony_ci        ;;
40421bd4fe43Sopenharmony_ci        --enable-debug=*)
40431bd4fe43Sopenharmony_ci            debuglevel="$optval"
40441bd4fe43Sopenharmony_ci        ;;
40451bd4fe43Sopenharmony_ci        --disable-programs)
40461bd4fe43Sopenharmony_ci            disable $PROGRAM_LIST
40471bd4fe43Sopenharmony_ci        ;;
40481bd4fe43Sopenharmony_ci        --disable-everything)
40491bd4fe43Sopenharmony_ci            map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
40501bd4fe43Sopenharmony_ci        ;;
40511bd4fe43Sopenharmony_ci        --disable-all)
40521bd4fe43Sopenharmony_ci            map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
40531bd4fe43Sopenharmony_ci            disable $LIBRARY_LIST $PROGRAM_LIST doc
40541bd4fe43Sopenharmony_ci            enable avutil
40551bd4fe43Sopenharmony_ci        ;;
40561bd4fe43Sopenharmony_ci        --enable-random|--disable-random)
40571bd4fe43Sopenharmony_ci            action=${opt%%-random}
40581bd4fe43Sopenharmony_ci            do_random ${action#--} $COMPONENT_LIST
40591bd4fe43Sopenharmony_ci        ;;
40601bd4fe43Sopenharmony_ci        --enable-random=*|--disable-random=*)
40611bd4fe43Sopenharmony_ci            action=${opt%%-random=*}
40621bd4fe43Sopenharmony_ci            do_random ${action#--} $optval
40631bd4fe43Sopenharmony_ci        ;;
40641bd4fe43Sopenharmony_ci        --enable-sdl)
40651bd4fe43Sopenharmony_ci            enable sdl2
40661bd4fe43Sopenharmony_ci        ;;
40671bd4fe43Sopenharmony_ci        --enable-*=*|--disable-*=*)
40681bd4fe43Sopenharmony_ci            eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
40691bd4fe43Sopenharmony_ci            is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
40701bd4fe43Sopenharmony_ci            eval list=\$$(toupper $thing)_LIST
40711bd4fe43Sopenharmony_ci            name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
40721bd4fe43Sopenharmony_ci            list=$(filter "$name" $list)
40731bd4fe43Sopenharmony_ci            [ "$list" = "" ] && warn "Option $opt did not match anything"
40741bd4fe43Sopenharmony_ci            test $action = enable && warn_if_gets_disabled $list
40751bd4fe43Sopenharmony_ci            $action $list
40761bd4fe43Sopenharmony_ci        ;;
40771bd4fe43Sopenharmony_ci        --enable-yasm|--disable-yasm)
40781bd4fe43Sopenharmony_ci            warn "The ${opt} option is only provided for compatibility and will be\n"\
40791bd4fe43Sopenharmony_ci                 "removed in the future. Use --enable-x86asm / --disable-x86asm instead."
40801bd4fe43Sopenharmony_ci            test $opt = --enable-yasm && x86asm=yes || x86asm=no
40811bd4fe43Sopenharmony_ci        ;;
40821bd4fe43Sopenharmony_ci        --yasmexe=*)
40831bd4fe43Sopenharmony_ci            warn "The --yasmexe option is only provided for compatibility and will be\n"\
40841bd4fe43Sopenharmony_ci                 "removed in the future. Use --x86asmexe instead."
40851bd4fe43Sopenharmony_ci            x86asmexe="$optval"
40861bd4fe43Sopenharmony_ci        ;;
40871bd4fe43Sopenharmony_ci        --enable-?*|--disable-?*)
40881bd4fe43Sopenharmony_ci            eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
40891bd4fe43Sopenharmony_ci            if is_in $option $COMPONENT_LIST; then
40901bd4fe43Sopenharmony_ci                test $action = disable && action=unset
40911bd4fe43Sopenharmony_ci                eval $action \$$(toupper ${option%s})_LIST
40921bd4fe43Sopenharmony_ci            elif is_in $option $CMDLINE_SELECT; then
40931bd4fe43Sopenharmony_ci                $action $option
40941bd4fe43Sopenharmony_ci            else
40951bd4fe43Sopenharmony_ci                die_unknown $opt
40961bd4fe43Sopenharmony_ci            fi
40971bd4fe43Sopenharmony_ci        ;;
40981bd4fe43Sopenharmony_ci        --list-*)
40991bd4fe43Sopenharmony_ci            NAME="${opt#--list-}"
41001bd4fe43Sopenharmony_ci            is_in $NAME $COMPONENT_LIST || die_unknown $opt
41011bd4fe43Sopenharmony_ci            NAME=${NAME%s}
41021bd4fe43Sopenharmony_ci            eval show_list $NAME \$$(toupper $NAME)_LIST
41031bd4fe43Sopenharmony_ci        ;;
41041bd4fe43Sopenharmony_ci        --help|-h) show_help
41051bd4fe43Sopenharmony_ci        ;;
41061bd4fe43Sopenharmony_ci        --quiet|-q) quiet=yes
41071bd4fe43Sopenharmony_ci        ;;
41081bd4fe43Sopenharmony_ci        --fatal-warnings) enable fatal_warnings
41091bd4fe43Sopenharmony_ci        ;;
41101bd4fe43Sopenharmony_ci        --libfuzzer=*)
41111bd4fe43Sopenharmony_ci            libfuzzer_path="$optval"
41121bd4fe43Sopenharmony_ci        ;;
41131bd4fe43Sopenharmony_ci        *)
41141bd4fe43Sopenharmony_ci            optname="${opt%%=*}"
41151bd4fe43Sopenharmony_ci            optname="${optname#--}"
41161bd4fe43Sopenharmony_ci            optname=$(echo "$optname" | sed 's/-/_/g')
41171bd4fe43Sopenharmony_ci            if is_in $optname $CMDLINE_SET; then
41181bd4fe43Sopenharmony_ci                eval $optname='$optval'
41191bd4fe43Sopenharmony_ci            elif is_in $optname $CMDLINE_APPEND; then
41201bd4fe43Sopenharmony_ci                append $optname "$optval"
41211bd4fe43Sopenharmony_ci            else
41221bd4fe43Sopenharmony_ci                die_unknown $opt
41231bd4fe43Sopenharmony_ci            fi
41241bd4fe43Sopenharmony_ci        ;;
41251bd4fe43Sopenharmony_ci    esac
41261bd4fe43Sopenharmony_cidone
41271bd4fe43Sopenharmony_ci
41281bd4fe43Sopenharmony_cifor e in $env; do
41291bd4fe43Sopenharmony_ci    eval "export $e"
41301bd4fe43Sopenharmony_cidone
41311bd4fe43Sopenharmony_ci
41321bd4fe43Sopenharmony_ciif disabled autodetect; then
41331bd4fe43Sopenharmony_ci
41341bd4fe43Sopenharmony_ci    # Unless iconv is explicitely disabled by the user, we still want to probe
41351bd4fe43Sopenharmony_ci    # for the iconv from the libc.
41361bd4fe43Sopenharmony_ci    disabled iconv || enable libc_iconv
41371bd4fe43Sopenharmony_ci
41381bd4fe43Sopenharmony_ci    disable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST
41391bd4fe43Sopenharmony_ci    disable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST
41401bd4fe43Sopenharmony_cifi
41411bd4fe43Sopenharmony_ci# Mark specifically enabled, but normally autodetected libraries as requested.
41421bd4fe43Sopenharmony_cifor lib in $AUTODETECT_LIBS; do
41431bd4fe43Sopenharmony_ci    enabled $lib && request $lib
41441bd4fe43Sopenharmony_cidone
41451bd4fe43Sopenharmony_ci#TODO: switch to $AUTODETECT_LIBS when $THREADS_LIST is supported the same way
41461bd4fe43Sopenharmony_cienable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST
41471bd4fe43Sopenharmony_cienable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST
41481bd4fe43Sopenharmony_ci
41491bd4fe43Sopenharmony_cidisabled logging && logfile=/dev/null
41501bd4fe43Sopenharmony_ci
41511bd4fe43Sopenharmony_ci# command line configuration sanity checks
41521bd4fe43Sopenharmony_ci
41531bd4fe43Sopenharmony_ci# we need to build at least one lib type
41541bd4fe43Sopenharmony_ciif ! enabled_any static shared; then
41551bd4fe43Sopenharmony_ci    cat <<EOF
41561bd4fe43Sopenharmony_ciAt least one library type must be built.
41571bd4fe43Sopenharmony_ciSpecify --enable-static to build the static libraries or --enable-shared to
41581bd4fe43Sopenharmony_cibuild the shared libraries as well. To only build the shared libraries specify
41591bd4fe43Sopenharmony_ci--disable-static in addition to --enable-shared.
41601bd4fe43Sopenharmony_ciEOF
41611bd4fe43Sopenharmony_ci    exit 1
41621bd4fe43Sopenharmony_cifi
41631bd4fe43Sopenharmony_ci
41641bd4fe43Sopenharmony_cidie_license_disabled() {
41651bd4fe43Sopenharmony_ci    enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; }
41661bd4fe43Sopenharmony_ci}
41671bd4fe43Sopenharmony_ci
41681bd4fe43Sopenharmony_cidie_license_disabled_gpl() {
41691bd4fe43Sopenharmony_ci    enabled $1 || { enabled $v && die "$v is incompatible with the gpl and --enable-$1 is not specified."; }
41701bd4fe43Sopenharmony_ci}
41711bd4fe43Sopenharmony_ci
41721bd4fe43Sopenharmony_cimap "die_license_disabled gpl"      $EXTERNAL_LIBRARY_GPL_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
41731bd4fe43Sopenharmony_cimap "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
41741bd4fe43Sopenharmony_ci
41751bd4fe43Sopenharmony_cienabled gpl && map "die_license_disabled_gpl nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST
41761bd4fe43Sopenharmony_cimap "die_license_disabled nonfree" $HWACCEL_LIBRARY_NONFREE_LIST
41771bd4fe43Sopenharmony_ci
41781bd4fe43Sopenharmony_cienabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
41791bd4fe43Sopenharmony_ci
41801bd4fe43Sopenharmony_ciif enabled nonfree; then
41811bd4fe43Sopenharmony_ci    license="nonfree and unredistributable"
41821bd4fe43Sopenharmony_cielif enabled gplv3; then
41831bd4fe43Sopenharmony_ci    license="GPL version 3 or later"
41841bd4fe43Sopenharmony_cielif enabled lgplv3; then
41851bd4fe43Sopenharmony_ci    license="LGPL version 3 or later"
41861bd4fe43Sopenharmony_cielif enabled gpl; then
41871bd4fe43Sopenharmony_ci    license="GPL version 2 or later"
41881bd4fe43Sopenharmony_cielse
41891bd4fe43Sopenharmony_ci    license="LGPL version 2.1 or later"
41901bd4fe43Sopenharmony_cifi
41911bd4fe43Sopenharmony_ci
41921bd4fe43Sopenharmony_cienabled_all gnutls openssl &&
41931bd4fe43Sopenharmony_ci    die "GnuTLS and OpenSSL must not be enabled at the same time."
41941bd4fe43Sopenharmony_ci
41951bd4fe43Sopenharmony_cienabled_all gnutls mbedtls &&
41961bd4fe43Sopenharmony_ci    die "GnuTLS and mbedTLS must not be enabled at the same time."
41971bd4fe43Sopenharmony_ci
41981bd4fe43Sopenharmony_cienabled_all openssl mbedtls &&
41991bd4fe43Sopenharmony_ci    die "OpenSSL and mbedTLS must not be enabled at the same time."
42001bd4fe43Sopenharmony_ci
42011bd4fe43Sopenharmony_ci# Disable all the library-specific components if the library itself
42021bd4fe43Sopenharmony_ci# is disabled, see AVCODEC_LIST and following _LIST variables.
42031bd4fe43Sopenharmony_ci
42041bd4fe43Sopenharmony_cidisable_components(){
42051bd4fe43Sopenharmony_ci    disabled ${1} && disable $(
42061bd4fe43Sopenharmony_ci        eval components="\$$(toupper ${1})_COMPONENTS"
42071bd4fe43Sopenharmony_ci        map 'eval echo \${$(toupper ${v%s})_LIST}' $components
42081bd4fe43Sopenharmony_ci    )
42091bd4fe43Sopenharmony_ci}
42101bd4fe43Sopenharmony_ci
42111bd4fe43Sopenharmony_cimap 'disable_components $v' $LIBRARY_LIST
42121bd4fe43Sopenharmony_ci
42131bd4fe43Sopenharmony_ciecho "# $0 $FFMPEG_CONFIGURATION" > $logfile
42141bd4fe43Sopenharmony_ciset >> $logfile
42151bd4fe43Sopenharmony_ci
42161bd4fe43Sopenharmony_citest -n "$valgrind" && toolchain="valgrind-memcheck"
42171bd4fe43Sopenharmony_ci
42181bd4fe43Sopenharmony_cienabled ossfuzz && ! echo $CFLAGS | grep -q -- "-fsanitize="  && ! echo $CFLAGS | grep -q -- "-fcoverage-mapping" &&{
42191bd4fe43Sopenharmony_ci    add_cflags  -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp -fno-omit-frame-pointer
42201bd4fe43Sopenharmony_ci    add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp
42211bd4fe43Sopenharmony_ci}
42221bd4fe43Sopenharmony_ci
42231bd4fe43Sopenharmony_cicase "$toolchain" in
42241bd4fe43Sopenharmony_ci    *-asan)
42251bd4fe43Sopenharmony_ci        cc_default="${toolchain%-asan}"
42261bd4fe43Sopenharmony_ci        add_cflags  -fsanitize=address
42271bd4fe43Sopenharmony_ci        add_ldflags -fsanitize=address
42281bd4fe43Sopenharmony_ci    ;;
42291bd4fe43Sopenharmony_ci    *-msan)
42301bd4fe43Sopenharmony_ci        cc_default="${toolchain%-msan}"
42311bd4fe43Sopenharmony_ci        add_cflags  -fsanitize=memory -fsanitize-memory-track-origins
42321bd4fe43Sopenharmony_ci        add_ldflags -fsanitize=memory
42331bd4fe43Sopenharmony_ci    ;;
42341bd4fe43Sopenharmony_ci    *-tsan)
42351bd4fe43Sopenharmony_ci        cc_default="${toolchain%-tsan}"
42361bd4fe43Sopenharmony_ci        add_cflags  -fsanitize=thread
42371bd4fe43Sopenharmony_ci        add_ldflags -fsanitize=thread
42381bd4fe43Sopenharmony_ci        case "$toolchain" in
42391bd4fe43Sopenharmony_ci            gcc-tsan)
42401bd4fe43Sopenharmony_ci                add_cflags  -fPIC
42411bd4fe43Sopenharmony_ci                add_ldflags -fPIC
42421bd4fe43Sopenharmony_ci                ;;
42431bd4fe43Sopenharmony_ci        esac
42441bd4fe43Sopenharmony_ci    ;;
42451bd4fe43Sopenharmony_ci    *-usan)
42461bd4fe43Sopenharmony_ci        cc_default="${toolchain%-usan}"
42471bd4fe43Sopenharmony_ci        add_cflags  -fsanitize=undefined
42481bd4fe43Sopenharmony_ci        add_ldflags -fsanitize=undefined
42491bd4fe43Sopenharmony_ci    ;;
42501bd4fe43Sopenharmony_ci    valgrind-*)
42511bd4fe43Sopenharmony_ci        target_exec_default="valgrind"
42521bd4fe43Sopenharmony_ci        case "$toolchain" in
42531bd4fe43Sopenharmony_ci            valgrind-massif)
42541bd4fe43Sopenharmony_ci                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"
42551bd4fe43Sopenharmony_ci                ;;
42561bd4fe43Sopenharmony_ci            valgrind-memcheck)
42571bd4fe43Sopenharmony_ci                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"
42581bd4fe43Sopenharmony_ci                ;;
42591bd4fe43Sopenharmony_ci        esac
42601bd4fe43Sopenharmony_ci    ;;
42611bd4fe43Sopenharmony_ci    msvc)
42621bd4fe43Sopenharmony_ci        # Check whether the current MSVC version needs the C99 converter.
42631bd4fe43Sopenharmony_ci        # From MSVC 2013 (compiler major version 18) onwards, it does actually
42641bd4fe43Sopenharmony_ci        # support enough of C99 to build ffmpeg. Default to the new
42651bd4fe43Sopenharmony_ci        # behaviour if the regexp was unable to match anything, since this
42661bd4fe43Sopenharmony_ci        # successfully parses the version number of existing supported
42671bd4fe43Sopenharmony_ci        # versions that require the converter (MSVC 2010 and 2012).
42681bd4fe43Sopenharmony_ci        cl_major_ver=$(cl.exe 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
42691bd4fe43Sopenharmony_ci        if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
42701bd4fe43Sopenharmony_ci            cc_default="cl.exe"
42711bd4fe43Sopenharmony_ci            cxx_default="cl.exe"
42721bd4fe43Sopenharmony_ci        else
42731bd4fe43Sopenharmony_ci            die "Unsupported MSVC version (2013 or newer required)"
42741bd4fe43Sopenharmony_ci        fi
42751bd4fe43Sopenharmony_ci        ld_default="$source_path/compat/windows/mslink"
42761bd4fe43Sopenharmony_ci        nm_default="dumpbin.exe -symbols"
42771bd4fe43Sopenharmony_ci        ar_default="lib.exe"
42781bd4fe43Sopenharmony_ci        case "${arch:-$arch_default}" in
42791bd4fe43Sopenharmony_ci        aarch64|arm64)
42801bd4fe43Sopenharmony_ci            as_default="armasm64.exe"
42811bd4fe43Sopenharmony_ci            ;;
42821bd4fe43Sopenharmony_ci        arm*)
42831bd4fe43Sopenharmony_ci            as_default="armasm.exe"
42841bd4fe43Sopenharmony_ci            ;;
42851bd4fe43Sopenharmony_ci        esac
42861bd4fe43Sopenharmony_ci        target_os_default="win32"
42871bd4fe43Sopenharmony_ci        # Use a relative path for TMPDIR. This makes sure all the
42881bd4fe43Sopenharmony_ci        # ffconf temp files are written with a relative path, avoiding
42891bd4fe43Sopenharmony_ci        # issues with msys/win32 path conversion for MSVC parameters
42901bd4fe43Sopenharmony_ci        # such as -Fo<file> or -out:<file>.
42911bd4fe43Sopenharmony_ci        TMPDIR=.
42921bd4fe43Sopenharmony_ci    ;;
42931bd4fe43Sopenharmony_ci    icl)
42941bd4fe43Sopenharmony_ci        cc_default="icl"
42951bd4fe43Sopenharmony_ci        ld_default="xilink"
42961bd4fe43Sopenharmony_ci        nm_default="dumpbin -symbols"
42971bd4fe43Sopenharmony_ci        ar_default="xilib"
42981bd4fe43Sopenharmony_ci        target_os_default="win32"
42991bd4fe43Sopenharmony_ci        TMPDIR=.
43001bd4fe43Sopenharmony_ci    ;;
43011bd4fe43Sopenharmony_ci    gcov)
43021bd4fe43Sopenharmony_ci        add_cflags  -fprofile-arcs -ftest-coverage
43031bd4fe43Sopenharmony_ci        add_ldflags -fprofile-arcs -ftest-coverage
43041bd4fe43Sopenharmony_ci    ;;
43051bd4fe43Sopenharmony_ci    llvm-cov)
43061bd4fe43Sopenharmony_ci        add_cflags -fprofile-arcs -ftest-coverage
43071bd4fe43Sopenharmony_ci        add_ldflags --coverage
43081bd4fe43Sopenharmony_ci    ;;
43091bd4fe43Sopenharmony_ci    hardened)
43101bd4fe43Sopenharmony_ci        add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
43111bd4fe43Sopenharmony_ci        add_cflags   -fno-strict-overflow -fstack-protector-all
43121bd4fe43Sopenharmony_ci        add_ldflags  -Wl,-z,relro -Wl,-z,now
43131bd4fe43Sopenharmony_ci        add_cflags   -fPIE
43141bd4fe43Sopenharmony_ci        add_ldexeflags -fPIE -pie
43151bd4fe43Sopenharmony_ci    ;;
43161bd4fe43Sopenharmony_ci    ?*)
43171bd4fe43Sopenharmony_ci        die "Unknown toolchain $toolchain"
43181bd4fe43Sopenharmony_ci    ;;
43191bd4fe43Sopenharmony_ciesac
43201bd4fe43Sopenharmony_ci
43211bd4fe43Sopenharmony_ciif test -n "$cross_prefix"; then
43221bd4fe43Sopenharmony_ci    test -n "$arch" && test -n "$target_os" ||
43231bd4fe43Sopenharmony_ci        die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
43241bd4fe43Sopenharmony_ci    enable cross_compile
43251bd4fe43Sopenharmony_cifi
43261bd4fe43Sopenharmony_ci
43271bd4fe43Sopenharmony_ciset_default target_os
43281bd4fe43Sopenharmony_ciif test "$target_os" = android; then
43291bd4fe43Sopenharmony_ci    cc_default="clang"
43301bd4fe43Sopenharmony_cifi
43311bd4fe43Sopenharmony_ci
43321bd4fe43Sopenharmony_ciar_default="${cross_prefix}${ar_default}"
43331bd4fe43Sopenharmony_cicc_default="${cross_prefix}${cc_default}"
43341bd4fe43Sopenharmony_cicxx_default="${cross_prefix}${cxx_default}"
43351bd4fe43Sopenharmony_cinm_default="${cross_prefix}${nm_default}"
43361bd4fe43Sopenharmony_cipkg_config_default="${cross_prefix}${pkg_config_default}"
43371bd4fe43Sopenharmony_ciif ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
43381bd4fe43Sopenharmony_ci    ranlib_default="${cross_prefix}${ranlib_default} -D"
43391bd4fe43Sopenharmony_cielse
43401bd4fe43Sopenharmony_ci    ranlib_default="${cross_prefix}${ranlib_default}"
43411bd4fe43Sopenharmony_cifi
43421bd4fe43Sopenharmony_cistrip_default="${cross_prefix}${strip_default}"
43431bd4fe43Sopenharmony_ciwindres_default="${cross_prefix}${windres_default}"
43441bd4fe43Sopenharmony_ci
43451bd4fe43Sopenharmony_cisysinclude_default="${sysroot}/usr/include"
43461bd4fe43Sopenharmony_ci
43471bd4fe43Sopenharmony_ciif enabled cuda_sdk; then
43481bd4fe43Sopenharmony_ci    warn "Option --enable-cuda-sdk is deprecated. Use --enable-cuda-nvcc instead."
43491bd4fe43Sopenharmony_ci    enable cuda_nvcc
43501bd4fe43Sopenharmony_cifi
43511bd4fe43Sopenharmony_ci
43521bd4fe43Sopenharmony_ciif enabled cuda_nvcc; then
43531bd4fe43Sopenharmony_ci    nvcc_default="nvcc"
43541bd4fe43Sopenharmony_ci    nvccflags_default="-gencode arch=compute_30,code=sm_30 -O2"
43551bd4fe43Sopenharmony_cielse
43561bd4fe43Sopenharmony_ci    nvcc_default="clang"
43571bd4fe43Sopenharmony_ci    nvccflags_default="--cuda-gpu-arch=sm_30 -O2"
43581bd4fe43Sopenharmony_ci    NVCC_C=""
43591bd4fe43Sopenharmony_cifi
43601bd4fe43Sopenharmony_ci
43611bd4fe43Sopenharmony_ciset_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
43621bd4fe43Sopenharmony_ci    target_exec x86asmexe nvcc
43631bd4fe43Sopenharmony_cienabled cross_compile || host_cc_default=$cc
43641bd4fe43Sopenharmony_ciset_default host_cc
43651bd4fe43Sopenharmony_ci
43661bd4fe43Sopenharmony_cipkg_config_fail_message=""
43671bd4fe43Sopenharmony_ciif ! $pkg_config --version >/dev/null 2>&1; then
43681bd4fe43Sopenharmony_ci    warn "$pkg_config not found, library detection may fail."
43691bd4fe43Sopenharmony_ci    pkg_config=false
43701bd4fe43Sopenharmony_cielif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags; then
43711bd4fe43Sopenharmony_ci    pkg_config_fail_message="
43721bd4fe43Sopenharmony_ciNote: When building a static binary, add --pkg-config-flags=\"--static\"."
43731bd4fe43Sopenharmony_cifi
43741bd4fe43Sopenharmony_ci
43751bd4fe43Sopenharmony_ciif test $doxygen != $doxygen_default && \
43761bd4fe43Sopenharmony_ci  ! $doxygen --version >/dev/null 2>&1; then
43771bd4fe43Sopenharmony_ci    warn "Specified doxygen \"$doxygen\" not found, API documentation will fail to build."
43781bd4fe43Sopenharmony_cifi
43791bd4fe43Sopenharmony_ci
43801bd4fe43Sopenharmony_ciexesuf() {
43811bd4fe43Sopenharmony_ci    case $1 in
43821bd4fe43Sopenharmony_ci        mingw32*|mingw64*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
43831bd4fe43Sopenharmony_ci    esac
43841bd4fe43Sopenharmony_ci}
43851bd4fe43Sopenharmony_ci
43861bd4fe43Sopenharmony_ciEXESUF=$(exesuf $target_os)
43871bd4fe43Sopenharmony_ciHOSTEXESUF=$(exesuf $host_os)
43881bd4fe43Sopenharmony_ci
43891bd4fe43Sopenharmony_ci# set temporary file name
43901bd4fe43Sopenharmony_ci: ${TMPDIR:=$TEMPDIR}
43911bd4fe43Sopenharmony_ci: ${TMPDIR:=$TMP}
43921bd4fe43Sopenharmony_ci: ${TMPDIR:=/tmp}
43931bd4fe43Sopenharmony_ci
43941bd4fe43Sopenharmony_ciif [ -n "$tempprefix" ] ; then
43951bd4fe43Sopenharmony_ci    mktemp(){
43961bd4fe43Sopenharmony_ci        tmpname="$tempprefix.${HOSTNAME}.${UID}"
43971bd4fe43Sopenharmony_ci        echo "$tmpname"
43981bd4fe43Sopenharmony_ci        mkdir "$tmpname"
43991bd4fe43Sopenharmony_ci    }
44001bd4fe43Sopenharmony_cielif ! test_cmd mktemp -u XXXXXX; then
44011bd4fe43Sopenharmony_ci    # simple replacement for missing mktemp
44021bd4fe43Sopenharmony_ci    # NOT SAFE FOR GENERAL USE
44031bd4fe43Sopenharmony_ci    mktemp(){
44041bd4fe43Sopenharmony_ci        tmpname="${2%%XXX*}.${HOSTNAME}.${UID}.$$"
44051bd4fe43Sopenharmony_ci        echo "$tmpname"
44061bd4fe43Sopenharmony_ci        mkdir "$tmpname"
44071bd4fe43Sopenharmony_ci    }
44081bd4fe43Sopenharmony_cifi
44091bd4fe43Sopenharmony_ci
44101bd4fe43Sopenharmony_ciFFTMPDIR=$(mktemp -d "${TMPDIR}/ffconf.XXXXXXXX" 2> /dev/null) ||
44111bd4fe43Sopenharmony_ci    die "Unable to create temporary directory in $TMPDIR."
44121bd4fe43Sopenharmony_ci
44131bd4fe43Sopenharmony_citmpfile(){
44141bd4fe43Sopenharmony_ci    tmp="${FFTMPDIR}/test"$2
44151bd4fe43Sopenharmony_ci    (set -C; exec > $tmp) 2> /dev/null ||
44161bd4fe43Sopenharmony_ci        die "Unable to create temporary file in $FFTMPDIR."
44171bd4fe43Sopenharmony_ci    eval $1=$tmp
44181bd4fe43Sopenharmony_ci}
44191bd4fe43Sopenharmony_ci
44201bd4fe43Sopenharmony_citrap 'rm -rf -- "$FFTMPDIR"' EXIT
44211bd4fe43Sopenharmony_citrap 'exit 2' INT
44221bd4fe43Sopenharmony_ci
44231bd4fe43Sopenharmony_citmpfile TMPASM .asm
44241bd4fe43Sopenharmony_citmpfile TMPC   .c
44251bd4fe43Sopenharmony_citmpfile TMPCPP .cpp
44261bd4fe43Sopenharmony_citmpfile TMPE   $EXESUF
44271bd4fe43Sopenharmony_citmpfile TMPH   .h
44281bd4fe43Sopenharmony_citmpfile TMPM   .m
44291bd4fe43Sopenharmony_citmpfile TMPCU  .cu
44301bd4fe43Sopenharmony_citmpfile TMPO   .o
44311bd4fe43Sopenharmony_citmpfile TMPS   .S
44321bd4fe43Sopenharmony_citmpfile TMPSH  .sh
44331bd4fe43Sopenharmony_citmpfile TMPV   .ver
44341bd4fe43Sopenharmony_ci
44351bd4fe43Sopenharmony_ciunset -f mktemp
44361bd4fe43Sopenharmony_ci
44371bd4fe43Sopenharmony_cichmod +x $TMPE
44381bd4fe43Sopenharmony_ci
44391bd4fe43Sopenharmony_ci# make sure we can execute files in $TMPDIR
44401bd4fe43Sopenharmony_cicat > $TMPSH 2>> $logfile <<EOF
44411bd4fe43Sopenharmony_ci#! /bin/sh
44421bd4fe43Sopenharmony_ciEOF
44431bd4fe43Sopenharmony_cichmod +x $TMPSH >> $logfile 2>&1
44441bd4fe43Sopenharmony_ciif ! $TMPSH >> $logfile 2>&1; then
44451bd4fe43Sopenharmony_ci    cat <<EOF
44461bd4fe43Sopenharmony_ciUnable to create and execute files in $TMPDIR.  Set the TMPDIR environment
44471bd4fe43Sopenharmony_civariable to another directory and make sure that it is not mounted noexec.
44481bd4fe43Sopenharmony_ciEOF
44491bd4fe43Sopenharmony_ci    die "Sanity test failed."
44501bd4fe43Sopenharmony_cifi
44511bd4fe43Sopenharmony_ci
44521bd4fe43Sopenharmony_ciarmasm_flags(){
44531bd4fe43Sopenharmony_ci    for flag; do
44541bd4fe43Sopenharmony_ci        case $flag in
44551bd4fe43Sopenharmony_ci            # Filter out MSVC cl.exe options from cflags that shouldn't
44561bd4fe43Sopenharmony_ci            # be passed to gas-preprocessor
44571bd4fe43Sopenharmony_ci            -M[TD]*)                                            ;;
44581bd4fe43Sopenharmony_ci            *)                  echo $flag                      ;;
44591bd4fe43Sopenharmony_ci        esac
44601bd4fe43Sopenharmony_ci   done
44611bd4fe43Sopenharmony_ci}
44621bd4fe43Sopenharmony_ci
44631bd4fe43Sopenharmony_cicparser_flags(){
44641bd4fe43Sopenharmony_ci    for flag; do
44651bd4fe43Sopenharmony_ci        case $flag in
44661bd4fe43Sopenharmony_ci            -Wno-switch)             echo -Wno-switch-enum ;;
44671bd4fe43Sopenharmony_ci            -Wno-format-zero-length) ;;
44681bd4fe43Sopenharmony_ci            -Wdisabled-optimization) ;;
44691bd4fe43Sopenharmony_ci            -Wno-pointer-sign)       echo -Wno-other ;;
44701bd4fe43Sopenharmony_ci            *)                       echo $flag ;;
44711bd4fe43Sopenharmony_ci        esac
44721bd4fe43Sopenharmony_ci    done
44731bd4fe43Sopenharmony_ci}
44741bd4fe43Sopenharmony_ci
44751bd4fe43Sopenharmony_cimsvc_common_flags(){
44761bd4fe43Sopenharmony_ci    for flag; do
44771bd4fe43Sopenharmony_ci        case $flag in
44781bd4fe43Sopenharmony_ci            # In addition to specifying certain flags under the compiler
44791bd4fe43Sopenharmony_ci            # specific filters, they must be specified here as well or else the
44801bd4fe43Sopenharmony_ci            # generic catch all at the bottom will print the original flag.
44811bd4fe43Sopenharmony_ci            -Wall)                ;;
44821bd4fe43Sopenharmony_ci            -Wextra)              ;;
44831bd4fe43Sopenharmony_ci            -std=c*)              ;;
44841bd4fe43Sopenharmony_ci            # Common flags
44851bd4fe43Sopenharmony_ci            -fomit-frame-pointer) ;;
44861bd4fe43Sopenharmony_ci            -g)                   echo -Z7 ;;
44871bd4fe43Sopenharmony_ci            -fno-math-errno)      ;;
44881bd4fe43Sopenharmony_ci            -fno-common)          ;;
44891bd4fe43Sopenharmony_ci            -fno-signed-zeros)    ;;
44901bd4fe43Sopenharmony_ci            -fPIC)                ;;
44911bd4fe43Sopenharmony_ci            -mthumb)              ;;
44921bd4fe43Sopenharmony_ci            -march=*)             ;;
44931bd4fe43Sopenharmony_ci            -lz)                  echo zlib.lib ;;
44941bd4fe43Sopenharmony_ci            -lx264)               echo libx264.lib ;;
44951bd4fe43Sopenharmony_ci            -lstdc++)             ;;
44961bd4fe43Sopenharmony_ci            -l*)                  echo ${flag#-l}.lib ;;
44971bd4fe43Sopenharmony_ci            -LARGEADDRESSAWARE)   echo $flag ;;
44981bd4fe43Sopenharmony_ci            -L*)                  echo -libpath:${flag#-L} ;;
44991bd4fe43Sopenharmony_ci            -Wl,*)                ;;
45001bd4fe43Sopenharmony_ci            *)                    echo $flag ;;
45011bd4fe43Sopenharmony_ci        esac
45021bd4fe43Sopenharmony_ci    done
45031bd4fe43Sopenharmony_ci}
45041bd4fe43Sopenharmony_ci
45051bd4fe43Sopenharmony_cimsvc_flags(){
45061bd4fe43Sopenharmony_ci    msvc_common_flags "$@"
45071bd4fe43Sopenharmony_ci    for flag; do
45081bd4fe43Sopenharmony_ci        case $flag in
45091bd4fe43Sopenharmony_ci            -Wall)                echo -W3 -wd4018 -wd4146 -wd4244 -wd4305     \
45101bd4fe43Sopenharmony_ci                                       -wd4554 ;;
45111bd4fe43Sopenharmony_ci            -Wextra)              echo -W4 -wd4244 -wd4127 -wd4018 -wd4389     \
45121bd4fe43Sopenharmony_ci                                       -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
45131bd4fe43Sopenharmony_ci                                       -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
45141bd4fe43Sopenharmony_ci                                       -wd4307 \
45151bd4fe43Sopenharmony_ci                                       -wd4273 -wd4554 -wd4701 -wd4703 ;;
45161bd4fe43Sopenharmony_ci        esac
45171bd4fe43Sopenharmony_ci    done
45181bd4fe43Sopenharmony_ci}
45191bd4fe43Sopenharmony_ci
45201bd4fe43Sopenharmony_ciicl_flags(){
45211bd4fe43Sopenharmony_ci    msvc_common_flags "$@"
45221bd4fe43Sopenharmony_ci    for flag; do
45231bd4fe43Sopenharmony_ci        case $flag in
45241bd4fe43Sopenharmony_ci            # Despite what Intel's documentation says -Wall, which is supported
45251bd4fe43Sopenharmony_ci            # on Windows, does enable remarks so disable them here.
45261bd4fe43Sopenharmony_ci            -Wall)                echo $flag -Qdiag-disable:remark ;;
45271bd4fe43Sopenharmony_ci            -std=c99)             echo -Qstd=c99 ;;
45281bd4fe43Sopenharmony_ci            -flto)                echo -ipo ;;
45291bd4fe43Sopenharmony_ci        esac
45301bd4fe43Sopenharmony_ci    done
45311bd4fe43Sopenharmony_ci}
45321bd4fe43Sopenharmony_ci
45331bd4fe43Sopenharmony_ciicc_flags(){
45341bd4fe43Sopenharmony_ci    for flag; do
45351bd4fe43Sopenharmony_ci        case $flag in
45361bd4fe43Sopenharmony_ci            -flto)                echo -ipo ;;
45371bd4fe43Sopenharmony_ci            *)                    echo $flag ;;
45381bd4fe43Sopenharmony_ci        esac
45391bd4fe43Sopenharmony_ci    done
45401bd4fe43Sopenharmony_ci}
45411bd4fe43Sopenharmony_ci
45421bd4fe43Sopenharmony_cisuncc_flags(){
45431bd4fe43Sopenharmony_ci    for flag; do
45441bd4fe43Sopenharmony_ci        case $flag in
45451bd4fe43Sopenharmony_ci            -march=*|-mcpu=*)
45461bd4fe43Sopenharmony_ci                case "${flag#*=}" in
45471bd4fe43Sopenharmony_ci                    native)                   echo -xtarget=native       ;;
45481bd4fe43Sopenharmony_ci                    v9|niagara)               echo -xarch=sparc          ;;
45491bd4fe43Sopenharmony_ci                    ultrasparc)               echo -xarch=sparcvis       ;;
45501bd4fe43Sopenharmony_ci                    ultrasparc3|niagara2)     echo -xarch=sparcvis2      ;;
45511bd4fe43Sopenharmony_ci                    i586|pentium)             echo -xchip=pentium        ;;
45521bd4fe43Sopenharmony_ci                    i686|pentiumpro|pentium2) echo -xtarget=pentium_pro  ;;
45531bd4fe43Sopenharmony_ci                    pentium3*|c3-2)           echo -xtarget=pentium3     ;;
45541bd4fe43Sopenharmony_ci                    pentium-m)          echo -xarch=sse2 -xchip=pentium3 ;;
45551bd4fe43Sopenharmony_ci                    pentium4*)          echo -xtarget=pentium4           ;;
45561bd4fe43Sopenharmony_ci                    prescott|nocona)    echo -xarch=sse3 -xchip=pentium4 ;;
45571bd4fe43Sopenharmony_ci                    *-sse3)             echo -xarch=sse3                 ;;
45581bd4fe43Sopenharmony_ci                    core2)              echo -xarch=ssse3 -xchip=core2   ;;
45591bd4fe43Sopenharmony_ci                    bonnell)                   echo -xarch=ssse3         ;;
45601bd4fe43Sopenharmony_ci                    corei7|nehalem)            echo -xtarget=nehalem     ;;
45611bd4fe43Sopenharmony_ci                    westmere)                  echo -xtarget=westmere    ;;
45621bd4fe43Sopenharmony_ci                    silvermont)                echo -xarch=sse4_2        ;;
45631bd4fe43Sopenharmony_ci                    corei7-avx|sandybridge)    echo -xtarget=sandybridge ;;
45641bd4fe43Sopenharmony_ci                    core-avx*|ivybridge|haswell|broadwell|skylake*|knl)
45651bd4fe43Sopenharmony_ci                                               echo -xarch=avx           ;;
45661bd4fe43Sopenharmony_ci                    amdfam10|barcelona)        echo -xtarget=barcelona   ;;
45671bd4fe43Sopenharmony_ci                    btver1)                    echo -xarch=amdsse4a      ;;
45681bd4fe43Sopenharmony_ci                    btver2|bdver*|znver*)      echo -xarch=avx           ;;
45691bd4fe43Sopenharmony_ci                    athlon-4|athlon-[mx]p)     echo -xarch=ssea          ;;
45701bd4fe43Sopenharmony_ci                    k8|opteron|athlon64|athlon-fx)
45711bd4fe43Sopenharmony_ci                                               echo -xarch=sse2a         ;;
45721bd4fe43Sopenharmony_ci                    athlon*)                   echo -xarch=pentium_proa  ;;
45731bd4fe43Sopenharmony_ci                esac
45741bd4fe43Sopenharmony_ci                ;;
45751bd4fe43Sopenharmony_ci            -std=c99)             echo -xc99              ;;
45761bd4fe43Sopenharmony_ci            -fomit-frame-pointer) echo -xregs=frameptr    ;;
45771bd4fe43Sopenharmony_ci            -fPIC)                echo -KPIC -xcode=pic32 ;;
45781bd4fe43Sopenharmony_ci            -W*,*)                echo $flag              ;;
45791bd4fe43Sopenharmony_ci            -f*-*|-W*|-mimpure-text)                      ;;
45801bd4fe43Sopenharmony_ci            -shared)              echo -G                 ;;
45811bd4fe43Sopenharmony_ci            *)                    echo $flag              ;;
45821bd4fe43Sopenharmony_ci        esac
45831bd4fe43Sopenharmony_ci    done
45841bd4fe43Sopenharmony_ci}
45851bd4fe43Sopenharmony_ci
45861bd4fe43Sopenharmony_ciprobe_cc(){
45871bd4fe43Sopenharmony_ci    pfx=$1
45881bd4fe43Sopenharmony_ci    _cc=$2
45891bd4fe43Sopenharmony_ci    first=$3
45901bd4fe43Sopenharmony_ci
45911bd4fe43Sopenharmony_ci    unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
45921bd4fe43Sopenharmony_ci    unset _ld_o _ldflags _ld_lib _ld_path
45931bd4fe43Sopenharmony_ci    unset _depflags _DEPCMD _DEPFLAGS
45941bd4fe43Sopenharmony_ci    _flags_filter=echo
45951bd4fe43Sopenharmony_ci
45961bd4fe43Sopenharmony_ci    if $_cc --version 2>&1 | grep -q '^GNU assembler'; then
45971bd4fe43Sopenharmony_ci        true # no-op to avoid reading stdin in following checks
45981bd4fe43Sopenharmony_ci    elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
45991bd4fe43Sopenharmony_ci        _type=llvm_gcc
46001bd4fe43Sopenharmony_ci        gcc_extra_ver=$(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)')
46011bd4fe43Sopenharmony_ci        _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver"
46021bd4fe43Sopenharmony_ci        _depflags='-MMD -MF $(@:.o=.d) -MT $@'
46031bd4fe43Sopenharmony_ci        _cflags_speed='-O3'
46041bd4fe43Sopenharmony_ci        _cflags_size='-Os'
46051bd4fe43Sopenharmony_ci    elif $_cc -v 2>&1 | grep -qi ^gcc; then
46061bd4fe43Sopenharmony_ci        _type=gcc
46071bd4fe43Sopenharmony_ci        gcc_version=$($_cc --version | head -n1)
46081bd4fe43Sopenharmony_ci        gcc_basever=$($_cc -dumpversion)
46091bd4fe43Sopenharmony_ci        gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
46101bd4fe43Sopenharmony_ci        gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
46111bd4fe43Sopenharmony_ci        _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
46121bd4fe43Sopenharmony_ci        case $gcc_basever in
46131bd4fe43Sopenharmony_ci            2) ;;
46141bd4fe43Sopenharmony_ci            2.*) ;;
46151bd4fe43Sopenharmony_ci            *) _depflags='-MMD -MF $(@:.o=.d) -MT $@' ;;
46161bd4fe43Sopenharmony_ci        esac
46171bd4fe43Sopenharmony_ci        if [ "$first" = true ]; then
46181bd4fe43Sopenharmony_ci            case $gcc_basever in
46191bd4fe43Sopenharmony_ci                4.2*)
46201bd4fe43Sopenharmony_ci                warn "gcc 4.2 is outdated and may miscompile FFmpeg. Please use a newer compiler." ;;
46211bd4fe43Sopenharmony_ci            esac
46221bd4fe43Sopenharmony_ci        fi
46231bd4fe43Sopenharmony_ci        _cflags_speed='-O3'
46241bd4fe43Sopenharmony_ci        _cflags_size='-Os'
46251bd4fe43Sopenharmony_ci    elif $_cc --version 2>/dev/null | grep -q ^icc; then
46261bd4fe43Sopenharmony_ci        _type=icc
46271bd4fe43Sopenharmony_ci        _ident=$($_cc --version | head -n1)
46281bd4fe43Sopenharmony_ci        _depflags='-MMD'
46291bd4fe43Sopenharmony_ci        _cflags_speed='-O3'
46301bd4fe43Sopenharmony_ci        _cflags_size='-Os'
46311bd4fe43Sopenharmony_ci        _cflags_noopt='-O1'
46321bd4fe43Sopenharmony_ci        _flags_filter=icc_flags
46331bd4fe43Sopenharmony_ci    elif $_cc -v 2>&1 | grep -q xlc; then
46341bd4fe43Sopenharmony_ci        _type=xlc
46351bd4fe43Sopenharmony_ci        _ident=$($_cc -qversion 2>/dev/null | head -n1)
46361bd4fe43Sopenharmony_ci        _cflags_speed='-O5'
46371bd4fe43Sopenharmony_ci        _cflags_size='-O5 -qcompact'
46381bd4fe43Sopenharmony_ci    elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then
46391bd4fe43Sopenharmony_ci        test -d "$sysroot" || die "No valid sysroot specified."
46401bd4fe43Sopenharmony_ci        _type=armcc
46411bd4fe43Sopenharmony_ci        _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //')
46421bd4fe43Sopenharmony_ci        armcc_conf="$PWD/armcc.conf"
46431bd4fe43Sopenharmony_ci        $_cc --arm_linux_configure                 \
46441bd4fe43Sopenharmony_ci             --arm_linux_config_file="$armcc_conf" \
46451bd4fe43Sopenharmony_ci             --configure_sysroot="$sysroot"        \
46461bd4fe43Sopenharmony_ci             --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
46471bd4fe43Sopenharmony_ci             die "Error creating armcc configuration file."
46481bd4fe43Sopenharmony_ci        $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
46491bd4fe43Sopenharmony_ci        _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
46501bd4fe43Sopenharmony_ci        as_default="${cross_prefix}gcc"
46511bd4fe43Sopenharmony_ci        _depflags='-MMD'
46521bd4fe43Sopenharmony_ci        _cflags_speed='-O3'
46531bd4fe43Sopenharmony_ci        _cflags_size='-Os'
46541bd4fe43Sopenharmony_ci    elif $_cc -v 2>&1 | grep -q clang && ! $_cc -? > /dev/null 2>&1; then
46551bd4fe43Sopenharmony_ci        _type=clang
46561bd4fe43Sopenharmony_ci        _ident=$($_cc --version 2>/dev/null | head -n1)
46571bd4fe43Sopenharmony_ci        _depflags='-MMD -MF $(@:.o=.d) -MT $@'
46581bd4fe43Sopenharmony_ci        _cflags_speed='-O3'
46591bd4fe43Sopenharmony_ci        _cflags_size='-Oz'
46601bd4fe43Sopenharmony_ci    elif $_cc -V 2>&1 | grep -q Sun; then
46611bd4fe43Sopenharmony_ci        _type=suncc
46621bd4fe43Sopenharmony_ci        _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
46631bd4fe43Sopenharmony_ci        _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
46641bd4fe43Sopenharmony_ci        _DEPFLAGS='-xM1 -xc99'
46651bd4fe43Sopenharmony_ci        _ldflags='-std=c99'
46661bd4fe43Sopenharmony_ci        _cflags_speed='-O5'
46671bd4fe43Sopenharmony_ci        _cflags_size='-O5 -xspace'
46681bd4fe43Sopenharmony_ci        _flags_filter=suncc_flags
46691bd4fe43Sopenharmony_ci    elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
46701bd4fe43Sopenharmony_ci        _type=pathscale
46711bd4fe43Sopenharmony_ci        _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
46721bd4fe43Sopenharmony_ci        _depflags='-MMD -MF $(@:.o=.d) -MT $@'
46731bd4fe43Sopenharmony_ci        _cflags_speed='-O2'
46741bd4fe43Sopenharmony_ci        _cflags_size='-Os'
46751bd4fe43Sopenharmony_ci        _flags_filter='filter_out -Wdisabled-optimization'
46761bd4fe43Sopenharmony_ci    elif $_cc -v 2>&1 | grep -q Open64; then
46771bd4fe43Sopenharmony_ci        _type=open64
46781bd4fe43Sopenharmony_ci        _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
46791bd4fe43Sopenharmony_ci        _depflags='-MMD -MF $(@:.o=.d) -MT $@'
46801bd4fe43Sopenharmony_ci        _cflags_speed='-O2'
46811bd4fe43Sopenharmony_ci        _cflags_size='-Os'
46821bd4fe43Sopenharmony_ci        _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
46831bd4fe43Sopenharmony_ci    elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then
46841bd4fe43Sopenharmony_ci        _type=armasm
46851bd4fe43Sopenharmony_ci        _ident=$($_cc | head -n1)
46861bd4fe43Sopenharmony_ci        # 4509: "This form of conditional instruction is deprecated"
46871bd4fe43Sopenharmony_ci        _flags="-nologo -ignore 4509"
46881bd4fe43Sopenharmony_ci        _flags_filter=armasm_flags
46891bd4fe43Sopenharmony_ci    elif $_cc 2>&1 | grep -q Intel; then
46901bd4fe43Sopenharmony_ci        _type=icl
46911bd4fe43Sopenharmony_ci        _ident=$($_cc 2>&1 | head -n1)
46921bd4fe43Sopenharmony_ci        _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@'
46931bd4fe43Sopenharmony_ci        # Not only is O3 broken on 13.x+ but it is slower on all previous
46941bd4fe43Sopenharmony_ci        # versions (tested) as well.
46951bd4fe43Sopenharmony_ci        _cflags_speed="-O2"
46961bd4fe43Sopenharmony_ci        _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff
46971bd4fe43Sopenharmony_ci        if $_cc 2>&1 | grep -q Linker; then
46981bd4fe43Sopenharmony_ci            _ld_o='-out:$@'
46991bd4fe43Sopenharmony_ci        else
47001bd4fe43Sopenharmony_ci            _ld_o='-Fe$@'
47011bd4fe43Sopenharmony_ci        fi
47021bd4fe43Sopenharmony_ci        _cc_o='-Fo$@'
47031bd4fe43Sopenharmony_ci        _cc_e='-P'
47041bd4fe43Sopenharmony_ci        _flags_filter=icl_flags
47051bd4fe43Sopenharmony_ci        _ld_lib='lib%.a'
47061bd4fe43Sopenharmony_ci        _ld_path='-libpath:'
47071bd4fe43Sopenharmony_ci        # -Qdiag-error to make icl error when seeing certain unknown arguments
47081bd4fe43Sopenharmony_ci        _flags='-nologo -Qdiag-error:4044,10157'
47091bd4fe43Sopenharmony_ci        # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency
47101bd4fe43Sopenharmony_ci        # with MSVC which enables it by default.
47111bd4fe43Sopenharmony_ci        _cflags='-Qms0 -Qvec- -Qsimd- -GS -fp:precise'
47121bd4fe43Sopenharmony_ci        disable stripping
47131bd4fe43Sopenharmony_ci    elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then
47141bd4fe43Sopenharmony_ci        # lld can emulate multiple different linkers; in ms link.exe mode,
47151bd4fe43Sopenharmony_ci        # the -? parameter gives the help output which contains an identifyable
47161bd4fe43Sopenharmony_ci        # string, while it gives an error in other modes.
47171bd4fe43Sopenharmony_ci        _type=lld-link
47181bd4fe43Sopenharmony_ci        # The link.exe mode doesn't have a switch for getting the version,
47191bd4fe43Sopenharmony_ci        # but we can force it back to gnu mode and get the version from there.
47201bd4fe43Sopenharmony_ci        _ident=$($_cc -flavor gnu --version 2>/dev/null)
47211bd4fe43Sopenharmony_ci        _ld_o='-out:$@'
47221bd4fe43Sopenharmony_ci        _flags_filter=msvc_flags
47231bd4fe43Sopenharmony_ci        _ld_lib='lib%.a'
47241bd4fe43Sopenharmony_ci        _ld_path='-libpath:'
47251bd4fe43Sopenharmony_ci    elif $_cc -nologo- 2>&1 | grep -q Microsoft || { $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; }; then
47261bd4fe43Sopenharmony_ci        _type=msvc
47271bd4fe43Sopenharmony_ci        if $_cc -nologo- 2>&1 | grep -q Microsoft; then
47281bd4fe43Sopenharmony_ci            _ident=$($_cc 2>&1 | head -n1 | tr -d '\r')
47291bd4fe43Sopenharmony_ci        else
47301bd4fe43Sopenharmony_ci            _ident=$($_cc --version 2>/dev/null | head -n1 | tr -d '\r')
47311bd4fe43Sopenharmony_ci        fi
47321bd4fe43Sopenharmony_ci        _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
47331bd4fe43Sopenharmony_ci        _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
47341bd4fe43Sopenharmony_ci        _cflags_speed="-O2"
47351bd4fe43Sopenharmony_ci        _cflags_size="-O1"
47361bd4fe43Sopenharmony_ci        _cflags_noopt="-O1"
47371bd4fe43Sopenharmony_ci        if $_cc -nologo- 2>&1 | grep -q Linker; then
47381bd4fe43Sopenharmony_ci            _ld_o='-out:$@'
47391bd4fe43Sopenharmony_ci        else
47401bd4fe43Sopenharmony_ci            _ld_o='-Fe$@'
47411bd4fe43Sopenharmony_ci        fi
47421bd4fe43Sopenharmony_ci        _cc_o='-Fo$@'
47431bd4fe43Sopenharmony_ci        _cc_e='-P -Fi$@'
47441bd4fe43Sopenharmony_ci        _flags_filter=msvc_flags
47451bd4fe43Sopenharmony_ci        _ld_lib='lib%.a'
47461bd4fe43Sopenharmony_ci        _ld_path='-libpath:'
47471bd4fe43Sopenharmony_ci        _flags='-nologo'
47481bd4fe43Sopenharmony_ci        disable stripping
47491bd4fe43Sopenharmony_ci    elif $_cc --version 2>/dev/null | grep -q ^cparser; then
47501bd4fe43Sopenharmony_ci        _type=cparser
47511bd4fe43Sopenharmony_ci        _ident=$($_cc --version | head -n1)
47521bd4fe43Sopenharmony_ci        _depflags='-MMD'
47531bd4fe43Sopenharmony_ci        _cflags_speed='-O4'
47541bd4fe43Sopenharmony_ci        _cflags_size='-O2'
47551bd4fe43Sopenharmony_ci        _flags_filter=cparser_flags
47561bd4fe43Sopenharmony_ci    fi
47571bd4fe43Sopenharmony_ci
47581bd4fe43Sopenharmony_ci    eval ${pfx}_type=\$_type
47591bd4fe43Sopenharmony_ci    eval ${pfx}_ident=\$_ident
47601bd4fe43Sopenharmony_ci}
47611bd4fe43Sopenharmony_ci
47621bd4fe43Sopenharmony_ciset_ccvars(){
47631bd4fe43Sopenharmony_ci    eval ${1}_C=\${_cc_c-\${${1}_C}}
47641bd4fe43Sopenharmony_ci    eval ${1}_E=\${_cc_e-\${${1}_E}}
47651bd4fe43Sopenharmony_ci    eval ${1}_O=\${_cc_o-\${${1}_O}}
47661bd4fe43Sopenharmony_ci
47671bd4fe43Sopenharmony_ci    if [ -n "$_depflags" ]; then
47681bd4fe43Sopenharmony_ci        eval ${1}_DEPFLAGS=\$_depflags
47691bd4fe43Sopenharmony_ci    else
47701bd4fe43Sopenharmony_ci        eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
47711bd4fe43Sopenharmony_ci        eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
47721bd4fe43Sopenharmony_ci        eval DEP${1}FLAGS=\$_flags
47731bd4fe43Sopenharmony_ci    fi
47741bd4fe43Sopenharmony_ci}
47751bd4fe43Sopenharmony_ci
47761bd4fe43Sopenharmony_ciprobe_cc cc "$cc" "true"
47771bd4fe43Sopenharmony_cicflags_filter=$_flags_filter
47781bd4fe43Sopenharmony_cicflags_speed=$_cflags_speed
47791bd4fe43Sopenharmony_cicflags_size=$_cflags_size
47801bd4fe43Sopenharmony_cicflags_noopt=$_cflags_noopt
47811bd4fe43Sopenharmony_ciadd_cflags $_flags $_cflags
47821bd4fe43Sopenharmony_cicc_ldflags=$_ldflags
47831bd4fe43Sopenharmony_ciset_ccvars CC
47841bd4fe43Sopenharmony_ciset_ccvars CXX
47851bd4fe43Sopenharmony_ci
47861bd4fe43Sopenharmony_ciprobe_cc hostcc "$host_cc"
47871bd4fe43Sopenharmony_cihost_cflags_filter=$_flags_filter
47881bd4fe43Sopenharmony_cihost_cflags_speed=$_cflags_speed
47891bd4fe43Sopenharmony_ciadd_host_cflags  $_flags $_cflags
47901bd4fe43Sopenharmony_ciset_ccvars HOSTCC
47911bd4fe43Sopenharmony_ci
47921bd4fe43Sopenharmony_citest -n "$cc_type" && enable $cc_type ||
47931bd4fe43Sopenharmony_ci    warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
47941bd4fe43Sopenharmony_ci
47951bd4fe43Sopenharmony_ci: ${as_default:=$cc}
47961bd4fe43Sopenharmony_ci: ${objcc_default:=$cc}
47971bd4fe43Sopenharmony_ci: ${dep_cc_default:=$cc}
47981bd4fe43Sopenharmony_ci: ${ld_default:=$cc}
47991bd4fe43Sopenharmony_ci: ${host_ld_default:=$host_cc}
48001bd4fe43Sopenharmony_ciset_default ar as objcc dep_cc ld ln_s host_ld windres
48011bd4fe43Sopenharmony_ci
48021bd4fe43Sopenharmony_ciprobe_cc as "$as"
48031bd4fe43Sopenharmony_ciasflags_filter=$_flags_filter
48041bd4fe43Sopenharmony_ciadd_asflags $_flags $_cflags
48051bd4fe43Sopenharmony_ciset_ccvars AS
48061bd4fe43Sopenharmony_ci
48071bd4fe43Sopenharmony_ciprobe_cc objcc "$objcc"
48081bd4fe43Sopenharmony_ciobjcflags_filter=$_flags_filter
48091bd4fe43Sopenharmony_ciadd_objcflags $_flags $_cflags
48101bd4fe43Sopenharmony_ciset_ccvars OBJC
48111bd4fe43Sopenharmony_ci
48121bd4fe43Sopenharmony_ciprobe_cc ld "$ld"
48131bd4fe43Sopenharmony_cildflags_filter=$_flags_filter
48141bd4fe43Sopenharmony_ciadd_ldflags $_flags $_ldflags
48151bd4fe43Sopenharmony_citest "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
48161bd4fe43Sopenharmony_ciLD_O=${_ld_o-$LD_O}
48171bd4fe43Sopenharmony_ciLD_LIB=${_ld_lib-$LD_LIB}
48181bd4fe43Sopenharmony_ciLD_PATH=${_ld_path-$LD_PATH}
48191bd4fe43Sopenharmony_ci
48201bd4fe43Sopenharmony_ciprobe_cc hostld "$host_ld"
48211bd4fe43Sopenharmony_cihost_ldflags_filter=$_flags_filter
48221bd4fe43Sopenharmony_ciadd_host_ldflags $_flags $_ldflags
48231bd4fe43Sopenharmony_ciHOSTLD_O=${_ld_o-$HOSTLD_O}
48241bd4fe43Sopenharmony_ci
48251bd4fe43Sopenharmony_ciif [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
48261bd4fe43Sopenharmony_ci    probe_cc depcc "$dep_cc"
48271bd4fe43Sopenharmony_ci    CCDEP=${_DEPCMD:-$DEPCMD}
48281bd4fe43Sopenharmony_ci    CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
48291bd4fe43Sopenharmony_ci    DEPCCFLAGS=$_flags
48301bd4fe43Sopenharmony_cifi
48311bd4fe43Sopenharmony_ci
48321bd4fe43Sopenharmony_ciif $ar 2>&1 | grep -q Microsoft; then
48331bd4fe43Sopenharmony_ci    arflags="-nologo"
48341bd4fe43Sopenharmony_ci    ar_o='-out:$@'
48351bd4fe43Sopenharmony_cielif $ar 2>&1 | grep -q "\[D\] "; then
48361bd4fe43Sopenharmony_ci    arflags="rcD"
48371bd4fe43Sopenharmony_ci    ar_o='$@'
48381bd4fe43Sopenharmony_cielse
48391bd4fe43Sopenharmony_ci    arflags="rc"
48401bd4fe43Sopenharmony_ci    ar_o='$@'
48411bd4fe43Sopenharmony_cifi
48421bd4fe43Sopenharmony_ci
48431bd4fe43Sopenharmony_ciadd_cflags $extra_cflags
48441bd4fe43Sopenharmony_ciadd_cxxflags $extra_cxxflags
48451bd4fe43Sopenharmony_ciadd_objcflags $extra_objcflags
48461bd4fe43Sopenharmony_ciadd_asflags $extra_cflags
48471bd4fe43Sopenharmony_ci
48481bd4fe43Sopenharmony_ciif test -n "$sysroot"; then
48491bd4fe43Sopenharmony_ci    case "$cc_type" in
48501bd4fe43Sopenharmony_ci        gcc|llvm_gcc|clang)
48511bd4fe43Sopenharmony_ci            add_cppflags --sysroot="$sysroot"
48521bd4fe43Sopenharmony_ci            add_ldflags --sysroot="$sysroot"
48531bd4fe43Sopenharmony_ci        ;;
48541bd4fe43Sopenharmony_ci    esac
48551bd4fe43Sopenharmony_cifi
48561bd4fe43Sopenharmony_ci
48571bd4fe43Sopenharmony_ciif test "$cpu" = host; then
48581bd4fe43Sopenharmony_ci    enabled cross_compile &&
48591bd4fe43Sopenharmony_ci        warn "--cpu=host makes no sense when cross-compiling."
48601bd4fe43Sopenharmony_ci
48611bd4fe43Sopenharmony_ci    case "$cc_type" in
48621bd4fe43Sopenharmony_ci        gcc|llvm_gcc)
48631bd4fe43Sopenharmony_ci            check_native(){
48641bd4fe43Sopenharmony_ci                $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
48651bd4fe43Sopenharmony_ci                sed -n "/cc1.*$1=/{
48661bd4fe43Sopenharmony_ci                            s/.*$1=\\([^ ]*\\).*/\\1/
48671bd4fe43Sopenharmony_ci                            p
48681bd4fe43Sopenharmony_ci                            q
48691bd4fe43Sopenharmony_ci                        }" $TMPE
48701bd4fe43Sopenharmony_ci            }
48711bd4fe43Sopenharmony_ci            cpu=$(check_native -march || check_native -mcpu)
48721bd4fe43Sopenharmony_ci        ;;
48731bd4fe43Sopenharmony_ci        clang)
48741bd4fe43Sopenharmony_ci            check_native(){
48751bd4fe43Sopenharmony_ci                $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
48761bd4fe43Sopenharmony_ci                sed -n "/cc1.*-target-cpu /{
48771bd4fe43Sopenharmony_ci                            s/.*-target-cpu \\([^ ]*\\).*/\\1/
48781bd4fe43Sopenharmony_ci                            p
48791bd4fe43Sopenharmony_ci                            q
48801bd4fe43Sopenharmony_ci                        }" $TMPE
48811bd4fe43Sopenharmony_ci            }
48821bd4fe43Sopenharmony_ci            cpu=$(check_native -march)
48831bd4fe43Sopenharmony_ci        ;;
48841bd4fe43Sopenharmony_ci    esac
48851bd4fe43Sopenharmony_ci
48861bd4fe43Sopenharmony_ci    test "${cpu:-host}" = host &&
48871bd4fe43Sopenharmony_ci        die "--cpu=host not supported with compiler $cc"
48881bd4fe43Sopenharmony_cifi
48891bd4fe43Sopenharmony_ci
48901bd4fe43Sopenharmony_ci# Deal with common $arch aliases
48911bd4fe43Sopenharmony_cicase "$arch" in
48921bd4fe43Sopenharmony_ci    aarch64|arm64)
48931bd4fe43Sopenharmony_ci        arch="aarch64"
48941bd4fe43Sopenharmony_ci    ;;
48951bd4fe43Sopenharmony_ci    arm*|iPad*|iPhone*)
48961bd4fe43Sopenharmony_ci        arch="arm"
48971bd4fe43Sopenharmony_ci    ;;
48981bd4fe43Sopenharmony_ci    mips*|IP*)
48991bd4fe43Sopenharmony_ci        case "$arch" in
49001bd4fe43Sopenharmony_ci        *el)
49011bd4fe43Sopenharmony_ci            add_cppflags -EL
49021bd4fe43Sopenharmony_ci            add_ldflags -EL
49031bd4fe43Sopenharmony_ci        ;;
49041bd4fe43Sopenharmony_ci        *eb)
49051bd4fe43Sopenharmony_ci            add_cppflags -EB
49061bd4fe43Sopenharmony_ci            add_ldflags -EB
49071bd4fe43Sopenharmony_ci        ;;
49081bd4fe43Sopenharmony_ci        esac
49091bd4fe43Sopenharmony_ci        arch="mips"
49101bd4fe43Sopenharmony_ci    ;;
49111bd4fe43Sopenharmony_ci    parisc*|hppa*)
49121bd4fe43Sopenharmony_ci        arch="parisc"
49131bd4fe43Sopenharmony_ci    ;;
49141bd4fe43Sopenharmony_ci    "Power Macintosh"|ppc*|powerpc*)
49151bd4fe43Sopenharmony_ci        arch="ppc"
49161bd4fe43Sopenharmony_ci    ;;
49171bd4fe43Sopenharmony_ci    s390|s390x)
49181bd4fe43Sopenharmony_ci        arch="s390"
49191bd4fe43Sopenharmony_ci    ;;
49201bd4fe43Sopenharmony_ci    sh4|sh)
49211bd4fe43Sopenharmony_ci        arch="sh4"
49221bd4fe43Sopenharmony_ci    ;;
49231bd4fe43Sopenharmony_ci    sun4*|sparc*)
49241bd4fe43Sopenharmony_ci        arch="sparc"
49251bd4fe43Sopenharmony_ci    ;;
49261bd4fe43Sopenharmony_ci    tilegx|tile-gx)
49271bd4fe43Sopenharmony_ci        arch="tilegx"
49281bd4fe43Sopenharmony_ci    ;;
49291bd4fe43Sopenharmony_ci    i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
49301bd4fe43Sopenharmony_ci        arch="x86"
49311bd4fe43Sopenharmony_ci    ;;
49321bd4fe43Sopenharmony_ciesac
49331bd4fe43Sopenharmony_ci
49341bd4fe43Sopenharmony_ciis_in $arch $ARCH_LIST || warn "unknown architecture $arch"
49351bd4fe43Sopenharmony_cienable $arch
49361bd4fe43Sopenharmony_ci
49371bd4fe43Sopenharmony_ci# Add processor-specific flags
49381bd4fe43Sopenharmony_ciif enabled aarch64; then
49391bd4fe43Sopenharmony_ci
49401bd4fe43Sopenharmony_ci    case $cpu in
49411bd4fe43Sopenharmony_ci        armv*)
49421bd4fe43Sopenharmony_ci            cpuflags="-march=$cpu"
49431bd4fe43Sopenharmony_ci        ;;
49441bd4fe43Sopenharmony_ci        *)
49451bd4fe43Sopenharmony_ci            cpuflags="-mcpu=$cpu"
49461bd4fe43Sopenharmony_ci        ;;
49471bd4fe43Sopenharmony_ci    esac
49481bd4fe43Sopenharmony_ci
49491bd4fe43Sopenharmony_cielif enabled alpha; then
49501bd4fe43Sopenharmony_ci
49511bd4fe43Sopenharmony_ci    cpuflags="-mcpu=$cpu"
49521bd4fe43Sopenharmony_ci
49531bd4fe43Sopenharmony_cielif enabled arm; then
49541bd4fe43Sopenharmony_ci
49551bd4fe43Sopenharmony_ci    check_arm_arch() {
49561bd4fe43Sopenharmony_ci        test_cpp_condition stddef.h \
49571bd4fe43Sopenharmony_ci            "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
49581bd4fe43Sopenharmony_ci            $cpuflags
49591bd4fe43Sopenharmony_ci    }
49601bd4fe43Sopenharmony_ci
49611bd4fe43Sopenharmony_ci    probe_arm_arch() {
49621bd4fe43Sopenharmony_ci        if   check_arm_arch 4;        then echo armv4
49631bd4fe43Sopenharmony_ci        elif check_arm_arch 4T;       then echo armv4t
49641bd4fe43Sopenharmony_ci        elif check_arm_arch 5;        then echo armv5
49651bd4fe43Sopenharmony_ci        elif check_arm_arch 5E;       then echo armv5e
49661bd4fe43Sopenharmony_ci        elif check_arm_arch 5T;       then echo armv5t
49671bd4fe43Sopenharmony_ci        elif check_arm_arch 5TE;      then echo armv5te
49681bd4fe43Sopenharmony_ci        elif check_arm_arch 5TEJ;     then echo armv5te
49691bd4fe43Sopenharmony_ci        elif check_arm_arch 6;        then echo armv6
49701bd4fe43Sopenharmony_ci        elif check_arm_arch 6J;       then echo armv6j
49711bd4fe43Sopenharmony_ci        elif check_arm_arch 6K;       then echo armv6k
49721bd4fe43Sopenharmony_ci        elif check_arm_arch 6Z;       then echo armv6z
49731bd4fe43Sopenharmony_ci        elif check_arm_arch 6KZ;      then echo armv6zk
49741bd4fe43Sopenharmony_ci        elif check_arm_arch 6ZK;      then echo armv6zk
49751bd4fe43Sopenharmony_ci        elif check_arm_arch 6T2;      then echo armv6t2
49761bd4fe43Sopenharmony_ci        elif check_arm_arch 7;        then echo armv7
49771bd4fe43Sopenharmony_ci        elif check_arm_arch 7A  7_A;  then echo armv7-a
49781bd4fe43Sopenharmony_ci        elif check_arm_arch 7S;       then echo armv7-a
49791bd4fe43Sopenharmony_ci        elif check_arm_arch 7R  7_R;  then echo armv7-r
49801bd4fe43Sopenharmony_ci        elif check_arm_arch 7M  7_M;  then echo armv7-m
49811bd4fe43Sopenharmony_ci        elif check_arm_arch 7EM 7E_M; then echo armv7-m
49821bd4fe43Sopenharmony_ci        elif check_arm_arch 8A  8_A;  then echo armv8-a
49831bd4fe43Sopenharmony_ci        fi
49841bd4fe43Sopenharmony_ci    }
49851bd4fe43Sopenharmony_ci
49861bd4fe43Sopenharmony_ci    [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
49871bd4fe43Sopenharmony_ci
49881bd4fe43Sopenharmony_ci    case $cpu in
49891bd4fe43Sopenharmony_ci        armv*)
49901bd4fe43Sopenharmony_ci            cpuflags="-march=$cpu"
49911bd4fe43Sopenharmony_ci            subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
49921bd4fe43Sopenharmony_ci        ;;
49931bd4fe43Sopenharmony_ci        *)
49941bd4fe43Sopenharmony_ci            cpuflags="-mcpu=$cpu"
49951bd4fe43Sopenharmony_ci            case $cpu in
49961bd4fe43Sopenharmony_ci                cortex-a*)                               subarch=armv7a  ;;
49971bd4fe43Sopenharmony_ci                cortex-r*)                               subarch=armv7r  ;;
49981bd4fe43Sopenharmony_ci                cortex-m*)                 enable thumb; subarch=armv7m  ;;
49991bd4fe43Sopenharmony_ci                arm11*)                                  subarch=armv6   ;;
50001bd4fe43Sopenharmony_ci                arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
50011bd4fe43Sopenharmony_ci                armv4*|arm7*|arm9[24]*)                  subarch=armv4   ;;
50021bd4fe43Sopenharmony_ci                *)                             subarch=$(probe_arm_arch) ;;
50031bd4fe43Sopenharmony_ci            esac
50041bd4fe43Sopenharmony_ci        ;;
50051bd4fe43Sopenharmony_ci    esac
50061bd4fe43Sopenharmony_ci
50071bd4fe43Sopenharmony_ci    case "$subarch" in
50081bd4fe43Sopenharmony_ci        armv5t*)    enable fast_clz                ;;
50091bd4fe43Sopenharmony_ci        armv[6-8]*)
50101bd4fe43Sopenharmony_ci            enable fast_clz
50111bd4fe43Sopenharmony_ci            disabled fast_unaligned || enable fast_unaligned
50121bd4fe43Sopenharmony_ci            ;;
50131bd4fe43Sopenharmony_ci    esac
50141bd4fe43Sopenharmony_ci
50151bd4fe43Sopenharmony_cielif enabled avr32; then
50161bd4fe43Sopenharmony_ci
50171bd4fe43Sopenharmony_ci    case $cpu in
50181bd4fe43Sopenharmony_ci        ap7[02]0[0-2])
50191bd4fe43Sopenharmony_ci            subarch="avr32_ap"
50201bd4fe43Sopenharmony_ci            cpuflags="-mpart=$cpu"
50211bd4fe43Sopenharmony_ci        ;;
50221bd4fe43Sopenharmony_ci        ap)
50231bd4fe43Sopenharmony_ci            subarch="avr32_ap"
50241bd4fe43Sopenharmony_ci            cpuflags="-march=$cpu"
50251bd4fe43Sopenharmony_ci        ;;
50261bd4fe43Sopenharmony_ci        uc3[ab]*)
50271bd4fe43Sopenharmony_ci            subarch="avr32_uc"
50281bd4fe43Sopenharmony_ci            cpuflags="-mcpu=$cpu"
50291bd4fe43Sopenharmony_ci        ;;
50301bd4fe43Sopenharmony_ci        uc)
50311bd4fe43Sopenharmony_ci            subarch="avr32_uc"
50321bd4fe43Sopenharmony_ci            cpuflags="-march=$cpu"
50331bd4fe43Sopenharmony_ci        ;;
50341bd4fe43Sopenharmony_ci    esac
50351bd4fe43Sopenharmony_ci
50361bd4fe43Sopenharmony_cielif enabled bfin; then
50371bd4fe43Sopenharmony_ci
50381bd4fe43Sopenharmony_ci    cpuflags="-mcpu=$cpu"
50391bd4fe43Sopenharmony_ci
50401bd4fe43Sopenharmony_cielif enabled mips; then
50411bd4fe43Sopenharmony_ci
50421bd4fe43Sopenharmony_ci    if [ "$cpu" != "generic" ]; then
50431bd4fe43Sopenharmony_ci        disable mips32r2
50441bd4fe43Sopenharmony_ci        disable mips32r5
50451bd4fe43Sopenharmony_ci        disable mips64r2
50461bd4fe43Sopenharmony_ci        disable mips32r6
50471bd4fe43Sopenharmony_ci        disable mips64r6
50481bd4fe43Sopenharmony_ci        disable loongson2
50491bd4fe43Sopenharmony_ci        disable loongson3
50501bd4fe43Sopenharmony_ci        disable mipsdsp
50511bd4fe43Sopenharmony_ci        disable mipsdspr2
50521bd4fe43Sopenharmony_ci
50531bd4fe43Sopenharmony_ci        cpuflags="-march=$cpu"
50541bd4fe43Sopenharmony_ci
50551bd4fe43Sopenharmony_ci        case $cpu in
50561bd4fe43Sopenharmony_ci            # General ISA levels
50571bd4fe43Sopenharmony_ci            mips1|mips3)
50581bd4fe43Sopenharmony_ci            ;;
50591bd4fe43Sopenharmony_ci            mips32r2)
50601bd4fe43Sopenharmony_ci                enable mips32r2
50611bd4fe43Sopenharmony_ci            ;;
50621bd4fe43Sopenharmony_ci            mips32r5)
50631bd4fe43Sopenharmony_ci                enable mips32r2
50641bd4fe43Sopenharmony_ci                enable mips32r5
50651bd4fe43Sopenharmony_ci            ;;
50661bd4fe43Sopenharmony_ci            mips64r2|mips64r5)
50671bd4fe43Sopenharmony_ci                enable mips64r2
50681bd4fe43Sopenharmony_ci                enable loongson3
50691bd4fe43Sopenharmony_ci            ;;
50701bd4fe43Sopenharmony_ci            # Cores from MIPS(MTI)
50711bd4fe43Sopenharmony_ci            24kc)
50721bd4fe43Sopenharmony_ci                disable mipsfpu
50731bd4fe43Sopenharmony_ci                enable mips32r2
50741bd4fe43Sopenharmony_ci            ;;
50751bd4fe43Sopenharmony_ci            24kf*|24kec|34kc|74Kc|1004kc)
50761bd4fe43Sopenharmony_ci                enable mips32r2
50771bd4fe43Sopenharmony_ci            ;;
50781bd4fe43Sopenharmony_ci            24kef*|34kf*|1004kf*)
50791bd4fe43Sopenharmony_ci                enable mipsdsp
50801bd4fe43Sopenharmony_ci                enable mips32r2
50811bd4fe43Sopenharmony_ci            ;;
50821bd4fe43Sopenharmony_ci            p5600)
50831bd4fe43Sopenharmony_ci                enable mips32r2
50841bd4fe43Sopenharmony_ci                enable mips32r5
50851bd4fe43Sopenharmony_ci                check_cflags "-mtune=p5600" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops"
50861bd4fe43Sopenharmony_ci            ;;
50871bd4fe43Sopenharmony_ci            i6400)
50881bd4fe43Sopenharmony_ci                enable mips64r6
50891bd4fe43Sopenharmony_ci                check_cflags "-mtune=i6400 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
50901bd4fe43Sopenharmony_ci            ;;
50911bd4fe43Sopenharmony_ci            p6600)
50921bd4fe43Sopenharmony_ci                enable mips64r6
50931bd4fe43Sopenharmony_ci                check_cflags "-mtune=p6600 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
50941bd4fe43Sopenharmony_ci            ;;
50951bd4fe43Sopenharmony_ci            # Cores from Loongson
50961bd4fe43Sopenharmony_ci            loongson2e|loongson2f|loongson3*)
50971bd4fe43Sopenharmony_ci                enable local_aligned
50981bd4fe43Sopenharmony_ci                enable simd_align_16
50991bd4fe43Sopenharmony_ci                enable fast_64bit
51001bd4fe43Sopenharmony_ci                enable fast_clz
51011bd4fe43Sopenharmony_ci                enable fast_cmov
51021bd4fe43Sopenharmony_ci                enable fast_unaligned
51031bd4fe43Sopenharmony_ci                disable aligned_stack
51041bd4fe43Sopenharmony_ci                # When gcc version less than 5.3.0, add -fno-expensive-optimizations flag.
51051bd4fe43Sopenharmony_ci                if test "$cc_type" = "gcc"; then
51061bd4fe43Sopenharmony_ci                    case $gcc_basever in
51071bd4fe43Sopenharmony_ci                        2|2.*|3.*|4.*|5.0|5.1|5.2)
51081bd4fe43Sopenharmony_ci                        expensive_optimization_flag="-fno-expensive-optimizations"
51091bd4fe43Sopenharmony_ci                        ;;
51101bd4fe43Sopenharmony_ci                        *)
51111bd4fe43Sopenharmony_ci                        expensive_optimization_flag=""
51121bd4fe43Sopenharmony_ci                        ;;
51131bd4fe43Sopenharmony_ci                    esac
51141bd4fe43Sopenharmony_ci                fi
51151bd4fe43Sopenharmony_ci
51161bd4fe43Sopenharmony_ci                case $cpu in
51171bd4fe43Sopenharmony_ci                    loongson3*)
51181bd4fe43Sopenharmony_ci                        enable loongson3
51191bd4fe43Sopenharmony_ci                        cpuflags="-march=loongson3a -mhard-float $expensive_optimization_flag"
51201bd4fe43Sopenharmony_ci                    ;;
51211bd4fe43Sopenharmony_ci                    loongson2e)
51221bd4fe43Sopenharmony_ci                        enable loongson2
51231bd4fe43Sopenharmony_ci                        cpuflags="-march=loongson2e -mhard-float $expensive_optimization_flag"
51241bd4fe43Sopenharmony_ci                    ;;
51251bd4fe43Sopenharmony_ci                    loongson2f)
51261bd4fe43Sopenharmony_ci                        enable loongson2
51271bd4fe43Sopenharmony_ci                        cpuflags="-march=loongson2f -mhard-float $expensive_optimization_flag"
51281bd4fe43Sopenharmony_ci                    ;;
51291bd4fe43Sopenharmony_ci                esac
51301bd4fe43Sopenharmony_ci            ;;
51311bd4fe43Sopenharmony_ci            *)
51321bd4fe43Sopenharmony_ci                warn "unknown MIPS CPU"
51331bd4fe43Sopenharmony_ci            ;;
51341bd4fe43Sopenharmony_ci        esac
51351bd4fe43Sopenharmony_ci
51361bd4fe43Sopenharmony_ci    else
51371bd4fe43Sopenharmony_ci        disable mipsdsp
51381bd4fe43Sopenharmony_ci        disable mipsdspr2
51391bd4fe43Sopenharmony_ci        # Disable DSP stuff for generic CPU, it can't be detected at runtime.
51401bd4fe43Sopenharmony_ci        warn 'generic cpu selected'
51411bd4fe43Sopenharmony_ci    fi
51421bd4fe43Sopenharmony_ci
51431bd4fe43Sopenharmony_cielif enabled ppc; then
51441bd4fe43Sopenharmony_ci
51451bd4fe43Sopenharmony_ci    disable ldbrx
51461bd4fe43Sopenharmony_ci
51471bd4fe43Sopenharmony_ci    case $(tolower $cpu) in
51481bd4fe43Sopenharmony_ci        601|ppc601|powerpc601)
51491bd4fe43Sopenharmony_ci            cpuflags="-mcpu=601"
51501bd4fe43Sopenharmony_ci            disable altivec
51511bd4fe43Sopenharmony_ci        ;;
51521bd4fe43Sopenharmony_ci        603*|ppc603*|powerpc603*)
51531bd4fe43Sopenharmony_ci            cpuflags="-mcpu=603"
51541bd4fe43Sopenharmony_ci            disable altivec
51551bd4fe43Sopenharmony_ci        ;;
51561bd4fe43Sopenharmony_ci        604*|ppc604*|powerpc604*)
51571bd4fe43Sopenharmony_ci            cpuflags="-mcpu=604"
51581bd4fe43Sopenharmony_ci            disable altivec
51591bd4fe43Sopenharmony_ci        ;;
51601bd4fe43Sopenharmony_ci        g3|75*|ppc75*|powerpc75*)
51611bd4fe43Sopenharmony_ci            cpuflags="-mcpu=750"
51621bd4fe43Sopenharmony_ci            disable altivec
51631bd4fe43Sopenharmony_ci        ;;
51641bd4fe43Sopenharmony_ci        g4|745*|ppc745*|powerpc745*)
51651bd4fe43Sopenharmony_ci            cpuflags="-mcpu=7450"
51661bd4fe43Sopenharmony_ci            disable vsx
51671bd4fe43Sopenharmony_ci        ;;
51681bd4fe43Sopenharmony_ci        74*|ppc74*|powerpc74*)
51691bd4fe43Sopenharmony_ci            cpuflags="-mcpu=7400"
51701bd4fe43Sopenharmony_ci            disable vsx
51711bd4fe43Sopenharmony_ci        ;;
51721bd4fe43Sopenharmony_ci        g5|970|ppc970|powerpc970)
51731bd4fe43Sopenharmony_ci            cpuflags="-mcpu=970"
51741bd4fe43Sopenharmony_ci            disable vsx
51751bd4fe43Sopenharmony_ci        ;;
51761bd4fe43Sopenharmony_ci        power[3-6]*)
51771bd4fe43Sopenharmony_ci            cpuflags="-mcpu=$cpu"
51781bd4fe43Sopenharmony_ci            disable vsx
51791bd4fe43Sopenharmony_ci        ;;
51801bd4fe43Sopenharmony_ci        power[7-8]*)
51811bd4fe43Sopenharmony_ci            cpuflags="-mcpu=$cpu"
51821bd4fe43Sopenharmony_ci        ;;
51831bd4fe43Sopenharmony_ci        cell)
51841bd4fe43Sopenharmony_ci            cpuflags="-mcpu=cell"
51851bd4fe43Sopenharmony_ci            enable ldbrx
51861bd4fe43Sopenharmony_ci            disable vsx
51871bd4fe43Sopenharmony_ci        ;;
51881bd4fe43Sopenharmony_ci        e500mc)
51891bd4fe43Sopenharmony_ci            cpuflags="-mcpu=e500mc"
51901bd4fe43Sopenharmony_ci            disable altivec
51911bd4fe43Sopenharmony_ci        ;;
51921bd4fe43Sopenharmony_ci        e500v2)
51931bd4fe43Sopenharmony_ci            cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
51941bd4fe43Sopenharmony_ci            disable altivec
51951bd4fe43Sopenharmony_ci            disable dcbzl
51961bd4fe43Sopenharmony_ci        ;;
51971bd4fe43Sopenharmony_ci        e500)
51981bd4fe43Sopenharmony_ci            cpuflags="-mcpu=8540 -mhard-float"
51991bd4fe43Sopenharmony_ci            disable altivec
52001bd4fe43Sopenharmony_ci            disable dcbzl
52011bd4fe43Sopenharmony_ci        ;;
52021bd4fe43Sopenharmony_ci    esac
52031bd4fe43Sopenharmony_ci
52041bd4fe43Sopenharmony_cielif enabled sparc; then
52051bd4fe43Sopenharmony_ci
52061bd4fe43Sopenharmony_ci    case $cpu in
52071bd4fe43Sopenharmony_ci        cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
52081bd4fe43Sopenharmony_ci            cpuflags="-mcpu=$cpu"
52091bd4fe43Sopenharmony_ci        ;;
52101bd4fe43Sopenharmony_ci        ultrasparc*|niagara[234])
52111bd4fe43Sopenharmony_ci            cpuflags="-mcpu=$cpu"
52121bd4fe43Sopenharmony_ci        ;;
52131bd4fe43Sopenharmony_ci    esac
52141bd4fe43Sopenharmony_ci
52151bd4fe43Sopenharmony_cielif enabled x86; then
52161bd4fe43Sopenharmony_ci
52171bd4fe43Sopenharmony_ci    case $cpu in
52181bd4fe43Sopenharmony_ci        i[345]86|pentium)
52191bd4fe43Sopenharmony_ci            cpuflags="-march=$cpu"
52201bd4fe43Sopenharmony_ci            disable i686
52211bd4fe43Sopenharmony_ci            disable mmx
52221bd4fe43Sopenharmony_ci        ;;
52231bd4fe43Sopenharmony_ci        # targets that do NOT support nopl and conditional mov (cmov)
52241bd4fe43Sopenharmony_ci        pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
52251bd4fe43Sopenharmony_ci            cpuflags="-march=$cpu"
52261bd4fe43Sopenharmony_ci            disable i686
52271bd4fe43Sopenharmony_ci        ;;
52281bd4fe43Sopenharmony_ci        # targets that do support nopl and conditional mov (cmov)
52291bd4fe43Sopenharmony_ci        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx\
52301bd4fe43Sopenharmony_ci        |core*|atom|bonnell|nehalem|westmere|silvermont|sandybridge|ivybridge|haswell|broadwell|skylake*|knl\
52311bd4fe43Sopenharmony_ci        |amdfam10|barcelona|b[dt]ver*|znver*)
52321bd4fe43Sopenharmony_ci            cpuflags="-march=$cpu"
52331bd4fe43Sopenharmony_ci            enable i686
52341bd4fe43Sopenharmony_ci            enable fast_cmov
52351bd4fe43Sopenharmony_ci        ;;
52361bd4fe43Sopenharmony_ci        # targets that do support conditional mov but on which it's slow
52371bd4fe43Sopenharmony_ci        pentium4|pentium4m|prescott|nocona)
52381bd4fe43Sopenharmony_ci            cpuflags="-march=$cpu"
52391bd4fe43Sopenharmony_ci            enable i686
52401bd4fe43Sopenharmony_ci            disable fast_cmov
52411bd4fe43Sopenharmony_ci        ;;
52421bd4fe43Sopenharmony_ci    esac
52431bd4fe43Sopenharmony_ci
52441bd4fe43Sopenharmony_cifi
52451bd4fe43Sopenharmony_ci
52461bd4fe43Sopenharmony_ciif [ "$cpu" != generic ]; then
52471bd4fe43Sopenharmony_ci    add_cflags  $cpuflags
52481bd4fe43Sopenharmony_ci    add_asflags $cpuflags
52491bd4fe43Sopenharmony_ci    test "$cc_type" = "$ld_type" && add_ldflags $cpuflags
52501bd4fe43Sopenharmony_cifi
52511bd4fe43Sopenharmony_ci
52521bd4fe43Sopenharmony_ci# compiler sanity check
52531bd4fe43Sopenharmony_citest_exec <<EOF
52541bd4fe43Sopenharmony_ciint main(void){ return 0; }
52551bd4fe43Sopenharmony_ciEOF
52561bd4fe43Sopenharmony_ciif test "$?" != 0; then
52571bd4fe43Sopenharmony_ci    echo "$cc is unable to create an executable file."
52581bd4fe43Sopenharmony_ci    if test -z "$cross_prefix" && ! enabled cross_compile ; then
52591bd4fe43Sopenharmony_ci        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
52601bd4fe43Sopenharmony_ci        echo "Only do this if you know what cross compiling means."
52611bd4fe43Sopenharmony_ci    fi
52621bd4fe43Sopenharmony_ci    die "C compiler test failed."
52631bd4fe43Sopenharmony_cifi
52641bd4fe43Sopenharmony_ci
52651bd4fe43Sopenharmony_ciadd_cppflags -D_ISOC99_SOURCE
52661bd4fe43Sopenharmony_ciadd_cxxflags -D__STDC_CONSTANT_MACROS
52671bd4fe43Sopenharmony_cicheck_cxxflags -std=c++11 || check_cxxflags -std=c++0x
52681bd4fe43Sopenharmony_ci
52691bd4fe43Sopenharmony_ci# some compilers silently accept -std=c11, so we also need to check that the
52701bd4fe43Sopenharmony_ci# version macro is defined properly
52711bd4fe43Sopenharmony_citest_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" &&
52721bd4fe43Sopenharmony_ci    add_cflags -std=c11 ||
52731bd4fe43Sopenharmony_ci    check_cflags -std=c99
52741bd4fe43Sopenharmony_ci
52751bd4fe43Sopenharmony_cicheck_cppflags -D_FILE_OFFSET_BITS=64
52761bd4fe43Sopenharmony_cicheck_cppflags -D_LARGEFILE_SOURCE
52771bd4fe43Sopenharmony_ci
52781bd4fe43Sopenharmony_ciadd_host_cppflags -D_ISOC99_SOURCE
52791bd4fe43Sopenharmony_cicheck_host_cflags -std=c99
52801bd4fe43Sopenharmony_cicheck_host_cflags -Wall
52811bd4fe43Sopenharmony_cicheck_host_cflags $host_cflags_speed
52821bd4fe43Sopenharmony_ci
52831bd4fe43Sopenharmony_cicheck_64bit(){
52841bd4fe43Sopenharmony_ci    arch32=$1
52851bd4fe43Sopenharmony_ci    arch64=$2
52861bd4fe43Sopenharmony_ci    expr=${3:-'sizeof(void *) > 4'}
52871bd4fe43Sopenharmony_ci    test_code cc "" "int test[2*($expr) - 1]" &&
52881bd4fe43Sopenharmony_ci        subarch=$arch64 || subarch=$arch32
52891bd4fe43Sopenharmony_ci    enable $subarch
52901bd4fe43Sopenharmony_ci}
52911bd4fe43Sopenharmony_ci
52921bd4fe43Sopenharmony_cicase "$arch" in
52931bd4fe43Sopenharmony_ci    aarch64|alpha|ia64)
52941bd4fe43Sopenharmony_ci        enabled shared && enable_weak pic
52951bd4fe43Sopenharmony_ci    ;;
52961bd4fe43Sopenharmony_ci    mips)
52971bd4fe43Sopenharmony_ci        check_64bit mips mips64 '_MIPS_SIM > 1'
52981bd4fe43Sopenharmony_ci        enabled shared && enable_weak pic
52991bd4fe43Sopenharmony_ci    ;;
53001bd4fe43Sopenharmony_ci    parisc)
53011bd4fe43Sopenharmony_ci        check_64bit parisc parisc64
53021bd4fe43Sopenharmony_ci        enabled shared && enable_weak pic
53031bd4fe43Sopenharmony_ci    ;;
53041bd4fe43Sopenharmony_ci    ppc)
53051bd4fe43Sopenharmony_ci        check_64bit ppc ppc64
53061bd4fe43Sopenharmony_ci        enabled shared && enable_weak pic
53071bd4fe43Sopenharmony_ci    ;;
53081bd4fe43Sopenharmony_ci    s390)
53091bd4fe43Sopenharmony_ci        check_64bit s390 s390x
53101bd4fe43Sopenharmony_ci        enabled shared && enable_weak pic
53111bd4fe43Sopenharmony_ci    ;;
53121bd4fe43Sopenharmony_ci    sparc)
53131bd4fe43Sopenharmony_ci        check_64bit sparc sparc64
53141bd4fe43Sopenharmony_ci        enabled shared && enable_weak pic
53151bd4fe43Sopenharmony_ci    ;;
53161bd4fe43Sopenharmony_ci    x86)
53171bd4fe43Sopenharmony_ci        check_64bit x86_32 x86_64
53181bd4fe43Sopenharmony_ci        # Treat x32 as x64 for now. Note it also needs pic if shared
53191bd4fe43Sopenharmony_ci        test "$subarch" = "x86_32" && test_cpp_condition stddef.h 'defined(__x86_64__)' &&
53201bd4fe43Sopenharmony_ci            subarch=x86_64 && enable x86_64 && disable x86_32
53211bd4fe43Sopenharmony_ci        if enabled x86_64; then
53221bd4fe43Sopenharmony_ci            enabled shared && enable_weak pic
53231bd4fe43Sopenharmony_ci            objformat=elf64
53241bd4fe43Sopenharmony_ci        fi
53251bd4fe43Sopenharmony_ci    ;;
53261bd4fe43Sopenharmony_ciesac
53271bd4fe43Sopenharmony_ci
53281bd4fe43Sopenharmony_ci# OS specific
53291bd4fe43Sopenharmony_cicase $target_os in
53301bd4fe43Sopenharmony_ci    aix)
53311bd4fe43Sopenharmony_ci        SHFLAGS=-shared
53321bd4fe43Sopenharmony_ci        add_cppflags '-I\$(SRC_PATH)/compat/aix'
53331bd4fe43Sopenharmony_ci        enabled shared && add_ldflags -Wl,-brtl
53341bd4fe43Sopenharmony_ci        arflags='-Xany -r -c'
53351bd4fe43Sopenharmony_ci        striptype=""
53361bd4fe43Sopenharmony_ci        ;;
53371bd4fe43Sopenharmony_ci    android)
53381bd4fe43Sopenharmony_ci        disable symver
53391bd4fe43Sopenharmony_ci        enable section_data_rel_ro
53401bd4fe43Sopenharmony_ci        add_cflags -fPIE
53411bd4fe43Sopenharmony_ci        add_ldexeflags -fPIE -pie
53421bd4fe43Sopenharmony_ci        SLIB_INSTALL_NAME='$(SLIBNAME)'
53431bd4fe43Sopenharmony_ci        SLIB_INSTALL_LINKS=
53441bd4fe43Sopenharmony_ci        SHFLAGS='-shared -Wl,-soname,$(SLIBNAME)'
53451bd4fe43Sopenharmony_ci        ;;
53461bd4fe43Sopenharmony_ci    haiku)
53471bd4fe43Sopenharmony_ci        prefix_default="/boot/common"
53481bd4fe43Sopenharmony_ci        network_extralibs="-lnetwork"
53491bd4fe43Sopenharmony_ci        host_extralibs=
53501bd4fe43Sopenharmony_ci        ;;
53511bd4fe43Sopenharmony_ci    sunos)
53521bd4fe43Sopenharmony_ci        SHFLAGS='-shared -Wl,-h,$$(@F)'
53531bd4fe43Sopenharmony_ci        enabled x86 && append SHFLAGS -mimpure-text
53541bd4fe43Sopenharmony_ci        network_extralibs="-lsocket -lnsl"
53551bd4fe43Sopenharmony_ci        add_cppflags -D__EXTENSIONS__
53561bd4fe43Sopenharmony_ci        # When using suncc to build, the Solaris linker will mark
53571bd4fe43Sopenharmony_ci        # an executable with each instruction set encountered by
53581bd4fe43Sopenharmony_ci        # the Solaris assembler.  As our libraries contain their own
53591bd4fe43Sopenharmony_ci        # guards for processor-specific code, instead suppress
53601bd4fe43Sopenharmony_ci        # generation of the HWCAPS ELF section on Solaris x86 only.
53611bd4fe43Sopenharmony_ci        enabled_all suncc x86 &&
53621bd4fe43Sopenharmony_ci            echo "hwcap_1 = OVERRIDE;" > mapfile &&
53631bd4fe43Sopenharmony_ci            add_ldflags -Wl,-M,mapfile
53641bd4fe43Sopenharmony_ci        nm_default='nm -P -g'
53651bd4fe43Sopenharmony_ci        striptype=""
53661bd4fe43Sopenharmony_ci        version_script='-M'
53671bd4fe43Sopenharmony_ci        VERSION_SCRIPT_POSTPROCESS_CMD='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
53681bd4fe43Sopenharmony_ci        ;;
53691bd4fe43Sopenharmony_ci    netbsd)
53701bd4fe43Sopenharmony_ci        disable symver
53711bd4fe43Sopenharmony_ci        oss_indev_extralibs="-lossaudio"
53721bd4fe43Sopenharmony_ci        oss_outdev_extralibs="-lossaudio"
53731bd4fe43Sopenharmony_ci        enabled gcc || check_ldflags -Wl,-zmuldefs
53741bd4fe43Sopenharmony_ci        ;;
53751bd4fe43Sopenharmony_ci    openbsd|bitrig)
53761bd4fe43Sopenharmony_ci        disable symver
53771bd4fe43Sopenharmony_ci        enable section_data_rel_ro
53781bd4fe43Sopenharmony_ci        striptype=""
53791bd4fe43Sopenharmony_ci        SHFLAGS='-shared'
53801bd4fe43Sopenharmony_ci        SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
53811bd4fe43Sopenharmony_ci        SLIB_INSTALL_LINKS=
53821bd4fe43Sopenharmony_ci        oss_indev_extralibs="-lossaudio"
53831bd4fe43Sopenharmony_ci        oss_outdev_extralibs="-lossaudio"
53841bd4fe43Sopenharmony_ci        ;;
53851bd4fe43Sopenharmony_ci    dragonfly)
53861bd4fe43Sopenharmony_ci        disable symver
53871bd4fe43Sopenharmony_ci        ;;
53881bd4fe43Sopenharmony_ci    freebsd)
53891bd4fe43Sopenharmony_ci        ;;
53901bd4fe43Sopenharmony_ci    bsd/os)
53911bd4fe43Sopenharmony_ci        add_extralibs -lpoll -lgnugetopt
53921bd4fe43Sopenharmony_ci        strip="strip -d"
53931bd4fe43Sopenharmony_ci        ;;
53941bd4fe43Sopenharmony_ci    darwin)
53951bd4fe43Sopenharmony_ci        enabled ppc && add_asflags -force_cpusubtype_ALL
53961bd4fe43Sopenharmony_ci        install_name_dir_default='$(SHLIBDIR)'
53971bd4fe43Sopenharmony_ci        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
53981bd4fe43Sopenharmony_ci        enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
53991bd4fe43Sopenharmony_ci        strip="${strip} -x"
54001bd4fe43Sopenharmony_ci        add_ldflags -Wl,-dynamic,-search_paths_first
54011bd4fe43Sopenharmony_ci        check_cflags -Werror=partial-availability
54021bd4fe43Sopenharmony_ci        SLIBSUF=".dylib"
54031bd4fe43Sopenharmony_ci        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
54041bd4fe43Sopenharmony_ci        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
54051bd4fe43Sopenharmony_ci        enabled x86_64 && objformat="macho64" || objformat="macho32"
54061bd4fe43Sopenharmony_ci        enabled_any pic shared x86_64 ||
54071bd4fe43Sopenharmony_ci            { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
54081bd4fe43Sopenharmony_ci        check_headers dispatch/dispatch.h &&
54091bd4fe43Sopenharmony_ci            add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore'
54101bd4fe43Sopenharmony_ci        if test -n "$sysroot"; then
54111bd4fe43Sopenharmony_ci            is_in -isysroot $cc $CPPFLAGS $CFLAGS || check_cppflags -isysroot $sysroot
54121bd4fe43Sopenharmony_ci            is_in -isysroot $ld $LDFLAGS          || check_ldflags  -isysroot $sysroot
54131bd4fe43Sopenharmony_ci        fi
54141bd4fe43Sopenharmony_ci        version_script='-exported_symbols_list'
54151bd4fe43Sopenharmony_ci        VERSION_SCRIPT_POSTPROCESS_CMD='tr " " "\n" | sed -n /global:/,/local:/p | grep ";" | tr ";" "\n" | sed -E "s/(.+)/_\1/g" | sed -E "s/(.+[^*])$$$$/\1*/"'
54161bd4fe43Sopenharmony_ci        # Workaround for Xcode 11 -fstack-check bug
54171bd4fe43Sopenharmony_ci        if enabled clang; then
54181bd4fe43Sopenharmony_ci            clang_version=$($cc -dumpversion)
54191bd4fe43Sopenharmony_ci            test ${clang_version%%.*} -eq 11 && add_cflags -fno-stack-check
54201bd4fe43Sopenharmony_ci        fi
54211bd4fe43Sopenharmony_ci        ;;
54221bd4fe43Sopenharmony_ci    msys*)
54231bd4fe43Sopenharmony_ci        die "Native MSYS builds are discouraged, please use the MINGW environment."
54241bd4fe43Sopenharmony_ci        ;;
54251bd4fe43Sopenharmony_ci    mingw32*|mingw64*)
54261bd4fe43Sopenharmony_ci        target_os=mingw32
54271bd4fe43Sopenharmony_ci        LIBTARGET=i386
54281bd4fe43Sopenharmony_ci        if enabled x86_64; then
54291bd4fe43Sopenharmony_ci            LIBTARGET="i386:x86-64"
54301bd4fe43Sopenharmony_ci        elif enabled arm; then
54311bd4fe43Sopenharmony_ci            LIBTARGET="arm"
54321bd4fe43Sopenharmony_ci        elif enabled aarch64; then
54331bd4fe43Sopenharmony_ci            LIBTARGET="arm64"
54341bd4fe43Sopenharmony_ci        fi
54351bd4fe43Sopenharmony_ci        if enabled shared; then
54361bd4fe43Sopenharmony_ci            # Cannot build both shared and static libs when using dllimport.
54371bd4fe43Sopenharmony_ci            disable static
54381bd4fe43Sopenharmony_ci        fi
54391bd4fe43Sopenharmony_ci        enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres
54401bd4fe43Sopenharmony_ci        enabled x86_32 && check_ldflags -Wl,--large-address-aware
54411bd4fe43Sopenharmony_ci        shlibdir_default="$bindir_default"
54421bd4fe43Sopenharmony_ci        SLIBPREF=""
54431bd4fe43Sopenharmony_ci        SLIBSUF=".dll"
54441bd4fe43Sopenharmony_ci        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
54451bd4fe43Sopenharmony_ci        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
54461bd4fe43Sopenharmony_ci        if test_cmd lib.exe -list; then
54471bd4fe43Sopenharmony_ci            SLIB_EXTRA_CMD=-'lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
54481bd4fe43Sopenharmony_ci            if enabled x86_64; then
54491bd4fe43Sopenharmony_ci                LIBTARGET=x64
54501bd4fe43Sopenharmony_ci            fi
54511bd4fe43Sopenharmony_ci        else
54521bd4fe43Sopenharmony_ci            SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
54531bd4fe43Sopenharmony_ci        fi
54541bd4fe43Sopenharmony_ci        SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
54551bd4fe43Sopenharmony_ci        SLIB_INSTALL_LINKS=
54561bd4fe43Sopenharmony_ci        SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
54571bd4fe43Sopenharmony_ci        SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
54581bd4fe43Sopenharmony_ci        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)'
54591bd4fe43Sopenharmony_ci        SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--disable-auto-image-base $$(@:$(SLIBSUF)=.def)'
54601bd4fe43Sopenharmony_ci        enabled x86_64 && objformat="win64" || objformat="win32"
54611bd4fe43Sopenharmony_ci        dlltool="${cross_prefix}dlltool"
54621bd4fe43Sopenharmony_ci        ranlib=:
54631bd4fe43Sopenharmony_ci        enable dos_paths
54641bd4fe43Sopenharmony_ci        check_ldflags -Wl,--nxcompat,--dynamicbase
54651bd4fe43Sopenharmony_ci        # Lets work around some stupidity in binutils.
54661bd4fe43Sopenharmony_ci        # ld will strip relocations from executables even though we need them
54671bd4fe43Sopenharmony_ci        # for dynamicbase (ASLR).  Using -pie does retain the reloc section
54681bd4fe43Sopenharmony_ci        # however ld then forgets what the entry point should be (oops) so we
54691bd4fe43Sopenharmony_ci        # have to manually (re)set it.
54701bd4fe43Sopenharmony_ci        if enabled x86_32; then
54711bd4fe43Sopenharmony_ci            disabled debug && add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup
54721bd4fe43Sopenharmony_ci        elif enabled x86_64; then
54731bd4fe43Sopenharmony_ci            disabled debug && add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup
54741bd4fe43Sopenharmony_ci            check_ldflags -Wl,--high-entropy-va # binutils 2.25
54751bd4fe43Sopenharmony_ci            # Set image base >4GB for extra entropy with HEASLR
54761bd4fe43Sopenharmony_ci            add_ldexeflags -Wl,--image-base,0x140000000
54771bd4fe43Sopenharmony_ci            append SHFLAGS -Wl,--image-base,0x180000000
54781bd4fe43Sopenharmony_ci        fi
54791bd4fe43Sopenharmony_ci        ;;
54801bd4fe43Sopenharmony_ci    win32|win64)
54811bd4fe43Sopenharmony_ci        disable symver
54821bd4fe43Sopenharmony_ci        if enabled shared; then
54831bd4fe43Sopenharmony_ci            # Link to the import library instead of the normal static library
54841bd4fe43Sopenharmony_ci            # for shared libs.
54851bd4fe43Sopenharmony_ci            LD_LIB='%.lib'
54861bd4fe43Sopenharmony_ci            # Cannot build both shared and static libs with MSVC or icl.
54871bd4fe43Sopenharmony_ci            disable static
54881bd4fe43Sopenharmony_ci        fi
54891bd4fe43Sopenharmony_ci        enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
54901bd4fe43Sopenharmony_ci        shlibdir_default="$bindir_default"
54911bd4fe43Sopenharmony_ci        SLIBPREF=""
54921bd4fe43Sopenharmony_ci        SLIBSUF=".dll"
54931bd4fe43Sopenharmony_ci        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
54941bd4fe43Sopenharmony_ci        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
54951bd4fe43Sopenharmony_ci        SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
54961bd4fe43Sopenharmony_ci        SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
54971bd4fe43Sopenharmony_ci        SLIB_INSTALL_LINKS=
54981bd4fe43Sopenharmony_ci        SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
54991bd4fe43Sopenharmony_ci        SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
55001bd4fe43Sopenharmony_ci        SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
55011bd4fe43Sopenharmony_ci        enabled x86_64 && objformat="win64" || objformat="win32"
55021bd4fe43Sopenharmony_ci        ranlib=:
55031bd4fe43Sopenharmony_ci        enable dos_paths
55041bd4fe43Sopenharmony_ci        ;;
55051bd4fe43Sopenharmony_ci    cygwin*)
55061bd4fe43Sopenharmony_ci        target_os=cygwin
55071bd4fe43Sopenharmony_ci        shlibdir_default="$bindir_default"
55081bd4fe43Sopenharmony_ci        SLIBPREF="cyg"
55091bd4fe43Sopenharmony_ci        SLIBSUF=".dll"
55101bd4fe43Sopenharmony_ci        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
55111bd4fe43Sopenharmony_ci        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
55121bd4fe43Sopenharmony_ci        SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
55131bd4fe43Sopenharmony_ci        SLIB_INSTALL_LINKS=
55141bd4fe43Sopenharmony_ci        SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
55151bd4fe43Sopenharmony_ci        SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
55161bd4fe43Sopenharmony_ci        enabled x86_64 && objformat="win64" || objformat="win32"
55171bd4fe43Sopenharmony_ci        enable dos_paths
55181bd4fe43Sopenharmony_ci        enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres
55191bd4fe43Sopenharmony_ci        add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
55201bd4fe43Sopenharmony_ci        ;;
55211bd4fe43Sopenharmony_ci    *-dos|freedos|opendos)
55221bd4fe43Sopenharmony_ci        network_extralibs="-lsocket"
55231bd4fe43Sopenharmony_ci        objformat="coff"
55241bd4fe43Sopenharmony_ci        enable dos_paths
55251bd4fe43Sopenharmony_ci        ;;
55261bd4fe43Sopenharmony_ci    linux)
55271bd4fe43Sopenharmony_ci        enable section_data_rel_ro
55281bd4fe43Sopenharmony_ci        enabled_any arm aarch64 && enable_weak linux_perf
55291bd4fe43Sopenharmony_ci        ;;
55301bd4fe43Sopenharmony_ci    irix*)
55311bd4fe43Sopenharmony_ci        target_os=irix
55321bd4fe43Sopenharmony_ci        ranlib="echo ignoring ranlib"
55331bd4fe43Sopenharmony_ci        ;;
55341bd4fe43Sopenharmony_ci    os/2*)
55351bd4fe43Sopenharmony_ci        strip="lxlite -CS"
55361bd4fe43Sopenharmony_ci        striptype=""
55371bd4fe43Sopenharmony_ci        objformat="aout"
55381bd4fe43Sopenharmony_ci        add_cppflags -D_GNU_SOURCE
55391bd4fe43Sopenharmony_ci        add_ldflags -Zomf -Zbin-files -Zargs-wild -Zhigh-mem -Zmap
55401bd4fe43Sopenharmony_ci        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
55411bd4fe43Sopenharmony_ci        LIBSUF="_s.a"
55421bd4fe43Sopenharmony_ci        SLIBPREF=""
55431bd4fe43Sopenharmony_ci        SLIBSUF=".dll"
55441bd4fe43Sopenharmony_ci        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
55451bd4fe43Sopenharmony_ci        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(FULLNAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
55461bd4fe43Sopenharmony_ci        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(FULLNAME).def; \
55471bd4fe43Sopenharmony_ci            echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(FULLNAME).def; \
55481bd4fe43Sopenharmony_ci            echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(FULLNAME).def; \
55491bd4fe43Sopenharmony_ci            echo EXPORTS >> $(SUBDIR)$(FULLNAME).def; \
55501bd4fe43Sopenharmony_ci            emxexp $(OBJS) >> $(SUBDIR)$(FULLNAME).def'
55511bd4fe43Sopenharmony_ci        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.a $(SUBDIR)$(FULLNAME).def; \
55521bd4fe43Sopenharmony_ci            emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.lib $(SUBDIR)$(FULLNAME).def;'
55531bd4fe43Sopenharmony_ci        SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
55541bd4fe43Sopenharmony_ci        SLIB_INSTALL_LINKS=
55551bd4fe43Sopenharmony_ci        SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(FULLNAME)_dll.a $(LIBPREF)$(FULLNAME)_dll.lib'
55561bd4fe43Sopenharmony_ci        enable dos_paths
55571bd4fe43Sopenharmony_ci        enable_weak os2threads
55581bd4fe43Sopenharmony_ci        ;;
55591bd4fe43Sopenharmony_ci    gnu/kfreebsd)
55601bd4fe43Sopenharmony_ci        add_cppflags -D_BSD_SOURCE
55611bd4fe43Sopenharmony_ci        ;;
55621bd4fe43Sopenharmony_ci    gnu)
55631bd4fe43Sopenharmony_ci        ;;
55641bd4fe43Sopenharmony_ci    qnx)
55651bd4fe43Sopenharmony_ci        add_cppflags -D_QNX_SOURCE
55661bd4fe43Sopenharmony_ci        network_extralibs="-lsocket"
55671bd4fe43Sopenharmony_ci        ;;
55681bd4fe43Sopenharmony_ci    symbian)
55691bd4fe43Sopenharmony_ci        SLIBSUF=".dll"
55701bd4fe43Sopenharmony_ci        enable dos_paths
55711bd4fe43Sopenharmony_ci        add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
55721bd4fe43Sopenharmony_ci        add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
55731bd4fe43Sopenharmony_ci        add_ldflags -Wl,--target1-abs,--no-undefined \
55741bd4fe43Sopenharmony_ci                    -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
55751bd4fe43Sopenharmony_ci                    -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
55761bd4fe43Sopenharmony_ci        add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
55771bd4fe43Sopenharmony_ci                      -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
55781bd4fe43Sopenharmony_ci                      -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
55791bd4fe43Sopenharmony_ci        ;;
55801bd4fe43Sopenharmony_ci    minix)
55811bd4fe43Sopenharmony_ci        ;;
55821bd4fe43Sopenharmony_ci    none)
55831bd4fe43Sopenharmony_ci        ;;
55841bd4fe43Sopenharmony_ci    *)
55851bd4fe43Sopenharmony_ci        die "Unknown OS '$target_os'."
55861bd4fe43Sopenharmony_ci        ;;
55871bd4fe43Sopenharmony_ciesac
55881bd4fe43Sopenharmony_ci
55891bd4fe43Sopenharmony_ci# test if creating links works
55901bd4fe43Sopenharmony_cilink_dest=$(mktemp -u $TMPDIR/dest_XXXXXXXX)
55911bd4fe43Sopenharmony_cilink_name=$(mktemp -u $TMPDIR/name_XXXXXXXX)
55921bd4fe43Sopenharmony_cimkdir "$link_dest"
55931bd4fe43Sopenharmony_ci$ln_s "$link_dest" "$link_name"
55941bd4fe43Sopenharmony_citouch "$link_dest/test_file"
55951bd4fe43Sopenharmony_ciif [ "$source_path" != "." ] && [ "$source_path" != "src" ] && ([ ! -d src ] || [ -L src ]) && [ -e "$link_name/test_file" ]; then
55961bd4fe43Sopenharmony_ci    # create link to source path
55971bd4fe43Sopenharmony_ci    [ -e src ] && rm src
55981bd4fe43Sopenharmony_ci    $ln_s "$source_path" src
55991bd4fe43Sopenharmony_ci    source_link=src
56001bd4fe43Sopenharmony_cielse
56011bd4fe43Sopenharmony_ci    # creating directory links doesn't work
56021bd4fe43Sopenharmony_ci    # fall back to using the full source path
56031bd4fe43Sopenharmony_ci    source_link="$source_path"
56041bd4fe43Sopenharmony_cifi
56051bd4fe43Sopenharmony_ci# cleanup
56061bd4fe43Sopenharmony_cirm -r "$link_dest"
56071bd4fe43Sopenharmony_cirm -r "$link_name"
56081bd4fe43Sopenharmony_ci
56091bd4fe43Sopenharmony_ci# determine libc flavour
56101bd4fe43Sopenharmony_ci
56111bd4fe43Sopenharmony_ciprobe_libc(){
56121bd4fe43Sopenharmony_ci    pfx=$1
56131bd4fe43Sopenharmony_ci    pfx_no_=${pfx%_}
56141bd4fe43Sopenharmony_ci    # uclibc defines __GLIBC__, so it needs to be checked before glibc.
56151bd4fe43Sopenharmony_ci    if test_${pfx}cpp_condition features.h "defined __UCLIBC__"; then
56161bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=uclibc
56171bd4fe43Sopenharmony_ci        add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
56181bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition features.h "defined __GLIBC__"; then
56191bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=glibc
56201bd4fe43Sopenharmony_ci        add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
56211bd4fe43Sopenharmony_ci    # MinGW headers can be installed on Cygwin, so check for newlib first.
56221bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
56231bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=newlib
56241bd4fe43Sopenharmony_ci        add_${pfx}cppflags -U__STRICT_ANSI__ -D_XOPEN_SOURCE=600
56251bd4fe43Sopenharmony_ci    # MinGW64 is backwards compatible with MinGW32, so check for it first.
56261bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
56271bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=mingw64
56281bd4fe43Sopenharmony_ci        if test_${pfx}cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then
56291bd4fe43Sopenharmony_ci            add_compat msvcrt/snprintf.o
56301bd4fe43Sopenharmony_ci            add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
56311bd4fe43Sopenharmony_ci        fi
56321bd4fe43Sopenharmony_ci        add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
56331bd4fe43Sopenharmony_ci        eval test \$${pfx_no_}cc_type = "gcc" &&
56341bd4fe43Sopenharmony_ci            add_${pfx}cppflags -D__printf__=__gnu_printf__
56351bd4fe43Sopenharmony_ci        test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" &&
56361bd4fe43Sopenharmony_ci            add_${pfx}cppflags -D_WIN32_WINNT=0x0600
56371bd4fe43Sopenharmony_ci        add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
56381bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION"  ||
56391bd4fe43Sopenharmony_ci         test_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
56401bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=mingw32
56411bd4fe43Sopenharmony_ci        test_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
56421bd4fe43Sopenharmony_ci            (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
56431bd4fe43Sopenharmony_ci            die "ERROR: MinGW32 runtime version must be >= 3.15."
56441bd4fe43Sopenharmony_ci        add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
56451bd4fe43Sopenharmony_ci        test_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700" &&
56461bd4fe43Sopenharmony_ci            add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700
56471bd4fe43Sopenharmony_ci        test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" &&
56481bd4fe43Sopenharmony_ci            add_${pfx}cppflags -D_WIN32_WINNT=0x0600
56491bd4fe43Sopenharmony_ci        eval test \$${pfx_no_}cc_type = "gcc" &&
56501bd4fe43Sopenharmony_ci            add_${pfx}cppflags -D__printf__=__gnu_printf__
56511bd4fe43Sopenharmony_ci        add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
56521bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
56531bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=msvcrt
56541bd4fe43Sopenharmony_ci        if test_${pfx}cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14"; then
56551bd4fe43Sopenharmony_ci            if [ "$pfx" = host_ ]; then
56561bd4fe43Sopenharmony_ci                add_host_cppflags -Dsnprintf=_snprintf
56571bd4fe43Sopenharmony_ci            else
56581bd4fe43Sopenharmony_ci                add_compat strtod.o strtod=avpriv_strtod
56591bd4fe43Sopenharmony_ci                add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf   \
56601bd4fe43Sopenharmony_ci                                             _snprintf=avpriv_snprintf  \
56611bd4fe43Sopenharmony_ci                                             vsnprintf=avpriv_vsnprintf
56621bd4fe43Sopenharmony_ci            fi
56631bd4fe43Sopenharmony_ci        fi
56641bd4fe43Sopenharmony_ci        add_${pfx}cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS
56651bd4fe43Sopenharmony_ci        # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
56661bd4fe43Sopenharmony_ci        # 0x601 by default unless something else is set by the user.
56671bd4fe43Sopenharmony_ci        # This can easily lead to us detecting functions only present
56681bd4fe43Sopenharmony_ci        # in such new versions and producing binaries requiring windows 7.0.
56691bd4fe43Sopenharmony_ci        # Therefore explicitly set the default to Vista unless the user has
56701bd4fe43Sopenharmony_ci        # set something else on the command line.
56711bd4fe43Sopenharmony_ci        # Don't do this if WINAPI_FAMILY is set and is set to a non-desktop
56721bd4fe43Sopenharmony_ci        # family. For these cases, configure is free to use any functions
56731bd4fe43Sopenharmony_ci        # found in the SDK headers by default. (Alternatively, we could force
56741bd4fe43Sopenharmony_ci        # _WIN32_WINNT to 0x0602 in that case.)
56751bd4fe43Sopenharmony_ci        test_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
56761bd4fe43Sopenharmony_ci            { test_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0600; }
56771bd4fe43Sopenharmony_ci#ifdef WINAPI_FAMILY
56781bd4fe43Sopenharmony_ci#include <winapifamily.h>
56791bd4fe43Sopenharmony_ci#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
56801bd4fe43Sopenharmony_ci#error not desktop
56811bd4fe43Sopenharmony_ci#endif
56821bd4fe43Sopenharmony_ci#endif
56831bd4fe43Sopenharmony_ciEOF
56841bd4fe43Sopenharmony_ci        if [ "$pfx" = "" ]; then
56851bd4fe43Sopenharmony_ci            check_func strtoll || add_cflags -Dstrtoll=_strtoi64
56861bd4fe43Sopenharmony_ci            check_func strtoull || add_cflags -Dstrtoull=_strtoui64
56871bd4fe43Sopenharmony_ci        fi
56881bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
56891bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=klibc
56901bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
56911bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=bionic
56921bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition sys/brand.h "defined LABELED_BRAND_NAME"; then
56931bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=solaris
56941bd4fe43Sopenharmony_ci        add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
56951bd4fe43Sopenharmony_ci    elif test_${pfx}cpp_condition sys/version.h "defined __DJGPP__"; then
56961bd4fe43Sopenharmony_ci        eval ${pfx}libc_type=djgpp
56971bd4fe43Sopenharmony_ci        add_cppflags -U__STRICT_ANSI__
56981bd4fe43Sopenharmony_ci        add_cflags "-include $source_path/compat/djgpp/math.h"
56991bd4fe43Sopenharmony_ci        add_compat djgpp/math.o
57001bd4fe43Sopenharmony_ci    fi
57011bd4fe43Sopenharmony_ci    test_${pfx}cc <<EOF
57021bd4fe43Sopenharmony_ci#include <time.h>
57031bd4fe43Sopenharmony_civoid *v = localtime_r;
57041bd4fe43Sopenharmony_ciEOF
57051bd4fe43Sopenharmony_citest "$?" != 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
57061bd4fe43Sopenharmony_ci#include <time.h>
57071bd4fe43Sopenharmony_civoid *v = localtime_r;
57081bd4fe43Sopenharmony_ciEOF
57091bd4fe43Sopenharmony_ci
57101bd4fe43Sopenharmony_ci    eval test -n "\${${pfx}libc_type}" && enable ${pfx}libc_${libc_type}
57111bd4fe43Sopenharmony_ci}
57121bd4fe43Sopenharmony_ci
57131bd4fe43Sopenharmony_ciprobe_libc
57141bd4fe43Sopenharmony_ciprobe_libc host_
57151bd4fe43Sopenharmony_ci
57161bd4fe43Sopenharmony_ci# hacks for compiler/libc/os combinations
57171bd4fe43Sopenharmony_ci
57181bd4fe43Sopenharmony_cicase $libc_type in
57191bd4fe43Sopenharmony_ci    bionic)
57201bd4fe43Sopenharmony_ci        add_compat strtod.o strtod=avpriv_strtod
57211bd4fe43Sopenharmony_ci        ;;
57221bd4fe43Sopenharmony_ciesac
57231bd4fe43Sopenharmony_ci
57241bd4fe43Sopenharmony_cicheck_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
57251bd4fe43Sopenharmony_ci    add_cppflags '-I\$(SRC_PATH)/compat/float'
57261bd4fe43Sopenharmony_ci
57271bd4fe43Sopenharmony_citest_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
57281bd4fe43Sopenharmony_ci
57291bd4fe43Sopenharmony_ciset_default libdir
57301bd4fe43Sopenharmony_ci: ${shlibdir_default:="$libdir"}
57311bd4fe43Sopenharmony_ci: ${pkgconfigdir_default:="$libdir/pkgconfig"}
57321bd4fe43Sopenharmony_ci
57331bd4fe43Sopenharmony_ciset_default $PATHS_LIST
57341bd4fe43Sopenharmony_ciset_default nm
57351bd4fe43Sopenharmony_ci
57361bd4fe43Sopenharmony_cidisabled optimizations || enabled ossfuzz || check_cflags -fomit-frame-pointer
57371bd4fe43Sopenharmony_ci
57381bd4fe43Sopenharmony_cienable_weak_pic() {
57391bd4fe43Sopenharmony_ci    disabled pic && return
57401bd4fe43Sopenharmony_ci    enable pic
57411bd4fe43Sopenharmony_ci    add_cppflags -DPIC
57421bd4fe43Sopenharmony_ci    case "$target_os" in
57431bd4fe43Sopenharmony_ci    mingw*|cygwin*|win*)
57441bd4fe43Sopenharmony_ci        ;;
57451bd4fe43Sopenharmony_ci    *)
57461bd4fe43Sopenharmony_ci        add_cflags -fPIC
57471bd4fe43Sopenharmony_ci        add_asflags -fPIC
57481bd4fe43Sopenharmony_ci        ;;
57491bd4fe43Sopenharmony_ci    esac
57501bd4fe43Sopenharmony_ci}
57511bd4fe43Sopenharmony_ci
57521bd4fe43Sopenharmony_cienabled pic && enable_weak_pic
57531bd4fe43Sopenharmony_ci
57541bd4fe43Sopenharmony_citest_cc <<EOF || die "Symbol mangling check failed."
57551bd4fe43Sopenharmony_ciint ff_extern;
57561bd4fe43Sopenharmony_ciEOF
57571bd4fe43Sopenharmony_cisym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
57581bd4fe43Sopenharmony_ciextern_prefix=${sym%%ff_extern*}
57591bd4fe43Sopenharmony_ci
57601bd4fe43Sopenharmony_ci! disabled inline_asm && check_inline_asm inline_asm '"" ::'
57611bd4fe43Sopenharmony_ci
57621bd4fe43Sopenharmony_cifor restrict_keyword in restrict __restrict__ __restrict ""; do
57631bd4fe43Sopenharmony_ci    test_code cc "" "char * $restrict_keyword p" && break
57641bd4fe43Sopenharmony_cidone
57651bd4fe43Sopenharmony_ci
57661bd4fe43Sopenharmony_cicheck_cc pragma_deprecated "" '_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")'
57671bd4fe43Sopenharmony_ci
57681bd4fe43Sopenharmony_ci# The global variable ensures the bits appear unchanged in the object file.
57691bd4fe43Sopenharmony_citest_cc <<EOF || die "endian test failed"
57701bd4fe43Sopenharmony_ciunsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
57711bd4fe43Sopenharmony_ciEOF
57721bd4fe43Sopenharmony_ciod -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
57731bd4fe43Sopenharmony_ci
57741bd4fe43Sopenharmony_cicheck_cc const_nan math.h "struct { double d; } static const bar[] = { { NAN } }"
57751bd4fe43Sopenharmony_ci
57761bd4fe43Sopenharmony_ciif ! enabled ppc64 || enabled bigendian; then
57771bd4fe43Sopenharmony_ci    disable vsx
57781bd4fe43Sopenharmony_cifi
57791bd4fe43Sopenharmony_ci
57801bd4fe43Sopenharmony_cicheck_gas() {
57811bd4fe43Sopenharmony_ci    log "check_gas using '$as' as AS"
57821bd4fe43Sopenharmony_ci    # :vararg is used on aarch64, arm and ppc altivec
57831bd4fe43Sopenharmony_ci    check_as vararg "
57841bd4fe43Sopenharmony_ci.macro m n, y:vararg=0
57851bd4fe43Sopenharmony_ci\n: .int \y
57861bd4fe43Sopenharmony_ci.endm
57871bd4fe43Sopenharmony_cim x" || return 1
57881bd4fe43Sopenharmony_ci    # .altmacro is only used in arm asm
57891bd4fe43Sopenharmony_ci    ! enabled arm || check_as gnu_as ".altmacro"
57901bd4fe43Sopenharmony_ci}
57911bd4fe43Sopenharmony_ci
57921bd4fe43Sopenharmony_ciif enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then
57931bd4fe43Sopenharmony_ci    nogas=:
57941bd4fe43Sopenharmony_ci    enabled_any arm aarch64 && nogas=die
57951bd4fe43Sopenharmony_ci    enabled_all ppc altivec && [ $target_os_default != aix ] && nogas=warn
57961bd4fe43Sopenharmony_ci    as_noop=-v
57971bd4fe43Sopenharmony_ci
57981bd4fe43Sopenharmony_ci    case $as_type in
57991bd4fe43Sopenharmony_ci        arm*) gaspp_as_type=armasm; as_noop=-h ;;
58001bd4fe43Sopenharmony_ci        gcc)  gaspp_as_type=gas ;;
58011bd4fe43Sopenharmony_ci        *)    gaspp_as_type=$as_type ;;
58021bd4fe43Sopenharmony_ci    esac
58031bd4fe43Sopenharmony_ci
58041bd4fe43Sopenharmony_ci    [ $target_os = "darwin" ] && gaspp_as_type="apple-$gaspp_as_type"
58051bd4fe43Sopenharmony_ci
58061bd4fe43Sopenharmony_ci    test "${as#*gas-preprocessor.pl}" != "$as" ||
58071bd4fe43Sopenharmony_ci    test_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- ${as:=$cc} $as_noop &&
58081bd4fe43Sopenharmony_ci        gas="${gas:=gas-preprocessor.pl} -arch $arch -as-type $gaspp_as_type -- ${as:=$cc}"
58091bd4fe43Sopenharmony_ci
58101bd4fe43Sopenharmony_ci    if ! check_gas ; then
58111bd4fe43Sopenharmony_ci        as=${gas:=$as}
58121bd4fe43Sopenharmony_ci        check_gas || \
58131bd4fe43Sopenharmony_ci            $nogas "GNU assembler not found, install/update gas-preprocessor"
58141bd4fe43Sopenharmony_ci    fi
58151bd4fe43Sopenharmony_ci
58161bd4fe43Sopenharmony_ci    check_as as_func ".func test
58171bd4fe43Sopenharmony_ci                      .endfunc"
58181bd4fe43Sopenharmony_cifi
58191bd4fe43Sopenharmony_ci
58201bd4fe43Sopenharmony_cicheck_inline_asm inline_asm_labels '"1:\n"'
58211bd4fe43Sopenharmony_ci
58221bd4fe43Sopenharmony_cicheck_inline_asm inline_asm_nonlocal_labels '"Label:\n"'
58231bd4fe43Sopenharmony_ci
58241bd4fe43Sopenharmony_ciif enabled aarch64; then
58251bd4fe43Sopenharmony_ci    enabled armv8 && check_insn armv8 'prfm   pldl1strm, [x0]'
58261bd4fe43Sopenharmony_ci    # internal assembler in clang 3.3 does not support this instruction
58271bd4fe43Sopenharmony_ci    enabled neon && check_insn neon 'ext   v0.8B, v0.8B, v1.8B, #1'
58281bd4fe43Sopenharmony_ci    enabled vfp  && check_insn vfp  'fmadd d0,    d0,    d1,    d2'
58291bd4fe43Sopenharmony_ci
58301bd4fe43Sopenharmony_ci    map 'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM
58311bd4fe43Sopenharmony_ci
58321bd4fe43Sopenharmony_cielif enabled alpha; then
58331bd4fe43Sopenharmony_ci
58341bd4fe43Sopenharmony_ci    check_cflags -mieee
58351bd4fe43Sopenharmony_ci
58361bd4fe43Sopenharmony_cielif enabled arm; then
58371bd4fe43Sopenharmony_ci
58381bd4fe43Sopenharmony_ci    enabled msvc && check_cpp_condition thumb stddef.h "defined _M_ARMT"
58391bd4fe43Sopenharmony_ci    test_cpp_condition stddef.h "defined __thumb__" && test_cc <<EOF && enable_weak thumb
58401bd4fe43Sopenharmony_cifloat func(float a, float b){ return a+b; }
58411bd4fe43Sopenharmony_ciEOF
58421bd4fe43Sopenharmony_ci    enabled thumb && check_cflags -mthumb || check_cflags -marm
58431bd4fe43Sopenharmony_ci
58441bd4fe43Sopenharmony_ci    if check_cpp_condition vfp_args stddef.h "defined __ARM_PCS_VFP"; then
58451bd4fe43Sopenharmony_ci        :
58461bd4fe43Sopenharmony_ci    elif check_cpp_condition vfp_args stddef.h "defined _M_ARM_FP && _M_ARM_FP >= 30"; then
58471bd4fe43Sopenharmony_ci        :
58481bd4fe43Sopenharmony_ci    elif ! test_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ]; then
58491bd4fe43Sopenharmony_ci        case "${cross_prefix:-$cc}" in
58501bd4fe43Sopenharmony_ci            *hardfloat*) enable vfp_args; fpabi=vfp ;;
58511bd4fe43Sopenharmony_ci            *) check_ld "cc" vfp_args <<EOF && fpabi=vfp || fpabi=soft ;;
58521bd4fe43Sopenharmony_ci__asm__ (".eabi_attribute 28, 1");
58531bd4fe43Sopenharmony_ciint main(void) { return 0; }
58541bd4fe43Sopenharmony_ciEOF
58551bd4fe43Sopenharmony_ci        esac
58561bd4fe43Sopenharmony_ci        warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
58571bd4fe43Sopenharmony_ci    fi
58581bd4fe43Sopenharmony_ci
58591bd4fe43Sopenharmony_ci    enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
58601bd4fe43Sopenharmony_ci    enabled armv6   && check_insn armv6   'sadd16 r0, r0, r0'
58611bd4fe43Sopenharmony_ci    enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
58621bd4fe43Sopenharmony_ci    enabled neon    && check_insn neon    'vadd.i16 q0, q0, q0'
58631bd4fe43Sopenharmony_ci    enabled vfp     && check_insn vfp     'fadds s0, s0, s0'
58641bd4fe43Sopenharmony_ci    enabled vfpv3   && check_insn vfpv3   'vmov.f32 s0, #1.0'
58651bd4fe43Sopenharmony_ci    enabled setend  && check_insn setend  'setend be'
58661bd4fe43Sopenharmony_ci
58671bd4fe43Sopenharmony_ci    [ $target_os = linux ] || [ $target_os = android ] ||
58681bd4fe43Sopenharmony_ci        map 'enabled_any ${v}_external ${v}_inline || disable $v' \
58691bd4fe43Sopenharmony_ci            $ARCH_EXT_LIST_ARM
58701bd4fe43Sopenharmony_ci
58711bd4fe43Sopenharmony_ci    check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
58721bd4fe43Sopenharmony_ci
58731bd4fe43Sopenharmony_ci    check_as as_arch_directive ".arch armv7-a"
58741bd4fe43Sopenharmony_ci    check_as as_dn_directive   "ra .dn d0.i16"
58751bd4fe43Sopenharmony_ci    check_as as_fpu_directive  ".fpu neon"
58761bd4fe43Sopenharmony_ci
58771bd4fe43Sopenharmony_ci    # llvm's integrated assembler supports .object_arch from llvm 3.5
58781bd4fe43Sopenharmony_ci    [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] &&
58791bd4fe43Sopenharmony_ci        check_as as_object_arch ".object_arch armv4"
58801bd4fe43Sopenharmony_ci
58811bd4fe43Sopenharmony_ci    # MS armasm fails to assemble our PIC constructs
58821bd4fe43Sopenharmony_ci    [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
58831bd4fe43Sopenharmony_ci
58841bd4fe43Sopenharmony_cielif enabled mips; then
58851bd4fe43Sopenharmony_ci
58861bd4fe43Sopenharmony_ci    # Check toolchain ISA level
58871bd4fe43Sopenharmony_ci    if enabled mips64; then
58881bd4fe43Sopenharmony_ci        enabled mips64r6 && check_inline_asm mips64r6 '"dlsa $0, $0, $0, 1"' &&
58891bd4fe43Sopenharmony_ci            disable mips64r2
58901bd4fe43Sopenharmony_ci
58911bd4fe43Sopenharmony_ci        enabled mips64r2 && check_inline_asm mips64r2 '"dext $0, $0, 0, 1"'
58921bd4fe43Sopenharmony_ci
58931bd4fe43Sopenharmony_ci        disable mips32r6 && disable mips32r5 && disable mips32r2
58941bd4fe43Sopenharmony_ci    else
58951bd4fe43Sopenharmony_ci        enabled mips32r6 && check_inline_asm mips32r6 '"aui $0, $0, 0"' &&
58961bd4fe43Sopenharmony_ci            disable mips32r5 && disable mips32r2
58971bd4fe43Sopenharmony_ci
58981bd4fe43Sopenharmony_ci        enabled mips32r5 && check_inline_asm mips32r5 '"eretnc"'
58991bd4fe43Sopenharmony_ci        enabled mips32r2 && check_inline_asm mips32r2 '"ext $0, $0, 0, 1"'
59001bd4fe43Sopenharmony_ci
59011bd4fe43Sopenharmony_ci        disable mips64r6 && disable mips64r5 && disable mips64r2
59021bd4fe43Sopenharmony_ci    fi
59031bd4fe43Sopenharmony_ci
59041bd4fe43Sopenharmony_ci    enabled mipsfpu && check_inline_asm mipsfpu '"cvt.d.l $f0, $f2"'
59051bd4fe43Sopenharmony_ci    enabled mipsfpu && (enabled mips32r5 || enabled mips32r6 || enabled mips64r6) && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f1"' '-mfp64'
59061bd4fe43Sopenharmony_ci
59071bd4fe43Sopenharmony_ci    enabled mipsdsp && check_inline_asm_flags mipsdsp '"addu.qb $t0, $t1, $t2"' '-mdsp'
59081bd4fe43Sopenharmony_ci    enabled mipsdspr2 && check_inline_asm_flags mipsdspr2 '"absq_s.qb $t0, $t1"' '-mdspr2'
59091bd4fe43Sopenharmony_ci
59101bd4fe43Sopenharmony_ci    # MSA and MSA2 can be detected at runtime so we supply extra flags here
59111bd4fe43Sopenharmony_ci    enabled mipsfpu && enabled msa && check_inline_asm msa '"addvi.b $w0, $w1, 1"' '-mmsa' && append MSAFLAGS '-mmsa'
59121bd4fe43Sopenharmony_ci    enabled msa && enabled msa2 && check_inline_asm msa2 '"nxbits.any.b $w0, $w0"' '-mmsa2' && append MSAFLAGS '-mmsa2'
59131bd4fe43Sopenharmony_ci
59141bd4fe43Sopenharmony_ci    # loongson2 have no switch cflag so we can only probe toolchain ability
59151bd4fe43Sopenharmony_ci    enabled loongson2 && check_inline_asm loongson2 '"dmult.g $8, $9, $10"' && disable loongson3
59161bd4fe43Sopenharmony_ci
59171bd4fe43Sopenharmony_ci    # loongson3 is paired with MMI
59181bd4fe43Sopenharmony_ci    enabled loongson3 && check_inline_asm loongson3 '"gsldxc1 $f0, 0($2, $3)"' '-mloongson-ext' && append MMIFLAGS '-mloongson-ext'
59191bd4fe43Sopenharmony_ci
59201bd4fe43Sopenharmony_ci    # MMI can be detected at runtime too
59211bd4fe43Sopenharmony_ci    enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"' '-mloongson-mmi' && append MMIFLAGS '-mloongson-mmi'
59221bd4fe43Sopenharmony_ci
59231bd4fe43Sopenharmony_ci    if enabled bigendian && enabled msa; then
59241bd4fe43Sopenharmony_ci        disable msa
59251bd4fe43Sopenharmony_ci    fi
59261bd4fe43Sopenharmony_ci
59271bd4fe43Sopenharmony_cielif enabled parisc; then
59281bd4fe43Sopenharmony_ci
59291bd4fe43Sopenharmony_ci    if enabled gcc; then
59301bd4fe43Sopenharmony_ci        case $($cc -dumpversion) in
59311bd4fe43Sopenharmony_ci            4.[3-9].*) check_cflags -fno-optimize-sibling-calls ;;
59321bd4fe43Sopenharmony_ci        esac
59331bd4fe43Sopenharmony_ci    fi
59341bd4fe43Sopenharmony_ci
59351bd4fe43Sopenharmony_cielif enabled ppc; then
59361bd4fe43Sopenharmony_ci
59371bd4fe43Sopenharmony_ci    enable local_aligned
59381bd4fe43Sopenharmony_ci
59391bd4fe43Sopenharmony_ci    check_inline_asm dcbzl     '"dcbzl 0, %0" :: "r"(0)'
59401bd4fe43Sopenharmony_ci    check_inline_asm ibm_asm   '"add 0, 0, 0"'
59411bd4fe43Sopenharmony_ci    check_inline_asm ppc4xx    '"maclhw r10, r11, r12"'
59421bd4fe43Sopenharmony_ci    check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
59431bd4fe43Sopenharmony_ci
59441bd4fe43Sopenharmony_ci    if enabled altivec; then
59451bd4fe43Sopenharmony_ci        check_cflags -maltivec -mabi=altivec
59461bd4fe43Sopenharmony_ci
59471bd4fe43Sopenharmony_ci        # check if our compiler supports Motorola AltiVec C API
59481bd4fe43Sopenharmony_ci        check_cc altivec altivec.h "vector signed int v1 = (vector signed int) { 0 };
59491bd4fe43Sopenharmony_ci                                    vector signed int v2 = (vector signed int) { 1 };
59501bd4fe43Sopenharmony_ci                                    v1 = vec_add(v1, v2);"
59511bd4fe43Sopenharmony_ci
59521bd4fe43Sopenharmony_ci        enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
59531bd4fe43Sopenharmony_ci    fi
59541bd4fe43Sopenharmony_ci
59551bd4fe43Sopenharmony_ci    if enabled vsx; then
59561bd4fe43Sopenharmony_ci        check_cflags -mvsx &&
59571bd4fe43Sopenharmony_ci        check_cc vsx altivec.h "int v[4] = { 0 };
59581bd4fe43Sopenharmony_ci                                vector signed int v1 = vec_vsx_ld(0, v);"
59591bd4fe43Sopenharmony_ci    fi
59601bd4fe43Sopenharmony_ci
59611bd4fe43Sopenharmony_ci    if enabled power8; then
59621bd4fe43Sopenharmony_ci        check_cpp_condition power8 "altivec.h" "defined(_ARCH_PWR8)"
59631bd4fe43Sopenharmony_ci    fi
59641bd4fe43Sopenharmony_ci
59651bd4fe43Sopenharmony_cielif enabled x86; then
59661bd4fe43Sopenharmony_ci
59671bd4fe43Sopenharmony_ci    check_builtin rdtsc    intrin.h   "__rdtsc()"
59681bd4fe43Sopenharmony_ci    check_builtin mm_empty mmintrin.h "_mm_empty()"
59691bd4fe43Sopenharmony_ci
59701bd4fe43Sopenharmony_ci    enable local_aligned
59711bd4fe43Sopenharmony_ci
59721bd4fe43Sopenharmony_ci    # check whether EBP is available on x86
59731bd4fe43Sopenharmony_ci    # As 'i' is stored on the stack, this program will crash
59741bd4fe43Sopenharmony_ci    # if the base pointer is used to access it because the
59751bd4fe43Sopenharmony_ci    # base pointer is cleared in the inline assembly code.
59761bd4fe43Sopenharmony_ci    check_exec_crash <<EOF && enable ebp_available
59771bd4fe43Sopenharmony_civolatile int i=0;
59781bd4fe43Sopenharmony_ci__asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
59791bd4fe43Sopenharmony_cireturn i;
59801bd4fe43Sopenharmony_ciEOF
59811bd4fe43Sopenharmony_ci
59821bd4fe43Sopenharmony_ci    # check whether EBX is available on x86
59831bd4fe43Sopenharmony_ci    check_inline_asm ebx_available '""::"b"(0)' &&
59841bd4fe43Sopenharmony_ci        check_inline_asm ebx_available '"":::"%ebx"'
59851bd4fe43Sopenharmony_ci
59861bd4fe43Sopenharmony_ci    # check whether xmm clobbers are supported
59871bd4fe43Sopenharmony_ci    check_inline_asm xmm_clobbers '"":::"%xmm0"'
59881bd4fe43Sopenharmony_ci
59891bd4fe43Sopenharmony_ci    check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test, %eax"' ||
59901bd4fe43Sopenharmony_ci        check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test(%rip), %eax"'
59911bd4fe43Sopenharmony_ci
59921bd4fe43Sopenharmony_ci    # check whether binutils is new enough to compile SSSE3/MMXEXT
59931bd4fe43Sopenharmony_ci    enabled ssse3  && check_inline_asm ssse3_inline  '"pabsw %xmm0, %xmm0"'
59941bd4fe43Sopenharmony_ci    enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
59951bd4fe43Sopenharmony_ci
59961bd4fe43Sopenharmony_ci    probe_x86asm(){
59971bd4fe43Sopenharmony_ci        x86asmexe_probe=$1
59981bd4fe43Sopenharmony_ci        if test_cmd $x86asmexe_probe -v; then
59991bd4fe43Sopenharmony_ci            x86asmexe=$x86asmexe_probe
60001bd4fe43Sopenharmony_ci            x86asm_type=nasm
60011bd4fe43Sopenharmony_ci            x86asm_debug="-g -F dwarf"
60021bd4fe43Sopenharmony_ci            X86ASMDEP=
60031bd4fe43Sopenharmony_ci            X86ASM_DEPFLAGS='-MD $(@:.o=.d)'
60041bd4fe43Sopenharmony_ci        elif test_cmd $x86asmexe_probe --version; then
60051bd4fe43Sopenharmony_ci            x86asmexe=$x86asmexe_probe
60061bd4fe43Sopenharmony_ci            x86asm_type=yasm
60071bd4fe43Sopenharmony_ci            x86asm_debug="-g dwarf2"
60081bd4fe43Sopenharmony_ci            X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)'
60091bd4fe43Sopenharmony_ci            X86ASM_DEPFLAGS=
60101bd4fe43Sopenharmony_ci        fi
60111bd4fe43Sopenharmony_ci        check_x86asm x86asm "movbe ecx, [5]"
60121bd4fe43Sopenharmony_ci    }
60131bd4fe43Sopenharmony_ci
60141bd4fe43Sopenharmony_ci    if ! disabled_any asm mmx x86asm; then
60151bd4fe43Sopenharmony_ci        disable x86asm
60161bd4fe43Sopenharmony_ci        for program in $x86asmexe nasm yasm; do
60171bd4fe43Sopenharmony_ci            probe_x86asm $program && break
60181bd4fe43Sopenharmony_ci        done
60191bd4fe43Sopenharmony_ci        disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build."
60201bd4fe43Sopenharmony_ci        X86ASMFLAGS="-f $objformat"
60211bd4fe43Sopenharmony_ci        enabled pic               && append X86ASMFLAGS "-DPIC"
60221bd4fe43Sopenharmony_ci        test -n "$extern_prefix"  && append X86ASMFLAGS "-DPREFIX"
60231bd4fe43Sopenharmony_ci        case "$objformat" in
60241bd4fe43Sopenharmony_ci            elf*) enabled debug && append X86ASMFLAGS $x86asm_debug ;;
60251bd4fe43Sopenharmony_ci        esac
60261bd4fe43Sopenharmony_ci
60271bd4fe43Sopenharmony_ci        enabled avx512 && check_x86asm avx512_external "vmovdqa32 [eax]{k1}{z}, zmm0"
60281bd4fe43Sopenharmony_ci        enabled avx2   && check_x86asm avx2_external   "vextracti128 xmm0, ymm0, 0"
60291bd4fe43Sopenharmony_ci        enabled xop    && check_x86asm xop_external    "vpmacsdd xmm0, xmm1, xmm2, xmm3"
60301bd4fe43Sopenharmony_ci        enabled fma4   && check_x86asm fma4_external   "vfmaddps ymm0, ymm1, ymm2, ymm3"
60311bd4fe43Sopenharmony_ci        check_x86asm cpunop          "CPU amdnop"
60321bd4fe43Sopenharmony_ci    fi
60331bd4fe43Sopenharmony_ci
60341bd4fe43Sopenharmony_ci    case "$cpu" in
60351bd4fe43Sopenharmony_ci        athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
60361bd4fe43Sopenharmony_ci            disable fast_clz
60371bd4fe43Sopenharmony_ci        ;;
60381bd4fe43Sopenharmony_ci    esac
60391bd4fe43Sopenharmony_ci
60401bd4fe43Sopenharmony_cifi
60411bd4fe43Sopenharmony_ci
60421bd4fe43Sopenharmony_cicheck_cc intrinsics_neon arm_neon.h "int16x8_t test = vdupq_n_s16(0)"
60431bd4fe43Sopenharmony_ci
60441bd4fe43Sopenharmony_cicheck_ldflags -Wl,--as-needed
60451bd4fe43Sopenharmony_cicheck_ldflags -Wl,-z,noexecstack
60461bd4fe43Sopenharmony_ci
60471bd4fe43Sopenharmony_ciif ! disabled network; then
60481bd4fe43Sopenharmony_ci    check_func getaddrinfo $network_extralibs
60491bd4fe43Sopenharmony_ci    check_func inet_aton $network_extralibs
60501bd4fe43Sopenharmony_ci
60511bd4fe43Sopenharmony_ci    check_type netdb.h "struct addrinfo"
60521bd4fe43Sopenharmony_ci    check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
60531bd4fe43Sopenharmony_ci    check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
60541bd4fe43Sopenharmony_ci    check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
60551bd4fe43Sopenharmony_ci    check_type poll.h "struct pollfd"
60561bd4fe43Sopenharmony_ci    check_type netinet/sctp.h "struct sctp_event_subscribe"
60571bd4fe43Sopenharmony_ci    check_struct "sys/socket.h" "struct msghdr" msg_flags
60581bd4fe43Sopenharmony_ci    check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
60591bd4fe43Sopenharmony_ci    check_type netinet/in.h "struct sockaddr_in6"
60601bd4fe43Sopenharmony_ci    check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
60611bd4fe43Sopenharmony_ci    check_type "sys/types.h sys/socket.h" socklen_t
60621bd4fe43Sopenharmony_ci
60631bd4fe43Sopenharmony_ci    # Prefer arpa/inet.h over winsock2
60641bd4fe43Sopenharmony_ci    if check_headers arpa/inet.h ; then
60651bd4fe43Sopenharmony_ci        check_func closesocket
60661bd4fe43Sopenharmony_ci    elif check_headers winsock2.h ; then
60671bd4fe43Sopenharmony_ci        check_func_headers winsock2.h closesocket -lws2 &&
60681bd4fe43Sopenharmony_ci            network_extralibs="-lws2" ||
60691bd4fe43Sopenharmony_ci        { check_func_headers winsock2.h closesocket -lws2_32 &&
60701bd4fe43Sopenharmony_ci            network_extralibs="-lws2_32"; } || disable winsock2_h network
60711bd4fe43Sopenharmony_ci        check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
60721bd4fe43Sopenharmony_ci
60731bd4fe43Sopenharmony_ci        check_type ws2tcpip.h socklen_t
60741bd4fe43Sopenharmony_ci        check_type ws2tcpip.h "struct addrinfo"
60751bd4fe43Sopenharmony_ci        check_type ws2tcpip.h "struct group_source_req"
60761bd4fe43Sopenharmony_ci        check_type ws2tcpip.h "struct ip_mreq_source"
60771bd4fe43Sopenharmony_ci        check_type ws2tcpip.h "struct ipv6_mreq"
60781bd4fe43Sopenharmony_ci        check_type winsock2.h "struct pollfd"
60791bd4fe43Sopenharmony_ci        check_struct winsock2.h "struct sockaddr" sa_len
60801bd4fe43Sopenharmony_ci        check_type ws2tcpip.h "struct sockaddr_in6"
60811bd4fe43Sopenharmony_ci        check_type ws2tcpip.h "struct sockaddr_storage"
60821bd4fe43Sopenharmony_ci    else
60831bd4fe43Sopenharmony_ci        disable network
60841bd4fe43Sopenharmony_ci    fi
60851bd4fe43Sopenharmony_cifi
60861bd4fe43Sopenharmony_ci
60871bd4fe43Sopenharmony_cicheck_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
60881bd4fe43Sopenharmony_cicheck_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
60891bd4fe43Sopenharmony_cicheck_builtin MemoryBarrier windows.h "MemoryBarrier()"
60901bd4fe43Sopenharmony_cicheck_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
60911bd4fe43Sopenharmony_cicheck_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)"
60921bd4fe43Sopenharmony_cicheck_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)"
60931bd4fe43Sopenharmony_cicheck_builtin x264_csp_bgr "stdint.h x264.h" "X264_CSP_BGR"
60941bd4fe43Sopenharmony_ci
60951bd4fe43Sopenharmony_cicase "$custom_allocator" in
60961bd4fe43Sopenharmony_ci    jemalloc)
60971bd4fe43Sopenharmony_ci        # jemalloc by default does not use a prefix
60981bd4fe43Sopenharmony_ci        require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc
60991bd4fe43Sopenharmony_ci    ;;
61001bd4fe43Sopenharmony_ci    tcmalloc)
61011bd4fe43Sopenharmony_ci        require_pkg_config libtcmalloc libtcmalloc gperftools/tcmalloc.h tc_malloc
61021bd4fe43Sopenharmony_ci        malloc_prefix=tc_
61031bd4fe43Sopenharmony_ci    ;;
61041bd4fe43Sopenharmony_ciesac
61051bd4fe43Sopenharmony_ci
61061bd4fe43Sopenharmony_cicheck_func_headers malloc.h _aligned_malloc     && enable aligned_malloc
61071bd4fe43Sopenharmony_cicheck_func  ${malloc_prefix}memalign            && enable memalign
61081bd4fe43Sopenharmony_cicheck_func  ${malloc_prefix}posix_memalign      && enable posix_memalign
61091bd4fe43Sopenharmony_ci
61101bd4fe43Sopenharmony_cicheck_func  access
61111bd4fe43Sopenharmony_cicheck_func_headers stdlib.h arc4random
61121bd4fe43Sopenharmony_cicheck_lib   clock_gettime time.h clock_gettime || check_lib clock_gettime time.h clock_gettime -lrt
61131bd4fe43Sopenharmony_cicheck_func  fcntl
61141bd4fe43Sopenharmony_cicheck_func  fork
61151bd4fe43Sopenharmony_cicheck_func  gethrtime
61161bd4fe43Sopenharmony_cicheck_func  getopt
61171bd4fe43Sopenharmony_cicheck_func  getrusage
61181bd4fe43Sopenharmony_cicheck_func  gettimeofday
61191bd4fe43Sopenharmony_cicheck_func  isatty
61201bd4fe43Sopenharmony_cicheck_func  mkstemp
61211bd4fe43Sopenharmony_cicheck_func  mmap
61221bd4fe43Sopenharmony_cicheck_func  mprotect
61231bd4fe43Sopenharmony_ci# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
61241bd4fe43Sopenharmony_cicheck_func_headers time.h nanosleep || check_lib nanosleep time.h nanosleep -lrt
61251bd4fe43Sopenharmony_cicheck_func  sched_getaffinity
61261bd4fe43Sopenharmony_cicheck_func  setrlimit
61271bd4fe43Sopenharmony_cicheck_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE
61281bd4fe43Sopenharmony_cicheck_func  strerror_r
61291bd4fe43Sopenharmony_cicheck_func  sysconf
61301bd4fe43Sopenharmony_cicheck_func  sysctl
61311bd4fe43Sopenharmony_cicheck_func  usleep
61321bd4fe43Sopenharmony_ci
61331bd4fe43Sopenharmony_cicheck_func_headers conio.h kbhit
61341bd4fe43Sopenharmony_cicheck_func_headers io.h setmode
61351bd4fe43Sopenharmony_cicheck_func_headers lzo/lzo1x.h lzo1x_999_compress
61361bd4fe43Sopenharmony_cicheck_func_headers mach/mach_time.h mach_absolute_time
61371bd4fe43Sopenharmony_cicheck_func_headers stdlib.h getenv
61381bd4fe43Sopenharmony_cicheck_func_headers sys/stat.h lstat
61391bd4fe43Sopenharmony_ci
61401bd4fe43Sopenharmony_cicheck_func_headers windows.h GetModuleHandle
61411bd4fe43Sopenharmony_cicheck_func_headers windows.h GetProcessAffinityMask
61421bd4fe43Sopenharmony_cicheck_func_headers windows.h GetProcessTimes
61431bd4fe43Sopenharmony_cicheck_func_headers windows.h GetStdHandle
61441bd4fe43Sopenharmony_cicheck_func_headers windows.h GetSystemTimeAsFileTime
61451bd4fe43Sopenharmony_cicheck_func_headers windows.h LoadLibrary
61461bd4fe43Sopenharmony_cicheck_func_headers windows.h MapViewOfFile
61471bd4fe43Sopenharmony_cicheck_func_headers windows.h PeekNamedPipe
61481bd4fe43Sopenharmony_cicheck_func_headers windows.h SetConsoleTextAttribute
61491bd4fe43Sopenharmony_cicheck_func_headers windows.h SetConsoleCtrlHandler
61501bd4fe43Sopenharmony_cicheck_func_headers windows.h SetDllDirectory
61511bd4fe43Sopenharmony_cicheck_func_headers windows.h Sleep
61521bd4fe43Sopenharmony_cicheck_func_headers windows.h VirtualAlloc
61531bd4fe43Sopenharmony_cicheck_func_headers glob.h glob
61541bd4fe43Sopenharmony_cienabled xlib &&
61551bd4fe43Sopenharmony_ci    check_lib xlib "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext
61561bd4fe43Sopenharmony_ci
61571bd4fe43Sopenharmony_cicheck_headers direct.h
61581bd4fe43Sopenharmony_cicheck_headers dirent.h
61591bd4fe43Sopenharmony_cicheck_headers dxgidebug.h
61601bd4fe43Sopenharmony_cicheck_headers dxva.h
61611bd4fe43Sopenharmony_cicheck_headers dxva2api.h -D_WIN32_WINNT=0x0600
61621bd4fe43Sopenharmony_cicheck_headers io.h
61631bd4fe43Sopenharmony_cienabled libdrm &&
61641bd4fe43Sopenharmony_ci    check_headers linux/dma-buf.h
61651bd4fe43Sopenharmony_ci
61661bd4fe43Sopenharmony_cicheck_headers linux/perf_event.h
61671bd4fe43Sopenharmony_cicheck_headers libcrystalhd/libcrystalhd_if.h
61681bd4fe43Sopenharmony_cicheck_headers malloc.h
61691bd4fe43Sopenharmony_cicheck_headers mftransform.h
61701bd4fe43Sopenharmony_cicheck_headers net/udplite.h
61711bd4fe43Sopenharmony_cicheck_headers poll.h
61721bd4fe43Sopenharmony_cicheck_headers sys/param.h
61731bd4fe43Sopenharmony_cicheck_headers sys/resource.h
61741bd4fe43Sopenharmony_cicheck_headers sys/select.h
61751bd4fe43Sopenharmony_cicheck_headers sys/time.h
61761bd4fe43Sopenharmony_cicheck_headers sys/un.h
61771bd4fe43Sopenharmony_cicheck_headers termios.h
61781bd4fe43Sopenharmony_cicheck_headers unistd.h
61791bd4fe43Sopenharmony_cicheck_headers valgrind/valgrind.h
61801bd4fe43Sopenharmony_cicheck_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepareToEncodeFrames -framework VideoToolbox
61811bd4fe43Sopenharmony_cicheck_headers windows.h
61821bd4fe43Sopenharmony_cicheck_headers X11/extensions/XvMClib.h
61831bd4fe43Sopenharmony_cicheck_headers asm/types.h
61841bd4fe43Sopenharmony_ci
61851bd4fe43Sopenharmony_ci# it seems there are versions of clang in some distros that try to use the
61861bd4fe43Sopenharmony_ci# gcc headers, which explodes for stdatomic
61871bd4fe43Sopenharmony_ci# so we also check that atomics actually work here
61881bd4fe43Sopenharmony_cicheck_builtin stdatomic stdatomic.h "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0); foo += bar"
61891bd4fe43Sopenharmony_ci
61901bd4fe43Sopenharmony_cicheck_lib advapi32 "windows.h"            RegCloseKey          -ladvapi32
61911bd4fe43Sopenharmony_cicheck_lib bcrypt   "windows.h bcrypt.h"   BCryptGenRandom      -lbcrypt &&
61921bd4fe43Sopenharmony_ci    check_cpp_condition bcrypt bcrypt.h "defined BCRYPT_RNG_ALGORITHM"
61931bd4fe43Sopenharmony_cicheck_lib ole32    "windows.h"            CoTaskMemFree        -lole32
61941bd4fe43Sopenharmony_cicheck_lib shell32  "windows.h shellapi.h" CommandLineToArgvW   -lshell32
61951bd4fe43Sopenharmony_cicheck_lib psapi    "windows.h psapi.h"    GetProcessMemoryInfo -lpsapi
61961bd4fe43Sopenharmony_ci
61971bd4fe43Sopenharmony_cicheck_lib android android/native_window.h ANativeWindow_acquire -landroid
61981bd4fe43Sopenharmony_cicheck_lib mediandk "stdint.h media/NdkImage.h" AImage_delete -lmediandk
61991bd4fe43Sopenharmony_cicheck_lib camera2ndk "stdbool.h stdint.h camera/NdkCameraManager.h" ACameraManager_create -lcamera2ndk
62001bd4fe43Sopenharmony_ci
62011bd4fe43Sopenharmony_cienabled appkit       && check_apple_framework AppKit
62021bd4fe43Sopenharmony_cienabled audiotoolbox && check_apple_framework AudioToolbox
62031bd4fe43Sopenharmony_cienabled avfoundation && check_apple_framework AVFoundation
62041bd4fe43Sopenharmony_cienabled coreimage    && check_apple_framework CoreImage
62051bd4fe43Sopenharmony_cienabled videotoolbox && check_apple_framework VideoToolbox
62061bd4fe43Sopenharmony_ci
62071bd4fe43Sopenharmony_cicheck_apple_framework CoreFoundation
62081bd4fe43Sopenharmony_cicheck_apple_framework CoreMedia
62091bd4fe43Sopenharmony_cicheck_apple_framework CoreVideo
62101bd4fe43Sopenharmony_cicheck_apple_framework CoreAudio
62111bd4fe43Sopenharmony_ci
62121bd4fe43Sopenharmony_cienabled avfoundation && {
62131bd4fe43Sopenharmony_ci    disable coregraphics applicationservices
62141bd4fe43Sopenharmony_ci    check_lib coregraphics        CoreGraphics/CoreGraphics.h               CGGetActiveDisplayList "-framework CoreGraphics" ||
62151bd4fe43Sopenharmony_ci    check_lib applicationservices ApplicationServices/ApplicationServices.h CGGetActiveDisplayList "-framework ApplicationServices"; }
62161bd4fe43Sopenharmony_ci
62171bd4fe43Sopenharmony_cienabled videotoolbox && {
62181bd4fe43Sopenharmony_ci    check_lib coreservices CoreServices/CoreServices.h UTGetOSTypeFromString "-framework CoreServices"
62191bd4fe43Sopenharmony_ci    check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVC "-framework CoreMedia"
62201bd4fe43Sopenharmony_ci    check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVCWithAlpha "-framework CoreMedia"
62211bd4fe43Sopenharmony_ci    check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange "-framework CoreVideo"
62221bd4fe43Sopenharmony_ci    check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ "-framework CoreVideo"
62231bd4fe43Sopenharmony_ci    check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_ITU_R_2100_HLG "-framework CoreVideo"
62241bd4fe43Sopenharmony_ci    check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_Linear "-framework CoreVideo"
62251bd4fe43Sopenharmony_ci}
62261bd4fe43Sopenharmony_ci
62271bd4fe43Sopenharmony_cicheck_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
62281bd4fe43Sopenharmony_ci
62291bd4fe43Sopenharmony_cicheck_type "windows.h dxva.h" "DXVA_PicParams_AV1" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
62301bd4fe43Sopenharmony_cicheck_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
62311bd4fe43Sopenharmony_cicheck_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
62321bd4fe43Sopenharmony_cicheck_type "windows.h d3d11.h" "ID3D11VideoDecoder"
62331bd4fe43Sopenharmony_cicheck_type "windows.h d3d11.h" "ID3D11VideoContext"
62341bd4fe43Sopenharmony_cicheck_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
62351bd4fe43Sopenharmony_cicheck_func_headers mfapi.h MFCreateAlignedMemoryBuffer -lmfplat
62361bd4fe43Sopenharmony_ci
62371bd4fe43Sopenharmony_cicheck_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
62381bd4fe43Sopenharmony_cicheck_type "vdpau/vdpau.h" "VdpPictureInfoVP9"
62391bd4fe43Sopenharmony_ci
62401bd4fe43Sopenharmony_ciif [ -z "$nvccflags" ]; then
62411bd4fe43Sopenharmony_ci    nvccflags=$nvccflags_default
62421bd4fe43Sopenharmony_cifi
62431bd4fe43Sopenharmony_ci
62441bd4fe43Sopenharmony_ciif enabled x86_64 || enabled ppc64 || enabled aarch64; then
62451bd4fe43Sopenharmony_ci    nvccflags="$nvccflags -m64"
62461bd4fe43Sopenharmony_cielse
62471bd4fe43Sopenharmony_ci    nvccflags="$nvccflags -m32"
62481bd4fe43Sopenharmony_cifi
62491bd4fe43Sopenharmony_ci
62501bd4fe43Sopenharmony_ciif enabled cuda_nvcc; then
62511bd4fe43Sopenharmony_ci    nvccflags="$nvccflags -ptx"
62521bd4fe43Sopenharmony_cielse
62531bd4fe43Sopenharmony_ci    nvccflags="$nvccflags -S -nocudalib -nocudainc --cuda-device-only -Wno-c++11-narrowing -include ${source_link}/compat/cuda/cuda_runtime.h"
62541bd4fe43Sopenharmony_ci    check_nvcc cuda_llvm
62551bd4fe43Sopenharmony_cifi
62561bd4fe43Sopenharmony_ci
62571bd4fe43Sopenharmony_ciif ! disabled ffnvcodec; then
62581bd4fe43Sopenharmony_ci    ffnv_hdr_list="ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h"
62591bd4fe43Sopenharmony_ci    check_pkg_config ffnvcodec "ffnvcodec >= 9.1.23.1" "$ffnv_hdr_list" "" || \
62601bd4fe43Sopenharmony_ci      check_pkg_config ffnvcodec "ffnvcodec >= 9.0.18.3 ffnvcodec < 9.1" "$ffnv_hdr_list" "" || \
62611bd4fe43Sopenharmony_ci      check_pkg_config ffnvcodec "ffnvcodec >= 8.2.15.10 ffnvcodec < 8.3" "$ffnv_hdr_list" "" || \
62621bd4fe43Sopenharmony_ci      check_pkg_config ffnvcodec "ffnvcodec >= 8.1.24.11 ffnvcodec < 8.2" "$ffnv_hdr_list" ""
62631bd4fe43Sopenharmony_cifi
62641bd4fe43Sopenharmony_ci
62651bd4fe43Sopenharmony_cicheck_cpp_condition winrt windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)"
62661bd4fe43Sopenharmony_ci
62671bd4fe43Sopenharmony_ciif ! disabled w32threads && ! enabled pthreads; then
62681bd4fe43Sopenharmony_ci    check_func_headers "windows.h process.h" _beginthreadex &&
62691bd4fe43Sopenharmony_ci        check_type "windows.h" CONDITION_VARIABLE &&
62701bd4fe43Sopenharmony_ci        check_type "windows.h" INIT_ONCE &&
62711bd4fe43Sopenharmony_ci        enable w32threads || disable w32threads
62721bd4fe43Sopenharmony_ci    if ! enabled w32threads && enabled winrt; then
62731bd4fe43Sopenharmony_ci        check_func_headers "windows.h" CreateThread &&
62741bd4fe43Sopenharmony_ci            enable w32threads || disable w32threads
62751bd4fe43Sopenharmony_ci    fi
62761bd4fe43Sopenharmony_cifi
62771bd4fe43Sopenharmony_ci
62781bd4fe43Sopenharmony_ci# check for some common methods of building with pthread support
62791bd4fe43Sopenharmony_ci# do this before the optional library checks as some of them require pthreads
62801bd4fe43Sopenharmony_ciif ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
62811bd4fe43Sopenharmony_ci    if check_lib pthreads pthread.h pthread_join   -pthread &&
62821bd4fe43Sopenharmony_ci       check_lib pthreads pthread.h pthread_create -pthread; then
62831bd4fe43Sopenharmony_ci        add_cflags -pthread
62841bd4fe43Sopenharmony_ci    elif check_lib pthreads pthread.h pthread_join   -pthreads &&
62851bd4fe43Sopenharmony_ci         check_lib pthreads pthread.h pthread_create -pthreads; then
62861bd4fe43Sopenharmony_ci        add_cflags -pthreads
62871bd4fe43Sopenharmony_ci    elif check_lib pthreads pthread.h pthread_join   -ldl -pthread &&
62881bd4fe43Sopenharmony_ci         check_lib pthreads pthread.h pthread_create -ldl -pthread; then
62891bd4fe43Sopenharmony_ci        add_cflags -ldl -pthread
62901bd4fe43Sopenharmony_ci    elif check_lib pthreads pthread.h pthread_join   -lpthreadGC2 &&
62911bd4fe43Sopenharmony_ci         check_lib pthreads pthread.h pthread_create -lpthreadGC2; then
62921bd4fe43Sopenharmony_ci        :
62931bd4fe43Sopenharmony_ci    elif check_lib pthreads pthread.h pthread_join   -lpthread &&
62941bd4fe43Sopenharmony_ci         check_lib pthreads pthread.h pthread_create -lpthread; then
62951bd4fe43Sopenharmony_ci        :
62961bd4fe43Sopenharmony_ci    elif check_func pthread_join && check_func pthread_create; then
62971bd4fe43Sopenharmony_ci        enable pthreads
62981bd4fe43Sopenharmony_ci    fi
62991bd4fe43Sopenharmony_ci    check_cc pthreads "pthread.h" "static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER"
63001bd4fe43Sopenharmony_ci
63011bd4fe43Sopenharmony_ci    if enabled pthreads; then
63021bd4fe43Sopenharmony_ci        check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" $pthreads_extralibs
63031bd4fe43Sopenharmony_ci        check_func pthread_cancel $pthreads_extralibs
63041bd4fe43Sopenharmony_ci    fi
63051bd4fe43Sopenharmony_cifi
63061bd4fe43Sopenharmony_ci
63071bd4fe43Sopenharmony_cienabled  zlib && { check_pkg_config zlib zlib "zlib.h" zlibVersion ||
63081bd4fe43Sopenharmony_ci                   check_lib zlib   zlib.h      zlibVersion    -lz; }
63091bd4fe43Sopenharmony_cienabled bzlib && check_lib bzlib bzlib.h BZ2_bzlibVersion    -lbz2
63101bd4fe43Sopenharmony_cienabled  lzma && check_lib lzma   lzma.h lzma_version_number -llzma
63111bd4fe43Sopenharmony_ci
63121bd4fe43Sopenharmony_ci# On some systems dynamic loading requires no extra linker flags
63131bd4fe43Sopenharmony_cicheck_lib libdl dlfcn.h "dlopen dlsym" || check_lib libdl dlfcn.h "dlopen dlsym" -ldl
63141bd4fe43Sopenharmony_ci
63151bd4fe43Sopenharmony_cicheck_lib libm math.h sin -lm
63161bd4fe43Sopenharmony_ci
63171bd4fe43Sopenharmony_ciatan2f_args=2
63181bd4fe43Sopenharmony_cicopysign_args=2
63191bd4fe43Sopenharmony_cihypot_args=2
63201bd4fe43Sopenharmony_cildexpf_args=2
63211bd4fe43Sopenharmony_cipowf_args=2
63221bd4fe43Sopenharmony_ci
63231bd4fe43Sopenharmony_cifor func in $MATH_FUNCS; do
63241bd4fe43Sopenharmony_ci    eval check_mathfunc $func \${${func}_args:-1} $libm_extralibs
63251bd4fe43Sopenharmony_cidone
63261bd4fe43Sopenharmony_ci
63271bd4fe43Sopenharmony_cifor func in $COMPLEX_FUNCS; do
63281bd4fe43Sopenharmony_ci    eval check_complexfunc $func \${${func}_args:-1}
63291bd4fe43Sopenharmony_cidone
63301bd4fe43Sopenharmony_ci
63311bd4fe43Sopenharmony_ci# these are off by default, so fail if requested and not available
63321bd4fe43Sopenharmony_cienabled avisynth          && require_headers "avisynth/avisynth_c.h"
63331bd4fe43Sopenharmony_cienabled cuda_nvcc         && { check_nvcc cuda_nvcc || die "ERROR: failed checking for nvcc."; }
63341bd4fe43Sopenharmony_cienabled chromaprint       && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint
63351bd4fe43Sopenharmony_cienabled decklink          && { require_headers DeckLinkAPI.h &&
63361bd4fe43Sopenharmony_ci                               { test_cpp_condition DeckLinkAPIVersion.h "BLACKMAGIC_DECKLINK_API_VERSION >= 0x0a0a0000" || die "ERROR: Decklink API version must be >= 10.10"; } }
63371bd4fe43Sopenharmony_cienabled frei0r            && require_headers "frei0r.h dlfcn.h"
63381bd4fe43Sopenharmony_cienabled gmp               && require gmp gmp.h mpz_export -lgmp
63391bd4fe43Sopenharmony_cienabled gnutls            && require_pkg_config gnutls gnutls gnutls/gnutls.h gnutls_global_init
63401bd4fe43Sopenharmony_cienabled jni               && { [ $target_os = "android" ] && check_headers jni.h && enabled pthreads || die "ERROR: jni not found"; }
63411bd4fe43Sopenharmony_cienabled ladspa            && require_headers "ladspa.h dlfcn.h"
63421bd4fe43Sopenharmony_cienabled libaom            && require_pkg_config libaom "aom >= 1.0.0" aom/aom_codec.h aom_codec_version
63431bd4fe43Sopenharmony_cienabled libaribb24        && { check_pkg_config libaribb24 "aribb24 > 1.0.3" "aribb24/aribb24.h" arib_instance_new ||
63441bd4fe43Sopenharmony_ci                               { enabled gpl && require_pkg_config libaribb24 aribb24 "aribb24/aribb24.h" arib_instance_new; } ||
63451bd4fe43Sopenharmony_ci                               die "ERROR: libaribb24 requires version higher than 1.0.3 or --enable-gpl."; }
63461bd4fe43Sopenharmony_cienabled lv2               && require_pkg_config lv2 lilv-0 "lilv/lilv.h" lilv_world_new
63471bd4fe43Sopenharmony_cienabled libiec61883       && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
63481bd4fe43Sopenharmony_cienabled libass            && require_pkg_config libass libass ass/ass.h ass_library_init
63491bd4fe43Sopenharmony_cienabled libbluray         && require_pkg_config libbluray libbluray libbluray/bluray.h bd_open
63501bd4fe43Sopenharmony_cienabled libbs2b           && require_pkg_config libbs2b libbs2b bs2b.h bs2b_open
63511bd4fe43Sopenharmony_cienabled libcelt           && require libcelt celt/celt.h celt_decode -lcelt0 &&
63521bd4fe43Sopenharmony_ci                             { check_lib libcelt celt/celt.h celt_decoder_create_custom -lcelt0 ||
63531bd4fe43Sopenharmony_ci                               die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
63541bd4fe43Sopenharmony_cienabled libcaca           && require_pkg_config libcaca caca caca.h caca_create_canvas
63551bd4fe43Sopenharmony_cienabled libcodec2         && require libcodec2 codec2/codec2.h codec2_create -lcodec2
63561bd4fe43Sopenharmony_cienabled libdav1d          && require_pkg_config libdav1d "dav1d >= 0.5.0" "dav1d/dav1d.h" dav1d_version
63571bd4fe43Sopenharmony_cienabled libdavs2          && require_pkg_config libdavs2 "davs2 >= 1.6.0" davs2.h davs2_decoder_open
63581bd4fe43Sopenharmony_cienabled libdc1394         && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new
63591bd4fe43Sopenharmony_cienabled libdrm            && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion
63601bd4fe43Sopenharmony_cienabled libfdk_aac        && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
63611bd4fe43Sopenharmony_ci                               { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
63621bd4fe43Sopenharmony_ci                                 warn "using libfdk without pkg-config"; } }
63631bd4fe43Sopenharmony_ciflite_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"
63641bd4fe43Sopenharmony_cienabled libflite          && require libflite "flite/flite.h" flite_init $flite_extralibs
63651bd4fe43Sopenharmony_cienabled fontconfig        && enable libfontconfig
63661bd4fe43Sopenharmony_cienabled libfontconfig     && require_pkg_config libfontconfig fontconfig "fontconfig/fontconfig.h" FcInit
63671bd4fe43Sopenharmony_cienabled libfreetype       && require_pkg_config libfreetype freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
63681bd4fe43Sopenharmony_cienabled libfribidi        && require_pkg_config libfribidi fribidi fribidi.h fribidi_version_info
63691bd4fe43Sopenharmony_cienabled 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++
63701bd4fe43Sopenharmony_cienabled libgme            && { check_pkg_config libgme libgme gme/gme.h gme_new_emu ||
63711bd4fe43Sopenharmony_ci                               require libgme gme/gme.h gme_new_emu -lgme -lstdc++; }
63721bd4fe43Sopenharmony_cienabled libgsm            && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
63731bd4fe43Sopenharmony_ci                                   check_lib libgsm "${gsm_hdr}" gsm_create -lgsm && break;
63741bd4fe43Sopenharmony_ci                               done || die "ERROR: libgsm not found"; }
63751bd4fe43Sopenharmony_cienabled libilbc           && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc $pthreads_extralibs
63761bd4fe43Sopenharmony_cienabled libklvanc         && require libklvanc libklvanc/vanc.h klvanc_context_create -lklvanc
63771bd4fe43Sopenharmony_cienabled libkvazaar        && require_pkg_config libkvazaar "kvazaar >= 0.8.1" kvazaar.h kvz_api_get
63781bd4fe43Sopenharmony_cienabled liblensfun        && require_pkg_config liblensfun lensfun lensfun.h lf_db_new
63791bd4fe43Sopenharmony_ci# While it may appear that require is being used as a pkg-config
63801bd4fe43Sopenharmony_ci# fallback for libmfx, it is actually being used to detect a different
63811bd4fe43Sopenharmony_ci# installation route altogether.  If libmfx is installed via the Intel
63821bd4fe43Sopenharmony_ci# Media SDK or Intel Media Server Studio, these don't come with
63831bd4fe43Sopenharmony_ci# pkg-config support.  Instead, users should make sure that the build
63841bd4fe43Sopenharmony_ci# can find the libraries and headers through other means.
63851bd4fe43Sopenharmony_cienabled libmfx            && { check_pkg_config libmfx libmfx "mfx/mfxvideo.h" MFXInit ||
63861bd4fe43Sopenharmony_ci                               { require libmfx "mfx/mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } }
63871bd4fe43Sopenharmony_ciif enabled libmfx; then
63881bd4fe43Sopenharmony_ci   check_cc MFX_CODEC_VP9 "mfx/mfxvp9.h mfx/mfxstructures.h" "MFX_CODEC_VP9"
63891bd4fe43Sopenharmony_cifi
63901bd4fe43Sopenharmony_ci
63911bd4fe43Sopenharmony_cienabled libmodplug        && require_pkg_config libmodplug libmodplug libmodplug/modplug.h ModPlug_Load
63921bd4fe43Sopenharmony_cienabled libmp3lame        && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame $libm_extralibs
63931bd4fe43Sopenharmony_cienabled libmysofa         && { check_pkg_config libmysofa libmysofa mysofa.h mysofa_neighborhood_init_withstepdefine ||
63941bd4fe43Sopenharmony_ci                               require libmysofa mysofa.h mysofa_neighborhood_init_withstepdefine -lmysofa $zlib_extralibs; }
63951bd4fe43Sopenharmony_cienabled libnpp            && { check_lib libnpp npp.h nppGetLibVersion -lnppig -lnppicc -lnppc -lnppidei ||
63961bd4fe43Sopenharmony_ci                               check_lib libnpp npp.h nppGetLibVersion -lnppi -lnppc -lnppidei ||
63971bd4fe43Sopenharmony_ci                               die "ERROR: libnpp not found"; }
63981bd4fe43Sopenharmony_cienabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
63991bd4fe43Sopenharmony_cienabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
64001bd4fe43Sopenharmony_cienabled libopencv         && { check_headers opencv2/core/core_c.h &&
64011bd4fe43Sopenharmony_ci                               { check_pkg_config libopencv opencv opencv2/core/core_c.h cvCreateImageHeader ||
64021bd4fe43Sopenharmony_ci                                 require libopencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
64031bd4fe43Sopenharmony_ci                               require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; }
64041bd4fe43Sopenharmony_cienabled libopenh264       && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
64051bd4fe43Sopenharmony_cienabled libopenjpeg       && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version ||
64061bd4fe43Sopenharmony_ci                               { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
64071bd4fe43Sopenharmony_cienabled libopenmpt        && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
64081bd4fe43Sopenharmony_cienabled libopenvino       && require libopenvino c_api/ie_c_api.h ie_c_api_version -linference_engine_c_api
64091bd4fe43Sopenharmony_cienabled libopus           && {
64101bd4fe43Sopenharmony_ci    enabled libopus_decoder && {
64111bd4fe43Sopenharmony_ci        require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
64121bd4fe43Sopenharmony_ci    }
64131bd4fe43Sopenharmony_ci    enabled libopus_encoder && {
64141bd4fe43Sopenharmony_ci        require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
64151bd4fe43Sopenharmony_ci    }
64161bd4fe43Sopenharmony_ci}
64171bd4fe43Sopenharmony_cienabled libpulse          && require_pkg_config libpulse libpulse pulse/pulseaudio.h pa_context_new
64181bd4fe43Sopenharmony_cienabled librabbitmq       && require_pkg_config librabbitmq "librabbitmq >= 0.7.1" amqp.h amqp_new_connection
64191bd4fe43Sopenharmony_cienabled librav1e          && require_pkg_config librav1e "rav1e >= 0.4.0" rav1e.h rav1e_context_new
64201bd4fe43Sopenharmony_cienabled librist           && require_pkg_config librist "librist >= 0.2" librist/librist.h rist_receiver_create
64211bd4fe43Sopenharmony_cienabled librsvg           && require_pkg_config librsvg librsvg-2.0 librsvg-2.0/librsvg/rsvg.h rsvg_handle_render_cairo
64221bd4fe43Sopenharmony_cienabled librtmp           && require_pkg_config librtmp librtmp librtmp/rtmp.h RTMP_Socket
64231bd4fe43Sopenharmony_cienabled librubberband     && require_pkg_config librubberband "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new -lstdc++ && append librubberband_extralibs "-lstdc++"
64241bd4fe43Sopenharmony_cienabled libshine          && require_pkg_config libshine shine shine/layer3.h shine_encode_buffer
64251bd4fe43Sopenharmony_cienabled libsmbclient      && { check_pkg_config libsmbclient smbclient libsmbclient.h smbc_init ||
64261bd4fe43Sopenharmony_ci                               require libsmbclient libsmbclient.h smbc_init -lsmbclient; }
64271bd4fe43Sopenharmony_cienabled libsnappy         && require libsnappy snappy-c.h snappy_compress -lsnappy -lstdc++
64281bd4fe43Sopenharmony_cienabled libsoxr           && require libsoxr soxr.h soxr_create -lsoxr
64291bd4fe43Sopenharmony_cienabled libssh            && require_pkg_config libssh libssh libssh/sftp.h sftp_init
64301bd4fe43Sopenharmony_cienabled libspeex          && require_pkg_config libspeex speex speex/speex.h speex_decoder_init
64311bd4fe43Sopenharmony_cienabled libsrt            && require_pkg_config libsrt "srt >= 1.3.0" srt/srt.h srt_socket
64321bd4fe43Sopenharmony_cienabled libsvtav1         && require_pkg_config libsvtav1 "SvtAv1Enc >= 0.8.4" EbSvtAv1Enc.h svt_av1_enc_init_handle
64331bd4fe43Sopenharmony_cienabled libtensorflow     && require libtensorflow tensorflow/c/c_api.h TF_Version -ltensorflow
64341bd4fe43Sopenharmony_cienabled libtesseract      && require_pkg_config libtesseract tesseract tesseract/capi.h TessBaseAPICreate
64351bd4fe43Sopenharmony_cienabled libtheora         && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
64361bd4fe43Sopenharmony_cienabled libtls            && require_pkg_config libtls libtls tls.h tls_configure
64371bd4fe43Sopenharmony_cienabled libtwolame        && require libtwolame twolame.h twolame_init -ltwolame &&
64381bd4fe43Sopenharmony_ci                             { check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
64391bd4fe43Sopenharmony_ci                               die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
64401bd4fe43Sopenharmony_cienabled libuavs3d         && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode
64411bd4fe43Sopenharmony_cienabled libv4l2           && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
64421bd4fe43Sopenharmony_cienabled libvidstab        && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
64431bd4fe43Sopenharmony_cienabled libvmaf           && require_pkg_config libvmaf "libvmaf >= 1.5.2" libvmaf.h compute_vmaf
64441bd4fe43Sopenharmony_cienabled libvo_amrwbenc    && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
64451bd4fe43Sopenharmony_cienabled libvorbis         && require_pkg_config libvorbis vorbis vorbis/codec.h vorbis_info_init &&
64461bd4fe43Sopenharmony_ci                             require_pkg_config libvorbisenc vorbisenc vorbis/vorbisenc.h vorbis_encode_init
64471bd4fe43Sopenharmony_ci
64481bd4fe43Sopenharmony_cienabled libvpx            && {
64491bd4fe43Sopenharmony_ci    enabled libvpx_vp8_decoder && {
64501bd4fe43Sopenharmony_ci        check_pkg_config libvpx_vp8_decoder "vpx >= 1.4.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx ||
64511bd4fe43Sopenharmony_ci            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"
64521bd4fe43Sopenharmony_ci    }
64531bd4fe43Sopenharmony_ci    enabled libvpx_vp8_encoder && {
64541bd4fe43Sopenharmony_ci        check_pkg_config libvpx_vp8_encoder "vpx >= 1.4.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx ||
64551bd4fe43Sopenharmony_ci            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"
64561bd4fe43Sopenharmony_ci    }
64571bd4fe43Sopenharmony_ci    enabled libvpx_vp9_decoder && {
64581bd4fe43Sopenharmony_ci        check_pkg_config libvpx_vp9_decoder "vpx >= 1.4.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx ||
64591bd4fe43Sopenharmony_ci            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"
64601bd4fe43Sopenharmony_ci    }
64611bd4fe43Sopenharmony_ci    enabled libvpx_vp9_encoder && {
64621bd4fe43Sopenharmony_ci        check_pkg_config libvpx_vp9_encoder "vpx >= 1.4.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx ||
64631bd4fe43Sopenharmony_ci            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"
64641bd4fe43Sopenharmony_ci    }
64651bd4fe43Sopenharmony_ci    if disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder; then
64661bd4fe43Sopenharmony_ci        die "libvpx enabled but no supported decoders found"
64671bd4fe43Sopenharmony_ci    fi
64681bd4fe43Sopenharmony_ci}
64691bd4fe43Sopenharmony_ci
64701bd4fe43Sopenharmony_cienabled libwebp           && {
64711bd4fe43Sopenharmony_ci    enabled libwebp_encoder      && require_pkg_config libwebp "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
64721bd4fe43Sopenharmony_ci    enabled libwebp_anim_encoder && check_pkg_config libwebp_anim_encoder "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit; }
64731bd4fe43Sopenharmony_cienabled libx264           && { check_pkg_config libx264 x264 "stdint.h x264.h" x264_encoder_encode ||
64741bd4fe43Sopenharmony_ci                               { require libx264 "stdint.h x264.h" x264_encoder_encode "-lx264 $pthreads_extralibs $libm_extralibs" &&
64751bd4fe43Sopenharmony_ci                                 warn "using libx264 without pkg-config"; } } &&
64761bd4fe43Sopenharmony_ci                             require_cpp_condition libx264 x264.h "X264_BUILD >= 118" &&
64771bd4fe43Sopenharmony_ci                             check_cpp_condition libx262 x264.h "X264_MPEG2"
64781bd4fe43Sopenharmony_cienabled libx265           && require_pkg_config libx265 x265 x265.h x265_api_get &&
64791bd4fe43Sopenharmony_ci                             require_cpp_condition libx265 x265.h "X265_BUILD >= 70"
64801bd4fe43Sopenharmony_cienabled libxavs           && require libxavs "stdint.h xavs.h" xavs_encoder_encode "-lxavs $pthreads_extralibs $libm_extralibs"
64811bd4fe43Sopenharmony_cienabled libxavs2          && require_pkg_config libxavs2 "xavs2 >= 1.3.0" "stdint.h xavs2.h" xavs2_api_get
64821bd4fe43Sopenharmony_cienabled libxvid           && require libxvid xvid.h xvid_global -lxvidcore
64831bd4fe43Sopenharmony_cienabled libzimg           && require_pkg_config libzimg "zimg >= 2.7.0" zimg.h zimg_get_api_version
64841bd4fe43Sopenharmony_cienabled libzmq            && require_pkg_config libzmq "libzmq >= 4.2.1" zmq.h zmq_ctx_new
64851bd4fe43Sopenharmony_cienabled libzvbi           && require_pkg_config libzvbi zvbi-0.2 libzvbi.h vbi_decoder_new &&
64861bd4fe43Sopenharmony_ci                             { test_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" ||
64871bd4fe43Sopenharmony_ci                               enabled gpl || die "ERROR: libzvbi requires version 0.2.28 or --enable-gpl."; }
64881bd4fe43Sopenharmony_cienabled libxml2           && require_pkg_config libxml2 libxml-2.0 libxml2/libxml/xmlversion.h xmlCheckVersion
64891bd4fe43Sopenharmony_cienabled mbedtls           && { check_pkg_config mbedtls mbedtls mbedtls/x509_crt.h mbedtls_x509_crt_init ||
64901bd4fe43Sopenharmony_ci                               check_pkg_config mbedtls mbedtls mbedtls/ssl.h mbedtls_ssl_init ||
64911bd4fe43Sopenharmony_ci                               check_lib mbedtls mbedtls/ssl.h mbedtls_ssl_init -lmbedtls -lmbedx509 -lmbedcrypto ||
64921bd4fe43Sopenharmony_ci                               die "ERROR: mbedTLS not found"; }
64931bd4fe43Sopenharmony_cienabled mediacodec        && { enabled jni || die "ERROR: mediacodec requires --enable-jni"; }
64941bd4fe43Sopenharmony_cienabled mmal              && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
64951bd4fe43Sopenharmony_ci                               { ! enabled cross_compile &&
64961bd4fe43Sopenharmony_ci                                 add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
64971bd4fe43Sopenharmony_ci                                 add_ldflags -L/opt/vc/lib/ &&
64981bd4fe43Sopenharmony_ci                                 check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
64991bd4fe43Sopenharmony_ci                               die "ERROR: mmal not found" &&
65001bd4fe43Sopenharmony_ci                               check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
65011bd4fe43Sopenharmony_cienabled openal            && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
65021bd4fe43Sopenharmony_ci                               check_lib openal 'AL/al.h' alGetError "${al_extralibs}" && break; done } ||
65031bd4fe43Sopenharmony_ci                               die "ERROR: openal not found"; } &&
65041bd4fe43Sopenharmony_ci                             { test_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
65051bd4fe43Sopenharmony_ci                               die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
65061bd4fe43Sopenharmony_cienabled opencl            && { check_pkg_config opencl OpenCL CL/cl.h clEnqueueNDRangeKernel ||
65071bd4fe43Sopenharmony_ci                               check_lib opencl OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
65081bd4fe43Sopenharmony_ci                               check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
65091bd4fe43Sopenharmony_ci                               die "ERROR: opencl not found"; } &&
65101bd4fe43Sopenharmony_ci                             { test_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
65111bd4fe43Sopenharmony_ci                               test_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
65121bd4fe43Sopenharmony_ci                               die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
65131bd4fe43Sopenharmony_cienabled opengl            && { check_lib opengl GL/glx.h glXGetProcAddress "-lGL" ||
65141bd4fe43Sopenharmony_ci                               check_lib opengl windows.h wglGetProcAddress "-lopengl32 -lgdi32" ||
65151bd4fe43Sopenharmony_ci                               check_lib opengl OpenGL/gl3.h glGetError "-Wl,-framework,OpenGL" ||
65161bd4fe43Sopenharmony_ci                               check_lib opengl ES2/gl.h glGetError "-isysroot=${sysroot} -Wl,-framework,OpenGLES" ||
65171bd4fe43Sopenharmony_ci                               die "ERROR: opengl not found."
65181bd4fe43Sopenharmony_ci                             }
65191bd4fe43Sopenharmony_cienabled omx_rpi           && { test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoRequestIFrame ||
65201bd4fe43Sopenharmony_ci                               { ! enabled cross_compile &&
65211bd4fe43Sopenharmony_ci                                 add_cflags -isystem/opt/vc/include/IL &&
65221bd4fe43Sopenharmony_ci                                 test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoRequestIFrame; } ||
65231bd4fe43Sopenharmony_ci                               die "ERROR: OpenMAX IL headers from raspberrypi/firmware not found"; } &&
65241bd4fe43Sopenharmony_ci                             enable omx
65251bd4fe43Sopenharmony_cienabled omx               && require_headers OMX_Core.h
65261bd4fe43Sopenharmony_cienabled openssl           && { check_pkg_config openssl openssl openssl/ssl.h OPENSSL_init_ssl ||
65271bd4fe43Sopenharmony_ci                               check_pkg_config openssl openssl openssl/ssl.h SSL_library_init ||
65281bd4fe43Sopenharmony_ci                               check_lib openssl openssl/ssl.h OPENSSL_init_ssl -lssl -lcrypto ||
65291bd4fe43Sopenharmony_ci                               check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
65301bd4fe43Sopenharmony_ci                               check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
65311bd4fe43Sopenharmony_ci                               check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
65321bd4fe43Sopenharmony_ci                               die "ERROR: openssl not found"; }
65331bd4fe43Sopenharmony_cienabled pocketsphinx      && require_pkg_config pocketsphinx pocketsphinx pocketsphinx/pocketsphinx.h ps_init
65341bd4fe43Sopenharmony_cienabled rkmpp             && { require_pkg_config rkmpp rockchip_mpp  rockchip/rk_mpi.h mpp_create &&
65351bd4fe43Sopenharmony_ci                               require_pkg_config rockchip_mpp "rockchip_mpp >= 1.3.7" rockchip/rk_mpi.h mpp_create &&
65361bd4fe43Sopenharmony_ci                               { enabled libdrm ||
65371bd4fe43Sopenharmony_ci                                 die "ERROR: rkmpp requires --enable-libdrm"; }
65381bd4fe43Sopenharmony_ci                             }
65391bd4fe43Sopenharmony_cienabled vapoursynth       && require_pkg_config vapoursynth "vapoursynth-script >= 42" VSScript.h vsscript_init
65401bd4fe43Sopenharmony_ci
65411bd4fe43Sopenharmony_ci
65421bd4fe43Sopenharmony_ciif enabled gcrypt; then
65431bd4fe43Sopenharmony_ci    GCRYPT_CONFIG="${cross_prefix}libgcrypt-config"
65441bd4fe43Sopenharmony_ci    if "${GCRYPT_CONFIG}" --version > /dev/null 2>&1; then
65451bd4fe43Sopenharmony_ci        gcrypt_cflags=$("${GCRYPT_CONFIG}" --cflags)
65461bd4fe43Sopenharmony_ci        gcrypt_extralibs=$("${GCRYPT_CONFIG}" --libs)
65471bd4fe43Sopenharmony_ci        check_func_headers gcrypt.h gcry_mpi_new $gcrypt_cflags $gcrypt_extralibs ||
65481bd4fe43Sopenharmony_ci            die "ERROR: gcrypt not found"
65491bd4fe43Sopenharmony_ci        add_cflags $gcrypt_cflags
65501bd4fe43Sopenharmony_ci    else
65511bd4fe43Sopenharmony_ci        require gcrypt gcrypt.h gcry_mpi_new -lgcrypt
65521bd4fe43Sopenharmony_ci    fi
65531bd4fe43Sopenharmony_cifi
65541bd4fe43Sopenharmony_ci
65551bd4fe43Sopenharmony_ciif enabled sdl2; then
65561bd4fe43Sopenharmony_ci    SDL2_CONFIG="${cross_prefix}sdl2-config"
65571bd4fe43Sopenharmony_ci    test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 2.1.0" SDL_events.h SDL_PollEvent
65581bd4fe43Sopenharmony_ci    if disabled sdl2 && "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
65591bd4fe43Sopenharmony_ci        sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
65601bd4fe43Sopenharmony_ci        sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
65611bd4fe43Sopenharmony_ci        test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
65621bd4fe43Sopenharmony_ci        test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
65631bd4fe43Sopenharmony_ci        check_func_headers SDL_events.h SDL_PollEvent $sdl2_extralibs $sdl2_cflags &&
65641bd4fe43Sopenharmony_ci            enable sdl2
65651bd4fe43Sopenharmony_ci    fi
65661bd4fe43Sopenharmony_ci    if test $target_os = "mingw32"; then
65671bd4fe43Sopenharmony_ci        sdl2_extralibs=$(filter_out '-mwindows' $sdl2_extralibs)
65681bd4fe43Sopenharmony_ci    fi
65691bd4fe43Sopenharmony_cifi
65701bd4fe43Sopenharmony_ci
65711bd4fe43Sopenharmony_ciif enabled decklink; then
65721bd4fe43Sopenharmony_ci    case $target_os in
65731bd4fe43Sopenharmony_ci        mingw32*|mingw64*|win32|win64)
65741bd4fe43Sopenharmony_ci            decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 -loleaut32"
65751bd4fe43Sopenharmony_ci            decklink_indev_extralibs="$decklink_indev_extralibs -lole32 -loleaut32"
65761bd4fe43Sopenharmony_ci            ;;
65771bd4fe43Sopenharmony_ci    esac
65781bd4fe43Sopenharmony_cifi
65791bd4fe43Sopenharmony_ci
65801bd4fe43Sopenharmony_cienabled securetransport &&
65811bd4fe43Sopenharmony_ci    check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
65821bd4fe43Sopenharmony_ci    check_lib securetransport "Security/SecureTransport.h Security/Security.h" "SSLCreateContext" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" ||
65831bd4fe43Sopenharmony_ci        disable securetransport
65841bd4fe43Sopenharmony_ci
65851bd4fe43Sopenharmony_cienabled securetransport &&
65861bd4fe43Sopenharmony_ci    check_func SecItemImport "-Wl,-framework,CoreFoundation -Wl,-framework,Security"
65871bd4fe43Sopenharmony_ci
65881bd4fe43Sopenharmony_cienabled schannel &&
65891bd4fe43Sopenharmony_ci    check_func_headers "windows.h security.h" InitializeSecurityContext -DSECURITY_WIN32 -lsecur32 &&
65901bd4fe43Sopenharmony_ci    test_cpp_condition winerror.h "defined(SEC_I_CONTEXT_EXPIRED)" &&
65911bd4fe43Sopenharmony_ci    schannel_extralibs="-lsecur32" ||
65921bd4fe43Sopenharmony_ci        disable schannel
65931bd4fe43Sopenharmony_ci
65941bd4fe43Sopenharmony_cimakeinfo --version > /dev/null 2>&1 && enable makeinfo  || disable makeinfo
65951bd4fe43Sopenharmony_cienabled makeinfo \
65961bd4fe43Sopenharmony_ci    && [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \
65971bd4fe43Sopenharmony_ci    && enable makeinfo_html || disable makeinfo_html
65981bd4fe43Sopenharmony_cidisabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
65991bd4fe43Sopenharmony_ciperl -v            > /dev/null 2>&1 && enable perl      || disable perl
66001bd4fe43Sopenharmony_cipod2man --help     > /dev/null 2>&1 && enable pod2man   || disable pod2man
66011bd4fe43Sopenharmony_cirsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
66021bd4fe43Sopenharmony_ci
66031bd4fe43Sopenharmony_ci# check V4L2 codecs available in the API
66041bd4fe43Sopenharmony_ciif enabled v4l2_m2m; then
66051bd4fe43Sopenharmony_ci    check_headers linux/fb.h
66061bd4fe43Sopenharmony_ci    check_headers linux/videodev2.h
66071bd4fe43Sopenharmony_ci    test_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
66081bd4fe43Sopenharmony_ci    check_cc v4l2_m2m linux/videodev2.h "int i = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_VIDEO_M2M | V4L2_BUF_FLAG_LAST;"
66091bd4fe43Sopenharmony_ci    check_cc vc1_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VC1_ANNEX_G;"
66101bd4fe43Sopenharmony_ci    check_cc mpeg1_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG1;"
66111bd4fe43Sopenharmony_ci    check_cc mpeg2_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG2;"
66121bd4fe43Sopenharmony_ci    check_cc mpeg4_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG4;"
66131bd4fe43Sopenharmony_ci    check_cc hevc_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_HEVC;"
66141bd4fe43Sopenharmony_ci    check_cc h263_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H263;"
66151bd4fe43Sopenharmony_ci    check_cc h264_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H264;"
66161bd4fe43Sopenharmony_ci    check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;"
66171bd4fe43Sopenharmony_ci    check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
66181bd4fe43Sopenharmony_cifi
66191bd4fe43Sopenharmony_ci
66201bd4fe43Sopenharmony_cicheck_headers sys/videoio.h
66211bd4fe43Sopenharmony_citest_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
66221bd4fe43Sopenharmony_ci
66231bd4fe43Sopenharmony_cicheck_lib user32 "windows.h winuser.h" GetShellWindow -luser32
66241bd4fe43Sopenharmony_cicheck_lib vfw32 "windows.h vfw.h" capCreateCaptureWindow -lvfw32
66251bd4fe43Sopenharmony_ci# check that WM_CAP_DRIVER_CONNECT is defined to the proper value
66261bd4fe43Sopenharmony_ci# w32api 3.12 had it defined wrong
66271bd4fe43Sopenharmony_cicheck_cpp_condition vfwcap_defines vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER"
66281bd4fe43Sopenharmony_ci
66291bd4fe43Sopenharmony_cicheck_type "dshow.h" IBaseFilter
66301bd4fe43Sopenharmony_ci
66311bd4fe43Sopenharmony_ci# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
66321bd4fe43Sopenharmony_cicheck_headers "dev/bktr/ioctl_meteor.h dev/bktr/ioctl_bt848.h"                   ||
66331bd4fe43Sopenharmony_ci    check_headers "machine/ioctl_meteor.h machine/ioctl_bt848.h"                 ||
66341bd4fe43Sopenharmony_ci    check_headers "dev/video/meteor/ioctl_meteor.h dev/video/bktr/ioctl_bt848.h" ||
66351bd4fe43Sopenharmony_ci    check_headers "dev/ic/bt8xx.h"
66361bd4fe43Sopenharmony_ci
66371bd4fe43Sopenharmony_ciif check_struct sys/soundcard.h audio_buf_info bytes; then
66381bd4fe43Sopenharmony_ci    enable_sanitized sys/soundcard.h
66391bd4fe43Sopenharmony_cielse
66401bd4fe43Sopenharmony_ci    test_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_sanitized sys/soundcard.h
66411bd4fe43Sopenharmony_ci    #include <sys/soundcard.h>
66421bd4fe43Sopenharmony_ci    audio_buf_info abc;
66431bd4fe43Sopenharmony_ciEOF
66441bd4fe43Sopenharmony_cifi
66451bd4fe43Sopenharmony_ci
66461bd4fe43Sopenharmony_cienabled alsa && { check_pkg_config alsa alsa "alsa/asoundlib.h" snd_pcm_htimestamp ||
66471bd4fe43Sopenharmony_ci                  check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound; }
66481bd4fe43Sopenharmony_ci
66491bd4fe43Sopenharmony_cienabled libjack &&
66501bd4fe43Sopenharmony_ci    require_pkg_config libjack jack jack/jack.h jack_port_get_latency_range
66511bd4fe43Sopenharmony_ci
66521bd4fe43Sopenharmony_cienabled sndio && check_lib sndio sndio.h sio_open -lsndio
66531bd4fe43Sopenharmony_ci
66541bd4fe43Sopenharmony_ciif enabled libcdio; then
66551bd4fe43Sopenharmony_ci    check_pkg_config libcdio libcdio_paranoia "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open ||
66561bd4fe43Sopenharmony_ci    check_pkg_config libcdio libcdio_paranoia "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open ||
66571bd4fe43Sopenharmony_ci    check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
66581bd4fe43Sopenharmony_ci    check_lib libcdio "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
66591bd4fe43Sopenharmony_ci    die "ERROR: No usable libcdio/cdparanoia found"
66601bd4fe43Sopenharmony_cifi
66611bd4fe43Sopenharmony_ci
66621bd4fe43Sopenharmony_cienabled libxcb && check_pkg_config libxcb "xcb >= 1.4" xcb/xcb.h xcb_connect ||
66631bd4fe43Sopenharmony_ci    disable libxcb_shm libxcb_shape libxcb_xfixes
66641bd4fe43Sopenharmony_ci
66651bd4fe43Sopenharmony_ciif enabled libxcb; then
66661bd4fe43Sopenharmony_ci    enabled libxcb_shm    && check_pkg_config libxcb_shm    xcb-shm    xcb/shm.h    xcb_shm_attach
66671bd4fe43Sopenharmony_ci    enabled libxcb_shape  && check_pkg_config libxcb_shape  xcb-shape  xcb/shape.h  xcb_shape_get_rectangles
66681bd4fe43Sopenharmony_ci    enabled libxcb_xfixes && check_pkg_config libxcb_xfixes xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image
66691bd4fe43Sopenharmony_cifi
66701bd4fe43Sopenharmony_ci
66711bd4fe43Sopenharmony_cicheck_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs"
66721bd4fe43Sopenharmony_ci
66731bd4fe43Sopenharmony_ci# d3d11va requires linking directly to dxgi and d3d11 if not building for
66741bd4fe43Sopenharmony_ci# the desktop api partition
66751bd4fe43Sopenharmony_citest_cpp <<EOF && enable uwp && d3d11va_extralibs="-ldxgi -ld3d11"
66761bd4fe43Sopenharmony_ci#ifdef WINAPI_FAMILY
66771bd4fe43Sopenharmony_ci#include <winapifamily.h>
66781bd4fe43Sopenharmony_ci#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
66791bd4fe43Sopenharmony_ci#error desktop, not uwp
66801bd4fe43Sopenharmony_ci#else
66811bd4fe43Sopenharmony_ci// WINAPI_FAMILY_APP, WINAPI_FAMILY_PHONE_APP => UWP
66821bd4fe43Sopenharmony_ci#endif
66831bd4fe43Sopenharmony_ci#else
66841bd4fe43Sopenharmony_ci#error no family set
66851bd4fe43Sopenharmony_ci#endif
66861bd4fe43Sopenharmony_ciEOF
66871bd4fe43Sopenharmony_ci
66881bd4fe43Sopenharmony_cienabled libdrm &&
66891bd4fe43Sopenharmony_ci    check_pkg_config libdrm_getfb2 libdrm "xf86drmMode.h" drmModeGetFB2
66901bd4fe43Sopenharmony_ci
66911bd4fe43Sopenharmony_cienabled vaapi &&
66921bd4fe43Sopenharmony_ci    check_pkg_config vaapi "libva >= 0.35.0" "va/va.h" vaInitialize
66931bd4fe43Sopenharmony_ci
66941bd4fe43Sopenharmony_ciif enabled vaapi; then
66951bd4fe43Sopenharmony_ci    check_pkg_config vaapi_drm "libva-drm" "va/va_drm.h" vaGetDisplayDRM
66961bd4fe43Sopenharmony_ci
66971bd4fe43Sopenharmony_ci    if enabled xlib; then
66981bd4fe43Sopenharmony_ci        check_pkg_config vaapi_x11 "libva-x11" "va/va_x11.h" vaGetDisplay
66991bd4fe43Sopenharmony_ci    fi
67001bd4fe43Sopenharmony_ci
67011bd4fe43Sopenharmony_ci    check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)"
67021bd4fe43Sopenharmony_ci
67031bd4fe43Sopenharmony_ci    check_type "va/va.h va/va_dec_hevc.h" "VAPictureParameterBufferHEVC"
67041bd4fe43Sopenharmony_ci    check_struct "va/va.h" "VADecPictureParameterBufferVP9" bit_depth
67051bd4fe43Sopenharmony_ci    check_struct "va/va.h" "VADecPictureParameterBufferAV1" bit_depth_idx
67061bd4fe43Sopenharmony_ci    check_type   "va/va.h va/va_vpp.h" "VAProcFilterParameterBufferHDRToneMapping"
67071bd4fe43Sopenharmony_ci    check_struct "va/va.h va/va_vpp.h" "VAProcPipelineCaps" rotation_flags
67081bd4fe43Sopenharmony_ci    check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC"
67091bd4fe43Sopenharmony_ci    check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
67101bd4fe43Sopenharmony_ci    check_type "va/va.h va/va_enc_vp8.h"  "VAEncPictureParameterBufferVP8"
67111bd4fe43Sopenharmony_ci    check_type "va/va.h va/va_enc_vp9.h"  "VAEncPictureParameterBufferVP9"
67121bd4fe43Sopenharmony_cifi
67131bd4fe43Sopenharmony_ci
67141bd4fe43Sopenharmony_ciif enabled_all opencl libdrm ; then
67151bd4fe43Sopenharmony_ci    check_type "CL/cl_intel.h" "clCreateImageFromFdINTEL_fn" &&
67161bd4fe43Sopenharmony_ci        enable opencl_drm_beignet
67171bd4fe43Sopenharmony_ci    check_func_headers "CL/cl_ext.h" clImportMemoryARM &&
67181bd4fe43Sopenharmony_ci        enable opencl_drm_arm
67191bd4fe43Sopenharmony_cifi
67201bd4fe43Sopenharmony_ci
67211bd4fe43Sopenharmony_ciif enabled_all opencl vaapi ; then
67221bd4fe43Sopenharmony_ci    if enabled opencl_drm_beignet ; then
67231bd4fe43Sopenharmony_ci        enable opencl_vaapi_beignet
67241bd4fe43Sopenharmony_ci    else
67251bd4fe43Sopenharmony_ci        check_type "CL/cl.h CL/cl_va_api_media_sharing_intel.h" "clCreateFromVA_APIMediaSurfaceINTEL_fn" &&
67261bd4fe43Sopenharmony_ci            enable opencl_vaapi_intel_media
67271bd4fe43Sopenharmony_ci    fi
67281bd4fe43Sopenharmony_cifi
67291bd4fe43Sopenharmony_ci
67301bd4fe43Sopenharmony_ciif enabled_all opencl dxva2 ; then
67311bd4fe43Sopenharmony_ci    check_type "CL/cl_dx9_media_sharing.h" cl_dx9_surface_info_khr &&
67321bd4fe43Sopenharmony_ci        enable opencl_dxva2
67331bd4fe43Sopenharmony_cifi
67341bd4fe43Sopenharmony_ci
67351bd4fe43Sopenharmony_ciif enabled_all opencl d3d11va ; then
67361bd4fe43Sopenharmony_ci    check_type "CL/cl_d3d11.h" clGetDeviceIDsFromD3D11KHR_fn &&
67371bd4fe43Sopenharmony_ci        enable opencl_d3d11
67381bd4fe43Sopenharmony_cifi
67391bd4fe43Sopenharmony_ci
67401bd4fe43Sopenharmony_cienabled vdpau &&
67411bd4fe43Sopenharmony_ci    check_cpp_condition vdpau vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP"
67421bd4fe43Sopenharmony_ci
67431bd4fe43Sopenharmony_cienabled vdpau &&
67441bd4fe43Sopenharmony_ci    check_lib vdpau_x11 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11
67451bd4fe43Sopenharmony_ci
67461bd4fe43Sopenharmony_cienabled crystalhd && check_lib crystalhd "stdint.h libcrystalhd/libcrystalhd_if.h" DtsCrystalHDVersion -lcrystalhd
67471bd4fe43Sopenharmony_ci
67481bd4fe43Sopenharmony_cienabled vulkan &&
67491bd4fe43Sopenharmony_ci    require_pkg_config vulkan "vulkan >= 1.1.97" "vulkan/vulkan.h" vkCreateInstance
67501bd4fe43Sopenharmony_ci
67511bd4fe43Sopenharmony_ciif enabled x86; then
67521bd4fe43Sopenharmony_ci    case $target_os in
67531bd4fe43Sopenharmony_ci        mingw32*|mingw64*|win32|win64|linux|cygwin*)
67541bd4fe43Sopenharmony_ci            ;;
67551bd4fe43Sopenharmony_ci        *)
67561bd4fe43Sopenharmony_ci            disable ffnvcodec cuvid nvdec nvenc
67571bd4fe43Sopenharmony_ci            ;;
67581bd4fe43Sopenharmony_ci    esac
67591bd4fe43Sopenharmony_cielif enabled_any aarch64 ppc64 && ! enabled bigendian; then
67601bd4fe43Sopenharmony_ci    case $target_os in
67611bd4fe43Sopenharmony_ci        linux)
67621bd4fe43Sopenharmony_ci            ;;
67631bd4fe43Sopenharmony_ci        *)
67641bd4fe43Sopenharmony_ci            disable ffnvcodec cuvid nvdec nvenc
67651bd4fe43Sopenharmony_ci            ;;
67661bd4fe43Sopenharmony_ci    esac
67671bd4fe43Sopenharmony_cielse
67681bd4fe43Sopenharmony_ci    disable ffnvcodec cuvid nvdec nvenc
67691bd4fe43Sopenharmony_cifi
67701bd4fe43Sopenharmony_ci
67711bd4fe43Sopenharmony_cienabled ffnvcodec && enable cuda
67721bd4fe43Sopenharmony_ci
67731bd4fe43Sopenharmony_cienabled nvenc &&
67741bd4fe43Sopenharmony_ci    test_cc -I$source_path <<EOF || disable nvenc
67751bd4fe43Sopenharmony_ci#include <ffnvcodec/nvEncodeAPI.h>
67761bd4fe43Sopenharmony_ciNV_ENCODE_API_FUNCTION_LIST flist;
67771bd4fe43Sopenharmony_civoid f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; }
67781bd4fe43Sopenharmony_ciint main(void) { return 0; }
67791bd4fe43Sopenharmony_ciEOF
67801bd4fe43Sopenharmony_ci
67811bd4fe43Sopenharmony_ciif enabled_any nvdec cuvid; then
67821bd4fe43Sopenharmony_ci    check_type "ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h" "CUVIDAV1PICPARAMS"
67831bd4fe43Sopenharmony_cifi
67841bd4fe43Sopenharmony_ci
67851bd4fe43Sopenharmony_cienabled amf &&
67861bd4fe43Sopenharmony_ci    check_cpp_condition amf "AMF/core/Version.h" \
67871bd4fe43Sopenharmony_ci        "(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x0001000400090000"
67881bd4fe43Sopenharmony_ci
67891bd4fe43Sopenharmony_ci# Funny iconv installations are not unusual, so check it after all flags have been set
67901bd4fe43Sopenharmony_ciif enabled libc_iconv; then
67911bd4fe43Sopenharmony_ci    check_func_headers iconv.h iconv
67921bd4fe43Sopenharmony_cielif enabled iconv; then
67931bd4fe43Sopenharmony_ci    check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv
67941bd4fe43Sopenharmony_cifi
67951bd4fe43Sopenharmony_ci
67961bd4fe43Sopenharmony_cienabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
67971bd4fe43Sopenharmony_ci
67981bd4fe43Sopenharmony_ci# add some useful compiler flags if supported
67991bd4fe43Sopenharmony_cicheck_cflags -Wdeclaration-after-statement
68001bd4fe43Sopenharmony_cicheck_cflags -Wall
68011bd4fe43Sopenharmony_cicheck_cflags -Wdisabled-optimization
68021bd4fe43Sopenharmony_cicheck_cflags -Wpointer-arith
68031bd4fe43Sopenharmony_cicheck_cflags -Wredundant-decls
68041bd4fe43Sopenharmony_cicheck_cflags -Wwrite-strings
68051bd4fe43Sopenharmony_cicheck_cflags -Wtype-limits
68061bd4fe43Sopenharmony_cicheck_cflags -Wundef
68071bd4fe43Sopenharmony_cicheck_cflags -Wmissing-prototypes
68081bd4fe43Sopenharmony_cicheck_cflags -Wno-pointer-to-int-cast
68091bd4fe43Sopenharmony_cicheck_cflags -Wstrict-prototypes
68101bd4fe43Sopenharmony_cicheck_cflags -Wempty-body
68111bd4fe43Sopenharmony_ci
68121bd4fe43Sopenharmony_ciif enabled extra_warnings; then
68131bd4fe43Sopenharmony_ci    check_cflags -Wcast-qual
68141bd4fe43Sopenharmony_ci    check_cflags -Wextra
68151bd4fe43Sopenharmony_ci    check_cflags -Wpedantic
68161bd4fe43Sopenharmony_cifi
68171bd4fe43Sopenharmony_ci
68181bd4fe43Sopenharmony_cicheck_disable_warning(){
68191bd4fe43Sopenharmony_ci    warning_flag=-W${1#-Wno-}
68201bd4fe43Sopenharmony_ci    test_cflags $unknown_warning_flags $warning_flag && add_cflags $1
68211bd4fe43Sopenharmony_ci}
68221bd4fe43Sopenharmony_ci
68231bd4fe43Sopenharmony_citest_cflags -Werror=unused-command-line-argument &&
68241bd4fe43Sopenharmony_ci    append unknown_warning_flags "-Werror=unused-command-line-argument"
68251bd4fe43Sopenharmony_citest_cflags -Werror=unknown-warning-option &&
68261bd4fe43Sopenharmony_ci    append unknown_warning_flags "-Werror=unknown-warning-option"
68271bd4fe43Sopenharmony_ci
68281bd4fe43Sopenharmony_cicheck_disable_warning -Wno-parentheses
68291bd4fe43Sopenharmony_cicheck_disable_warning -Wno-switch
68301bd4fe43Sopenharmony_cicheck_disable_warning -Wno-format-zero-length
68311bd4fe43Sopenharmony_cicheck_disable_warning -Wno-pointer-sign
68321bd4fe43Sopenharmony_cicheck_disable_warning -Wno-unused-const-variable
68331bd4fe43Sopenharmony_cicheck_disable_warning -Wno-bool-operation
68341bd4fe43Sopenharmony_cicheck_disable_warning -Wno-char-subscripts
68351bd4fe43Sopenharmony_ci
68361bd4fe43Sopenharmony_cicheck_disable_warning_headers(){
68371bd4fe43Sopenharmony_ci    warning_flag=-W${1#-Wno-}
68381bd4fe43Sopenharmony_ci    test_cflags $warning_flag && add_cflags_headers $1
68391bd4fe43Sopenharmony_ci}
68401bd4fe43Sopenharmony_ci
68411bd4fe43Sopenharmony_cicheck_disable_warning_headers -Wno-deprecated-declarations
68421bd4fe43Sopenharmony_cicheck_disable_warning_headers -Wno-unused-variable
68431bd4fe43Sopenharmony_ci
68441bd4fe43Sopenharmony_citest_cc <<EOF && enable blocks_extension
68451bd4fe43Sopenharmony_civoid (^block)(void);
68461bd4fe43Sopenharmony_ciEOF
68471bd4fe43Sopenharmony_ci
68481bd4fe43Sopenharmony_ci# add some linker flags
68491bd4fe43Sopenharmony_cicheck_ldflags -Wl,--warn-common
68501bd4fe43Sopenharmony_cicheck_ldflags -Wl,-rpath-link=:libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
68511bd4fe43Sopenharmony_cienabled rpath && add_ldexeflags -Wl,-rpath,$libdir && add_ldsoflags -Wl,-rpath,$libdir
68521bd4fe43Sopenharmony_citest_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
68531bd4fe43Sopenharmony_ci
68541bd4fe43Sopenharmony_ci# add some strip flags
68551bd4fe43Sopenharmony_cicheck_stripflags -x
68561bd4fe43Sopenharmony_ci
68571bd4fe43Sopenharmony_cienabled neon_clobber_test &&
68581bd4fe43Sopenharmony_ci    check_ldflags -Wl,--wrap,avcodec_open2              \
68591bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_decode_audio4      \
68601bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_decode_video2      \
68611bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_decode_subtitle2   \
68621bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_encode_audio2      \
68631bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_encode_video2      \
68641bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_encode_subtitle    \
68651bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_send_packet        \
68661bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_receive_packet     \
68671bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_send_frame         \
68681bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_receive_frame      \
68691bd4fe43Sopenharmony_ci                  -Wl,--wrap,swr_convert                \
68701bd4fe43Sopenharmony_ci                  -Wl,--wrap,avresample_convert ||
68711bd4fe43Sopenharmony_ci    disable neon_clobber_test
68721bd4fe43Sopenharmony_ci
68731bd4fe43Sopenharmony_cienabled xmm_clobber_test &&
68741bd4fe43Sopenharmony_ci    check_ldflags -Wl,--wrap,avcodec_open2              \
68751bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_decode_audio4      \
68761bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_decode_video2      \
68771bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_decode_subtitle2   \
68781bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_encode_audio2      \
68791bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_encode_video2      \
68801bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_encode_subtitle    \
68811bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_send_packet        \
68821bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_receive_packet     \
68831bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_send_frame         \
68841bd4fe43Sopenharmony_ci                  -Wl,--wrap,avcodec_receive_frame      \
68851bd4fe43Sopenharmony_ci                  -Wl,--wrap,swr_convert                \
68861bd4fe43Sopenharmony_ci                  -Wl,--wrap,avresample_convert         \
68871bd4fe43Sopenharmony_ci                  -Wl,--wrap,sws_scale ||
68881bd4fe43Sopenharmony_ci    disable xmm_clobber_test
68891bd4fe43Sopenharmony_ci
68901bd4fe43Sopenharmony_cicheck_ld "cc" proper_dce <<EOF
68911bd4fe43Sopenharmony_ciextern const int array[512];
68921bd4fe43Sopenharmony_cistatic inline int func(void) { return array[0]; }
68931bd4fe43Sopenharmony_ciint main(void) { return 0; }
68941bd4fe43Sopenharmony_ciEOF
68951bd4fe43Sopenharmony_ci
68961bd4fe43Sopenharmony_ciif enabled proper_dce; then
68971bd4fe43Sopenharmony_ci    echo "X { local: *; };" > $TMPV
68981bd4fe43Sopenharmony_ci    if test_ldflags -Wl,${version_script},$TMPV; then
68991bd4fe43Sopenharmony_ci        append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver'
69001bd4fe43Sopenharmony_ci        quotes='""'
69011bd4fe43Sopenharmony_ci        test_cc <<EOF && enable symver_asm_label
69021bd4fe43Sopenharmony_civoid ff_foo(void) __asm__ ("av_foo@VERSION");
69031bd4fe43Sopenharmony_civoid ff_foo(void) { ${inline_asm+__asm__($quotes);} }
69041bd4fe43Sopenharmony_ciEOF
69051bd4fe43Sopenharmony_ci        test_cc <<EOF && enable symver_gnu_asm
69061bd4fe43Sopenharmony_ci__asm__(".symver ff_foo,av_foo@VERSION");
69071bd4fe43Sopenharmony_civoid ff_foo(void) {}
69081bd4fe43Sopenharmony_ciEOF
69091bd4fe43Sopenharmony_ci    fi
69101bd4fe43Sopenharmony_cifi
69111bd4fe43Sopenharmony_ci
69121bd4fe43Sopenharmony_ciif [ -z "$optflags" ]; then
69131bd4fe43Sopenharmony_ci    if enabled small; then
69141bd4fe43Sopenharmony_ci        optflags=$cflags_size
69151bd4fe43Sopenharmony_ci    elif enabled optimizations; then
69161bd4fe43Sopenharmony_ci        optflags=$cflags_speed
69171bd4fe43Sopenharmony_ci    else
69181bd4fe43Sopenharmony_ci        optflags=$cflags_noopt
69191bd4fe43Sopenharmony_ci    fi
69201bd4fe43Sopenharmony_cifi
69211bd4fe43Sopenharmony_ci
69221bd4fe43Sopenharmony_cicheck_optflags(){
69231bd4fe43Sopenharmony_ci    check_cflags "$@"
69241bd4fe43Sopenharmony_ci    enabled lto && check_ldflags "$@"
69251bd4fe43Sopenharmony_ci}
69261bd4fe43Sopenharmony_ci
69271bd4fe43Sopenharmony_cicheck_optflags $optflags
69281bd4fe43Sopenharmony_cicheck_optflags -fno-math-errno
69291bd4fe43Sopenharmony_cicheck_optflags -fno-signed-zeros
69301bd4fe43Sopenharmony_ci
69311bd4fe43Sopenharmony_ciif enabled lto; then
69321bd4fe43Sopenharmony_ci    test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
69331bd4fe43Sopenharmony_ci    check_cflags  -flto
69341bd4fe43Sopenharmony_ci    check_ldflags -flto $cpuflags
69351bd4fe43Sopenharmony_ci    disable inline_asm_direct_symbol_refs
69361bd4fe43Sopenharmony_cifi
69371bd4fe43Sopenharmony_ci
69381bd4fe43Sopenharmony_cienabled ftrapv && check_cflags -ftrapv
69391bd4fe43Sopenharmony_ci
69401bd4fe43Sopenharmony_citest_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
69411bd4fe43Sopenharmony_ciint x;
69421bd4fe43Sopenharmony_ciEOF
69431bd4fe43Sopenharmony_ci
69441bd4fe43Sopenharmony_ci
69451bd4fe43Sopenharmony_ciif enabled icc; then
69461bd4fe43Sopenharmony_ci    # Just warnings, no remarks
69471bd4fe43Sopenharmony_ci    check_cflags -w1
69481bd4fe43Sopenharmony_ci    # -wd: Disable following warnings
69491bd4fe43Sopenharmony_ci    # 144, 167, 556: -Wno-pointer-sign
69501bd4fe43Sopenharmony_ci    # 188: enumerated type mixed with another type
69511bd4fe43Sopenharmony_ci    # 1292: attribute "foo" ignored
69521bd4fe43Sopenharmony_ci    # 1419: external declaration in primary source file
69531bd4fe43Sopenharmony_ci    # 10006: ignoring unknown option -fno-signed-zeros
69541bd4fe43Sopenharmony_ci    # 10148: ignoring unknown option -Wno-parentheses
69551bd4fe43Sopenharmony_ci    # 10156: ignoring option '-W'; no argument required
69561bd4fe43Sopenharmony_ci    # 13200: No EMMS instruction before call to function
69571bd4fe43Sopenharmony_ci    # 13203: No EMMS instruction before return from function
69581bd4fe43Sopenharmony_ci    check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156,13200,13203
69591bd4fe43Sopenharmony_ci    # 11030: Warning unknown option --as-needed
69601bd4fe43Sopenharmony_ci    # 10156: ignoring option '-export'; no argument required
69611bd4fe43Sopenharmony_ci    check_ldflags -wd10156,11030
69621bd4fe43Sopenharmony_ci    # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
69631bd4fe43Sopenharmony_ci    enable ebp_available
69641bd4fe43Sopenharmony_ci    # The test above does not test linking
69651bd4fe43Sopenharmony_ci    enabled lto && disable symver_asm_label
69661bd4fe43Sopenharmony_ci    if enabled x86_32; then
69671bd4fe43Sopenharmony_ci        icc_version=$($cc -dumpversion)
69681bd4fe43Sopenharmony_ci        test ${icc_version%%.*} -ge 11 &&
69691bd4fe43Sopenharmony_ci            check_cflags -falign-stack=maintain-16-byte ||
69701bd4fe43Sopenharmony_ci            disable aligned_stack
69711bd4fe43Sopenharmony_ci    fi
69721bd4fe43Sopenharmony_cielif enabled gcc; then
69731bd4fe43Sopenharmony_ci    check_optflags -fno-tree-vectorize
69741bd4fe43Sopenharmony_ci    check_cflags -Werror=format-security
69751bd4fe43Sopenharmony_ci    check_cflags -Werror=implicit-function-declaration
69761bd4fe43Sopenharmony_ci    check_cflags -Werror=missing-prototypes
69771bd4fe43Sopenharmony_ci    check_cflags -Werror=return-type
69781bd4fe43Sopenharmony_ci    check_cflags -Werror=vla
69791bd4fe43Sopenharmony_ci    check_cflags -Wformat
69801bd4fe43Sopenharmony_ci    check_cflags -fdiagnostics-color=auto
69811bd4fe43Sopenharmony_ci    enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized
69821bd4fe43Sopenharmony_ci    if enabled x86_32; then
69831bd4fe43Sopenharmony_ci        case $target_os in
69841bd4fe43Sopenharmony_ci        *bsd*)
69851bd4fe43Sopenharmony_ci            # BSDs don't guarantee a 16 byte aligned stack, but we can
69861bd4fe43Sopenharmony_ci            # request GCC to try to maintain 16 byte alignment throughout
69871bd4fe43Sopenharmony_ci            # function calls. Library entry points that might call assembly
69881bd4fe43Sopenharmony_ci            # functions align the stack. (The parameter means 2^4 bytes.)
69891bd4fe43Sopenharmony_ci            check_cflags -mpreferred-stack-boundary=4
69901bd4fe43Sopenharmony_ci            ;;
69911bd4fe43Sopenharmony_ci        esac
69921bd4fe43Sopenharmony_ci    fi
69931bd4fe43Sopenharmony_cielif enabled llvm_gcc; then
69941bd4fe43Sopenharmony_ci    check_cflags -mllvm -stack-alignment=16
69951bd4fe43Sopenharmony_cielif enabled clang; then
69961bd4fe43Sopenharmony_ci    if enabled x86_32; then
69971bd4fe43Sopenharmony_ci        # Clang doesn't support maintaining alignment without assuming the
69981bd4fe43Sopenharmony_ci        # same alignment in every function. If 16 byte alignment would be
69991bd4fe43Sopenharmony_ci        # enabled, one would also have to either add attribute_align_arg on
70001bd4fe43Sopenharmony_ci        # every single entry point into the libraries or enable -mstackrealign
70011bd4fe43Sopenharmony_ci        # (doing stack realignment in every single function).
70021bd4fe43Sopenharmony_ci        case $target_os in
70031bd4fe43Sopenharmony_ci        mingw32|win32|*bsd*)
70041bd4fe43Sopenharmony_ci            disable aligned_stack
70051bd4fe43Sopenharmony_ci            ;;
70061bd4fe43Sopenharmony_ci        *)
70071bd4fe43Sopenharmony_ci            check_cflags -mllvm -stack-alignment=16
70081bd4fe43Sopenharmony_ci            check_cflags -mstack-alignment=16
70091bd4fe43Sopenharmony_ci            ;;
70101bd4fe43Sopenharmony_ci        esac
70111bd4fe43Sopenharmony_ci    else
70121bd4fe43Sopenharmony_ci        check_cflags -mllvm -stack-alignment=16
70131bd4fe43Sopenharmony_ci        check_cflags -mstack-alignment=16
70141bd4fe43Sopenharmony_ci    fi
70151bd4fe43Sopenharmony_ci    check_cflags -Qunused-arguments
70161bd4fe43Sopenharmony_ci    check_cflags -Werror=implicit-function-declaration
70171bd4fe43Sopenharmony_ci    check_cflags -Werror=missing-prototypes
70181bd4fe43Sopenharmony_ci    check_cflags -Werror=return-type
70191bd4fe43Sopenharmony_cielif enabled cparser; then
70201bd4fe43Sopenharmony_ci    add_cflags -Wno-missing-variable-declarations
70211bd4fe43Sopenharmony_ci    add_cflags -Wno-empty-statement
70221bd4fe43Sopenharmony_cielif enabled armcc; then
70231bd4fe43Sopenharmony_ci    add_cflags -W${armcc_opt},--diag_suppress=4343 # hardfp compat
70241bd4fe43Sopenharmony_ci    add_cflags -W${armcc_opt},--diag_suppress=3036 # using . as system include dir
70251bd4fe43Sopenharmony_ci    # 2523: use of inline assembly is deprecated
70261bd4fe43Sopenharmony_ci    add_cflags -W${armcc_opt},--diag_suppress=2523
70271bd4fe43Sopenharmony_ci    add_cflags -W${armcc_opt},--diag_suppress=1207
70281bd4fe43Sopenharmony_ci    add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
70291bd4fe43Sopenharmony_ci    add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
70301bd4fe43Sopenharmony_ci    add_cflags -W${armcc_opt},--diag_suppress=167  # pointer sign
70311bd4fe43Sopenharmony_ci    add_cflags -W${armcc_opt},--diag_suppress=513  # pointer sign
70321bd4fe43Sopenharmony_cielif enabled pathscale; then
70331bd4fe43Sopenharmony_ci    add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
70341bd4fe43Sopenharmony_ci    disable inline_asm
70351bd4fe43Sopenharmony_cielif enabled_any msvc icl; then
70361bd4fe43Sopenharmony_ci    enabled x86_32 && disable aligned_stack
70371bd4fe43Sopenharmony_ci    enabled_all x86_32 debug && add_cflags -Oy-
70381bd4fe43Sopenharmony_ci    enabled debug && add_ldflags -debug
70391bd4fe43Sopenharmony_ci    enable pragma_deprecated
70401bd4fe43Sopenharmony_ci    if enabled icl; then
70411bd4fe43Sopenharmony_ci        # -Qansi-alias is basically -fstrict-aliasing, but does not work
70421bd4fe43Sopenharmony_ci        # (correctly) on icl 13.x.
70431bd4fe43Sopenharmony_ci        test_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" &&
70441bd4fe43Sopenharmony_ci            add_cflags -Qansi-alias
70451bd4fe43Sopenharmony_ci        # Some inline asm is not compilable in debug
70461bd4fe43Sopenharmony_ci        if enabled debug; then
70471bd4fe43Sopenharmony_ci            disable ebp_available
70481bd4fe43Sopenharmony_ci            disable ebx_available
70491bd4fe43Sopenharmony_ci        fi
70501bd4fe43Sopenharmony_ci    fi
70511bd4fe43Sopenharmony_ci    # msvcrt10 x64 incorrectly enables log2, only msvcrt12 (MSVC 2013) onwards actually has log2.
70521bd4fe43Sopenharmony_ci    check_cpp_condition log2 crtversion.h "_VC_CRT_MAJOR_VERSION >= 12"
70531bd4fe43Sopenharmony_ci    # The CRT headers contain __declspec(restrict) in a few places, but if redefining
70541bd4fe43Sopenharmony_ci    # restrict, this might break. MSVC 2010 and 2012 fail with __declspec(__restrict)
70551bd4fe43Sopenharmony_ci    # (as it ends up if the restrict redefine is done before including stdlib.h), while
70561bd4fe43Sopenharmony_ci    # MSVC 2013 and newer can handle it fine.
70571bd4fe43Sopenharmony_ci    # If this declspec fails, force including stdlib.h before the restrict redefinition
70581bd4fe43Sopenharmony_ci    # happens in config.h.
70591bd4fe43Sopenharmony_ci    if [ $restrict_keyword != restrict ]; then
70601bd4fe43Sopenharmony_ci        test_cc <<EOF || add_cflags -FIstdlib.h
70611bd4fe43Sopenharmony_ci__declspec($restrict_keyword) void *foo(int);
70621bd4fe43Sopenharmony_ciEOF
70631bd4fe43Sopenharmony_ci    fi
70641bd4fe43Sopenharmony_ci    # the new SSA optimzer in VS2015 U3 is mis-optimizing some parts of the code
70651bd4fe43Sopenharmony_ci    # Issue has been fixed in MSVC v19.00.24218.
70661bd4fe43Sopenharmony_ci    test_cpp_condition windows.h "_MSC_FULL_VER >= 190024218" ||
70671bd4fe43Sopenharmony_ci        check_cflags -d2SSAOptimizer-
70681bd4fe43Sopenharmony_ci    # enable utf-8 source processing on VS2015 U2 and newer
70691bd4fe43Sopenharmony_ci    test_cpp_condition windows.h "_MSC_FULL_VER >= 190023918" &&
70701bd4fe43Sopenharmony_ci        add_cflags -utf-8
70711bd4fe43Sopenharmony_cifi
70721bd4fe43Sopenharmony_ci
70731bd4fe43Sopenharmony_cifor pfx in "" host_; do
70741bd4fe43Sopenharmony_ci    varname=${pfx%_}cc_type
70751bd4fe43Sopenharmony_ci    eval "type=\$$varname"
70761bd4fe43Sopenharmony_ci    if [ "$type" = "msvc" ]; then
70771bd4fe43Sopenharmony_ci        test_${pfx}cc <<EOF || add_${pfx}cflags -Dinline=__inline
70781bd4fe43Sopenharmony_cistatic inline int foo(int a) { return a; }
70791bd4fe43Sopenharmony_ciEOF
70801bd4fe43Sopenharmony_ci    fi
70811bd4fe43Sopenharmony_cidone
70821bd4fe43Sopenharmony_ci
70831bd4fe43Sopenharmony_cicase $as_type in
70841bd4fe43Sopenharmony_ci    clang)
70851bd4fe43Sopenharmony_ci        add_asflags -Qunused-arguments
70861bd4fe43Sopenharmony_ci    ;;
70871bd4fe43Sopenharmony_ciesac
70881bd4fe43Sopenharmony_ci
70891bd4fe43Sopenharmony_cicase $ld_type in
70901bd4fe43Sopenharmony_ci    clang)
70911bd4fe43Sopenharmony_ci        check_ldflags -Qunused-arguments
70921bd4fe43Sopenharmony_ci    ;;
70931bd4fe43Sopenharmony_ciesac
70941bd4fe43Sopenharmony_ci
70951bd4fe43Sopenharmony_cienable frame_thread_encoder
70961bd4fe43Sopenharmony_ci
70971bd4fe43Sopenharmony_cienabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
70981bd4fe43Sopenharmony_ci
70991bd4fe43Sopenharmony_cicheck_deps $CONFIG_LIST       \
71001bd4fe43Sopenharmony_ci           $CONFIG_EXTRA      \
71011bd4fe43Sopenharmony_ci           $HAVE_LIST         \
71021bd4fe43Sopenharmony_ci           $ALL_COMPONENTS    \
71031bd4fe43Sopenharmony_ci
71041bd4fe43Sopenharmony_cienabled 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"
71051bd4fe43Sopenharmony_cienabled avresample && warn "Building with deprecated library libavresample"
71061bd4fe43Sopenharmony_ci
71071bd4fe43Sopenharmony_cicase $target_os in
71081bd4fe43Sopenharmony_cihaiku)
71091bd4fe43Sopenharmony_ci    disable memalign
71101bd4fe43Sopenharmony_ci    disable posix_memalign
71111bd4fe43Sopenharmony_ci    ;;
71121bd4fe43Sopenharmony_ci*-dos|freedos|opendos)
71131bd4fe43Sopenharmony_ci    if test_cpp_condition sys/version.h "defined(__DJGPP__) && __DJGPP__ == 2 && __DJGPP_MINOR__ == 5"; then
71141bd4fe43Sopenharmony_ci        disable memalign
71151bd4fe43Sopenharmony_ci    fi
71161bd4fe43Sopenharmony_ci    ;;
71171bd4fe43Sopenharmony_ciesac
71181bd4fe43Sopenharmony_ci
71191bd4fe43Sopenharmony_ciflatten_extralibs(){
71201bd4fe43Sopenharmony_ci    nested_entries=
71211bd4fe43Sopenharmony_ci    list_name=$1
71221bd4fe43Sopenharmony_ci    eval list=\$${1}
71231bd4fe43Sopenharmony_ci    for entry in $list; do
71241bd4fe43Sopenharmony_ci        entry_copy=$entry
71251bd4fe43Sopenharmony_ci        resolve entry_copy
71261bd4fe43Sopenharmony_ci        flat_entries=
71271bd4fe43Sopenharmony_ci        for e in $entry_copy; do
71281bd4fe43Sopenharmony_ci            case $e in
71291bd4fe43Sopenharmony_ci                *_extralibs) nested_entries="$nested_entries$e ";;
71301bd4fe43Sopenharmony_ci                          *) flat_entries="$flat_entries$e ";;
71311bd4fe43Sopenharmony_ci            esac
71321bd4fe43Sopenharmony_ci        done
71331bd4fe43Sopenharmony_ci        eval $entry="\$flat_entries"
71341bd4fe43Sopenharmony_ci    done
71351bd4fe43Sopenharmony_ci    append $list_name "$nested_entries"
71361bd4fe43Sopenharmony_ci
71371bd4fe43Sopenharmony_ci    resolve nested_entries
71381bd4fe43Sopenharmony_ci    if test -n "$(filter '*_extralibs' $nested_entries)"; then
71391bd4fe43Sopenharmony_ci        flatten_extralibs $list_name
71401bd4fe43Sopenharmony_ci    fi
71411bd4fe43Sopenharmony_ci}
71421bd4fe43Sopenharmony_ci
71431bd4fe43Sopenharmony_ciflatten_extralibs_wrapper(){
71441bd4fe43Sopenharmony_ci    list_name=$1
71451bd4fe43Sopenharmony_ci    flatten_extralibs $list_name
71461bd4fe43Sopenharmony_ci    unique $list_name
71471bd4fe43Sopenharmony_ci    resolve $list_name
71481bd4fe43Sopenharmony_ci    eval $list_name=\$\(\$ldflags_filter \$$list_name\)
71491bd4fe43Sopenharmony_ci    eval printf \''%s'\' \""\$$list_name"\"
71501bd4fe43Sopenharmony_ci}
71511bd4fe43Sopenharmony_ci
71521bd4fe43Sopenharmony_cifor linkunit in $LIBRARY_LIST; do
71531bd4fe43Sopenharmony_ci    unset current_extralibs
71541bd4fe43Sopenharmony_ci    eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST
71551bd4fe43Sopenharmony_ci    for comp in ${components}; do
71561bd4fe43Sopenharmony_ci        enabled $comp || continue
71571bd4fe43Sopenharmony_ci        comp_extralibs="${comp}_extralibs"
71581bd4fe43Sopenharmony_ci        append current_extralibs $comp_extralibs
71591bd4fe43Sopenharmony_ci    done
71601bd4fe43Sopenharmony_ci    eval prepend ${linkunit}_extralibs $current_extralibs
71611bd4fe43Sopenharmony_cidone
71621bd4fe43Sopenharmony_ci
71631bd4fe43Sopenharmony_cifor linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
71641bd4fe43Sopenharmony_ci    eval ${linkunit}_extralibs=\$\(flatten_extralibs_wrapper ${linkunit}_extralibs\)
71651bd4fe43Sopenharmony_cidone
71661bd4fe43Sopenharmony_ci
71671bd4fe43Sopenharmony_cimap 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
71681bd4fe43Sopenharmony_ci
71691bd4fe43Sopenharmony_cifor thread in $THREADS_LIST; do
71701bd4fe43Sopenharmony_ci    if enabled $thread; then
71711bd4fe43Sopenharmony_ci        test -n "$thread_type" &&
71721bd4fe43Sopenharmony_ci            die "ERROR: Only one thread type must be selected." ||
71731bd4fe43Sopenharmony_ci            thread_type="$thread"
71741bd4fe43Sopenharmony_ci    fi
71751bd4fe43Sopenharmony_cidone
71761bd4fe43Sopenharmony_ci
71771bd4fe43Sopenharmony_ciif disabled stdatomic; then
71781bd4fe43Sopenharmony_ci    if enabled atomics_gcc; then
71791bd4fe43Sopenharmony_ci        add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
71801bd4fe43Sopenharmony_ci    elif enabled atomics_win32; then
71811bd4fe43Sopenharmony_ci        add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
71821bd4fe43Sopenharmony_ci    elif enabled atomics_suncc; then
71831bd4fe43Sopenharmony_ci        add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
71841bd4fe43Sopenharmony_ci    elif enabled pthreads; then
71851bd4fe43Sopenharmony_ci        add_compat atomics/pthread/stdatomic.o
71861bd4fe43Sopenharmony_ci        add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
71871bd4fe43Sopenharmony_ci    else
71881bd4fe43Sopenharmony_ci        enabled threads && die "Threading is enabled, but no atomics are available"
71891bd4fe43Sopenharmony_ci        add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
71901bd4fe43Sopenharmony_ci    fi
71911bd4fe43Sopenharmony_cifi
71921bd4fe43Sopenharmony_ci
71931bd4fe43Sopenharmony_ci# Check if requested libraries were found.
71941bd4fe43Sopenharmony_cifor lib in $AUTODETECT_LIBS; do
71951bd4fe43Sopenharmony_ci    requested $lib && ! enabled $lib && die "ERROR: $lib requested but not found";
71961bd4fe43Sopenharmony_cidone
71971bd4fe43Sopenharmony_ci
71981bd4fe43Sopenharmony_cienabled zlib && add_cppflags -DZLIB_CONST
71991bd4fe43Sopenharmony_ci
72001bd4fe43Sopenharmony_ci# conditional library dependencies, in any order
72011bd4fe43Sopenharmony_cienabled afftdn_filter       && prepend avfilter_deps "avcodec"
72021bd4fe43Sopenharmony_cienabled afftfilt_filter     && prepend avfilter_deps "avcodec"
72031bd4fe43Sopenharmony_cienabled afir_filter         && prepend avfilter_deps "avcodec"
72041bd4fe43Sopenharmony_cienabled amovie_filter       && prepend avfilter_deps "avformat avcodec"
72051bd4fe43Sopenharmony_cienabled aresample_filter    && prepend avfilter_deps "swresample"
72061bd4fe43Sopenharmony_cienabled atempo_filter       && prepend avfilter_deps "avcodec"
72071bd4fe43Sopenharmony_cienabled bm3d_filter         && prepend avfilter_deps "avcodec"
72081bd4fe43Sopenharmony_cienabled cover_rect_filter   && prepend avfilter_deps "avformat avcodec"
72091bd4fe43Sopenharmony_cienabled convolve_filter     && prepend avfilter_deps "avcodec"
72101bd4fe43Sopenharmony_cienabled deconvolve_filter   && prepend avfilter_deps "avcodec"
72111bd4fe43Sopenharmony_cienabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample"
72121bd4fe43Sopenharmony_cienabled elbg_filter         && prepend avfilter_deps "avcodec"
72131bd4fe43Sopenharmony_cienabled fftfilt_filter      && prepend avfilter_deps "avcodec"
72141bd4fe43Sopenharmony_cienabled find_rect_filter    && prepend avfilter_deps "avformat avcodec"
72151bd4fe43Sopenharmony_cienabled firequalizer_filter && prepend avfilter_deps "avcodec"
72161bd4fe43Sopenharmony_cienabled mcdeint_filter      && prepend avfilter_deps "avcodec"
72171bd4fe43Sopenharmony_cienabled movie_filter    && prepend avfilter_deps "avformat avcodec"
72181bd4fe43Sopenharmony_cienabled pan_filter          && prepend avfilter_deps "swresample"
72191bd4fe43Sopenharmony_cienabled pp_filter           && prepend avfilter_deps "postproc"
72201bd4fe43Sopenharmony_cienabled removelogo_filter   && prepend avfilter_deps "avformat avcodec swscale"
72211bd4fe43Sopenharmony_cienabled resample_filter && prepend avfilter_deps "avresample"
72221bd4fe43Sopenharmony_cienabled sab_filter          && prepend avfilter_deps "swscale"
72231bd4fe43Sopenharmony_cienabled scale_filter    && prepend avfilter_deps "swscale"
72241bd4fe43Sopenharmony_cienabled scale2ref_filter    && prepend avfilter_deps "swscale"
72251bd4fe43Sopenharmony_cienabled sofalizer_filter    && prepend avfilter_deps "avcodec"
72261bd4fe43Sopenharmony_cienabled showcqt_filter      && prepend avfilter_deps "avformat avcodec swscale"
72271bd4fe43Sopenharmony_cienabled showfreqs_filter    && prepend avfilter_deps "avcodec"
72281bd4fe43Sopenharmony_cienabled showspectrum_filter && prepend avfilter_deps "avcodec"
72291bd4fe43Sopenharmony_cienabled signature_filter    && prepend avfilter_deps "avcodec avformat"
72301bd4fe43Sopenharmony_cienabled smartblur_filter    && prepend avfilter_deps "swscale"
72311bd4fe43Sopenharmony_cienabled spectrumsynth_filter && prepend avfilter_deps "avcodec"
72321bd4fe43Sopenharmony_cienabled spp_filter          && prepend avfilter_deps "avcodec"
72331bd4fe43Sopenharmony_cienabled sr_filter           && prepend avfilter_deps "avformat swscale"
72341bd4fe43Sopenharmony_cienabled subtitles_filter    && prepend avfilter_deps "avformat avcodec"
72351bd4fe43Sopenharmony_cienabled uspp_filter         && prepend avfilter_deps "avcodec"
72361bd4fe43Sopenharmony_cienabled zoompan_filter      && prepend avfilter_deps "swscale"
72371bd4fe43Sopenharmony_ci
72381bd4fe43Sopenharmony_cienabled lavfi_indev         && prepend avdevice_deps "avfilter"
72391bd4fe43Sopenharmony_ci
72401bd4fe43Sopenharmony_ci#FIXME
72411bd4fe43Sopenharmony_cienabled_any sdl2_outdev opengl_outdev && enabled sdl2 &&
72421bd4fe43Sopenharmony_ci    add_cflags $(filter_out '-Dmain=SDL_main' $sdl2_cflags)
72431bd4fe43Sopenharmony_ci
72441bd4fe43Sopenharmony_cienabled opus_decoder    && prepend avcodec_deps "swresample"
72451bd4fe43Sopenharmony_ci
72461bd4fe43Sopenharmony_ci# reorder the items at var $1 to align with the items order at var $2 .
72471bd4fe43Sopenharmony_ci# die if an item at $1 is not at $2 .
72481bd4fe43Sopenharmony_cireorder_by(){
72491bd4fe43Sopenharmony_ci    eval rb_in=\$$1
72501bd4fe43Sopenharmony_ci    eval rb_ordered=\$$2
72511bd4fe43Sopenharmony_ci
72521bd4fe43Sopenharmony_ci    for rb in $rb_in; do
72531bd4fe43Sopenharmony_ci        is_in $rb $rb_ordered || die "$rb at \$$1 is not at \$$2"
72541bd4fe43Sopenharmony_ci    done
72551bd4fe43Sopenharmony_ci
72561bd4fe43Sopenharmony_ci    rb_out=
72571bd4fe43Sopenharmony_ci    for rb in $rb_ordered; do
72581bd4fe43Sopenharmony_ci        is_in $rb $rb_in && rb_out="$rb_out$rb "
72591bd4fe43Sopenharmony_ci    done
72601bd4fe43Sopenharmony_ci    eval $1=\$rb_out
72611bd4fe43Sopenharmony_ci}
72621bd4fe43Sopenharmony_ci
72631bd4fe43Sopenharmony_ci# deps-expand fflib $1:  N x {append all expanded deps; unique}
72641bd4fe43Sopenharmony_ci# within a set of N items, N expansions are enough to expose a cycle.
72651bd4fe43Sopenharmony_ciexpand_deps(){
72661bd4fe43Sopenharmony_ci    unique ${1}_deps  # required for the early break test.
72671bd4fe43Sopenharmony_ci    for dummy in $LIBRARY_LIST; do  # N iteratios
72681bd4fe43Sopenharmony_ci        eval deps=\$${1}_deps
72691bd4fe43Sopenharmony_ci        append ${1}_deps $(map 'eval echo \$${v}_deps' $deps)
72701bd4fe43Sopenharmony_ci        unique ${1}_deps
72711bd4fe43Sopenharmony_ci        eval '[ ${#deps} = ${#'${1}_deps'} ]' && break  # doesn't expand anymore
72721bd4fe43Sopenharmony_ci    done
72731bd4fe43Sopenharmony_ci
72741bd4fe43Sopenharmony_ci    eval is_in $1 \$${1}_deps && die "Dependency cycle at ${1}_deps"
72751bd4fe43Sopenharmony_ci    reorder_by ${1}_deps LIBRARY_LIST  # linking order is expected later
72761bd4fe43Sopenharmony_ci}
72771bd4fe43Sopenharmony_ci
72781bd4fe43Sopenharmony_ci#we have to remove gpl from the deps here as some code assumes all lib deps are libs
72791bd4fe43Sopenharmony_cipostproc_deps="$(filter_out 'gpl' $postproc_deps)"
72801bd4fe43Sopenharmony_ci
72811bd4fe43Sopenharmony_cimap 'expand_deps $v' $LIBRARY_LIST
72821bd4fe43Sopenharmony_ci
72831bd4fe43Sopenharmony_ciif test "$quiet" != "yes"; then
72841bd4fe43Sopenharmony_ci
72851bd4fe43Sopenharmony_ciecho "install prefix            $prefix"
72861bd4fe43Sopenharmony_ciecho "source path               $source_path"
72871bd4fe43Sopenharmony_ciecho "C compiler                $cc"
72881bd4fe43Sopenharmony_ciecho "C library                 $libc_type"
72891bd4fe43Sopenharmony_ciif test "$host_cc" != "$cc"; then
72901bd4fe43Sopenharmony_ci    echo "host C compiler           $host_cc"
72911bd4fe43Sopenharmony_ci    echo "host C library            $host_libc_type"
72921bd4fe43Sopenharmony_cifi
72931bd4fe43Sopenharmony_ciecho "ARCH                      $arch ($cpu)"
72941bd4fe43Sopenharmony_ciif test "$build_suffix" != ""; then
72951bd4fe43Sopenharmony_ci    echo "build suffix              $build_suffix"
72961bd4fe43Sopenharmony_cifi
72971bd4fe43Sopenharmony_ciif test "$progs_suffix" != ""; then
72981bd4fe43Sopenharmony_ci    echo "progs suffix              $progs_suffix"
72991bd4fe43Sopenharmony_cifi
73001bd4fe43Sopenharmony_ciif test "$extra_version" != ""; then
73011bd4fe43Sopenharmony_ci    echo "version string suffix     $extra_version"
73021bd4fe43Sopenharmony_cifi
73031bd4fe43Sopenharmony_ciecho "big-endian                ${bigendian-no}"
73041bd4fe43Sopenharmony_ciecho "runtime cpu detection     ${runtime_cpudetect-no}"
73051bd4fe43Sopenharmony_ciif enabled x86; then
73061bd4fe43Sopenharmony_ci    echo "standalone assembly       ${x86asm-no}"
73071bd4fe43Sopenharmony_ci    echo "x86 assembler             ${x86asmexe}"
73081bd4fe43Sopenharmony_ci    echo "MMX enabled               ${mmx-no}"
73091bd4fe43Sopenharmony_ci    echo "MMXEXT enabled            ${mmxext-no}"
73101bd4fe43Sopenharmony_ci    echo "3DNow! enabled            ${amd3dnow-no}"
73111bd4fe43Sopenharmony_ci    echo "3DNow! extended enabled   ${amd3dnowext-no}"
73121bd4fe43Sopenharmony_ci    echo "SSE enabled               ${sse-no}"
73131bd4fe43Sopenharmony_ci    echo "SSSE3 enabled             ${ssse3-no}"
73141bd4fe43Sopenharmony_ci    echo "AESNI enabled             ${aesni-no}"
73151bd4fe43Sopenharmony_ci    echo "AVX enabled               ${avx-no}"
73161bd4fe43Sopenharmony_ci    echo "AVX2 enabled              ${avx2-no}"
73171bd4fe43Sopenharmony_ci    echo "AVX-512 enabled           ${avx512-no}"
73181bd4fe43Sopenharmony_ci    echo "XOP enabled               ${xop-no}"
73191bd4fe43Sopenharmony_ci    echo "FMA3 enabled              ${fma3-no}"
73201bd4fe43Sopenharmony_ci    echo "FMA4 enabled              ${fma4-no}"
73211bd4fe43Sopenharmony_ci    echo "i686 features enabled     ${i686-no}"
73221bd4fe43Sopenharmony_ci    echo "CMOV is fast              ${fast_cmov-no}"
73231bd4fe43Sopenharmony_ci    echo "EBX available             ${ebx_available-no}"
73241bd4fe43Sopenharmony_ci    echo "EBP available             ${ebp_available-no}"
73251bd4fe43Sopenharmony_cifi
73261bd4fe43Sopenharmony_ciif enabled aarch64; then
73271bd4fe43Sopenharmony_ci    echo "NEON enabled              ${neon-no}"
73281bd4fe43Sopenharmony_ci    echo "VFP enabled               ${vfp-no}"
73291bd4fe43Sopenharmony_cifi
73301bd4fe43Sopenharmony_ciif enabled arm; then
73311bd4fe43Sopenharmony_ci    echo "ARMv5TE enabled           ${armv5te-no}"
73321bd4fe43Sopenharmony_ci    echo "ARMv6 enabled             ${armv6-no}"
73331bd4fe43Sopenharmony_ci    echo "ARMv6T2 enabled           ${armv6t2-no}"
73341bd4fe43Sopenharmony_ci    echo "VFP enabled               ${vfp-no}"
73351bd4fe43Sopenharmony_ci    echo "NEON enabled              ${neon-no}"
73361bd4fe43Sopenharmony_ci    echo "THUMB enabled             ${thumb-no}"
73371bd4fe43Sopenharmony_cifi
73381bd4fe43Sopenharmony_ciif enabled mips; then
73391bd4fe43Sopenharmony_ci    echo "MIPS FPU enabled          ${mipsfpu-no}"
73401bd4fe43Sopenharmony_ci    echo "MIPS DSP R1 enabled       ${mipsdsp-no}"
73411bd4fe43Sopenharmony_ci    echo "MIPS DSP R2 enabled       ${mipsdspr2-no}"
73421bd4fe43Sopenharmony_ci    echo "MIPS MSA enabled          ${msa-no}"
73431bd4fe43Sopenharmony_ci    echo "MIPS MSA2 enabled         ${msa2-no}"
73441bd4fe43Sopenharmony_ci    echo "LOONGSON MMI enabled      ${mmi-no}"
73451bd4fe43Sopenharmony_cifi
73461bd4fe43Sopenharmony_ciif enabled ppc; then
73471bd4fe43Sopenharmony_ci    echo "AltiVec enabled           ${altivec-no}"
73481bd4fe43Sopenharmony_ci    echo "VSX enabled               ${vsx-no}"
73491bd4fe43Sopenharmony_ci    echo "POWER8 enabled            ${power8-no}"
73501bd4fe43Sopenharmony_ci    echo "PPC 4xx optimizations     ${ppc4xx-no}"
73511bd4fe43Sopenharmony_ci    echo "dcbzl available           ${dcbzl-no}"
73521bd4fe43Sopenharmony_cifi
73531bd4fe43Sopenharmony_ciecho "debug symbols             ${debug-no}"
73541bd4fe43Sopenharmony_ciecho "strip symbols             ${stripping-no}"
73551bd4fe43Sopenharmony_ciecho "optimize for size         ${small-no}"
73561bd4fe43Sopenharmony_ciecho "optimizations             ${optimizations-no}"
73571bd4fe43Sopenharmony_ciecho "static                    ${static-no}"
73581bd4fe43Sopenharmony_ciecho "shared                    ${shared-no}"
73591bd4fe43Sopenharmony_ciecho "postprocessing support    ${postproc-no}"
73601bd4fe43Sopenharmony_ciecho "network support           ${network-no}"
73611bd4fe43Sopenharmony_ciecho "threading support         ${thread_type-no}"
73621bd4fe43Sopenharmony_ciecho "safe bitstream reader     ${safe_bitstream_reader-no}"
73631bd4fe43Sopenharmony_ciecho "texi2html enabled         ${texi2html-no}"
73641bd4fe43Sopenharmony_ciecho "perl enabled              ${perl-no}"
73651bd4fe43Sopenharmony_ciecho "pod2man enabled           ${pod2man-no}"
73661bd4fe43Sopenharmony_ciecho "makeinfo enabled          ${makeinfo-no}"
73671bd4fe43Sopenharmony_ciecho "makeinfo supports HTML    ${makeinfo_html-no}"
73681bd4fe43Sopenharmony_citest -n "$random_seed" &&
73691bd4fe43Sopenharmony_ci    echo "random seed               ${random_seed}"
73701bd4fe43Sopenharmony_ciecho
73711bd4fe43Sopenharmony_ci
73721bd4fe43Sopenharmony_ciecho "External libraries:"
73731bd4fe43Sopenharmony_ciprint_enabled '' $EXTERNAL_LIBRARY_LIST $EXTERNAL_AUTODETECT_LIBRARY_LIST | print_in_columns
73741bd4fe43Sopenharmony_ciecho
73751bd4fe43Sopenharmony_ci
73761bd4fe43Sopenharmony_ciecho "External libraries providing hardware acceleration:"
73771bd4fe43Sopenharmony_ciprint_enabled '' $HWACCEL_LIBRARY_LIST $HWACCEL_AUTODETECT_LIBRARY_LIST | print_in_columns
73781bd4fe43Sopenharmony_ciecho
73791bd4fe43Sopenharmony_ci
73801bd4fe43Sopenharmony_ciecho "Libraries:"
73811bd4fe43Sopenharmony_ciprint_enabled '' $LIBRARY_LIST | print_in_columns
73821bd4fe43Sopenharmony_ciecho
73831bd4fe43Sopenharmony_ci
73841bd4fe43Sopenharmony_ciecho "Programs:"
73851bd4fe43Sopenharmony_ciprint_enabled '' $PROGRAM_LIST | print_in_columns
73861bd4fe43Sopenharmony_ciecho
73871bd4fe43Sopenharmony_ci
73881bd4fe43Sopenharmony_cifor type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
73891bd4fe43Sopenharmony_ci    echo "Enabled ${type}s:"
73901bd4fe43Sopenharmony_ci    eval list=\$$(toupper $type)_LIST
73911bd4fe43Sopenharmony_ci    print_enabled '_*' $list | print_in_columns
73921bd4fe43Sopenharmony_ci    echo
73931bd4fe43Sopenharmony_cidone
73941bd4fe43Sopenharmony_ci
73951bd4fe43Sopenharmony_ciif test -n "$ignore_tests"; then
73961bd4fe43Sopenharmony_ci    ignore_tests=$(echo $ignore_tests | tr ',' ' ')
73971bd4fe43Sopenharmony_ci    echo "Ignored FATE tests:"
73981bd4fe43Sopenharmony_ci    echo $ignore_tests | print_in_columns
73991bd4fe43Sopenharmony_ci    echo
74001bd4fe43Sopenharmony_cifi
74011bd4fe43Sopenharmony_ci
74021bd4fe43Sopenharmony_ciecho "License: $license"
74031bd4fe43Sopenharmony_ci
74041bd4fe43Sopenharmony_cifi # test "$quiet" != "yes"
74051bd4fe43Sopenharmony_ci
74061bd4fe43Sopenharmony_ciif test -n "$WARN_IF_GETS_DISABLED_LIST"; then
74071bd4fe43Sopenharmony_ci    for cfg in $WARN_IF_GETS_DISABLED_LIST; do
74081bd4fe43Sopenharmony_ci        if disabled $cfg; then
74091bd4fe43Sopenharmony_ci            varname=${cfg}_disable_reason
74101bd4fe43Sopenharmony_ci            eval "warn \"Disabled $cfg because \$$varname\""
74111bd4fe43Sopenharmony_ci        fi
74121bd4fe43Sopenharmony_ci    done
74131bd4fe43Sopenharmony_cifi
74141bd4fe43Sopenharmony_ci
74151bd4fe43Sopenharmony_ciif test -n "$WARNINGS"; then
74161bd4fe43Sopenharmony_ci    printf "\n%s%s$WARNINGS%s" "$warn_color" "$bold_color" "$reset_color"
74171bd4fe43Sopenharmony_ci    enabled fatal_warnings && exit 1
74181bd4fe43Sopenharmony_cifi
74191bd4fe43Sopenharmony_ci
74201bd4fe43Sopenharmony_citest -e Makefile || echo "include $source_path/Makefile" > Makefile
74211bd4fe43Sopenharmony_ci
74221bd4fe43Sopenharmony_ciesc(){
74231bd4fe43Sopenharmony_ci    echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
74241bd4fe43Sopenharmony_ci}
74251bd4fe43Sopenharmony_ci
74261bd4fe43Sopenharmony_ciecho "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" > ffbuild/config.fate
74271bd4fe43Sopenharmony_ci
74281bd4fe43Sopenharmony_cienabled stripping || strip="echo skipping strip"
74291bd4fe43Sopenharmony_cienabled stripping || striptype=""
74301bd4fe43Sopenharmony_ci
74311bd4fe43Sopenharmony_ciconfig_files="$TMPH ffbuild/config.mak doc/config.texi"
74321bd4fe43Sopenharmony_ci
74331bd4fe43Sopenharmony_cicat > ffbuild/config.mak <<EOF
74341bd4fe43Sopenharmony_ci# Automatically generated by configure - do not modify!
74351bd4fe43Sopenharmony_ciifndef FFMPEG_CONFIG_MAK
74361bd4fe43Sopenharmony_ciFFMPEG_CONFIG_MAK=1
74371bd4fe43Sopenharmony_ciFFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
74381bd4fe43Sopenharmony_ciprefix=$prefix
74391bd4fe43Sopenharmony_ciLIBDIR=\$(DESTDIR)$libdir
74401bd4fe43Sopenharmony_ciSHLIBDIR=\$(DESTDIR)$shlibdir
74411bd4fe43Sopenharmony_ciINCDIR=\$(DESTDIR)$incdir
74421bd4fe43Sopenharmony_ciBINDIR=\$(DESTDIR)$bindir
74431bd4fe43Sopenharmony_ciDATADIR=\$(DESTDIR)$datadir
74441bd4fe43Sopenharmony_ciDOCDIR=\$(DESTDIR)$docdir
74451bd4fe43Sopenharmony_ciMANDIR=\$(DESTDIR)$mandir
74461bd4fe43Sopenharmony_ciPKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir
74471bd4fe43Sopenharmony_ciINSTALL_NAME_DIR=$install_name_dir
74481bd4fe43Sopenharmony_ciSRC_PATH=$source_path
74491bd4fe43Sopenharmony_ciSRC_LINK=$source_link
74501bd4fe43Sopenharmony_ciifndef MAIN_MAKEFILE
74511bd4fe43Sopenharmony_ciSRC_PATH:=\$(SRC_PATH:.%=..%)
74521bd4fe43Sopenharmony_ciendif
74531bd4fe43Sopenharmony_ciCC_IDENT=$cc_ident
74541bd4fe43Sopenharmony_ciARCH=$arch
74551bd4fe43Sopenharmony_ciINTRINSICS=$intrinsics
74561bd4fe43Sopenharmony_ciEXTERN_PREFIX=$extern_prefix
74571bd4fe43Sopenharmony_ciCC=$cc
74581bd4fe43Sopenharmony_ciCXX=$cxx
74591bd4fe43Sopenharmony_ciAS=$as
74601bd4fe43Sopenharmony_ciOBJCC=$objcc
74611bd4fe43Sopenharmony_ciLD=${LD:=clang}
74621bd4fe43Sopenharmony_ciDEPCC=$dep_cc
74631bd4fe43Sopenharmony_ciDEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
74641bd4fe43Sopenharmony_ciDEPAS=$as
74651bd4fe43Sopenharmony_ciDEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
74661bd4fe43Sopenharmony_ciX86ASM=$x86asmexe
74671bd4fe43Sopenharmony_ciDEPX86ASM=$x86asmexe
74681bd4fe43Sopenharmony_ciDEPX86ASMFLAGS=\$(X86ASMFLAGS)
74691bd4fe43Sopenharmony_ciAR=$ar
74701bd4fe43Sopenharmony_ciARFLAGS=$arflags
74711bd4fe43Sopenharmony_ciAR_O=$ar_o
74721bd4fe43Sopenharmony_ciAR_CMD=$ar
74731bd4fe43Sopenharmony_ciNM_CMD=$nm
74741bd4fe43Sopenharmony_ciRANLIB=$ranlib
74751bd4fe43Sopenharmony_ciSTRIP=$strip
74761bd4fe43Sopenharmony_ciSTRIPTYPE=$striptype
74771bd4fe43Sopenharmony_ciNVCC=$nvcc
74781bd4fe43Sopenharmony_ciCP=cp -p
74791bd4fe43Sopenharmony_ciLN_S=$ln_s
74801bd4fe43Sopenharmony_ciCPPFLAGS=$CPPFLAGS
74811bd4fe43Sopenharmony_ciCFLAGS=$CFLAGS
74821bd4fe43Sopenharmony_ciCXXFLAGS=$CXXFLAGS
74831bd4fe43Sopenharmony_ciOBJCFLAGS=$OBJCFLAGS
74841bd4fe43Sopenharmony_ciASFLAGS=$ASFLAGS
74851bd4fe43Sopenharmony_ciNVCCFLAGS=$nvccflags
74861bd4fe43Sopenharmony_ciAS_C=$AS_C
74871bd4fe43Sopenharmony_ciAS_O=$AS_O
74881bd4fe43Sopenharmony_ciOBJCC_C=$OBJCC_C
74891bd4fe43Sopenharmony_ciOBJCC_E=$OBJCC_E
74901bd4fe43Sopenharmony_ciOBJCC_O=$OBJCC_O
74911bd4fe43Sopenharmony_ciCC_C=$CC_C
74921bd4fe43Sopenharmony_ciCC_E=$CC_E
74931bd4fe43Sopenharmony_ciCC_O=$CC_O
74941bd4fe43Sopenharmony_ciCXX_C=$CXX_C
74951bd4fe43Sopenharmony_ciCXX_O=$CXX_O
74961bd4fe43Sopenharmony_ciNVCC_C=$NVCC_C
74971bd4fe43Sopenharmony_ciNVCC_O=$NVCC_O
74981bd4fe43Sopenharmony_ciLD_O=$LD_O
74991bd4fe43Sopenharmony_ciX86ASM_O=$X86ASM_O
75001bd4fe43Sopenharmony_ciLD_LIB=$LD_LIB
75011bd4fe43Sopenharmony_ciLD_PATH=$LD_PATH
75021bd4fe43Sopenharmony_ciDLLTOOL=$dlltool
75031bd4fe43Sopenharmony_ciWINDRES=$windres
75041bd4fe43Sopenharmony_ciDOXYGEN=$doxygen
75051bd4fe43Sopenharmony_ciLDFLAGS=$LDFLAGS
75061bd4fe43Sopenharmony_ciLDEXEFLAGS=$LDEXEFLAGS
75071bd4fe43Sopenharmony_ciLDSOFLAGS=$LDSOFLAGS
75081bd4fe43Sopenharmony_ciSHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
75091bd4fe43Sopenharmony_ciASMSTRIPFLAGS=$ASMSTRIPFLAGS
75101bd4fe43Sopenharmony_ciX86ASMFLAGS=$X86ASMFLAGS
75111bd4fe43Sopenharmony_ciMSAFLAGS=$MSAFLAGS
75121bd4fe43Sopenharmony_ciMMIFLAGS=$MMIFLAGS
75131bd4fe43Sopenharmony_ciBUILDSUF=$build_suffix
75141bd4fe43Sopenharmony_ciPROGSSUF=$progs_suffix
75151bd4fe43Sopenharmony_ciFULLNAME=$FULLNAME
75161bd4fe43Sopenharmony_ciLIBPREF=$LIBPREF
75171bd4fe43Sopenharmony_ciLIBSUF=$LIBSUF
75181bd4fe43Sopenharmony_ciLIBNAME=$LIBNAME
75191bd4fe43Sopenharmony_ciSLIBPREF=$SLIBPREF
75201bd4fe43Sopenharmony_ciSLIBSUF=$SLIBSUF
75211bd4fe43Sopenharmony_ciEXESUF=$EXESUF
75221bd4fe43Sopenharmony_ciEXTRA_VERSION=$extra_version
75231bd4fe43Sopenharmony_ciCCDEP=$CCDEP
75241bd4fe43Sopenharmony_ciCXXDEP=$CXXDEP
75251bd4fe43Sopenharmony_ciCCDEP_FLAGS=$CCDEP_FLAGS
75261bd4fe43Sopenharmony_ciASDEP=$ASDEP
75271bd4fe43Sopenharmony_ciASDEP_FLAGS=$ASDEP_FLAGS
75281bd4fe43Sopenharmony_ciX86ASMDEP=$X86ASMDEP
75291bd4fe43Sopenharmony_ciX86ASMDEP_FLAGS=$X86ASMDEP_FLAGS
75301bd4fe43Sopenharmony_ciCC_DEPFLAGS=$CC_DEPFLAGS
75311bd4fe43Sopenharmony_ciAS_DEPFLAGS=$AS_DEPFLAGS
75321bd4fe43Sopenharmony_ciX86ASM_DEPFLAGS=$X86ASM_DEPFLAGS
75331bd4fe43Sopenharmony_ciHOSTCC=$host_cc
75341bd4fe43Sopenharmony_ciHOSTLD=$host_ld
75351bd4fe43Sopenharmony_ciHOSTCFLAGS=$host_cflags
75361bd4fe43Sopenharmony_ciHOSTCPPFLAGS=$host_cppflags
75371bd4fe43Sopenharmony_ciHOSTEXESUF=$HOSTEXESUF
75381bd4fe43Sopenharmony_ciHOSTLDFLAGS=$host_ldflags
75391bd4fe43Sopenharmony_ciHOSTEXTRALIBS=$host_extralibs
75401bd4fe43Sopenharmony_ciDEPHOSTCC=$host_cc
75411bd4fe43Sopenharmony_ciDEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
75421bd4fe43Sopenharmony_ciHOSTCCDEP=$HOSTCCDEP
75431bd4fe43Sopenharmony_ciHOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
75441bd4fe43Sopenharmony_ciHOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
75451bd4fe43Sopenharmony_ciHOSTCC_C=$HOSTCC_C
75461bd4fe43Sopenharmony_ciHOSTCC_O=$HOSTCC_O
75471bd4fe43Sopenharmony_ciHOSTLD_O=$HOSTLD_O
75481bd4fe43Sopenharmony_ciTARGET_EXEC=$target_exec $target_exec_args
75491bd4fe43Sopenharmony_ciTARGET_PATH=$target_path
75501bd4fe43Sopenharmony_ciTARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
75511bd4fe43Sopenharmony_ciCFLAGS-ffplay=${sdl2_cflags}
75521bd4fe43Sopenharmony_ciCFLAGS_HEADERS=$CFLAGS_HEADERS
75531bd4fe43Sopenharmony_ciLIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
75541bd4fe43Sopenharmony_ciEXTRALIBS=$extralibs
75551bd4fe43Sopenharmony_ciCOMPAT_OBJS=$compat_objs
75561bd4fe43Sopenharmony_ciINSTALL=$install
75571bd4fe43Sopenharmony_ciLIBTARGET=${LIBTARGET}
75581bd4fe43Sopenharmony_ciSLIBNAME=${SLIBNAME}
75591bd4fe43Sopenharmony_ciSLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
75601bd4fe43Sopenharmony_ciSLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
75611bd4fe43Sopenharmony_ciSLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
75621bd4fe43Sopenharmony_ciSLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
75631bd4fe43Sopenharmony_ciSLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
75641bd4fe43Sopenharmony_ciSLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
75651bd4fe43Sopenharmony_ciSLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
75661bd4fe43Sopenharmony_ciSLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
75671bd4fe43Sopenharmony_ciVERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
75681bd4fe43Sopenharmony_ciSAMPLES:=${samples:-\$(FATE_SAMPLES)}
75691bd4fe43Sopenharmony_ciNOREDZONE_FLAGS=$noredzone_flags
75701bd4fe43Sopenharmony_ciLIBFUZZER_PATH=$libfuzzer_path
75711bd4fe43Sopenharmony_ciIGNORE_TESTS=$ignore_tests
75721bd4fe43Sopenharmony_ciEOF
75731bd4fe43Sopenharmony_ci
75741bd4fe43Sopenharmony_cimap 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST
75751bd4fe43Sopenharmony_ci
75761bd4fe43Sopenharmony_cifor entry in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
75771bd4fe43Sopenharmony_ci    eval echo "EXTRALIBS-${entry}=\$${entry}_extralibs" >> ffbuild/config.mak
75781bd4fe43Sopenharmony_cidone
75791bd4fe43Sopenharmony_ci
75801bd4fe43Sopenharmony_cicat > $TMPH <<EOF
75811bd4fe43Sopenharmony_ci/* Automatically generated by configure - do not modify! */
75821bd4fe43Sopenharmony_ci#ifndef FFMPEG_CONFIG_H
75831bd4fe43Sopenharmony_ci#define FFMPEG_CONFIG_H
75841bd4fe43Sopenharmony_ci#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
75851bd4fe43Sopenharmony_ci#define FFMPEG_LICENSE "$(c_escape $license)"
75861bd4fe43Sopenharmony_ci#define CONFIG_THIS_YEAR 2021
75871bd4fe43Sopenharmony_ci#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
75881bd4fe43Sopenharmony_ci#define AVCONV_DATADIR "$(eval c_escape $datadir)"
75891bd4fe43Sopenharmony_ci#define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
75901bd4fe43Sopenharmony_ci#define OS_NAME $target_os
75911bd4fe43Sopenharmony_ci#define av_restrict $restrict_keyword
75921bd4fe43Sopenharmony_ci#define EXTERN_PREFIX "${extern_prefix}"
75931bd4fe43Sopenharmony_ci#define EXTERN_ASM ${extern_prefix}
75941bd4fe43Sopenharmony_ci#define BUILDSUF "$build_suffix"
75951bd4fe43Sopenharmony_ci#define SLIBSUF "$SLIBSUF"
75961bd4fe43Sopenharmony_ci#define HAVE_MMX2 HAVE_MMXEXT
75971bd4fe43Sopenharmony_ci#define SWS_MAX_FILTER_SIZE $sws_max_filter_size
75981bd4fe43Sopenharmony_ciEOF
75991bd4fe43Sopenharmony_ci
76001bd4fe43Sopenharmony_citest -n "$assert_level" &&
76011bd4fe43Sopenharmony_ci    echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
76021bd4fe43Sopenharmony_ci
76031bd4fe43Sopenharmony_citest -n "$malloc_prefix" &&
76041bd4fe43Sopenharmony_ci    echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
76051bd4fe43Sopenharmony_ci
76061bd4fe43Sopenharmony_ciif enabled x86asm; then
76071bd4fe43Sopenharmony_ci    append config_files $TMPASM
76081bd4fe43Sopenharmony_ci    cat > $TMPASM <<EOF
76091bd4fe43Sopenharmony_ci; Automatically generated by configure - do not modify!
76101bd4fe43Sopenharmony_ciEOF
76111bd4fe43Sopenharmony_cifi
76121bd4fe43Sopenharmony_ci
76131bd4fe43Sopenharmony_cienabled getenv || echo "#define getenv(x) NULL" >> $TMPH
76141bd4fe43Sopenharmony_ci
76151bd4fe43Sopenharmony_ci
76161bd4fe43Sopenharmony_cimkdir -p doc
76171bd4fe43Sopenharmony_cimkdir -p tests
76181bd4fe43Sopenharmony_cimkdir -p tests/api
76191bd4fe43Sopenharmony_ciecho "@c auto-generated by configure - do not modify! " > doc/config.texi
76201bd4fe43Sopenharmony_ci
76211bd4fe43Sopenharmony_ciprint_config ARCH_   "$config_files" $ARCH_LIST
76221bd4fe43Sopenharmony_ciprint_config HAVE_   "$config_files" $HAVE_LIST
76231bd4fe43Sopenharmony_ciprint_config CONFIG_ "$config_files" $CONFIG_LIST       \
76241bd4fe43Sopenharmony_ci                                     $CONFIG_EXTRA      \
76251bd4fe43Sopenharmony_ci                                     $ALL_COMPONENTS    \
76261bd4fe43Sopenharmony_ci
76271bd4fe43Sopenharmony_ciecho "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
76281bd4fe43Sopenharmony_ciecho "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak
76291bd4fe43Sopenharmony_ci
76301bd4fe43Sopenharmony_ci# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
76311bd4fe43Sopenharmony_cicp_if_changed $TMPH config.h
76321bd4fe43Sopenharmony_citouch ffbuild/.config
76331bd4fe43Sopenharmony_ci
76341bd4fe43Sopenharmony_cienabled x86asm && cp_if_changed $TMPASM config.asm
76351bd4fe43Sopenharmony_ci
76361bd4fe43Sopenharmony_cicat > $TMPH <<EOF
76371bd4fe43Sopenharmony_ci/* Generated by ffmpeg configure */
76381bd4fe43Sopenharmony_ci#ifndef AVUTIL_AVCONFIG_H
76391bd4fe43Sopenharmony_ci#define AVUTIL_AVCONFIG_H
76401bd4fe43Sopenharmony_ciEOF
76411bd4fe43Sopenharmony_ci
76421bd4fe43Sopenharmony_ciprint_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
76431bd4fe43Sopenharmony_ci
76441bd4fe43Sopenharmony_ciecho "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
76451bd4fe43Sopenharmony_ci
76461bd4fe43Sopenharmony_cicp_if_changed $TMPH libavutil/avconfig.h
76471bd4fe43Sopenharmony_ci
76481bd4fe43Sopenharmony_ci# full_filter_name_foo=vf_foo
76491bd4fe43Sopenharmony_ci# full_filter_name_bar=asrc_bar
76501bd4fe43Sopenharmony_ci# ...
76511bd4fe43Sopenharmony_cieval "$(sed -n "s/^extern AVFilter ff_\([avfsinkrc]\{2,5\}\)_\(.*\);/full_filter_name_\2=\1_\2/p" $source_path/libavfilter/allfilters.c)"
76521bd4fe43Sopenharmony_ci
76531bd4fe43Sopenharmony_ci# generate the lists of enabled components
76541bd4fe43Sopenharmony_ciprint_enabled_components(){
76551bd4fe43Sopenharmony_ci    file=$1
76561bd4fe43Sopenharmony_ci    struct_name=$2
76571bd4fe43Sopenharmony_ci    name=$3
76581bd4fe43Sopenharmony_ci    shift 3
76591bd4fe43Sopenharmony_ci    echo "static const $struct_name * const $name[] = {" > $TMPH
76601bd4fe43Sopenharmony_ci    for c in $*; do
76611bd4fe43Sopenharmony_ci        if enabled $c; then
76621bd4fe43Sopenharmony_ci            case $name in
76631bd4fe43Sopenharmony_ci                filter_list)
76641bd4fe43Sopenharmony_ci                    eval c=\$full_filter_name_${c%_filter}
76651bd4fe43Sopenharmony_ci                ;;
76661bd4fe43Sopenharmony_ci                indev_list)
76671bd4fe43Sopenharmony_ci                    c=${c%_indev}_demuxer
76681bd4fe43Sopenharmony_ci                ;;
76691bd4fe43Sopenharmony_ci                outdev_list)
76701bd4fe43Sopenharmony_ci                    c=${c%_outdev}_muxer
76711bd4fe43Sopenharmony_ci                ;;
76721bd4fe43Sopenharmony_ci            esac
76731bd4fe43Sopenharmony_ci            printf "    &ff_%s,\n" $c >> $TMPH
76741bd4fe43Sopenharmony_ci        fi
76751bd4fe43Sopenharmony_ci    done
76761bd4fe43Sopenharmony_ci    if [ "$name" = "filter_list" ]; then
76771bd4fe43Sopenharmony_ci        for c in asrc_abuffer vsrc_buffer asink_abuffer vsink_buffer; do
76781bd4fe43Sopenharmony_ci            printf "    &ff_%s,\n" $c >> $TMPH
76791bd4fe43Sopenharmony_ci        done
76801bd4fe43Sopenharmony_ci    fi
76811bd4fe43Sopenharmony_ci    echo "    NULL };" >> $TMPH
76821bd4fe43Sopenharmony_ci    cp_if_changed $TMPH $file
76831bd4fe43Sopenharmony_ci}
76841bd4fe43Sopenharmony_ci
76851bd4fe43Sopenharmony_ciprint_enabled_components libavfilter/filter_list.c AVFilter filter_list $FILTER_LIST
76861bd4fe43Sopenharmony_ciprint_enabled_components libavcodec/codec_list.c AVCodec codec_list $CODEC_LIST
76871bd4fe43Sopenharmony_ciprint_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST
76881bd4fe43Sopenharmony_ciprint_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
76891bd4fe43Sopenharmony_ciprint_enabled_components libavformat/demuxer_list.c AVInputFormat demuxer_list $DEMUXER_LIST
76901bd4fe43Sopenharmony_ciprint_enabled_components libavformat/muxer_list.c AVOutputFormat muxer_list $MUXER_LIST
76911bd4fe43Sopenharmony_ciprint_enabled_components libavdevice/indev_list.c AVInputFormat indev_list $INDEV_LIST
76921bd4fe43Sopenharmony_ciprint_enabled_components libavdevice/outdev_list.c AVOutputFormat outdev_list $OUTDEV_LIST
76931bd4fe43Sopenharmony_ciprint_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
76941bd4fe43Sopenharmony_ci
76951bd4fe43Sopenharmony_ci# Settings for pkg-config files
76961bd4fe43Sopenharmony_ci
76971bd4fe43Sopenharmony_cicat > $TMPH <<EOF
76981bd4fe43Sopenharmony_ci# Automatically generated by configure - do not modify!
76991bd4fe43Sopenharmony_cishared=$shared
77001bd4fe43Sopenharmony_cibuild_suffix=$build_suffix
77011bd4fe43Sopenharmony_ciprefix=$prefix
77021bd4fe43Sopenharmony_cilibdir=$libdir
77031bd4fe43Sopenharmony_ciincdir=$incdir
77041bd4fe43Sopenharmony_cirpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}")
77051bd4fe43Sopenharmony_cisource_path=${source_path}
77061bd4fe43Sopenharmony_ciLIBPREF=${LIBPREF}
77071bd4fe43Sopenharmony_ciLIBSUF=${LIBSUF}
77081bd4fe43Sopenharmony_ciextralibs_avutil="$avutil_extralibs"
77091bd4fe43Sopenharmony_ciextralibs_avcodec="$avcodec_extralibs"
77101bd4fe43Sopenharmony_ciextralibs_avformat="$avformat_extralibs"
77111bd4fe43Sopenharmony_ciextralibs_avdevice="$avdevice_extralibs"
77121bd4fe43Sopenharmony_ciextralibs_avfilter="$avfilter_extralibs"
77131bd4fe43Sopenharmony_ciextralibs_avresample="$avresample_extralibs"
77141bd4fe43Sopenharmony_ciextralibs_postproc="$postproc_extralibs"
77151bd4fe43Sopenharmony_ciextralibs_swscale="$swscale_extralibs"
77161bd4fe43Sopenharmony_ciextralibs_swresample="$swresample_extralibs"
77171bd4fe43Sopenharmony_ciEOF
77181bd4fe43Sopenharmony_ci
77191bd4fe43Sopenharmony_cifor lib in $LIBRARY_LIST; do
77201bd4fe43Sopenharmony_ci    lib_deps="$(eval echo \$${lib}_deps)"
77211bd4fe43Sopenharmony_ci    echo ${lib}_deps=\"$lib_deps\" >> $TMPH
77221bd4fe43Sopenharmony_cidone
77231bd4fe43Sopenharmony_ci
77241bd4fe43Sopenharmony_cicp_if_changed $TMPH ffbuild/config.sh
7725