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