1cabdff1aSopenharmony_ci#!/bin/sh 2cabdff1aSopenharmony_ci# 3cabdff1aSopenharmony_ci# FFmpeg configure script 4cabdff1aSopenharmony_ci# 5cabdff1aSopenharmony_ci# Copyright (c) 2000-2002 Fabrice Bellard 6cabdff1aSopenharmony_ci# Copyright (c) 2005-2008 Diego Biurrun 7cabdff1aSopenharmony_ci# Copyright (c) 2005-2008 Mans Rullgard 8cabdff1aSopenharmony_ci# 9cabdff1aSopenharmony_ci 10cabdff1aSopenharmony_ci# Prevent locale nonsense from breaking basic text processing. 11cabdff1aSopenharmony_ciLC_ALL=C 12cabdff1aSopenharmony_ciexport LC_ALL 13cabdff1aSopenharmony_ci 14cabdff1aSopenharmony_ci# make sure we are running under a compatible shell 15cabdff1aSopenharmony_ci# try to make this part work with most shells 16cabdff1aSopenharmony_ci 17cabdff1aSopenharmony_citry_exec(){ 18cabdff1aSopenharmony_ci echo "Trying shell $1" 19cabdff1aSopenharmony_ci type "$1" > /dev/null 2>&1 && exec "$@" 20cabdff1aSopenharmony_ci} 21cabdff1aSopenharmony_ci 22cabdff1aSopenharmony_ciunset foo 23cabdff1aSopenharmony_ci(: ${foo%%bar}) 2> /dev/null 24cabdff1aSopenharmony_ciE1="$?" 25cabdff1aSopenharmony_ci 26cabdff1aSopenharmony_ci(: ${foo?}) 2> /dev/null 27cabdff1aSopenharmony_ciE2="$?" 28cabdff1aSopenharmony_ci 29cabdff1aSopenharmony_ciif test "$E1" != 0 || test "$E2" = 0; then 30cabdff1aSopenharmony_ci echo "Broken shell detected. Trying alternatives." 31cabdff1aSopenharmony_ci export FF_CONF_EXEC 32cabdff1aSopenharmony_ci if test "0$FF_CONF_EXEC" -lt 1; then 33cabdff1aSopenharmony_ci FF_CONF_EXEC=1 34cabdff1aSopenharmony_ci try_exec bash "$0" "$@" 35cabdff1aSopenharmony_ci fi 36cabdff1aSopenharmony_ci if test "0$FF_CONF_EXEC" -lt 2; then 37cabdff1aSopenharmony_ci FF_CONF_EXEC=2 38cabdff1aSopenharmony_ci try_exec ksh "$0" "$@" 39cabdff1aSopenharmony_ci fi 40cabdff1aSopenharmony_ci if test "0$FF_CONF_EXEC" -lt 3; then 41cabdff1aSopenharmony_ci FF_CONF_EXEC=3 42cabdff1aSopenharmony_ci try_exec /usr/xpg4/bin/sh "$0" "$@" 43cabdff1aSopenharmony_ci fi 44cabdff1aSopenharmony_ci echo "No compatible shell script interpreter found." 45cabdff1aSopenharmony_ci echo "This configure script requires a POSIX-compatible shell" 46cabdff1aSopenharmony_ci echo "such as bash or ksh." 47cabdff1aSopenharmony_ci echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH." 48cabdff1aSopenharmony_ci echo "Instead, install a working POSIX-compatible shell." 49cabdff1aSopenharmony_ci echo "Disabling this configure test will create a broken FFmpeg." 50cabdff1aSopenharmony_ci if test "$BASH_VERSION" = '2.04.0(1)-release'; then 51cabdff1aSopenharmony_ci echo "This bash version ($BASH_VERSION) is broken on your platform." 52cabdff1aSopenharmony_ci echo "Upgrade to a later version if available." 53cabdff1aSopenharmony_ci fi 54cabdff1aSopenharmony_ci exit 1 55cabdff1aSopenharmony_cifi 56cabdff1aSopenharmony_ci 57cabdff1aSopenharmony_citest -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH 58cabdff1aSopenharmony_ci 59cabdff1aSopenharmony_cishow_help(){ 60cabdff1aSopenharmony_ci cat <<EOF 61cabdff1aSopenharmony_ciUsage: configure [options] 62cabdff1aSopenharmony_ciOptions: [defaults in brackets after descriptions] 63cabdff1aSopenharmony_ci 64cabdff1aSopenharmony_ciHelp options: 65cabdff1aSopenharmony_ci --help print this message 66cabdff1aSopenharmony_ci --quiet Suppress showing informative output 67cabdff1aSopenharmony_ci --list-decoders show all available decoders 68cabdff1aSopenharmony_ci --list-encoders show all available encoders 69cabdff1aSopenharmony_ci --list-hwaccels show all available hardware accelerators 70cabdff1aSopenharmony_ci --list-demuxers show all available demuxers 71cabdff1aSopenharmony_ci --list-muxers show all available muxers 72cabdff1aSopenharmony_ci --list-parsers show all available parsers 73cabdff1aSopenharmony_ci --list-protocols show all available protocols 74cabdff1aSopenharmony_ci --list-bsfs show all available bitstream filters 75cabdff1aSopenharmony_ci --list-indevs show all available input devices 76cabdff1aSopenharmony_ci --list-outdevs show all available output devices 77cabdff1aSopenharmony_ci --list-filters show all available filters 78cabdff1aSopenharmony_ci 79cabdff1aSopenharmony_ciStandard options: 80cabdff1aSopenharmony_ci --logfile=FILE log tests and output to FILE [ffbuild/config.log] 81cabdff1aSopenharmony_ci --disable-logging do not log configure debug information 82cabdff1aSopenharmony_ci --fatal-warnings fail if any configure warning is generated 83cabdff1aSopenharmony_ci --prefix=PREFIX install in PREFIX [$prefix_default] 84cabdff1aSopenharmony_ci --bindir=DIR install binaries in DIR [PREFIX/bin] 85cabdff1aSopenharmony_ci --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg] 86cabdff1aSopenharmony_ci --docdir=DIR install documentation in DIR [PREFIX/share/doc/ffmpeg] 87cabdff1aSopenharmony_ci --libdir=DIR install libs in DIR [PREFIX/lib] 88cabdff1aSopenharmony_ci --shlibdir=DIR install shared libs in DIR [LIBDIR] 89cabdff1aSopenharmony_ci --incdir=DIR install includes in DIR [PREFIX/include] 90cabdff1aSopenharmony_ci --mandir=DIR install man page in DIR [PREFIX/share/man] 91cabdff1aSopenharmony_ci --pkgconfigdir=DIR install pkg-config files in DIR [LIBDIR/pkgconfig] 92cabdff1aSopenharmony_ci --enable-rpath use rpath to allow installing libraries in paths 93cabdff1aSopenharmony_ci not part of the dynamic linker search path 94cabdff1aSopenharmony_ci use rpath when linking programs (USE WITH CARE) 95cabdff1aSopenharmony_ci --install-name-dir=DIR Darwin directory name for installed targets 96cabdff1aSopenharmony_ci 97cabdff1aSopenharmony_ciLicensing options: 98cabdff1aSopenharmony_ci --enable-gpl allow use of GPL code, the resulting libs 99cabdff1aSopenharmony_ci and binaries will be under GPL [no] 100cabdff1aSopenharmony_ci --enable-version3 upgrade (L)GPL to version 3 [no] 101cabdff1aSopenharmony_ci --enable-nonfree allow use of nonfree code, the resulting libs 102cabdff1aSopenharmony_ci and binaries will be unredistributable [no] 103cabdff1aSopenharmony_ci 104cabdff1aSopenharmony_ciConfiguration options: 105cabdff1aSopenharmony_ci --disable-static do not build static libraries [no] 106cabdff1aSopenharmony_ci --enable-shared build shared libraries [no] 107cabdff1aSopenharmony_ci --enable-small optimize for size instead of speed 108cabdff1aSopenharmony_ci --disable-runtime-cpudetect disable detecting CPU capabilities at runtime (smaller binary) 109cabdff1aSopenharmony_ci --enable-gray enable full grayscale support (slower color) 110cabdff1aSopenharmony_ci --disable-swscale-alpha disable alpha channel support in swscale 111cabdff1aSopenharmony_ci --disable-all disable building components, libraries and programs 112cabdff1aSopenharmony_ci --disable-autodetect disable automatically detected external libraries [no] 113cabdff1aSopenharmony_ci 114cabdff1aSopenharmony_ciProgram options: 115cabdff1aSopenharmony_ci --disable-programs do not build command line programs 116cabdff1aSopenharmony_ci --disable-ffmpeg disable ffmpeg build 117cabdff1aSopenharmony_ci --disable-ffplay disable ffplay build 118cabdff1aSopenharmony_ci --disable-ffprobe disable ffprobe build 119cabdff1aSopenharmony_ci 120cabdff1aSopenharmony_ciDocumentation options: 121cabdff1aSopenharmony_ci --disable-doc do not build documentation 122cabdff1aSopenharmony_ci --disable-htmlpages do not build HTML documentation pages 123cabdff1aSopenharmony_ci --disable-manpages do not build man documentation pages 124cabdff1aSopenharmony_ci --disable-podpages do not build POD documentation pages 125cabdff1aSopenharmony_ci --disable-txtpages do not build text documentation pages 126cabdff1aSopenharmony_ci 127cabdff1aSopenharmony_ciComponent options: 128cabdff1aSopenharmony_ci --disable-avdevice disable libavdevice build 129cabdff1aSopenharmony_ci --disable-avcodec disable libavcodec build 130cabdff1aSopenharmony_ci --disable-avformat disable libavformat build 131cabdff1aSopenharmony_ci --disable-swresample disable libswresample build 132cabdff1aSopenharmony_ci --disable-swscale disable libswscale build 133cabdff1aSopenharmony_ci --disable-postproc disable libpostproc build 134cabdff1aSopenharmony_ci --disable-avfilter disable libavfilter build 135cabdff1aSopenharmony_ci --disable-pthreads disable pthreads [autodetect] 136cabdff1aSopenharmony_ci --disable-w32threads disable Win32 threads [autodetect] 137cabdff1aSopenharmony_ci --disable-os2threads disable OS/2 threads [autodetect] 138cabdff1aSopenharmony_ci --disable-network disable network support [no] 139cabdff1aSopenharmony_ci --disable-dct disable DCT code 140cabdff1aSopenharmony_ci --disable-dwt disable DWT code 141cabdff1aSopenharmony_ci --disable-error-resilience disable error resilience code 142cabdff1aSopenharmony_ci --disable-lsp disable LSP code 143cabdff1aSopenharmony_ci --disable-mdct disable MDCT code 144cabdff1aSopenharmony_ci --disable-rdft disable RDFT code 145cabdff1aSopenharmony_ci --disable-fft disable FFT code 146cabdff1aSopenharmony_ci --disable-faan disable floating point AAN (I)DCT code 147cabdff1aSopenharmony_ci --disable-pixelutils disable pixel utils in libavutil 148cabdff1aSopenharmony_ci 149cabdff1aSopenharmony_ciIndividual component options: 150cabdff1aSopenharmony_ci --disable-everything disable all components listed below 151cabdff1aSopenharmony_ci --disable-encoder=NAME disable encoder NAME 152cabdff1aSopenharmony_ci --enable-encoder=NAME enable encoder NAME 153cabdff1aSopenharmony_ci --disable-encoders disable all encoders 154cabdff1aSopenharmony_ci --disable-decoder=NAME disable decoder NAME 155cabdff1aSopenharmony_ci --enable-decoder=NAME enable decoder NAME 156cabdff1aSopenharmony_ci --disable-decoders disable all decoders 157cabdff1aSopenharmony_ci --disable-hwaccel=NAME disable hwaccel NAME 158cabdff1aSopenharmony_ci --enable-hwaccel=NAME enable hwaccel NAME 159cabdff1aSopenharmony_ci --disable-hwaccels disable all hwaccels 160cabdff1aSopenharmony_ci --disable-muxer=NAME disable muxer NAME 161cabdff1aSopenharmony_ci --enable-muxer=NAME enable muxer NAME 162cabdff1aSopenharmony_ci --disable-muxers disable all muxers 163cabdff1aSopenharmony_ci --disable-demuxer=NAME disable demuxer NAME 164cabdff1aSopenharmony_ci --enable-demuxer=NAME enable demuxer NAME 165cabdff1aSopenharmony_ci --disable-demuxers disable all demuxers 166cabdff1aSopenharmony_ci --enable-parser=NAME enable parser NAME 167cabdff1aSopenharmony_ci --disable-parser=NAME disable parser NAME 168cabdff1aSopenharmony_ci --disable-parsers disable all parsers 169cabdff1aSopenharmony_ci --enable-bsf=NAME enable bitstream filter NAME 170cabdff1aSopenharmony_ci --disable-bsf=NAME disable bitstream filter NAME 171cabdff1aSopenharmony_ci --disable-bsfs disable all bitstream filters 172cabdff1aSopenharmony_ci --enable-protocol=NAME enable protocol NAME 173cabdff1aSopenharmony_ci --disable-protocol=NAME disable protocol NAME 174cabdff1aSopenharmony_ci --disable-protocols disable all protocols 175cabdff1aSopenharmony_ci --enable-indev=NAME enable input device NAME 176cabdff1aSopenharmony_ci --disable-indev=NAME disable input device NAME 177cabdff1aSopenharmony_ci --disable-indevs disable input devices 178cabdff1aSopenharmony_ci --enable-outdev=NAME enable output device NAME 179cabdff1aSopenharmony_ci --disable-outdev=NAME disable output device NAME 180cabdff1aSopenharmony_ci --disable-outdevs disable output devices 181cabdff1aSopenharmony_ci --disable-devices disable all devices 182cabdff1aSopenharmony_ci --enable-filter=NAME enable filter NAME 183cabdff1aSopenharmony_ci --disable-filter=NAME disable filter NAME 184cabdff1aSopenharmony_ci --disable-filters disable all filters 185cabdff1aSopenharmony_ci 186cabdff1aSopenharmony_ciExternal library support: 187cabdff1aSopenharmony_ci 188cabdff1aSopenharmony_ci Using any of the following switches will allow FFmpeg to link to the 189cabdff1aSopenharmony_ci corresponding external library. All the components depending on that library 190cabdff1aSopenharmony_ci will become enabled, if all their other dependencies are met and they are not 191cabdff1aSopenharmony_ci explicitly disabled. E.g. --enable-libopus will enable linking to 192cabdff1aSopenharmony_ci libopus and allow the libopus encoder to be built, unless it is 193cabdff1aSopenharmony_ci specifically disabled with --disable-encoder=libopus. 194cabdff1aSopenharmony_ci 195cabdff1aSopenharmony_ci Note that only the system libraries are auto-detected. All the other external 196cabdff1aSopenharmony_ci libraries must be explicitly enabled. 197cabdff1aSopenharmony_ci 198cabdff1aSopenharmony_ci Also note that the following help text describes the purpose of the libraries 199cabdff1aSopenharmony_ci themselves, not all their features will necessarily be usable by FFmpeg. 200cabdff1aSopenharmony_ci 201cabdff1aSopenharmony_ci --disable-alsa disable ALSA support [autodetect] 202cabdff1aSopenharmony_ci --disable-appkit disable Apple AppKit framework [autodetect] 203cabdff1aSopenharmony_ci --disable-avfoundation disable Apple AVFoundation framework [autodetect] 204cabdff1aSopenharmony_ci --enable-avisynth enable reading of AviSynth script files [no] 205cabdff1aSopenharmony_ci --disable-bzlib disable bzlib [autodetect] 206cabdff1aSopenharmony_ci --disable-coreimage disable Apple CoreImage framework [autodetect] 207cabdff1aSopenharmony_ci --enable-chromaprint enable audio fingerprinting with chromaprint [no] 208cabdff1aSopenharmony_ci --enable-frei0r enable frei0r video filtering [no] 209cabdff1aSopenharmony_ci --enable-gcrypt enable gcrypt, needed for rtmp(t)e support 210cabdff1aSopenharmony_ci if openssl, librtmp or gmp is not used [no] 211cabdff1aSopenharmony_ci --enable-gmp enable gmp, needed for rtmp(t)e support 212cabdff1aSopenharmony_ci if openssl or librtmp is not used [no] 213cabdff1aSopenharmony_ci --enable-gnutls enable gnutls, needed for https support 214cabdff1aSopenharmony_ci if openssl, libtls or mbedtls is not used [no] 215cabdff1aSopenharmony_ci --disable-iconv disable iconv [autodetect] 216cabdff1aSopenharmony_ci --enable-jni enable JNI support [no] 217cabdff1aSopenharmony_ci --enable-ladspa enable LADSPA audio filtering [no] 218cabdff1aSopenharmony_ci --enable-lcms2 enable ICC profile support via LittleCMS 2 [no] 219cabdff1aSopenharmony_ci --enable-libaom enable AV1 video encoding/decoding via libaom [no] 220cabdff1aSopenharmony_ci --enable-libaribb24 enable ARIB text and caption decoding via libaribb24 [no] 221cabdff1aSopenharmony_ci --enable-libass enable libass subtitles rendering, 222cabdff1aSopenharmony_ci needed for subtitles and ass filter [no] 223cabdff1aSopenharmony_ci --enable-libbluray enable BluRay reading using libbluray [no] 224cabdff1aSopenharmony_ci --enable-libbs2b enable bs2b DSP library [no] 225cabdff1aSopenharmony_ci --enable-libcaca enable textual display using libcaca [no] 226cabdff1aSopenharmony_ci --enable-libcelt enable CELT decoding via libcelt [no] 227cabdff1aSopenharmony_ci --enable-libcdio enable audio CD grabbing with libcdio [no] 228cabdff1aSopenharmony_ci --enable-libcodec2 enable codec2 en/decoding using libcodec2 [no] 229cabdff1aSopenharmony_ci --enable-libdav1d enable AV1 decoding via libdav1d [no] 230cabdff1aSopenharmony_ci --enable-libdavs2 enable AVS2 decoding via libdavs2 [no] 231cabdff1aSopenharmony_ci --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394 232cabdff1aSopenharmony_ci and libraw1394 [no] 233cabdff1aSopenharmony_ci --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no] 234cabdff1aSopenharmony_ci --enable-libflite enable flite (voice synthesis) support via libflite [no] 235cabdff1aSopenharmony_ci --enable-libfontconfig enable libfontconfig, useful for drawtext filter [no] 236cabdff1aSopenharmony_ci --enable-libfreetype enable libfreetype, needed for drawtext filter [no] 237cabdff1aSopenharmony_ci --enable-libfribidi enable libfribidi, improves drawtext filter [no] 238cabdff1aSopenharmony_ci --enable-libglslang enable GLSL->SPIRV compilation via libglslang [no] 239cabdff1aSopenharmony_ci --enable-libgme enable Game Music Emu via libgme [no] 240cabdff1aSopenharmony_ci --enable-libgsm enable GSM de/encoding via libgsm [no] 241cabdff1aSopenharmony_ci --enable-libiec61883 enable iec61883 via libiec61883 [no] 242cabdff1aSopenharmony_ci --enable-libilbc enable iLBC de/encoding via libilbc [no] 243cabdff1aSopenharmony_ci --enable-libjack enable JACK audio sound server [no] 244cabdff1aSopenharmony_ci --enable-libjxl enable JPEG XL de/encoding via libjxl [no] 245cabdff1aSopenharmony_ci --enable-libklvanc enable Kernel Labs VANC processing [no] 246cabdff1aSopenharmony_ci --enable-libkvazaar enable HEVC encoding via libkvazaar [no] 247cabdff1aSopenharmony_ci --enable-liblensfun enable lensfun lens correction [no] 248cabdff1aSopenharmony_ci --enable-libmodplug enable ModPlug via libmodplug [no] 249cabdff1aSopenharmony_ci --enable-libmp3lame enable MP3 encoding via libmp3lame [no] 250cabdff1aSopenharmony_ci --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no] 251cabdff1aSopenharmony_ci --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] 252cabdff1aSopenharmony_ci --enable-libopencv enable video filtering via libopencv [no] 253cabdff1aSopenharmony_ci --enable-libopenh264 enable H.264 encoding via OpenH264 [no] 254cabdff1aSopenharmony_ci --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] 255cabdff1aSopenharmony_ci --enable-libopenmpt enable decoding tracked files via libopenmpt [no] 256cabdff1aSopenharmony_ci --enable-libopenvino enable OpenVINO as a DNN module backend 257cabdff1aSopenharmony_ci for DNN based filters like dnn_processing [no] 258cabdff1aSopenharmony_ci --enable-libopus enable Opus de/encoding via libopus [no] 259cabdff1aSopenharmony_ci --enable-libplacebo enable libplacebo library [no] 260cabdff1aSopenharmony_ci --enable-libpulse enable Pulseaudio input via libpulse [no] 261cabdff1aSopenharmony_ci --enable-librabbitmq enable RabbitMQ library [no] 262cabdff1aSopenharmony_ci --enable-librav1e enable AV1 encoding via rav1e [no] 263cabdff1aSopenharmony_ci --enable-librist enable RIST via librist [no] 264cabdff1aSopenharmony_ci --enable-librsvg enable SVG rasterization via librsvg [no] 265cabdff1aSopenharmony_ci --enable-librubberband enable rubberband needed for rubberband filter [no] 266cabdff1aSopenharmony_ci --enable-librtmp enable RTMP[E] support via librtmp [no] 267cabdff1aSopenharmony_ci --enable-libshaderc enable GLSL->SPIRV compilation via libshaderc [no] 268cabdff1aSopenharmony_ci --enable-libshine enable fixed-point MP3 encoding via libshine [no] 269cabdff1aSopenharmony_ci --enable-libsmbclient enable Samba protocol via libsmbclient [no] 270cabdff1aSopenharmony_ci --enable-libsnappy enable Snappy compression, needed for hap encoding [no] 271cabdff1aSopenharmony_ci --enable-libsoxr enable Include libsoxr resampling [no] 272cabdff1aSopenharmony_ci --enable-libspeex enable Speex de/encoding via libspeex [no] 273cabdff1aSopenharmony_ci --enable-libsrt enable Haivision SRT protocol via libsrt [no] 274cabdff1aSopenharmony_ci --enable-libssh enable SFTP protocol via libssh [no] 275cabdff1aSopenharmony_ci --enable-libsvtav1 enable AV1 encoding via SVT [no] 276cabdff1aSopenharmony_ci --enable-libtensorflow enable TensorFlow as a DNN module backend 277cabdff1aSopenharmony_ci for DNN based filters like sr [no] 278cabdff1aSopenharmony_ci --enable-libtesseract enable Tesseract, needed for ocr filter [no] 279cabdff1aSopenharmony_ci --enable-libtheora enable Theora encoding via libtheora [no] 280cabdff1aSopenharmony_ci --enable-libtls enable LibreSSL (via libtls), needed for https support 281cabdff1aSopenharmony_ci if openssl, gnutls or mbedtls is not used [no] 282cabdff1aSopenharmony_ci --enable-libtwolame enable MP2 encoding via libtwolame [no] 283cabdff1aSopenharmony_ci --enable-libuavs3d enable AVS3 decoding via libuavs3d [no] 284cabdff1aSopenharmony_ci --enable-libv4l2 enable libv4l2/v4l-utils [no] 285cabdff1aSopenharmony_ci --enable-libvidstab enable video stabilization using vid.stab [no] 286cabdff1aSopenharmony_ci --enable-libvmaf enable vmaf filter via libvmaf [no] 287cabdff1aSopenharmony_ci --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no] 288cabdff1aSopenharmony_ci --enable-libvorbis enable Vorbis en/decoding via libvorbis, 289cabdff1aSopenharmony_ci native implementation exists [no] 290cabdff1aSopenharmony_ci --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no] 291cabdff1aSopenharmony_ci --enable-libwebp enable WebP encoding via libwebp [no] 292cabdff1aSopenharmony_ci --enable-libx264 enable H.264 encoding via x264 [no] 293cabdff1aSopenharmony_ci --enable-libx265 enable HEVC encoding via x265 [no] 294cabdff1aSopenharmony_ci --enable-libxavs enable AVS encoding via xavs [no] 295cabdff1aSopenharmony_ci --enable-libxavs2 enable AVS2 encoding via xavs2 [no] 296cabdff1aSopenharmony_ci --enable-libxcb enable X11 grabbing using XCB [autodetect] 297cabdff1aSopenharmony_ci --enable-libxcb-shm enable X11 grabbing shm communication [autodetect] 298cabdff1aSopenharmony_ci --enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect] 299cabdff1aSopenharmony_ci --enable-libxcb-shape enable X11 grabbing shape rendering [autodetect] 300cabdff1aSopenharmony_ci --enable-libxvid enable Xvid encoding via xvidcore, 301cabdff1aSopenharmony_ci native MPEG-4/Xvid encoder exists [no] 302cabdff1aSopenharmony_ci --enable-libxml2 enable XML parsing using the C library libxml2, needed 303cabdff1aSopenharmony_ci for dash and imf demuxing support [no] 304cabdff1aSopenharmony_ci --enable-libzimg enable z.lib, needed for zscale filter [no] 305cabdff1aSopenharmony_ci --enable-libzmq enable message passing via libzmq [no] 306cabdff1aSopenharmony_ci --enable-libzvbi enable teletext support via libzvbi [no] 307cabdff1aSopenharmony_ci --enable-lv2 enable LV2 audio filtering [no] 308cabdff1aSopenharmony_ci --disable-lzma disable lzma [autodetect] 309cabdff1aSopenharmony_ci --enable-decklink enable Blackmagic DeckLink I/O support [no] 310cabdff1aSopenharmony_ci --enable-mbedtls enable mbedTLS, needed for https support 311cabdff1aSopenharmony_ci if openssl, gnutls or libtls is not used [no] 312cabdff1aSopenharmony_ci --enable-mediacodec enable Android MediaCodec support [no] 313cabdff1aSopenharmony_ci --enable-mediafoundation enable encoding via MediaFoundation [auto] 314cabdff1aSopenharmony_ci --disable-metal disable Apple Metal framework [autodetect] 315cabdff1aSopenharmony_ci --enable-libmysofa enable libmysofa, needed for sofalizer filter [no] 316cabdff1aSopenharmony_ci --enable-openal enable OpenAL 1.1 capture support [no] 317cabdff1aSopenharmony_ci --enable-opencl enable OpenCL processing [no] 318cabdff1aSopenharmony_ci --enable-opengl enable OpenGL rendering [no] 319cabdff1aSopenharmony_ci --enable-openssl enable openssl, needed for https support 320cabdff1aSopenharmony_ci if gnutls, libtls or mbedtls is not used [no] 321cabdff1aSopenharmony_ci --enable-pocketsphinx enable PocketSphinx, needed for asr filter [no] 322cabdff1aSopenharmony_ci --disable-sndio disable sndio support [autodetect] 323cabdff1aSopenharmony_ci --disable-schannel disable SChannel SSP, needed for TLS support on 324cabdff1aSopenharmony_ci Windows if openssl and gnutls are not used [autodetect] 325cabdff1aSopenharmony_ci --disable-sdl2 disable sdl2 [autodetect] 326cabdff1aSopenharmony_ci --disable-securetransport disable Secure Transport, needed for TLS support 327cabdff1aSopenharmony_ci on OSX if openssl and gnutls are not used [autodetect] 328cabdff1aSopenharmony_ci --enable-vapoursynth enable VapourSynth demuxer [no] 329cabdff1aSopenharmony_ci --disable-vulkan disable Vulkan code [autodetect] 330cabdff1aSopenharmony_ci --disable-xlib disable xlib [autodetect] 331cabdff1aSopenharmony_ci --disable-zlib disable zlib [autodetect] 332cabdff1aSopenharmony_ci 333cabdff1aSopenharmony_ci The following libraries provide various hardware acceleration features: 334cabdff1aSopenharmony_ci --disable-amf disable AMF video encoding code [autodetect] 335cabdff1aSopenharmony_ci --disable-audiotoolbox disable Apple AudioToolbox code [autodetect] 336cabdff1aSopenharmony_ci --enable-cuda-nvcc enable Nvidia CUDA compiler [no] 337cabdff1aSopenharmony_ci --disable-cuda-llvm disable CUDA compilation using clang [autodetect] 338cabdff1aSopenharmony_ci --disable-cuvid disable Nvidia CUVID support [autodetect] 339cabdff1aSopenharmony_ci --disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect] 340cabdff1aSopenharmony_ci --disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect] 341cabdff1aSopenharmony_ci --disable-ffnvcodec disable dynamically linked Nvidia code [autodetect] 342cabdff1aSopenharmony_ci --enable-libdrm enable DRM code (Linux) [no] 343cabdff1aSopenharmony_ci --enable-libmfx enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no] 344cabdff1aSopenharmony_ci --enable-libnpp enable Nvidia Performance Primitives-based code [no] 345cabdff1aSopenharmony_ci --enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no] 346cabdff1aSopenharmony_ci --disable-nvdec disable Nvidia video decoding acceleration (via hwaccel) [autodetect] 347cabdff1aSopenharmony_ci --disable-nvenc disable Nvidia video encoding code [autodetect] 348cabdff1aSopenharmony_ci --enable-omx enable OpenMAX IL code [no] 349cabdff1aSopenharmony_ci --enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no] 350cabdff1aSopenharmony_ci --enable-rkmpp enable Rockchip Media Process Platform code [no] 351cabdff1aSopenharmony_ci --disable-v4l2-m2m disable V4L2 mem2mem code [autodetect] 352cabdff1aSopenharmony_ci --disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect] 353cabdff1aSopenharmony_ci --disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect] 354cabdff1aSopenharmony_ci --disable-videotoolbox disable VideoToolbox code [autodetect] 355cabdff1aSopenharmony_ci 356cabdff1aSopenharmony_ciToolchain options: 357cabdff1aSopenharmony_ci --arch=ARCH select architecture [$arch] 358cabdff1aSopenharmony_ci --cpu=CPU select the minimum required CPU (affects 359cabdff1aSopenharmony_ci instruction selection, may crash on older CPUs) 360cabdff1aSopenharmony_ci --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix] 361cabdff1aSopenharmony_ci --progs-suffix=SUFFIX program name suffix [] 362cabdff1aSopenharmony_ci --enable-cross-compile assume a cross-compiler is used 363cabdff1aSopenharmony_ci --sysroot=PATH root of cross-build tree 364cabdff1aSopenharmony_ci --sysinclude=PATH location of cross-build system headers 365cabdff1aSopenharmony_ci --target-os=OS compiler targets OS [$target_os] 366cabdff1aSopenharmony_ci --target-exec=CMD command to run executables on target 367cabdff1aSopenharmony_ci --target-path=DIR path to view of build directory on target 368cabdff1aSopenharmony_ci --target-samples=DIR path to samples directory on target 369cabdff1aSopenharmony_ci --tempprefix=PATH force fixed dir/prefix instead of mktemp for checks 370cabdff1aSopenharmony_ci --toolchain=NAME set tool defaults according to NAME 371cabdff1aSopenharmony_ci (gcc-asan, clang-asan, gcc-msan, clang-msan, 372cabdff1aSopenharmony_ci gcc-tsan, clang-tsan, gcc-usan, clang-usan, 373cabdff1aSopenharmony_ci valgrind-massif, valgrind-memcheck, 374cabdff1aSopenharmony_ci msvc, icl, gcov, llvm-cov, hardened) 375cabdff1aSopenharmony_ci --nm=NM use nm tool NM [$nm_default] 376cabdff1aSopenharmony_ci --ar=AR use archive tool AR [$ar_default] 377cabdff1aSopenharmony_ci --as=AS use assembler AS [$as_default] 378cabdff1aSopenharmony_ci --ln_s=LN_S use symbolic link tool LN_S [$ln_s_default] 379cabdff1aSopenharmony_ci --strip=STRIP use strip tool STRIP [$strip_default] 380cabdff1aSopenharmony_ci --windres=WINDRES use windows resource compiler WINDRES [$windres_default] 381cabdff1aSopenharmony_ci --x86asmexe=EXE use nasm-compatible assembler EXE [$x86asmexe_default] 382cabdff1aSopenharmony_ci --cc=CC use C compiler CC [$cc_default] 383cabdff1aSopenharmony_ci --cxx=CXX use C compiler CXX [$cxx_default] 384cabdff1aSopenharmony_ci --objcc=OCC use ObjC compiler OCC [$cc_default] 385cabdff1aSopenharmony_ci --dep-cc=DEPCC use dependency generator DEPCC [$cc_default] 386cabdff1aSopenharmony_ci --nvcc=NVCC use Nvidia CUDA compiler NVCC or clang [$nvcc_default] 387cabdff1aSopenharmony_ci --ld=LD use linker LD [$ld_default] 388cabdff1aSopenharmony_ci --metalcc=METALCC use metal compiler METALCC [$metalcc_default] 389cabdff1aSopenharmony_ci --metallib=METALLIB use metal linker METALLIB [$metallib_default] 390cabdff1aSopenharmony_ci --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default] 391cabdff1aSopenharmony_ci --pkg-config-flags=FLAGS pass additional flags to pkgconf [] 392cabdff1aSopenharmony_ci --ranlib=RANLIB use ranlib RANLIB [$ranlib_default] 393cabdff1aSopenharmony_ci --doxygen=DOXYGEN use DOXYGEN to generate API doc [$doxygen_default] 394cabdff1aSopenharmony_ci --host-cc=HOSTCC use host C compiler HOSTCC 395cabdff1aSopenharmony_ci --host-cflags=HCFLAGS use HCFLAGS when compiling for host 396cabdff1aSopenharmony_ci --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host 397cabdff1aSopenharmony_ci --host-ld=HOSTLD use host linker HOSTLD 398cabdff1aSopenharmony_ci --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host 399cabdff1aSopenharmony_ci --host-extralibs=HLIBS use libs HLIBS when linking for host 400cabdff1aSopenharmony_ci --host-os=OS compiler host OS [$target_os] 401cabdff1aSopenharmony_ci --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS] 402cabdff1aSopenharmony_ci --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS] 403cabdff1aSopenharmony_ci --extra-objcflags=FLAGS add FLAGS to OBJCFLAGS [$CFLAGS] 404cabdff1aSopenharmony_ci --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS] 405cabdff1aSopenharmony_ci --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS] 406cabdff1aSopenharmony_ci --extra-ldsoflags=ELDFLAGS add ELDFLAGS to LDSOFLAGS [$LDSOFLAGS] 407cabdff1aSopenharmony_ci --extra-libs=ELIBS add ELIBS [$ELIBS] 408cabdff1aSopenharmony_ci --extra-version=STRING version string suffix [] 409cabdff1aSopenharmony_ci --optflags=OPTFLAGS override optimization-related compiler flags 410cabdff1aSopenharmony_ci --nvccflags=NVCCFLAGS override nvcc flags [$nvccflags_default] 411cabdff1aSopenharmony_ci --build-suffix=SUFFIX library name suffix [] 412cabdff1aSopenharmony_ci --enable-pic build position-independent code 413cabdff1aSopenharmony_ci --enable-thumb compile for Thumb instruction set 414cabdff1aSopenharmony_ci --enable-lto use link-time optimization 415cabdff1aSopenharmony_ci --env="ENV=override" override the environment variables 416cabdff1aSopenharmony_ci 417cabdff1aSopenharmony_ciAdvanced options (experts only): 418cabdff1aSopenharmony_ci --malloc-prefix=PREFIX prefix malloc and related names with PREFIX 419cabdff1aSopenharmony_ci --custom-allocator=NAME use a supported custom allocator 420cabdff1aSopenharmony_ci --disable-symver disable symbol versioning 421cabdff1aSopenharmony_ci --enable-hardcoded-tables use hardcoded tables instead of runtime generation 422cabdff1aSopenharmony_ci --disable-safe-bitstream-reader 423cabdff1aSopenharmony_ci disable buffer boundary checking in bitreaders 424cabdff1aSopenharmony_ci (faster, but may crash) 425cabdff1aSopenharmony_ci --sws-max-filter-size=N the max filter size swscale uses [$sws_max_filter_size_default] 426cabdff1aSopenharmony_ci 427cabdff1aSopenharmony_ciOptimization options (experts only): 428cabdff1aSopenharmony_ci --disable-asm disable all assembly optimizations 429cabdff1aSopenharmony_ci --disable-altivec disable AltiVec optimizations 430cabdff1aSopenharmony_ci --disable-vsx disable VSX optimizations 431cabdff1aSopenharmony_ci --disable-power8 disable POWER8 optimizations 432cabdff1aSopenharmony_ci --disable-amd3dnow disable 3DNow! optimizations 433cabdff1aSopenharmony_ci --disable-amd3dnowext disable 3DNow! extended optimizations 434cabdff1aSopenharmony_ci --disable-mmx disable MMX optimizations 435cabdff1aSopenharmony_ci --disable-mmxext disable MMXEXT optimizations 436cabdff1aSopenharmony_ci --disable-sse disable SSE optimizations 437cabdff1aSopenharmony_ci --disable-sse2 disable SSE2 optimizations 438cabdff1aSopenharmony_ci --disable-sse3 disable SSE3 optimizations 439cabdff1aSopenharmony_ci --disable-ssse3 disable SSSE3 optimizations 440cabdff1aSopenharmony_ci --disable-sse4 disable SSE4 optimizations 441cabdff1aSopenharmony_ci --disable-sse42 disable SSE4.2 optimizations 442cabdff1aSopenharmony_ci --disable-avx disable AVX optimizations 443cabdff1aSopenharmony_ci --disable-xop disable XOP optimizations 444cabdff1aSopenharmony_ci --disable-fma3 disable FMA3 optimizations 445cabdff1aSopenharmony_ci --disable-fma4 disable FMA4 optimizations 446cabdff1aSopenharmony_ci --disable-avx2 disable AVX2 optimizations 447cabdff1aSopenharmony_ci --disable-avx512 disable AVX-512 optimizations 448cabdff1aSopenharmony_ci --disable-avx512icl disable AVX-512ICL optimizations 449cabdff1aSopenharmony_ci --disable-aesni disable AESNI optimizations 450cabdff1aSopenharmony_ci --disable-armv5te disable armv5te optimizations 451cabdff1aSopenharmony_ci --disable-armv6 disable armv6 optimizations 452cabdff1aSopenharmony_ci --disable-armv6t2 disable armv6t2 optimizations 453cabdff1aSopenharmony_ci --disable-vfp disable VFP optimizations 454cabdff1aSopenharmony_ci --disable-neon disable NEON optimizations 455cabdff1aSopenharmony_ci --disable-inline-asm disable use of inline assembly 456cabdff1aSopenharmony_ci --disable-x86asm disable use of standalone x86 assembly 457cabdff1aSopenharmony_ci --disable-mipsdsp disable MIPS DSP ASE R1 optimizations 458cabdff1aSopenharmony_ci --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations 459cabdff1aSopenharmony_ci --disable-msa disable MSA optimizations 460cabdff1aSopenharmony_ci --disable-mipsfpu disable floating point MIPS optimizations 461cabdff1aSopenharmony_ci --disable-mmi disable Loongson MMI optimizations 462cabdff1aSopenharmony_ci --disable-lsx disable Loongson LSX optimizations 463cabdff1aSopenharmony_ci --disable-lasx disable Loongson LASX optimizations 464cabdff1aSopenharmony_ci --disable-fast-unaligned consider unaligned accesses slow 465cabdff1aSopenharmony_ci 466cabdff1aSopenharmony_ciDeveloper options (useful when working on FFmpeg itself): 467cabdff1aSopenharmony_ci --disable-debug disable debugging symbols 468cabdff1aSopenharmony_ci --enable-debug=LEVEL set the debug level [$debuglevel] 469cabdff1aSopenharmony_ci --disable-optimizations disable compiler optimizations 470cabdff1aSopenharmony_ci --enable-extra-warnings enable more compiler warnings 471cabdff1aSopenharmony_ci --disable-stripping disable stripping of executables and shared libraries 472cabdff1aSopenharmony_ci --assert-level=level 0(default), 1 or 2, amount of assertion testing, 473cabdff1aSopenharmony_ci 2 causes a slowdown at runtime. 474cabdff1aSopenharmony_ci --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data 475cabdff1aSopenharmony_ci --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory 476cabdff1aSopenharmony_ci leaks and errors, using the specified valgrind binary. 477cabdff1aSopenharmony_ci Cannot be combined with --target-exec 478cabdff1aSopenharmony_ci --enable-ftrapv Trap arithmetic overflows 479cabdff1aSopenharmony_ci --samples=PATH location of test samples for FATE, if not set use 480cabdff1aSopenharmony_ci \$FATE_SAMPLES at make invocation time. 481cabdff1aSopenharmony_ci --enable-neon-clobber-test check NEON registers for clobbering (should be 482cabdff1aSopenharmony_ci used only for debugging purposes) 483cabdff1aSopenharmony_ci --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only; 484cabdff1aSopenharmony_ci should be used only for debugging purposes) 485cabdff1aSopenharmony_ci --enable-random randomly enable/disable components 486cabdff1aSopenharmony_ci --disable-random 487cabdff1aSopenharmony_ci --enable-random=LIST randomly enable/disable specific components or 488cabdff1aSopenharmony_ci --disable-random=LIST component groups. LIST is a comma-separated list 489cabdff1aSopenharmony_ci of NAME[:PROB] entries where NAME is a component 490cabdff1aSopenharmony_ci (group) and PROB the probability associated with 491cabdff1aSopenharmony_ci NAME (default 0.5). 492cabdff1aSopenharmony_ci --random-seed=VALUE seed value for --enable/disable-random 493cabdff1aSopenharmony_ci --disable-valgrind-backtrace do not print a backtrace under Valgrind 494cabdff1aSopenharmony_ci (only applies to --disable-optimizations builds) 495cabdff1aSopenharmony_ci --enable-ossfuzz Enable building fuzzer tool 496cabdff1aSopenharmony_ci --libfuzzer=PATH path to libfuzzer 497cabdff1aSopenharmony_ci --ignore-tests=TESTS comma-separated list (without "fate-" prefix 498cabdff1aSopenharmony_ci in the name) of tests whose result is ignored 499cabdff1aSopenharmony_ci --enable-linux-perf enable Linux Performance Monitor API 500cabdff1aSopenharmony_ci --enable-macos-kperf enable macOS kperf (private) API 501cabdff1aSopenharmony_ci --disable-large-tests disable tests that use a large amount of memory 502cabdff1aSopenharmony_ci --disable-ptx-compression don't compress CUDA PTX code even when possible 503cabdff1aSopenharmony_ci 504cabdff1aSopenharmony_ciNOTE: Object files are built at the place where configure is launched. 505cabdff1aSopenharmony_ciEOF 506cabdff1aSopenharmony_ci exit 0 507cabdff1aSopenharmony_ci} 508cabdff1aSopenharmony_ci 509cabdff1aSopenharmony_ciif test -t 1 && which tput >/dev/null 2>&1; then 510cabdff1aSopenharmony_ci ncolors=$(tput colors) 511cabdff1aSopenharmony_ci if test -n "$ncolors" && test $ncolors -ge 8; then 512cabdff1aSopenharmony_ci bold_color=$(tput bold) 513cabdff1aSopenharmony_ci warn_color=$(tput setaf 3) 514cabdff1aSopenharmony_ci error_color=$(tput setaf 1) 515cabdff1aSopenharmony_ci reset_color=$(tput sgr0) 516cabdff1aSopenharmony_ci fi 517cabdff1aSopenharmony_ci # 72 used instead of 80 since that's the default of pr 518cabdff1aSopenharmony_ci ncols=$(tput cols) 519cabdff1aSopenharmony_cifi 520cabdff1aSopenharmony_ci: ${ncols:=72} 521cabdff1aSopenharmony_ci 522cabdff1aSopenharmony_cilog(){ 523cabdff1aSopenharmony_ci echo "$@" >> $logfile 524cabdff1aSopenharmony_ci} 525cabdff1aSopenharmony_ci 526cabdff1aSopenharmony_cilog_file(){ 527cabdff1aSopenharmony_ci log BEGIN "$1" 528cabdff1aSopenharmony_ci log_file_i=1 529cabdff1aSopenharmony_ci while IFS= read -r log_file_line; do 530cabdff1aSopenharmony_ci printf '%5d\t%s\n' "$log_file_i" "$log_file_line" 531cabdff1aSopenharmony_ci log_file_i=$(($log_file_i+1)) 532cabdff1aSopenharmony_ci done < "$1" >> "$logfile" 533cabdff1aSopenharmony_ci log END "$1" 534cabdff1aSopenharmony_ci} 535cabdff1aSopenharmony_ci 536cabdff1aSopenharmony_ciwarn(){ 537cabdff1aSopenharmony_ci log "WARNING: $*" 538cabdff1aSopenharmony_ci WARNINGS="${WARNINGS}WARNING: $*\n" 539cabdff1aSopenharmony_ci} 540cabdff1aSopenharmony_ci 541cabdff1aSopenharmony_cidie(){ 542cabdff1aSopenharmony_ci log "$@" 543cabdff1aSopenharmony_ci echo "$error_color$bold_color$@$reset_color" 544cabdff1aSopenharmony_ci cat <<EOF 545cabdff1aSopenharmony_ci 546cabdff1aSopenharmony_ciIf you think configure made a mistake, make sure you are using the latest 547cabdff1aSopenharmony_civersion from Git. If the latest version fails, report the problem to the 548cabdff1aSopenharmony_ciffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.libera.chat. 549cabdff1aSopenharmony_ciEOF 550cabdff1aSopenharmony_ci if disabled logging; then 551cabdff1aSopenharmony_ci cat <<EOF 552cabdff1aSopenharmony_ciRerun configure with logging enabled (do not use --disable-logging), and 553cabdff1aSopenharmony_ciinclude the log this produces with your report. 554cabdff1aSopenharmony_ciEOF 555cabdff1aSopenharmony_ci else 556cabdff1aSopenharmony_ci cat <<EOF 557cabdff1aSopenharmony_ciInclude the log file "$logfile" produced by configure as this will help 558cabdff1aSopenharmony_cisolve the problem. 559cabdff1aSopenharmony_ciEOF 560cabdff1aSopenharmony_ci fi 561cabdff1aSopenharmony_ci exit 1 562cabdff1aSopenharmony_ci} 563cabdff1aSopenharmony_ci 564cabdff1aSopenharmony_ci# Avoid locale weirdness, besides we really just want to translate ASCII. 565cabdff1aSopenharmony_citoupper(){ 566cabdff1aSopenharmony_ci echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 567cabdff1aSopenharmony_ci} 568cabdff1aSopenharmony_ci 569cabdff1aSopenharmony_citolower(){ 570cabdff1aSopenharmony_ci echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 571cabdff1aSopenharmony_ci} 572cabdff1aSopenharmony_ci 573cabdff1aSopenharmony_cic_escape(){ 574cabdff1aSopenharmony_ci echo "$*" | sed 's/["\\]/\\\0/g' 575cabdff1aSopenharmony_ci} 576cabdff1aSopenharmony_ci 577cabdff1aSopenharmony_cish_quote(){ 578cabdff1aSopenharmony_ci v=$(echo "$1" | sed "s/'/'\\\\''/g") 579cabdff1aSopenharmony_ci test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'" 580cabdff1aSopenharmony_ci echo "$v" 581cabdff1aSopenharmony_ci} 582cabdff1aSopenharmony_ci 583cabdff1aSopenharmony_cicleanws(){ 584cabdff1aSopenharmony_ci echo "$@" | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//' 585cabdff1aSopenharmony_ci} 586cabdff1aSopenharmony_ci 587cabdff1aSopenharmony_cifilter(){ 588cabdff1aSopenharmony_ci pat=$1 589cabdff1aSopenharmony_ci shift 590cabdff1aSopenharmony_ci for v; do 591cabdff1aSopenharmony_ci eval "case '$v' in $pat) printf '%s ' '$v' ;; esac" 592cabdff1aSopenharmony_ci done 593cabdff1aSopenharmony_ci} 594cabdff1aSopenharmony_ci 595cabdff1aSopenharmony_cifilter_out(){ 596cabdff1aSopenharmony_ci pat=$1 597cabdff1aSopenharmony_ci shift 598cabdff1aSopenharmony_ci for v; do 599cabdff1aSopenharmony_ci eval "case '$v' in $pat) ;; *) printf '%s ' '$v' ;; esac" 600cabdff1aSopenharmony_ci done 601cabdff1aSopenharmony_ci} 602cabdff1aSopenharmony_ci 603cabdff1aSopenharmony_cimap(){ 604cabdff1aSopenharmony_ci m=$1 605cabdff1aSopenharmony_ci shift 606cabdff1aSopenharmony_ci for v; do eval $m; done 607cabdff1aSopenharmony_ci} 608cabdff1aSopenharmony_ci 609cabdff1aSopenharmony_ciadd_suffix(){ 610cabdff1aSopenharmony_ci suffix=$1 611cabdff1aSopenharmony_ci shift 612cabdff1aSopenharmony_ci for v; do echo ${v}${suffix}; done 613cabdff1aSopenharmony_ci} 614cabdff1aSopenharmony_ci 615cabdff1aSopenharmony_ciremove_suffix(){ 616cabdff1aSopenharmony_ci suffix=$1 617cabdff1aSopenharmony_ci shift 618cabdff1aSopenharmony_ci for v; do echo ${v%$suffix}; done 619cabdff1aSopenharmony_ci} 620cabdff1aSopenharmony_ci 621cabdff1aSopenharmony_ciset_all(){ 622cabdff1aSopenharmony_ci value=$1 623cabdff1aSopenharmony_ci shift 624cabdff1aSopenharmony_ci for var in $*; do 625cabdff1aSopenharmony_ci eval $var=$value 626cabdff1aSopenharmony_ci done 627cabdff1aSopenharmony_ci} 628cabdff1aSopenharmony_ci 629cabdff1aSopenharmony_ciset_weak(){ 630cabdff1aSopenharmony_ci value=$1 631cabdff1aSopenharmony_ci shift 632cabdff1aSopenharmony_ci for var; do 633cabdff1aSopenharmony_ci eval : \${$var:=$value} 634cabdff1aSopenharmony_ci done 635cabdff1aSopenharmony_ci} 636cabdff1aSopenharmony_ci 637cabdff1aSopenharmony_cisanitize_var_name(){ 638cabdff1aSopenharmony_ci echo $@ | sed 's/[^A-Za-z0-9_]/_/g' 639cabdff1aSopenharmony_ci} 640cabdff1aSopenharmony_ci 641cabdff1aSopenharmony_ciset_sanitized(){ 642cabdff1aSopenharmony_ci var=$1 643cabdff1aSopenharmony_ci shift 644cabdff1aSopenharmony_ci eval $(sanitize_var_name "$var")='$*' 645cabdff1aSopenharmony_ci} 646cabdff1aSopenharmony_ci 647cabdff1aSopenharmony_ciget_sanitized(){ 648cabdff1aSopenharmony_ci eval echo \$$(sanitize_var_name "$1") 649cabdff1aSopenharmony_ci} 650cabdff1aSopenharmony_ci 651cabdff1aSopenharmony_cipushvar(){ 652cabdff1aSopenharmony_ci for pvar in $*; do 653cabdff1aSopenharmony_ci eval level=\${${pvar}_level:=0} 654cabdff1aSopenharmony_ci eval ${pvar}_${level}="\$$pvar" 655cabdff1aSopenharmony_ci eval ${pvar}_level=$(($level+1)) 656cabdff1aSopenharmony_ci done 657cabdff1aSopenharmony_ci} 658cabdff1aSopenharmony_ci 659cabdff1aSopenharmony_cipopvar(){ 660cabdff1aSopenharmony_ci for pvar in $*; do 661cabdff1aSopenharmony_ci eval level=\${${pvar}_level:-0} 662cabdff1aSopenharmony_ci test $level = 0 && continue 663cabdff1aSopenharmony_ci eval level=$(($level-1)) 664cabdff1aSopenharmony_ci eval $pvar="\${${pvar}_${level}}" 665cabdff1aSopenharmony_ci eval ${pvar}_level=$level 666cabdff1aSopenharmony_ci eval unset ${pvar}_${level} 667cabdff1aSopenharmony_ci done 668cabdff1aSopenharmony_ci} 669cabdff1aSopenharmony_ci 670cabdff1aSopenharmony_cirequest(){ 671cabdff1aSopenharmony_ci for var in $*; do 672cabdff1aSopenharmony_ci eval ${var}_requested=yes 673cabdff1aSopenharmony_ci eval $var= 674cabdff1aSopenharmony_ci done 675cabdff1aSopenharmony_ci} 676cabdff1aSopenharmony_ci 677cabdff1aSopenharmony_ciwarn_if_gets_disabled(){ 678cabdff1aSopenharmony_ci for var in $*; do 679cabdff1aSopenharmony_ci WARN_IF_GETS_DISABLED_LIST="$WARN_IF_GETS_DISABLED_LIST $var" 680cabdff1aSopenharmony_ci done 681cabdff1aSopenharmony_ci} 682cabdff1aSopenharmony_ci 683cabdff1aSopenharmony_cienable(){ 684cabdff1aSopenharmony_ci set_all yes $* 685cabdff1aSopenharmony_ci} 686cabdff1aSopenharmony_ci 687cabdff1aSopenharmony_cidisable(){ 688cabdff1aSopenharmony_ci set_all no $* 689cabdff1aSopenharmony_ci} 690cabdff1aSopenharmony_ci 691cabdff1aSopenharmony_cidisable_with_reason(){ 692cabdff1aSopenharmony_ci disable $1 693cabdff1aSopenharmony_ci eval "${1}_disable_reason=\"$2\"" 694cabdff1aSopenharmony_ci if requested $1; then 695cabdff1aSopenharmony_ci die "ERROR: $1 requested, but $2" 696cabdff1aSopenharmony_ci fi 697cabdff1aSopenharmony_ci} 698cabdff1aSopenharmony_ci 699cabdff1aSopenharmony_cienable_weak(){ 700cabdff1aSopenharmony_ci set_weak yes $* 701cabdff1aSopenharmony_ci} 702cabdff1aSopenharmony_ci 703cabdff1aSopenharmony_cidisable_weak(){ 704cabdff1aSopenharmony_ci set_weak no $* 705cabdff1aSopenharmony_ci} 706cabdff1aSopenharmony_ci 707cabdff1aSopenharmony_cienable_sanitized(){ 708cabdff1aSopenharmony_ci for var; do 709cabdff1aSopenharmony_ci enable $(sanitize_var_name $var) 710cabdff1aSopenharmony_ci done 711cabdff1aSopenharmony_ci} 712cabdff1aSopenharmony_ci 713cabdff1aSopenharmony_cidisable_sanitized(){ 714cabdff1aSopenharmony_ci for var; do 715cabdff1aSopenharmony_ci disable $(sanitize_var_name $var) 716cabdff1aSopenharmony_ci done 717cabdff1aSopenharmony_ci} 718cabdff1aSopenharmony_ci 719cabdff1aSopenharmony_cido_enable_deep(){ 720cabdff1aSopenharmony_ci for var; do 721cabdff1aSopenharmony_ci enabled $var && continue 722cabdff1aSopenharmony_ci set -- $var 723cabdff1aSopenharmony_ci eval enable_deep \$${var}_select 724cabdff1aSopenharmony_ci var=$1 725cabdff1aSopenharmony_ci eval enable_deep_weak \$${var}_suggest 726cabdff1aSopenharmony_ci done 727cabdff1aSopenharmony_ci} 728cabdff1aSopenharmony_ci 729cabdff1aSopenharmony_cienable_deep(){ 730cabdff1aSopenharmony_ci do_enable_deep $* 731cabdff1aSopenharmony_ci enable $* 732cabdff1aSopenharmony_ci} 733cabdff1aSopenharmony_ci 734cabdff1aSopenharmony_cienable_deep_weak(){ 735cabdff1aSopenharmony_ci for var; do 736cabdff1aSopenharmony_ci disabled $var && continue 737cabdff1aSopenharmony_ci set -- $var 738cabdff1aSopenharmony_ci do_enable_deep $var 739cabdff1aSopenharmony_ci var=$1 740cabdff1aSopenharmony_ci enable_weak $var 741cabdff1aSopenharmony_ci done 742cabdff1aSopenharmony_ci} 743cabdff1aSopenharmony_ci 744cabdff1aSopenharmony_cirequested(){ 745cabdff1aSopenharmony_ci test "${1#!}" = "$1" && op="=" || op="!=" 746cabdff1aSopenharmony_ci eval test "x\$${1#!}_requested" $op "xyes" 747cabdff1aSopenharmony_ci} 748cabdff1aSopenharmony_ci 749cabdff1aSopenharmony_cienabled(){ 750cabdff1aSopenharmony_ci test "${1#!}" = "$1" && op="=" || op="!=" 751cabdff1aSopenharmony_ci eval test "x\$${1#!}" $op "xyes" 752cabdff1aSopenharmony_ci} 753cabdff1aSopenharmony_ci 754cabdff1aSopenharmony_cidisabled(){ 755cabdff1aSopenharmony_ci test "${1#!}" = "$1" && op="=" || op="!=" 756cabdff1aSopenharmony_ci eval test "x\$${1#!}" $op "xno" 757cabdff1aSopenharmony_ci} 758cabdff1aSopenharmony_ci 759cabdff1aSopenharmony_cienabled_all(){ 760cabdff1aSopenharmony_ci for opt; do 761cabdff1aSopenharmony_ci enabled $opt || return 1 762cabdff1aSopenharmony_ci done 763cabdff1aSopenharmony_ci} 764cabdff1aSopenharmony_ci 765cabdff1aSopenharmony_cidisabled_all(){ 766cabdff1aSopenharmony_ci for opt; do 767cabdff1aSopenharmony_ci disabled $opt || return 1 768cabdff1aSopenharmony_ci done 769cabdff1aSopenharmony_ci} 770cabdff1aSopenharmony_ci 771cabdff1aSopenharmony_cienabled_any(){ 772cabdff1aSopenharmony_ci for opt; do 773cabdff1aSopenharmony_ci enabled $opt && return 0 774cabdff1aSopenharmony_ci done 775cabdff1aSopenharmony_ci} 776cabdff1aSopenharmony_ci 777cabdff1aSopenharmony_cidisabled_any(){ 778cabdff1aSopenharmony_ci for opt; do 779cabdff1aSopenharmony_ci disabled $opt && return 0 780cabdff1aSopenharmony_ci done 781cabdff1aSopenharmony_ci return 1 782cabdff1aSopenharmony_ci} 783cabdff1aSopenharmony_ci 784cabdff1aSopenharmony_ciset_default(){ 785cabdff1aSopenharmony_ci for opt; do 786cabdff1aSopenharmony_ci eval : \${$opt:=\$${opt}_default} 787cabdff1aSopenharmony_ci done 788cabdff1aSopenharmony_ci} 789cabdff1aSopenharmony_ci 790cabdff1aSopenharmony_ciis_in(){ 791cabdff1aSopenharmony_ci value=$1 792cabdff1aSopenharmony_ci shift 793cabdff1aSopenharmony_ci for var in $*; do 794cabdff1aSopenharmony_ci [ $var = $value ] && return 0 795cabdff1aSopenharmony_ci done 796cabdff1aSopenharmony_ci return 1 797cabdff1aSopenharmony_ci} 798cabdff1aSopenharmony_ci 799cabdff1aSopenharmony_ci# The cfg loop is very hot (several thousands iterations), and in bash also 800cabdff1aSopenharmony_ci# potentialy quite slow. Try to abort the iterations early, preferably without 801cabdff1aSopenharmony_ci# calling functions. 70%+ of the time cfg is already done or without deps. 802cabdff1aSopenharmony_cicheck_deps(){ 803cabdff1aSopenharmony_ci for cfg; do 804cabdff1aSopenharmony_ci eval [ x\$${cfg}_checking = xdone ] && continue 805cabdff1aSopenharmony_ci eval [ x\$${cfg}_checking = xinprogress ] && die "Circular dependency for $cfg." 806cabdff1aSopenharmony_ci 807cabdff1aSopenharmony_ci eval " 808cabdff1aSopenharmony_ci dep_all=\$${cfg}_deps 809cabdff1aSopenharmony_ci dep_any=\$${cfg}_deps_any 810cabdff1aSopenharmony_ci dep_con=\$${cfg}_conflict 811cabdff1aSopenharmony_ci dep_sel=\$${cfg}_select 812cabdff1aSopenharmony_ci dep_sgs=\$${cfg}_suggest 813cabdff1aSopenharmony_ci dep_ifa=\$${cfg}_if 814cabdff1aSopenharmony_ci dep_ifn=\$${cfg}_if_any 815cabdff1aSopenharmony_ci " 816cabdff1aSopenharmony_ci 817cabdff1aSopenharmony_ci # most of the time here $cfg has no deps - avoid costly no-op work 818cabdff1aSopenharmony_ci if [ "$dep_all$dep_any$dep_con$dep_sel$dep_sgs$dep_ifa$dep_ifn" ]; then 819cabdff1aSopenharmony_ci eval ${cfg}_checking=inprogress 820cabdff1aSopenharmony_ci 821cabdff1aSopenharmony_ci set -- $cfg "$dep_all" "$dep_any" "$dep_con" "$dep_sel" "$dep_sgs" "$dep_ifa" "$dep_ifn" 822cabdff1aSopenharmony_ci check_deps $dep_all $dep_any $dep_con $dep_sel $dep_sgs $dep_ifa $dep_ifn 823cabdff1aSopenharmony_ci cfg=$1; dep_all=$2; dep_any=$3; dep_con=$4; dep_sel=$5 dep_sgs=$6; dep_ifa=$7; dep_ifn=$8 824cabdff1aSopenharmony_ci 825cabdff1aSopenharmony_ci [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; } 826cabdff1aSopenharmony_ci [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; } 827cabdff1aSopenharmony_ci enabled_all $dep_all || { disable_with_reason $cfg "not all dependencies are satisfied: $dep_all"; } 828cabdff1aSopenharmony_ci enabled_any $dep_any || { disable_with_reason $cfg "not any dependency is satisfied: $dep_any"; } 829cabdff1aSopenharmony_ci disabled_all $dep_con || { disable_with_reason $cfg "some conflicting dependencies are unsatisfied: $dep_con"; } 830cabdff1aSopenharmony_ci disabled_any $dep_sel && { disable_with_reason $cfg "some selected dependency is unsatisfied: $dep_sel"; } 831cabdff1aSopenharmony_ci 832cabdff1aSopenharmony_ci enabled $cfg && enable_deep_weak $dep_sel $dep_sgs 833cabdff1aSopenharmony_ci 834cabdff1aSopenharmony_ci for dep in $dep_all $dep_any $dep_sel $dep_sgs; do 835cabdff1aSopenharmony_ci # filter out library deps, these do not belong in extralibs 836cabdff1aSopenharmony_ci is_in $dep $LIBRARY_LIST && continue 837cabdff1aSopenharmony_ci enabled $dep && eval append ${cfg}_extralibs ${dep}_extralibs 838cabdff1aSopenharmony_ci done 839cabdff1aSopenharmony_ci fi 840cabdff1aSopenharmony_ci 841cabdff1aSopenharmony_ci eval ${cfg}_checking=done 842cabdff1aSopenharmony_ci done 843cabdff1aSopenharmony_ci} 844cabdff1aSopenharmony_ci 845cabdff1aSopenharmony_ciprint_config(){ 846cabdff1aSopenharmony_ci pfx=$1 847cabdff1aSopenharmony_ci files=$2 848cabdff1aSopenharmony_ci shift 2 849cabdff1aSopenharmony_ci map 'eval echo "$v \${$v:-no}"' "$@" | 850cabdff1aSopenharmony_ci awk "BEGIN { split(\"$files\", files) } 851cabdff1aSopenharmony_ci { 852cabdff1aSopenharmony_ci c = \"$pfx\" toupper(\$1); 853cabdff1aSopenharmony_ci v = \$2; 854cabdff1aSopenharmony_ci sub(/yes/, 1, v); 855cabdff1aSopenharmony_ci sub(/no/, 0, v); 856cabdff1aSopenharmony_ci for (f in files) { 857cabdff1aSopenharmony_ci file = files[f]; 858cabdff1aSopenharmony_ci if (file ~ /\\.h\$/) { 859cabdff1aSopenharmony_ci printf(\"#define %s %d\\n\", c, v) >>file; 860cabdff1aSopenharmony_ci } else if (file ~ /\\.asm\$/) { 861cabdff1aSopenharmony_ci printf(\"%%define %s %d\\n\", c, v) >>file; 862cabdff1aSopenharmony_ci } else if (file ~ /\\.mak\$/) { 863cabdff1aSopenharmony_ci n = -v ? \"\" : \"!\"; 864cabdff1aSopenharmony_ci printf(\"%s%s=yes\\n\", n, c) >>file; 865cabdff1aSopenharmony_ci } else if (file ~ /\\.texi\$/) { 866cabdff1aSopenharmony_ci pre = -v ? \"\" : \"@c \"; 867cabdff1aSopenharmony_ci yesno = \$2; 868cabdff1aSopenharmony_ci c2 = tolower(c); 869cabdff1aSopenharmony_ci gsub(/_/, \"-\", c2); 870cabdff1aSopenharmony_ci printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file; 871cabdff1aSopenharmony_ci } 872cabdff1aSopenharmony_ci } 873cabdff1aSopenharmony_ci }" 874cabdff1aSopenharmony_ci} 875cabdff1aSopenharmony_ci 876cabdff1aSopenharmony_ciprint_enabled(){ 877cabdff1aSopenharmony_ci suf=$1 878cabdff1aSopenharmony_ci shift 879cabdff1aSopenharmony_ci for v; do 880cabdff1aSopenharmony_ci enabled $v && printf "%s\n" ${v%$suf} 881cabdff1aSopenharmony_ci done 882cabdff1aSopenharmony_ci} 883cabdff1aSopenharmony_ci 884cabdff1aSopenharmony_ciappend(){ 885cabdff1aSopenharmony_ci var=$1 886cabdff1aSopenharmony_ci shift 887cabdff1aSopenharmony_ci eval "$var=\"\$$var $*\"" 888cabdff1aSopenharmony_ci} 889cabdff1aSopenharmony_ci 890cabdff1aSopenharmony_ciprepend(){ 891cabdff1aSopenharmony_ci var=$1 892cabdff1aSopenharmony_ci shift 893cabdff1aSopenharmony_ci eval "$var=\"$* \$$var\"" 894cabdff1aSopenharmony_ci} 895cabdff1aSopenharmony_ci 896cabdff1aSopenharmony_cireverse () { 897cabdff1aSopenharmony_ci eval ' 898cabdff1aSopenharmony_ci reverse_out= 899cabdff1aSopenharmony_ci for v in $'$1'; do 900cabdff1aSopenharmony_ci reverse_out="$v $reverse_out" 901cabdff1aSopenharmony_ci done 902cabdff1aSopenharmony_ci '$1'=$reverse_out 903cabdff1aSopenharmony_ci ' 904cabdff1aSopenharmony_ci} 905cabdff1aSopenharmony_ci 906cabdff1aSopenharmony_ci# keeps the last occurence of each non-unique item 907cabdff1aSopenharmony_ciunique(){ 908cabdff1aSopenharmony_ci unique_out= 909cabdff1aSopenharmony_ci eval unique_in=\$$1 910cabdff1aSopenharmony_ci reverse unique_in 911cabdff1aSopenharmony_ci for v in $unique_in; do 912cabdff1aSopenharmony_ci # " $unique_out" +space such that every item is surrounded with spaces 913cabdff1aSopenharmony_ci case " $unique_out" in *" $v "*) continue; esac # already in list 914cabdff1aSopenharmony_ci unique_out="$unique_out$v " 915cabdff1aSopenharmony_ci done 916cabdff1aSopenharmony_ci reverse unique_out 917cabdff1aSopenharmony_ci eval $1=\$unique_out 918cabdff1aSopenharmony_ci} 919cabdff1aSopenharmony_ci 920cabdff1aSopenharmony_ciresolve(){ 921cabdff1aSopenharmony_ci resolve_out= 922cabdff1aSopenharmony_ci eval resolve_in=\$$1 923cabdff1aSopenharmony_ci for v in $resolve_in; do 924cabdff1aSopenharmony_ci eval 'resolve_out="$resolve_out$'$v' "' 925cabdff1aSopenharmony_ci done 926cabdff1aSopenharmony_ci eval $1=\$resolve_out 927cabdff1aSopenharmony_ci} 928cabdff1aSopenharmony_ci 929cabdff1aSopenharmony_ciadd_cppflags(){ 930cabdff1aSopenharmony_ci append CPPFLAGS "$@" 931cabdff1aSopenharmony_ci} 932cabdff1aSopenharmony_ci 933cabdff1aSopenharmony_ciadd_cflags(){ 934cabdff1aSopenharmony_ci append CFLAGS $($cflags_filter "$@") 935cabdff1aSopenharmony_ci} 936cabdff1aSopenharmony_ci 937cabdff1aSopenharmony_ciadd_cflags_headers(){ 938cabdff1aSopenharmony_ci append CFLAGS_HEADERS $($cflags_filter "$@") 939cabdff1aSopenharmony_ci} 940cabdff1aSopenharmony_ci 941cabdff1aSopenharmony_ciadd_cxxflags(){ 942cabdff1aSopenharmony_ci append CXXFLAGS $($cflags_filter "$@") 943cabdff1aSopenharmony_ci} 944cabdff1aSopenharmony_ci 945cabdff1aSopenharmony_ciadd_objcflags(){ 946cabdff1aSopenharmony_ci append OBJCFLAGS $($objcflags_filter "$@") 947cabdff1aSopenharmony_ci} 948cabdff1aSopenharmony_ci 949cabdff1aSopenharmony_ciadd_asflags(){ 950cabdff1aSopenharmony_ci append ASFLAGS $($asflags_filter "$@") 951cabdff1aSopenharmony_ci} 952cabdff1aSopenharmony_ci 953cabdff1aSopenharmony_ciadd_ldflags(){ 954cabdff1aSopenharmony_ci append LDFLAGS $($ldflags_filter "$@") 955cabdff1aSopenharmony_ci} 956cabdff1aSopenharmony_ci 957cabdff1aSopenharmony_ciadd_ldexeflags(){ 958cabdff1aSopenharmony_ci append LDEXEFLAGS $($ldflags_filter "$@") 959cabdff1aSopenharmony_ci} 960cabdff1aSopenharmony_ci 961cabdff1aSopenharmony_ciadd_ldsoflags(){ 962cabdff1aSopenharmony_ci append LDSOFLAGS $($ldflags_filter "$@") 963cabdff1aSopenharmony_ci} 964cabdff1aSopenharmony_ci 965cabdff1aSopenharmony_ciadd_extralibs(){ 966cabdff1aSopenharmony_ci prepend extralibs $($ldflags_filter "$@") 967cabdff1aSopenharmony_ci} 968cabdff1aSopenharmony_ci 969cabdff1aSopenharmony_ciadd_stripflags(){ 970cabdff1aSopenharmony_ci append ASMSTRIPFLAGS "$@" 971cabdff1aSopenharmony_ci} 972cabdff1aSopenharmony_ci 973cabdff1aSopenharmony_ciadd_host_cppflags(){ 974cabdff1aSopenharmony_ci append host_cppflags "$@" 975cabdff1aSopenharmony_ci} 976cabdff1aSopenharmony_ci 977cabdff1aSopenharmony_ciadd_host_cflags(){ 978cabdff1aSopenharmony_ci append host_cflags $($host_cflags_filter "$@") 979cabdff1aSopenharmony_ci} 980cabdff1aSopenharmony_ci 981cabdff1aSopenharmony_ciadd_host_ldflags(){ 982cabdff1aSopenharmony_ci append host_ldflags $($host_ldflags_filter "$@") 983cabdff1aSopenharmony_ci} 984cabdff1aSopenharmony_ci 985cabdff1aSopenharmony_ciadd_compat(){ 986cabdff1aSopenharmony_ci append compat_objs $1 987cabdff1aSopenharmony_ci shift 988cabdff1aSopenharmony_ci map 'add_cppflags -D$v' "$@" 989cabdff1aSopenharmony_ci} 990cabdff1aSopenharmony_ci 991cabdff1aSopenharmony_citest_cmd(){ 992cabdff1aSopenharmony_ci log "$@" 993cabdff1aSopenharmony_ci "$@" >> $logfile 2>&1 994cabdff1aSopenharmony_ci} 995cabdff1aSopenharmony_ci 996cabdff1aSopenharmony_citest_stat(){ 997cabdff1aSopenharmony_ci log test_stat "$@" 998cabdff1aSopenharmony_ci stat "$1" >> $logfile 2>&1 999cabdff1aSopenharmony_ci} 1000cabdff1aSopenharmony_ci 1001cabdff1aSopenharmony_cicc_e(){ 1002cabdff1aSopenharmony_ci eval printf '%s\\n' $CC_E 1003cabdff1aSopenharmony_ci} 1004cabdff1aSopenharmony_ci 1005cabdff1aSopenharmony_cicc_o(){ 1006cabdff1aSopenharmony_ci eval printf '%s\\n' $CC_O 1007cabdff1aSopenharmony_ci} 1008cabdff1aSopenharmony_ci 1009cabdff1aSopenharmony_cias_o(){ 1010cabdff1aSopenharmony_ci eval printf '%s\\n' $AS_O 1011cabdff1aSopenharmony_ci} 1012cabdff1aSopenharmony_ci 1013cabdff1aSopenharmony_cix86asm_o(){ 1014cabdff1aSopenharmony_ci eval printf '%s\\n' $X86ASM_O 1015cabdff1aSopenharmony_ci} 1016cabdff1aSopenharmony_ci 1017cabdff1aSopenharmony_cild_o(){ 1018cabdff1aSopenharmony_ci eval printf '%s\\n' $LD_O 1019cabdff1aSopenharmony_ci} 1020cabdff1aSopenharmony_ci 1021cabdff1aSopenharmony_cihostcc_e(){ 1022cabdff1aSopenharmony_ci eval printf '%s\\n' $HOSTCC_E 1023cabdff1aSopenharmony_ci} 1024cabdff1aSopenharmony_ci 1025cabdff1aSopenharmony_cihostcc_o(){ 1026cabdff1aSopenharmony_ci eval printf '%s\\n' $HOSTCC_O 1027cabdff1aSopenharmony_ci} 1028cabdff1aSopenharmony_ci 1029cabdff1aSopenharmony_cinvcc_o(){ 1030cabdff1aSopenharmony_ci eval printf '%s\\n' $NVCC_O 1031cabdff1aSopenharmony_ci} 1032cabdff1aSopenharmony_ci 1033cabdff1aSopenharmony_citest_cc(){ 1034cabdff1aSopenharmony_ci log test_cc "$@" 1035cabdff1aSopenharmony_ci cat > $TMPC 1036cabdff1aSopenharmony_ci log_file $TMPC 1037cabdff1aSopenharmony_ci test_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC 1038cabdff1aSopenharmony_ci} 1039cabdff1aSopenharmony_ci 1040cabdff1aSopenharmony_citest_cxx(){ 1041cabdff1aSopenharmony_ci log test_cxx "$@" 1042cabdff1aSopenharmony_ci cat > $TMPCPP 1043cabdff1aSopenharmony_ci log_file $TMPCPP 1044cabdff1aSopenharmony_ci test_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP 1045cabdff1aSopenharmony_ci} 1046cabdff1aSopenharmony_ci 1047cabdff1aSopenharmony_citest_objcc(){ 1048cabdff1aSopenharmony_ci log test_objcc "$@" 1049cabdff1aSopenharmony_ci cat > $TMPM 1050cabdff1aSopenharmony_ci log_file $TMPM 1051cabdff1aSopenharmony_ci test_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM 1052cabdff1aSopenharmony_ci} 1053cabdff1aSopenharmony_ci 1054cabdff1aSopenharmony_citest_nvcc(){ 1055cabdff1aSopenharmony_ci log test_nvcc "$@" 1056cabdff1aSopenharmony_ci cat > $TMPCU 1057cabdff1aSopenharmony_ci log_file $TMPCU 1058cabdff1aSopenharmony_ci tmpcu_=$TMPCU 1059cabdff1aSopenharmony_ci tmpo_=$TMPO 1060cabdff1aSopenharmony_ci [ -x "$(command -v cygpath)" ] && tmpcu_=$(cygpath -m $tmpcu_) && tmpo_=$(cygpath -m $tmpo_) 1061cabdff1aSopenharmony_ci test_cmd $nvcc $nvccflags "$@" $NVCC_C $(nvcc_o $tmpo_) $tmpcu_ 1062cabdff1aSopenharmony_ci} 1063cabdff1aSopenharmony_ci 1064cabdff1aSopenharmony_cicheck_nvcc() { 1065cabdff1aSopenharmony_ci log check_nvcc "$@" 1066cabdff1aSopenharmony_ci name=$1 1067cabdff1aSopenharmony_ci shift 1 1068cabdff1aSopenharmony_ci disabled $name && return 1069cabdff1aSopenharmony_ci disable $name 1070cabdff1aSopenharmony_ci test_nvcc "$@" <<EOF && enable $name 1071cabdff1aSopenharmony_ciextern "C" { 1072cabdff1aSopenharmony_ci __global__ void hello(unsigned char *data) {} 1073cabdff1aSopenharmony_ci} 1074cabdff1aSopenharmony_ciEOF 1075cabdff1aSopenharmony_ci} 1076cabdff1aSopenharmony_ci 1077cabdff1aSopenharmony_citest_cpp(){ 1078cabdff1aSopenharmony_ci log test_cpp "$@" 1079cabdff1aSopenharmony_ci cat > $TMPC 1080cabdff1aSopenharmony_ci log_file $TMPC 1081cabdff1aSopenharmony_ci test_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC 1082cabdff1aSopenharmony_ci} 1083cabdff1aSopenharmony_ci 1084cabdff1aSopenharmony_citest_as(){ 1085cabdff1aSopenharmony_ci log test_as "$@" 1086cabdff1aSopenharmony_ci cat > $TMPS 1087cabdff1aSopenharmony_ci log_file $TMPS 1088cabdff1aSopenharmony_ci test_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS 1089cabdff1aSopenharmony_ci} 1090cabdff1aSopenharmony_ci 1091cabdff1aSopenharmony_citest_x86asm(){ 1092cabdff1aSopenharmony_ci log test_x86asm "$@" 1093cabdff1aSopenharmony_ci echo "$1" > $TMPASM 1094cabdff1aSopenharmony_ci log_file $TMPASM 1095cabdff1aSopenharmony_ci shift 1096cabdff1aSopenharmony_ci test_cmd $x86asmexe $X86ASMFLAGS -Werror "$@" $(x86asm_o $TMPO) $TMPASM 1097cabdff1aSopenharmony_ci} 1098cabdff1aSopenharmony_ci 1099cabdff1aSopenharmony_cicheck_cmd(){ 1100cabdff1aSopenharmony_ci log check_cmd "$@" 1101cabdff1aSopenharmony_ci cmd=$1 1102cabdff1aSopenharmony_ci disabled $cmd && return 1103cabdff1aSopenharmony_ci disable $cmd 1104cabdff1aSopenharmony_ci test_cmd $@ && enable $cmd 1105cabdff1aSopenharmony_ci} 1106cabdff1aSopenharmony_ci 1107cabdff1aSopenharmony_cicheck_as(){ 1108cabdff1aSopenharmony_ci log check_as "$@" 1109cabdff1aSopenharmony_ci name=$1 1110cabdff1aSopenharmony_ci code=$2 1111cabdff1aSopenharmony_ci shift 2 1112cabdff1aSopenharmony_ci disable $name 1113cabdff1aSopenharmony_ci test_as $@ <<EOF && enable $name 1114cabdff1aSopenharmony_ci$code 1115cabdff1aSopenharmony_ciEOF 1116cabdff1aSopenharmony_ci} 1117cabdff1aSopenharmony_ci 1118cabdff1aSopenharmony_cicheck_inline_asm(){ 1119cabdff1aSopenharmony_ci log check_inline_asm "$@" 1120cabdff1aSopenharmony_ci name="$1" 1121cabdff1aSopenharmony_ci code="$2" 1122cabdff1aSopenharmony_ci shift 2 1123cabdff1aSopenharmony_ci disable $name 1124cabdff1aSopenharmony_ci test_cc "$@" <<EOF && enable $name 1125cabdff1aSopenharmony_civoid foo(void){ __asm__ volatile($code); } 1126cabdff1aSopenharmony_ciEOF 1127cabdff1aSopenharmony_ci} 1128cabdff1aSopenharmony_ci 1129cabdff1aSopenharmony_cicheck_inline_asm_flags(){ 1130cabdff1aSopenharmony_ci log check_inline_asm_flags "$@" 1131cabdff1aSopenharmony_ci name="$1" 1132cabdff1aSopenharmony_ci code="$2" 1133cabdff1aSopenharmony_ci flags='' 1134cabdff1aSopenharmony_ci shift 2 1135cabdff1aSopenharmony_ci while [ "$1" != "" ]; do 1136cabdff1aSopenharmony_ci append flags $1 1137cabdff1aSopenharmony_ci shift 1138cabdff1aSopenharmony_ci done; 1139cabdff1aSopenharmony_ci disable $name 1140cabdff1aSopenharmony_ci cat > $TMPC <<EOF 1141cabdff1aSopenharmony_civoid foo(void){ __asm__ volatile($code); } 1142cabdff1aSopenharmony_ciEOF 1143cabdff1aSopenharmony_ci log_file $TMPC 1144cabdff1aSopenharmony_ci test_cmd $cc $CPPFLAGS $CFLAGS $flags "$@" $CC_C $(cc_o $TMPO) $TMPC && 1145cabdff1aSopenharmony_ci enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags 1146cabdff1aSopenharmony_ci} 1147cabdff1aSopenharmony_ci 1148cabdff1aSopenharmony_cicheck_insn(){ 1149cabdff1aSopenharmony_ci log check_insn "$@" 1150cabdff1aSopenharmony_ci check_inline_asm ${1}_inline "\"$2\"" 1151cabdff1aSopenharmony_ci check_as ${1}_external "$2" 1152cabdff1aSopenharmony_ci} 1153cabdff1aSopenharmony_ci 1154cabdff1aSopenharmony_cicheck_x86asm(){ 1155cabdff1aSopenharmony_ci log check_x86asm "$@" 1156cabdff1aSopenharmony_ci name=$1 1157cabdff1aSopenharmony_ci shift 1158cabdff1aSopenharmony_ci disable $name 1159cabdff1aSopenharmony_ci test_x86asm "$@" && enable $name 1160cabdff1aSopenharmony_ci} 1161cabdff1aSopenharmony_ci 1162cabdff1aSopenharmony_citest_ld(){ 1163cabdff1aSopenharmony_ci log test_ld "$@" 1164cabdff1aSopenharmony_ci type=$1 1165cabdff1aSopenharmony_ci shift 1 1166cabdff1aSopenharmony_ci flags=$(filter_out '-l*|*.so' $@) 1167cabdff1aSopenharmony_ci libs=$(filter '-l*|*.so' $@) 1168cabdff1aSopenharmony_ci test_$type $($cflags_filter $flags) || return 1169cabdff1aSopenharmony_ci flags=$($ldflags_filter $flags) 1170cabdff1aSopenharmony_ci libs=$($ldflags_filter $libs) 1171cabdff1aSopenharmony_ci test_cmd $ld $LDFLAGS $LDEXEFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs 1172cabdff1aSopenharmony_ci} 1173cabdff1aSopenharmony_ci 1174cabdff1aSopenharmony_cicheck_ld(){ 1175cabdff1aSopenharmony_ci log check_ld "$@" 1176cabdff1aSopenharmony_ci type=$1 1177cabdff1aSopenharmony_ci name=$2 1178cabdff1aSopenharmony_ci shift 2 1179cabdff1aSopenharmony_ci disable $name 1180cabdff1aSopenharmony_ci test_ld $type $@ && enable $name 1181cabdff1aSopenharmony_ci} 1182cabdff1aSopenharmony_ci 1183cabdff1aSopenharmony_ciprint_include(){ 1184cabdff1aSopenharmony_ci hdr=$1 1185cabdff1aSopenharmony_ci test "${hdr%.h}" = "${hdr}" && 1186cabdff1aSopenharmony_ci echo "#include $hdr" || 1187cabdff1aSopenharmony_ci echo "#include <$hdr>" 1188cabdff1aSopenharmony_ci} 1189cabdff1aSopenharmony_ci 1190cabdff1aSopenharmony_citest_code(){ 1191cabdff1aSopenharmony_ci log test_code "$@" 1192cabdff1aSopenharmony_ci check=$1 1193cabdff1aSopenharmony_ci headers=$2 1194cabdff1aSopenharmony_ci code=$3 1195cabdff1aSopenharmony_ci shift 3 1196cabdff1aSopenharmony_ci { 1197cabdff1aSopenharmony_ci for hdr in $headers; do 1198cabdff1aSopenharmony_ci print_include $hdr 1199cabdff1aSopenharmony_ci done 1200cabdff1aSopenharmony_ci echo "int main(void) { $code; return 0; }" 1201cabdff1aSopenharmony_ci } | test_$check "$@" 1202cabdff1aSopenharmony_ci} 1203cabdff1aSopenharmony_ci 1204cabdff1aSopenharmony_cicheck_cppflags(){ 1205cabdff1aSopenharmony_ci log check_cppflags "$@" 1206cabdff1aSopenharmony_ci test_cpp "$@" <<EOF && append CPPFLAGS "$@" 1207cabdff1aSopenharmony_ci#include <stdlib.h> 1208cabdff1aSopenharmony_ciEOF 1209cabdff1aSopenharmony_ci} 1210cabdff1aSopenharmony_ci 1211cabdff1aSopenharmony_citest_cflags(){ 1212cabdff1aSopenharmony_ci log test_cflags "$@" 1213cabdff1aSopenharmony_ci set -- $($cflags_filter "$@") 1214cabdff1aSopenharmony_ci test_cc "$@" <<EOF 1215cabdff1aSopenharmony_ciint x; 1216cabdff1aSopenharmony_ciEOF 1217cabdff1aSopenharmony_ci} 1218cabdff1aSopenharmony_ci 1219cabdff1aSopenharmony_cicheck_cflags(){ 1220cabdff1aSopenharmony_ci log check_cflags "$@" 1221cabdff1aSopenharmony_ci test_cflags "$@" && add_cflags "$@" 1222cabdff1aSopenharmony_ci} 1223cabdff1aSopenharmony_ci 1224cabdff1aSopenharmony_cicheck_cxxflags(){ 1225cabdff1aSopenharmony_ci log check_cxxflags "$@" 1226cabdff1aSopenharmony_ci set -- $($cflags_filter "$@") 1227cabdff1aSopenharmony_ci test_cxx "$@" <<EOF && append CXXFLAGS "$@" 1228cabdff1aSopenharmony_ciint x; 1229cabdff1aSopenharmony_ciEOF 1230cabdff1aSopenharmony_ci} 1231cabdff1aSopenharmony_ci 1232cabdff1aSopenharmony_citest_objcflags(){ 1233cabdff1aSopenharmony_ci log test_objcflags "$@" 1234cabdff1aSopenharmony_ci set -- $($objcflags_filter "$@") 1235cabdff1aSopenharmony_ci test_objcc "$@" <<EOF 1236cabdff1aSopenharmony_ciint x; 1237cabdff1aSopenharmony_ciEOF 1238cabdff1aSopenharmony_ci} 1239cabdff1aSopenharmony_ci 1240cabdff1aSopenharmony_cicheck_objcflags(){ 1241cabdff1aSopenharmony_ci log check_objcflags "$@" 1242cabdff1aSopenharmony_ci test_objcflags "$@" && add_objcflags "$@" 1243cabdff1aSopenharmony_ci} 1244cabdff1aSopenharmony_ci 1245cabdff1aSopenharmony_citest_ldflags(){ 1246cabdff1aSopenharmony_ci log test_ldflags "$@" 1247cabdff1aSopenharmony_ci set -- $($ldflags_filter "$@") 1248cabdff1aSopenharmony_ci test_ld "cc" "$@" <<EOF 1249cabdff1aSopenharmony_ciint main(void){ return 0; } 1250cabdff1aSopenharmony_ciEOF 1251cabdff1aSopenharmony_ci} 1252cabdff1aSopenharmony_ci 1253cabdff1aSopenharmony_cicheck_ldflags(){ 1254cabdff1aSopenharmony_ci log check_ldflags "$@" 1255cabdff1aSopenharmony_ci test_ldflags "$@" && add_ldflags "$@" 1256cabdff1aSopenharmony_ci} 1257cabdff1aSopenharmony_ci 1258cabdff1aSopenharmony_citest_stripflags(){ 1259cabdff1aSopenharmony_ci log test_stripflags "$@" 1260cabdff1aSopenharmony_ci # call test_cc to get a fresh TMPO 1261cabdff1aSopenharmony_ci test_cc <<EOF 1262cabdff1aSopenharmony_ciint main(void) { return 0; } 1263cabdff1aSopenharmony_ciEOF 1264cabdff1aSopenharmony_ci test_cmd $strip $ASMSTRIPFLAGS "$@" $TMPO 1265cabdff1aSopenharmony_ci} 1266cabdff1aSopenharmony_ci 1267cabdff1aSopenharmony_cicheck_stripflags(){ 1268cabdff1aSopenharmony_ci log check_stripflags "$@" 1269cabdff1aSopenharmony_ci test_stripflags "$@" && add_stripflags "$@" 1270cabdff1aSopenharmony_ci} 1271cabdff1aSopenharmony_ci 1272cabdff1aSopenharmony_cicheck_headers(){ 1273cabdff1aSopenharmony_ci log check_headers "$@" 1274cabdff1aSopenharmony_ci headers=$1 1275cabdff1aSopenharmony_ci shift 1276cabdff1aSopenharmony_ci disable_sanitized $headers 1277cabdff1aSopenharmony_ci { 1278cabdff1aSopenharmony_ci for hdr in $headers; do 1279cabdff1aSopenharmony_ci print_include $hdr 1280cabdff1aSopenharmony_ci done 1281cabdff1aSopenharmony_ci echo "int x;" 1282cabdff1aSopenharmony_ci } | test_cpp "$@" && enable_sanitized $headers 1283cabdff1aSopenharmony_ci} 1284cabdff1aSopenharmony_ci 1285cabdff1aSopenharmony_cicheck_header_objcc(){ 1286cabdff1aSopenharmony_ci log check_header_objcc "$@" 1287cabdff1aSopenharmony_ci rm -f -- "$TMPO" 1288cabdff1aSopenharmony_ci header=$1 1289cabdff1aSopenharmony_ci shift 1290cabdff1aSopenharmony_ci disable_sanitized $header 1291cabdff1aSopenharmony_ci { 1292cabdff1aSopenharmony_ci echo "#include <$header>" 1293cabdff1aSopenharmony_ci echo "int main(void) { return 0; }" 1294cabdff1aSopenharmony_ci } | test_objcc && test_stat "$TMPO" && enable_sanitized $header 1295cabdff1aSopenharmony_ci} 1296cabdff1aSopenharmony_ci 1297cabdff1aSopenharmony_cicheck_apple_framework(){ 1298cabdff1aSopenharmony_ci log check_apple_framework "$@" 1299cabdff1aSopenharmony_ci framework="$1" 1300cabdff1aSopenharmony_ci name="$(tolower $framework)" 1301cabdff1aSopenharmony_ci header="${framework}/${framework}.h" 1302cabdff1aSopenharmony_ci disable $name 1303cabdff1aSopenharmony_ci check_header_objcc $header && 1304cabdff1aSopenharmony_ci enable $name && eval ${name}_extralibs='"-framework $framework"' 1305cabdff1aSopenharmony_ci} 1306cabdff1aSopenharmony_ci 1307cabdff1aSopenharmony_cicheck_func(){ 1308cabdff1aSopenharmony_ci log check_func "$@" 1309cabdff1aSopenharmony_ci func=$1 1310cabdff1aSopenharmony_ci shift 1311cabdff1aSopenharmony_ci disable $func 1312cabdff1aSopenharmony_ci test_ld "cc" "$@" <<EOF && enable $func 1313cabdff1aSopenharmony_ciextern int $func(); 1314cabdff1aSopenharmony_ciint main(void){ $func(); } 1315cabdff1aSopenharmony_ciEOF 1316cabdff1aSopenharmony_ci} 1317cabdff1aSopenharmony_ci 1318cabdff1aSopenharmony_cicheck_complexfunc(){ 1319cabdff1aSopenharmony_ci log check_complexfunc "$@" 1320cabdff1aSopenharmony_ci func=$1 1321cabdff1aSopenharmony_ci narg=$2 1322cabdff1aSopenharmony_ci shift 2 1323cabdff1aSopenharmony_ci test $narg = 2 && args="f, g" || args="f * I" 1324cabdff1aSopenharmony_ci disable $func 1325cabdff1aSopenharmony_ci test_ld "cc" "$@" <<EOF && enable $func 1326cabdff1aSopenharmony_ci#include <complex.h> 1327cabdff1aSopenharmony_ci#include <math.h> 1328cabdff1aSopenharmony_cifloat foo(complex float f, complex float g) { return $func($args); } 1329cabdff1aSopenharmony_ciint main(void){ return (int) foo; } 1330cabdff1aSopenharmony_ciEOF 1331cabdff1aSopenharmony_ci} 1332cabdff1aSopenharmony_ci 1333cabdff1aSopenharmony_cicheck_mathfunc(){ 1334cabdff1aSopenharmony_ci log check_mathfunc "$@" 1335cabdff1aSopenharmony_ci func=$1 1336cabdff1aSopenharmony_ci narg=$2 1337cabdff1aSopenharmony_ci shift 2 1338cabdff1aSopenharmony_ci test $narg = 2 && args="f, g" || args="f" 1339cabdff1aSopenharmony_ci disable $func 1340cabdff1aSopenharmony_ci test_ld "cc" "$@" <<EOF && enable $func 1341cabdff1aSopenharmony_ci#include <math.h> 1342cabdff1aSopenharmony_cifloat foo(float f, float g) { return $func($args); } 1343cabdff1aSopenharmony_ciint main(void){ return (int) foo; } 1344cabdff1aSopenharmony_ciEOF 1345cabdff1aSopenharmony_ci} 1346cabdff1aSopenharmony_ci 1347cabdff1aSopenharmony_cicheck_func_headers(){ 1348cabdff1aSopenharmony_ci log check_func_headers "$@" 1349cabdff1aSopenharmony_ci headers=$1 1350cabdff1aSopenharmony_ci funcs=$2 1351cabdff1aSopenharmony_ci shift 2 1352cabdff1aSopenharmony_ci { 1353cabdff1aSopenharmony_ci for hdr in $headers; do 1354cabdff1aSopenharmony_ci print_include $hdr 1355cabdff1aSopenharmony_ci done 1356cabdff1aSopenharmony_ci echo "#include <stdint.h>" 1357cabdff1aSopenharmony_ci for func in $funcs; do 1358cabdff1aSopenharmony_ci echo "long check_$func(void) { return (long) $func; }" 1359cabdff1aSopenharmony_ci done 1360cabdff1aSopenharmony_ci echo "int main(void) { int ret = 0;" 1361cabdff1aSopenharmony_ci # LTO could optimize out the test functions without this 1362cabdff1aSopenharmony_ci for func in $funcs; do 1363cabdff1aSopenharmony_ci echo " ret |= ((intptr_t)check_$func) & 0xFFFF;" 1364cabdff1aSopenharmony_ci done 1365cabdff1aSopenharmony_ci echo "return ret; }" 1366cabdff1aSopenharmony_ci } | test_ld "cc" "$@" && enable $funcs && enable_sanitized $headers 1367cabdff1aSopenharmony_ci} 1368cabdff1aSopenharmony_ci 1369cabdff1aSopenharmony_cicheck_class_headers_cpp(){ 1370cabdff1aSopenharmony_ci log check_class_headers_cpp "$@" 1371cabdff1aSopenharmony_ci headers=$1 1372cabdff1aSopenharmony_ci classes=$2 1373cabdff1aSopenharmony_ci shift 2 1374cabdff1aSopenharmony_ci { 1375cabdff1aSopenharmony_ci for hdr in $headers; do 1376cabdff1aSopenharmony_ci echo "#include <$hdr>" 1377cabdff1aSopenharmony_ci done 1378cabdff1aSopenharmony_ci echo "int main(void) { " 1379cabdff1aSopenharmony_ci i=1 1380cabdff1aSopenharmony_ci for class in $classes; do 1381cabdff1aSopenharmony_ci echo "$class obj$i;" 1382cabdff1aSopenharmony_ci i=$(expr $i + 1) 1383cabdff1aSopenharmony_ci done 1384cabdff1aSopenharmony_ci echo "return 0; }" 1385cabdff1aSopenharmony_ci } | test_ld "cxx" "$@" && enable $funcs && enable_sanitized $headers 1386cabdff1aSopenharmony_ci} 1387cabdff1aSopenharmony_ci 1388cabdff1aSopenharmony_citest_cpp_condition(){ 1389cabdff1aSopenharmony_ci log test_cpp_condition "$@" 1390cabdff1aSopenharmony_ci header=$1 1391cabdff1aSopenharmony_ci condition=$2 1392cabdff1aSopenharmony_ci shift 2 1393cabdff1aSopenharmony_ci test_cpp "$@" <<EOF 1394cabdff1aSopenharmony_ci#include <$header> 1395cabdff1aSopenharmony_ci#if !($condition) 1396cabdff1aSopenharmony_ci#error "unsatisfied condition: $condition" 1397cabdff1aSopenharmony_ci#endif 1398cabdff1aSopenharmony_ciEOF 1399cabdff1aSopenharmony_ci} 1400cabdff1aSopenharmony_ci 1401cabdff1aSopenharmony_cicheck_cpp_condition(){ 1402cabdff1aSopenharmony_ci log check_cpp_condition "$@" 1403cabdff1aSopenharmony_ci name=$1 1404cabdff1aSopenharmony_ci shift 1 1405cabdff1aSopenharmony_ci disable $name 1406cabdff1aSopenharmony_ci test_cpp_condition "$@" && enable $name 1407cabdff1aSopenharmony_ci} 1408cabdff1aSopenharmony_ci 1409cabdff1aSopenharmony_citest_cflags_cc(){ 1410cabdff1aSopenharmony_ci log test_cflags_cc "$@" 1411cabdff1aSopenharmony_ci flags=$1 1412cabdff1aSopenharmony_ci header=$2 1413cabdff1aSopenharmony_ci condition=$3 1414cabdff1aSopenharmony_ci shift 3 1415cabdff1aSopenharmony_ci set -- $($cflags_filter "$flags") 1416cabdff1aSopenharmony_ci test_cc "$@" <<EOF 1417cabdff1aSopenharmony_ci#include <$header> 1418cabdff1aSopenharmony_ci#if !($condition) 1419cabdff1aSopenharmony_ci#error "unsatisfied condition: $condition" 1420cabdff1aSopenharmony_ci#endif 1421cabdff1aSopenharmony_ciEOF 1422cabdff1aSopenharmony_ci} 1423cabdff1aSopenharmony_ci 1424cabdff1aSopenharmony_cicheck_lib(){ 1425cabdff1aSopenharmony_ci log check_lib "$@" 1426cabdff1aSopenharmony_ci name="$1" 1427cabdff1aSopenharmony_ci headers="$2" 1428cabdff1aSopenharmony_ci funcs="$3" 1429cabdff1aSopenharmony_ci shift 3 1430cabdff1aSopenharmony_ci disable $name 1431cabdff1aSopenharmony_ci check_func_headers "$headers" "$funcs" "$@" && 1432cabdff1aSopenharmony_ci enable $name && eval ${name}_extralibs="\$@" 1433cabdff1aSopenharmony_ci} 1434cabdff1aSopenharmony_ci 1435cabdff1aSopenharmony_cicheck_lib_cpp(){ 1436cabdff1aSopenharmony_ci log check_lib_cpp "$@" 1437cabdff1aSopenharmony_ci name="$1" 1438cabdff1aSopenharmony_ci headers="$2" 1439cabdff1aSopenharmony_ci classes="$3" 1440cabdff1aSopenharmony_ci shift 3 1441cabdff1aSopenharmony_ci disable $name 1442cabdff1aSopenharmony_ci check_class_headers_cpp "$headers" "$classes" "$@" && 1443cabdff1aSopenharmony_ci enable $name && eval ${name}_extralibs="\$@" 1444cabdff1aSopenharmony_ci} 1445cabdff1aSopenharmony_ci 1446cabdff1aSopenharmony_citest_pkg_config(){ 1447cabdff1aSopenharmony_ci log test_pkg_config "$@" 1448cabdff1aSopenharmony_ci name="$1" 1449cabdff1aSopenharmony_ci pkg_version="$2" 1450cabdff1aSopenharmony_ci pkg="${2%% *}" 1451cabdff1aSopenharmony_ci headers="$3" 1452cabdff1aSopenharmony_ci funcs="$4" 1453cabdff1aSopenharmony_ci shift 4 1454cabdff1aSopenharmony_ci disable $name 1455cabdff1aSopenharmony_ci test_cmd $pkg_config --exists --print-errors $pkg_version || return 1456cabdff1aSopenharmony_ci pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg) 1457cabdff1aSopenharmony_ci pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg) 1458cabdff1aSopenharmony_ci pkg_incdir=$($pkg_config --variable=includedir $pkg_config_flags $pkg) 1459cabdff1aSopenharmony_ci check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" && 1460cabdff1aSopenharmony_ci enable $name && 1461cabdff1aSopenharmony_ci set_sanitized "${name}_cflags" $pkg_cflags && 1462cabdff1aSopenharmony_ci set_sanitized "${name}_incdir" $pkg_incdir && 1463cabdff1aSopenharmony_ci set_sanitized "${name}_extralibs" $pkg_libs 1464cabdff1aSopenharmony_ci} 1465cabdff1aSopenharmony_ci 1466cabdff1aSopenharmony_citest_pkg_config_cpp(){ 1467cabdff1aSopenharmony_ci log test_pkg_config_cpp "$@" 1468cabdff1aSopenharmony_ci name="$1" 1469cabdff1aSopenharmony_ci pkg_version="$2" 1470cabdff1aSopenharmony_ci pkg="${2%% *}" 1471cabdff1aSopenharmony_ci headers="$3" 1472cabdff1aSopenharmony_ci cond="$4" 1473cabdff1aSopenharmony_ci shift 4 1474cabdff1aSopenharmony_ci disable $name 1475cabdff1aSopenharmony_ci test_cmd $pkg_config --exists --print-errors $pkg_version || return 1476cabdff1aSopenharmony_ci pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg) 1477cabdff1aSopenharmony_ci pkg_incdir=$($pkg_config --variable=includedir $pkg_config_flags $pkg) 1478cabdff1aSopenharmony_ci pkg_incflags=$($pkg_config --cflags-only-I $pkg_config_flags $pkg) 1479cabdff1aSopenharmony_ci test_cpp_condition "$pkg_incdir/$headers" "$cond" "$@" && 1480cabdff1aSopenharmony_ci enable $name && 1481cabdff1aSopenharmony_ci set_sanitized "${name}_cflags" $pkg_cflags && 1482cabdff1aSopenharmony_ci set_sanitized "${name}_incdir" $pkg_incdir && 1483cabdff1aSopenharmony_ci set_sanitized "${name}_incflags" $pkg_incflags 1484cabdff1aSopenharmony_ci} 1485cabdff1aSopenharmony_ci 1486cabdff1aSopenharmony_cicheck_pkg_config(){ 1487cabdff1aSopenharmony_ci log check_pkg_config "$@" 1488cabdff1aSopenharmony_ci name="$1" 1489cabdff1aSopenharmony_ci test_pkg_config "$@" && 1490cabdff1aSopenharmony_ci eval add_cflags \$${name}_cflags 1491cabdff1aSopenharmony_ci} 1492cabdff1aSopenharmony_ci 1493cabdff1aSopenharmony_cicheck_pkg_config_cpp(){ 1494cabdff1aSopenharmony_ci log check_pkg_config_cpp "$@" 1495cabdff1aSopenharmony_ci name="$1" 1496cabdff1aSopenharmony_ci test_pkg_config_cpp "$@" && 1497cabdff1aSopenharmony_ci eval add_cflags \$${name}_cflags 1498cabdff1aSopenharmony_ci} 1499cabdff1aSopenharmony_ci 1500cabdff1aSopenharmony_cicheck_pkg_config_header_only(){ 1501cabdff1aSopenharmony_ci log check_pkg_config_cpp "$@" 1502cabdff1aSopenharmony_ci name="$1" 1503cabdff1aSopenharmony_ci test_pkg_config_cpp "$@" && 1504cabdff1aSopenharmony_ci eval add_cflags \$${name}_incflags 1505cabdff1aSopenharmony_ci} 1506cabdff1aSopenharmony_ci 1507cabdff1aSopenharmony_citest_exec(){ 1508cabdff1aSopenharmony_ci test_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; } 1509cabdff1aSopenharmony_ci} 1510cabdff1aSopenharmony_ci 1511cabdff1aSopenharmony_cicheck_exec_crash(){ 1512cabdff1aSopenharmony_ci log check_exec_crash "$@" 1513cabdff1aSopenharmony_ci code=$(cat) 1514cabdff1aSopenharmony_ci 1515cabdff1aSopenharmony_ci # exit() is not async signal safe. _Exit (C99) and _exit (POSIX) 1516cabdff1aSopenharmony_ci # are safe but may not be available everywhere. Thus we use 1517cabdff1aSopenharmony_ci # raise(SIGTERM) instead. The check is run in a subshell so we 1518cabdff1aSopenharmony_ci # can redirect the "Terminated" message from the shell. SIGBUS 1519cabdff1aSopenharmony_ci # is not defined by standard C so it is used conditionally. 1520cabdff1aSopenharmony_ci 1521cabdff1aSopenharmony_ci (test_exec "$@") >> $logfile 2>&1 <<EOF 1522cabdff1aSopenharmony_ci#include <signal.h> 1523cabdff1aSopenharmony_cistatic void sighandler(int sig){ 1524cabdff1aSopenharmony_ci raise(SIGTERM); 1525cabdff1aSopenharmony_ci} 1526cabdff1aSopenharmony_ciint foo(void){ 1527cabdff1aSopenharmony_ci $code 1528cabdff1aSopenharmony_ci} 1529cabdff1aSopenharmony_ciint (*func_ptr)(void) = foo; 1530cabdff1aSopenharmony_ciint main(void){ 1531cabdff1aSopenharmony_ci signal(SIGILL, sighandler); 1532cabdff1aSopenharmony_ci signal(SIGFPE, sighandler); 1533cabdff1aSopenharmony_ci signal(SIGSEGV, sighandler); 1534cabdff1aSopenharmony_ci#ifdef SIGBUS 1535cabdff1aSopenharmony_ci signal(SIGBUS, sighandler); 1536cabdff1aSopenharmony_ci#endif 1537cabdff1aSopenharmony_ci return func_ptr(); 1538cabdff1aSopenharmony_ci} 1539cabdff1aSopenharmony_ciEOF 1540cabdff1aSopenharmony_ci} 1541cabdff1aSopenharmony_ci 1542cabdff1aSopenharmony_cicheck_type(){ 1543cabdff1aSopenharmony_ci log check_type "$@" 1544cabdff1aSopenharmony_ci headers=$1 1545cabdff1aSopenharmony_ci type=$2 1546cabdff1aSopenharmony_ci shift 2 1547cabdff1aSopenharmony_ci disable_sanitized "$type" 1548cabdff1aSopenharmony_ci test_code cc "$headers" "$type v" "$@" && enable_sanitized "$type" 1549cabdff1aSopenharmony_ci} 1550cabdff1aSopenharmony_ci 1551cabdff1aSopenharmony_cicheck_struct(){ 1552cabdff1aSopenharmony_ci log check_struct "$@" 1553cabdff1aSopenharmony_ci headers=$1 1554cabdff1aSopenharmony_ci struct=$2 1555cabdff1aSopenharmony_ci member=$3 1556cabdff1aSopenharmony_ci shift 3 1557cabdff1aSopenharmony_ci disable_sanitized "${struct}_${member}" 1558cabdff1aSopenharmony_ci test_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" && 1559cabdff1aSopenharmony_ci enable_sanitized "${struct}_${member}" 1560cabdff1aSopenharmony_ci} 1561cabdff1aSopenharmony_ci 1562cabdff1aSopenharmony_cicheck_builtin(){ 1563cabdff1aSopenharmony_ci log check_builtin "$@" 1564cabdff1aSopenharmony_ci name=$1 1565cabdff1aSopenharmony_ci headers=$2 1566cabdff1aSopenharmony_ci builtin=$3 1567cabdff1aSopenharmony_ci shift 3 1568cabdff1aSopenharmony_ci disable "$name" 1569cabdff1aSopenharmony_ci test_code ld "$headers" "$builtin" "cc" "$@" && enable "$name" 1570cabdff1aSopenharmony_ci} 1571cabdff1aSopenharmony_ci 1572cabdff1aSopenharmony_cicheck_compile_assert(){ 1573cabdff1aSopenharmony_ci log check_compile_assert "$@" 1574cabdff1aSopenharmony_ci name=$1 1575cabdff1aSopenharmony_ci headers=$2 1576cabdff1aSopenharmony_ci condition=$3 1577cabdff1aSopenharmony_ci shift 3 1578cabdff1aSopenharmony_ci disable "$name" 1579cabdff1aSopenharmony_ci test_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name" 1580cabdff1aSopenharmony_ci} 1581cabdff1aSopenharmony_ci 1582cabdff1aSopenharmony_cicheck_cc(){ 1583cabdff1aSopenharmony_ci log check_cc "$@" 1584cabdff1aSopenharmony_ci name=$1 1585cabdff1aSopenharmony_ci shift 1586cabdff1aSopenharmony_ci disable "$name" 1587cabdff1aSopenharmony_ci test_code cc "$@" && enable "$name" 1588cabdff1aSopenharmony_ci} 1589cabdff1aSopenharmony_ci 1590cabdff1aSopenharmony_cirequire(){ 1591cabdff1aSopenharmony_ci log require "$@" 1592cabdff1aSopenharmony_ci name_version="$1" 1593cabdff1aSopenharmony_ci name="${1%% *}" 1594cabdff1aSopenharmony_ci shift 1595cabdff1aSopenharmony_ci check_lib $name "$@" || die "ERROR: $name_version not found" 1596cabdff1aSopenharmony_ci} 1597cabdff1aSopenharmony_ci 1598cabdff1aSopenharmony_cirequire_cc(){ 1599cabdff1aSopenharmony_ci log require_cc "$@" 1600cabdff1aSopenharmony_ci name="$1" 1601cabdff1aSopenharmony_ci check_cc "$@" || die "ERROR: $name failed" 1602cabdff1aSopenharmony_ci} 1603cabdff1aSopenharmony_ci 1604cabdff1aSopenharmony_cirequire_cpp(){ 1605cabdff1aSopenharmony_ci log require_cpp "$@" 1606cabdff1aSopenharmony_ci name_version="$1" 1607cabdff1aSopenharmony_ci name="${1%% *}" 1608cabdff1aSopenharmony_ci shift 1609cabdff1aSopenharmony_ci check_lib_cpp "$name" "$@" || die "ERROR: $name_version not found" 1610cabdff1aSopenharmony_ci} 1611cabdff1aSopenharmony_ci 1612cabdff1aSopenharmony_cirequire_headers(){ 1613cabdff1aSopenharmony_ci log require_headers "$@" 1614cabdff1aSopenharmony_ci headers="$1" 1615cabdff1aSopenharmony_ci check_headers "$@" || die "ERROR: $headers not found" 1616cabdff1aSopenharmony_ci} 1617cabdff1aSopenharmony_ci 1618cabdff1aSopenharmony_cirequire_cpp_condition(){ 1619cabdff1aSopenharmony_ci log require_cpp_condition "$@" 1620cabdff1aSopenharmony_ci condition="$3" 1621cabdff1aSopenharmony_ci check_cpp_condition "$@" || die "ERROR: $condition not satisfied" 1622cabdff1aSopenharmony_ci} 1623cabdff1aSopenharmony_ci 1624cabdff1aSopenharmony_cirequire_pkg_config(){ 1625cabdff1aSopenharmony_ci log require_pkg_config "$@" 1626cabdff1aSopenharmony_ci pkg_version="$2" 1627cabdff1aSopenharmony_ci check_pkg_config "$@" || die "ERROR: $pkg_version not found using pkg-config$pkg_config_fail_message" 1628cabdff1aSopenharmony_ci} 1629cabdff1aSopenharmony_ci 1630cabdff1aSopenharmony_cirequire_pkg_config_cpp(){ 1631cabdff1aSopenharmony_ci log require_pkg_config_cpp "$@" 1632cabdff1aSopenharmony_ci pkg_version="$2" 1633cabdff1aSopenharmony_ci check_pkg_config_cpp "$@" || die "ERROR: $pkg_version not found using pkg-config$pkg_config_fail_message" 1634cabdff1aSopenharmony_ci} 1635cabdff1aSopenharmony_ci 1636cabdff1aSopenharmony_citest_host_cc(){ 1637cabdff1aSopenharmony_ci log test_host_cc "$@" 1638cabdff1aSopenharmony_ci cat > $TMPC 1639cabdff1aSopenharmony_ci log_file $TMPC 1640cabdff1aSopenharmony_ci test_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC 1641cabdff1aSopenharmony_ci} 1642cabdff1aSopenharmony_ci 1643cabdff1aSopenharmony_citest_host_cpp(){ 1644cabdff1aSopenharmony_ci log test_host_cpp "$@" 1645cabdff1aSopenharmony_ci cat > $TMPC 1646cabdff1aSopenharmony_ci log_file $TMPC 1647cabdff1aSopenharmony_ci test_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC 1648cabdff1aSopenharmony_ci} 1649cabdff1aSopenharmony_ci 1650cabdff1aSopenharmony_cicheck_host_cppflags(){ 1651cabdff1aSopenharmony_ci log check_host_cppflags "$@" 1652cabdff1aSopenharmony_ci test_host_cpp "$@" <<EOF && append host_cppflags "$@" 1653cabdff1aSopenharmony_ci#include <stdlib.h> 1654cabdff1aSopenharmony_ciEOF 1655cabdff1aSopenharmony_ci} 1656cabdff1aSopenharmony_ci 1657cabdff1aSopenharmony_cicheck_host_cflags(){ 1658cabdff1aSopenharmony_ci log check_host_cflags "$@" 1659cabdff1aSopenharmony_ci set -- $($host_cflags_filter "$@") 1660cabdff1aSopenharmony_ci test_host_cc "$@" <<EOF && append host_cflags "$@" 1661cabdff1aSopenharmony_ciint x; 1662cabdff1aSopenharmony_ciEOF 1663cabdff1aSopenharmony_ci} 1664cabdff1aSopenharmony_ci 1665cabdff1aSopenharmony_citest_host_cpp_condition(){ 1666cabdff1aSopenharmony_ci log test_host_cpp_condition "$@" 1667cabdff1aSopenharmony_ci header=$1 1668cabdff1aSopenharmony_ci condition=$2 1669cabdff1aSopenharmony_ci shift 2 1670cabdff1aSopenharmony_ci test_host_cpp "$@" <<EOF 1671cabdff1aSopenharmony_ci#include <$header> 1672cabdff1aSopenharmony_ci#if !($condition) 1673cabdff1aSopenharmony_ci#error "unsatisfied condition: $condition" 1674cabdff1aSopenharmony_ci#endif 1675cabdff1aSopenharmony_ciEOF 1676cabdff1aSopenharmony_ci} 1677cabdff1aSopenharmony_ci 1678cabdff1aSopenharmony_cicheck_host_cpp_condition(){ 1679cabdff1aSopenharmony_ci log check_host_cpp_condition "$@" 1680cabdff1aSopenharmony_ci name=$1 1681cabdff1aSopenharmony_ci shift 1 1682cabdff1aSopenharmony_ci disable $name 1683cabdff1aSopenharmony_ci test_host_cpp_condition "$@" && enable $name 1684cabdff1aSopenharmony_ci} 1685cabdff1aSopenharmony_ci 1686cabdff1aSopenharmony_cicp_if_changed(){ 1687cabdff1aSopenharmony_ci cmp -s "$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return 1688cabdff1aSopenharmony_ci mkdir -p "$(dirname $2)" 1689cabdff1aSopenharmony_ci cp -f "$1" "$2" 1690cabdff1aSopenharmony_ci} 1691cabdff1aSopenharmony_ci 1692cabdff1aSopenharmony_ci# CONFIG_LIST contains configurable options, while HAVE_LIST is for 1693cabdff1aSopenharmony_ci# system-dependent things. 1694cabdff1aSopenharmony_ci 1695cabdff1aSopenharmony_ciAVCODEC_COMPONENTS=" 1696cabdff1aSopenharmony_ci bsfs 1697cabdff1aSopenharmony_ci decoders 1698cabdff1aSopenharmony_ci encoders 1699cabdff1aSopenharmony_ci hwaccels 1700cabdff1aSopenharmony_ci parsers 1701cabdff1aSopenharmony_ci" 1702cabdff1aSopenharmony_ci 1703cabdff1aSopenharmony_ciAVDEVICE_COMPONENTS=" 1704cabdff1aSopenharmony_ci indevs 1705cabdff1aSopenharmony_ci outdevs 1706cabdff1aSopenharmony_ci" 1707cabdff1aSopenharmony_ci 1708cabdff1aSopenharmony_ciAVFILTER_COMPONENTS=" 1709cabdff1aSopenharmony_ci filters 1710cabdff1aSopenharmony_ci" 1711cabdff1aSopenharmony_ci 1712cabdff1aSopenharmony_ciAVFORMAT_COMPONENTS=" 1713cabdff1aSopenharmony_ci demuxers 1714cabdff1aSopenharmony_ci muxers 1715cabdff1aSopenharmony_ci protocols 1716cabdff1aSopenharmony_ci" 1717cabdff1aSopenharmony_ci 1718cabdff1aSopenharmony_ciCOMPONENT_LIST=" 1719cabdff1aSopenharmony_ci $AVCODEC_COMPONENTS 1720cabdff1aSopenharmony_ci $AVDEVICE_COMPONENTS 1721cabdff1aSopenharmony_ci $AVFILTER_COMPONENTS 1722cabdff1aSopenharmony_ci $AVFORMAT_COMPONENTS 1723cabdff1aSopenharmony_ci" 1724cabdff1aSopenharmony_ci 1725cabdff1aSopenharmony_ciEXAMPLE_LIST=" 1726cabdff1aSopenharmony_ci avio_list_dir_example 1727cabdff1aSopenharmony_ci avio_reading_example 1728cabdff1aSopenharmony_ci decode_audio_example 1729cabdff1aSopenharmony_ci decode_video_example 1730cabdff1aSopenharmony_ci demuxing_decoding_example 1731cabdff1aSopenharmony_ci encode_audio_example 1732cabdff1aSopenharmony_ci encode_video_example 1733cabdff1aSopenharmony_ci extract_mvs_example 1734cabdff1aSopenharmony_ci filter_audio_example 1735cabdff1aSopenharmony_ci filtering_audio_example 1736cabdff1aSopenharmony_ci filtering_video_example 1737cabdff1aSopenharmony_ci http_multiclient_example 1738cabdff1aSopenharmony_ci hw_decode_example 1739cabdff1aSopenharmony_ci metadata_example 1740cabdff1aSopenharmony_ci muxing_example 1741cabdff1aSopenharmony_ci qsvdec_example 1742cabdff1aSopenharmony_ci remuxing_example 1743cabdff1aSopenharmony_ci resampling_audio_example 1744cabdff1aSopenharmony_ci scaling_video_example 1745cabdff1aSopenharmony_ci transcode_aac_example 1746cabdff1aSopenharmony_ci transcoding_example 1747cabdff1aSopenharmony_ci vaapi_encode_example 1748cabdff1aSopenharmony_ci vaapi_transcode_example 1749cabdff1aSopenharmony_ci" 1750cabdff1aSopenharmony_ci 1751cabdff1aSopenharmony_ciEXTERNAL_AUTODETECT_LIBRARY_LIST=" 1752cabdff1aSopenharmony_ci alsa 1753cabdff1aSopenharmony_ci appkit 1754cabdff1aSopenharmony_ci avfoundation 1755cabdff1aSopenharmony_ci bzlib 1756cabdff1aSopenharmony_ci coreimage 1757cabdff1aSopenharmony_ci iconv 1758cabdff1aSopenharmony_ci libxcb 1759cabdff1aSopenharmony_ci libxcb_shm 1760cabdff1aSopenharmony_ci libxcb_shape 1761cabdff1aSopenharmony_ci libxcb_xfixes 1762cabdff1aSopenharmony_ci lzma 1763cabdff1aSopenharmony_ci mediafoundation 1764cabdff1aSopenharmony_ci metal 1765cabdff1aSopenharmony_ci schannel 1766cabdff1aSopenharmony_ci sdl2 1767cabdff1aSopenharmony_ci securetransport 1768cabdff1aSopenharmony_ci sndio 1769cabdff1aSopenharmony_ci xlib 1770cabdff1aSopenharmony_ci zlib 1771cabdff1aSopenharmony_ci" 1772cabdff1aSopenharmony_ci 1773cabdff1aSopenharmony_ciEXTERNAL_LIBRARY_GPL_LIST=" 1774cabdff1aSopenharmony_ci avisynth 1775cabdff1aSopenharmony_ci frei0r 1776cabdff1aSopenharmony_ci libcdio 1777cabdff1aSopenharmony_ci libdavs2 1778cabdff1aSopenharmony_ci librubberband 1779cabdff1aSopenharmony_ci libvidstab 1780cabdff1aSopenharmony_ci libx264 1781cabdff1aSopenharmony_ci libx265 1782cabdff1aSopenharmony_ci libxavs 1783cabdff1aSopenharmony_ci libxavs2 1784cabdff1aSopenharmony_ci libxvid 1785cabdff1aSopenharmony_ci" 1786cabdff1aSopenharmony_ci 1787cabdff1aSopenharmony_ciEXTERNAL_LIBRARY_NONFREE_LIST=" 1788cabdff1aSopenharmony_ci decklink 1789cabdff1aSopenharmony_ci libfdk_aac 1790cabdff1aSopenharmony_ci libtls 1791cabdff1aSopenharmony_ci" 1792cabdff1aSopenharmony_ci 1793cabdff1aSopenharmony_ciEXTERNAL_LIBRARY_VERSION3_LIST=" 1794cabdff1aSopenharmony_ci gmp 1795cabdff1aSopenharmony_ci libaribb24 1796cabdff1aSopenharmony_ci liblensfun 1797cabdff1aSopenharmony_ci libopencore_amrnb 1798cabdff1aSopenharmony_ci libopencore_amrwb 1799cabdff1aSopenharmony_ci libvo_amrwbenc 1800cabdff1aSopenharmony_ci mbedtls 1801cabdff1aSopenharmony_ci rkmpp 1802cabdff1aSopenharmony_ci" 1803cabdff1aSopenharmony_ci 1804cabdff1aSopenharmony_ciEXTERNAL_LIBRARY_GPLV3_LIST=" 1805cabdff1aSopenharmony_ci libsmbclient 1806cabdff1aSopenharmony_ci" 1807cabdff1aSopenharmony_ci 1808cabdff1aSopenharmony_ciEXTERNAL_LIBRARY_LIST=" 1809cabdff1aSopenharmony_ci $EXTERNAL_LIBRARY_GPL_LIST 1810cabdff1aSopenharmony_ci $EXTERNAL_LIBRARY_NONFREE_LIST 1811cabdff1aSopenharmony_ci $EXTERNAL_LIBRARY_VERSION3_LIST 1812cabdff1aSopenharmony_ci $EXTERNAL_LIBRARY_GPLV3_LIST 1813cabdff1aSopenharmony_ci chromaprint 1814cabdff1aSopenharmony_ci gcrypt 1815cabdff1aSopenharmony_ci gnutls 1816cabdff1aSopenharmony_ci jni 1817cabdff1aSopenharmony_ci ladspa 1818cabdff1aSopenharmony_ci lcms2 1819cabdff1aSopenharmony_ci libaom 1820cabdff1aSopenharmony_ci libass 1821cabdff1aSopenharmony_ci libbluray 1822cabdff1aSopenharmony_ci libbs2b 1823cabdff1aSopenharmony_ci libcaca 1824cabdff1aSopenharmony_ci libcelt 1825cabdff1aSopenharmony_ci libcodec2 1826cabdff1aSopenharmony_ci libdav1d 1827cabdff1aSopenharmony_ci libdc1394 1828cabdff1aSopenharmony_ci libdrm 1829cabdff1aSopenharmony_ci libflite 1830cabdff1aSopenharmony_ci libfontconfig 1831cabdff1aSopenharmony_ci libfreetype 1832cabdff1aSopenharmony_ci libfribidi 1833cabdff1aSopenharmony_ci libglslang 1834cabdff1aSopenharmony_ci libgme 1835cabdff1aSopenharmony_ci libgsm 1836cabdff1aSopenharmony_ci libiec61883 1837cabdff1aSopenharmony_ci libilbc 1838cabdff1aSopenharmony_ci libjack 1839cabdff1aSopenharmony_ci libjxl 1840cabdff1aSopenharmony_ci libklvanc 1841cabdff1aSopenharmony_ci libkvazaar 1842cabdff1aSopenharmony_ci libmodplug 1843cabdff1aSopenharmony_ci libmp3lame 1844cabdff1aSopenharmony_ci libmysofa 1845cabdff1aSopenharmony_ci libopencv 1846cabdff1aSopenharmony_ci libopenh264 1847cabdff1aSopenharmony_ci libopenjpeg 1848cabdff1aSopenharmony_ci libopenmpt 1849cabdff1aSopenharmony_ci libopenvino 1850cabdff1aSopenharmony_ci libopus 1851cabdff1aSopenharmony_ci libplacebo 1852cabdff1aSopenharmony_ci libpulse 1853cabdff1aSopenharmony_ci librabbitmq 1854cabdff1aSopenharmony_ci librav1e 1855cabdff1aSopenharmony_ci librist 1856cabdff1aSopenharmony_ci librsvg 1857cabdff1aSopenharmony_ci librtmp 1858cabdff1aSopenharmony_ci libshaderc 1859cabdff1aSopenharmony_ci libshine 1860cabdff1aSopenharmony_ci libsmbclient 1861cabdff1aSopenharmony_ci libsnappy 1862cabdff1aSopenharmony_ci libsoxr 1863cabdff1aSopenharmony_ci libspeex 1864cabdff1aSopenharmony_ci libsrt 1865cabdff1aSopenharmony_ci libssh 1866cabdff1aSopenharmony_ci libsvtav1 1867cabdff1aSopenharmony_ci libtensorflow 1868cabdff1aSopenharmony_ci libtesseract 1869cabdff1aSopenharmony_ci libtheora 1870cabdff1aSopenharmony_ci libtwolame 1871cabdff1aSopenharmony_ci libuavs3d 1872cabdff1aSopenharmony_ci libv4l2 1873cabdff1aSopenharmony_ci libvmaf 1874cabdff1aSopenharmony_ci libvorbis 1875cabdff1aSopenharmony_ci libvpx 1876cabdff1aSopenharmony_ci libwebp 1877cabdff1aSopenharmony_ci libxml2 1878cabdff1aSopenharmony_ci libzimg 1879cabdff1aSopenharmony_ci libzmq 1880cabdff1aSopenharmony_ci libzvbi 1881cabdff1aSopenharmony_ci lv2 1882cabdff1aSopenharmony_ci mediacodec 1883cabdff1aSopenharmony_ci openal 1884cabdff1aSopenharmony_ci opengl 1885cabdff1aSopenharmony_ci openssl 1886cabdff1aSopenharmony_ci pocketsphinx 1887cabdff1aSopenharmony_ci vapoursynth 1888cabdff1aSopenharmony_ci" 1889cabdff1aSopenharmony_ci 1890cabdff1aSopenharmony_ciHWACCEL_AUTODETECT_LIBRARY_LIST=" 1891cabdff1aSopenharmony_ci amf 1892cabdff1aSopenharmony_ci audiotoolbox 1893cabdff1aSopenharmony_ci crystalhd 1894cabdff1aSopenharmony_ci cuda 1895cabdff1aSopenharmony_ci cuda_llvm 1896cabdff1aSopenharmony_ci cuvid 1897cabdff1aSopenharmony_ci d3d11va 1898cabdff1aSopenharmony_ci dxva2 1899cabdff1aSopenharmony_ci ffnvcodec 1900cabdff1aSopenharmony_ci nvdec 1901cabdff1aSopenharmony_ci nvenc 1902cabdff1aSopenharmony_ci vaapi 1903cabdff1aSopenharmony_ci vdpau 1904cabdff1aSopenharmony_ci videotoolbox 1905cabdff1aSopenharmony_ci vulkan 1906cabdff1aSopenharmony_ci v4l2_m2m 1907cabdff1aSopenharmony_ci" 1908cabdff1aSopenharmony_ci 1909cabdff1aSopenharmony_ci# catchall list of things that require external libs to link 1910cabdff1aSopenharmony_ciEXTRALIBS_LIST=" 1911cabdff1aSopenharmony_ci cpu_init 1912cabdff1aSopenharmony_ci cws2fws 1913cabdff1aSopenharmony_ci" 1914cabdff1aSopenharmony_ci 1915cabdff1aSopenharmony_ciHWACCEL_LIBRARY_NONFREE_LIST=" 1916cabdff1aSopenharmony_ci cuda_nvcc 1917cabdff1aSopenharmony_ci cuda_sdk 1918cabdff1aSopenharmony_ci libnpp 1919cabdff1aSopenharmony_ci" 1920cabdff1aSopenharmony_ci 1921cabdff1aSopenharmony_ciHWACCEL_LIBRARY_LIST=" 1922cabdff1aSopenharmony_ci $HWACCEL_LIBRARY_NONFREE_LIST 1923cabdff1aSopenharmony_ci libmfx 1924cabdff1aSopenharmony_ci mmal 1925cabdff1aSopenharmony_ci omx 1926cabdff1aSopenharmony_ci opencl 1927cabdff1aSopenharmony_ci" 1928cabdff1aSopenharmony_ci 1929cabdff1aSopenharmony_ciDOCUMENT_LIST=" 1930cabdff1aSopenharmony_ci doc 1931cabdff1aSopenharmony_ci htmlpages 1932cabdff1aSopenharmony_ci manpages 1933cabdff1aSopenharmony_ci podpages 1934cabdff1aSopenharmony_ci txtpages 1935cabdff1aSopenharmony_ci" 1936cabdff1aSopenharmony_ci 1937cabdff1aSopenharmony_ciFEATURE_LIST=" 1938cabdff1aSopenharmony_ci ftrapv 1939cabdff1aSopenharmony_ci gray 1940cabdff1aSopenharmony_ci hardcoded_tables 1941cabdff1aSopenharmony_ci omx_rpi 1942cabdff1aSopenharmony_ci runtime_cpudetect 1943cabdff1aSopenharmony_ci safe_bitstream_reader 1944cabdff1aSopenharmony_ci shared 1945cabdff1aSopenharmony_ci small 1946cabdff1aSopenharmony_ci static 1947cabdff1aSopenharmony_ci swscale_alpha 1948cabdff1aSopenharmony_ci" 1949cabdff1aSopenharmony_ci 1950cabdff1aSopenharmony_ci# this list should be kept in linking order 1951cabdff1aSopenharmony_ciLIBRARY_LIST=" 1952cabdff1aSopenharmony_ci avdevice 1953cabdff1aSopenharmony_ci avfilter 1954cabdff1aSopenharmony_ci swscale 1955cabdff1aSopenharmony_ci postproc 1956cabdff1aSopenharmony_ci avformat 1957cabdff1aSopenharmony_ci avcodec 1958cabdff1aSopenharmony_ci swresample 1959cabdff1aSopenharmony_ci avutil 1960cabdff1aSopenharmony_ci" 1961cabdff1aSopenharmony_ci 1962cabdff1aSopenharmony_ciLICENSE_LIST=" 1963cabdff1aSopenharmony_ci gpl 1964cabdff1aSopenharmony_ci nonfree 1965cabdff1aSopenharmony_ci version3 1966cabdff1aSopenharmony_ci" 1967cabdff1aSopenharmony_ci 1968cabdff1aSopenharmony_ciPROGRAM_LIST=" 1969cabdff1aSopenharmony_ci ffplay 1970cabdff1aSopenharmony_ci ffprobe 1971cabdff1aSopenharmony_ci ffmpeg 1972cabdff1aSopenharmony_ci" 1973cabdff1aSopenharmony_ci 1974cabdff1aSopenharmony_ciSUBSYSTEM_LIST=" 1975cabdff1aSopenharmony_ci dct 1976cabdff1aSopenharmony_ci dwt 1977cabdff1aSopenharmony_ci error_resilience 1978cabdff1aSopenharmony_ci faan 1979cabdff1aSopenharmony_ci fast_unaligned 1980cabdff1aSopenharmony_ci fft 1981cabdff1aSopenharmony_ci lsp 1982cabdff1aSopenharmony_ci mdct 1983cabdff1aSopenharmony_ci pixelutils 1984cabdff1aSopenharmony_ci network 1985cabdff1aSopenharmony_ci rdft 1986cabdff1aSopenharmony_ci" 1987cabdff1aSopenharmony_ci 1988cabdff1aSopenharmony_ci# COMPONENT_LIST needs to come last to ensure correct dependency checking 1989cabdff1aSopenharmony_ciCONFIG_LIST=" 1990cabdff1aSopenharmony_ci $DOCUMENT_LIST 1991cabdff1aSopenharmony_ci $EXAMPLE_LIST 1992cabdff1aSopenharmony_ci $EXTERNAL_LIBRARY_LIST 1993cabdff1aSopenharmony_ci $EXTERNAL_AUTODETECT_LIBRARY_LIST 1994cabdff1aSopenharmony_ci $HWACCEL_LIBRARY_LIST 1995cabdff1aSopenharmony_ci $HWACCEL_AUTODETECT_LIBRARY_LIST 1996cabdff1aSopenharmony_ci $FEATURE_LIST 1997cabdff1aSopenharmony_ci $LICENSE_LIST 1998cabdff1aSopenharmony_ci $LIBRARY_LIST 1999cabdff1aSopenharmony_ci $PROGRAM_LIST 2000cabdff1aSopenharmony_ci $SUBSYSTEM_LIST 2001cabdff1aSopenharmony_ci autodetect 2002cabdff1aSopenharmony_ci fontconfig 2003cabdff1aSopenharmony_ci large_tests 2004cabdff1aSopenharmony_ci linux_perf 2005cabdff1aSopenharmony_ci macos_kperf 2006cabdff1aSopenharmony_ci memory_poisoning 2007cabdff1aSopenharmony_ci neon_clobber_test 2008cabdff1aSopenharmony_ci ossfuzz 2009cabdff1aSopenharmony_ci pic 2010cabdff1aSopenharmony_ci ptx_compression 2011cabdff1aSopenharmony_ci thumb 2012cabdff1aSopenharmony_ci valgrind_backtrace 2013cabdff1aSopenharmony_ci xmm_clobber_test 2014cabdff1aSopenharmony_ci $COMPONENT_LIST 2015cabdff1aSopenharmony_ci" 2016cabdff1aSopenharmony_ci 2017cabdff1aSopenharmony_ciTHREADS_LIST=" 2018cabdff1aSopenharmony_ci pthreads 2019cabdff1aSopenharmony_ci os2threads 2020cabdff1aSopenharmony_ci w32threads 2021cabdff1aSopenharmony_ci" 2022cabdff1aSopenharmony_ci 2023cabdff1aSopenharmony_ciATOMICS_LIST=" 2024cabdff1aSopenharmony_ci atomics_gcc 2025cabdff1aSopenharmony_ci atomics_suncc 2026cabdff1aSopenharmony_ci atomics_win32 2027cabdff1aSopenharmony_ci" 2028cabdff1aSopenharmony_ci 2029cabdff1aSopenharmony_ciAUTODETECT_LIBS=" 2030cabdff1aSopenharmony_ci $EXTERNAL_AUTODETECT_LIBRARY_LIST 2031cabdff1aSopenharmony_ci $HWACCEL_AUTODETECT_LIBRARY_LIST 2032cabdff1aSopenharmony_ci $THREADS_LIST 2033cabdff1aSopenharmony_ci" 2034cabdff1aSopenharmony_ci 2035cabdff1aSopenharmony_ciARCH_LIST=" 2036cabdff1aSopenharmony_ci aarch64 2037cabdff1aSopenharmony_ci alpha 2038cabdff1aSopenharmony_ci arm 2039cabdff1aSopenharmony_ci avr32 2040cabdff1aSopenharmony_ci avr32_ap 2041cabdff1aSopenharmony_ci avr32_uc 2042cabdff1aSopenharmony_ci bfin 2043cabdff1aSopenharmony_ci ia64 2044cabdff1aSopenharmony_ci loongarch 2045cabdff1aSopenharmony_ci loongarch32 2046cabdff1aSopenharmony_ci loongarch64 2047cabdff1aSopenharmony_ci m68k 2048cabdff1aSopenharmony_ci mips 2049cabdff1aSopenharmony_ci mips64 2050cabdff1aSopenharmony_ci parisc 2051cabdff1aSopenharmony_ci ppc 2052cabdff1aSopenharmony_ci ppc64 2053cabdff1aSopenharmony_ci riscv 2054cabdff1aSopenharmony_ci s390 2055cabdff1aSopenharmony_ci sh4 2056cabdff1aSopenharmony_ci sparc 2057cabdff1aSopenharmony_ci sparc64 2058cabdff1aSopenharmony_ci tilegx 2059cabdff1aSopenharmony_ci tilepro 2060cabdff1aSopenharmony_ci tomi 2061cabdff1aSopenharmony_ci x86 2062cabdff1aSopenharmony_ci x86_32 2063cabdff1aSopenharmony_ci x86_64 2064cabdff1aSopenharmony_ci" 2065cabdff1aSopenharmony_ci 2066cabdff1aSopenharmony_ciARCH_EXT_LIST_ARM=" 2067cabdff1aSopenharmony_ci armv5te 2068cabdff1aSopenharmony_ci armv6 2069cabdff1aSopenharmony_ci armv6t2 2070cabdff1aSopenharmony_ci armv8 2071cabdff1aSopenharmony_ci neon 2072cabdff1aSopenharmony_ci vfp 2073cabdff1aSopenharmony_ci vfpv3 2074cabdff1aSopenharmony_ci setend 2075cabdff1aSopenharmony_ci" 2076cabdff1aSopenharmony_ci 2077cabdff1aSopenharmony_ciARCH_EXT_LIST_MIPS=" 2078cabdff1aSopenharmony_ci mipsfpu 2079cabdff1aSopenharmony_ci mips32r2 2080cabdff1aSopenharmony_ci mips32r5 2081cabdff1aSopenharmony_ci mips64r2 2082cabdff1aSopenharmony_ci mips32r6 2083cabdff1aSopenharmony_ci mips64r6 2084cabdff1aSopenharmony_ci mipsdsp 2085cabdff1aSopenharmony_ci mipsdspr2 2086cabdff1aSopenharmony_ci msa 2087cabdff1aSopenharmony_ci" 2088cabdff1aSopenharmony_ci 2089cabdff1aSopenharmony_ciARCH_EXT_LIST_LOONGSON=" 2090cabdff1aSopenharmony_ci loongson2 2091cabdff1aSopenharmony_ci loongson3 2092cabdff1aSopenharmony_ci mmi 2093cabdff1aSopenharmony_ci lsx 2094cabdff1aSopenharmony_ci lasx 2095cabdff1aSopenharmony_ci" 2096cabdff1aSopenharmony_ci 2097cabdff1aSopenharmony_ciARCH_EXT_LIST_X86_SIMD=" 2098cabdff1aSopenharmony_ci aesni 2099cabdff1aSopenharmony_ci amd3dnow 2100cabdff1aSopenharmony_ci amd3dnowext 2101cabdff1aSopenharmony_ci avx 2102cabdff1aSopenharmony_ci avx2 2103cabdff1aSopenharmony_ci avx512 2104cabdff1aSopenharmony_ci avx512icl 2105cabdff1aSopenharmony_ci fma3 2106cabdff1aSopenharmony_ci fma4 2107cabdff1aSopenharmony_ci mmx 2108cabdff1aSopenharmony_ci mmxext 2109cabdff1aSopenharmony_ci sse 2110cabdff1aSopenharmony_ci sse2 2111cabdff1aSopenharmony_ci sse3 2112cabdff1aSopenharmony_ci sse4 2113cabdff1aSopenharmony_ci sse42 2114cabdff1aSopenharmony_ci ssse3 2115cabdff1aSopenharmony_ci xop 2116cabdff1aSopenharmony_ci" 2117cabdff1aSopenharmony_ci 2118cabdff1aSopenharmony_ciARCH_EXT_LIST_PPC=" 2119cabdff1aSopenharmony_ci altivec 2120cabdff1aSopenharmony_ci dcbzl 2121cabdff1aSopenharmony_ci ldbrx 2122cabdff1aSopenharmony_ci power8 2123cabdff1aSopenharmony_ci ppc4xx 2124cabdff1aSopenharmony_ci vsx 2125cabdff1aSopenharmony_ci" 2126cabdff1aSopenharmony_ci 2127cabdff1aSopenharmony_ciARCH_EXT_LIST_X86=" 2128cabdff1aSopenharmony_ci $ARCH_EXT_LIST_X86_SIMD 2129cabdff1aSopenharmony_ci cpunop 2130cabdff1aSopenharmony_ci i686 2131cabdff1aSopenharmony_ci" 2132cabdff1aSopenharmony_ci 2133cabdff1aSopenharmony_ciARCH_EXT_LIST=" 2134cabdff1aSopenharmony_ci $ARCH_EXT_LIST_ARM 2135cabdff1aSopenharmony_ci $ARCH_EXT_LIST_PPC 2136cabdff1aSopenharmony_ci $ARCH_EXT_LIST_X86 2137cabdff1aSopenharmony_ci $ARCH_EXT_LIST_MIPS 2138cabdff1aSopenharmony_ci $ARCH_EXT_LIST_LOONGSON 2139cabdff1aSopenharmony_ci" 2140cabdff1aSopenharmony_ci 2141cabdff1aSopenharmony_ciARCH_FEATURES=" 2142cabdff1aSopenharmony_ci aligned_stack 2143cabdff1aSopenharmony_ci fast_64bit 2144cabdff1aSopenharmony_ci fast_clz 2145cabdff1aSopenharmony_ci fast_cmov 2146cabdff1aSopenharmony_ci local_aligned 2147cabdff1aSopenharmony_ci simd_align_16 2148cabdff1aSopenharmony_ci simd_align_32 2149cabdff1aSopenharmony_ci simd_align_64 2150cabdff1aSopenharmony_ci" 2151cabdff1aSopenharmony_ci 2152cabdff1aSopenharmony_ciBUILTIN_LIST=" 2153cabdff1aSopenharmony_ci atomic_cas_ptr 2154cabdff1aSopenharmony_ci machine_rw_barrier 2155cabdff1aSopenharmony_ci MemoryBarrier 2156cabdff1aSopenharmony_ci mm_empty 2157cabdff1aSopenharmony_ci rdtsc 2158cabdff1aSopenharmony_ci sem_timedwait 2159cabdff1aSopenharmony_ci sync_val_compare_and_swap 2160cabdff1aSopenharmony_ci" 2161cabdff1aSopenharmony_ciHAVE_LIST_CMDLINE=" 2162cabdff1aSopenharmony_ci inline_asm 2163cabdff1aSopenharmony_ci symver 2164cabdff1aSopenharmony_ci x86asm 2165cabdff1aSopenharmony_ci" 2166cabdff1aSopenharmony_ci 2167cabdff1aSopenharmony_ciHAVE_LIST_PUB=" 2168cabdff1aSopenharmony_ci bigendian 2169cabdff1aSopenharmony_ci fast_unaligned 2170cabdff1aSopenharmony_ci" 2171cabdff1aSopenharmony_ci 2172cabdff1aSopenharmony_ciHEADERS_LIST=" 2173cabdff1aSopenharmony_ci arpa_inet_h 2174cabdff1aSopenharmony_ci asm_types_h 2175cabdff1aSopenharmony_ci cdio_paranoia_h 2176cabdff1aSopenharmony_ci cdio_paranoia_paranoia_h 2177cabdff1aSopenharmony_ci cuda_h 2178cabdff1aSopenharmony_ci dispatch_dispatch_h 2179cabdff1aSopenharmony_ci dev_bktr_ioctl_bt848_h 2180cabdff1aSopenharmony_ci dev_bktr_ioctl_meteor_h 2181cabdff1aSopenharmony_ci dev_ic_bt8xx_h 2182cabdff1aSopenharmony_ci dev_video_bktr_ioctl_bt848_h 2183cabdff1aSopenharmony_ci dev_video_meteor_ioctl_meteor_h 2184cabdff1aSopenharmony_ci direct_h 2185cabdff1aSopenharmony_ci dirent_h 2186cabdff1aSopenharmony_ci dxgidebug_h 2187cabdff1aSopenharmony_ci dxva_h 2188cabdff1aSopenharmony_ci ES2_gl_h 2189cabdff1aSopenharmony_ci gsm_h 2190cabdff1aSopenharmony_ci io_h 2191cabdff1aSopenharmony_ci linux_dma_buf_h 2192cabdff1aSopenharmony_ci linux_perf_event_h 2193cabdff1aSopenharmony_ci machine_ioctl_bt848_h 2194cabdff1aSopenharmony_ci machine_ioctl_meteor_h 2195cabdff1aSopenharmony_ci malloc_h 2196cabdff1aSopenharmony_ci opencv2_core_core_c_h 2197cabdff1aSopenharmony_ci OpenGL_gl3_h 2198cabdff1aSopenharmony_ci poll_h 2199cabdff1aSopenharmony_ci sys_param_h 2200cabdff1aSopenharmony_ci sys_resource_h 2201cabdff1aSopenharmony_ci sys_select_h 2202cabdff1aSopenharmony_ci sys_soundcard_h 2203cabdff1aSopenharmony_ci sys_time_h 2204cabdff1aSopenharmony_ci sys_un_h 2205cabdff1aSopenharmony_ci sys_videoio_h 2206cabdff1aSopenharmony_ci termios_h 2207cabdff1aSopenharmony_ci udplite_h 2208cabdff1aSopenharmony_ci unistd_h 2209cabdff1aSopenharmony_ci valgrind_valgrind_h 2210cabdff1aSopenharmony_ci windows_h 2211cabdff1aSopenharmony_ci winsock2_h 2212cabdff1aSopenharmony_ci" 2213cabdff1aSopenharmony_ci 2214cabdff1aSopenharmony_ciINTRINSICS_LIST=" 2215cabdff1aSopenharmony_ci intrinsics_neon 2216cabdff1aSopenharmony_ci" 2217cabdff1aSopenharmony_ci 2218cabdff1aSopenharmony_ciCOMPLEX_FUNCS=" 2219cabdff1aSopenharmony_ci cabs 2220cabdff1aSopenharmony_ci cexp 2221cabdff1aSopenharmony_ci" 2222cabdff1aSopenharmony_ci 2223cabdff1aSopenharmony_ciMATH_FUNCS=" 2224cabdff1aSopenharmony_ci atanf 2225cabdff1aSopenharmony_ci atan2f 2226cabdff1aSopenharmony_ci cbrt 2227cabdff1aSopenharmony_ci cbrtf 2228cabdff1aSopenharmony_ci copysign 2229cabdff1aSopenharmony_ci cosf 2230cabdff1aSopenharmony_ci erf 2231cabdff1aSopenharmony_ci exp2 2232cabdff1aSopenharmony_ci exp2f 2233cabdff1aSopenharmony_ci expf 2234cabdff1aSopenharmony_ci hypot 2235cabdff1aSopenharmony_ci isfinite 2236cabdff1aSopenharmony_ci isinf 2237cabdff1aSopenharmony_ci isnan 2238cabdff1aSopenharmony_ci ldexpf 2239cabdff1aSopenharmony_ci llrint 2240cabdff1aSopenharmony_ci llrintf 2241cabdff1aSopenharmony_ci log2 2242cabdff1aSopenharmony_ci log2f 2243cabdff1aSopenharmony_ci log10f 2244cabdff1aSopenharmony_ci lrint 2245cabdff1aSopenharmony_ci lrintf 2246cabdff1aSopenharmony_ci powf 2247cabdff1aSopenharmony_ci rint 2248cabdff1aSopenharmony_ci round 2249cabdff1aSopenharmony_ci roundf 2250cabdff1aSopenharmony_ci sinf 2251cabdff1aSopenharmony_ci trunc 2252cabdff1aSopenharmony_ci truncf 2253cabdff1aSopenharmony_ci" 2254cabdff1aSopenharmony_ci 2255cabdff1aSopenharmony_ciSYSTEM_FEATURES=" 2256cabdff1aSopenharmony_ci dos_paths 2257cabdff1aSopenharmony_ci libc_msvcrt 2258cabdff1aSopenharmony_ci MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 2259cabdff1aSopenharmony_ci section_data_rel_ro 2260cabdff1aSopenharmony_ci threads 2261cabdff1aSopenharmony_ci uwp 2262cabdff1aSopenharmony_ci winrt 2263cabdff1aSopenharmony_ci" 2264cabdff1aSopenharmony_ci 2265cabdff1aSopenharmony_ciSYSTEM_FUNCS=" 2266cabdff1aSopenharmony_ci access 2267cabdff1aSopenharmony_ci aligned_malloc 2268cabdff1aSopenharmony_ci arc4random 2269cabdff1aSopenharmony_ci clock_gettime 2270cabdff1aSopenharmony_ci closesocket 2271cabdff1aSopenharmony_ci CommandLineToArgvW 2272cabdff1aSopenharmony_ci fcntl 2273cabdff1aSopenharmony_ci getaddrinfo 2274cabdff1aSopenharmony_ci getauxval 2275cabdff1aSopenharmony_ci getenv 2276cabdff1aSopenharmony_ci gethrtime 2277cabdff1aSopenharmony_ci getopt 2278cabdff1aSopenharmony_ci GetModuleHandle 2279cabdff1aSopenharmony_ci GetProcessAffinityMask 2280cabdff1aSopenharmony_ci GetProcessMemoryInfo 2281cabdff1aSopenharmony_ci GetProcessTimes 2282cabdff1aSopenharmony_ci getrusage 2283cabdff1aSopenharmony_ci GetStdHandle 2284cabdff1aSopenharmony_ci GetSystemTimeAsFileTime 2285cabdff1aSopenharmony_ci gettimeofday 2286cabdff1aSopenharmony_ci glob 2287cabdff1aSopenharmony_ci glXGetProcAddress 2288cabdff1aSopenharmony_ci gmtime_r 2289cabdff1aSopenharmony_ci inet_aton 2290cabdff1aSopenharmony_ci isatty 2291cabdff1aSopenharmony_ci kbhit 2292cabdff1aSopenharmony_ci localtime_r 2293cabdff1aSopenharmony_ci lstat 2294cabdff1aSopenharmony_ci lzo1x_999_compress 2295cabdff1aSopenharmony_ci mach_absolute_time 2296cabdff1aSopenharmony_ci MapViewOfFile 2297cabdff1aSopenharmony_ci memalign 2298cabdff1aSopenharmony_ci mkstemp 2299cabdff1aSopenharmony_ci mmap 2300cabdff1aSopenharmony_ci mprotect 2301cabdff1aSopenharmony_ci nanosleep 2302cabdff1aSopenharmony_ci PeekNamedPipe 2303cabdff1aSopenharmony_ci posix_memalign 2304cabdff1aSopenharmony_ci pthread_cancel 2305cabdff1aSopenharmony_ci sched_getaffinity 2306cabdff1aSopenharmony_ci SecItemImport 2307cabdff1aSopenharmony_ci SetConsoleTextAttribute 2308cabdff1aSopenharmony_ci SetConsoleCtrlHandler 2309cabdff1aSopenharmony_ci SetDllDirectory 2310cabdff1aSopenharmony_ci setmode 2311cabdff1aSopenharmony_ci setrlimit 2312cabdff1aSopenharmony_ci Sleep 2313cabdff1aSopenharmony_ci strerror_r 2314cabdff1aSopenharmony_ci sysconf 2315cabdff1aSopenharmony_ci sysctl 2316cabdff1aSopenharmony_ci usleep 2317cabdff1aSopenharmony_ci UTGetOSTypeFromString 2318cabdff1aSopenharmony_ci VirtualAlloc 2319cabdff1aSopenharmony_ci wglGetProcAddress 2320cabdff1aSopenharmony_ci" 2321cabdff1aSopenharmony_ci 2322cabdff1aSopenharmony_ciSYSTEM_LIBRARIES=" 2323cabdff1aSopenharmony_ci bcrypt 2324cabdff1aSopenharmony_ci vaapi_drm 2325cabdff1aSopenharmony_ci vaapi_x11 2326cabdff1aSopenharmony_ci vdpau_x11 2327cabdff1aSopenharmony_ci" 2328cabdff1aSopenharmony_ci 2329cabdff1aSopenharmony_ciTOOLCHAIN_FEATURES=" 2330cabdff1aSopenharmony_ci as_arch_directive 2331cabdff1aSopenharmony_ci as_dn_directive 2332cabdff1aSopenharmony_ci as_fpu_directive 2333cabdff1aSopenharmony_ci as_func 2334cabdff1aSopenharmony_ci as_object_arch 2335cabdff1aSopenharmony_ci asm_mod_q 2336cabdff1aSopenharmony_ci blocks_extension 2337cabdff1aSopenharmony_ci ebp_available 2338cabdff1aSopenharmony_ci ebx_available 2339cabdff1aSopenharmony_ci gnu_as 2340cabdff1aSopenharmony_ci gnu_windres 2341cabdff1aSopenharmony_ci ibm_asm 2342cabdff1aSopenharmony_ci inline_asm_direct_symbol_refs 2343cabdff1aSopenharmony_ci inline_asm_labels 2344cabdff1aSopenharmony_ci inline_asm_nonlocal_labels 2345cabdff1aSopenharmony_ci pragma_deprecated 2346cabdff1aSopenharmony_ci rsync_contimeout 2347cabdff1aSopenharmony_ci symver_asm_label 2348cabdff1aSopenharmony_ci symver_gnu_asm 2349cabdff1aSopenharmony_ci vfp_args 2350cabdff1aSopenharmony_ci xform_asm 2351cabdff1aSopenharmony_ci xmm_clobbers 2352cabdff1aSopenharmony_ci" 2353cabdff1aSopenharmony_ci 2354cabdff1aSopenharmony_ciTYPES_LIST=" 2355cabdff1aSopenharmony_ci kCMVideoCodecType_HEVC 2356cabdff1aSopenharmony_ci kCMVideoCodecType_HEVCWithAlpha 2357cabdff1aSopenharmony_ci kCMVideoCodecType_VP9 2358cabdff1aSopenharmony_ci kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange 2359cabdff1aSopenharmony_ci kCVPixelFormatType_422YpCbCr8BiPlanarVideoRange 2360cabdff1aSopenharmony_ci kCVPixelFormatType_422YpCbCr10BiPlanarVideoRange 2361cabdff1aSopenharmony_ci kCVPixelFormatType_422YpCbCr16BiPlanarVideoRange 2362cabdff1aSopenharmony_ci kCVPixelFormatType_444YpCbCr8BiPlanarVideoRange 2363cabdff1aSopenharmony_ci kCVPixelFormatType_444YpCbCr10BiPlanarVideoRange 2364cabdff1aSopenharmony_ci kCVPixelFormatType_444YpCbCr16BiPlanarVideoRange 2365cabdff1aSopenharmony_ci kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ 2366cabdff1aSopenharmony_ci kCVImageBufferTransferFunction_ITU_R_2100_HLG 2367cabdff1aSopenharmony_ci kCVImageBufferTransferFunction_Linear 2368cabdff1aSopenharmony_ci kCVImageBufferYCbCrMatrix_ITU_R_2020 2369cabdff1aSopenharmony_ci kCVImageBufferColorPrimaries_ITU_R_2020 2370cabdff1aSopenharmony_ci kCVImageBufferTransferFunction_ITU_R_2020 2371cabdff1aSopenharmony_ci kCVImageBufferTransferFunction_SMPTE_ST_428_1 2372cabdff1aSopenharmony_ci socklen_t 2373cabdff1aSopenharmony_ci struct_addrinfo 2374cabdff1aSopenharmony_ci struct_group_source_req 2375cabdff1aSopenharmony_ci struct_ip_mreq_source 2376cabdff1aSopenharmony_ci struct_ipv6_mreq 2377cabdff1aSopenharmony_ci struct_msghdr_msg_flags 2378cabdff1aSopenharmony_ci struct_pollfd 2379cabdff1aSopenharmony_ci struct_rusage_ru_maxrss 2380cabdff1aSopenharmony_ci struct_sctp_event_subscribe 2381cabdff1aSopenharmony_ci struct_sockaddr_in6 2382cabdff1aSopenharmony_ci struct_sockaddr_sa_len 2383cabdff1aSopenharmony_ci struct_sockaddr_storage 2384cabdff1aSopenharmony_ci struct_stat_st_mtim_tv_nsec 2385cabdff1aSopenharmony_ci struct_v4l2_frmivalenum_discrete 2386cabdff1aSopenharmony_ci" 2387cabdff1aSopenharmony_ci 2388cabdff1aSopenharmony_ciHAVE_LIST=" 2389cabdff1aSopenharmony_ci $ARCH_EXT_LIST 2390cabdff1aSopenharmony_ci $(add_suffix _external $ARCH_EXT_LIST) 2391cabdff1aSopenharmony_ci $(add_suffix _inline $ARCH_EXT_LIST) 2392cabdff1aSopenharmony_ci $ARCH_FEATURES 2393cabdff1aSopenharmony_ci $BUILTIN_LIST 2394cabdff1aSopenharmony_ci $COMPLEX_FUNCS 2395cabdff1aSopenharmony_ci $HAVE_LIST_CMDLINE 2396cabdff1aSopenharmony_ci $HAVE_LIST_PUB 2397cabdff1aSopenharmony_ci $HEADERS_LIST 2398cabdff1aSopenharmony_ci $INTRINSICS_LIST 2399cabdff1aSopenharmony_ci $MATH_FUNCS 2400cabdff1aSopenharmony_ci $SYSTEM_FEATURES 2401cabdff1aSopenharmony_ci $SYSTEM_FUNCS 2402cabdff1aSopenharmony_ci $SYSTEM_LIBRARIES 2403cabdff1aSopenharmony_ci $THREADS_LIST 2404cabdff1aSopenharmony_ci $TOOLCHAIN_FEATURES 2405cabdff1aSopenharmony_ci $TYPES_LIST 2406cabdff1aSopenharmony_ci gzip 2407cabdff1aSopenharmony_ci libdrm_getfb2 2408cabdff1aSopenharmony_ci makeinfo 2409cabdff1aSopenharmony_ci makeinfo_html 2410cabdff1aSopenharmony_ci opencl_d3d11 2411cabdff1aSopenharmony_ci opencl_drm_arm 2412cabdff1aSopenharmony_ci opencl_drm_beignet 2413cabdff1aSopenharmony_ci opencl_dxva2 2414cabdff1aSopenharmony_ci opencl_vaapi_beignet 2415cabdff1aSopenharmony_ci opencl_vaapi_intel_media 2416cabdff1aSopenharmony_ci perl 2417cabdff1aSopenharmony_ci pod2man 2418cabdff1aSopenharmony_ci texi2html 2419cabdff1aSopenharmony_ci xmllint 2420cabdff1aSopenharmony_ci zlib_gzip 2421cabdff1aSopenharmony_ci" 2422cabdff1aSopenharmony_ci 2423cabdff1aSopenharmony_ci# options emitted with CONFIG_ prefix but not available on the command line 2424cabdff1aSopenharmony_ciCONFIG_EXTRA=" 2425cabdff1aSopenharmony_ci aandcttables 2426cabdff1aSopenharmony_ci ac3dsp 2427cabdff1aSopenharmony_ci adts_header 2428cabdff1aSopenharmony_ci atsc_a53 2429cabdff1aSopenharmony_ci audio_frame_queue 2430cabdff1aSopenharmony_ci audiodsp 2431cabdff1aSopenharmony_ci blockdsp 2432cabdff1aSopenharmony_ci bswapdsp 2433cabdff1aSopenharmony_ci cabac 2434cabdff1aSopenharmony_ci cbs 2435cabdff1aSopenharmony_ci cbs_av1 2436cabdff1aSopenharmony_ci cbs_h264 2437cabdff1aSopenharmony_ci cbs_h265 2438cabdff1aSopenharmony_ci cbs_jpeg 2439cabdff1aSopenharmony_ci cbs_mpeg2 2440cabdff1aSopenharmony_ci cbs_vp9 2441cabdff1aSopenharmony_ci deflate_wrapper 2442cabdff1aSopenharmony_ci dirac_parse 2443cabdff1aSopenharmony_ci dnn 2444cabdff1aSopenharmony_ci dovi_rpu 2445cabdff1aSopenharmony_ci dvprofile 2446cabdff1aSopenharmony_ci exif 2447cabdff1aSopenharmony_ci faandct 2448cabdff1aSopenharmony_ci faanidct 2449cabdff1aSopenharmony_ci fdctdsp 2450cabdff1aSopenharmony_ci flacdsp 2451cabdff1aSopenharmony_ci fmtconvert 2452cabdff1aSopenharmony_ci frame_thread_encoder 2453cabdff1aSopenharmony_ci g722dsp 2454cabdff1aSopenharmony_ci golomb 2455cabdff1aSopenharmony_ci gplv3 2456cabdff1aSopenharmony_ci h263dsp 2457cabdff1aSopenharmony_ci h264chroma 2458cabdff1aSopenharmony_ci h264dsp 2459cabdff1aSopenharmony_ci h264parse 2460cabdff1aSopenharmony_ci h264pred 2461cabdff1aSopenharmony_ci h264qpel 2462cabdff1aSopenharmony_ci hevcparse 2463cabdff1aSopenharmony_ci hpeldsp 2464cabdff1aSopenharmony_ci huffman 2465cabdff1aSopenharmony_ci huffyuvdsp 2466cabdff1aSopenharmony_ci huffyuvencdsp 2467cabdff1aSopenharmony_ci idctdsp 2468cabdff1aSopenharmony_ci iirfilter 2469cabdff1aSopenharmony_ci mdct15 2470cabdff1aSopenharmony_ci inflate_wrapper 2471cabdff1aSopenharmony_ci intrax8 2472cabdff1aSopenharmony_ci iso_media 2473cabdff1aSopenharmony_ci ividsp 2474cabdff1aSopenharmony_ci jpegtables 2475cabdff1aSopenharmony_ci lgplv3 2476cabdff1aSopenharmony_ci libx262 2477cabdff1aSopenharmony_ci llauddsp 2478cabdff1aSopenharmony_ci llviddsp 2479cabdff1aSopenharmony_ci llvidencdsp 2480cabdff1aSopenharmony_ci lpc 2481cabdff1aSopenharmony_ci lzf 2482cabdff1aSopenharmony_ci me_cmp 2483cabdff1aSopenharmony_ci mpeg_er 2484cabdff1aSopenharmony_ci mpegaudio 2485cabdff1aSopenharmony_ci mpegaudiodsp 2486cabdff1aSopenharmony_ci mpegaudioheader 2487cabdff1aSopenharmony_ci mpeg4audio 2488cabdff1aSopenharmony_ci mpegvideo 2489cabdff1aSopenharmony_ci mpegvideodec 2490cabdff1aSopenharmony_ci mpegvideoenc 2491cabdff1aSopenharmony_ci mss34dsp 2492cabdff1aSopenharmony_ci pixblockdsp 2493cabdff1aSopenharmony_ci qpeldsp 2494cabdff1aSopenharmony_ci qsv 2495cabdff1aSopenharmony_ci qsvdec 2496cabdff1aSopenharmony_ci qsvenc 2497cabdff1aSopenharmony_ci qsvvpp 2498cabdff1aSopenharmony_ci rangecoder 2499cabdff1aSopenharmony_ci riffdec 2500cabdff1aSopenharmony_ci riffenc 2501cabdff1aSopenharmony_ci rtpdec 2502cabdff1aSopenharmony_ci rtpenc_chain 2503cabdff1aSopenharmony_ci rv34dsp 2504cabdff1aSopenharmony_ci scene_sad 2505cabdff1aSopenharmony_ci sinewin 2506cabdff1aSopenharmony_ci snappy 2507cabdff1aSopenharmony_ci srtp 2508cabdff1aSopenharmony_ci startcode 2509cabdff1aSopenharmony_ci texturedsp 2510cabdff1aSopenharmony_ci texturedspenc 2511cabdff1aSopenharmony_ci tpeldsp 2512cabdff1aSopenharmony_ci vaapi_1 2513cabdff1aSopenharmony_ci vaapi_encode 2514cabdff1aSopenharmony_ci vc1dsp 2515cabdff1aSopenharmony_ci videodsp 2516cabdff1aSopenharmony_ci vp3dsp 2517cabdff1aSopenharmony_ci vp56dsp 2518cabdff1aSopenharmony_ci vp8dsp 2519cabdff1aSopenharmony_ci wma_freqs 2520cabdff1aSopenharmony_ci wmv2dsp 2521cabdff1aSopenharmony_ci" 2522cabdff1aSopenharmony_ci 2523cabdff1aSopenharmony_ciCMDLINE_SELECT=" 2524cabdff1aSopenharmony_ci $ARCH_EXT_LIST 2525cabdff1aSopenharmony_ci $CONFIG_LIST 2526cabdff1aSopenharmony_ci $HAVE_LIST_CMDLINE 2527cabdff1aSopenharmony_ci $THREADS_LIST 2528cabdff1aSopenharmony_ci asm 2529cabdff1aSopenharmony_ci cross_compile 2530cabdff1aSopenharmony_ci debug 2531cabdff1aSopenharmony_ci extra_warnings 2532cabdff1aSopenharmony_ci logging 2533cabdff1aSopenharmony_ci lto 2534cabdff1aSopenharmony_ci optimizations 2535cabdff1aSopenharmony_ci rpath 2536cabdff1aSopenharmony_ci stripping 2537cabdff1aSopenharmony_ci" 2538cabdff1aSopenharmony_ci 2539cabdff1aSopenharmony_ciPATHS_LIST=" 2540cabdff1aSopenharmony_ci bindir 2541cabdff1aSopenharmony_ci datadir 2542cabdff1aSopenharmony_ci docdir 2543cabdff1aSopenharmony_ci incdir 2544cabdff1aSopenharmony_ci libdir 2545cabdff1aSopenharmony_ci mandir 2546cabdff1aSopenharmony_ci pkgconfigdir 2547cabdff1aSopenharmony_ci prefix 2548cabdff1aSopenharmony_ci shlibdir 2549cabdff1aSopenharmony_ci install_name_dir 2550cabdff1aSopenharmony_ci" 2551cabdff1aSopenharmony_ci 2552cabdff1aSopenharmony_ciCMDLINE_SET=" 2553cabdff1aSopenharmony_ci $PATHS_LIST 2554cabdff1aSopenharmony_ci ar 2555cabdff1aSopenharmony_ci arch 2556cabdff1aSopenharmony_ci as 2557cabdff1aSopenharmony_ci assert_level 2558cabdff1aSopenharmony_ci build_suffix 2559cabdff1aSopenharmony_ci cc 2560cabdff1aSopenharmony_ci objcc 2561cabdff1aSopenharmony_ci cpu 2562cabdff1aSopenharmony_ci cross_prefix 2563cabdff1aSopenharmony_ci custom_allocator 2564cabdff1aSopenharmony_ci cxx 2565cabdff1aSopenharmony_ci dep_cc 2566cabdff1aSopenharmony_ci doxygen 2567cabdff1aSopenharmony_ci env 2568cabdff1aSopenharmony_ci extra_version 2569cabdff1aSopenharmony_ci gas 2570cabdff1aSopenharmony_ci host_cc 2571cabdff1aSopenharmony_ci host_cflags 2572cabdff1aSopenharmony_ci host_extralibs 2573cabdff1aSopenharmony_ci host_ld 2574cabdff1aSopenharmony_ci host_ldflags 2575cabdff1aSopenharmony_ci host_os 2576cabdff1aSopenharmony_ci ignore_tests 2577cabdff1aSopenharmony_ci install 2578cabdff1aSopenharmony_ci ld 2579cabdff1aSopenharmony_ci ln_s 2580cabdff1aSopenharmony_ci logfile 2581cabdff1aSopenharmony_ci malloc_prefix 2582cabdff1aSopenharmony_ci metalcc 2583cabdff1aSopenharmony_ci metallib 2584cabdff1aSopenharmony_ci nm 2585cabdff1aSopenharmony_ci optflags 2586cabdff1aSopenharmony_ci nvcc 2587cabdff1aSopenharmony_ci nvccflags 2588cabdff1aSopenharmony_ci pkg_config 2589cabdff1aSopenharmony_ci pkg_config_flags 2590cabdff1aSopenharmony_ci progs_suffix 2591cabdff1aSopenharmony_ci random_seed 2592cabdff1aSopenharmony_ci ranlib 2593cabdff1aSopenharmony_ci samples 2594cabdff1aSopenharmony_ci strip 2595cabdff1aSopenharmony_ci sws_max_filter_size 2596cabdff1aSopenharmony_ci sysinclude 2597cabdff1aSopenharmony_ci sysroot 2598cabdff1aSopenharmony_ci target_exec 2599cabdff1aSopenharmony_ci target_os 2600cabdff1aSopenharmony_ci target_path 2601cabdff1aSopenharmony_ci target_samples 2602cabdff1aSopenharmony_ci tempprefix 2603cabdff1aSopenharmony_ci toolchain 2604cabdff1aSopenharmony_ci valgrind 2605cabdff1aSopenharmony_ci windres 2606cabdff1aSopenharmony_ci x86asmexe 2607cabdff1aSopenharmony_ci" 2608cabdff1aSopenharmony_ci 2609cabdff1aSopenharmony_ciCMDLINE_APPEND=" 2610cabdff1aSopenharmony_ci extra_cflags 2611cabdff1aSopenharmony_ci extra_cxxflags 2612cabdff1aSopenharmony_ci extra_objcflags 2613cabdff1aSopenharmony_ci host_cppflags 2614cabdff1aSopenharmony_ci" 2615cabdff1aSopenharmony_ci 2616cabdff1aSopenharmony_ci# code dependency declarations 2617cabdff1aSopenharmony_ci 2618cabdff1aSopenharmony_ci# architecture extensions 2619cabdff1aSopenharmony_ci 2620cabdff1aSopenharmony_ciarmv5te_deps="arm" 2621cabdff1aSopenharmony_ciarmv6_deps="arm" 2622cabdff1aSopenharmony_ciarmv6t2_deps="arm" 2623cabdff1aSopenharmony_ciarmv8_deps="aarch64" 2624cabdff1aSopenharmony_cineon_deps_any="aarch64 arm" 2625cabdff1aSopenharmony_ciintrinsics_neon_deps="neon" 2626cabdff1aSopenharmony_civfp_deps_any="aarch64 arm" 2627cabdff1aSopenharmony_civfpv3_deps="vfp" 2628cabdff1aSopenharmony_cisetend_deps="arm" 2629cabdff1aSopenharmony_ci 2630cabdff1aSopenharmony_cimap 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM 2631cabdff1aSopenharmony_ci 2632cabdff1aSopenharmony_cialtivec_deps="ppc" 2633cabdff1aSopenharmony_cidcbzl_deps="ppc" 2634cabdff1aSopenharmony_cildbrx_deps="ppc" 2635cabdff1aSopenharmony_cippc4xx_deps="ppc" 2636cabdff1aSopenharmony_civsx_deps="altivec" 2637cabdff1aSopenharmony_cipower8_deps="vsx" 2638cabdff1aSopenharmony_ci 2639cabdff1aSopenharmony_ciloongson2_deps="mips" 2640cabdff1aSopenharmony_ciloongson3_deps="mips" 2641cabdff1aSopenharmony_cimmi_deps_any="loongson2 loongson3" 2642cabdff1aSopenharmony_cilsx_deps="loongarch" 2643cabdff1aSopenharmony_cilasx_deps="lsx" 2644cabdff1aSopenharmony_ci 2645cabdff1aSopenharmony_cimips32r2_deps="mips" 2646cabdff1aSopenharmony_cimips32r5_deps="mips" 2647cabdff1aSopenharmony_cimips32r6_deps="mips" 2648cabdff1aSopenharmony_cimips64r2_deps="mips" 2649cabdff1aSopenharmony_cimips64r6_deps="mips" 2650cabdff1aSopenharmony_cimipsfpu_deps="mips" 2651cabdff1aSopenharmony_cimipsdsp_deps="mips" 2652cabdff1aSopenharmony_cimipsdspr2_deps="mips" 2653cabdff1aSopenharmony_cimsa_deps="mipsfpu" 2654cabdff1aSopenharmony_ci 2655cabdff1aSopenharmony_cicpunop_deps="i686" 2656cabdff1aSopenharmony_cix86_64_select="i686" 2657cabdff1aSopenharmony_cix86_64_suggest="fast_cmov" 2658cabdff1aSopenharmony_ci 2659cabdff1aSopenharmony_ciamd3dnow_deps="mmx" 2660cabdff1aSopenharmony_ciamd3dnowext_deps="amd3dnow" 2661cabdff1aSopenharmony_cii686_deps="x86" 2662cabdff1aSopenharmony_cimmx_deps="x86" 2663cabdff1aSopenharmony_cimmxext_deps="mmx" 2664cabdff1aSopenharmony_cisse_deps="mmxext" 2665cabdff1aSopenharmony_cisse2_deps="sse" 2666cabdff1aSopenharmony_cisse3_deps="sse2" 2667cabdff1aSopenharmony_cissse3_deps="sse3" 2668cabdff1aSopenharmony_cisse4_deps="ssse3" 2669cabdff1aSopenharmony_cisse42_deps="sse4" 2670cabdff1aSopenharmony_ciaesni_deps="sse42" 2671cabdff1aSopenharmony_ciavx_deps="sse42" 2672cabdff1aSopenharmony_cixop_deps="avx" 2673cabdff1aSopenharmony_cifma3_deps="avx" 2674cabdff1aSopenharmony_cifma4_deps="avx" 2675cabdff1aSopenharmony_ciavx2_deps="avx" 2676cabdff1aSopenharmony_ciavx512_deps="avx2" 2677cabdff1aSopenharmony_ciavx512icl_deps="avx512" 2678cabdff1aSopenharmony_ci 2679cabdff1aSopenharmony_cimmx_external_deps="x86asm" 2680cabdff1aSopenharmony_cimmx_inline_deps="inline_asm x86" 2681cabdff1aSopenharmony_cimmx_suggest="mmx_external mmx_inline" 2682cabdff1aSopenharmony_ci 2683cabdff1aSopenharmony_cifor ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do 2684cabdff1aSopenharmony_ci eval dep=\$${ext}_deps 2685cabdff1aSopenharmony_ci eval ${ext}_external_deps='"${dep}_external"' 2686cabdff1aSopenharmony_ci eval ${ext}_inline_deps='"${dep}_inline"' 2687cabdff1aSopenharmony_ci eval ${ext}_suggest='"${ext}_external ${ext}_inline"' 2688cabdff1aSopenharmony_cidone 2689cabdff1aSopenharmony_ci 2690cabdff1aSopenharmony_cialigned_stack_if_any="aarch64 ppc x86" 2691cabdff1aSopenharmony_cifast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 riscv64 sparc64 x86_64" 2692cabdff1aSopenharmony_cifast_clz_if_any="aarch64 alpha avr32 mips ppc x86" 2693cabdff1aSopenharmony_cifast_unaligned_if_any="aarch64 ppc x86" 2694cabdff1aSopenharmony_cisimd_align_16_if_any="altivec neon sse" 2695cabdff1aSopenharmony_cisimd_align_32_if_any="avx" 2696cabdff1aSopenharmony_cisimd_align_64_if_any="avx512" 2697cabdff1aSopenharmony_ci 2698cabdff1aSopenharmony_ci# system capabilities 2699cabdff1aSopenharmony_cilinux_perf_deps="linux_perf_event_h" 2700cabdff1aSopenharmony_cisymver_if_any="symver_asm_label symver_gnu_asm" 2701cabdff1aSopenharmony_civalgrind_backtrace_conflict="optimizations" 2702cabdff1aSopenharmony_civalgrind_backtrace_deps="valgrind_valgrind_h" 2703cabdff1aSopenharmony_ci 2704cabdff1aSopenharmony_ci# threading support 2705cabdff1aSopenharmony_ciatomics_gcc_if="sync_val_compare_and_swap" 2706cabdff1aSopenharmony_ciatomics_suncc_if="atomic_cas_ptr machine_rw_barrier" 2707cabdff1aSopenharmony_ciatomics_win32_if="MemoryBarrier" 2708cabdff1aSopenharmony_ciatomics_native_if_any="$ATOMICS_LIST" 2709cabdff1aSopenharmony_ciw32threads_deps="atomics_native" 2710cabdff1aSopenharmony_cithreads_if_any="$THREADS_LIST" 2711cabdff1aSopenharmony_ci 2712cabdff1aSopenharmony_ci# subsystems 2713cabdff1aSopenharmony_cicbs_av1_select="cbs" 2714cabdff1aSopenharmony_cicbs_h264_select="cbs" 2715cabdff1aSopenharmony_cicbs_h265_select="cbs" 2716cabdff1aSopenharmony_cicbs_jpeg_select="cbs" 2717cabdff1aSopenharmony_cicbs_mpeg2_select="cbs" 2718cabdff1aSopenharmony_cicbs_vp9_select="cbs" 2719cabdff1aSopenharmony_cidct_select="rdft" 2720cabdff1aSopenharmony_cideflate_wrapper_deps="zlib" 2721cabdff1aSopenharmony_cidirac_parse_select="golomb" 2722cabdff1aSopenharmony_cidovi_rpu_select="golomb" 2723cabdff1aSopenharmony_cidnn_suggest="libtensorflow libopenvino" 2724cabdff1aSopenharmony_cidnn_deps="avformat swscale" 2725cabdff1aSopenharmony_cierror_resilience_select="me_cmp" 2726cabdff1aSopenharmony_cifaandct_deps="faan" 2727cabdff1aSopenharmony_cifaandct_select="fdctdsp" 2728cabdff1aSopenharmony_cifaanidct_deps="faan" 2729cabdff1aSopenharmony_cifaanidct_select="idctdsp" 2730cabdff1aSopenharmony_cih264dsp_select="startcode" 2731cabdff1aSopenharmony_cihevcparse_select="atsc_a53 golomb" 2732cabdff1aSopenharmony_ciframe_thread_encoder_deps="encoders threads" 2733cabdff1aSopenharmony_ciinflate_wrapper_deps="zlib" 2734cabdff1aSopenharmony_ciintrax8_select="blockdsp idctdsp" 2735cabdff1aSopenharmony_ciiso_media_select="mpeg4audio" 2736cabdff1aSopenharmony_cimdct_select="fft" 2737cabdff1aSopenharmony_cimdct15_select="fft" 2738cabdff1aSopenharmony_cime_cmp_select="fdctdsp idctdsp pixblockdsp" 2739cabdff1aSopenharmony_cimpeg_er_select="error_resilience" 2740cabdff1aSopenharmony_cimpegaudio_select="mpegaudiodsp mpegaudioheader" 2741cabdff1aSopenharmony_cimpegaudiodsp_select="dct" 2742cabdff1aSopenharmony_cimpegvideo_select="blockdsp h264chroma hpeldsp idctdsp videodsp" 2743cabdff1aSopenharmony_cimpegvideodec_select="mpegvideo mpeg_er" 2744cabdff1aSopenharmony_cimpegvideoenc_select="aandcttables me_cmp mpegvideo pixblockdsp qpeldsp" 2745cabdff1aSopenharmony_civc1dsp_select="h264chroma qpeldsp startcode" 2746cabdff1aSopenharmony_cirdft_select="fft" 2747cabdff1aSopenharmony_ci 2748cabdff1aSopenharmony_ci# decoders / encoders 2749cabdff1aSopenharmony_ciaac_decoder_select="adts_header mdct15 mdct mpeg4audio sinewin" 2750cabdff1aSopenharmony_ciaac_fixed_decoder_select="adts_header mdct mpeg4audio" 2751cabdff1aSopenharmony_ciaac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin" 2752cabdff1aSopenharmony_ciaac_latm_decoder_select="aac_decoder aac_latm_parser" 2753cabdff1aSopenharmony_ciac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct" 2754cabdff1aSopenharmony_ciac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct" 2755cabdff1aSopenharmony_ciac3_encoder_select="ac3dsp audiodsp mdct me_cmp" 2756cabdff1aSopenharmony_ciac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp" 2757cabdff1aSopenharmony_ciacelp_kelvin_decoder_select="audiodsp" 2758cabdff1aSopenharmony_ciadpcm_g722_decoder_select="g722dsp" 2759cabdff1aSopenharmony_ciadpcm_g722_encoder_select="g722dsp" 2760cabdff1aSopenharmony_ciaic_decoder_select="golomb idctdsp" 2761cabdff1aSopenharmony_cialac_encoder_select="lpc" 2762cabdff1aSopenharmony_cials_decoder_select="bswapdsp mpeg4audio" 2763cabdff1aSopenharmony_ciamrnb_decoder_select="lsp" 2764cabdff1aSopenharmony_ciamrwb_decoder_select="lsp" 2765cabdff1aSopenharmony_ciamv_decoder_select="sp5x_decoder exif" 2766cabdff1aSopenharmony_ciamv_encoder_select="jpegtables mpegvideoenc" 2767cabdff1aSopenharmony_ciape_decoder_select="bswapdsp llauddsp" 2768cabdff1aSopenharmony_ciapng_decoder_select="inflate_wrapper" 2769cabdff1aSopenharmony_ciapng_encoder_select="deflate_wrapper llvidencdsp" 2770cabdff1aSopenharmony_ciaptx_decoder_select="audio_frame_queue" 2771cabdff1aSopenharmony_ciaptx_encoder_select="audio_frame_queue" 2772cabdff1aSopenharmony_ciaptx_hd_decoder_select="audio_frame_queue" 2773cabdff1aSopenharmony_ciaptx_hd_encoder_select="audio_frame_queue" 2774cabdff1aSopenharmony_ciasv1_decoder_select="blockdsp bswapdsp idctdsp" 2775cabdff1aSopenharmony_ciasv1_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp" 2776cabdff1aSopenharmony_ciasv2_decoder_select="blockdsp bswapdsp idctdsp" 2777cabdff1aSopenharmony_ciasv2_encoder_select="aandcttables bswapdsp fdctdsp pixblockdsp" 2778cabdff1aSopenharmony_ciatrac1_decoder_select="mdct sinewin" 2779cabdff1aSopenharmony_ciatrac3_decoder_select="mdct" 2780cabdff1aSopenharmony_ciatrac3al_decoder_select="mdct" 2781cabdff1aSopenharmony_ciatrac3p_decoder_select="mdct sinewin" 2782cabdff1aSopenharmony_ciatrac3pal_decoder_select="mdct sinewin" 2783cabdff1aSopenharmony_ciatrac9_decoder_select="mdct" 2784cabdff1aSopenharmony_ciav1_decoder_select="av1_frame_split_bsf cbs_av1" 2785cabdff1aSopenharmony_cibink_decoder_select="blockdsp hpeldsp" 2786cabdff1aSopenharmony_cibinkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs" 2787cabdff1aSopenharmony_cibinkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs" 2788cabdff1aSopenharmony_cicavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp" 2789cabdff1aSopenharmony_ciclearvideo_decoder_select="idctdsp" 2790cabdff1aSopenharmony_cicllc_decoder_select="bswapdsp" 2791cabdff1aSopenharmony_cicomfortnoise_encoder_select="lpc" 2792cabdff1aSopenharmony_cicook_decoder_select="audiodsp mdct sinewin" 2793cabdff1aSopenharmony_cicri_decoder_select="mjpeg_decoder" 2794cabdff1aSopenharmony_cicscd_decoder_suggest="zlib" 2795cabdff1aSopenharmony_cidca_decoder_select="mdct" 2796cabdff1aSopenharmony_cidca_encoder_select="mdct" 2797cabdff1aSopenharmony_cidds_decoder_select="texturedsp" 2798cabdff1aSopenharmony_cidirac_decoder_select="dirac_parse dwt golomb videodsp mpegvideoenc" 2799cabdff1aSopenharmony_cidnxhd_decoder_select="blockdsp idctdsp" 2800cabdff1aSopenharmony_cidnxhd_encoder_select="blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp" 2801cabdff1aSopenharmony_cidolby_e_decoder_select="mdct" 2802cabdff1aSopenharmony_cidvvideo_decoder_select="dvprofile idctdsp" 2803cabdff1aSopenharmony_cidvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp" 2804cabdff1aSopenharmony_cidxa_decoder_deps="zlib" 2805cabdff1aSopenharmony_cidxv_decoder_select="lzf texturedsp" 2806cabdff1aSopenharmony_cieac3_decoder_select="ac3_decoder" 2807cabdff1aSopenharmony_cieac3_encoder_select="ac3_encoder" 2808cabdff1aSopenharmony_cieamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo" 2809cabdff1aSopenharmony_cieatgq_decoder_select="aandcttables" 2810cabdff1aSopenharmony_cieatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp" 2811cabdff1aSopenharmony_ciexr_decoder_deps="zlib" 2812cabdff1aSopenharmony_ciexr_encoder_deps="zlib" 2813cabdff1aSopenharmony_ciffv1_decoder_select="rangecoder" 2814cabdff1aSopenharmony_ciffv1_encoder_select="rangecoder" 2815cabdff1aSopenharmony_ciffvhuff_decoder_select="huffyuv_decoder" 2816cabdff1aSopenharmony_ciffvhuff_encoder_select="huffyuv_encoder" 2817cabdff1aSopenharmony_cific_decoder_select="golomb" 2818cabdff1aSopenharmony_ciflac_decoder_select="flacdsp" 2819cabdff1aSopenharmony_ciflac_encoder_select="bswapdsp flacdsp lpc" 2820cabdff1aSopenharmony_ciflashsv2_decoder_select="inflate_wrapper" 2821cabdff1aSopenharmony_ciflashsv2_encoder_select="deflate_wrapper" 2822cabdff1aSopenharmony_ciflashsv_decoder_select="inflate_wrapper" 2823cabdff1aSopenharmony_ciflashsv_encoder_deps="zlib" 2824cabdff1aSopenharmony_ciflv_decoder_select="h263_decoder" 2825cabdff1aSopenharmony_ciflv_encoder_select="h263_encoder" 2826cabdff1aSopenharmony_cifourxm_decoder_select="blockdsp bswapdsp" 2827cabdff1aSopenharmony_cifraps_decoder_select="bswapdsp huffman" 2828cabdff1aSopenharmony_cig2m_decoder_deps="zlib" 2829cabdff1aSopenharmony_cig2m_decoder_select="blockdsp idctdsp jpegtables" 2830cabdff1aSopenharmony_cig729_decoder_select="audiodsp" 2831cabdff1aSopenharmony_cih261_decoder_select="mpegvideodec" 2832cabdff1aSopenharmony_cih261_encoder_select="mpegvideoenc" 2833cabdff1aSopenharmony_cih263_decoder_select="h263_parser h263dsp mpegvideodec qpeldsp" 2834cabdff1aSopenharmony_cih263_encoder_select="h263dsp mpegvideoenc" 2835cabdff1aSopenharmony_cih263i_decoder_select="h263_decoder" 2836cabdff1aSopenharmony_cih263p_decoder_select="h263_decoder" 2837cabdff1aSopenharmony_cih263p_encoder_select="h263_encoder" 2838cabdff1aSopenharmony_cih264_decoder_select="atsc_a53 cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp" 2839cabdff1aSopenharmony_cih264_decoder_suggest="error_resilience" 2840cabdff1aSopenharmony_cihap_decoder_select="snappy texturedsp" 2841cabdff1aSopenharmony_cihap_encoder_deps="libsnappy" 2842cabdff1aSopenharmony_cihap_encoder_select="texturedspenc" 2843cabdff1aSopenharmony_cihevc_decoder_select="atsc_a53 bswapdsp cabac dovi_rpu golomb hevcparse videodsp" 2844cabdff1aSopenharmony_cihuffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp" 2845cabdff1aSopenharmony_cihuffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp" 2846cabdff1aSopenharmony_cihymt_decoder_select="huffyuv_decoder" 2847cabdff1aSopenharmony_ciiac_decoder_select="imc_decoder" 2848cabdff1aSopenharmony_ciimc_decoder_select="bswapdsp fft mdct sinewin" 2849cabdff1aSopenharmony_ciimm4_decoder_select="bswapdsp" 2850cabdff1aSopenharmony_ciimm5_decoder_select="h264_decoder hevc_decoder" 2851cabdff1aSopenharmony_ciindeo3_decoder_select="hpeldsp" 2852cabdff1aSopenharmony_ciindeo4_decoder_select="ividsp" 2853cabdff1aSopenharmony_ciindeo5_decoder_select="ividsp" 2854cabdff1aSopenharmony_ciinterplay_video_decoder_select="hpeldsp" 2855cabdff1aSopenharmony_ciipu_decoder_select="mpegvideodec" 2856cabdff1aSopenharmony_cijpegls_decoder_select="mjpeg_decoder" 2857cabdff1aSopenharmony_cijv_decoder_select="blockdsp" 2858cabdff1aSopenharmony_cilagarith_decoder_select="llviddsp" 2859cabdff1aSopenharmony_ciljpeg_encoder_select="idctdsp jpegtables" 2860cabdff1aSopenharmony_cilscr_decoder_select="inflate_wrapper" 2861cabdff1aSopenharmony_cimagicyuv_decoder_select="llviddsp" 2862cabdff1aSopenharmony_cimagicyuv_encoder_select="llvidencdsp" 2863cabdff1aSopenharmony_cimdec_decoder_select="blockdsp bswapdsp idctdsp mpegvideo" 2864cabdff1aSopenharmony_cimetasound_decoder_select="lsp mdct sinewin" 2865cabdff1aSopenharmony_cimimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp" 2866cabdff1aSopenharmony_cimjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables" 2867cabdff1aSopenharmony_cimjpeg_encoder_select="jpegtables mpegvideoenc" 2868cabdff1aSopenharmony_cimjpegb_decoder_select="mjpeg_decoder" 2869cabdff1aSopenharmony_cimlp_decoder_select="mlp_parser" 2870cabdff1aSopenharmony_cimlp_encoder_select="lpc audio_frame_queue" 2871cabdff1aSopenharmony_cimobiclip_decoder_select="bswapdsp golomb" 2872cabdff1aSopenharmony_cimotionpixels_decoder_select="bswapdsp" 2873cabdff1aSopenharmony_cimp1_decoder_select="mpegaudio" 2874cabdff1aSopenharmony_cimp1float_decoder_select="mpegaudio" 2875cabdff1aSopenharmony_cimp2_decoder_select="mpegaudio" 2876cabdff1aSopenharmony_cimp2float_decoder_select="mpegaudio" 2877cabdff1aSopenharmony_cimp3_decoder_select="mpegaudio" 2878cabdff1aSopenharmony_cimp3adu_decoder_select="mpegaudio" 2879cabdff1aSopenharmony_cimp3adufloat_decoder_select="mpegaudio" 2880cabdff1aSopenharmony_cimp3float_decoder_select="mpegaudio" 2881cabdff1aSopenharmony_cimp3on4_decoder_select="mpegaudio mpeg4audio" 2882cabdff1aSopenharmony_cimp3on4float_decoder_select="mpegaudio mpeg4audio" 2883cabdff1aSopenharmony_cimpc7_decoder_select="bswapdsp mpegaudiodsp" 2884cabdff1aSopenharmony_cimpc8_decoder_select="mpegaudiodsp" 2885cabdff1aSopenharmony_cimpegvideo_decoder_select="mpegvideodec" 2886cabdff1aSopenharmony_cimpeg1video_decoder_select="mpegvideodec" 2887cabdff1aSopenharmony_cimpeg1video_encoder_select="mpegvideoenc h263dsp" 2888cabdff1aSopenharmony_cimpeg2video_decoder_select="mpegvideodec" 2889cabdff1aSopenharmony_cimpeg2video_encoder_select="mpegvideoenc h263dsp" 2890cabdff1aSopenharmony_cimpeg4_decoder_select="h263_decoder mpeg4video_parser" 2891cabdff1aSopenharmony_cimpeg4_encoder_select="h263_encoder" 2892cabdff1aSopenharmony_cimsa1_decoder_select="mss34dsp" 2893cabdff1aSopenharmony_cimscc_decoder_select="inflate_wrapper" 2894cabdff1aSopenharmony_cimsmpeg4v1_decoder_select="h263_decoder" 2895cabdff1aSopenharmony_cimsmpeg4v2_decoder_select="h263_decoder" 2896cabdff1aSopenharmony_cimsmpeg4v2_encoder_select="h263_encoder" 2897cabdff1aSopenharmony_cimsmpeg4v3_decoder_select="h263_decoder" 2898cabdff1aSopenharmony_cimsmpeg4v3_encoder_select="h263_encoder" 2899cabdff1aSopenharmony_cimss2_decoder_select="mpegvideodec qpeldsp vc1_decoder" 2900cabdff1aSopenharmony_cimts2_decoder_select="jpegtables mss34dsp" 2901cabdff1aSopenharmony_cimv30_decoder_select="aandcttables blockdsp" 2902cabdff1aSopenharmony_cimvha_decoder_select="inflate_wrapper llviddsp" 2903cabdff1aSopenharmony_cimwsc_decoder_select="inflate_wrapper" 2904cabdff1aSopenharmony_cimxpeg_decoder_select="mjpeg_decoder" 2905cabdff1aSopenharmony_cinellymoser_decoder_select="mdct sinewin" 2906cabdff1aSopenharmony_cinellymoser_encoder_select="audio_frame_queue mdct sinewin" 2907cabdff1aSopenharmony_cinotchlc_decoder_select="lzf" 2908cabdff1aSopenharmony_cinuv_decoder_select="idctdsp" 2909cabdff1aSopenharmony_cion2avc_decoder_select="mdct" 2910cabdff1aSopenharmony_ciopus_decoder_deps="swresample" 2911cabdff1aSopenharmony_ciopus_decoder_select="mdct15" 2912cabdff1aSopenharmony_ciopus_encoder_select="audio_frame_queue mdct15" 2913cabdff1aSopenharmony_cipng_decoder_select="inflate_wrapper" 2914cabdff1aSopenharmony_cipng_encoder_select="deflate_wrapper llvidencdsp" 2915cabdff1aSopenharmony_ciprores_decoder_select="blockdsp idctdsp" 2916cabdff1aSopenharmony_ciprores_encoder_select="fdctdsp" 2917cabdff1aSopenharmony_ciqcelp_decoder_select="lsp" 2918cabdff1aSopenharmony_ciqdm2_decoder_select="mdct rdft mpegaudiodsp" 2919cabdff1aSopenharmony_cira_144_decoder_select="audiodsp" 2920cabdff1aSopenharmony_cira_144_encoder_select="audio_frame_queue lpc audiodsp" 2921cabdff1aSopenharmony_ciralf_decoder_select="golomb" 2922cabdff1aSopenharmony_cirasc_decoder_select="inflate_wrapper" 2923cabdff1aSopenharmony_cirawvideo_decoder_select="bswapdsp" 2924cabdff1aSopenharmony_cirscc_decoder_deps="zlib" 2925cabdff1aSopenharmony_cirtjpeg_decoder_select="me_cmp" 2926cabdff1aSopenharmony_cirv10_decoder_select="h263_decoder" 2927cabdff1aSopenharmony_cirv10_encoder_select="h263_encoder" 2928cabdff1aSopenharmony_cirv20_decoder_select="h263_decoder" 2929cabdff1aSopenharmony_cirv20_encoder_select="h263_encoder" 2930cabdff1aSopenharmony_cirv30_decoder_select="golomb h264pred h264qpel mpegvideodec rv34dsp" 2931cabdff1aSopenharmony_cirv40_decoder_select="golomb h264pred h264qpel mpegvideodec rv34dsp" 2932cabdff1aSopenharmony_ciscreenpresso_decoder_deps="zlib" 2933cabdff1aSopenharmony_cishorten_decoder_select="bswapdsp" 2934cabdff1aSopenharmony_cisipr_decoder_select="lsp" 2935cabdff1aSopenharmony_cismvjpeg_decoder_select="mjpeg_decoder" 2936cabdff1aSopenharmony_cisnow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp" 2937cabdff1aSopenharmony_cisnow_encoder_select="dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder" 2938cabdff1aSopenharmony_cisonic_decoder_select="golomb rangecoder" 2939cabdff1aSopenharmony_cisonic_encoder_select="golomb rangecoder" 2940cabdff1aSopenharmony_cisonic_ls_encoder_select="golomb rangecoder" 2941cabdff1aSopenharmony_cisp5x_decoder_select="mjpeg_decoder" 2942cabdff1aSopenharmony_cispeedhq_decoder_select="mpegvideo" 2943cabdff1aSopenharmony_cispeedhq_encoder_select="mpegvideoenc" 2944cabdff1aSopenharmony_cisrgc_decoder_select="inflate_wrapper" 2945cabdff1aSopenharmony_cisvq1_decoder_select="hpeldsp" 2946cabdff1aSopenharmony_cisvq1_encoder_select="hpeldsp me_cmp mpegvideoenc" 2947cabdff1aSopenharmony_cisvq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp" 2948cabdff1aSopenharmony_cisvq3_decoder_suggest="zlib" 2949cabdff1aSopenharmony_citak_decoder_select="audiodsp" 2950cabdff1aSopenharmony_citdsc_decoder_deps="zlib" 2951cabdff1aSopenharmony_citdsc_decoder_select="mjpeg_decoder" 2952cabdff1aSopenharmony_citheora_decoder_select="vp3_decoder" 2953cabdff1aSopenharmony_cithp_decoder_select="mjpeg_decoder" 2954cabdff1aSopenharmony_citiff_decoder_select="mjpeg_decoder" 2955cabdff1aSopenharmony_citiff_decoder_suggest="zlib lzma" 2956cabdff1aSopenharmony_citiff_encoder_suggest="zlib" 2957cabdff1aSopenharmony_citruehd_decoder_select="mlp_parser" 2958cabdff1aSopenharmony_citruehd_encoder_select="lpc audio_frame_queue" 2959cabdff1aSopenharmony_citruemotion2_decoder_select="bswapdsp" 2960cabdff1aSopenharmony_citruespeech_decoder_select="bswapdsp" 2961cabdff1aSopenharmony_citscc_decoder_select="inflate_wrapper" 2962cabdff1aSopenharmony_citwinvq_decoder_select="mdct lsp sinewin" 2963cabdff1aSopenharmony_citxd_decoder_select="texturedsp" 2964cabdff1aSopenharmony_ciutvideo_decoder_select="bswapdsp llviddsp" 2965cabdff1aSopenharmony_ciutvideo_encoder_select="bswapdsp huffman llvidencdsp" 2966cabdff1aSopenharmony_civble_decoder_select="llviddsp" 2967cabdff1aSopenharmony_civbn_decoder_select="texturedsp" 2968cabdff1aSopenharmony_civbn_encoder_select="texturedspenc" 2969cabdff1aSopenharmony_civc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideodec vc1dsp" 2970cabdff1aSopenharmony_civc1image_decoder_select="vc1_decoder" 2971cabdff1aSopenharmony_civorbis_decoder_select="mdct" 2972cabdff1aSopenharmony_civorbis_encoder_select="audio_frame_queue mdct" 2973cabdff1aSopenharmony_civp3_decoder_select="hpeldsp vp3dsp videodsp" 2974cabdff1aSopenharmony_civp4_decoder_select="vp3_decoder" 2975cabdff1aSopenharmony_civp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp" 2976cabdff1aSopenharmony_civp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp" 2977cabdff1aSopenharmony_civp6a_decoder_select="vp6_decoder" 2978cabdff1aSopenharmony_civp6f_decoder_select="vp6_decoder" 2979cabdff1aSopenharmony_civp7_decoder_select="h264pred videodsp vp8dsp" 2980cabdff1aSopenharmony_civp8_decoder_select="h264pred videodsp vp8dsp" 2981cabdff1aSopenharmony_civp9_decoder_select="videodsp vp9_parser vp9_superframe_split_bsf" 2982cabdff1aSopenharmony_ciwcmv_decoder_select="inflate_wrapper" 2983cabdff1aSopenharmony_ciwebp_decoder_select="vp8_decoder exif" 2984cabdff1aSopenharmony_ciwmalossless_decoder_select="llauddsp" 2985cabdff1aSopenharmony_ciwmapro_decoder_select="mdct sinewin wma_freqs" 2986cabdff1aSopenharmony_ciwmav1_decoder_select="mdct sinewin wma_freqs" 2987cabdff1aSopenharmony_ciwmav1_encoder_select="mdct sinewin wma_freqs" 2988cabdff1aSopenharmony_ciwmav2_decoder_select="mdct sinewin wma_freqs" 2989cabdff1aSopenharmony_ciwmav2_encoder_select="mdct sinewin wma_freqs" 2990cabdff1aSopenharmony_ciwmavoice_decoder_select="lsp rdft dct mdct sinewin" 2991cabdff1aSopenharmony_ciwmv1_decoder_select="h263_decoder" 2992cabdff1aSopenharmony_ciwmv1_encoder_select="h263_encoder" 2993cabdff1aSopenharmony_ciwmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp" 2994cabdff1aSopenharmony_ciwmv2_encoder_select="h263_encoder wmv2dsp" 2995cabdff1aSopenharmony_ciwmv3_decoder_select="vc1_decoder" 2996cabdff1aSopenharmony_ciwmv3image_decoder_select="wmv3_decoder" 2997cabdff1aSopenharmony_cixma1_decoder_select="wmapro_decoder" 2998cabdff1aSopenharmony_cixma2_decoder_select="wmapro_decoder" 2999cabdff1aSopenharmony_ciylc_decoder_select="bswapdsp" 3000cabdff1aSopenharmony_cizerocodec_decoder_select="inflate_wrapper" 3001cabdff1aSopenharmony_cizlib_decoder_select="inflate_wrapper" 3002cabdff1aSopenharmony_cizlib_encoder_select="deflate_wrapper" 3003cabdff1aSopenharmony_cizmbv_decoder_select="inflate_wrapper" 3004cabdff1aSopenharmony_cizmbv_encoder_select="deflate_wrapper" 3005cabdff1aSopenharmony_ci 3006cabdff1aSopenharmony_ci# hardware accelerators 3007cabdff1aSopenharmony_cicrystalhd_deps="libcrystalhd_libcrystalhd_if_h" 3008cabdff1aSopenharmony_cicuda_deps="ffnvcodec" 3009cabdff1aSopenharmony_cicuvid_deps="ffnvcodec" 3010cabdff1aSopenharmony_cid3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext" 3011cabdff1aSopenharmony_cidxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32 user32" 3012cabdff1aSopenharmony_ciffnvcodec_deps_any="libdl LoadLibrary" 3013cabdff1aSopenharmony_cinvdec_deps="ffnvcodec" 3014cabdff1aSopenharmony_civaapi_x11_deps="xlib_x11" 3015cabdff1aSopenharmony_civideotoolbox_hwaccel_deps="videotoolbox pthreads" 3016cabdff1aSopenharmony_civideotoolbox_hwaccel_extralibs="-framework QuartzCore" 3017cabdff1aSopenharmony_civulkan_deps_any="libdl LoadLibrary" 3018cabdff1aSopenharmony_ci 3019cabdff1aSopenharmony_ciav1_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_AV1" 3020cabdff1aSopenharmony_ciav1_d3d11va_hwaccel_select="av1_decoder" 3021cabdff1aSopenharmony_ciav1_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_AV1" 3022cabdff1aSopenharmony_ciav1_d3d11va2_hwaccel_select="av1_decoder" 3023cabdff1aSopenharmony_ciav1_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_AV1" 3024cabdff1aSopenharmony_ciav1_dxva2_hwaccel_select="av1_decoder" 3025cabdff1aSopenharmony_ciav1_nvdec_hwaccel_deps="nvdec CUVIDAV1PICPARAMS" 3026cabdff1aSopenharmony_ciav1_nvdec_hwaccel_select="av1_decoder" 3027cabdff1aSopenharmony_ciav1_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferAV1_bit_depth_idx" 3028cabdff1aSopenharmony_ciav1_vaapi_hwaccel_select="av1_decoder" 3029cabdff1aSopenharmony_ciav1_vdpau_hwaccel_deps="vdpau VdpPictureInfoAV1" 3030cabdff1aSopenharmony_ciav1_vdpau_hwaccel_select="av1_decoder" 3031cabdff1aSopenharmony_cih263_vaapi_hwaccel_deps="vaapi" 3032cabdff1aSopenharmony_cih263_vaapi_hwaccel_select="h263_decoder" 3033cabdff1aSopenharmony_cih263_videotoolbox_hwaccel_deps="videotoolbox" 3034cabdff1aSopenharmony_cih263_videotoolbox_hwaccel_select="h263_decoder" 3035cabdff1aSopenharmony_cih264_d3d11va_hwaccel_deps="d3d11va" 3036cabdff1aSopenharmony_cih264_d3d11va_hwaccel_select="h264_decoder" 3037cabdff1aSopenharmony_cih264_d3d11va2_hwaccel_deps="d3d11va" 3038cabdff1aSopenharmony_cih264_d3d11va2_hwaccel_select="h264_decoder" 3039cabdff1aSopenharmony_cih264_dxva2_hwaccel_deps="dxva2" 3040cabdff1aSopenharmony_cih264_dxva2_hwaccel_select="h264_decoder" 3041cabdff1aSopenharmony_cih264_nvdec_hwaccel_deps="nvdec" 3042cabdff1aSopenharmony_cih264_nvdec_hwaccel_select="h264_decoder" 3043cabdff1aSopenharmony_cih264_vaapi_hwaccel_deps="vaapi" 3044cabdff1aSopenharmony_cih264_vaapi_hwaccel_select="h264_decoder" 3045cabdff1aSopenharmony_cih264_vdpau_hwaccel_deps="vdpau" 3046cabdff1aSopenharmony_cih264_vdpau_hwaccel_select="h264_decoder" 3047cabdff1aSopenharmony_cih264_videotoolbox_hwaccel_deps="videotoolbox" 3048cabdff1aSopenharmony_cih264_videotoolbox_hwaccel_select="h264_decoder" 3049cabdff1aSopenharmony_cihevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC" 3050cabdff1aSopenharmony_cihevc_d3d11va_hwaccel_select="hevc_decoder" 3051cabdff1aSopenharmony_cihevc_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_HEVC" 3052cabdff1aSopenharmony_cihevc_d3d11va2_hwaccel_select="hevc_decoder" 3053cabdff1aSopenharmony_cihevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC" 3054cabdff1aSopenharmony_cihevc_dxva2_hwaccel_select="hevc_decoder" 3055cabdff1aSopenharmony_cihevc_nvdec_hwaccel_deps="nvdec" 3056cabdff1aSopenharmony_cihevc_nvdec_hwaccel_select="hevc_decoder" 3057cabdff1aSopenharmony_cihevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC" 3058cabdff1aSopenharmony_cihevc_vaapi_hwaccel_select="hevc_decoder" 3059cabdff1aSopenharmony_cihevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC" 3060cabdff1aSopenharmony_cihevc_vdpau_hwaccel_select="hevc_decoder" 3061cabdff1aSopenharmony_cihevc_videotoolbox_hwaccel_deps="videotoolbox" 3062cabdff1aSopenharmony_cihevc_videotoolbox_hwaccel_select="hevc_decoder" 3063cabdff1aSopenharmony_cimjpeg_nvdec_hwaccel_deps="nvdec" 3064cabdff1aSopenharmony_cimjpeg_nvdec_hwaccel_select="mjpeg_decoder" 3065cabdff1aSopenharmony_cimjpeg_vaapi_hwaccel_deps="vaapi" 3066cabdff1aSopenharmony_cimjpeg_vaapi_hwaccel_select="mjpeg_decoder" 3067cabdff1aSopenharmony_cimpeg1_nvdec_hwaccel_deps="nvdec" 3068cabdff1aSopenharmony_cimpeg1_nvdec_hwaccel_select="mpeg1video_decoder" 3069cabdff1aSopenharmony_cimpeg1_vdpau_hwaccel_deps="vdpau" 3070cabdff1aSopenharmony_cimpeg1_vdpau_hwaccel_select="mpeg1video_decoder" 3071cabdff1aSopenharmony_cimpeg1_videotoolbox_hwaccel_deps="videotoolbox" 3072cabdff1aSopenharmony_cimpeg1_videotoolbox_hwaccel_select="mpeg1video_decoder" 3073cabdff1aSopenharmony_cimpeg2_d3d11va_hwaccel_deps="d3d11va" 3074cabdff1aSopenharmony_cimpeg2_d3d11va_hwaccel_select="mpeg2video_decoder" 3075cabdff1aSopenharmony_cimpeg2_d3d11va2_hwaccel_deps="d3d11va" 3076cabdff1aSopenharmony_cimpeg2_d3d11va2_hwaccel_select="mpeg2video_decoder" 3077cabdff1aSopenharmony_cimpeg2_dxva2_hwaccel_deps="dxva2" 3078cabdff1aSopenharmony_cimpeg2_dxva2_hwaccel_select="mpeg2video_decoder" 3079cabdff1aSopenharmony_cimpeg2_nvdec_hwaccel_deps="nvdec" 3080cabdff1aSopenharmony_cimpeg2_nvdec_hwaccel_select="mpeg2video_decoder" 3081cabdff1aSopenharmony_cimpeg2_vaapi_hwaccel_deps="vaapi" 3082cabdff1aSopenharmony_cimpeg2_vaapi_hwaccel_select="mpeg2video_decoder" 3083cabdff1aSopenharmony_cimpeg2_vdpau_hwaccel_deps="vdpau" 3084cabdff1aSopenharmony_cimpeg2_vdpau_hwaccel_select="mpeg2video_decoder" 3085cabdff1aSopenharmony_cimpeg2_videotoolbox_hwaccel_deps="videotoolbox" 3086cabdff1aSopenharmony_cimpeg2_videotoolbox_hwaccel_select="mpeg2video_decoder" 3087cabdff1aSopenharmony_cimpeg4_nvdec_hwaccel_deps="nvdec" 3088cabdff1aSopenharmony_cimpeg4_nvdec_hwaccel_select="mpeg4_decoder" 3089cabdff1aSopenharmony_cimpeg4_vaapi_hwaccel_deps="vaapi" 3090cabdff1aSopenharmony_cimpeg4_vaapi_hwaccel_select="mpeg4_decoder" 3091cabdff1aSopenharmony_cimpeg4_vdpau_hwaccel_deps="vdpau" 3092cabdff1aSopenharmony_cimpeg4_vdpau_hwaccel_select="mpeg4_decoder" 3093cabdff1aSopenharmony_cimpeg4_videotoolbox_hwaccel_deps="videotoolbox" 3094cabdff1aSopenharmony_cimpeg4_videotoolbox_hwaccel_select="mpeg4_decoder" 3095cabdff1aSopenharmony_ciprores_videotoolbox_hwaccel_deps="videotoolbox" 3096cabdff1aSopenharmony_ciprores_videotoolbox_hwaccel_select="prores_decoder" 3097cabdff1aSopenharmony_civc1_d3d11va_hwaccel_deps="d3d11va" 3098cabdff1aSopenharmony_civc1_d3d11va_hwaccel_select="vc1_decoder" 3099cabdff1aSopenharmony_civc1_d3d11va2_hwaccel_deps="d3d11va" 3100cabdff1aSopenharmony_civc1_d3d11va2_hwaccel_select="vc1_decoder" 3101cabdff1aSopenharmony_civc1_dxva2_hwaccel_deps="dxva2" 3102cabdff1aSopenharmony_civc1_dxva2_hwaccel_select="vc1_decoder" 3103cabdff1aSopenharmony_civc1_nvdec_hwaccel_deps="nvdec" 3104cabdff1aSopenharmony_civc1_nvdec_hwaccel_select="vc1_decoder" 3105cabdff1aSopenharmony_civc1_vaapi_hwaccel_deps="vaapi" 3106cabdff1aSopenharmony_civc1_vaapi_hwaccel_select="vc1_decoder" 3107cabdff1aSopenharmony_civc1_vdpau_hwaccel_deps="vdpau" 3108cabdff1aSopenharmony_civc1_vdpau_hwaccel_select="vc1_decoder" 3109cabdff1aSopenharmony_civp8_nvdec_hwaccel_deps="nvdec" 3110cabdff1aSopenharmony_civp8_nvdec_hwaccel_select="vp8_decoder" 3111cabdff1aSopenharmony_civp8_vaapi_hwaccel_deps="vaapi" 3112cabdff1aSopenharmony_civp8_vaapi_hwaccel_select="vp8_decoder" 3113cabdff1aSopenharmony_civp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9" 3114cabdff1aSopenharmony_civp9_d3d11va_hwaccel_select="vp9_decoder" 3115cabdff1aSopenharmony_civp9_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_VP9" 3116cabdff1aSopenharmony_civp9_d3d11va2_hwaccel_select="vp9_decoder" 3117cabdff1aSopenharmony_civp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9" 3118cabdff1aSopenharmony_civp9_dxva2_hwaccel_select="vp9_decoder" 3119cabdff1aSopenharmony_civp9_nvdec_hwaccel_deps="nvdec" 3120cabdff1aSopenharmony_civp9_nvdec_hwaccel_select="vp9_decoder" 3121cabdff1aSopenharmony_civp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth" 3122cabdff1aSopenharmony_civp9_vaapi_hwaccel_select="vp9_decoder" 3123cabdff1aSopenharmony_civp9_vdpau_hwaccel_deps="vdpau VdpPictureInfoVP9" 3124cabdff1aSopenharmony_civp9_vdpau_hwaccel_select="vp9_decoder" 3125cabdff1aSopenharmony_civp9_videotoolbox_hwaccel_deps="videotoolbox" 3126cabdff1aSopenharmony_civp9_videotoolbox_hwaccel_select="vp9_decoder" 3127cabdff1aSopenharmony_ciwmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel" 3128cabdff1aSopenharmony_ciwmv3_d3d11va2_hwaccel_select="vc1_d3d11va2_hwaccel" 3129cabdff1aSopenharmony_ciwmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel" 3130cabdff1aSopenharmony_ciwmv3_nvdec_hwaccel_select="vc1_nvdec_hwaccel" 3131cabdff1aSopenharmony_ciwmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel" 3132cabdff1aSopenharmony_ciwmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel" 3133cabdff1aSopenharmony_ci 3134cabdff1aSopenharmony_ci# hardware-accelerated codecs 3135cabdff1aSopenharmony_cimediafoundation_deps="mftransform_h MFCreateAlignedMemoryBuffer" 3136cabdff1aSopenharmony_ciomx_deps="libdl pthreads" 3137cabdff1aSopenharmony_ciomx_rpi_select="omx" 3138cabdff1aSopenharmony_ciqsv_deps="libmfx" 3139cabdff1aSopenharmony_ciqsvdec_select="qsv" 3140cabdff1aSopenharmony_ciqsvenc_select="qsv" 3141cabdff1aSopenharmony_ciqsvvpp_select="qsv" 3142cabdff1aSopenharmony_civaapi_encode_deps="vaapi" 3143cabdff1aSopenharmony_civ4l2_m2m_deps="linux_videodev2_h sem_timedwait" 3144cabdff1aSopenharmony_ci 3145cabdff1aSopenharmony_cichromakey_cuda_filter_deps="ffnvcodec" 3146cabdff1aSopenharmony_cichromakey_cuda_filter_deps_any="cuda_nvcc cuda_llvm" 3147cabdff1aSopenharmony_cihwupload_cuda_filter_deps="ffnvcodec" 3148cabdff1aSopenharmony_ciscale_npp_filter_deps="ffnvcodec libnpp" 3149cabdff1aSopenharmony_ciscale2ref_npp_filter_deps="ffnvcodec libnpp" 3150cabdff1aSopenharmony_ciscale_cuda_filter_deps="ffnvcodec" 3151cabdff1aSopenharmony_ciscale_cuda_filter_deps_any="cuda_nvcc cuda_llvm" 3152cabdff1aSopenharmony_cithumbnail_cuda_filter_deps="ffnvcodec" 3153cabdff1aSopenharmony_cithumbnail_cuda_filter_deps_any="cuda_nvcc cuda_llvm" 3154cabdff1aSopenharmony_citranspose_npp_filter_deps="ffnvcodec libnpp" 3155cabdff1aSopenharmony_cioverlay_cuda_filter_deps="ffnvcodec" 3156cabdff1aSopenharmony_cioverlay_cuda_filter_deps_any="cuda_nvcc cuda_llvm" 3157cabdff1aSopenharmony_cisharpen_npp_filter_deps="ffnvcodec libnpp" 3158cabdff1aSopenharmony_ci 3159cabdff1aSopenharmony_ciamf_deps_any="libdl LoadLibrary" 3160cabdff1aSopenharmony_cinvenc_deps="ffnvcodec" 3161cabdff1aSopenharmony_cinvenc_deps_any="libdl LoadLibrary" 3162cabdff1aSopenharmony_ci 3163cabdff1aSopenharmony_ciaac_mf_encoder_deps="mediafoundation" 3164cabdff1aSopenharmony_ciac3_mf_encoder_deps="mediafoundation" 3165cabdff1aSopenharmony_ciav1_cuvid_decoder_deps="cuvid CUVIDAV1PICPARAMS" 3166cabdff1aSopenharmony_cih263_v4l2m2m_decoder_deps="v4l2_m2m h263_v4l2_m2m" 3167cabdff1aSopenharmony_cih263_v4l2m2m_encoder_deps="v4l2_m2m h263_v4l2_m2m" 3168cabdff1aSopenharmony_cih264_amf_encoder_deps="amf" 3169cabdff1aSopenharmony_cih264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser" 3170cabdff1aSopenharmony_cih264_cuvid_decoder_deps="cuvid" 3171cabdff1aSopenharmony_cih264_cuvid_decoder_select="h264_mp4toannexb_bsf" 3172cabdff1aSopenharmony_cih264_mediacodec_decoder_deps="mediacodec" 3173cabdff1aSopenharmony_cih264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser" 3174cabdff1aSopenharmony_cih264_mf_encoder_deps="mediafoundation" 3175cabdff1aSopenharmony_cih264_mmal_decoder_deps="mmal" 3176cabdff1aSopenharmony_cih264_nvenc_encoder_deps="nvenc" 3177cabdff1aSopenharmony_cih264_nvenc_encoder_select="atsc_a53" 3178cabdff1aSopenharmony_cih264_omx_encoder_deps="omx" 3179cabdff1aSopenharmony_cih264_qsv_decoder_select="h264_mp4toannexb_bsf qsvdec" 3180cabdff1aSopenharmony_cih264_qsv_encoder_select="atsc_a53 qsvenc" 3181cabdff1aSopenharmony_cih264_rkmpp_decoder_deps="rkmpp" 3182cabdff1aSopenharmony_cih264_rkmpp_decoder_select="h264_mp4toannexb_bsf" 3183cabdff1aSopenharmony_cih264_vaapi_encoder_select="cbs_h264 vaapi_encode" 3184cabdff1aSopenharmony_cih264_v4l2m2m_decoder_deps="v4l2_m2m h264_v4l2_m2m" 3185cabdff1aSopenharmony_cih264_v4l2m2m_decoder_select="h264_mp4toannexb_bsf" 3186cabdff1aSopenharmony_cih264_v4l2m2m_encoder_deps="v4l2_m2m h264_v4l2_m2m" 3187cabdff1aSopenharmony_cihevc_amf_encoder_deps="amf" 3188cabdff1aSopenharmony_cihevc_cuvid_decoder_deps="cuvid" 3189cabdff1aSopenharmony_cihevc_cuvid_decoder_select="hevc_mp4toannexb_bsf" 3190cabdff1aSopenharmony_cihevc_mediacodec_decoder_deps="mediacodec" 3191cabdff1aSopenharmony_cihevc_mediacodec_decoder_select="hevc_mp4toannexb_bsf hevc_parser" 3192cabdff1aSopenharmony_cihevc_mf_encoder_deps="mediafoundation" 3193cabdff1aSopenharmony_cihevc_nvenc_encoder_deps="nvenc" 3194cabdff1aSopenharmony_cihevc_nvenc_encoder_select="atsc_a53" 3195cabdff1aSopenharmony_cihevc_qsv_decoder_select="hevc_mp4toannexb_bsf qsvdec" 3196cabdff1aSopenharmony_cihevc_qsv_encoder_select="hevcparse qsvenc" 3197cabdff1aSopenharmony_cihevc_rkmpp_decoder_deps="rkmpp" 3198cabdff1aSopenharmony_cihevc_rkmpp_decoder_select="hevc_mp4toannexb_bsf" 3199cabdff1aSopenharmony_cihevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC" 3200cabdff1aSopenharmony_cihevc_vaapi_encoder_select="cbs_h265 vaapi_encode" 3201cabdff1aSopenharmony_cihevc_v4l2m2m_decoder_deps="v4l2_m2m hevc_v4l2_m2m" 3202cabdff1aSopenharmony_cihevc_v4l2m2m_decoder_select="hevc_mp4toannexb_bsf" 3203cabdff1aSopenharmony_cihevc_v4l2m2m_encoder_deps="v4l2_m2m hevc_v4l2_m2m" 3204cabdff1aSopenharmony_cimjpeg_cuvid_decoder_deps="cuvid" 3205cabdff1aSopenharmony_cimjpeg_qsv_decoder_select="qsvdec" 3206cabdff1aSopenharmony_cimjpeg_qsv_encoder_deps="libmfx" 3207cabdff1aSopenharmony_cimjpeg_qsv_encoder_select="qsvenc" 3208cabdff1aSopenharmony_cimjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG" 3209cabdff1aSopenharmony_cimjpeg_vaapi_encoder_select="cbs_jpeg jpegtables vaapi_encode" 3210cabdff1aSopenharmony_cimp3_mf_encoder_deps="mediafoundation" 3211cabdff1aSopenharmony_cimpeg1_cuvid_decoder_deps="cuvid" 3212cabdff1aSopenharmony_cimpeg1_v4l2m2m_decoder_deps="v4l2_m2m mpeg1_v4l2_m2m" 3213cabdff1aSopenharmony_cimpeg2_crystalhd_decoder_select="crystalhd" 3214cabdff1aSopenharmony_cimpeg2_cuvid_decoder_deps="cuvid" 3215cabdff1aSopenharmony_cimpeg2_mmal_decoder_deps="mmal" 3216cabdff1aSopenharmony_cimpeg2_mediacodec_decoder_deps="mediacodec" 3217cabdff1aSopenharmony_cimpeg2_qsv_decoder_select="qsvdec" 3218cabdff1aSopenharmony_cimpeg2_qsv_encoder_select="qsvenc" 3219cabdff1aSopenharmony_cimpeg2_vaapi_encoder_select="cbs_mpeg2 vaapi_encode" 3220cabdff1aSopenharmony_cimpeg2_v4l2m2m_decoder_deps="v4l2_m2m mpeg2_v4l2_m2m" 3221cabdff1aSopenharmony_cimpeg4_crystalhd_decoder_select="crystalhd" 3222cabdff1aSopenharmony_cimpeg4_cuvid_decoder_deps="cuvid" 3223cabdff1aSopenharmony_cimpeg4_mediacodec_decoder_deps="mediacodec" 3224cabdff1aSopenharmony_cimpeg4_mmal_decoder_deps="mmal" 3225cabdff1aSopenharmony_cimpeg4_omx_encoder_deps="omx" 3226cabdff1aSopenharmony_cimpeg4_v4l2m2m_decoder_deps="v4l2_m2m mpeg4_v4l2_m2m" 3227cabdff1aSopenharmony_cimpeg4_v4l2m2m_encoder_deps="v4l2_m2m mpeg4_v4l2_m2m" 3228cabdff1aSopenharmony_cimsmpeg4_crystalhd_decoder_select="crystalhd" 3229cabdff1aSopenharmony_civc1_crystalhd_decoder_select="crystalhd" 3230cabdff1aSopenharmony_civc1_cuvid_decoder_deps="cuvid" 3231cabdff1aSopenharmony_civc1_mmal_decoder_deps="mmal" 3232cabdff1aSopenharmony_civc1_qsv_decoder_select="qsvdec" 3233cabdff1aSopenharmony_civc1_v4l2m2m_decoder_deps="v4l2_m2m vc1_v4l2_m2m" 3234cabdff1aSopenharmony_civp8_cuvid_decoder_deps="cuvid" 3235cabdff1aSopenharmony_civp8_mediacodec_decoder_deps="mediacodec" 3236cabdff1aSopenharmony_civp8_qsv_decoder_select="qsvdec" 3237cabdff1aSopenharmony_civp8_rkmpp_decoder_deps="rkmpp" 3238cabdff1aSopenharmony_civp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8" 3239cabdff1aSopenharmony_civp8_vaapi_encoder_select="vaapi_encode" 3240cabdff1aSopenharmony_civp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m" 3241cabdff1aSopenharmony_civp8_v4l2m2m_encoder_deps="v4l2_m2m vp8_v4l2_m2m" 3242cabdff1aSopenharmony_civp9_cuvid_decoder_deps="cuvid" 3243cabdff1aSopenharmony_civp9_mediacodec_decoder_deps="mediacodec" 3244cabdff1aSopenharmony_civp9_qsv_decoder_select="qsvdec" 3245cabdff1aSopenharmony_civp9_rkmpp_decoder_deps="rkmpp" 3246cabdff1aSopenharmony_civp9_vaapi_encoder_deps="VAEncPictureParameterBufferVP9" 3247cabdff1aSopenharmony_civp9_vaapi_encoder_select="vaapi_encode" 3248cabdff1aSopenharmony_civp9_qsv_encoder_deps="libmfx MFX_CODEC_VP9" 3249cabdff1aSopenharmony_civp9_qsv_encoder_select="qsvenc" 3250cabdff1aSopenharmony_civp9_v4l2m2m_decoder_deps="v4l2_m2m vp9_v4l2_m2m" 3251cabdff1aSopenharmony_ciwmv3_crystalhd_decoder_select="crystalhd" 3252cabdff1aSopenharmony_ciav1_qsv_decoder_select="qsvdec" 3253cabdff1aSopenharmony_ci 3254cabdff1aSopenharmony_ci# parsers 3255cabdff1aSopenharmony_ciaac_parser_select="adts_header mpeg4audio" 3256cabdff1aSopenharmony_ciav1_parser_select="cbs_av1" 3257cabdff1aSopenharmony_cih264_parser_select="atsc_a53 golomb h264dsp h264parse" 3258cabdff1aSopenharmony_cihevc_parser_select="hevcparse" 3259cabdff1aSopenharmony_cimpegaudio_parser_select="mpegaudioheader" 3260cabdff1aSopenharmony_cimpegvideo_parser_select="mpegvideo" 3261cabdff1aSopenharmony_cimpeg4video_parser_select="h263dsp mpegvideodec qpeldsp" 3262cabdff1aSopenharmony_civc1_parser_select="vc1dsp" 3263cabdff1aSopenharmony_ci 3264cabdff1aSopenharmony_ci# bitstream_filters 3265cabdff1aSopenharmony_ciaac_adtstoasc_bsf_select="adts_header mpeg4audio" 3266cabdff1aSopenharmony_ciav1_frame_merge_bsf_select="cbs_av1" 3267cabdff1aSopenharmony_ciav1_frame_split_bsf_select="cbs_av1" 3268cabdff1aSopenharmony_ciav1_metadata_bsf_select="cbs_av1" 3269cabdff1aSopenharmony_cieac3_core_bsf_select="ac3_parser" 3270cabdff1aSopenharmony_cifilter_units_bsf_select="cbs" 3271cabdff1aSopenharmony_cih264_metadata_bsf_deps="const_nan" 3272cabdff1aSopenharmony_cih264_metadata_bsf_select="cbs_h264" 3273cabdff1aSopenharmony_cih264_redundant_pps_bsf_select="cbs_h264" 3274cabdff1aSopenharmony_cihevc_metadata_bsf_select="cbs_h265" 3275cabdff1aSopenharmony_cimjpeg2jpeg_bsf_select="jpegtables" 3276cabdff1aSopenharmony_cimpeg2_metadata_bsf_select="cbs_mpeg2" 3277cabdff1aSopenharmony_citrace_headers_bsf_select="cbs" 3278cabdff1aSopenharmony_civp9_metadata_bsf_select="cbs_vp9" 3279cabdff1aSopenharmony_ci 3280cabdff1aSopenharmony_ci# external libraries 3281cabdff1aSopenharmony_ciaac_at_decoder_deps="audiotoolbox" 3282cabdff1aSopenharmony_ciaac_at_decoder_select="aac_adtstoasc_bsf" 3283cabdff1aSopenharmony_ciac3_at_decoder_deps="audiotoolbox" 3284cabdff1aSopenharmony_ciac3_at_decoder_select="ac3_parser" 3285cabdff1aSopenharmony_ciadpcm_ima_qt_at_decoder_deps="audiotoolbox" 3286cabdff1aSopenharmony_cialac_at_decoder_deps="audiotoolbox" 3287cabdff1aSopenharmony_ciamr_nb_at_decoder_deps="audiotoolbox" 3288cabdff1aSopenharmony_ciavisynth_deps_any="libdl LoadLibrary" 3289cabdff1aSopenharmony_ciavisynth_demuxer_deps="avisynth" 3290cabdff1aSopenharmony_ciavisynth_demuxer_select="riffdec" 3291cabdff1aSopenharmony_cieac3_at_decoder_deps="audiotoolbox" 3292cabdff1aSopenharmony_cieac3_at_decoder_select="ac3_parser" 3293cabdff1aSopenharmony_cigsm_ms_at_decoder_deps="audiotoolbox" 3294cabdff1aSopenharmony_ciilbc_at_decoder_deps="audiotoolbox" 3295cabdff1aSopenharmony_cimp1_at_decoder_deps="audiotoolbox" 3296cabdff1aSopenharmony_cimp2_at_decoder_deps="audiotoolbox" 3297cabdff1aSopenharmony_cimp3_at_decoder_deps="audiotoolbox" 3298cabdff1aSopenharmony_cimp1_at_decoder_select="mpegaudioheader" 3299cabdff1aSopenharmony_cimp2_at_decoder_select="mpegaudioheader" 3300cabdff1aSopenharmony_cimp3_at_decoder_select="mpegaudioheader" 3301cabdff1aSopenharmony_cipcm_alaw_at_decoder_deps="audiotoolbox" 3302cabdff1aSopenharmony_cipcm_mulaw_at_decoder_deps="audiotoolbox" 3303cabdff1aSopenharmony_ciqdmc_at_decoder_deps="audiotoolbox" 3304cabdff1aSopenharmony_ciqdm2_at_decoder_deps="audiotoolbox" 3305cabdff1aSopenharmony_ciaac_at_encoder_deps="audiotoolbox" 3306cabdff1aSopenharmony_ciaac_at_encoder_select="audio_frame_queue" 3307cabdff1aSopenharmony_cialac_at_encoder_deps="audiotoolbox" 3308cabdff1aSopenharmony_cialac_at_encoder_select="audio_frame_queue" 3309cabdff1aSopenharmony_ciilbc_at_encoder_deps="audiotoolbox" 3310cabdff1aSopenharmony_ciilbc_at_encoder_select="audio_frame_queue" 3311cabdff1aSopenharmony_cipcm_alaw_at_encoder_deps="audiotoolbox" 3312cabdff1aSopenharmony_cipcm_alaw_at_encoder_select="audio_frame_queue" 3313cabdff1aSopenharmony_cipcm_mulaw_at_encoder_deps="audiotoolbox" 3314cabdff1aSopenharmony_cipcm_mulaw_at_encoder_select="audio_frame_queue" 3315cabdff1aSopenharmony_cichromaprint_muxer_deps="chromaprint" 3316cabdff1aSopenharmony_cih264_videotoolbox_encoder_deps="pthreads" 3317cabdff1aSopenharmony_cih264_videotoolbox_encoder_select="atsc_a53 videotoolbox_encoder" 3318cabdff1aSopenharmony_cihevc_videotoolbox_encoder_deps="pthreads" 3319cabdff1aSopenharmony_cihevc_videotoolbox_encoder_select="atsc_a53 videotoolbox_encoder" 3320cabdff1aSopenharmony_ciprores_videotoolbox_encoder_deps="pthreads" 3321cabdff1aSopenharmony_ciprores_videotoolbox_encoder_select="videotoolbox_encoder" 3322cabdff1aSopenharmony_cilibaom_av1_decoder_deps="libaom" 3323cabdff1aSopenharmony_cilibaom_av1_encoder_deps="libaom" 3324cabdff1aSopenharmony_cilibaom_av1_encoder_select="extract_extradata_bsf" 3325cabdff1aSopenharmony_cilibaribb24_decoder_deps="libaribb24" 3326cabdff1aSopenharmony_cilibcelt_decoder_deps="libcelt" 3327cabdff1aSopenharmony_cilibcodec2_decoder_deps="libcodec2" 3328cabdff1aSopenharmony_cilibcodec2_encoder_deps="libcodec2" 3329cabdff1aSopenharmony_cilibdav1d_decoder_deps="libdav1d" 3330cabdff1aSopenharmony_cilibdav1d_decoder_select="atsc_a53" 3331cabdff1aSopenharmony_cilibdavs2_decoder_deps="libdavs2" 3332cabdff1aSopenharmony_cilibdavs2_decoder_select="avs2_parser" 3333cabdff1aSopenharmony_cilibfdk_aac_decoder_deps="libfdk_aac" 3334cabdff1aSopenharmony_cilibfdk_aac_encoder_deps="libfdk_aac" 3335cabdff1aSopenharmony_cilibfdk_aac_encoder_select="audio_frame_queue" 3336cabdff1aSopenharmony_cilibgme_demuxer_deps="libgme" 3337cabdff1aSopenharmony_cilibgsm_decoder_deps="libgsm" 3338cabdff1aSopenharmony_cilibgsm_encoder_deps="libgsm" 3339cabdff1aSopenharmony_cilibgsm_ms_decoder_deps="libgsm" 3340cabdff1aSopenharmony_cilibgsm_ms_encoder_deps="libgsm" 3341cabdff1aSopenharmony_cilibilbc_decoder_deps="libilbc" 3342cabdff1aSopenharmony_cilibilbc_encoder_deps="libilbc" 3343cabdff1aSopenharmony_cilibjxl_decoder_deps="libjxl libjxl_threads" 3344cabdff1aSopenharmony_cilibjxl_encoder_deps="libjxl libjxl_threads" 3345cabdff1aSopenharmony_cilibkvazaar_encoder_deps="libkvazaar" 3346cabdff1aSopenharmony_cilibmodplug_demuxer_deps="libmodplug" 3347cabdff1aSopenharmony_cilibmp3lame_encoder_deps="libmp3lame" 3348cabdff1aSopenharmony_cilibmp3lame_encoder_select="audio_frame_queue mpegaudioheader" 3349cabdff1aSopenharmony_cilibopencore_amrnb_decoder_deps="libopencore_amrnb" 3350cabdff1aSopenharmony_cilibopencore_amrnb_encoder_deps="libopencore_amrnb" 3351cabdff1aSopenharmony_cilibopencore_amrnb_encoder_select="audio_frame_queue" 3352cabdff1aSopenharmony_cilibopencore_amrwb_decoder_deps="libopencore_amrwb" 3353cabdff1aSopenharmony_cilibopenh264_decoder_deps="libopenh264" 3354cabdff1aSopenharmony_cilibopenh264_decoder_select="h264_mp4toannexb_bsf" 3355cabdff1aSopenharmony_cilibopenh264_encoder_deps="libopenh264" 3356cabdff1aSopenharmony_cilibopenjpeg_decoder_deps="libopenjpeg" 3357cabdff1aSopenharmony_cilibopenjpeg_encoder_deps="libopenjpeg" 3358cabdff1aSopenharmony_cilibopenmpt_demuxer_deps="libopenmpt" 3359cabdff1aSopenharmony_cilibopus_decoder_deps="libopus" 3360cabdff1aSopenharmony_cilibopus_encoder_deps="libopus" 3361cabdff1aSopenharmony_cilibopus_encoder_select="audio_frame_queue" 3362cabdff1aSopenharmony_cilibrav1e_encoder_deps="librav1e" 3363cabdff1aSopenharmony_cilibrav1e_encoder_select="extract_extradata_bsf" 3364cabdff1aSopenharmony_cilibrsvg_decoder_deps="librsvg" 3365cabdff1aSopenharmony_cilibshine_encoder_deps="libshine" 3366cabdff1aSopenharmony_cilibshine_encoder_select="audio_frame_queue mpegaudioheader" 3367cabdff1aSopenharmony_cilibspeex_decoder_deps="libspeex" 3368cabdff1aSopenharmony_cilibspeex_encoder_deps="libspeex" 3369cabdff1aSopenharmony_cilibspeex_encoder_select="audio_frame_queue" 3370cabdff1aSopenharmony_cilibsvtav1_encoder_deps="libsvtav1" 3371cabdff1aSopenharmony_cilibtheora_encoder_deps="libtheora" 3372cabdff1aSopenharmony_cilibtwolame_encoder_deps="libtwolame" 3373cabdff1aSopenharmony_cilibuavs3d_decoder_deps="libuavs3d" 3374cabdff1aSopenharmony_cilibvo_amrwbenc_encoder_deps="libvo_amrwbenc" 3375cabdff1aSopenharmony_cilibvorbis_decoder_deps="libvorbis" 3376cabdff1aSopenharmony_cilibvorbis_encoder_deps="libvorbis libvorbisenc" 3377cabdff1aSopenharmony_cilibvorbis_encoder_select="audio_frame_queue" 3378cabdff1aSopenharmony_cilibvpx_vp8_decoder_deps="libvpx" 3379cabdff1aSopenharmony_cilibvpx_vp8_encoder_deps="libvpx" 3380cabdff1aSopenharmony_cilibvpx_vp9_decoder_deps="libvpx" 3381cabdff1aSopenharmony_cilibvpx_vp9_encoder_deps="libvpx" 3382cabdff1aSopenharmony_cilibwebp_encoder_deps="libwebp" 3383cabdff1aSopenharmony_cilibwebp_anim_encoder_deps="libwebp" 3384cabdff1aSopenharmony_cilibx262_encoder_deps="libx262" 3385cabdff1aSopenharmony_cilibx264_encoder_deps="libx264" 3386cabdff1aSopenharmony_cilibx264_encoder_select="atsc_a53" 3387cabdff1aSopenharmony_cilibx264rgb_encoder_deps="libx264" 3388cabdff1aSopenharmony_cilibx264rgb_encoder_select="libx264_encoder" 3389cabdff1aSopenharmony_cilibx265_encoder_deps="libx265" 3390cabdff1aSopenharmony_cilibxavs_encoder_deps="libxavs" 3391cabdff1aSopenharmony_cilibxavs2_encoder_deps="libxavs2" 3392cabdff1aSopenharmony_cilibxvid_encoder_deps="libxvid" 3393cabdff1aSopenharmony_cilibzvbi_teletext_decoder_deps="libzvbi" 3394cabdff1aSopenharmony_civapoursynth_demuxer_deps="vapoursynth" 3395cabdff1aSopenharmony_civideotoolbox_suggest="coreservices" 3396cabdff1aSopenharmony_civideotoolbox_deps="corefoundation coremedia corevideo" 3397cabdff1aSopenharmony_civideotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames" 3398cabdff1aSopenharmony_ci 3399cabdff1aSopenharmony_ci# demuxers / muxers 3400cabdff1aSopenharmony_ciac3_demuxer_select="ac3_parser" 3401cabdff1aSopenharmony_ciact_demuxer_select="riffdec" 3402cabdff1aSopenharmony_ciadts_muxer_select="mpeg4audio" 3403cabdff1aSopenharmony_ciaiff_muxer_select="iso_media" 3404cabdff1aSopenharmony_ciamv_muxer_select="riffenc" 3405cabdff1aSopenharmony_ciasf_demuxer_select="riffdec" 3406cabdff1aSopenharmony_ciasf_o_demuxer_select="riffdec" 3407cabdff1aSopenharmony_ciasf_muxer_select="riffenc" 3408cabdff1aSopenharmony_ciasf_stream_muxer_select="asf_muxer" 3409cabdff1aSopenharmony_ciav1_demuxer_select="av1_frame_merge_bsf av1_parser" 3410cabdff1aSopenharmony_ciavi_demuxer_select="riffdec exif" 3411cabdff1aSopenharmony_ciavi_muxer_select="riffenc" 3412cabdff1aSopenharmony_ciavif_muxer_select="mov_muxer" 3413cabdff1aSopenharmony_cicaf_demuxer_select="iso_media" 3414cabdff1aSopenharmony_cicaf_muxer_select="iso_media" 3415cabdff1aSopenharmony_cidash_muxer_select="mp4_muxer" 3416cabdff1aSopenharmony_cidash_demuxer_deps="libxml2" 3417cabdff1aSopenharmony_cidirac_demuxer_select="dirac_parser" 3418cabdff1aSopenharmony_cidts_demuxer_select="dca_parser" 3419cabdff1aSopenharmony_cidtshd_demuxer_select="dca_parser" 3420cabdff1aSopenharmony_cidv_demuxer_select="dvprofile" 3421cabdff1aSopenharmony_cidv_muxer_select="dvprofile" 3422cabdff1aSopenharmony_cidxa_demuxer_select="riffdec" 3423cabdff1aSopenharmony_cieac3_demuxer_select="ac3_parser" 3424cabdff1aSopenharmony_cif4v_muxer_select="mov_muxer" 3425cabdff1aSopenharmony_cififo_muxer_deps="threads" 3426cabdff1aSopenharmony_ciflac_demuxer_select="flac_parser" 3427cabdff1aSopenharmony_ciflv_muxer_select="aac_adtstoasc_bsf" 3428cabdff1aSopenharmony_cigxf_muxer_select="pcm_rechunk_bsf" 3429cabdff1aSopenharmony_cihds_muxer_select="flv_muxer" 3430cabdff1aSopenharmony_cihls_demuxer_select="adts_header ac3_parser" 3431cabdff1aSopenharmony_cihls_muxer_select="mpegts_muxer" 3432cabdff1aSopenharmony_cihls_muxer_suggest="gcrypt openssl" 3433cabdff1aSopenharmony_ciimage2_alias_pix_demuxer_select="image2_demuxer" 3434cabdff1aSopenharmony_ciimage2_brender_pix_demuxer_select="image2_demuxer" 3435cabdff1aSopenharmony_ciimf_demuxer_deps="libxml2" 3436cabdff1aSopenharmony_ciimf_demuxer_select="mxf_demuxer" 3437cabdff1aSopenharmony_ciipod_muxer_select="mov_muxer" 3438cabdff1aSopenharmony_ciismv_muxer_select="mov_muxer" 3439cabdff1aSopenharmony_ciivf_muxer_select="av1_metadata_bsf vp9_superframe_bsf" 3440cabdff1aSopenharmony_cilatm_muxer_select="aac_adtstoasc_bsf mpeg4audio" 3441cabdff1aSopenharmony_cimatroska_audio_muxer_select="matroska_muxer" 3442cabdff1aSopenharmony_cimatroska_demuxer_select="riffdec" 3443cabdff1aSopenharmony_cimatroska_demuxer_suggest="bzlib zlib" 3444cabdff1aSopenharmony_cimatroska_muxer_select="mpeg4audio riffenc aac_adtstoasc_bsf pgs_frame_merge_bsf vp9_superframe_bsf" 3445cabdff1aSopenharmony_cimlp_demuxer_select="mlp_parser" 3446cabdff1aSopenharmony_cimmf_muxer_select="riffenc" 3447cabdff1aSopenharmony_cimov_demuxer_select="iso_media riffdec" 3448cabdff1aSopenharmony_cimov_demuxer_suggest="zlib" 3449cabdff1aSopenharmony_cimov_muxer_select="iso_media riffenc rtpenc_chain vp9_superframe_bsf aac_adtstoasc_bsf ac3_parser" 3450cabdff1aSopenharmony_cimp3_demuxer_select="mpegaudio_parser" 3451cabdff1aSopenharmony_cimp3_muxer_select="mpegaudioheader" 3452cabdff1aSopenharmony_cimp4_muxer_select="mov_muxer" 3453cabdff1aSopenharmony_cimpegts_demuxer_select="iso_media" 3454cabdff1aSopenharmony_cimpegts_muxer_select="ac3_parser adts_muxer latm_muxer h264_mp4toannexb_bsf hevc_mp4toannexb_bsf" 3455cabdff1aSopenharmony_cimpegtsraw_demuxer_select="mpegts_demuxer" 3456cabdff1aSopenharmony_cimxf_muxer_select="pcm_rechunk_bsf" 3457cabdff1aSopenharmony_cimxf_d10_muxer_select="mxf_muxer" 3458cabdff1aSopenharmony_cimxf_opatom_muxer_select="mxf_muxer" 3459cabdff1aSopenharmony_cinut_muxer_select="riffenc" 3460cabdff1aSopenharmony_cinuv_demuxer_select="riffdec" 3461cabdff1aSopenharmony_ciobu_demuxer_select="av1_frame_merge_bsf av1_parser" 3462cabdff1aSopenharmony_ciobu_muxer_select="av1_metadata_bsf" 3463cabdff1aSopenharmony_cioga_muxer_select="ogg_muxer" 3464cabdff1aSopenharmony_ciogg_demuxer_select="dirac_parse" 3465cabdff1aSopenharmony_ciogv_muxer_select="ogg_muxer" 3466cabdff1aSopenharmony_ciopus_muxer_select="ogg_muxer" 3467cabdff1aSopenharmony_cipsp_muxer_select="mov_muxer" 3468cabdff1aSopenharmony_cirtp_demuxer_select="sdp_demuxer" 3469cabdff1aSopenharmony_cirtp_mpegts_muxer_select="mpegts_muxer rtp_muxer" 3470cabdff1aSopenharmony_cirtpdec_select="asf_demuxer mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp" 3471cabdff1aSopenharmony_cirtsp_demuxer_select="http_protocol rtpdec" 3472cabdff1aSopenharmony_cirtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain" 3473cabdff1aSopenharmony_cisap_demuxer_select="sdp_demuxer" 3474cabdff1aSopenharmony_cisap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain" 3475cabdff1aSopenharmony_cisdp_demuxer_select="rtpdec" 3476cabdff1aSopenharmony_cismoothstreaming_muxer_select="ismv_muxer" 3477cabdff1aSopenharmony_cispdif_demuxer_select="adts_header" 3478cabdff1aSopenharmony_cispdif_muxer_select="adts_header" 3479cabdff1aSopenharmony_cispx_muxer_select="ogg_muxer" 3480cabdff1aSopenharmony_ciswf_demuxer_suggest="zlib" 3481cabdff1aSopenharmony_citak_demuxer_select="tak_parser" 3482cabdff1aSopenharmony_citruehd_demuxer_select="mlp_parser" 3483cabdff1aSopenharmony_citg2_muxer_select="mov_muxer" 3484cabdff1aSopenharmony_citgp_muxer_select="mov_muxer" 3485cabdff1aSopenharmony_civobsub_demuxer_select="mpegps_demuxer" 3486cabdff1aSopenharmony_ciw64_demuxer_select="wav_demuxer" 3487cabdff1aSopenharmony_ciw64_muxer_select="wav_muxer" 3488cabdff1aSopenharmony_ciwav_demuxer_select="riffdec" 3489cabdff1aSopenharmony_ciwav_muxer_select="riffenc" 3490cabdff1aSopenharmony_ciwebm_chunk_muxer_select="webm_muxer" 3491cabdff1aSopenharmony_ciwebm_dash_manifest_demuxer_select="matroska_demuxer" 3492cabdff1aSopenharmony_ciwtv_demuxer_select="mpegts_demuxer riffdec" 3493cabdff1aSopenharmony_ciwtv_muxer_select="mpegts_muxer riffenc" 3494cabdff1aSopenharmony_cixmv_demuxer_select="riffdec" 3495cabdff1aSopenharmony_cixwma_demuxer_select="riffdec" 3496cabdff1aSopenharmony_ci 3497cabdff1aSopenharmony_ci# indevs / outdevs 3498cabdff1aSopenharmony_ciandroid_camera_indev_deps="android camera2ndk mediandk pthreads" 3499cabdff1aSopenharmony_ciandroid_camera_indev_extralibs="-landroid -lcamera2ndk -lmediandk" 3500cabdff1aSopenharmony_cialsa_indev_deps="alsa" 3501cabdff1aSopenharmony_cialsa_outdev_deps="alsa" 3502cabdff1aSopenharmony_ciavfoundation_indev_deps="avfoundation corevideo coremedia pthreads" 3503cabdff1aSopenharmony_ciavfoundation_indev_suggest="coregraphics applicationservices" 3504cabdff1aSopenharmony_ciavfoundation_indev_extralibs="-framework Foundation" 3505cabdff1aSopenharmony_ciaudiotoolbox_outdev_deps="audiotoolbox pthreads" 3506cabdff1aSopenharmony_ciaudiotoolbox_outdev_extralibs="-framework AudioToolbox -framework CoreAudio" 3507cabdff1aSopenharmony_cibktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h" 3508cabdff1aSopenharmony_cicaca_outdev_deps="libcaca" 3509cabdff1aSopenharmony_cidecklink_deps_any="libdl LoadLibrary" 3510cabdff1aSopenharmony_cidecklink_indev_deps="decklink threads" 3511cabdff1aSopenharmony_cidecklink_indev_extralibs="-lstdc++" 3512cabdff1aSopenharmony_cidecklink_indev_suggest="libzvbi" 3513cabdff1aSopenharmony_cidecklink_outdev_deps="decklink threads" 3514cabdff1aSopenharmony_cidecklink_outdev_suggest="libklvanc" 3515cabdff1aSopenharmony_cidecklink_outdev_extralibs="-lstdc++" 3516cabdff1aSopenharmony_cidshow_indev_deps="IBaseFilter" 3517cabdff1aSopenharmony_cidshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi" 3518cabdff1aSopenharmony_cifbdev_indev_deps="linux_fb_h" 3519cabdff1aSopenharmony_cifbdev_outdev_deps="linux_fb_h" 3520cabdff1aSopenharmony_cigdigrab_indev_deps="CreateDIBSection" 3521cabdff1aSopenharmony_cigdigrab_indev_extralibs="-lgdi32" 3522cabdff1aSopenharmony_cigdigrab_indev_select="bmp_decoder" 3523cabdff1aSopenharmony_ciiec61883_indev_deps="libiec61883" 3524cabdff1aSopenharmony_cijack_indev_deps="libjack" 3525cabdff1aSopenharmony_cijack_indev_deps_any="sem_timedwait dispatch_dispatch_h" 3526cabdff1aSopenharmony_cikmsgrab_indev_deps="libdrm" 3527cabdff1aSopenharmony_cilavfi_indev_deps="avfilter" 3528cabdff1aSopenharmony_cilibcdio_indev_deps="libcdio" 3529cabdff1aSopenharmony_cilibdc1394_indev_deps="libdc1394" 3530cabdff1aSopenharmony_ciopenal_indev_deps="openal" 3531cabdff1aSopenharmony_ciopengl_outdev_deps="opengl" 3532cabdff1aSopenharmony_ciopengl_outdev_suggest="sdl2" 3533cabdff1aSopenharmony_cioss_indev_deps_any="sys_soundcard_h" 3534cabdff1aSopenharmony_cioss_outdev_deps_any="sys_soundcard_h" 3535cabdff1aSopenharmony_cipulse_indev_deps="libpulse" 3536cabdff1aSopenharmony_cipulse_outdev_deps="libpulse" 3537cabdff1aSopenharmony_cisdl2_outdev_deps="sdl2" 3538cabdff1aSopenharmony_cisndio_indev_deps="sndio" 3539cabdff1aSopenharmony_cisndio_outdev_deps="sndio" 3540cabdff1aSopenharmony_civ4l2_indev_deps_any="linux_videodev2_h sys_videoio_h" 3541cabdff1aSopenharmony_civ4l2_indev_suggest="libv4l2" 3542cabdff1aSopenharmony_civ4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h" 3543cabdff1aSopenharmony_civ4l2_outdev_suggest="libv4l2" 3544cabdff1aSopenharmony_civfwcap_indev_deps="vfw32 vfwcap_defines" 3545cabdff1aSopenharmony_cixcbgrab_indev_deps="libxcb" 3546cabdff1aSopenharmony_cixcbgrab_indev_suggest="libxcb_shm libxcb_shape libxcb_xfixes" 3547cabdff1aSopenharmony_cixv_outdev_deps="xlib_xv xlib_x11 xlib_xext" 3548cabdff1aSopenharmony_ci 3549cabdff1aSopenharmony_ci# protocols 3550cabdff1aSopenharmony_ciasync_protocol_deps="threads" 3551cabdff1aSopenharmony_cibluray_protocol_deps="libbluray" 3552cabdff1aSopenharmony_ciffrtmpcrypt_protocol_conflict="librtmp_protocol" 3553cabdff1aSopenharmony_ciffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl mbedtls" 3554cabdff1aSopenharmony_ciffrtmpcrypt_protocol_select="tcp_protocol" 3555cabdff1aSopenharmony_ciffrtmphttp_protocol_conflict="librtmp_protocol" 3556cabdff1aSopenharmony_ciffrtmphttp_protocol_select="http_protocol" 3557cabdff1aSopenharmony_ciftp_protocol_select="tcp_protocol" 3558cabdff1aSopenharmony_cigopher_protocol_select="tcp_protocol" 3559cabdff1aSopenharmony_cigophers_protocol_select="tls_protocol" 3560cabdff1aSopenharmony_cihttp_protocol_select="tcp_protocol" 3561cabdff1aSopenharmony_cihttp_protocol_suggest="zlib" 3562cabdff1aSopenharmony_cihttpproxy_protocol_select="tcp_protocol" 3563cabdff1aSopenharmony_cihttpproxy_protocol_suggest="zlib" 3564cabdff1aSopenharmony_cihttps_protocol_select="tls_protocol" 3565cabdff1aSopenharmony_cihttps_protocol_suggest="zlib" 3566cabdff1aSopenharmony_ciicecast_protocol_select="http_protocol" 3567cabdff1aSopenharmony_cimmsh_protocol_select="http_protocol" 3568cabdff1aSopenharmony_cimmst_protocol_select="network" 3569cabdff1aSopenharmony_cirtmp_protocol_conflict="librtmp_protocol" 3570cabdff1aSopenharmony_cirtmp_protocol_select="tcp_protocol" 3571cabdff1aSopenharmony_cirtmp_protocol_suggest="zlib" 3572cabdff1aSopenharmony_cirtmpe_protocol_select="ffrtmpcrypt_protocol" 3573cabdff1aSopenharmony_cirtmpe_protocol_suggest="zlib" 3574cabdff1aSopenharmony_cirtmps_protocol_conflict="librtmp_protocol" 3575cabdff1aSopenharmony_cirtmps_protocol_select="tls_protocol" 3576cabdff1aSopenharmony_cirtmps_protocol_suggest="zlib" 3577cabdff1aSopenharmony_cirtmpt_protocol_select="ffrtmphttp_protocol" 3578cabdff1aSopenharmony_cirtmpt_protocol_suggest="zlib" 3579cabdff1aSopenharmony_cirtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol" 3580cabdff1aSopenharmony_cirtmpte_protocol_suggest="zlib" 3581cabdff1aSopenharmony_cirtmpts_protocol_select="ffrtmphttp_protocol https_protocol" 3582cabdff1aSopenharmony_cirtmpts_protocol_suggest="zlib" 3583cabdff1aSopenharmony_cirtp_protocol_select="udp_protocol" 3584cabdff1aSopenharmony_cischannel_conflict="openssl gnutls libtls mbedtls" 3585cabdff1aSopenharmony_cisctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags" 3586cabdff1aSopenharmony_cisctp_protocol_select="network" 3587cabdff1aSopenharmony_cisecuretransport_conflict="openssl gnutls libtls mbedtls" 3588cabdff1aSopenharmony_cisrtp_protocol_select="rtp_protocol srtp" 3589cabdff1aSopenharmony_citcp_protocol_select="network" 3590cabdff1aSopenharmony_citls_protocol_deps_any="gnutls openssl schannel securetransport libtls mbedtls" 3591cabdff1aSopenharmony_citls_protocol_select="tcp_protocol" 3592cabdff1aSopenharmony_ciudp_protocol_select="network" 3593cabdff1aSopenharmony_ciudplite_protocol_select="network" 3594cabdff1aSopenharmony_ciunix_protocol_deps="sys_un_h" 3595cabdff1aSopenharmony_ciunix_protocol_select="network" 3596cabdff1aSopenharmony_ciipfs_protocol_select="https_protocol" 3597cabdff1aSopenharmony_ciipns_protocol_select="https_protocol" 3598cabdff1aSopenharmony_ci 3599cabdff1aSopenharmony_ci# external library protocols 3600cabdff1aSopenharmony_cilibamqp_protocol_deps="librabbitmq" 3601cabdff1aSopenharmony_cilibamqp_protocol_select="network" 3602cabdff1aSopenharmony_cilibrist_protocol_deps="librist" 3603cabdff1aSopenharmony_cilibrist_protocol_select="network" 3604cabdff1aSopenharmony_cilibrtmp_protocol_deps="librtmp" 3605cabdff1aSopenharmony_cilibrtmpe_protocol_deps="librtmp" 3606cabdff1aSopenharmony_cilibrtmps_protocol_deps="librtmp" 3607cabdff1aSopenharmony_cilibrtmpt_protocol_deps="librtmp" 3608cabdff1aSopenharmony_cilibrtmpte_protocol_deps="librtmp" 3609cabdff1aSopenharmony_cilibsmbclient_protocol_deps="libsmbclient gplv3" 3610cabdff1aSopenharmony_cilibsrt_protocol_deps="libsrt" 3611cabdff1aSopenharmony_cilibsrt_protocol_select="network" 3612cabdff1aSopenharmony_cilibssh_protocol_deps="libssh" 3613cabdff1aSopenharmony_cilibtls_conflict="openssl gnutls mbedtls" 3614cabdff1aSopenharmony_cilibzmq_protocol_deps="libzmq" 3615cabdff1aSopenharmony_cilibzmq_protocol_select="network" 3616cabdff1aSopenharmony_ci 3617cabdff1aSopenharmony_ci# filters 3618cabdff1aSopenharmony_ciametadata_filter_deps="avformat" 3619cabdff1aSopenharmony_ciamovie_filter_deps="avcodec avformat" 3620cabdff1aSopenharmony_ciaresample_filter_deps="swresample" 3621cabdff1aSopenharmony_ciasr_filter_deps="pocketsphinx" 3622cabdff1aSopenharmony_ciass_filter_deps="libass" 3623cabdff1aSopenharmony_ciavgblur_opencl_filter_deps="opencl" 3624cabdff1aSopenharmony_ciavgblur_vulkan_filter_deps="vulkan spirv_compiler" 3625cabdff1aSopenharmony_ciazmq_filter_deps="libzmq" 3626cabdff1aSopenharmony_ciblackframe_filter_deps="gpl" 3627cabdff1aSopenharmony_ciblend_vulkan_filter_deps="vulkan spirv_compiler" 3628cabdff1aSopenharmony_cibm3d_filter_deps="avcodec" 3629cabdff1aSopenharmony_cibm3d_filter_select="dct" 3630cabdff1aSopenharmony_ciboxblur_filter_deps="gpl" 3631cabdff1aSopenharmony_ciboxblur_opencl_filter_deps="opencl gpl" 3632cabdff1aSopenharmony_cibs2b_filter_deps="libbs2b" 3633cabdff1aSopenharmony_cichromaber_vulkan_filter_deps="vulkan spirv_compiler" 3634cabdff1aSopenharmony_cicolorkey_opencl_filter_deps="opencl" 3635cabdff1aSopenharmony_cicolormatrix_filter_deps="gpl" 3636cabdff1aSopenharmony_ciconvolution_opencl_filter_deps="opencl" 3637cabdff1aSopenharmony_cicoreimage_filter_deps="coreimage appkit" 3638cabdff1aSopenharmony_cicoreimage_filter_extralibs="-framework OpenGL" 3639cabdff1aSopenharmony_cicoreimagesrc_filter_deps="coreimage appkit" 3640cabdff1aSopenharmony_cicoreimagesrc_filter_extralibs="-framework OpenGL" 3641cabdff1aSopenharmony_cicover_rect_filter_deps="avcodec avformat gpl" 3642cabdff1aSopenharmony_cicropdetect_filter_deps="gpl" 3643cabdff1aSopenharmony_cideinterlace_qsv_filter_deps="libmfx" 3644cabdff1aSopenharmony_cideinterlace_vaapi_filter_deps="vaapi" 3645cabdff1aSopenharmony_cidelogo_filter_deps="gpl" 3646cabdff1aSopenharmony_cidenoise_vaapi_filter_deps="vaapi" 3647cabdff1aSopenharmony_ciderain_filter_select="dnn" 3648cabdff1aSopenharmony_cideshake_filter_select="pixelutils" 3649cabdff1aSopenharmony_cideshake_opencl_filter_deps="opencl" 3650cabdff1aSopenharmony_cidilation_opencl_filter_deps="opencl" 3651cabdff1aSopenharmony_cidnn_classify_filter_select="dnn" 3652cabdff1aSopenharmony_cidnn_detect_filter_select="dnn" 3653cabdff1aSopenharmony_cidnn_processing_filter_select="dnn" 3654cabdff1aSopenharmony_cidrawtext_filter_deps="libfreetype" 3655cabdff1aSopenharmony_cidrawtext_filter_suggest="libfontconfig libfribidi" 3656cabdff1aSopenharmony_cielbg_filter_deps="avcodec" 3657cabdff1aSopenharmony_cieq_filter_deps="gpl" 3658cabdff1aSopenharmony_cierosion_opencl_filter_deps="opencl" 3659cabdff1aSopenharmony_cifind_rect_filter_deps="avcodec avformat gpl" 3660cabdff1aSopenharmony_cifirequalizer_filter_deps="avcodec" 3661cabdff1aSopenharmony_cifirequalizer_filter_select="rdft" 3662cabdff1aSopenharmony_ciflip_vulkan_filter_deps="vulkan spirv_compiler" 3663cabdff1aSopenharmony_ciflite_filter_deps="libflite" 3664cabdff1aSopenharmony_ciframerate_filter_select="scene_sad" 3665cabdff1aSopenharmony_cifreezedetect_filter_select="scene_sad" 3666cabdff1aSopenharmony_cifrei0r_deps_any="libdl LoadLibrary" 3667cabdff1aSopenharmony_cifrei0r_filter_deps="frei0r" 3668cabdff1aSopenharmony_cifrei0r_src_filter_deps="frei0r" 3669cabdff1aSopenharmony_cifspp_filter_deps="gpl" 3670cabdff1aSopenharmony_cigblur_vulkan_filter_deps="vulkan spirv_compiler" 3671cabdff1aSopenharmony_cihflip_vulkan_filter_deps="vulkan spirv_compiler" 3672cabdff1aSopenharmony_cihisteq_filter_deps="gpl" 3673cabdff1aSopenharmony_cihqdn3d_filter_deps="gpl" 3674cabdff1aSopenharmony_ciiccdetect_filter_deps="lcms2" 3675cabdff1aSopenharmony_ciiccgen_filter_deps="lcms2" 3676cabdff1aSopenharmony_ciinterlace_filter_deps="gpl" 3677cabdff1aSopenharmony_cikerndeint_filter_deps="gpl" 3678cabdff1aSopenharmony_ciladspa_filter_deps="ladspa libdl" 3679cabdff1aSopenharmony_cilensfun_filter_deps="liblensfun version3" 3680cabdff1aSopenharmony_cilibplacebo_filter_deps="libplacebo vulkan" 3681cabdff1aSopenharmony_cilv2_filter_deps="lv2" 3682cabdff1aSopenharmony_cimcdeint_filter_deps="avcodec gpl" 3683cabdff1aSopenharmony_cimetadata_filter_deps="avformat" 3684cabdff1aSopenharmony_cimovie_filter_deps="avcodec avformat" 3685cabdff1aSopenharmony_cimpdecimate_filter_deps="gpl" 3686cabdff1aSopenharmony_cimpdecimate_filter_select="pixelutils" 3687cabdff1aSopenharmony_ciminterpolate_filter_select="scene_sad" 3688cabdff1aSopenharmony_cimptestsrc_filter_deps="gpl" 3689cabdff1aSopenharmony_cinegate_filter_deps="lut_filter" 3690cabdff1aSopenharmony_cinlmeans_opencl_filter_deps="opencl" 3691cabdff1aSopenharmony_cinnedi_filter_deps="gpl" 3692cabdff1aSopenharmony_ciocr_filter_deps="libtesseract" 3693cabdff1aSopenharmony_ciocv_filter_deps="libopencv" 3694cabdff1aSopenharmony_ciopenclsrc_filter_deps="opencl" 3695cabdff1aSopenharmony_cioverlay_opencl_filter_deps="opencl" 3696cabdff1aSopenharmony_cioverlay_qsv_filter_deps="libmfx" 3697cabdff1aSopenharmony_cioverlay_qsv_filter_select="qsvvpp" 3698cabdff1aSopenharmony_cioverlay_vaapi_filter_deps="vaapi VAProcPipelineCaps_blend_flags" 3699cabdff1aSopenharmony_cioverlay_vulkan_filter_deps="vulkan spirv_compiler" 3700cabdff1aSopenharmony_ciowdenoise_filter_deps="gpl" 3701cabdff1aSopenharmony_cipad_opencl_filter_deps="opencl" 3702cabdff1aSopenharmony_cipan_filter_deps="swresample" 3703cabdff1aSopenharmony_ciperspective_filter_deps="gpl" 3704cabdff1aSopenharmony_ciphase_filter_deps="gpl" 3705cabdff1aSopenharmony_cipp7_filter_deps="gpl" 3706cabdff1aSopenharmony_cipp_filter_deps="gpl postproc" 3707cabdff1aSopenharmony_ciprewitt_opencl_filter_deps="opencl" 3708cabdff1aSopenharmony_ciprocamp_vaapi_filter_deps="vaapi" 3709cabdff1aSopenharmony_ciprogram_opencl_filter_deps="opencl" 3710cabdff1aSopenharmony_cipullup_filter_deps="gpl" 3711cabdff1aSopenharmony_ciremap_opencl_filter_deps="opencl" 3712cabdff1aSopenharmony_ciremovelogo_filter_deps="avcodec avformat swscale" 3713cabdff1aSopenharmony_cirepeatfields_filter_deps="gpl" 3714cabdff1aSopenharmony_ciroberts_opencl_filter_deps="opencl" 3715cabdff1aSopenharmony_cirubberband_filter_deps="librubberband" 3716cabdff1aSopenharmony_cisab_filter_deps="gpl swscale" 3717cabdff1aSopenharmony_ciscale2ref_filter_deps="swscale" 3718cabdff1aSopenharmony_ciscale_filter_deps="swscale" 3719cabdff1aSopenharmony_ciscale_qsv_filter_deps="libmfx" 3720cabdff1aSopenharmony_ciscdet_filter_select="scene_sad" 3721cabdff1aSopenharmony_ciselect_filter_select="scene_sad" 3722cabdff1aSopenharmony_cisharpness_vaapi_filter_deps="vaapi" 3723cabdff1aSopenharmony_cishowcqt_filter_deps="avformat swscale" 3724cabdff1aSopenharmony_cishowcqt_filter_suggest="libfontconfig libfreetype" 3725cabdff1aSopenharmony_cishowspatial_filter_deps="avcodec" 3726cabdff1aSopenharmony_cishowspatial_filter_select="fft" 3727cabdff1aSopenharmony_cisignature_filter_deps="gpl avcodec avformat" 3728cabdff1aSopenharmony_cismartblur_filter_deps="gpl swscale" 3729cabdff1aSopenharmony_cisobel_opencl_filter_deps="opencl" 3730cabdff1aSopenharmony_cisofalizer_filter_deps="libmysofa" 3731cabdff1aSopenharmony_cispp_filter_deps="gpl avcodec" 3732cabdff1aSopenharmony_cispp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp" 3733cabdff1aSopenharmony_cisr_filter_deps="avformat swscale" 3734cabdff1aSopenharmony_cisr_filter_select="dnn" 3735cabdff1aSopenharmony_cistereo3d_filter_deps="gpl" 3736cabdff1aSopenharmony_cisubtitles_filter_deps="avformat avcodec libass" 3737cabdff1aSopenharmony_cisuper2xsai_filter_deps="gpl" 3738cabdff1aSopenharmony_cipixfmts_super2xsai_test_deps="super2xsai_filter" 3739cabdff1aSopenharmony_citinterlace_filter_deps="gpl" 3740cabdff1aSopenharmony_citinterlace_merge_test_deps="tinterlace_filter" 3741cabdff1aSopenharmony_citinterlace_pad_test_deps="tinterlace_filter" 3742cabdff1aSopenharmony_citonemap_filter_deps="const_nan" 3743cabdff1aSopenharmony_citonemap_vaapi_filter_deps="vaapi VAProcFilterParameterBufferHDRToneMapping" 3744cabdff1aSopenharmony_citonemap_opencl_filter_deps="opencl const_nan" 3745cabdff1aSopenharmony_citranspose_opencl_filter_deps="opencl" 3746cabdff1aSopenharmony_citranspose_vaapi_filter_deps="vaapi VAProcPipelineCaps_rotation_flags" 3747cabdff1aSopenharmony_citranspose_vulkan_filter_deps="vulkan spirv_compiler" 3748cabdff1aSopenharmony_ciunsharp_opencl_filter_deps="opencl" 3749cabdff1aSopenharmony_ciuspp_filter_deps="gpl avcodec" 3750cabdff1aSopenharmony_civaguedenoiser_filter_deps="gpl" 3751cabdff1aSopenharmony_civflip_vulkan_filter_deps="vulkan spirv_compiler" 3752cabdff1aSopenharmony_cividstabdetect_filter_deps="libvidstab" 3753cabdff1aSopenharmony_cividstabtransform_filter_deps="libvidstab" 3754cabdff1aSopenharmony_cilibvmaf_filter_deps="libvmaf" 3755cabdff1aSopenharmony_cizmq_filter_deps="libzmq" 3756cabdff1aSopenharmony_cizoompan_filter_deps="swscale" 3757cabdff1aSopenharmony_cizscale_filter_deps="libzimg const_nan" 3758cabdff1aSopenharmony_ciscale_vaapi_filter_deps="vaapi" 3759cabdff1aSopenharmony_ciscale_vulkan_filter_deps="vulkan spirv_compiler" 3760cabdff1aSopenharmony_civpp_qsv_filter_deps="libmfx" 3761cabdff1aSopenharmony_civpp_qsv_filter_select="qsvvpp" 3762cabdff1aSopenharmony_cixfade_opencl_filter_deps="opencl" 3763cabdff1aSopenharmony_ciyadif_cuda_filter_deps="ffnvcodec" 3764cabdff1aSopenharmony_ciyadif_cuda_filter_deps_any="cuda_nvcc cuda_llvm" 3765cabdff1aSopenharmony_ciyadif_videotoolbox_filter_deps="metal corevideo videotoolbox" 3766cabdff1aSopenharmony_ci 3767cabdff1aSopenharmony_ci# examples 3768cabdff1aSopenharmony_ciavio_list_dir_deps="avformat avutil" 3769cabdff1aSopenharmony_ciavio_reading_deps="avformat avcodec avutil" 3770cabdff1aSopenharmony_cidecode_audio_example_deps="avcodec avutil" 3771cabdff1aSopenharmony_cidecode_video_example_deps="avcodec avutil" 3772cabdff1aSopenharmony_cidemuxing_decoding_example_deps="avcodec avformat avutil" 3773cabdff1aSopenharmony_ciencode_audio_example_deps="avcodec avutil" 3774cabdff1aSopenharmony_ciencode_video_example_deps="avcodec avutil" 3775cabdff1aSopenharmony_ciextract_mvs_example_deps="avcodec avformat avutil" 3776cabdff1aSopenharmony_cifilter_audio_example_deps="avfilter avutil" 3777cabdff1aSopenharmony_cifiltering_audio_example_deps="avfilter avcodec avformat avutil" 3778cabdff1aSopenharmony_cifiltering_video_example_deps="avfilter avcodec avformat avutil" 3779cabdff1aSopenharmony_cihttp_multiclient_example_deps="avformat avutil fork" 3780cabdff1aSopenharmony_cihw_decode_example_deps="avcodec avformat avutil" 3781cabdff1aSopenharmony_cimetadata_example_deps="avformat avutil" 3782cabdff1aSopenharmony_cimuxing_example_deps="avcodec avformat avutil swscale" 3783cabdff1aSopenharmony_ciqsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder" 3784cabdff1aSopenharmony_ciremuxing_example_deps="avcodec avformat avutil" 3785cabdff1aSopenharmony_ciresampling_audio_example_deps="avutil swresample" 3786cabdff1aSopenharmony_ciscaling_video_example_deps="avutil swscale" 3787cabdff1aSopenharmony_citranscode_aac_example_deps="avcodec avformat swresample" 3788cabdff1aSopenharmony_citranscoding_example_deps="avfilter avcodec avformat avutil" 3789cabdff1aSopenharmony_civaapi_encode_example_deps="avcodec avutil h264_vaapi_encoder" 3790cabdff1aSopenharmony_civaapi_transcode_example_deps="avcodec avformat avutil h264_vaapi_encoder" 3791cabdff1aSopenharmony_ci 3792cabdff1aSopenharmony_ci# EXTRALIBS_LIST 3793cabdff1aSopenharmony_cicpu_init_extralibs="pthreads_extralibs" 3794cabdff1aSopenharmony_cicws2fws_extralibs="zlib_extralibs" 3795cabdff1aSopenharmony_ci 3796cabdff1aSopenharmony_ci# libraries, in any order 3797cabdff1aSopenharmony_ciavcodec_deps="avutil" 3798cabdff1aSopenharmony_ciavcodec_suggest="libm stdatomic" 3799cabdff1aSopenharmony_ciavdevice_deps="avformat avcodec avutil" 3800cabdff1aSopenharmony_ciavdevice_suggest="libm stdatomic" 3801cabdff1aSopenharmony_ciavfilter_deps="avutil" 3802cabdff1aSopenharmony_ciavfilter_suggest="libm stdatomic" 3803cabdff1aSopenharmony_ciavformat_deps="avcodec avutil" 3804cabdff1aSopenharmony_ciavformat_suggest="libm network zlib stdatomic" 3805cabdff1aSopenharmony_ciavutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi vulkan videotoolbox corefoundation corevideo coremedia bcrypt stdatomic" 3806cabdff1aSopenharmony_cipostproc_deps="avutil gpl" 3807cabdff1aSopenharmony_cipostproc_suggest="libm stdatomic" 3808cabdff1aSopenharmony_ciswresample_deps="avutil" 3809cabdff1aSopenharmony_ciswresample_suggest="libm libsoxr stdatomic" 3810cabdff1aSopenharmony_ciswscale_deps="avutil" 3811cabdff1aSopenharmony_ciswscale_suggest="libm stdatomic" 3812cabdff1aSopenharmony_ci 3813cabdff1aSopenharmony_ciavcodec_extralibs="pthreads_extralibs iconv_extralibs dxva2_extralibs" 3814cabdff1aSopenharmony_ciavfilter_extralibs="pthreads_extralibs" 3815cabdff1aSopenharmony_ciavutil_extralibs="d3d11va_extralibs nanosleep_extralibs pthreads_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs" 3816cabdff1aSopenharmony_ci 3817cabdff1aSopenharmony_ci# programs 3818cabdff1aSopenharmony_ciffmpeg_deps="avcodec avfilter avformat" 3819cabdff1aSopenharmony_ciffmpeg_select="aformat_filter anull_filter atrim_filter format_filter 3820cabdff1aSopenharmony_ci hflip_filter null_filter 3821cabdff1aSopenharmony_ci transpose_filter trim_filter vflip_filter" 3822cabdff1aSopenharmony_ciffmpeg_suggest="ole32 psapi shell32" 3823cabdff1aSopenharmony_ciffplay_deps="avcodec avformat swscale swresample sdl2" 3824cabdff1aSopenharmony_ciffplay_select="rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter" 3825cabdff1aSopenharmony_ciffplay_suggest="shell32" 3826cabdff1aSopenharmony_ciffprobe_deps="avcodec avformat" 3827cabdff1aSopenharmony_ciffprobe_suggest="shell32" 3828cabdff1aSopenharmony_ci 3829cabdff1aSopenharmony_ci# documentation 3830cabdff1aSopenharmony_cipodpages_deps="perl" 3831cabdff1aSopenharmony_cimanpages_deps="perl pod2man" 3832cabdff1aSopenharmony_cihtmlpages_deps="perl" 3833cabdff1aSopenharmony_cihtmlpages_deps_any="makeinfo_html texi2html" 3834cabdff1aSopenharmony_citxtpages_deps="perl makeinfo" 3835cabdff1aSopenharmony_cidoc_deps_any="manpages htmlpages podpages txtpages" 3836cabdff1aSopenharmony_ci 3837cabdff1aSopenharmony_ci# default parameters 3838cabdff1aSopenharmony_ci 3839cabdff1aSopenharmony_cilogfile="ffbuild/config.log" 3840cabdff1aSopenharmony_ci 3841cabdff1aSopenharmony_ci# installation paths 3842cabdff1aSopenharmony_ciprefix_default="/usr/local" 3843cabdff1aSopenharmony_cibindir_default='${prefix}/bin' 3844cabdff1aSopenharmony_cidatadir_default='${prefix}/share/ffmpeg' 3845cabdff1aSopenharmony_cidocdir_default='${prefix}/share/doc/ffmpeg' 3846cabdff1aSopenharmony_ciincdir_default='${prefix}/include' 3847cabdff1aSopenharmony_cilibdir_default='${prefix}/lib' 3848cabdff1aSopenharmony_cimandir_default='${prefix}/share/man' 3849cabdff1aSopenharmony_ci 3850cabdff1aSopenharmony_ci# toolchain 3851cabdff1aSopenharmony_ciar_default="ar" 3852cabdff1aSopenharmony_cicc_default="gcc" 3853cabdff1aSopenharmony_cicxx_default="g++" 3854cabdff1aSopenharmony_cihost_cc_default="gcc" 3855cabdff1aSopenharmony_cidoxygen_default="doxygen" 3856cabdff1aSopenharmony_ciinstall="install" 3857cabdff1aSopenharmony_ciln_s_default="ln -s -f" 3858cabdff1aSopenharmony_cimetalcc_default="xcrun -sdk macosx metal" 3859cabdff1aSopenharmony_cimetallib_default="xcrun -sdk macosx metallib" 3860cabdff1aSopenharmony_cinm_default="nm -g" 3861cabdff1aSopenharmony_cipkg_config_default=pkg-config 3862cabdff1aSopenharmony_ciranlib_default="ranlib" 3863cabdff1aSopenharmony_cistrip_default="strip" 3864cabdff1aSopenharmony_civersion_script='--version-script' 3865cabdff1aSopenharmony_ciobjformat="elf32" 3866cabdff1aSopenharmony_cix86asmexe_default="nasm" 3867cabdff1aSopenharmony_ciwindres_default="windres" 3868cabdff1aSopenharmony_cistriptype="direct" 3869cabdff1aSopenharmony_ci 3870cabdff1aSopenharmony_ci# OS 3871cabdff1aSopenharmony_citarget_os_default=$(tolower $(uname -s)) 3872cabdff1aSopenharmony_cihost_os=$target_os_default 3873cabdff1aSopenharmony_ci 3874cabdff1aSopenharmony_ci# machine 3875cabdff1aSopenharmony_ciif test "$target_os_default" = aix; then 3876cabdff1aSopenharmony_ci arch_default=$(uname -p) 3877cabdff1aSopenharmony_ci strip_default="strip -X32_64" 3878cabdff1aSopenharmony_ci nm_default="nm -g -X32_64" 3879cabdff1aSopenharmony_cielse 3880cabdff1aSopenharmony_ci arch_default=$(uname -m) 3881cabdff1aSopenharmony_cifi 3882cabdff1aSopenharmony_cicpu="generic" 3883cabdff1aSopenharmony_ciintrinsics="none" 3884cabdff1aSopenharmony_ci 3885cabdff1aSopenharmony_ci# configurable options 3886cabdff1aSopenharmony_cienable $PROGRAM_LIST 3887cabdff1aSopenharmony_cienable $DOCUMENT_LIST 3888cabdff1aSopenharmony_cienable $EXAMPLE_LIST 3889cabdff1aSopenharmony_cienable $LIBRARY_LIST 3890cabdff1aSopenharmony_cienable stripping 3891cabdff1aSopenharmony_ci 3892cabdff1aSopenharmony_cienable asm 3893cabdff1aSopenharmony_cienable debug 3894cabdff1aSopenharmony_cienable doc 3895cabdff1aSopenharmony_cienable faan faandct faanidct 3896cabdff1aSopenharmony_cienable large_tests 3897cabdff1aSopenharmony_cienable optimizations 3898cabdff1aSopenharmony_cienable ptx_compression 3899cabdff1aSopenharmony_cienable runtime_cpudetect 3900cabdff1aSopenharmony_cienable safe_bitstream_reader 3901cabdff1aSopenharmony_cienable static 3902cabdff1aSopenharmony_cienable swscale_alpha 3903cabdff1aSopenharmony_cienable valgrind_backtrace 3904cabdff1aSopenharmony_ci 3905cabdff1aSopenharmony_cisws_max_filter_size_default=256 3906cabdff1aSopenharmony_ciset_default sws_max_filter_size 3907cabdff1aSopenharmony_ci 3908cabdff1aSopenharmony_ci# internal components are enabled by default 3909cabdff1aSopenharmony_cienable $EXTRALIBS_LIST 3910cabdff1aSopenharmony_ci 3911cabdff1aSopenharmony_ci# Avoid external, non-system, libraries getting enabled by dependency resolution 3912cabdff1aSopenharmony_cidisable $EXTERNAL_LIBRARY_LIST $HWACCEL_LIBRARY_LIST 3913cabdff1aSopenharmony_ci 3914cabdff1aSopenharmony_ci# build settings 3915cabdff1aSopenharmony_ciSHFLAGS='-shared -Wl,-soname,$$(@F)' 3916cabdff1aSopenharmony_ciLIBPREF="lib" 3917cabdff1aSopenharmony_ciLIBSUF=".a" 3918cabdff1aSopenharmony_ciFULLNAME='$(NAME)$(BUILDSUF)' 3919cabdff1aSopenharmony_ciLIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)' 3920cabdff1aSopenharmony_ciSLIBPREF="lib" 3921cabdff1aSopenharmony_ciSLIBSUF=".so" 3922cabdff1aSopenharmony_ciSLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)' 3923cabdff1aSopenharmony_ciSLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)' 3924cabdff1aSopenharmony_ciSLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' 3925cabdff1aSopenharmony_ciLIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' 3926cabdff1aSopenharmony_ciSLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' 3927cabdff1aSopenharmony_ciSLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)' 3928cabdff1aSopenharmony_ciVERSION_SCRIPT_POSTPROCESS_CMD="cat" 3929cabdff1aSopenharmony_ci 3930cabdff1aSopenharmony_ciasflags_filter=echo 3931cabdff1aSopenharmony_cicflags_filter=echo 3932cabdff1aSopenharmony_cildflags_filter=echo 3933cabdff1aSopenharmony_ci 3934cabdff1aSopenharmony_ciAS_C='-c' 3935cabdff1aSopenharmony_ciAS_O='-o $@' 3936cabdff1aSopenharmony_ciCC_C='-c' 3937cabdff1aSopenharmony_ciCC_E='-E -o $@' 3938cabdff1aSopenharmony_ciCC_O='-o $@' 3939cabdff1aSopenharmony_ciCXX_C='-c' 3940cabdff1aSopenharmony_ciCXX_O='-o $@' 3941cabdff1aSopenharmony_ciOBJCC_C='-c' 3942cabdff1aSopenharmony_ciOBJCC_E='-E -o $@' 3943cabdff1aSopenharmony_ciOBJCC_O='-o $@' 3944cabdff1aSopenharmony_ciX86ASM_O='-o $@' 3945cabdff1aSopenharmony_ciLD_O='-o $@' 3946cabdff1aSopenharmony_ciLD_LIB='-l%' 3947cabdff1aSopenharmony_ciLD_PATH='-L' 3948cabdff1aSopenharmony_ciHOSTCC_C='-c' 3949cabdff1aSopenharmony_ciHOSTCC_E='-E -o $@' 3950cabdff1aSopenharmony_ciHOSTCC_O='-o $@' 3951cabdff1aSopenharmony_ciHOSTLD_O='-o $@' 3952cabdff1aSopenharmony_ciNVCC_C='-c' 3953cabdff1aSopenharmony_ciNVCC_O='-o $@' 3954cabdff1aSopenharmony_ci 3955cabdff1aSopenharmony_cihost_extralibs='-lm' 3956cabdff1aSopenharmony_cihost_cflags_filter=echo 3957cabdff1aSopenharmony_cihost_ldflags_filter=echo 3958cabdff1aSopenharmony_ci 3959cabdff1aSopenharmony_citarget_path='$(CURDIR)' 3960cabdff1aSopenharmony_ci 3961cabdff1aSopenharmony_ci# since the object filename is not given with the -MM flag, the compiler 3962cabdff1aSopenharmony_ci# is only able to print the basename, and we must add the path ourselves 3963cabdff1aSopenharmony_ciDEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)' 3964cabdff1aSopenharmony_ciDEPFLAGS='-MM' 3965cabdff1aSopenharmony_ci 3966cabdff1aSopenharmony_cimkdir -p ffbuild 3967cabdff1aSopenharmony_ci 3968cabdff1aSopenharmony_ci# find source path 3969cabdff1aSopenharmony_ciif test -f configure; then 3970cabdff1aSopenharmony_ci source_path=. 3971cabdff1aSopenharmony_cielif test -f src/configure; then 3972cabdff1aSopenharmony_ci source_path=src 3973cabdff1aSopenharmony_cielse 3974cabdff1aSopenharmony_ci source_path=$(cd $(dirname "$0"); pwd) 3975cabdff1aSopenharmony_ci case "$source_path" in 3976cabdff1aSopenharmony_ci *[[:blank:]]*) die "Out of tree builds are impossible with whitespace in source path." ;; 3977cabdff1aSopenharmony_ci esac 3978cabdff1aSopenharmony_ci test -e "$source_path/config.h" && 3979cabdff1aSopenharmony_ci die "Out of tree builds are impossible with config.h in source dir." 3980cabdff1aSopenharmony_cifi 3981cabdff1aSopenharmony_ci 3982cabdff1aSopenharmony_cifor v in "$@"; do 3983cabdff1aSopenharmony_ci r=${v#*=} 3984cabdff1aSopenharmony_ci l=${v%"$r"} 3985cabdff1aSopenharmony_ci r=$(sh_quote "$r") 3986cabdff1aSopenharmony_ci FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}" 3987cabdff1aSopenharmony_cidone 3988cabdff1aSopenharmony_ci 3989cabdff1aSopenharmony_cifind_things_extern(){ 3990cabdff1aSopenharmony_ci thing=$1 3991cabdff1aSopenharmony_ci pattern=$2 3992cabdff1aSopenharmony_ci file=$source_path/$3 3993cabdff1aSopenharmony_ci out=${4:-$thing} 3994cabdff1aSopenharmony_ci sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$out/p" "$file" 3995cabdff1aSopenharmony_ci} 3996cabdff1aSopenharmony_ci 3997cabdff1aSopenharmony_cifind_filters_extern(){ 3998cabdff1aSopenharmony_ci file=$source_path/$1 3999cabdff1aSopenharmony_ci sed -n 's/^extern const AVFilter ff_[avfsinkrc]\{2,5\}_\([[:alnum:]_]\{1,\}\);/\1_filter/p' $file 4000cabdff1aSopenharmony_ci} 4001cabdff1aSopenharmony_ci 4002cabdff1aSopenharmony_ciFILTER_LIST=$(find_filters_extern libavfilter/allfilters.c) 4003cabdff1aSopenharmony_ciOUTDEV_LIST=$(find_things_extern muxer AVOutputFormat libavdevice/alldevices.c outdev) 4004cabdff1aSopenharmony_ciINDEV_LIST=$(find_things_extern demuxer AVInputFormat libavdevice/alldevices.c indev) 4005cabdff1aSopenharmony_ciMUXER_LIST=$(find_things_extern muxer AVOutputFormat libavformat/allformats.c) 4006cabdff1aSopenharmony_ciDEMUXER_LIST=$(find_things_extern demuxer AVInputFormat libavformat/allformats.c) 4007cabdff1aSopenharmony_ciENCODER_LIST=$(find_things_extern encoder FFCodec libavcodec/allcodecs.c) 4008cabdff1aSopenharmony_ciDECODER_LIST=$(find_things_extern decoder FFCodec libavcodec/allcodecs.c) 4009cabdff1aSopenharmony_ciCODEC_LIST=" 4010cabdff1aSopenharmony_ci $ENCODER_LIST 4011cabdff1aSopenharmony_ci $DECODER_LIST 4012cabdff1aSopenharmony_ci" 4013cabdff1aSopenharmony_ciPARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parsers.c) 4014cabdff1aSopenharmony_ciBSF_LIST=$(find_things_extern bsf FFBitStreamFilter libavcodec/bitstream_filters.c) 4015cabdff1aSopenharmony_ciHWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h) 4016cabdff1aSopenharmony_ciPROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c) 4017cabdff1aSopenharmony_ci 4018cabdff1aSopenharmony_ciAVCODEC_COMPONENTS_LIST=" 4019cabdff1aSopenharmony_ci $BSF_LIST 4020cabdff1aSopenharmony_ci $DECODER_LIST 4021cabdff1aSopenharmony_ci $ENCODER_LIST 4022cabdff1aSopenharmony_ci $HWACCEL_LIST 4023cabdff1aSopenharmony_ci $PARSER_LIST 4024cabdff1aSopenharmony_ci" 4025cabdff1aSopenharmony_ci 4026cabdff1aSopenharmony_ciAVDEVICE_COMPONENTS_LIST=" 4027cabdff1aSopenharmony_ci $INDEV_LIST 4028cabdff1aSopenharmony_ci $OUTDEV_LIST 4029cabdff1aSopenharmony_ci" 4030cabdff1aSopenharmony_ci 4031cabdff1aSopenharmony_ciAVFILTER_COMPONENTS_LIST=" 4032cabdff1aSopenharmony_ci $FILTER_LIST 4033cabdff1aSopenharmony_ci" 4034cabdff1aSopenharmony_ci 4035cabdff1aSopenharmony_ciAVFORMAT_COMPONENTS_LIST=" 4036cabdff1aSopenharmony_ci $DEMUXER_LIST 4037cabdff1aSopenharmony_ci $MUXER_LIST 4038cabdff1aSopenharmony_ci $PROTOCOL_LIST 4039cabdff1aSopenharmony_ci" 4040cabdff1aSopenharmony_ci 4041cabdff1aSopenharmony_ciALL_COMPONENTS=" 4042cabdff1aSopenharmony_ci $AVCODEC_COMPONENTS_LIST 4043cabdff1aSopenharmony_ci $AVDEVICE_COMPONENTS_LIST 4044cabdff1aSopenharmony_ci $AVFILTER_COMPONENTS_LIST 4045cabdff1aSopenharmony_ci $AVFORMAT_COMPONENTS_LIST 4046cabdff1aSopenharmony_ci" 4047cabdff1aSopenharmony_ci 4048cabdff1aSopenharmony_cifor n in $COMPONENT_LIST; do 4049cabdff1aSopenharmony_ci v=$(toupper ${n%s})_LIST 4050cabdff1aSopenharmony_ci eval enable \$$v 4051cabdff1aSopenharmony_ci eval ${n}_if_any="\$$v" 4052cabdff1aSopenharmony_cidone 4053cabdff1aSopenharmony_ci 4054cabdff1aSopenharmony_cienable $ARCH_EXT_LIST 4055cabdff1aSopenharmony_ci 4056cabdff1aSopenharmony_cidie_unknown(){ 4057cabdff1aSopenharmony_ci echo "Unknown option \"$1\"." 4058cabdff1aSopenharmony_ci echo "See $0 --help for available options." 4059cabdff1aSopenharmony_ci exit 1 4060cabdff1aSopenharmony_ci} 4061cabdff1aSopenharmony_ci 4062cabdff1aSopenharmony_ciprint_in_columns() { 4063cabdff1aSopenharmony_ci tr ' ' '\n' | sort | tr '\r\n' ' ' | awk -v col_width=24 -v width="$ncols" ' 4064cabdff1aSopenharmony_ci { 4065cabdff1aSopenharmony_ci num_cols = width > col_width ? int(width / col_width) : 1; 4066cabdff1aSopenharmony_ci num_rows = int((NF + num_cols-1) / num_cols); 4067cabdff1aSopenharmony_ci y = x = 1; 4068cabdff1aSopenharmony_ci for (y = 1; y <= num_rows; y++) { 4069cabdff1aSopenharmony_ci i = y; 4070cabdff1aSopenharmony_ci for (x = 1; x <= num_cols; x++) { 4071cabdff1aSopenharmony_ci if (i <= NF) { 4072cabdff1aSopenharmony_ci line = sprintf("%s%-" col_width "s", line, $i); 4073cabdff1aSopenharmony_ci } 4074cabdff1aSopenharmony_ci i = i + num_rows; 4075cabdff1aSopenharmony_ci } 4076cabdff1aSopenharmony_ci print line; line = ""; 4077cabdff1aSopenharmony_ci } 4078cabdff1aSopenharmony_ci }' | sed 's/ *$//' 4079cabdff1aSopenharmony_ci} 4080cabdff1aSopenharmony_ci 4081cabdff1aSopenharmony_cishow_list() { 4082cabdff1aSopenharmony_ci suffix=_$1 4083cabdff1aSopenharmony_ci shift 4084cabdff1aSopenharmony_ci echo $* | sed s/$suffix//g | print_in_columns 4085cabdff1aSopenharmony_ci exit 0 4086cabdff1aSopenharmony_ci} 4087cabdff1aSopenharmony_ci 4088cabdff1aSopenharmony_cirand_list(){ 4089cabdff1aSopenharmony_ci IFS=', ' 4090cabdff1aSopenharmony_ci set -- $* 4091cabdff1aSopenharmony_ci unset IFS 4092cabdff1aSopenharmony_ci for thing; do 4093cabdff1aSopenharmony_ci comp=${thing%:*} 4094cabdff1aSopenharmony_ci prob=${thing#$comp} 4095cabdff1aSopenharmony_ci prob=${prob#:} 4096cabdff1aSopenharmony_ci is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST 4097cabdff1aSopenharmony_ci echo "prob ${prob:-0.5}" 4098cabdff1aSopenharmony_ci printf '%s\n' $comp 4099cabdff1aSopenharmony_ci done 4100cabdff1aSopenharmony_ci} 4101cabdff1aSopenharmony_ci 4102cabdff1aSopenharmony_cido_random(){ 4103cabdff1aSopenharmony_ci action=$1 4104cabdff1aSopenharmony_ci shift 4105cabdff1aSopenharmony_ci random_seed=$(awk "BEGIN { srand($random_seed); print srand() }") 4106cabdff1aSopenharmony_ci $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }") 4107cabdff1aSopenharmony_ci} 4108cabdff1aSopenharmony_ci 4109cabdff1aSopenharmony_cifor opt do 4110cabdff1aSopenharmony_ci optval="${opt#*=}" 4111cabdff1aSopenharmony_ci case "$opt" in 4112cabdff1aSopenharmony_ci --extra-ldflags=*) 4113cabdff1aSopenharmony_ci add_ldflags $optval 4114cabdff1aSopenharmony_ci ;; 4115cabdff1aSopenharmony_ci --extra-ldexeflags=*) 4116cabdff1aSopenharmony_ci add_ldexeflags $optval 4117cabdff1aSopenharmony_ci ;; 4118cabdff1aSopenharmony_ci --extra-ldsoflags=*) 4119cabdff1aSopenharmony_ci add_ldsoflags $optval 4120cabdff1aSopenharmony_ci ;; 4121cabdff1aSopenharmony_ci --extra-ldlibflags=*) 4122cabdff1aSopenharmony_ci warn "The --extra-ldlibflags option is only provided for compatibility and will be\n"\ 4123cabdff1aSopenharmony_ci "removed in the future. Use --extra-ldsoflags instead." 4124cabdff1aSopenharmony_ci add_ldsoflags $optval 4125cabdff1aSopenharmony_ci ;; 4126cabdff1aSopenharmony_ci --extra-libs=*) 4127cabdff1aSopenharmony_ci add_extralibs $optval 4128cabdff1aSopenharmony_ci ;; 4129cabdff1aSopenharmony_ci --disable-devices) 4130cabdff1aSopenharmony_ci disable $INDEV_LIST $OUTDEV_LIST 4131cabdff1aSopenharmony_ci ;; 4132cabdff1aSopenharmony_ci --enable-debug=*) 4133cabdff1aSopenharmony_ci debuglevel="$optval" 4134cabdff1aSopenharmony_ci ;; 4135cabdff1aSopenharmony_ci --disable-programs) 4136cabdff1aSopenharmony_ci disable $PROGRAM_LIST 4137cabdff1aSopenharmony_ci ;; 4138cabdff1aSopenharmony_ci --disable-everything) 4139cabdff1aSopenharmony_ci map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST 4140cabdff1aSopenharmony_ci ;; 4141cabdff1aSopenharmony_ci --disable-all) 4142cabdff1aSopenharmony_ci map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST 4143cabdff1aSopenharmony_ci disable $LIBRARY_LIST $PROGRAM_LIST doc 4144cabdff1aSopenharmony_ci enable avutil 4145cabdff1aSopenharmony_ci ;; 4146cabdff1aSopenharmony_ci --enable-random|--disable-random) 4147cabdff1aSopenharmony_ci action=${opt%%-random} 4148cabdff1aSopenharmony_ci do_random ${action#--} $COMPONENT_LIST 4149cabdff1aSopenharmony_ci ;; 4150cabdff1aSopenharmony_ci --enable-random=*|--disable-random=*) 4151cabdff1aSopenharmony_ci action=${opt%%-random=*} 4152cabdff1aSopenharmony_ci do_random ${action#--} $optval 4153cabdff1aSopenharmony_ci ;; 4154cabdff1aSopenharmony_ci --enable-sdl) 4155cabdff1aSopenharmony_ci enable sdl2 4156cabdff1aSopenharmony_ci ;; 4157cabdff1aSopenharmony_ci --enable-*=*|--disable-*=*) 4158cabdff1aSopenharmony_ci eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/') 4159cabdff1aSopenharmony_ci is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt" 4160cabdff1aSopenharmony_ci eval list=\$$(toupper $thing)_LIST 4161cabdff1aSopenharmony_ci name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing} 4162cabdff1aSopenharmony_ci list=$(filter "$name" $list) 4163cabdff1aSopenharmony_ci [ "$list" = "" ] && warn "Option $opt did not match anything" 4164cabdff1aSopenharmony_ci test $action = enable && warn_if_gets_disabled $list 4165cabdff1aSopenharmony_ci $action $list 4166cabdff1aSopenharmony_ci ;; 4167cabdff1aSopenharmony_ci --enable-yasm|--disable-yasm) 4168cabdff1aSopenharmony_ci warn "The ${opt} option is only provided for compatibility and will be\n"\ 4169cabdff1aSopenharmony_ci "removed in the future. Use --enable-x86asm / --disable-x86asm instead." 4170cabdff1aSopenharmony_ci test $opt = --enable-yasm && x86asm=yes || x86asm=no 4171cabdff1aSopenharmony_ci ;; 4172cabdff1aSopenharmony_ci --yasmexe=*) 4173cabdff1aSopenharmony_ci warn "The --yasmexe option is only provided for compatibility and will be\n"\ 4174cabdff1aSopenharmony_ci "removed in the future. Use --x86asmexe instead." 4175cabdff1aSopenharmony_ci x86asmexe="$optval" 4176cabdff1aSopenharmony_ci ;; 4177cabdff1aSopenharmony_ci --enable-?*|--disable-?*) 4178cabdff1aSopenharmony_ci eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g') 4179cabdff1aSopenharmony_ci if is_in $option $COMPONENT_LIST; then 4180cabdff1aSopenharmony_ci test $action = disable && action=unset 4181cabdff1aSopenharmony_ci eval $action \$$(toupper ${option%s})_LIST 4182cabdff1aSopenharmony_ci elif is_in $option $CMDLINE_SELECT; then 4183cabdff1aSopenharmony_ci $action $option 4184cabdff1aSopenharmony_ci else 4185cabdff1aSopenharmony_ci die_unknown $opt 4186cabdff1aSopenharmony_ci fi 4187cabdff1aSopenharmony_ci ;; 4188cabdff1aSopenharmony_ci --list-*) 4189cabdff1aSopenharmony_ci NAME="${opt#--list-}" 4190cabdff1aSopenharmony_ci is_in $NAME $COMPONENT_LIST || die_unknown $opt 4191cabdff1aSopenharmony_ci NAME=${NAME%s} 4192cabdff1aSopenharmony_ci eval show_list $NAME \$$(toupper $NAME)_LIST 4193cabdff1aSopenharmony_ci ;; 4194cabdff1aSopenharmony_ci --help|-h) show_help 4195cabdff1aSopenharmony_ci ;; 4196cabdff1aSopenharmony_ci --quiet|-q) quiet=yes 4197cabdff1aSopenharmony_ci ;; 4198cabdff1aSopenharmony_ci --fatal-warnings) enable fatal_warnings 4199cabdff1aSopenharmony_ci ;; 4200cabdff1aSopenharmony_ci --libfuzzer=*) 4201cabdff1aSopenharmony_ci libfuzzer_path="$optval" 4202cabdff1aSopenharmony_ci ;; 4203cabdff1aSopenharmony_ci *) 4204cabdff1aSopenharmony_ci optname="${opt%%=*}" 4205cabdff1aSopenharmony_ci optname="${optname#--}" 4206cabdff1aSopenharmony_ci optname=$(echo "$optname" | sed 's/-/_/g') 4207cabdff1aSopenharmony_ci if is_in $optname $CMDLINE_SET; then 4208cabdff1aSopenharmony_ci eval $optname='$optval' 4209cabdff1aSopenharmony_ci elif is_in $optname $CMDLINE_APPEND; then 4210cabdff1aSopenharmony_ci append $optname "$optval" 4211cabdff1aSopenharmony_ci else 4212cabdff1aSopenharmony_ci die_unknown $opt 4213cabdff1aSopenharmony_ci fi 4214cabdff1aSopenharmony_ci ;; 4215cabdff1aSopenharmony_ci esac 4216cabdff1aSopenharmony_cidone 4217cabdff1aSopenharmony_ci 4218cabdff1aSopenharmony_cifor e in $env; do 4219cabdff1aSopenharmony_ci eval "export $e" 4220cabdff1aSopenharmony_cidone 4221cabdff1aSopenharmony_ci 4222cabdff1aSopenharmony_ciif disabled autodetect; then 4223cabdff1aSopenharmony_ci 4224cabdff1aSopenharmony_ci # Unless iconv is explicitely disabled by the user, we still want to probe 4225cabdff1aSopenharmony_ci # for the iconv from the libc. 4226cabdff1aSopenharmony_ci disabled iconv || enable libc_iconv 4227cabdff1aSopenharmony_ci 4228cabdff1aSopenharmony_ci disable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST 4229cabdff1aSopenharmony_ci disable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST 4230cabdff1aSopenharmony_cifi 4231cabdff1aSopenharmony_ci# Mark specifically enabled, but normally autodetected libraries as requested. 4232cabdff1aSopenharmony_cifor lib in $AUTODETECT_LIBS; do 4233cabdff1aSopenharmony_ci enabled $lib && request $lib 4234cabdff1aSopenharmony_cidone 4235cabdff1aSopenharmony_ci#TODO: switch to $AUTODETECT_LIBS when $THREADS_LIST is supported the same way 4236cabdff1aSopenharmony_cienable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST 4237cabdff1aSopenharmony_cienable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST 4238cabdff1aSopenharmony_ci 4239cabdff1aSopenharmony_cidisabled logging && logfile=/dev/null 4240cabdff1aSopenharmony_ci 4241cabdff1aSopenharmony_ci# command line configuration sanity checks 4242cabdff1aSopenharmony_ci 4243cabdff1aSopenharmony_ci# we need to build at least one lib type 4244cabdff1aSopenharmony_ciif ! enabled_any static shared; then 4245cabdff1aSopenharmony_ci cat <<EOF 4246cabdff1aSopenharmony_ciAt least one library type must be built. 4247cabdff1aSopenharmony_ciSpecify --enable-static to build the static libraries or --enable-shared to 4248cabdff1aSopenharmony_cibuild the shared libraries as well. To only build the shared libraries specify 4249cabdff1aSopenharmony_ci--disable-static in addition to --enable-shared. 4250cabdff1aSopenharmony_ciEOF 4251cabdff1aSopenharmony_ci exit 1 4252cabdff1aSopenharmony_cifi 4253cabdff1aSopenharmony_ci 4254cabdff1aSopenharmony_cidie_license_disabled() { 4255cabdff1aSopenharmony_ci enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; } 4256cabdff1aSopenharmony_ci} 4257cabdff1aSopenharmony_ci 4258cabdff1aSopenharmony_cidie_license_disabled_gpl() { 4259cabdff1aSopenharmony_ci enabled $1 || { enabled $v && die "$v is incompatible with the gpl and --enable-$1 is not specified."; } 4260cabdff1aSopenharmony_ci} 4261cabdff1aSopenharmony_ci 4262cabdff1aSopenharmony_cimap "die_license_disabled gpl" $EXTERNAL_LIBRARY_GPL_LIST $EXTERNAL_LIBRARY_GPLV3_LIST 4263cabdff1aSopenharmony_cimap "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST $EXTERNAL_LIBRARY_GPLV3_LIST 4264cabdff1aSopenharmony_ci 4265cabdff1aSopenharmony_cienabled gpl && map "die_license_disabled_gpl nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST 4266cabdff1aSopenharmony_cimap "die_license_disabled nonfree" $HWACCEL_LIBRARY_NONFREE_LIST 4267cabdff1aSopenharmony_ci 4268cabdff1aSopenharmony_cienabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; } 4269cabdff1aSopenharmony_ci 4270cabdff1aSopenharmony_ciif enabled nonfree; then 4271cabdff1aSopenharmony_ci license="nonfree and unredistributable" 4272cabdff1aSopenharmony_cielif enabled gplv3; then 4273cabdff1aSopenharmony_ci license="GPL version 3 or later" 4274cabdff1aSopenharmony_cielif enabled lgplv3; then 4275cabdff1aSopenharmony_ci license="LGPL version 3 or later" 4276cabdff1aSopenharmony_cielif enabled gpl; then 4277cabdff1aSopenharmony_ci license="GPL version 2 or later" 4278cabdff1aSopenharmony_cielse 4279cabdff1aSopenharmony_ci license="LGPL version 2.1 or later" 4280cabdff1aSopenharmony_cifi 4281cabdff1aSopenharmony_ci 4282cabdff1aSopenharmony_cienabled_all gnutls openssl && 4283cabdff1aSopenharmony_ci die "GnuTLS and OpenSSL must not be enabled at the same time." 4284cabdff1aSopenharmony_ci 4285cabdff1aSopenharmony_cienabled_all gnutls mbedtls && 4286cabdff1aSopenharmony_ci die "GnuTLS and mbedTLS must not be enabled at the same time." 4287cabdff1aSopenharmony_ci 4288cabdff1aSopenharmony_cienabled_all openssl mbedtls && 4289cabdff1aSopenharmony_ci die "OpenSSL and mbedTLS must not be enabled at the same time." 4290cabdff1aSopenharmony_ci 4291cabdff1aSopenharmony_ci# Disable all the library-specific components if the library itself 4292cabdff1aSopenharmony_ci# is disabled, see AVCODEC_LIST and following _LIST variables. 4293cabdff1aSopenharmony_ci 4294cabdff1aSopenharmony_cidisable_components(){ 4295cabdff1aSopenharmony_ci disabled ${1} && disable $( 4296cabdff1aSopenharmony_ci eval components="\$$(toupper ${1})_COMPONENTS" 4297cabdff1aSopenharmony_ci map 'eval echo \${$(toupper ${v%s})_LIST}' $components 4298cabdff1aSopenharmony_ci ) 4299cabdff1aSopenharmony_ci} 4300cabdff1aSopenharmony_ci 4301cabdff1aSopenharmony_cimap 'disable_components $v' $LIBRARY_LIST 4302cabdff1aSopenharmony_ci 4303cabdff1aSopenharmony_ciecho "# $0 $FFMPEG_CONFIGURATION" > $logfile 4304cabdff1aSopenharmony_ciset >> $logfile 4305cabdff1aSopenharmony_ci 4306cabdff1aSopenharmony_citest -n "$valgrind" && toolchain="valgrind-memcheck" 4307cabdff1aSopenharmony_ci 4308cabdff1aSopenharmony_cienabled ossfuzz && ! echo $CFLAGS | grep -q -- "-fsanitize=" && ! echo $CFLAGS | grep -q -- "-fcoverage-mapping" &&{ 4309cabdff1aSopenharmony_ci add_cflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp -fno-omit-frame-pointer 4310cabdff1aSopenharmony_ci add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp 4311cabdff1aSopenharmony_ci} 4312cabdff1aSopenharmony_ci 4313cabdff1aSopenharmony_cicase "$toolchain" in 4314cabdff1aSopenharmony_ci *-asan) 4315cabdff1aSopenharmony_ci cc_default="${toolchain%-asan}" 4316cabdff1aSopenharmony_ci add_cflags -fsanitize=address 4317cabdff1aSopenharmony_ci add_ldflags -fsanitize=address 4318cabdff1aSopenharmony_ci ;; 4319cabdff1aSopenharmony_ci *-msan) 4320cabdff1aSopenharmony_ci cc_default="${toolchain%-msan}" 4321cabdff1aSopenharmony_ci add_cflags -fsanitize=memory -fsanitize-memory-track-origins 4322cabdff1aSopenharmony_ci add_ldflags -fsanitize=memory 4323cabdff1aSopenharmony_ci ;; 4324cabdff1aSopenharmony_ci *-tsan) 4325cabdff1aSopenharmony_ci cc_default="${toolchain%-tsan}" 4326cabdff1aSopenharmony_ci add_cflags -fsanitize=thread 4327cabdff1aSopenharmony_ci add_ldflags -fsanitize=thread 4328cabdff1aSopenharmony_ci case "$toolchain" in 4329cabdff1aSopenharmony_ci gcc-tsan) 4330cabdff1aSopenharmony_ci add_cflags -fPIC 4331cabdff1aSopenharmony_ci add_ldflags -fPIC 4332cabdff1aSopenharmony_ci ;; 4333cabdff1aSopenharmony_ci esac 4334cabdff1aSopenharmony_ci ;; 4335cabdff1aSopenharmony_ci *-usan) 4336cabdff1aSopenharmony_ci cc_default="${toolchain%-usan}" 4337cabdff1aSopenharmony_ci add_cflags -fsanitize=undefined 4338cabdff1aSopenharmony_ci add_ldflags -fsanitize=undefined 4339cabdff1aSopenharmony_ci ;; 4340cabdff1aSopenharmony_ci valgrind-*) 4341cabdff1aSopenharmony_ci target_exec_default="valgrind" 4342cabdff1aSopenharmony_ci case "$toolchain" in 4343cabdff1aSopenharmony_ci valgrind-massif) 4344cabdff1aSopenharmony_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" 4345cabdff1aSopenharmony_ci ;; 4346cabdff1aSopenharmony_ci valgrind-memcheck) 4347cabdff1aSopenharmony_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" 4348cabdff1aSopenharmony_ci ;; 4349cabdff1aSopenharmony_ci esac 4350cabdff1aSopenharmony_ci ;; 4351cabdff1aSopenharmony_ci msvc) 4352cabdff1aSopenharmony_ci # Check whether the current MSVC version needs the C99 converter. 4353cabdff1aSopenharmony_ci # From MSVC 2013 (compiler major version 18) onwards, it does actually 4354cabdff1aSopenharmony_ci # support enough of C99 to build ffmpeg. Default to the new 4355cabdff1aSopenharmony_ci # behaviour if the regexp was unable to match anything, since this 4356cabdff1aSopenharmony_ci # successfully parses the version number of existing supported 4357cabdff1aSopenharmony_ci # versions that require the converter (MSVC 2010 and 2012). 4358cabdff1aSopenharmony_ci cl_major_ver=$(cl.exe 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p') 4359cabdff1aSopenharmony_ci if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then 4360cabdff1aSopenharmony_ci cc_default="cl.exe" 4361cabdff1aSopenharmony_ci cxx_default="cl.exe" 4362cabdff1aSopenharmony_ci else 4363cabdff1aSopenharmony_ci die "Unsupported MSVC version (2013 or newer required)" 4364cabdff1aSopenharmony_ci fi 4365cabdff1aSopenharmony_ci ld_default="$source_path/compat/windows/mslink" 4366cabdff1aSopenharmony_ci nm_default="dumpbin.exe -symbols" 4367cabdff1aSopenharmony_ci ar_default="lib.exe" 4368cabdff1aSopenharmony_ci case "${arch:-$arch_default}" in 4369cabdff1aSopenharmony_ci aarch64|arm64) 4370cabdff1aSopenharmony_ci as_default="armasm64.exe" 4371cabdff1aSopenharmony_ci ;; 4372cabdff1aSopenharmony_ci arm*) 4373cabdff1aSopenharmony_ci as_default="armasm.exe" 4374cabdff1aSopenharmony_ci ;; 4375cabdff1aSopenharmony_ci esac 4376cabdff1aSopenharmony_ci target_os_default="win32" 4377cabdff1aSopenharmony_ci # Use a relative path for TMPDIR. This makes sure all the 4378cabdff1aSopenharmony_ci # ffconf temp files are written with a relative path, avoiding 4379cabdff1aSopenharmony_ci # issues with msys/win32 path conversion for MSVC parameters 4380cabdff1aSopenharmony_ci # such as -Fo<file> or -out:<file>. 4381cabdff1aSopenharmony_ci TMPDIR=. 4382cabdff1aSopenharmony_ci ;; 4383cabdff1aSopenharmony_ci icl) 4384cabdff1aSopenharmony_ci cc_default="icl" 4385cabdff1aSopenharmony_ci ld_default="xilink" 4386cabdff1aSopenharmony_ci nm_default="dumpbin -symbols" 4387cabdff1aSopenharmony_ci ar_default="xilib" 4388cabdff1aSopenharmony_ci target_os_default="win32" 4389cabdff1aSopenharmony_ci TMPDIR=. 4390cabdff1aSopenharmony_ci ;; 4391cabdff1aSopenharmony_ci gcov) 4392cabdff1aSopenharmony_ci add_cflags -fprofile-arcs -ftest-coverage 4393cabdff1aSopenharmony_ci add_ldflags -fprofile-arcs -ftest-coverage 4394cabdff1aSopenharmony_ci ;; 4395cabdff1aSopenharmony_ci llvm-cov) 4396cabdff1aSopenharmony_ci add_cflags -fprofile-arcs -ftest-coverage 4397cabdff1aSopenharmony_ci add_ldflags --coverage 4398cabdff1aSopenharmony_ci ;; 4399cabdff1aSopenharmony_ci hardened) 4400cabdff1aSopenharmony_ci add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 4401cabdff1aSopenharmony_ci add_cflags -fno-strict-overflow -fstack-protector-all 4402cabdff1aSopenharmony_ci add_ldflags -Wl,-z,relro -Wl,-z,now 4403cabdff1aSopenharmony_ci add_cflags -fPIE 4404cabdff1aSopenharmony_ci add_ldexeflags -fPIE -pie 4405cabdff1aSopenharmony_ci ;; 4406cabdff1aSopenharmony_ci ?*) 4407cabdff1aSopenharmony_ci die "Unknown toolchain $toolchain" 4408cabdff1aSopenharmony_ci ;; 4409cabdff1aSopenharmony_ciesac 4410cabdff1aSopenharmony_ci 4411cabdff1aSopenharmony_ciif test -n "$cross_prefix"; then 4412cabdff1aSopenharmony_ci test -n "$arch" && test -n "$target_os" || 4413cabdff1aSopenharmony_ci die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling" 4414cabdff1aSopenharmony_ci enable cross_compile 4415cabdff1aSopenharmony_cifi 4416cabdff1aSopenharmony_ci 4417cabdff1aSopenharmony_ciset_default target_os 4418cabdff1aSopenharmony_ciif test "$target_os" = android; then 4419cabdff1aSopenharmony_ci cc_default="clang" 4420cabdff1aSopenharmony_cifi 4421cabdff1aSopenharmony_ci 4422cabdff1aSopenharmony_ciar_default="${cross_prefix}${ar_default}" 4423cabdff1aSopenharmony_cicc_default="${cross_prefix}${cc_default}" 4424cabdff1aSopenharmony_cicxx_default="${cross_prefix}${cxx_default}" 4425cabdff1aSopenharmony_cinm_default="${cross_prefix}${nm_default}" 4426cabdff1aSopenharmony_cipkg_config_default="${cross_prefix}${pkg_config_default}" 4427cabdff1aSopenharmony_ciranlib_default="${cross_prefix}${ranlib_default}" 4428cabdff1aSopenharmony_cistrip_default="${cross_prefix}${strip_default}" 4429cabdff1aSopenharmony_ciwindres_default="${cross_prefix}${windres_default}" 4430cabdff1aSopenharmony_ci 4431cabdff1aSopenharmony_cisysinclude_default="${sysroot}/usr/include" 4432cabdff1aSopenharmony_ci 4433cabdff1aSopenharmony_ciif enabled cuda_sdk; then 4434cabdff1aSopenharmony_ci warn "Option --enable-cuda-sdk is deprecated. Use --enable-cuda-nvcc instead." 4435cabdff1aSopenharmony_ci enable cuda_nvcc 4436cabdff1aSopenharmony_cifi 4437cabdff1aSopenharmony_ci 4438cabdff1aSopenharmony_ciif enabled cuda_nvcc; then 4439cabdff1aSopenharmony_ci nvcc_default="nvcc" 4440cabdff1aSopenharmony_ci nvccflags_default="-gencode arch=compute_30,code=sm_30 -O2" 4441cabdff1aSopenharmony_cielse 4442cabdff1aSopenharmony_ci nvcc_default="clang" 4443cabdff1aSopenharmony_ci nvccflags_default="--cuda-gpu-arch=sm_30 -O2" 4444cabdff1aSopenharmony_ci NVCC_C="" 4445cabdff1aSopenharmony_cifi 4446cabdff1aSopenharmony_ci 4447cabdff1aSopenharmony_ciset_default nvcc 4448cabdff1aSopenharmony_ci 4449cabdff1aSopenharmony_ciif enabled cuda_nvcc; then 4450cabdff1aSopenharmony_ci if $nvcc $nvccflags_default 2>&1 | grep -qi unsupported; then 4451cabdff1aSopenharmony_ci nvccflags_default="-gencode arch=compute_60,code=sm_60 -O2" 4452cabdff1aSopenharmony_ci fi 4453cabdff1aSopenharmony_cifi 4454cabdff1aSopenharmony_ci 4455cabdff1aSopenharmony_ciset_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \ 4456cabdff1aSopenharmony_ci target_exec x86asmexe metalcc metallib 4457cabdff1aSopenharmony_cienabled cross_compile || host_cc_default=$cc 4458cabdff1aSopenharmony_ciset_default host_cc 4459cabdff1aSopenharmony_ci 4460cabdff1aSopenharmony_ciif ${ranlib} 2>&1 | grep -q "\-D "; then 4461cabdff1aSopenharmony_ci ranlib="${ranlib} -D" 4462cabdff1aSopenharmony_cifi 4463cabdff1aSopenharmony_ci 4464cabdff1aSopenharmony_cipkg_config_fail_message="" 4465cabdff1aSopenharmony_ciif ! $pkg_config --version >/dev/null 2>&1; then 4466cabdff1aSopenharmony_ci warn "$pkg_config not found, library detection may fail." 4467cabdff1aSopenharmony_ci pkg_config=false 4468cabdff1aSopenharmony_cielif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags; then 4469cabdff1aSopenharmony_ci pkg_config_fail_message=" 4470cabdff1aSopenharmony_ciNote: When building a static binary, add --pkg-config-flags=\"--static\"." 4471cabdff1aSopenharmony_cifi 4472cabdff1aSopenharmony_ci 4473cabdff1aSopenharmony_ciif test $doxygen != $doxygen_default && \ 4474cabdff1aSopenharmony_ci ! $doxygen --version >/dev/null 2>&1; then 4475cabdff1aSopenharmony_ci warn "Specified doxygen \"$doxygen\" not found, API documentation will fail to build." 4476cabdff1aSopenharmony_cifi 4477cabdff1aSopenharmony_ci 4478cabdff1aSopenharmony_ciexesuf() { 4479cabdff1aSopenharmony_ci case $1 in 4480cabdff1aSopenharmony_ci mingw32*|mingw64*|msys*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;; 4481cabdff1aSopenharmony_ci esac 4482cabdff1aSopenharmony_ci} 4483cabdff1aSopenharmony_ci 4484cabdff1aSopenharmony_ciEXESUF=$(exesuf $target_os) 4485cabdff1aSopenharmony_ciHOSTEXESUF=$(exesuf $host_os) 4486cabdff1aSopenharmony_ci 4487cabdff1aSopenharmony_ci# set temporary file name 4488cabdff1aSopenharmony_ci: ${TMPDIR:=$TEMPDIR} 4489cabdff1aSopenharmony_ci: ${TMPDIR:=$TMP} 4490cabdff1aSopenharmony_ci: ${TMPDIR:=/tmp} 4491cabdff1aSopenharmony_ci 4492cabdff1aSopenharmony_ciif [ -n "$tempprefix" ] ; then 4493cabdff1aSopenharmony_ci mktemp(){ 4494cabdff1aSopenharmony_ci tmpname="$tempprefix.${HOSTNAME}.${UID}" 4495cabdff1aSopenharmony_ci echo "$tmpname" 4496cabdff1aSopenharmony_ci mkdir "$tmpname" 4497cabdff1aSopenharmony_ci } 4498cabdff1aSopenharmony_cielif ! test_cmd mktemp -u XXXXXX; then 4499cabdff1aSopenharmony_ci # simple replacement for missing mktemp 4500cabdff1aSopenharmony_ci # NOT SAFE FOR GENERAL USE 4501cabdff1aSopenharmony_ci mktemp(){ 4502cabdff1aSopenharmony_ci tmpname="${2%%XXX*}.${HOSTNAME}.${UID}.$$" 4503cabdff1aSopenharmony_ci echo "$tmpname" 4504cabdff1aSopenharmony_ci mkdir "$tmpname" 4505cabdff1aSopenharmony_ci } 4506cabdff1aSopenharmony_cifi 4507cabdff1aSopenharmony_ci 4508cabdff1aSopenharmony_ciFFTMPDIR=$(mktemp -d "${TMPDIR}/ffconf.XXXXXXXX" 2> /dev/null) || 4509cabdff1aSopenharmony_ci die "Unable to create temporary directory in $TMPDIR." 4510cabdff1aSopenharmony_ci 4511cabdff1aSopenharmony_citmpfile(){ 4512cabdff1aSopenharmony_ci tmp="${FFTMPDIR}/test"$2 4513cabdff1aSopenharmony_ci (set -C; exec > $tmp) 2> /dev/null || 4514cabdff1aSopenharmony_ci die "Unable to create temporary file in $FFTMPDIR." 4515cabdff1aSopenharmony_ci eval $1=$tmp 4516cabdff1aSopenharmony_ci} 4517cabdff1aSopenharmony_ci 4518cabdff1aSopenharmony_citrap 'rm -rf -- "$FFTMPDIR"' EXIT 4519cabdff1aSopenharmony_citrap 'exit 2' INT 4520cabdff1aSopenharmony_ci 4521cabdff1aSopenharmony_citmpfile TMPASM .asm 4522cabdff1aSopenharmony_citmpfile TMPC .c 4523cabdff1aSopenharmony_citmpfile TMPCPP .cpp 4524cabdff1aSopenharmony_citmpfile TMPE $EXESUF 4525cabdff1aSopenharmony_citmpfile TMPH .h 4526cabdff1aSopenharmony_citmpfile TMPM .m 4527cabdff1aSopenharmony_citmpfile TMPCU .cu 4528cabdff1aSopenharmony_citmpfile TMPO .o 4529cabdff1aSopenharmony_citmpfile TMPS .S 4530cabdff1aSopenharmony_citmpfile TMPSH .sh 4531cabdff1aSopenharmony_citmpfile TMPV .ver 4532cabdff1aSopenharmony_ci 4533cabdff1aSopenharmony_ciunset -f mktemp 4534cabdff1aSopenharmony_ci 4535cabdff1aSopenharmony_cichmod +x $TMPE 4536cabdff1aSopenharmony_ci 4537cabdff1aSopenharmony_ci# make sure we can execute files in $TMPDIR 4538cabdff1aSopenharmony_cicat > $TMPSH 2>> $logfile <<EOF 4539cabdff1aSopenharmony_ci#! /bin/sh 4540cabdff1aSopenharmony_ciEOF 4541cabdff1aSopenharmony_cichmod +x $TMPSH >> $logfile 2>&1 4542cabdff1aSopenharmony_ciif ! $TMPSH >> $logfile 2>&1; then 4543cabdff1aSopenharmony_ci cat <<EOF 4544cabdff1aSopenharmony_ciUnable to create and execute files in $TMPDIR. Set the TMPDIR environment 4545cabdff1aSopenharmony_civariable to another directory and make sure that it is not mounted noexec. 4546cabdff1aSopenharmony_ciEOF 4547cabdff1aSopenharmony_ci die "Sanity test failed." 4548cabdff1aSopenharmony_cifi 4549cabdff1aSopenharmony_ci 4550cabdff1aSopenharmony_ciarmasm_flags(){ 4551cabdff1aSopenharmony_ci for flag; do 4552cabdff1aSopenharmony_ci case $flag in 4553cabdff1aSopenharmony_ci # Filter out MSVC cl.exe options from cflags that shouldn't 4554cabdff1aSopenharmony_ci # be passed to gas-preprocessor 4555cabdff1aSopenharmony_ci -M[TD]*) ;; 4556cabdff1aSopenharmony_ci *) echo $flag ;; 4557cabdff1aSopenharmony_ci esac 4558cabdff1aSopenharmony_ci done 4559cabdff1aSopenharmony_ci} 4560cabdff1aSopenharmony_ci 4561cabdff1aSopenharmony_cicparser_flags(){ 4562cabdff1aSopenharmony_ci for flag; do 4563cabdff1aSopenharmony_ci case $flag in 4564cabdff1aSopenharmony_ci -Wno-switch) echo -Wno-switch-enum ;; 4565cabdff1aSopenharmony_ci -Wno-format-zero-length) ;; 4566cabdff1aSopenharmony_ci -Wdisabled-optimization) ;; 4567cabdff1aSopenharmony_ci -Wno-pointer-sign) echo -Wno-other ;; 4568cabdff1aSopenharmony_ci *) echo $flag ;; 4569cabdff1aSopenharmony_ci esac 4570cabdff1aSopenharmony_ci done 4571cabdff1aSopenharmony_ci} 4572cabdff1aSopenharmony_ci 4573cabdff1aSopenharmony_cimsvc_common_flags(){ 4574cabdff1aSopenharmony_ci for flag; do 4575cabdff1aSopenharmony_ci case $flag in 4576cabdff1aSopenharmony_ci # In addition to specifying certain flags under the compiler 4577cabdff1aSopenharmony_ci # specific filters, they must be specified here as well or else the 4578cabdff1aSopenharmony_ci # generic catch all at the bottom will print the original flag. 4579cabdff1aSopenharmony_ci -Wall) ;; 4580cabdff1aSopenharmony_ci -Wextra) ;; 4581cabdff1aSopenharmony_ci -std=c*) ;; 4582cabdff1aSopenharmony_ci # Common flags 4583cabdff1aSopenharmony_ci -fomit-frame-pointer) ;; 4584cabdff1aSopenharmony_ci -g) echo -Z7 ;; 4585cabdff1aSopenharmony_ci -fno-math-errno) ;; 4586cabdff1aSopenharmony_ci -fno-common) ;; 4587cabdff1aSopenharmony_ci -fno-signed-zeros) ;; 4588cabdff1aSopenharmony_ci -fPIC) ;; 4589cabdff1aSopenharmony_ci -mthumb) ;; 4590cabdff1aSopenharmony_ci -march=*) ;; 4591cabdff1aSopenharmony_ci -lz) echo zlib.lib ;; 4592cabdff1aSopenharmony_ci -lx264) echo libx264.lib ;; 4593cabdff1aSopenharmony_ci -lstdc++) ;; 4594cabdff1aSopenharmony_ci -l*) echo ${flag#-l}.lib ;; 4595cabdff1aSopenharmony_ci -LARGEADDRESSAWARE) echo $flag ;; 4596cabdff1aSopenharmony_ci -L*) echo -libpath:${flag#-L} ;; 4597cabdff1aSopenharmony_ci -Wl,*) ;; 4598cabdff1aSopenharmony_ci *) echo $flag ;; 4599cabdff1aSopenharmony_ci esac 4600cabdff1aSopenharmony_ci done 4601cabdff1aSopenharmony_ci} 4602cabdff1aSopenharmony_ci 4603cabdff1aSopenharmony_cimsvc_flags(){ 4604cabdff1aSopenharmony_ci msvc_common_flags "$@" 4605cabdff1aSopenharmony_ci for flag; do 4606cabdff1aSopenharmony_ci case $flag in 4607cabdff1aSopenharmony_ci -Wall) echo -W3 -wd4018 -wd4146 -wd4244 -wd4305 \ 4608cabdff1aSopenharmony_ci -wd4554 ;; 4609cabdff1aSopenharmony_ci -Wextra) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \ 4610cabdff1aSopenharmony_ci -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \ 4611cabdff1aSopenharmony_ci -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \ 4612cabdff1aSopenharmony_ci -wd4307 \ 4613cabdff1aSopenharmony_ci -wd4273 -wd4554 -wd4701 -wd4703 ;; 4614cabdff1aSopenharmony_ci esac 4615cabdff1aSopenharmony_ci done 4616cabdff1aSopenharmony_ci} 4617cabdff1aSopenharmony_ci 4618cabdff1aSopenharmony_ciicl_flags(){ 4619cabdff1aSopenharmony_ci msvc_common_flags "$@" 4620cabdff1aSopenharmony_ci for flag; do 4621cabdff1aSopenharmony_ci case $flag in 4622cabdff1aSopenharmony_ci # Despite what Intel's documentation says -Wall, which is supported 4623cabdff1aSopenharmony_ci # on Windows, does enable remarks so disable them here. 4624cabdff1aSopenharmony_ci -Wall) echo $flag -Qdiag-disable:remark ;; 4625cabdff1aSopenharmony_ci -std=c99) echo -Qstd=c99 ;; 4626cabdff1aSopenharmony_ci -flto) echo -ipo ;; 4627cabdff1aSopenharmony_ci esac 4628cabdff1aSopenharmony_ci done 4629cabdff1aSopenharmony_ci} 4630cabdff1aSopenharmony_ci 4631cabdff1aSopenharmony_ciicc_flags(){ 4632cabdff1aSopenharmony_ci for flag; do 4633cabdff1aSopenharmony_ci case $flag in 4634cabdff1aSopenharmony_ci -flto) echo -ipo ;; 4635cabdff1aSopenharmony_ci *) echo $flag ;; 4636cabdff1aSopenharmony_ci esac 4637cabdff1aSopenharmony_ci done 4638cabdff1aSopenharmony_ci} 4639cabdff1aSopenharmony_ci 4640cabdff1aSopenharmony_cisuncc_flags(){ 4641cabdff1aSopenharmony_ci for flag; do 4642cabdff1aSopenharmony_ci case $flag in 4643cabdff1aSopenharmony_ci -march=*|-mcpu=*) 4644cabdff1aSopenharmony_ci case "${flag#*=}" in 4645cabdff1aSopenharmony_ci native) echo -xtarget=native ;; 4646cabdff1aSopenharmony_ci v9|niagara) echo -xarch=sparc ;; 4647cabdff1aSopenharmony_ci ultrasparc) echo -xarch=sparcvis ;; 4648cabdff1aSopenharmony_ci ultrasparc3|niagara2) echo -xarch=sparcvis2 ;; 4649cabdff1aSopenharmony_ci i586|pentium) echo -xchip=pentium ;; 4650cabdff1aSopenharmony_ci i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;; 4651cabdff1aSopenharmony_ci pentium3*|c3-2) echo -xtarget=pentium3 ;; 4652cabdff1aSopenharmony_ci pentium-m) echo -xarch=sse2 -xchip=pentium3 ;; 4653cabdff1aSopenharmony_ci pentium4*) echo -xtarget=pentium4 ;; 4654cabdff1aSopenharmony_ci prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;; 4655cabdff1aSopenharmony_ci *-sse3) echo -xarch=sse3 ;; 4656cabdff1aSopenharmony_ci core2) echo -xarch=ssse3 -xchip=core2 ;; 4657cabdff1aSopenharmony_ci bonnell) echo -xarch=ssse3 ;; 4658cabdff1aSopenharmony_ci corei7|nehalem) echo -xtarget=nehalem ;; 4659cabdff1aSopenharmony_ci westmere) echo -xtarget=westmere ;; 4660cabdff1aSopenharmony_ci silvermont) echo -xarch=sse4_2 ;; 4661cabdff1aSopenharmony_ci corei7-avx|sandybridge) echo -xtarget=sandybridge ;; 4662cabdff1aSopenharmony_ci core-avx*|ivybridge|haswell|broadwell|skylake*|knl) 4663cabdff1aSopenharmony_ci echo -xarch=avx ;; 4664cabdff1aSopenharmony_ci amdfam10|barcelona) echo -xtarget=barcelona ;; 4665cabdff1aSopenharmony_ci btver1) echo -xarch=amdsse4a ;; 4666cabdff1aSopenharmony_ci btver2|bdver*|znver*) echo -xarch=avx ;; 4667cabdff1aSopenharmony_ci athlon-4|athlon-[mx]p) echo -xarch=ssea ;; 4668cabdff1aSopenharmony_ci k8|opteron|athlon64|athlon-fx) 4669cabdff1aSopenharmony_ci echo -xarch=sse2a ;; 4670cabdff1aSopenharmony_ci athlon*) echo -xarch=pentium_proa ;; 4671cabdff1aSopenharmony_ci esac 4672cabdff1aSopenharmony_ci ;; 4673cabdff1aSopenharmony_ci -std=c99) echo -xc99 ;; 4674cabdff1aSopenharmony_ci -fomit-frame-pointer) echo -xregs=frameptr ;; 4675cabdff1aSopenharmony_ci -fPIC) echo -KPIC -xcode=pic32 ;; 4676cabdff1aSopenharmony_ci -W*,*) echo $flag ;; 4677cabdff1aSopenharmony_ci -f*-*|-W*|-mimpure-text) ;; 4678cabdff1aSopenharmony_ci -shared) echo -G ;; 4679cabdff1aSopenharmony_ci *) echo $flag ;; 4680cabdff1aSopenharmony_ci esac 4681cabdff1aSopenharmony_ci done 4682cabdff1aSopenharmony_ci} 4683cabdff1aSopenharmony_ci 4684cabdff1aSopenharmony_ciprobe_cc(){ 4685cabdff1aSopenharmony_ci pfx=$1 4686cabdff1aSopenharmony_ci _cc=$2 4687cabdff1aSopenharmony_ci first=$3 4688cabdff1aSopenharmony_ci 4689cabdff1aSopenharmony_ci unset _type _ident _cc_c _cc_e _cc_o _flags _cflags 4690cabdff1aSopenharmony_ci unset _ld_o _ldflags _ld_lib _ld_path 4691cabdff1aSopenharmony_ci unset _depflags _DEPCMD _DEPFLAGS 4692cabdff1aSopenharmony_ci _flags_filter=echo 4693cabdff1aSopenharmony_ci 4694cabdff1aSopenharmony_ci if $_cc --version 2>&1 | grep -q '^GNU assembler'; then 4695cabdff1aSopenharmony_ci true # no-op to avoid reading stdin in following checks 4696cabdff1aSopenharmony_ci elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then 4697cabdff1aSopenharmony_ci _type=llvm_gcc 4698cabdff1aSopenharmony_ci gcc_extra_ver=$(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)') 4699cabdff1aSopenharmony_ci _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver" 4700cabdff1aSopenharmony_ci _depflags='-MMD -MF $(@:.o=.d) -MT $@' 4701cabdff1aSopenharmony_ci _cflags_speed='-O3' 4702cabdff1aSopenharmony_ci _cflags_size='-Os' 4703cabdff1aSopenharmony_ci elif $_cc -v 2>&1 | grep -qi ^gcc; then 4704cabdff1aSopenharmony_ci _type=gcc 4705cabdff1aSopenharmony_ci gcc_version=$($_cc --version | head -n1) 4706cabdff1aSopenharmony_ci gcc_basever=$($_cc -dumpversion) 4707cabdff1aSopenharmony_ci gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)') 4708cabdff1aSopenharmony_ci gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)") 4709cabdff1aSopenharmony_ci _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver") 4710cabdff1aSopenharmony_ci case $gcc_basever in 4711cabdff1aSopenharmony_ci 2) ;; 4712cabdff1aSopenharmony_ci 2.*) ;; 4713cabdff1aSopenharmony_ci *) _depflags='-MMD -MF $(@:.o=.d) -MT $@' ;; 4714cabdff1aSopenharmony_ci esac 4715cabdff1aSopenharmony_ci if [ "$first" = true ]; then 4716cabdff1aSopenharmony_ci case $gcc_basever in 4717cabdff1aSopenharmony_ci 4.2*) 4718cabdff1aSopenharmony_ci warn "gcc 4.2 is outdated and may miscompile FFmpeg. Please use a newer compiler." ;; 4719cabdff1aSopenharmony_ci esac 4720cabdff1aSopenharmony_ci fi 4721cabdff1aSopenharmony_ci _cflags_speed='-O3' 4722cabdff1aSopenharmony_ci _cflags_size='-Os' 4723cabdff1aSopenharmony_ci elif $_cc --version 2>/dev/null | grep -q ^icc; then 4724cabdff1aSopenharmony_ci _type=icc 4725cabdff1aSopenharmony_ci _ident=$($_cc --version | head -n1) 4726cabdff1aSopenharmony_ci _depflags='-MMD' 4727cabdff1aSopenharmony_ci _cflags_speed='-O3' 4728cabdff1aSopenharmony_ci _cflags_size='-Os' 4729cabdff1aSopenharmony_ci _cflags_noopt='-O1' 4730cabdff1aSopenharmony_ci _flags_filter=icc_flags 4731cabdff1aSopenharmony_ci elif $_cc -v 2>&1 | grep -q xlc; then 4732cabdff1aSopenharmony_ci _type=xlc 4733cabdff1aSopenharmony_ci _ident=$($_cc -qversion 2>/dev/null | head -n1) 4734cabdff1aSopenharmony_ci _cflags_speed='-O5' 4735cabdff1aSopenharmony_ci _cflags_size='-O5 -qcompact' 4736cabdff1aSopenharmony_ci elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then 4737cabdff1aSopenharmony_ci test -d "$sysroot" || die "No valid sysroot specified." 4738cabdff1aSopenharmony_ci _type=armcc 4739cabdff1aSopenharmony_ci _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //') 4740cabdff1aSopenharmony_ci armcc_conf="$PWD/armcc.conf" 4741cabdff1aSopenharmony_ci $_cc --arm_linux_configure \ 4742cabdff1aSopenharmony_ci --arm_linux_config_file="$armcc_conf" \ 4743cabdff1aSopenharmony_ci --configure_sysroot="$sysroot" \ 4744cabdff1aSopenharmony_ci --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 || 4745cabdff1aSopenharmony_ci die "Error creating armcc configuration file." 4746cabdff1aSopenharmony_ci $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc 4747cabdff1aSopenharmony_ci _flags="--arm_linux_config_file=$armcc_conf --translate_gcc" 4748cabdff1aSopenharmony_ci as_default="${cross_prefix}gcc" 4749cabdff1aSopenharmony_ci _depflags='-MMD' 4750cabdff1aSopenharmony_ci _cflags_speed='-O3' 4751cabdff1aSopenharmony_ci _cflags_size='-Os' 4752cabdff1aSopenharmony_ci elif $_cc -v 2>&1 | grep -q clang && ! $_cc -? > /dev/null 2>&1; then 4753cabdff1aSopenharmony_ci _type=clang 4754cabdff1aSopenharmony_ci _ident=$($_cc --version 2>/dev/null | head -n1) 4755cabdff1aSopenharmony_ci _depflags='-MMD -MF $(@:.o=.d) -MT $@' 4756cabdff1aSopenharmony_ci _cflags_speed='-O3' 4757cabdff1aSopenharmony_ci _cflags_size='-Oz' 4758cabdff1aSopenharmony_ci elif $_cc -V 2>&1 | grep -q Sun; then 4759cabdff1aSopenharmony_ci _type=suncc 4760cabdff1aSopenharmony_ci _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-) 4761cabdff1aSopenharmony_ci _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)' 4762cabdff1aSopenharmony_ci _DEPFLAGS='-xM1 -xc99' 4763cabdff1aSopenharmony_ci _ldflags='-std=c99' 4764cabdff1aSopenharmony_ci _cflags_speed='-O5' 4765cabdff1aSopenharmony_ci _cflags_size='-O5 -xspace' 4766cabdff1aSopenharmony_ci _flags_filter=suncc_flags 4767cabdff1aSopenharmony_ci elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then 4768cabdff1aSopenharmony_ci _type=pathscale 4769cabdff1aSopenharmony_ci _ident=$($_cc -v 2>&1 | head -n1 | tr -d :) 4770cabdff1aSopenharmony_ci _depflags='-MMD -MF $(@:.o=.d) -MT $@' 4771cabdff1aSopenharmony_ci _cflags_speed='-O2' 4772cabdff1aSopenharmony_ci _cflags_size='-Os' 4773cabdff1aSopenharmony_ci _flags_filter='filter_out -Wdisabled-optimization' 4774cabdff1aSopenharmony_ci elif $_cc -v 2>&1 | grep -q Open64; then 4775cabdff1aSopenharmony_ci _type=open64 4776cabdff1aSopenharmony_ci _ident=$($_cc -v 2>&1 | head -n1 | tr -d :) 4777cabdff1aSopenharmony_ci _depflags='-MMD -MF $(@:.o=.d) -MT $@' 4778cabdff1aSopenharmony_ci _cflags_speed='-O2' 4779cabdff1aSopenharmony_ci _cflags_size='-Os' 4780cabdff1aSopenharmony_ci _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros' 4781cabdff1aSopenharmony_ci elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then 4782cabdff1aSopenharmony_ci _type=armasm 4783cabdff1aSopenharmony_ci _ident=$($_cc | head -n1) 4784cabdff1aSopenharmony_ci # 4509: "This form of conditional instruction is deprecated" 4785cabdff1aSopenharmony_ci _flags="-nologo -ignore 4509" 4786cabdff1aSopenharmony_ci _flags_filter=armasm_flags 4787cabdff1aSopenharmony_ci elif $_cc 2>&1 | grep -q Intel; then 4788cabdff1aSopenharmony_ci _type=icl 4789cabdff1aSopenharmony_ci _ident=$($_cc 2>&1 | head -n1) 4790cabdff1aSopenharmony_ci _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@' 4791cabdff1aSopenharmony_ci # Not only is O3 broken on 13.x+ but it is slower on all previous 4792cabdff1aSopenharmony_ci # versions (tested) as well. 4793cabdff1aSopenharmony_ci _cflags_speed="-O2" 4794cabdff1aSopenharmony_ci _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff 4795cabdff1aSopenharmony_ci if $_cc 2>&1 | grep -q Linker; then 4796cabdff1aSopenharmony_ci _ld_o='-out:$@' 4797cabdff1aSopenharmony_ci else 4798cabdff1aSopenharmony_ci _ld_o='-Fe$@' 4799cabdff1aSopenharmony_ci fi 4800cabdff1aSopenharmony_ci _cc_o='-Fo$@' 4801cabdff1aSopenharmony_ci _cc_e='-P' 4802cabdff1aSopenharmony_ci _flags_filter=icl_flags 4803cabdff1aSopenharmony_ci _ld_lib='lib%.a' 4804cabdff1aSopenharmony_ci _ld_path='-libpath:' 4805cabdff1aSopenharmony_ci # -Qdiag-error to make icl error when seeing certain unknown arguments 4806cabdff1aSopenharmony_ci _flags='-nologo -Qdiag-error:4044,10157' 4807cabdff1aSopenharmony_ci # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency 4808cabdff1aSopenharmony_ci # with MSVC which enables it by default. 4809cabdff1aSopenharmony_ci _cflags='-Qms0 -Qvec- -Qsimd- -GS -fp:precise' 4810cabdff1aSopenharmony_ci disable stripping 4811cabdff1aSopenharmony_ci elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then 4812cabdff1aSopenharmony_ci # lld can emulate multiple different linkers; in ms link.exe mode, 4813cabdff1aSopenharmony_ci # the -? parameter gives the help output which contains an identifyable 4814cabdff1aSopenharmony_ci # string, while it gives an error in other modes. 4815cabdff1aSopenharmony_ci _type=lld-link 4816cabdff1aSopenharmony_ci # The link.exe mode doesn't have a switch for getting the version, 4817cabdff1aSopenharmony_ci # but we can force it back to gnu mode and get the version from there. 4818cabdff1aSopenharmony_ci _ident=$($_cc -flavor gnu --version 2>/dev/null) 4819cabdff1aSopenharmony_ci _ld_o='-out:$@' 4820cabdff1aSopenharmony_ci _flags_filter=msvc_flags 4821cabdff1aSopenharmony_ci _ld_lib='lib%.a' 4822cabdff1aSopenharmony_ci _ld_path='-libpath:' 4823cabdff1aSopenharmony_ci elif $_cc -nologo- 2>&1 | grep -q Microsoft || { $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; }; then 4824cabdff1aSopenharmony_ci _type=msvc 4825cabdff1aSopenharmony_ci if $_cc -nologo- 2>&1 | grep -q Microsoft; then 4826cabdff1aSopenharmony_ci _ident=$($_cc 2>&1 | head -n1 | tr -d '\r') 4827cabdff1aSopenharmony_ci else 4828cabdff1aSopenharmony_ci _ident=$($_cc --version 2>/dev/null | head -n1 | tr -d '\r') 4829cabdff1aSopenharmony_ci fi 4830cabdff1aSopenharmony_ci _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)' 4831cabdff1aSopenharmony_ci _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs' 4832cabdff1aSopenharmony_ci _cflags_speed="-O2" 4833cabdff1aSopenharmony_ci _cflags_size="-O1" 4834cabdff1aSopenharmony_ci _cflags_noopt="-O1" 4835cabdff1aSopenharmony_ci if $_cc -nologo- 2>&1 | grep -q Linker; then 4836cabdff1aSopenharmony_ci _ld_o='-out:$@' 4837cabdff1aSopenharmony_ci else 4838cabdff1aSopenharmony_ci _ld_o='-Fe$@' 4839cabdff1aSopenharmony_ci fi 4840cabdff1aSopenharmony_ci _cc_o='-Fo$@' 4841cabdff1aSopenharmony_ci _cc_e='-P -Fi$@' 4842cabdff1aSopenharmony_ci _flags_filter=msvc_flags 4843cabdff1aSopenharmony_ci _ld_lib='lib%.a' 4844cabdff1aSopenharmony_ci _ld_path='-libpath:' 4845cabdff1aSopenharmony_ci _flags='-nologo' 4846cabdff1aSopenharmony_ci disable stripping 4847cabdff1aSopenharmony_ci elif $_cc --version 2>/dev/null | grep -q ^cparser; then 4848cabdff1aSopenharmony_ci _type=cparser 4849cabdff1aSopenharmony_ci _ident=$($_cc --version | head -n1) 4850cabdff1aSopenharmony_ci _depflags='-MMD' 4851cabdff1aSopenharmony_ci _cflags_speed='-O4' 4852cabdff1aSopenharmony_ci _cflags_size='-O2' 4853cabdff1aSopenharmony_ci _flags_filter=cparser_flags 4854cabdff1aSopenharmony_ci fi 4855cabdff1aSopenharmony_ci 4856cabdff1aSopenharmony_ci eval ${pfx}_type=\$_type 4857cabdff1aSopenharmony_ci eval ${pfx}_ident=\$_ident 4858cabdff1aSopenharmony_ci} 4859cabdff1aSopenharmony_ci 4860cabdff1aSopenharmony_ciset_ccvars(){ 4861cabdff1aSopenharmony_ci eval ${1}_C=\${_cc_c-\${${1}_C}} 4862cabdff1aSopenharmony_ci eval ${1}_E=\${_cc_e-\${${1}_E}} 4863cabdff1aSopenharmony_ci eval ${1}_O=\${_cc_o-\${${1}_O}} 4864cabdff1aSopenharmony_ci 4865cabdff1aSopenharmony_ci if [ -n "$_depflags" ]; then 4866cabdff1aSopenharmony_ci eval ${1}_DEPFLAGS=\$_depflags 4867cabdff1aSopenharmony_ci else 4868cabdff1aSopenharmony_ci eval ${1}DEP=\${_DEPCMD:-\$DEPCMD} 4869cabdff1aSopenharmony_ci eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS} 4870cabdff1aSopenharmony_ci eval DEP${1}FLAGS=\$_flags 4871cabdff1aSopenharmony_ci fi 4872cabdff1aSopenharmony_ci} 4873cabdff1aSopenharmony_ci 4874cabdff1aSopenharmony_ciprobe_cc cc "$cc" "true" 4875cabdff1aSopenharmony_cicflags_filter=$_flags_filter 4876cabdff1aSopenharmony_cicflags_speed=$_cflags_speed 4877cabdff1aSopenharmony_cicflags_size=$_cflags_size 4878cabdff1aSopenharmony_cicflags_noopt=$_cflags_noopt 4879cabdff1aSopenharmony_ciadd_cflags $_flags $_cflags 4880cabdff1aSopenharmony_cicc_ldflags=$_ldflags 4881cabdff1aSopenharmony_ciset_ccvars CC 4882cabdff1aSopenharmony_ciset_ccvars CXX 4883cabdff1aSopenharmony_ci 4884cabdff1aSopenharmony_ciprobe_cc hostcc "$host_cc" 4885cabdff1aSopenharmony_cihost_cflags_filter=$_flags_filter 4886cabdff1aSopenharmony_cihost_cflags_speed=$_cflags_speed 4887cabdff1aSopenharmony_ciadd_host_cflags $_flags $_cflags 4888cabdff1aSopenharmony_ciset_ccvars HOSTCC 4889cabdff1aSopenharmony_ci 4890cabdff1aSopenharmony_citest -n "$cc_type" && enable $cc_type || 4891cabdff1aSopenharmony_ci warn "Unknown C compiler $cc, unable to select optimal CFLAGS" 4892cabdff1aSopenharmony_ci 4893cabdff1aSopenharmony_ci: ${as_default:=$cc} 4894cabdff1aSopenharmony_ci: ${objcc_default:=$cc} 4895cabdff1aSopenharmony_ci: ${dep_cc_default:=$cc} 4896cabdff1aSopenharmony_ci: ${ld_default:=$cc} 4897cabdff1aSopenharmony_ci: ${host_ld_default:=$host_cc} 4898cabdff1aSopenharmony_ciset_default ar as objcc dep_cc ld ln_s host_ld windres 4899cabdff1aSopenharmony_ci 4900cabdff1aSopenharmony_ciprobe_cc as "$as" 4901cabdff1aSopenharmony_ciasflags_filter=$_flags_filter 4902cabdff1aSopenharmony_ciadd_asflags $_flags $_cflags 4903cabdff1aSopenharmony_ciset_ccvars AS 4904cabdff1aSopenharmony_ci 4905cabdff1aSopenharmony_ciprobe_cc objcc "$objcc" 4906cabdff1aSopenharmony_ciobjcflags_filter=$_flags_filter 4907cabdff1aSopenharmony_ciadd_objcflags $_flags $_cflags 4908cabdff1aSopenharmony_ciset_ccvars OBJC 4909cabdff1aSopenharmony_ci 4910cabdff1aSopenharmony_ciprobe_cc ld "$ld" 4911cabdff1aSopenharmony_cildflags_filter=$_flags_filter 4912cabdff1aSopenharmony_ciadd_ldflags $_flags $_ldflags 4913cabdff1aSopenharmony_citest "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags 4914cabdff1aSopenharmony_ciLD_O=${_ld_o-$LD_O} 4915cabdff1aSopenharmony_ciLD_LIB=${_ld_lib-$LD_LIB} 4916cabdff1aSopenharmony_ciLD_PATH=${_ld_path-$LD_PATH} 4917cabdff1aSopenharmony_ci 4918cabdff1aSopenharmony_ciprobe_cc hostld "$host_ld" 4919cabdff1aSopenharmony_cihost_ldflags_filter=$_flags_filter 4920cabdff1aSopenharmony_ciadd_host_ldflags $_flags $_ldflags 4921cabdff1aSopenharmony_ciHOSTLD_O=${_ld_o-$HOSTLD_O} 4922cabdff1aSopenharmony_ci 4923cabdff1aSopenharmony_ciif [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then 4924cabdff1aSopenharmony_ci probe_cc depcc "$dep_cc" 4925cabdff1aSopenharmony_ci CCDEP=${_DEPCMD:-$DEPCMD} 4926cabdff1aSopenharmony_ci CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS} 4927cabdff1aSopenharmony_ci DEPCCFLAGS=$_flags 4928cabdff1aSopenharmony_cifi 4929cabdff1aSopenharmony_ci 4930cabdff1aSopenharmony_ciif $ar 2>&1 | grep -q Microsoft; then 4931cabdff1aSopenharmony_ci arflags="-nologo" 4932cabdff1aSopenharmony_ci ar_o='-out:$@' 4933cabdff1aSopenharmony_cielif $ar 2>&1 | grep -q "\[D\] "; then 4934cabdff1aSopenharmony_ci arflags="rcD" 4935cabdff1aSopenharmony_ci ar_o='$@' 4936cabdff1aSopenharmony_cielse 4937cabdff1aSopenharmony_ci arflags="rc" 4938cabdff1aSopenharmony_ci ar_o='$@' 4939cabdff1aSopenharmony_cifi 4940cabdff1aSopenharmony_ci 4941cabdff1aSopenharmony_ciadd_cflags $extra_cflags 4942cabdff1aSopenharmony_ciadd_cxxflags $extra_cxxflags 4943cabdff1aSopenharmony_ciadd_objcflags $extra_objcflags 4944cabdff1aSopenharmony_ciadd_asflags $extra_cflags 4945cabdff1aSopenharmony_ci 4946cabdff1aSopenharmony_ciif test -n "$sysroot"; then 4947cabdff1aSopenharmony_ci case "$cc_type" in 4948cabdff1aSopenharmony_ci gcc|llvm_gcc|clang) 4949cabdff1aSopenharmony_ci add_cppflags --sysroot="$sysroot" 4950cabdff1aSopenharmony_ci add_ldflags --sysroot="$sysroot" 4951cabdff1aSopenharmony_ci ;; 4952cabdff1aSopenharmony_ci esac 4953cabdff1aSopenharmony_cifi 4954cabdff1aSopenharmony_ci 4955cabdff1aSopenharmony_ciif test "$cpu" = host; then 4956cabdff1aSopenharmony_ci enabled cross_compile && 4957cabdff1aSopenharmony_ci warn "--cpu=host makes no sense when cross-compiling." 4958cabdff1aSopenharmony_ci 4959cabdff1aSopenharmony_ci case "$cc_type" in 4960cabdff1aSopenharmony_ci gcc|llvm_gcc) 4961cabdff1aSopenharmony_ci check_native(){ 4962cabdff1aSopenharmony_ci $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return 4963cabdff1aSopenharmony_ci sed -n "/cc1.*$1=/{ 4964cabdff1aSopenharmony_ci s/.*$1=\\([^ ]*\\).*/\\1/ 4965cabdff1aSopenharmony_ci p 4966cabdff1aSopenharmony_ci q 4967cabdff1aSopenharmony_ci }" $TMPE 4968cabdff1aSopenharmony_ci } 4969cabdff1aSopenharmony_ci cpu=$(check_native -march || check_native -mcpu) 4970cabdff1aSopenharmony_ci ;; 4971cabdff1aSopenharmony_ci clang) 4972cabdff1aSopenharmony_ci check_native(){ 4973cabdff1aSopenharmony_ci $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return 4974cabdff1aSopenharmony_ci sed -n "/cc1.*-target-cpu /{ 4975cabdff1aSopenharmony_ci s/.*-target-cpu \\([^ ]*\\).*/\\1/ 4976cabdff1aSopenharmony_ci p 4977cabdff1aSopenharmony_ci q 4978cabdff1aSopenharmony_ci }" $TMPE 4979cabdff1aSopenharmony_ci } 4980cabdff1aSopenharmony_ci cpu=$(check_native -march) 4981cabdff1aSopenharmony_ci ;; 4982cabdff1aSopenharmony_ci esac 4983cabdff1aSopenharmony_ci 4984cabdff1aSopenharmony_ci test "${cpu:-host}" = host && 4985cabdff1aSopenharmony_ci die "--cpu=host not supported with compiler $cc" 4986cabdff1aSopenharmony_cifi 4987cabdff1aSopenharmony_ci 4988cabdff1aSopenharmony_ci# Deal with common $arch aliases 4989cabdff1aSopenharmony_cicase "$arch" in 4990cabdff1aSopenharmony_ci aarch64|arm64) 4991cabdff1aSopenharmony_ci arch="aarch64" 4992cabdff1aSopenharmony_ci ;; 4993cabdff1aSopenharmony_ci arm*|iPad*|iPhone*) 4994cabdff1aSopenharmony_ci arch="arm" 4995cabdff1aSopenharmony_ci ;; 4996cabdff1aSopenharmony_ci loongarch*) 4997cabdff1aSopenharmony_ci arch="loongarch" 4998cabdff1aSopenharmony_ci ;; 4999cabdff1aSopenharmony_ci mips*|IP*) 5000cabdff1aSopenharmony_ci case "$arch" in 5001cabdff1aSopenharmony_ci *el) 5002cabdff1aSopenharmony_ci add_cppflags -EL 5003cabdff1aSopenharmony_ci add_ldflags -EL 5004cabdff1aSopenharmony_ci ;; 5005cabdff1aSopenharmony_ci *eb) 5006cabdff1aSopenharmony_ci add_cppflags -EB 5007cabdff1aSopenharmony_ci add_ldflags -EB 5008cabdff1aSopenharmony_ci ;; 5009cabdff1aSopenharmony_ci esac 5010cabdff1aSopenharmony_ci arch="mips" 5011cabdff1aSopenharmony_ci ;; 5012cabdff1aSopenharmony_ci parisc*|hppa*) 5013cabdff1aSopenharmony_ci arch="parisc" 5014cabdff1aSopenharmony_ci ;; 5015cabdff1aSopenharmony_ci "Power Macintosh"|ppc*|powerpc*) 5016cabdff1aSopenharmony_ci arch="ppc" 5017cabdff1aSopenharmony_ci ;; 5018cabdff1aSopenharmony_ci riscv*) 5019cabdff1aSopenharmony_ci arch="riscv" 5020cabdff1aSopenharmony_ci ;; 5021cabdff1aSopenharmony_ci s390|s390x) 5022cabdff1aSopenharmony_ci arch="s390" 5023cabdff1aSopenharmony_ci ;; 5024cabdff1aSopenharmony_ci sh4|sh) 5025cabdff1aSopenharmony_ci arch="sh4" 5026cabdff1aSopenharmony_ci ;; 5027cabdff1aSopenharmony_ci sun4*|sparc*) 5028cabdff1aSopenharmony_ci arch="sparc" 5029cabdff1aSopenharmony_ci ;; 5030cabdff1aSopenharmony_ci tilegx|tile-gx) 5031cabdff1aSopenharmony_ci arch="tilegx" 5032cabdff1aSopenharmony_ci ;; 5033cabdff1aSopenharmony_ci i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64) 5034cabdff1aSopenharmony_ci arch="x86" 5035cabdff1aSopenharmony_ci ;; 5036cabdff1aSopenharmony_ciesac 5037cabdff1aSopenharmony_ci 5038cabdff1aSopenharmony_ciis_in $arch $ARCH_LIST || warn "unknown architecture $arch" 5039cabdff1aSopenharmony_cienable $arch 5040cabdff1aSopenharmony_ci 5041cabdff1aSopenharmony_ci# Add processor-specific flags 5042cabdff1aSopenharmony_ciif enabled aarch64; then 5043cabdff1aSopenharmony_ci 5044cabdff1aSopenharmony_ci case $cpu in 5045cabdff1aSopenharmony_ci armv*) 5046cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5047cabdff1aSopenharmony_ci ;; 5048cabdff1aSopenharmony_ci *) 5049cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5050cabdff1aSopenharmony_ci ;; 5051cabdff1aSopenharmony_ci esac 5052cabdff1aSopenharmony_ci 5053cabdff1aSopenharmony_cielif enabled alpha; then 5054cabdff1aSopenharmony_ci 5055cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5056cabdff1aSopenharmony_ci 5057cabdff1aSopenharmony_cielif enabled arm; then 5058cabdff1aSopenharmony_ci 5059cabdff1aSopenharmony_ci check_arm_arch() { 5060cabdff1aSopenharmony_ci test_cpp_condition stddef.h \ 5061cabdff1aSopenharmony_ci "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \ 5062cabdff1aSopenharmony_ci $cpuflags 5063cabdff1aSopenharmony_ci } 5064cabdff1aSopenharmony_ci 5065cabdff1aSopenharmony_ci probe_arm_arch() { 5066cabdff1aSopenharmony_ci if check_arm_arch 4; then echo armv4 5067cabdff1aSopenharmony_ci elif check_arm_arch 4T; then echo armv4t 5068cabdff1aSopenharmony_ci elif check_arm_arch 5; then echo armv5 5069cabdff1aSopenharmony_ci elif check_arm_arch 5E; then echo armv5e 5070cabdff1aSopenharmony_ci elif check_arm_arch 5T; then echo armv5t 5071cabdff1aSopenharmony_ci elif check_arm_arch 5TE; then echo armv5te 5072cabdff1aSopenharmony_ci elif check_arm_arch 5TEJ; then echo armv5te 5073cabdff1aSopenharmony_ci elif check_arm_arch 6; then echo armv6 5074cabdff1aSopenharmony_ci elif check_arm_arch 6J; then echo armv6j 5075cabdff1aSopenharmony_ci elif check_arm_arch 6K; then echo armv6k 5076cabdff1aSopenharmony_ci elif check_arm_arch 6Z; then echo armv6z 5077cabdff1aSopenharmony_ci elif check_arm_arch 6KZ; then echo armv6zk 5078cabdff1aSopenharmony_ci elif check_arm_arch 6ZK; then echo armv6zk 5079cabdff1aSopenharmony_ci elif check_arm_arch 6T2; then echo armv6t2 5080cabdff1aSopenharmony_ci elif check_arm_arch 7; then echo armv7 5081cabdff1aSopenharmony_ci elif check_arm_arch 7A 7_A; then echo armv7-a 5082cabdff1aSopenharmony_ci elif check_arm_arch 7S; then echo armv7-a 5083cabdff1aSopenharmony_ci elif check_arm_arch 7R 7_R; then echo armv7-r 5084cabdff1aSopenharmony_ci elif check_arm_arch 7M 7_M; then echo armv7-m 5085cabdff1aSopenharmony_ci elif check_arm_arch 7EM 7E_M; then echo armv7-m 5086cabdff1aSopenharmony_ci elif check_arm_arch 8A 8_A; then echo armv8-a 5087cabdff1aSopenharmony_ci fi 5088cabdff1aSopenharmony_ci } 5089cabdff1aSopenharmony_ci 5090cabdff1aSopenharmony_ci 5091cabdff1aSopenharmony_ci case $cpu in 5092cabdff1aSopenharmony_ci generic) 5093cabdff1aSopenharmony_ci subarch=$(probe_arm_arch | sed 's/[^a-z0-9]//g') 5094cabdff1aSopenharmony_ci ;; 5095cabdff1aSopenharmony_ci armv*) 5096cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5097cabdff1aSopenharmony_ci subarch=$(echo $cpu | sed 's/[^a-z0-9]//g') 5098cabdff1aSopenharmony_ci ;; 5099cabdff1aSopenharmony_ci *) 5100cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5101cabdff1aSopenharmony_ci case $cpu in 5102cabdff1aSopenharmony_ci cortex-a*) subarch=armv7a ;; 5103cabdff1aSopenharmony_ci cortex-r*) subarch=armv7r ;; 5104cabdff1aSopenharmony_ci cortex-m*) enable thumb; subarch=armv7m ;; 5105cabdff1aSopenharmony_ci arm11*) subarch=armv6 ;; 5106cabdff1aSopenharmony_ci arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;; 5107cabdff1aSopenharmony_ci armv4*|arm7*|arm9[24]*) subarch=armv4 ;; 5108cabdff1aSopenharmony_ci *) subarch=$(probe_arm_arch) ;; 5109cabdff1aSopenharmony_ci esac 5110cabdff1aSopenharmony_ci ;; 5111cabdff1aSopenharmony_ci esac 5112cabdff1aSopenharmony_ci 5113cabdff1aSopenharmony_ci case "$subarch" in 5114cabdff1aSopenharmony_ci armv5t*) enable fast_clz ;; 5115cabdff1aSopenharmony_ci armv[6-8]*) 5116cabdff1aSopenharmony_ci enable fast_clz 5117cabdff1aSopenharmony_ci disabled fast_unaligned || enable fast_unaligned 5118cabdff1aSopenharmony_ci ;; 5119cabdff1aSopenharmony_ci esac 5120cabdff1aSopenharmony_ci 5121cabdff1aSopenharmony_cielif enabled avr32; then 5122cabdff1aSopenharmony_ci 5123cabdff1aSopenharmony_ci case $cpu in 5124cabdff1aSopenharmony_ci ap7[02]0[0-2]) 5125cabdff1aSopenharmony_ci subarch="avr32_ap" 5126cabdff1aSopenharmony_ci cpuflags="-mpart=$cpu" 5127cabdff1aSopenharmony_ci ;; 5128cabdff1aSopenharmony_ci ap) 5129cabdff1aSopenharmony_ci subarch="avr32_ap" 5130cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5131cabdff1aSopenharmony_ci ;; 5132cabdff1aSopenharmony_ci uc3[ab]*) 5133cabdff1aSopenharmony_ci subarch="avr32_uc" 5134cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5135cabdff1aSopenharmony_ci ;; 5136cabdff1aSopenharmony_ci uc) 5137cabdff1aSopenharmony_ci subarch="avr32_uc" 5138cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5139cabdff1aSopenharmony_ci ;; 5140cabdff1aSopenharmony_ci esac 5141cabdff1aSopenharmony_ci 5142cabdff1aSopenharmony_cielif enabled bfin; then 5143cabdff1aSopenharmony_ci 5144cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5145cabdff1aSopenharmony_ci 5146cabdff1aSopenharmony_cielif enabled loongarch; then 5147cabdff1aSopenharmony_ci 5148cabdff1aSopenharmony_ci enable local_aligned 5149cabdff1aSopenharmony_ci enable simd_align_32 5150cabdff1aSopenharmony_ci enable fast_64bit 5151cabdff1aSopenharmony_ci enable fast_clz 5152cabdff1aSopenharmony_ci enable fast_unaligned 5153cabdff1aSopenharmony_ci case $cpu in 5154cabdff1aSopenharmony_ci la464) 5155cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5156cabdff1aSopenharmony_ci ;; 5157cabdff1aSopenharmony_ci esac 5158cabdff1aSopenharmony_cielif enabled mips; then 5159cabdff1aSopenharmony_ci 5160cabdff1aSopenharmony_ci if [ "$cpu" != "generic" ]; then 5161cabdff1aSopenharmony_ci disable mips32r2 5162cabdff1aSopenharmony_ci disable mips32r5 5163cabdff1aSopenharmony_ci disable mips64r2 5164cabdff1aSopenharmony_ci disable mips32r6 5165cabdff1aSopenharmony_ci disable mips64r6 5166cabdff1aSopenharmony_ci disable loongson2 5167cabdff1aSopenharmony_ci disable loongson3 5168cabdff1aSopenharmony_ci disable mipsdsp 5169cabdff1aSopenharmony_ci disable mipsdspr2 5170cabdff1aSopenharmony_ci 5171cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5172cabdff1aSopenharmony_ci 5173cabdff1aSopenharmony_ci case $cpu in 5174cabdff1aSopenharmony_ci # General ISA levels 5175cabdff1aSopenharmony_ci mips1|mips3) 5176cabdff1aSopenharmony_ci ;; 5177cabdff1aSopenharmony_ci mips32r2) 5178cabdff1aSopenharmony_ci enable mips32r2 5179cabdff1aSopenharmony_ci ;; 5180cabdff1aSopenharmony_ci mips32r5) 5181cabdff1aSopenharmony_ci enable mips32r2 5182cabdff1aSopenharmony_ci enable mips32r5 5183cabdff1aSopenharmony_ci ;; 5184cabdff1aSopenharmony_ci mips64r2|mips64r5) 5185cabdff1aSopenharmony_ci enable mips64r2 5186cabdff1aSopenharmony_ci enable loongson3 5187cabdff1aSopenharmony_ci ;; 5188cabdff1aSopenharmony_ci # Cores from MIPS(MTI) 5189cabdff1aSopenharmony_ci 24kc) 5190cabdff1aSopenharmony_ci disable mipsfpu 5191cabdff1aSopenharmony_ci enable mips32r2 5192cabdff1aSopenharmony_ci ;; 5193cabdff1aSopenharmony_ci 24kf*|24kec|34kc|74Kc|1004kc) 5194cabdff1aSopenharmony_ci enable mips32r2 5195cabdff1aSopenharmony_ci ;; 5196cabdff1aSopenharmony_ci 24kef*|34kf*|1004kf*) 5197cabdff1aSopenharmony_ci enable mipsdsp 5198cabdff1aSopenharmony_ci enable mips32r2 5199cabdff1aSopenharmony_ci ;; 5200cabdff1aSopenharmony_ci p5600) 5201cabdff1aSopenharmony_ci enable mips32r2 5202cabdff1aSopenharmony_ci enable mips32r5 5203cabdff1aSopenharmony_ci check_cflags "-mtune=p5600" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" 5204cabdff1aSopenharmony_ci ;; 5205cabdff1aSopenharmony_ci i6400) 5206cabdff1aSopenharmony_ci enable mips64r6 5207cabdff1aSopenharmony_ci check_cflags "-mtune=i6400 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64" 5208cabdff1aSopenharmony_ci ;; 5209cabdff1aSopenharmony_ci p6600) 5210cabdff1aSopenharmony_ci enable mips64r6 5211cabdff1aSopenharmony_ci check_cflags "-mtune=p6600 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64" 5212cabdff1aSopenharmony_ci ;; 5213cabdff1aSopenharmony_ci # Cores from Loongson 5214cabdff1aSopenharmony_ci loongson2e|loongson2f|loongson3*) 5215cabdff1aSopenharmony_ci enable local_aligned 5216cabdff1aSopenharmony_ci enable simd_align_16 5217cabdff1aSopenharmony_ci enable fast_64bit 5218cabdff1aSopenharmony_ci enable fast_clz 5219cabdff1aSopenharmony_ci enable fast_cmov 5220cabdff1aSopenharmony_ci enable fast_unaligned 5221cabdff1aSopenharmony_ci disable aligned_stack 5222cabdff1aSopenharmony_ci # When gcc version less than 5.3.0, add -fno-expensive-optimizations flag. 5223cabdff1aSopenharmony_ci if test "$cc_type" = "gcc"; then 5224cabdff1aSopenharmony_ci case $gcc_basever in 5225cabdff1aSopenharmony_ci 2|2.*|3.*|4.*|5.0|5.1|5.2) 5226cabdff1aSopenharmony_ci expensive_optimization_flag="-fno-expensive-optimizations" 5227cabdff1aSopenharmony_ci ;; 5228cabdff1aSopenharmony_ci *) 5229cabdff1aSopenharmony_ci expensive_optimization_flag="" 5230cabdff1aSopenharmony_ci ;; 5231cabdff1aSopenharmony_ci esac 5232cabdff1aSopenharmony_ci fi 5233cabdff1aSopenharmony_ci 5234cabdff1aSopenharmony_ci case $cpu in 5235cabdff1aSopenharmony_ci loongson3*) 5236cabdff1aSopenharmony_ci enable loongson3 5237cabdff1aSopenharmony_ci cpuflags="-march=loongson3a -mhard-float $expensive_optimization_flag" 5238cabdff1aSopenharmony_ci ;; 5239cabdff1aSopenharmony_ci loongson2e) 5240cabdff1aSopenharmony_ci enable loongson2 5241cabdff1aSopenharmony_ci cpuflags="-march=loongson2e -mhard-float $expensive_optimization_flag" 5242cabdff1aSopenharmony_ci ;; 5243cabdff1aSopenharmony_ci loongson2f) 5244cabdff1aSopenharmony_ci enable loongson2 5245cabdff1aSopenharmony_ci cpuflags="-march=loongson2f -mhard-float $expensive_optimization_flag" 5246cabdff1aSopenharmony_ci ;; 5247cabdff1aSopenharmony_ci esac 5248cabdff1aSopenharmony_ci ;; 5249cabdff1aSopenharmony_ci *) 5250cabdff1aSopenharmony_ci warn "unknown MIPS CPU" 5251cabdff1aSopenharmony_ci ;; 5252cabdff1aSopenharmony_ci esac 5253cabdff1aSopenharmony_ci 5254cabdff1aSopenharmony_ci else 5255cabdff1aSopenharmony_ci disable mipsdsp 5256cabdff1aSopenharmony_ci disable mipsdspr2 5257cabdff1aSopenharmony_ci # Disable DSP stuff for generic CPU, it can't be detected at runtime. 5258cabdff1aSopenharmony_ci warn 'generic cpu selected' 5259cabdff1aSopenharmony_ci fi 5260cabdff1aSopenharmony_ci 5261cabdff1aSopenharmony_cielif enabled ppc; then 5262cabdff1aSopenharmony_ci 5263cabdff1aSopenharmony_ci disable ldbrx 5264cabdff1aSopenharmony_ci 5265cabdff1aSopenharmony_ci case $(tolower $cpu) in 5266cabdff1aSopenharmony_ci 601|ppc601|powerpc601) 5267cabdff1aSopenharmony_ci cpuflags="-mcpu=601" 5268cabdff1aSopenharmony_ci disable altivec 5269cabdff1aSopenharmony_ci ;; 5270cabdff1aSopenharmony_ci 603*|ppc603*|powerpc603*) 5271cabdff1aSopenharmony_ci cpuflags="-mcpu=603" 5272cabdff1aSopenharmony_ci disable altivec 5273cabdff1aSopenharmony_ci ;; 5274cabdff1aSopenharmony_ci 604*|ppc604*|powerpc604*) 5275cabdff1aSopenharmony_ci cpuflags="-mcpu=604" 5276cabdff1aSopenharmony_ci disable altivec 5277cabdff1aSopenharmony_ci ;; 5278cabdff1aSopenharmony_ci g3|75*|ppc75*|powerpc75*) 5279cabdff1aSopenharmony_ci cpuflags="-mcpu=750" 5280cabdff1aSopenharmony_ci disable altivec 5281cabdff1aSopenharmony_ci ;; 5282cabdff1aSopenharmony_ci g4|745*|ppc745*|powerpc745*) 5283cabdff1aSopenharmony_ci cpuflags="-mcpu=7450" 5284cabdff1aSopenharmony_ci disable vsx 5285cabdff1aSopenharmony_ci ;; 5286cabdff1aSopenharmony_ci 74*|ppc74*|powerpc74*) 5287cabdff1aSopenharmony_ci cpuflags="-mcpu=7400" 5288cabdff1aSopenharmony_ci disable vsx 5289cabdff1aSopenharmony_ci ;; 5290cabdff1aSopenharmony_ci g5|970|ppc970|powerpc970) 5291cabdff1aSopenharmony_ci cpuflags="-mcpu=970" 5292cabdff1aSopenharmony_ci disable vsx 5293cabdff1aSopenharmony_ci ;; 5294cabdff1aSopenharmony_ci power[3-6]*) 5295cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5296cabdff1aSopenharmony_ci disable vsx 5297cabdff1aSopenharmony_ci ;; 5298cabdff1aSopenharmony_ci power[7-8]*) 5299cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5300cabdff1aSopenharmony_ci ;; 5301cabdff1aSopenharmony_ci cell) 5302cabdff1aSopenharmony_ci cpuflags="-mcpu=cell" 5303cabdff1aSopenharmony_ci enable ldbrx 5304cabdff1aSopenharmony_ci disable vsx 5305cabdff1aSopenharmony_ci ;; 5306cabdff1aSopenharmony_ci e500mc) 5307cabdff1aSopenharmony_ci cpuflags="-mcpu=e500mc" 5308cabdff1aSopenharmony_ci disable altivec 5309cabdff1aSopenharmony_ci ;; 5310cabdff1aSopenharmony_ci e500v2) 5311cabdff1aSopenharmony_ci cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double" 5312cabdff1aSopenharmony_ci disable altivec 5313cabdff1aSopenharmony_ci disable dcbzl 5314cabdff1aSopenharmony_ci ;; 5315cabdff1aSopenharmony_ci e500) 5316cabdff1aSopenharmony_ci cpuflags="-mcpu=8540 -mhard-float" 5317cabdff1aSopenharmony_ci disable altivec 5318cabdff1aSopenharmony_ci disable dcbzl 5319cabdff1aSopenharmony_ci ;; 5320cabdff1aSopenharmony_ci esac 5321cabdff1aSopenharmony_ci 5322cabdff1aSopenharmony_cielif enabled sparc; then 5323cabdff1aSopenharmony_ci 5324cabdff1aSopenharmony_ci case $cpu in 5325cabdff1aSopenharmony_ci cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789]) 5326cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5327cabdff1aSopenharmony_ci ;; 5328cabdff1aSopenharmony_ci ultrasparc*|niagara[234]) 5329cabdff1aSopenharmony_ci cpuflags="-mcpu=$cpu" 5330cabdff1aSopenharmony_ci ;; 5331cabdff1aSopenharmony_ci esac 5332cabdff1aSopenharmony_ci 5333cabdff1aSopenharmony_cielif enabled x86; then 5334cabdff1aSopenharmony_ci 5335cabdff1aSopenharmony_ci case $cpu in 5336cabdff1aSopenharmony_ci i[345]86|pentium) 5337cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5338cabdff1aSopenharmony_ci disable i686 5339cabdff1aSopenharmony_ci disable mmx 5340cabdff1aSopenharmony_ci ;; 5341cabdff1aSopenharmony_ci # targets that do NOT support nopl and conditional mov (cmov) 5342cabdff1aSopenharmony_ci pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3) 5343cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5344cabdff1aSopenharmony_ci disable i686 5345cabdff1aSopenharmony_ci ;; 5346cabdff1aSopenharmony_ci # targets that do support nopl and conditional mov (cmov) 5347cabdff1aSopenharmony_ci i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx\ 5348cabdff1aSopenharmony_ci |core*|atom|bonnell|nehalem|westmere|silvermont|sandybridge|ivybridge|haswell|broadwell|skylake*|knl\ 5349cabdff1aSopenharmony_ci |amdfam10|barcelona|b[dt]ver*|znver*) 5350cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5351cabdff1aSopenharmony_ci enable i686 5352cabdff1aSopenharmony_ci enable fast_cmov 5353cabdff1aSopenharmony_ci ;; 5354cabdff1aSopenharmony_ci # targets that do support conditional mov but on which it's slow 5355cabdff1aSopenharmony_ci pentium4|pentium4m|prescott|nocona) 5356cabdff1aSopenharmony_ci cpuflags="-march=$cpu" 5357cabdff1aSopenharmony_ci enable i686 5358cabdff1aSopenharmony_ci disable fast_cmov 5359cabdff1aSopenharmony_ci ;; 5360cabdff1aSopenharmony_ci esac 5361cabdff1aSopenharmony_ci 5362cabdff1aSopenharmony_cifi 5363cabdff1aSopenharmony_ci 5364cabdff1aSopenharmony_ciif [ "$cpu" != generic ]; then 5365cabdff1aSopenharmony_ci add_cflags $cpuflags 5366cabdff1aSopenharmony_ci add_asflags $cpuflags 5367cabdff1aSopenharmony_ci test "$cc_type" = "$ld_type" && add_ldflags $cpuflags 5368cabdff1aSopenharmony_cifi 5369cabdff1aSopenharmony_ci 5370cabdff1aSopenharmony_ci# compiler sanity check 5371cabdff1aSopenharmony_citest_exec <<EOF 5372cabdff1aSopenharmony_ciint main(void){ return 0; } 5373cabdff1aSopenharmony_ciEOF 5374cabdff1aSopenharmony_ciif test "$?" != 0; then 5375cabdff1aSopenharmony_ci echo "$cc is unable to create an executable file." 5376cabdff1aSopenharmony_ci if test -z "$cross_prefix" && ! enabled cross_compile ; then 5377cabdff1aSopenharmony_ci echo "If $cc is a cross-compiler, use the --enable-cross-compile option." 5378cabdff1aSopenharmony_ci echo "Only do this if you know what cross compiling means." 5379cabdff1aSopenharmony_ci fi 5380cabdff1aSopenharmony_ci die "C compiler test failed." 5381cabdff1aSopenharmony_cifi 5382cabdff1aSopenharmony_ci 5383cabdff1aSopenharmony_ciadd_cppflags -D_ISOC99_SOURCE 5384cabdff1aSopenharmony_ciadd_cxxflags -D__STDC_CONSTANT_MACROS 5385cabdff1aSopenharmony_cicheck_cxxflags -std=c++11 || check_cxxflags -std=c++0x 5386cabdff1aSopenharmony_ci 5387cabdff1aSopenharmony_ci# some compilers silently accept -std=c11, so we also need to check that the 5388cabdff1aSopenharmony_ci# version macro is defined properly 5389cabdff1aSopenharmony_citest_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" && 5390cabdff1aSopenharmony_ci add_cflags -std=c11 || 5391cabdff1aSopenharmony_ci check_cflags -std=c99 5392cabdff1aSopenharmony_ci 5393cabdff1aSopenharmony_cicheck_cppflags -D_FILE_OFFSET_BITS=64 5394cabdff1aSopenharmony_cicheck_cppflags -D_LARGEFILE_SOURCE 5395cabdff1aSopenharmony_ci 5396cabdff1aSopenharmony_ciadd_host_cppflags -D_ISOC99_SOURCE 5397cabdff1aSopenharmony_cicheck_host_cflags -std=c99 5398cabdff1aSopenharmony_cicheck_host_cflags -Wall 5399cabdff1aSopenharmony_cicheck_host_cflags $host_cflags_speed 5400cabdff1aSopenharmony_ci 5401cabdff1aSopenharmony_cicheck_64bit(){ 5402cabdff1aSopenharmony_ci arch32=$1 5403cabdff1aSopenharmony_ci arch64=$2 5404cabdff1aSopenharmony_ci expr=${3:-'sizeof(void *) > 4'} 5405cabdff1aSopenharmony_ci test_code cc "" "int test[2*($expr) - 1]" && 5406cabdff1aSopenharmony_ci subarch=$arch64 || subarch=$arch32 5407cabdff1aSopenharmony_ci enable $subarch 5408cabdff1aSopenharmony_ci} 5409cabdff1aSopenharmony_ci 5410cabdff1aSopenharmony_cicase "$arch" in 5411cabdff1aSopenharmony_ci aarch64|alpha|ia64) 5412cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5413cabdff1aSopenharmony_ci ;; 5414cabdff1aSopenharmony_ci loongarch) 5415cabdff1aSopenharmony_ci check_64bit loongarch32 loongarch64 5416cabdff1aSopenharmony_ci enabled loongarch64 && disable loongarch32 5417cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5418cabdff1aSopenharmony_ci ;; 5419cabdff1aSopenharmony_ci mips) 5420cabdff1aSopenharmony_ci check_64bit mips mips64 '_MIPS_SIM > 1' 5421cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5422cabdff1aSopenharmony_ci ;; 5423cabdff1aSopenharmony_ci parisc) 5424cabdff1aSopenharmony_ci check_64bit parisc parisc64 5425cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5426cabdff1aSopenharmony_ci ;; 5427cabdff1aSopenharmony_ci ppc) 5428cabdff1aSopenharmony_ci check_64bit ppc ppc64 5429cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5430cabdff1aSopenharmony_ci ;; 5431cabdff1aSopenharmony_ci riscv) 5432cabdff1aSopenharmony_ci check_64bit riscv32 riscv64 5433cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5434cabdff1aSopenharmony_ci ;; 5435cabdff1aSopenharmony_ci s390) 5436cabdff1aSopenharmony_ci check_64bit s390 s390x 5437cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5438cabdff1aSopenharmony_ci ;; 5439cabdff1aSopenharmony_ci sparc) 5440cabdff1aSopenharmony_ci check_64bit sparc sparc64 5441cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5442cabdff1aSopenharmony_ci ;; 5443cabdff1aSopenharmony_ci x86) 5444cabdff1aSopenharmony_ci check_64bit x86_32 x86_64 5445cabdff1aSopenharmony_ci # Treat x32 as x64 for now. Note it also needs pic if shared 5446cabdff1aSopenharmony_ci test "$subarch" = "x86_32" && test_cpp_condition stddef.h 'defined(__x86_64__)' && 5447cabdff1aSopenharmony_ci subarch=x86_64 && enable x86_64 && disable x86_32 5448cabdff1aSopenharmony_ci if enabled x86_64; then 5449cabdff1aSopenharmony_ci enabled shared && enable_weak pic 5450cabdff1aSopenharmony_ci objformat=elf64 5451cabdff1aSopenharmony_ci fi 5452cabdff1aSopenharmony_ci ;; 5453cabdff1aSopenharmony_ciesac 5454cabdff1aSopenharmony_ci 5455cabdff1aSopenharmony_ci# OS specific 5456cabdff1aSopenharmony_cicase $target_os in 5457cabdff1aSopenharmony_ci aix) 5458cabdff1aSopenharmony_ci SHFLAGS=-shared 5459cabdff1aSopenharmony_ci add_cppflags '-I\$(SRC_PATH)/compat/aix' 5460cabdff1aSopenharmony_ci enabled shared && add_ldflags -Wl,-brtl 5461cabdff1aSopenharmony_ci arflags='-Xany -r -c' 5462cabdff1aSopenharmony_ci striptype="" 5463cabdff1aSopenharmony_ci ;; 5464cabdff1aSopenharmony_ci android) 5465cabdff1aSopenharmony_ci disable symver 5466cabdff1aSopenharmony_ci enable section_data_rel_ro 5467cabdff1aSopenharmony_ci add_cflags -fPIE 5468cabdff1aSopenharmony_ci add_ldexeflags -fPIE -pie 5469cabdff1aSopenharmony_ci SLIB_INSTALL_NAME='$(SLIBNAME)' 5470cabdff1aSopenharmony_ci SLIB_INSTALL_LINKS= 5471cabdff1aSopenharmony_ci SHFLAGS='-shared -Wl,-soname,$(SLIBNAME)' 5472cabdff1aSopenharmony_ci ;; 5473cabdff1aSopenharmony_ci haiku) 5474cabdff1aSopenharmony_ci prefix_default="/boot/common" 5475cabdff1aSopenharmony_ci network_extralibs="-lnetwork" 5476cabdff1aSopenharmony_ci host_extralibs= 5477cabdff1aSopenharmony_ci ;; 5478cabdff1aSopenharmony_ci sunos) 5479cabdff1aSopenharmony_ci SHFLAGS='-shared -Wl,-h,$$(@F)' 5480cabdff1aSopenharmony_ci enabled x86 && append SHFLAGS -mimpure-text 5481cabdff1aSopenharmony_ci network_extralibs="-lsocket -lnsl" 5482cabdff1aSopenharmony_ci add_cppflags -D__EXTENSIONS__ 5483cabdff1aSopenharmony_ci # When using suncc to build, the Solaris linker will mark 5484cabdff1aSopenharmony_ci # an executable with each instruction set encountered by 5485cabdff1aSopenharmony_ci # the Solaris assembler. As our libraries contain their own 5486cabdff1aSopenharmony_ci # guards for processor-specific code, instead suppress 5487cabdff1aSopenharmony_ci # generation of the HWCAPS ELF section on Solaris x86 only. 5488cabdff1aSopenharmony_ci enabled_all suncc x86 && 5489cabdff1aSopenharmony_ci echo "hwcap_1 = OVERRIDE;" > mapfile && 5490cabdff1aSopenharmony_ci add_ldflags -Wl,-M,mapfile 5491cabdff1aSopenharmony_ci nm_default='nm -P -g' 5492cabdff1aSopenharmony_ci striptype="" 5493cabdff1aSopenharmony_ci version_script='-M' 5494cabdff1aSopenharmony_ci VERSION_SCRIPT_POSTPROCESS_CMD='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)' 5495cabdff1aSopenharmony_ci ;; 5496cabdff1aSopenharmony_ci netbsd) 5497cabdff1aSopenharmony_ci disable symver 5498cabdff1aSopenharmony_ci oss_indev_extralibs="-lossaudio" 5499cabdff1aSopenharmony_ci oss_outdev_extralibs="-lossaudio" 5500cabdff1aSopenharmony_ci enabled gcc || check_ldflags -Wl,-zmuldefs 5501cabdff1aSopenharmony_ci ;; 5502cabdff1aSopenharmony_ci openbsd|bitrig) 5503cabdff1aSopenharmony_ci disable symver 5504cabdff1aSopenharmony_ci enable section_data_rel_ro 5505cabdff1aSopenharmony_ci striptype="" 5506cabdff1aSopenharmony_ci SHFLAGS='-shared' 5507cabdff1aSopenharmony_ci SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)' 5508cabdff1aSopenharmony_ci SLIB_INSTALL_LINKS= 5509cabdff1aSopenharmony_ci oss_indev_extralibs="-lossaudio" 5510cabdff1aSopenharmony_ci oss_outdev_extralibs="-lossaudio" 5511cabdff1aSopenharmony_ci ;; 5512cabdff1aSopenharmony_ci dragonfly) 5513cabdff1aSopenharmony_ci disable symver 5514cabdff1aSopenharmony_ci ;; 5515cabdff1aSopenharmony_ci freebsd) 5516cabdff1aSopenharmony_ci ;; 5517cabdff1aSopenharmony_ci bsd/os) 5518cabdff1aSopenharmony_ci add_extralibs -lpoll -lgnugetopt 5519cabdff1aSopenharmony_ci strip="strip -d" 5520cabdff1aSopenharmony_ci ;; 5521cabdff1aSopenharmony_ci darwin) 5522cabdff1aSopenharmony_ci enabled ppc && add_asflags -force_cpusubtype_ALL 5523cabdff1aSopenharmony_ci install_name_dir_default='$(SHLIBDIR)' 5524cabdff1aSopenharmony_ci SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)' 5525cabdff1aSopenharmony_ci enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress 5526cabdff1aSopenharmony_ci strip="${strip} -x" 5527cabdff1aSopenharmony_ci add_ldflags -Wl,-dynamic,-search_paths_first 5528cabdff1aSopenharmony_ci check_cflags -Werror=partial-availability 5529cabdff1aSopenharmony_ci SLIBSUF=".dylib" 5530cabdff1aSopenharmony_ci SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)' 5531cabdff1aSopenharmony_ci SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)' 5532cabdff1aSopenharmony_ci enabled x86_64 && objformat="macho64" || objformat="macho32" 5533cabdff1aSopenharmony_ci enabled_any pic shared x86_64 || 5534cabdff1aSopenharmony_ci { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; } 5535cabdff1aSopenharmony_ci check_headers dispatch/dispatch.h && 5536cabdff1aSopenharmony_ci add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore' 5537cabdff1aSopenharmony_ci if test -n "$sysroot"; then 5538cabdff1aSopenharmony_ci is_in -isysroot $cc $CPPFLAGS $CFLAGS || check_cppflags -isysroot $sysroot 5539cabdff1aSopenharmony_ci is_in -isysroot $ld $LDFLAGS || check_ldflags -isysroot $sysroot 5540cabdff1aSopenharmony_ci fi 5541cabdff1aSopenharmony_ci version_script='-exported_symbols_list' 5542cabdff1aSopenharmony_ci VERSION_SCRIPT_POSTPROCESS_CMD='tr " " "\n" | sed -n /global:/,/local:/p | grep ";" | tr ";" "\n" | sed -E "s/(.+)/_\1/g" | sed -E "s/(.+[^*])$$$$/\1*/"' 5543cabdff1aSopenharmony_ci # Workaround for Xcode 11 -fstack-check bug 5544cabdff1aSopenharmony_ci if enabled clang; then 5545cabdff1aSopenharmony_ci clang_version=$($cc -dumpversion) 5546cabdff1aSopenharmony_ci test ${clang_version%%.*} -eq 11 && add_cflags -fno-stack-check 5547cabdff1aSopenharmony_ci fi 5548cabdff1aSopenharmony_ci ;; 5549cabdff1aSopenharmony_ci msys*) 5550cabdff1aSopenharmony_ci die "Native MSYS builds are discouraged, please use the MINGW environment." 5551cabdff1aSopenharmony_ci ;; 5552cabdff1aSopenharmony_ci mingw32*|mingw64*) 5553cabdff1aSopenharmony_ci target_os=mingw32 5554cabdff1aSopenharmony_ci LIBTARGET=i386 5555cabdff1aSopenharmony_ci if enabled x86_64; then 5556cabdff1aSopenharmony_ci LIBTARGET="i386:x86-64" 5557cabdff1aSopenharmony_ci elif enabled arm; then 5558cabdff1aSopenharmony_ci LIBTARGET="arm" 5559cabdff1aSopenharmony_ci elif enabled aarch64; then 5560cabdff1aSopenharmony_ci LIBTARGET="arm64" 5561cabdff1aSopenharmony_ci fi 5562cabdff1aSopenharmony_ci if enabled shared; then 5563cabdff1aSopenharmony_ci # Cannot build both shared and static libs when using dllimport. 5564cabdff1aSopenharmony_ci disable static 5565cabdff1aSopenharmony_ci fi 5566cabdff1aSopenharmony_ci enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres 5567cabdff1aSopenharmony_ci enabled x86_32 && check_ldflags -Wl,--large-address-aware 5568cabdff1aSopenharmony_ci shlibdir_default="$bindir_default" 5569cabdff1aSopenharmony_ci SLIBPREF="" 5570cabdff1aSopenharmony_ci SLIBSUF=".dll" 5571cabdff1aSopenharmony_ci SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' 5572cabdff1aSopenharmony_ci SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' 5573cabdff1aSopenharmony_ci if test_cmd lib.exe -list; then 5574cabdff1aSopenharmony_ci SLIB_EXTRA_CMD=-'lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' 5575cabdff1aSopenharmony_ci if enabled x86_64; then 5576cabdff1aSopenharmony_ci LIBTARGET=x64 5577cabdff1aSopenharmony_ci fi 5578cabdff1aSopenharmony_ci else 5579cabdff1aSopenharmony_ci SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)' 5580cabdff1aSopenharmony_ci fi 5581cabdff1aSopenharmony_ci SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' 5582cabdff1aSopenharmony_ci SLIB_INSTALL_LINKS= 5583cabdff1aSopenharmony_ci SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' 5584cabdff1aSopenharmony_ci SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' 5585cabdff1aSopenharmony_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)' 5586cabdff1aSopenharmony_ci SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--disable-auto-image-base $$(@:$(SLIBSUF)=.def)' 5587cabdff1aSopenharmony_ci enabled x86_64 && objformat="win64" || objformat="win32" 5588cabdff1aSopenharmony_ci dlltool="${cross_prefix}dlltool" 5589cabdff1aSopenharmony_ci ranlib=: 5590cabdff1aSopenharmony_ci enable dos_paths 5591cabdff1aSopenharmony_ci check_ldflags -Wl,--nxcompat,--dynamicbase 5592cabdff1aSopenharmony_ci # Lets work around some stupidity in binutils. 5593cabdff1aSopenharmony_ci # ld will strip relocations from executables even though we need them 5594cabdff1aSopenharmony_ci # for dynamicbase (ASLR). Using -pie does retain the reloc section 5595cabdff1aSopenharmony_ci # however ld then forgets what the entry point should be (oops) so we 5596cabdff1aSopenharmony_ci # have to manually (re)set it. 5597cabdff1aSopenharmony_ci if enabled x86_32; then 5598cabdff1aSopenharmony_ci disabled debug && add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup 5599cabdff1aSopenharmony_ci elif enabled x86_64; then 5600cabdff1aSopenharmony_ci disabled debug && add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup 5601cabdff1aSopenharmony_ci check_ldflags -Wl,--high-entropy-va # binutils 2.25 5602cabdff1aSopenharmony_ci # Set image base >4GB for extra entropy with HEASLR 5603cabdff1aSopenharmony_ci add_ldexeflags -Wl,--image-base,0x140000000 5604cabdff1aSopenharmony_ci append SHFLAGS -Wl,--image-base,0x180000000 5605cabdff1aSopenharmony_ci fi 5606cabdff1aSopenharmony_ci ;; 5607cabdff1aSopenharmony_ci win32|win64) 5608cabdff1aSopenharmony_ci disable symver 5609cabdff1aSopenharmony_ci if enabled shared; then 5610cabdff1aSopenharmony_ci # Link to the import library instead of the normal static library 5611cabdff1aSopenharmony_ci # for shared libs. 5612cabdff1aSopenharmony_ci LD_LIB='%.lib' 5613cabdff1aSopenharmony_ci # Cannot build both shared and static libs with MSVC or icl. 5614cabdff1aSopenharmony_ci disable static 5615cabdff1aSopenharmony_ci fi 5616cabdff1aSopenharmony_ci enabled x86_32 && check_ldflags -LARGEADDRESSAWARE 5617cabdff1aSopenharmony_ci shlibdir_default="$bindir_default" 5618cabdff1aSopenharmony_ci SLIBPREF="" 5619cabdff1aSopenharmony_ci SLIBSUF=".dll" 5620cabdff1aSopenharmony_ci SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' 5621cabdff1aSopenharmony_ci SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' 5622cabdff1aSopenharmony_ci SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)' 5623cabdff1aSopenharmony_ci SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' 5624cabdff1aSopenharmony_ci SLIB_INSTALL_LINKS= 5625cabdff1aSopenharmony_ci SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)' 5626cabdff1aSopenharmony_ci SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)' 5627cabdff1aSopenharmony_ci SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)' 5628cabdff1aSopenharmony_ci enabled x86_64 && objformat="win64" || objformat="win32" 5629cabdff1aSopenharmony_ci ranlib=: 5630cabdff1aSopenharmony_ci enable dos_paths 5631cabdff1aSopenharmony_ci ;; 5632cabdff1aSopenharmony_ci cygwin*) 5633cabdff1aSopenharmony_ci target_os=cygwin 5634cabdff1aSopenharmony_ci shlibdir_default="$bindir_default" 5635cabdff1aSopenharmony_ci SLIBPREF="cyg" 5636cabdff1aSopenharmony_ci SLIBSUF=".dll" 5637cabdff1aSopenharmony_ci SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' 5638cabdff1aSopenharmony_ci SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' 5639cabdff1aSopenharmony_ci SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' 5640cabdff1aSopenharmony_ci SLIB_INSTALL_LINKS= 5641cabdff1aSopenharmony_ci SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a' 5642cabdff1aSopenharmony_ci SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a' 5643cabdff1aSopenharmony_ci enabled x86_64 && objformat="win64" || objformat="win32" 5644cabdff1aSopenharmony_ci enable dos_paths 5645cabdff1aSopenharmony_ci enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres 5646cabdff1aSopenharmony_ci add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 5647cabdff1aSopenharmony_ci ;; 5648cabdff1aSopenharmony_ci *-dos|freedos|opendos) 5649cabdff1aSopenharmony_ci network_extralibs="-lsocket" 5650cabdff1aSopenharmony_ci objformat="coff" 5651cabdff1aSopenharmony_ci enable dos_paths 5652cabdff1aSopenharmony_ci ;; 5653cabdff1aSopenharmony_ci linux) 5654cabdff1aSopenharmony_ci enable section_data_rel_ro 5655cabdff1aSopenharmony_ci enabled_any arm aarch64 && enable_weak linux_perf 5656cabdff1aSopenharmony_ci ;; 5657cabdff1aSopenharmony_ci irix*) 5658cabdff1aSopenharmony_ci target_os=irix 5659cabdff1aSopenharmony_ci ranlib="echo ignoring ranlib" 5660cabdff1aSopenharmony_ci ;; 5661cabdff1aSopenharmony_ci os/2*) 5662cabdff1aSopenharmony_ci strip="lxlite -CS" 5663cabdff1aSopenharmony_ci striptype="" 5664cabdff1aSopenharmony_ci objformat="aout" 5665cabdff1aSopenharmony_ci add_cppflags -D_GNU_SOURCE 5666cabdff1aSopenharmony_ci add_ldflags -Zomf -Zbin-files -Zargs-wild -Zhigh-mem -Zmap 5667cabdff1aSopenharmony_ci SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf' 5668cabdff1aSopenharmony_ci LIBSUF="_s.a" 5669cabdff1aSopenharmony_ci SLIBPREF="" 5670cabdff1aSopenharmony_ci SLIBSUF=".dll" 5671cabdff1aSopenharmony_ci SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)' 5672cabdff1aSopenharmony_ci SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(FULLNAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)' 5673cabdff1aSopenharmony_ci SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(FULLNAME).def; \ 5674cabdff1aSopenharmony_ci echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(FULLNAME).def; \ 5675cabdff1aSopenharmony_ci echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(FULLNAME).def; \ 5676cabdff1aSopenharmony_ci echo EXPORTS >> $(SUBDIR)$(FULLNAME).def; \ 5677cabdff1aSopenharmony_ci emxexp $(OBJS) >> $(SUBDIR)$(FULLNAME).def' 5678cabdff1aSopenharmony_ci SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.a $(SUBDIR)$(FULLNAME).def; \ 5679cabdff1aSopenharmony_ci emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.lib $(SUBDIR)$(FULLNAME).def;' 5680cabdff1aSopenharmony_ci SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' 5681cabdff1aSopenharmony_ci SLIB_INSTALL_LINKS= 5682cabdff1aSopenharmony_ci SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(FULLNAME)_dll.a $(LIBPREF)$(FULLNAME)_dll.lib' 5683cabdff1aSopenharmony_ci enable dos_paths 5684cabdff1aSopenharmony_ci enable_weak os2threads 5685cabdff1aSopenharmony_ci ;; 5686cabdff1aSopenharmony_ci gnu/kfreebsd) 5687cabdff1aSopenharmony_ci add_cppflags -D_BSD_SOURCE 5688cabdff1aSopenharmony_ci ;; 5689cabdff1aSopenharmony_ci gnu) 5690cabdff1aSopenharmony_ci ;; 5691cabdff1aSopenharmony_ci qnx) 5692cabdff1aSopenharmony_ci add_cppflags -D_QNX_SOURCE 5693cabdff1aSopenharmony_ci network_extralibs="-lsocket" 5694cabdff1aSopenharmony_ci ;; 5695cabdff1aSopenharmony_ci symbian) 5696cabdff1aSopenharmony_ci SLIBSUF=".dll" 5697cabdff1aSopenharmony_ci enable dos_paths 5698cabdff1aSopenharmony_ci add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default 5699cabdff1aSopenharmony_ci add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS 5700cabdff1aSopenharmony_ci add_ldflags -Wl,--target1-abs,--no-undefined \ 5701cabdff1aSopenharmony_ci -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \ 5702cabdff1aSopenharmony_ci -Wl,--entry=_E32Startup -Wl,-u,_E32Startup 5703cabdff1aSopenharmony_ci add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \ 5704cabdff1aSopenharmony_ci -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \ 5705cabdff1aSopenharmony_ci -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib 5706cabdff1aSopenharmony_ci ;; 5707cabdff1aSopenharmony_ci minix) 5708cabdff1aSopenharmony_ci ;; 5709cabdff1aSopenharmony_ci none) 5710cabdff1aSopenharmony_ci ;; 5711cabdff1aSopenharmony_ci *) 5712cabdff1aSopenharmony_ci die "Unknown OS '$target_os'." 5713cabdff1aSopenharmony_ci ;; 5714cabdff1aSopenharmony_ciesac 5715cabdff1aSopenharmony_ci 5716cabdff1aSopenharmony_ci# test if creating links works 5717cabdff1aSopenharmony_cilink_dest=$(mktemp -u $TMPDIR/dest_XXXXXXXX) 5718cabdff1aSopenharmony_cilink_name=$(mktemp -u $TMPDIR/name_XXXXXXXX) 5719cabdff1aSopenharmony_cimkdir "$link_dest" 5720cabdff1aSopenharmony_ci$ln_s "$link_dest" "$link_name" 5721cabdff1aSopenharmony_citouch "$link_dest/test_file" 5722cabdff1aSopenharmony_ciif [ "$source_path" != "." ] && [ "$source_path" != "src" ] && ([ ! -d src ] || [ -L src ]) && [ -e "$link_name/test_file" ]; then 5723cabdff1aSopenharmony_ci # create link to source path 5724cabdff1aSopenharmony_ci [ -e src ] && rm src 5725cabdff1aSopenharmony_ci $ln_s "$source_path" src 5726cabdff1aSopenharmony_ci source_link=src 5727cabdff1aSopenharmony_cielse 5728cabdff1aSopenharmony_ci # creating directory links doesn't work 5729cabdff1aSopenharmony_ci # fall back to using the full source path 5730cabdff1aSopenharmony_ci source_link="$source_path" 5731cabdff1aSopenharmony_cifi 5732cabdff1aSopenharmony_ci# cleanup 5733cabdff1aSopenharmony_cirm -r "$link_dest" 5734cabdff1aSopenharmony_cirm -r "$link_name" 5735cabdff1aSopenharmony_ci 5736cabdff1aSopenharmony_ci# determine libc flavour 5737cabdff1aSopenharmony_ci 5738cabdff1aSopenharmony_ciprobe_libc(){ 5739cabdff1aSopenharmony_ci pfx=$1 5740cabdff1aSopenharmony_ci pfx_no_=${pfx%_} 5741cabdff1aSopenharmony_ci # uclibc defines __GLIBC__, so it needs to be checked before glibc. 5742cabdff1aSopenharmony_ci if test_${pfx}cpp_condition features.h "defined __UCLIBC__"; then 5743cabdff1aSopenharmony_ci eval ${pfx}libc_type=uclibc 5744cabdff1aSopenharmony_ci add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 5745cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition features.h "defined __GLIBC__"; then 5746cabdff1aSopenharmony_ci eval ${pfx}libc_type=glibc 5747cabdff1aSopenharmony_ci add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 5748cabdff1aSopenharmony_ci # MinGW headers can be installed on Cygwin, so check for newlib first. 5749cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then 5750cabdff1aSopenharmony_ci eval ${pfx}libc_type=newlib 5751cabdff1aSopenharmony_ci add_${pfx}cppflags -U__STRICT_ANSI__ -D_XOPEN_SOURCE=600 5752cabdff1aSopenharmony_ci # MinGW64 is backwards compatible with MinGW32, so check for it first. 5753cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then 5754cabdff1aSopenharmony_ci eval ${pfx}libc_type=mingw64 5755cabdff1aSopenharmony_ci if test_${pfx}cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then 5756cabdff1aSopenharmony_ci add_compat msvcrt/snprintf.o 5757cabdff1aSopenharmony_ci add_cflags "-include $source_path/compat/msvcrt/snprintf.h" 5758cabdff1aSopenharmony_ci fi 5759cabdff1aSopenharmony_ci add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 5760cabdff1aSopenharmony_ci eval test \$${pfx_no_}cc_type = "gcc" && 5761cabdff1aSopenharmony_ci add_${pfx}cppflags -D__printf__=__gnu_printf__ 5762cabdff1aSopenharmony_ci test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" && 5763cabdff1aSopenharmony_ci add_${pfx}cppflags -D_WIN32_WINNT=0x0600 5764cabdff1aSopenharmony_ci add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 5765cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION" || 5766cabdff1aSopenharmony_ci test_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then 5767cabdff1aSopenharmony_ci eval ${pfx}libc_type=mingw32 5768cabdff1aSopenharmony_ci test_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \ 5769cabdff1aSopenharmony_ci (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" || 5770cabdff1aSopenharmony_ci die "ERROR: MinGW32 runtime version must be >= 3.15." 5771cabdff1aSopenharmony_ci add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 5772cabdff1aSopenharmony_ci test_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700" && 5773cabdff1aSopenharmony_ci add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700 5774cabdff1aSopenharmony_ci test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" && 5775cabdff1aSopenharmony_ci add_${pfx}cppflags -D_WIN32_WINNT=0x0600 5776cabdff1aSopenharmony_ci eval test \$${pfx_no_}cc_type = "gcc" && 5777cabdff1aSopenharmony_ci add_${pfx}cppflags -D__printf__=__gnu_printf__ 5778cabdff1aSopenharmony_ci add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 5779cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then 5780cabdff1aSopenharmony_ci eval ${pfx}libc_type=msvcrt 5781cabdff1aSopenharmony_ci if test_${pfx}cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14"; then 5782cabdff1aSopenharmony_ci if [ "$pfx" = host_ ]; then 5783cabdff1aSopenharmony_ci add_host_cppflags -Dsnprintf=_snprintf 5784cabdff1aSopenharmony_ci else 5785cabdff1aSopenharmony_ci add_compat strtod.o strtod=avpriv_strtod 5786cabdff1aSopenharmony_ci add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \ 5787cabdff1aSopenharmony_ci _snprintf=avpriv_snprintf \ 5788cabdff1aSopenharmony_ci vsnprintf=avpriv_vsnprintf 5789cabdff1aSopenharmony_ci fi 5790cabdff1aSopenharmony_ci fi 5791cabdff1aSopenharmony_ci add_${pfx}cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS 5792cabdff1aSopenharmony_ci # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to 5793cabdff1aSopenharmony_ci # 0x601 by default unless something else is set by the user. 5794cabdff1aSopenharmony_ci # This can easily lead to us detecting functions only present 5795cabdff1aSopenharmony_ci # in such new versions and producing binaries requiring windows 7.0. 5796cabdff1aSopenharmony_ci # Therefore explicitly set the default to Vista unless the user has 5797cabdff1aSopenharmony_ci # set something else on the command line. 5798cabdff1aSopenharmony_ci # Don't do this if WINAPI_FAMILY is set and is set to a non-desktop 5799cabdff1aSopenharmony_ci # family. For these cases, configure is free to use any functions 5800cabdff1aSopenharmony_ci # found in the SDK headers by default. (Alternatively, we could force 5801cabdff1aSopenharmony_ci # _WIN32_WINNT to 0x0602 in that case.) 5802cabdff1aSopenharmony_ci test_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" || 5803cabdff1aSopenharmony_ci { test_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0600; } 5804cabdff1aSopenharmony_ci#ifdef WINAPI_FAMILY 5805cabdff1aSopenharmony_ci#include <winapifamily.h> 5806cabdff1aSopenharmony_ci#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 5807cabdff1aSopenharmony_ci#error not desktop 5808cabdff1aSopenharmony_ci#endif 5809cabdff1aSopenharmony_ci#endif 5810cabdff1aSopenharmony_ciEOF 5811cabdff1aSopenharmony_ci if [ "$pfx" = "" ]; then 5812cabdff1aSopenharmony_ci check_func strtoll || add_cflags -Dstrtoll=_strtoi64 5813cabdff1aSopenharmony_ci check_func strtoull || add_cflags -Dstrtoull=_strtoui64 5814cabdff1aSopenharmony_ci fi 5815cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then 5816cabdff1aSopenharmony_ci eval ${pfx}libc_type=klibc 5817cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then 5818cabdff1aSopenharmony_ci eval ${pfx}libc_type=bionic 5819cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition sys/brand.h "defined LABELED_BRAND_NAME"; then 5820cabdff1aSopenharmony_ci eval ${pfx}libc_type=solaris 5821cabdff1aSopenharmony_ci add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600 5822cabdff1aSopenharmony_ci elif test_${pfx}cpp_condition sys/version.h "defined __DJGPP__"; then 5823cabdff1aSopenharmony_ci eval ${pfx}libc_type=djgpp 5824cabdff1aSopenharmony_ci add_cppflags -U__STRICT_ANSI__ 5825cabdff1aSopenharmony_ci add_cflags "-include $source_path/compat/djgpp/math.h" 5826cabdff1aSopenharmony_ci add_compat djgpp/math.o 5827cabdff1aSopenharmony_ci fi 5828cabdff1aSopenharmony_ci test_${pfx}cc <<EOF 5829cabdff1aSopenharmony_ci#include <time.h> 5830cabdff1aSopenharmony_civoid *v = localtime_r; 5831cabdff1aSopenharmony_ciEOF 5832cabdff1aSopenharmony_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 5833cabdff1aSopenharmony_ci#include <time.h> 5834cabdff1aSopenharmony_civoid *v = localtime_r; 5835cabdff1aSopenharmony_ciEOF 5836cabdff1aSopenharmony_ci 5837cabdff1aSopenharmony_ci eval test -n "\${${pfx}libc_type}" && enable ${pfx}libc_${libc_type} 5838cabdff1aSopenharmony_ci} 5839cabdff1aSopenharmony_ci 5840cabdff1aSopenharmony_ciprobe_libc 5841cabdff1aSopenharmony_ciprobe_libc host_ 5842cabdff1aSopenharmony_ci 5843cabdff1aSopenharmony_ci# hacks for compiler/libc/os combinations 5844cabdff1aSopenharmony_ci 5845cabdff1aSopenharmony_cicase $libc_type in 5846cabdff1aSopenharmony_ci bionic) 5847cabdff1aSopenharmony_ci add_compat strtod.o strtod=avpriv_strtod 5848cabdff1aSopenharmony_ci ;; 5849cabdff1aSopenharmony_ciesac 5850cabdff1aSopenharmony_ci 5851cabdff1aSopenharmony_cicheck_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" || 5852cabdff1aSopenharmony_ci add_cppflags '-I\$(SRC_PATH)/compat/float' 5853cabdff1aSopenharmony_ci 5854cabdff1aSopenharmony_citest_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic 5855cabdff1aSopenharmony_ci 5856cabdff1aSopenharmony_ciset_default libdir 5857cabdff1aSopenharmony_ci: ${shlibdir_default:="$libdir"} 5858cabdff1aSopenharmony_ci: ${pkgconfigdir_default:="$libdir/pkgconfig"} 5859cabdff1aSopenharmony_ci 5860cabdff1aSopenharmony_ciset_default $PATHS_LIST 5861cabdff1aSopenharmony_ciset_default nm 5862cabdff1aSopenharmony_ci 5863cabdff1aSopenharmony_cidisabled optimizations || enabled ossfuzz || check_cflags -fomit-frame-pointer 5864cabdff1aSopenharmony_ci 5865cabdff1aSopenharmony_cienable_weak_pic() { 5866cabdff1aSopenharmony_ci disabled pic && return 5867cabdff1aSopenharmony_ci enable pic 5868cabdff1aSopenharmony_ci add_cppflags -DPIC 5869cabdff1aSopenharmony_ci case "$target_os" in 5870cabdff1aSopenharmony_ci mingw*|cygwin*|win*) 5871cabdff1aSopenharmony_ci ;; 5872cabdff1aSopenharmony_ci *) 5873cabdff1aSopenharmony_ci add_cflags -fPIC 5874cabdff1aSopenharmony_ci add_asflags -fPIC 5875cabdff1aSopenharmony_ci ;; 5876cabdff1aSopenharmony_ci esac 5877cabdff1aSopenharmony_ci} 5878cabdff1aSopenharmony_ci 5879cabdff1aSopenharmony_cienabled pic && enable_weak_pic 5880cabdff1aSopenharmony_ci 5881cabdff1aSopenharmony_citest_cc <<EOF || die "Symbol mangling check failed." 5882cabdff1aSopenharmony_ciint ff_extern; 5883cabdff1aSopenharmony_ciEOF 5884cabdff1aSopenharmony_cisym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }') 5885cabdff1aSopenharmony_ciextern_prefix=${sym%%ff_extern*} 5886cabdff1aSopenharmony_ci 5887cabdff1aSopenharmony_ci! disabled inline_asm && check_inline_asm inline_asm '"" ::' 5888cabdff1aSopenharmony_ci 5889cabdff1aSopenharmony_cifor restrict_keyword in restrict __restrict__ __restrict ""; do 5890cabdff1aSopenharmony_ci test_code cc "" "char * $restrict_keyword p" && break 5891cabdff1aSopenharmony_cidone 5892cabdff1aSopenharmony_ci 5893cabdff1aSopenharmony_cicheck_cc pragma_deprecated "" '_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")' 5894cabdff1aSopenharmony_ci 5895cabdff1aSopenharmony_ci# The global variable ensures the bits appear unchanged in the object file. 5896cabdff1aSopenharmony_citest_cc <<EOF || die "endian test failed" 5897cabdff1aSopenharmony_ciunsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E'; 5898cabdff1aSopenharmony_ciEOF 5899cabdff1aSopenharmony_ciod -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian 5900cabdff1aSopenharmony_ci 5901cabdff1aSopenharmony_cicheck_cc const_nan math.h "struct { double d; } static const bar[] = { { NAN } }" 5902cabdff1aSopenharmony_ci 5903cabdff1aSopenharmony_ciif ! enabled ppc64 || enabled bigendian; then 5904cabdff1aSopenharmony_ci disable vsx 5905cabdff1aSopenharmony_cifi 5906cabdff1aSopenharmony_ci 5907cabdff1aSopenharmony_cicheck_gas() { 5908cabdff1aSopenharmony_ci log "check_gas using '$as' as AS" 5909cabdff1aSopenharmony_ci # :vararg is used on aarch64, arm and ppc altivec 5910cabdff1aSopenharmony_ci check_as vararg " 5911cabdff1aSopenharmony_ci.macro m n, y:vararg=0 5912cabdff1aSopenharmony_ci\n: .int \y 5913cabdff1aSopenharmony_ci.endm 5914cabdff1aSopenharmony_cim x" || return 1 5915cabdff1aSopenharmony_ci # .altmacro is only used in arm asm 5916cabdff1aSopenharmony_ci ! enabled arm || check_as gnu_as ".altmacro" 5917cabdff1aSopenharmony_ci} 5918cabdff1aSopenharmony_ci 5919cabdff1aSopenharmony_ciif enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then 5920cabdff1aSopenharmony_ci nogas=: 5921cabdff1aSopenharmony_ci enabled_any arm aarch64 && nogas=die 5922cabdff1aSopenharmony_ci enabled_all ppc altivec && [ $target_os_default != aix ] && nogas=warn 5923cabdff1aSopenharmony_ci as_noop=-v 5924cabdff1aSopenharmony_ci 5925cabdff1aSopenharmony_ci case $as_type in 5926cabdff1aSopenharmony_ci arm*) gaspp_as_type=armasm; as_noop=-h ;; 5927cabdff1aSopenharmony_ci gcc) gaspp_as_type=gas ;; 5928cabdff1aSopenharmony_ci *) gaspp_as_type=$as_type ;; 5929cabdff1aSopenharmony_ci esac 5930cabdff1aSopenharmony_ci 5931cabdff1aSopenharmony_ci [ $target_os = "darwin" ] && gaspp_as_type="apple-$gaspp_as_type" 5932cabdff1aSopenharmony_ci 5933cabdff1aSopenharmony_ci test "${as#*gas-preprocessor.pl}" != "$as" || 5934cabdff1aSopenharmony_ci test_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- ${as:=$cc} $as_noop && 5935cabdff1aSopenharmony_ci gas="${gas:=gas-preprocessor.pl} -arch $arch -as-type $gaspp_as_type -- ${as:=$cc}" 5936cabdff1aSopenharmony_ci 5937cabdff1aSopenharmony_ci if ! check_gas ; then 5938cabdff1aSopenharmony_ci as=${gas:=$as} 5939cabdff1aSopenharmony_ci check_gas || \ 5940cabdff1aSopenharmony_ci $nogas "GNU assembler not found, install/update gas-preprocessor" 5941cabdff1aSopenharmony_ci fi 5942cabdff1aSopenharmony_ci 5943cabdff1aSopenharmony_ci check_as as_func ".func test 5944cabdff1aSopenharmony_ci .endfunc" 5945cabdff1aSopenharmony_cifi 5946cabdff1aSopenharmony_ci 5947cabdff1aSopenharmony_cicheck_inline_asm inline_asm_labels '"1:\n"' 5948cabdff1aSopenharmony_ci 5949cabdff1aSopenharmony_cicheck_inline_asm inline_asm_nonlocal_labels '"Label:\n"' 5950cabdff1aSopenharmony_ci 5951cabdff1aSopenharmony_ciif enabled aarch64; then 5952cabdff1aSopenharmony_ci enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]' 5953cabdff1aSopenharmony_ci # internal assembler in clang 3.3 does not support this instruction 5954cabdff1aSopenharmony_ci enabled neon && check_insn neon 'ext v0.8B, v0.8B, v1.8B, #1' 5955cabdff1aSopenharmony_ci enabled vfp && check_insn vfp 'fmadd d0, d0, d1, d2' 5956cabdff1aSopenharmony_ci 5957cabdff1aSopenharmony_ci map 'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM 5958cabdff1aSopenharmony_ci 5959cabdff1aSopenharmony_cielif enabled alpha; then 5960cabdff1aSopenharmony_ci 5961cabdff1aSopenharmony_ci check_cflags -mieee 5962cabdff1aSopenharmony_ci 5963cabdff1aSopenharmony_cielif enabled arm; then 5964cabdff1aSopenharmony_ci 5965cabdff1aSopenharmony_ci enabled msvc && check_cpp_condition thumb stddef.h "defined _M_ARMT" 5966cabdff1aSopenharmony_ci test_cpp_condition stddef.h "defined __thumb__" && test_cc <<EOF && enable_weak thumb 5967cabdff1aSopenharmony_cifloat func(float a, float b){ return a+b; } 5968cabdff1aSopenharmony_ciEOF 5969cabdff1aSopenharmony_ci enabled thumb && check_cflags -mthumb || check_cflags -marm 5970cabdff1aSopenharmony_ci 5971cabdff1aSopenharmony_ci if check_cpp_condition vfp_args stddef.h "defined __ARM_PCS_VFP"; then 5972cabdff1aSopenharmony_ci : 5973cabdff1aSopenharmony_ci elif check_cpp_condition vfp_args stddef.h "defined _M_ARM_FP && _M_ARM_FP >= 30"; then 5974cabdff1aSopenharmony_ci : 5975cabdff1aSopenharmony_ci elif ! test_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ]; then 5976cabdff1aSopenharmony_ci case "${cross_prefix:-$cc}" in 5977cabdff1aSopenharmony_ci *hardfloat*) enable vfp_args; fpabi=vfp ;; 5978cabdff1aSopenharmony_ci *) check_ld "cc" vfp_args <<EOF && fpabi=vfp || fpabi=soft ;; 5979cabdff1aSopenharmony_ci__asm__ (".eabi_attribute 28, 1"); 5980cabdff1aSopenharmony_ciint main(void) { return 0; } 5981cabdff1aSopenharmony_ciEOF 5982cabdff1aSopenharmony_ci esac 5983cabdff1aSopenharmony_ci warn "Compiler does not indicate floating-point ABI, guessing $fpabi." 5984cabdff1aSopenharmony_ci fi 5985cabdff1aSopenharmony_ci 5986cabdff1aSopenharmony_ci enabled armv5te && check_insn armv5te 'qadd r0, r0, r0' 5987cabdff1aSopenharmony_ci enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0' 5988cabdff1aSopenharmony_ci enabled armv6t2 && check_insn armv6t2 'movt r0, #0' 5989cabdff1aSopenharmony_ci enabled neon && check_insn neon 'vadd.i16 q0, q0, q0' 5990cabdff1aSopenharmony_ci enabled vfp && check_insn vfp 'fadds s0, s0, s0' 5991cabdff1aSopenharmony_ci enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0' 5992cabdff1aSopenharmony_ci enabled setend && check_insn setend 'setend be' 5993cabdff1aSopenharmony_ci 5994cabdff1aSopenharmony_ci [ $target_os = linux ] || [ $target_os = android ] || 5995cabdff1aSopenharmony_ci map 'enabled_any ${v}_external ${v}_inline || disable $v' \ 5996cabdff1aSopenharmony_ci $ARCH_EXT_LIST_ARM 5997cabdff1aSopenharmony_ci 5998cabdff1aSopenharmony_ci check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)' 5999cabdff1aSopenharmony_ci 6000cabdff1aSopenharmony_ci check_as as_arch_directive ".arch armv7-a" 6001cabdff1aSopenharmony_ci check_as as_dn_directive "ra .dn d0.i16" 6002cabdff1aSopenharmony_ci check_as as_fpu_directive ".fpu neon" 6003cabdff1aSopenharmony_ci 6004cabdff1aSopenharmony_ci # llvm's integrated assembler supports .object_arch from llvm 3.5 6005cabdff1aSopenharmony_ci [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] && 6006cabdff1aSopenharmony_ci check_as as_object_arch ".object_arch armv4" 6007cabdff1aSopenharmony_ci 6008cabdff1aSopenharmony_ci # MS armasm fails to assemble our PIC constructs 6009cabdff1aSopenharmony_ci [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic 6010cabdff1aSopenharmony_ci 6011cabdff1aSopenharmony_cielif enabled mips; then 6012cabdff1aSopenharmony_ci 6013cabdff1aSopenharmony_ci # Check toolchain ISA level 6014cabdff1aSopenharmony_ci if enabled mips64; then 6015cabdff1aSopenharmony_ci enabled mips64r6 && check_inline_asm mips64r6 '"dlsa $0, $0, $0, 1"' && 6016cabdff1aSopenharmony_ci disable mips64r2 6017cabdff1aSopenharmony_ci 6018cabdff1aSopenharmony_ci enabled mips64r2 && check_inline_asm mips64r2 '"dext $0, $0, 0, 1"' 6019cabdff1aSopenharmony_ci 6020cabdff1aSopenharmony_ci disable mips32r6 && disable mips32r5 && disable mips32r2 6021cabdff1aSopenharmony_ci else 6022cabdff1aSopenharmony_ci enabled mips32r6 && check_inline_asm mips32r6 '"aui $0, $0, 0"' && 6023cabdff1aSopenharmony_ci disable mips32r5 && disable mips32r2 6024cabdff1aSopenharmony_ci 6025cabdff1aSopenharmony_ci enabled mips32r5 && check_inline_asm mips32r5 '"eretnc"' 6026cabdff1aSopenharmony_ci enabled mips32r2 && check_inline_asm mips32r2 '"ext $0, $0, 0, 1"' 6027cabdff1aSopenharmony_ci 6028cabdff1aSopenharmony_ci disable mips64r6 && disable mips64r5 && disable mips64r2 6029cabdff1aSopenharmony_ci fi 6030cabdff1aSopenharmony_ci 6031cabdff1aSopenharmony_ci enabled mipsfpu && check_inline_asm mipsfpu '"cvt.d.l $f0, $f2"' 6032cabdff1aSopenharmony_ci enabled mipsfpu && (enabled mips32r5 || enabled mips32r6 || enabled mips64r6) && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f1"' '-mfp64' 6033cabdff1aSopenharmony_ci 6034cabdff1aSopenharmony_ci enabled mipsdsp && check_inline_asm_flags mipsdsp '"addu.qb $t0, $t1, $t2"' '-mdsp' 6035cabdff1aSopenharmony_ci enabled mipsdspr2 && check_inline_asm_flags mipsdspr2 '"absq_s.qb $t0, $t1"' '-mdspr2' 6036cabdff1aSopenharmony_ci 6037cabdff1aSopenharmony_ci # MSA can be detected at runtime so we supply extra flags here 6038cabdff1aSopenharmony_ci enabled mipsfpu && enabled msa && check_inline_asm msa '"addvi.b $w0, $w1, 1"' '-mmsa' && append MSAFLAGS '-mmsa' 6039cabdff1aSopenharmony_ci 6040cabdff1aSopenharmony_ci # loongson2 have no switch cflag so we can only probe toolchain ability 6041cabdff1aSopenharmony_ci enabled loongson2 && check_inline_asm loongson2 '"dmult.g $8, $9, $10"' && disable loongson3 6042cabdff1aSopenharmony_ci 6043cabdff1aSopenharmony_ci # loongson3 is paired with MMI 6044cabdff1aSopenharmony_ci enabled loongson3 && check_inline_asm loongson3 '"gsldxc1 $f0, 0($2, $3)"' '-mloongson-ext' && append MMIFLAGS '-mloongson-ext' 6045cabdff1aSopenharmony_ci 6046cabdff1aSopenharmony_ci # MMI can be detected at runtime too 6047cabdff1aSopenharmony_ci enabled mmi && check_inline_asm mmi '"pxor $f0, $f0, $f0"' '-mloongson-mmi' && append MMIFLAGS '-mloongson-mmi' 6048cabdff1aSopenharmony_ci 6049cabdff1aSopenharmony_ci if enabled bigendian && enabled msa; then 6050cabdff1aSopenharmony_ci disable msa 6051cabdff1aSopenharmony_ci fi 6052cabdff1aSopenharmony_ci 6053cabdff1aSopenharmony_cielif enabled parisc; then 6054cabdff1aSopenharmony_ci 6055cabdff1aSopenharmony_ci if enabled gcc; then 6056cabdff1aSopenharmony_ci case $($cc -dumpversion) in 6057cabdff1aSopenharmony_ci 4.[3-9].*) check_cflags -fno-optimize-sibling-calls ;; 6058cabdff1aSopenharmony_ci esac 6059cabdff1aSopenharmony_ci fi 6060cabdff1aSopenharmony_ci 6061cabdff1aSopenharmony_cielif enabled ppc; then 6062cabdff1aSopenharmony_ci 6063cabdff1aSopenharmony_ci enable local_aligned 6064cabdff1aSopenharmony_ci 6065cabdff1aSopenharmony_ci check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)' 6066cabdff1aSopenharmony_ci check_inline_asm ibm_asm '"add 0, 0, 0"' 6067cabdff1aSopenharmony_ci check_inline_asm ppc4xx '"maclhw r10, r11, r12"' 6068cabdff1aSopenharmony_ci check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)' 6069cabdff1aSopenharmony_ci 6070cabdff1aSopenharmony_ci if enabled altivec; then 6071cabdff1aSopenharmony_ci check_cflags -maltivec -mabi=altivec 6072cabdff1aSopenharmony_ci 6073cabdff1aSopenharmony_ci # check if our compiler supports Motorola AltiVec C API 6074cabdff1aSopenharmony_ci check_cc altivec altivec.h "vector signed int v1 = (vector signed int) { 0 }; 6075cabdff1aSopenharmony_ci vector signed int v2 = (vector signed int) { 1 }; 6076cabdff1aSopenharmony_ci v1 = vec_add(v1, v2);" 6077cabdff1aSopenharmony_ci 6078cabdff1aSopenharmony_ci enabled altivec || warn "Altivec disabled, possibly missing --cpu flag" 6079cabdff1aSopenharmony_ci fi 6080cabdff1aSopenharmony_ci 6081cabdff1aSopenharmony_ci if enabled vsx; then 6082cabdff1aSopenharmony_ci check_cflags -mvsx && 6083cabdff1aSopenharmony_ci check_cc vsx altivec.h "int v[4] = { 0 }; 6084cabdff1aSopenharmony_ci vector signed int v1 = vec_vsx_ld(0, v);" 6085cabdff1aSopenharmony_ci fi 6086cabdff1aSopenharmony_ci 6087cabdff1aSopenharmony_ci if enabled power8; then 6088cabdff1aSopenharmony_ci check_cpp_condition power8 "altivec.h" "defined(_ARCH_PWR8)" 6089cabdff1aSopenharmony_ci fi 6090cabdff1aSopenharmony_ci 6091cabdff1aSopenharmony_cielif enabled x86; then 6092cabdff1aSopenharmony_ci 6093cabdff1aSopenharmony_ci check_builtin rdtsc intrin.h "__rdtsc()" 6094cabdff1aSopenharmony_ci check_builtin mm_empty mmintrin.h "_mm_empty()" 6095cabdff1aSopenharmony_ci 6096cabdff1aSopenharmony_ci enable local_aligned 6097cabdff1aSopenharmony_ci 6098cabdff1aSopenharmony_ci # check whether EBP is available on x86 6099cabdff1aSopenharmony_ci # As 'i' is stored on the stack, this program will crash 6100cabdff1aSopenharmony_ci # if the base pointer is used to access it because the 6101cabdff1aSopenharmony_ci # base pointer is cleared in the inline assembly code. 6102cabdff1aSopenharmony_ci check_exec_crash <<EOF && enable ebp_available 6103cabdff1aSopenharmony_civolatile int i=0; 6104cabdff1aSopenharmony_ci__asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp"); 6105cabdff1aSopenharmony_cireturn i; 6106cabdff1aSopenharmony_ciEOF 6107cabdff1aSopenharmony_ci 6108cabdff1aSopenharmony_ci # check whether EBX is available on x86 6109cabdff1aSopenharmony_ci check_inline_asm ebx_available '""::"b"(0)' && 6110cabdff1aSopenharmony_ci check_inline_asm ebx_available '"":::"%ebx"' 6111cabdff1aSopenharmony_ci 6112cabdff1aSopenharmony_ci # check whether xmm clobbers are supported 6113cabdff1aSopenharmony_ci check_inline_asm xmm_clobbers '"":::"%xmm0"' 6114cabdff1aSopenharmony_ci 6115cabdff1aSopenharmony_ci check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test, %eax"' || 6116cabdff1aSopenharmony_ci check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test(%rip), %eax"' 6117cabdff1aSopenharmony_ci 6118cabdff1aSopenharmony_ci # check whether binutils is new enough to compile SSSE3/MMXEXT 6119cabdff1aSopenharmony_ci enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"' 6120cabdff1aSopenharmony_ci enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"' 6121cabdff1aSopenharmony_ci 6122cabdff1aSopenharmony_ci probe_x86asm(){ 6123cabdff1aSopenharmony_ci x86asmexe_probe=$1 6124cabdff1aSopenharmony_ci if test_cmd $x86asmexe_probe -v; then 6125cabdff1aSopenharmony_ci x86asmexe=$x86asmexe_probe 6126cabdff1aSopenharmony_ci x86asm_type=nasm 6127cabdff1aSopenharmony_ci x86asm_debug="-g -F dwarf" 6128cabdff1aSopenharmony_ci X86ASMDEP= 6129cabdff1aSopenharmony_ci X86ASM_DEPFLAGS='-MD $(@:.o=.d)' 6130cabdff1aSopenharmony_ci elif test_cmd $x86asmexe_probe --version; then 6131cabdff1aSopenharmony_ci x86asmexe=$x86asmexe_probe 6132cabdff1aSopenharmony_ci x86asm_type=yasm 6133cabdff1aSopenharmony_ci x86asm_debug="-g dwarf2" 6134cabdff1aSopenharmony_ci X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)' 6135cabdff1aSopenharmony_ci X86ASM_DEPFLAGS= 6136cabdff1aSopenharmony_ci fi 6137cabdff1aSopenharmony_ci check_x86asm x86asm "movbe ecx, [5]" 6138cabdff1aSopenharmony_ci } 6139cabdff1aSopenharmony_ci 6140cabdff1aSopenharmony_ci if ! disabled_any asm mmx x86asm; then 6141cabdff1aSopenharmony_ci disable x86asm 6142cabdff1aSopenharmony_ci for program in $x86asmexe nasm yasm; do 6143cabdff1aSopenharmony_ci probe_x86asm $program && break 6144cabdff1aSopenharmony_ci done 6145cabdff1aSopenharmony_ci disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build." 6146cabdff1aSopenharmony_ci X86ASMFLAGS="-f $objformat" 6147cabdff1aSopenharmony_ci enabled pic && append X86ASMFLAGS "-DPIC" 6148cabdff1aSopenharmony_ci test -n "$extern_prefix" && append X86ASMFLAGS "-DPREFIX" 6149cabdff1aSopenharmony_ci case "$objformat" in 6150cabdff1aSopenharmony_ci elf*) enabled debug && append X86ASMFLAGS $x86asm_debug ;; 6151cabdff1aSopenharmony_ci esac 6152cabdff1aSopenharmony_ci 6153cabdff1aSopenharmony_ci enabled avx512 && check_x86asm avx512_external "vmovdqa32 [eax]{k1}{z}, zmm0" 6154cabdff1aSopenharmony_ci enabled avx512icl && check_x86asm avx512icl_external "vpdpwssds zmm31{k1}{z}, zmm29, zmm28" 6155cabdff1aSopenharmony_ci enabled avx2 && check_x86asm avx2_external "vextracti128 xmm0, ymm0, 0" 6156cabdff1aSopenharmony_ci enabled xop && check_x86asm xop_external "vpmacsdd xmm0, xmm1, xmm2, xmm3" 6157cabdff1aSopenharmony_ci enabled fma4 && check_x86asm fma4_external "vfmaddps ymm0, ymm1, ymm2, ymm3" 6158cabdff1aSopenharmony_ci check_x86asm cpunop "CPU amdnop" 6159cabdff1aSopenharmony_ci fi 6160cabdff1aSopenharmony_ci 6161cabdff1aSopenharmony_ci case "$cpu" in 6162cabdff1aSopenharmony_ci athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode) 6163cabdff1aSopenharmony_ci disable fast_clz 6164cabdff1aSopenharmony_ci ;; 6165cabdff1aSopenharmony_ci esac 6166cabdff1aSopenharmony_ci 6167cabdff1aSopenharmony_cielif enabled loongarch; then 6168cabdff1aSopenharmony_ci enabled lsx && check_inline_asm lsx '"vadd.b $vr0, $vr1, $vr2"' '-mlsx' && append LSXFLAGS '-mlsx' 6169cabdff1aSopenharmony_ci enabled lasx && check_inline_asm lasx '"xvadd.b $xr0, $xr1, $xr2"' '-mlasx' && append LASXFLAGS '-mlasx' 6170cabdff1aSopenharmony_cifi 6171cabdff1aSopenharmony_ci 6172cabdff1aSopenharmony_cicheck_cc intrinsics_neon arm_neon.h "int16x8_t test = vdupq_n_s16(0)" 6173cabdff1aSopenharmony_ci 6174cabdff1aSopenharmony_cicheck_ldflags -Wl,--as-needed 6175cabdff1aSopenharmony_cicheck_ldflags -Wl,-z,noexecstack 6176cabdff1aSopenharmony_ci 6177cabdff1aSopenharmony_ciif ! disabled network; then 6178cabdff1aSopenharmony_ci check_func getaddrinfo $network_extralibs 6179cabdff1aSopenharmony_ci check_func inet_aton $network_extralibs 6180cabdff1aSopenharmony_ci 6181cabdff1aSopenharmony_ci check_type netdb.h "struct addrinfo" 6182cabdff1aSopenharmony_ci check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE 6183cabdff1aSopenharmony_ci check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE 6184cabdff1aSopenharmony_ci check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE 6185cabdff1aSopenharmony_ci check_type poll.h "struct pollfd" 6186cabdff1aSopenharmony_ci check_type netinet/sctp.h "struct sctp_event_subscribe" 6187cabdff1aSopenharmony_ci check_struct "sys/socket.h" "struct msghdr" msg_flags 6188cabdff1aSopenharmony_ci check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len 6189cabdff1aSopenharmony_ci check_type netinet/in.h "struct sockaddr_in6" 6190cabdff1aSopenharmony_ci check_type "sys/types.h sys/socket.h" "struct sockaddr_storage" 6191cabdff1aSopenharmony_ci check_type "sys/types.h sys/socket.h" socklen_t 6192cabdff1aSopenharmony_ci 6193cabdff1aSopenharmony_ci # Prefer arpa/inet.h over winsock2 6194cabdff1aSopenharmony_ci if check_headers arpa/inet.h ; then 6195cabdff1aSopenharmony_ci check_func closesocket 6196cabdff1aSopenharmony_ci elif check_headers winsock2.h ; then 6197cabdff1aSopenharmony_ci check_func_headers winsock2.h closesocket -lws2 && 6198cabdff1aSopenharmony_ci network_extralibs="-lws2" || 6199cabdff1aSopenharmony_ci { check_func_headers winsock2.h closesocket -lws2_32 && 6200cabdff1aSopenharmony_ci network_extralibs="-lws2_32"; } || disable winsock2_h network 6201cabdff1aSopenharmony_ci check_func_headers ws2tcpip.h getaddrinfo $network_extralibs 6202cabdff1aSopenharmony_ci 6203cabdff1aSopenharmony_ci check_type ws2tcpip.h socklen_t 6204cabdff1aSopenharmony_ci check_type ws2tcpip.h "struct addrinfo" 6205cabdff1aSopenharmony_ci check_type ws2tcpip.h "struct group_source_req" 6206cabdff1aSopenharmony_ci check_type ws2tcpip.h "struct ip_mreq_source" 6207cabdff1aSopenharmony_ci check_type ws2tcpip.h "struct ipv6_mreq" 6208cabdff1aSopenharmony_ci check_type winsock2.h "struct pollfd" 6209cabdff1aSopenharmony_ci check_struct winsock2.h "struct sockaddr" sa_len 6210cabdff1aSopenharmony_ci check_type ws2tcpip.h "struct sockaddr_in6" 6211cabdff1aSopenharmony_ci check_type ws2tcpip.h "struct sockaddr_storage" 6212cabdff1aSopenharmony_ci else 6213cabdff1aSopenharmony_ci disable network 6214cabdff1aSopenharmony_ci fi 6215cabdff1aSopenharmony_cifi 6216cabdff1aSopenharmony_ci 6217cabdff1aSopenharmony_cicheck_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)" 6218cabdff1aSopenharmony_cicheck_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()" 6219cabdff1aSopenharmony_cicheck_builtin MemoryBarrier windows.h "MemoryBarrier()" 6220cabdff1aSopenharmony_cicheck_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)" 6221cabdff1aSopenharmony_cicheck_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)" 6222cabdff1aSopenharmony_cicheck_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)" 6223cabdff1aSopenharmony_ci 6224cabdff1aSopenharmony_cicase "$custom_allocator" in 6225cabdff1aSopenharmony_ci jemalloc) 6226cabdff1aSopenharmony_ci # jemalloc by default does not use a prefix 6227cabdff1aSopenharmony_ci require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc 6228cabdff1aSopenharmony_ci ;; 6229cabdff1aSopenharmony_ci tcmalloc) 6230cabdff1aSopenharmony_ci require_pkg_config libtcmalloc libtcmalloc gperftools/tcmalloc.h tc_malloc 6231cabdff1aSopenharmony_ci malloc_prefix=tc_ 6232cabdff1aSopenharmony_ci ;; 6233cabdff1aSopenharmony_ciesac 6234cabdff1aSopenharmony_ci 6235cabdff1aSopenharmony_cicheck_func_headers malloc.h _aligned_malloc && enable aligned_malloc 6236cabdff1aSopenharmony_cicheck_func ${malloc_prefix}memalign && enable memalign 6237cabdff1aSopenharmony_cicheck_func ${malloc_prefix}posix_memalign && enable posix_memalign 6238cabdff1aSopenharmony_ci 6239cabdff1aSopenharmony_cicheck_func access 6240cabdff1aSopenharmony_cicheck_func_headers stdlib.h arc4random 6241cabdff1aSopenharmony_cicheck_lib clock_gettime time.h clock_gettime || check_lib clock_gettime time.h clock_gettime -lrt 6242cabdff1aSopenharmony_cicheck_func fcntl 6243cabdff1aSopenharmony_cicheck_func fork 6244cabdff1aSopenharmony_cicheck_func gethrtime 6245cabdff1aSopenharmony_cicheck_func getopt 6246cabdff1aSopenharmony_cicheck_func getrusage 6247cabdff1aSopenharmony_cicheck_func gettimeofday 6248cabdff1aSopenharmony_cicheck_func isatty 6249cabdff1aSopenharmony_cicheck_func mkstemp 6250cabdff1aSopenharmony_cicheck_func mmap 6251cabdff1aSopenharmony_cicheck_func mprotect 6252cabdff1aSopenharmony_ci# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that 6253cabdff1aSopenharmony_cicheck_func_headers time.h nanosleep || check_lib nanosleep time.h nanosleep -lrt 6254cabdff1aSopenharmony_cicheck_func sched_getaffinity 6255cabdff1aSopenharmony_cicheck_func setrlimit 6256cabdff1aSopenharmony_cicheck_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE 6257cabdff1aSopenharmony_cicheck_func strerror_r 6258cabdff1aSopenharmony_cicheck_func sysconf 6259cabdff1aSopenharmony_cicheck_func sysctl 6260cabdff1aSopenharmony_cicheck_func usleep 6261cabdff1aSopenharmony_ci 6262cabdff1aSopenharmony_cicheck_func_headers conio.h kbhit 6263cabdff1aSopenharmony_cicheck_func_headers io.h setmode 6264cabdff1aSopenharmony_cicheck_func_headers lzo/lzo1x.h lzo1x_999_compress 6265cabdff1aSopenharmony_cicheck_func_headers mach/mach_time.h mach_absolute_time 6266cabdff1aSopenharmony_cicheck_func_headers stdlib.h getenv 6267cabdff1aSopenharmony_cicheck_func_headers sys/stat.h lstat 6268cabdff1aSopenharmony_cicheck_func_headers sys/auxv.h getauxval 6269cabdff1aSopenharmony_ci 6270cabdff1aSopenharmony_cicheck_func_headers windows.h GetModuleHandle 6271cabdff1aSopenharmony_cicheck_func_headers windows.h GetProcessAffinityMask 6272cabdff1aSopenharmony_cicheck_func_headers windows.h GetProcessTimes 6273cabdff1aSopenharmony_cicheck_func_headers windows.h GetStdHandle 6274cabdff1aSopenharmony_cicheck_func_headers windows.h GetSystemTimeAsFileTime 6275cabdff1aSopenharmony_cicheck_func_headers windows.h LoadLibrary 6276cabdff1aSopenharmony_cicheck_func_headers windows.h MapViewOfFile 6277cabdff1aSopenharmony_cicheck_func_headers windows.h PeekNamedPipe 6278cabdff1aSopenharmony_cicheck_func_headers windows.h SetConsoleTextAttribute 6279cabdff1aSopenharmony_cicheck_func_headers windows.h SetConsoleCtrlHandler 6280cabdff1aSopenharmony_cicheck_func_headers windows.h SetDllDirectory 6281cabdff1aSopenharmony_cicheck_func_headers windows.h Sleep 6282cabdff1aSopenharmony_cicheck_func_headers windows.h VirtualAlloc 6283cabdff1aSopenharmony_cicheck_func_headers glob.h glob 6284cabdff1aSopenharmony_ci 6285cabdff1aSopenharmony_ciif enabled xlib; then 6286cabdff1aSopenharmony_ci check_pkg_config xlib_x11 x11 "X11/Xlib.h" XPending || 6287cabdff1aSopenharmony_ci check_lib xlib_x11 "X11/Xlib.h" XPending -lX11 || 6288cabdff1aSopenharmony_ci disable xlib 6289cabdff1aSopenharmony_ci 6290cabdff1aSopenharmony_ci check_pkg_config xlib_xext xext "X11/Xlib.h X11/extensions/XShm.h" XShmAttach || 6291cabdff1aSopenharmony_ci check_lib xlib_xext "X11/Xlib.h X11/extensions/XShm.h" XShmAttach -lXext || 6292cabdff1aSopenharmony_ci disable xlib 6293cabdff1aSopenharmony_ci 6294cabdff1aSopenharmony_ci check_pkg_config xlib_xv xv "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute || 6295cabdff1aSopenharmony_ci check_lib xlib_xv "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv || 6296cabdff1aSopenharmony_ci disable xlib 6297cabdff1aSopenharmony_cifi 6298cabdff1aSopenharmony_ci 6299cabdff1aSopenharmony_cicheck_headers direct.h 6300cabdff1aSopenharmony_cicheck_headers dirent.h 6301cabdff1aSopenharmony_cicheck_headers dxgidebug.h 6302cabdff1aSopenharmony_cicheck_headers dxva.h 6303cabdff1aSopenharmony_cicheck_headers dxva2api.h -D_WIN32_WINNT=0x0600 6304cabdff1aSopenharmony_cicheck_headers io.h 6305cabdff1aSopenharmony_cienabled libdrm && 6306cabdff1aSopenharmony_ci check_headers linux/dma-buf.h 6307cabdff1aSopenharmony_ci 6308cabdff1aSopenharmony_cicheck_headers linux/perf_event.h 6309cabdff1aSopenharmony_cicheck_headers libcrystalhd/libcrystalhd_if.h 6310cabdff1aSopenharmony_cicheck_headers malloc.h 6311cabdff1aSopenharmony_cicheck_headers mftransform.h 6312cabdff1aSopenharmony_cicheck_headers net/udplite.h 6313cabdff1aSopenharmony_cicheck_headers poll.h 6314cabdff1aSopenharmony_cicheck_headers sys/param.h 6315cabdff1aSopenharmony_cicheck_headers sys/resource.h 6316cabdff1aSopenharmony_cicheck_headers sys/select.h 6317cabdff1aSopenharmony_cicheck_headers sys/time.h 6318cabdff1aSopenharmony_cicheck_headers sys/un.h 6319cabdff1aSopenharmony_cicheck_headers termios.h 6320cabdff1aSopenharmony_cicheck_headers unistd.h 6321cabdff1aSopenharmony_cicheck_headers valgrind/valgrind.h 6322cabdff1aSopenharmony_cicheck_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepareToEncodeFrames -framework VideoToolbox 6323cabdff1aSopenharmony_cicheck_headers windows.h 6324cabdff1aSopenharmony_cicheck_headers asm/types.h 6325cabdff1aSopenharmony_ci 6326cabdff1aSopenharmony_ci# it seems there are versions of clang in some distros that try to use the 6327cabdff1aSopenharmony_ci# gcc headers, which explodes for stdatomic 6328cabdff1aSopenharmony_ci# so we also check that atomics actually work here 6329cabdff1aSopenharmony_ci# 6330cabdff1aSopenharmony_ci# some configurations also require linking to libatomic, so try 6331cabdff1aSopenharmony_ci# both with -latomic and without 6332cabdff1aSopenharmony_cifor LATOMIC in "-latomic" ""; do 6333cabdff1aSopenharmony_ci check_builtin stdatomic stdatomic.h \ 6334cabdff1aSopenharmony_ci "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0); foo += bar" \ 6335cabdff1aSopenharmony_ci $LATOMIC && eval stdatomic_extralibs="\$LATOMIC" && break 6336cabdff1aSopenharmony_cidone 6337cabdff1aSopenharmony_ci 6338cabdff1aSopenharmony_cicheck_lib advapi32 "windows.h" RegCloseKey -ladvapi32 6339cabdff1aSopenharmony_cicheck_lib bcrypt "windows.h bcrypt.h" BCryptGenRandom -lbcrypt && 6340cabdff1aSopenharmony_ci check_cpp_condition bcrypt bcrypt.h "defined BCRYPT_RNG_ALGORITHM" 6341cabdff1aSopenharmony_cicheck_lib ole32 "windows.h" CoTaskMemFree -lole32 6342cabdff1aSopenharmony_cicheck_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32 6343cabdff1aSopenharmony_cicheck_lib psapi "windows.h psapi.h" GetProcessMemoryInfo -lpsapi 6344cabdff1aSopenharmony_ci 6345cabdff1aSopenharmony_cicheck_lib android android/native_window.h ANativeWindow_acquire -landroid 6346cabdff1aSopenharmony_cicheck_lib mediandk "stdint.h media/NdkImage.h" AImage_delete -lmediandk 6347cabdff1aSopenharmony_cicheck_lib camera2ndk "stdbool.h stdint.h camera/NdkCameraManager.h" ACameraManager_create -lcamera2ndk 6348cabdff1aSopenharmony_ci 6349cabdff1aSopenharmony_cienabled appkit && check_apple_framework AppKit 6350cabdff1aSopenharmony_cienabled audiotoolbox && check_apple_framework AudioToolbox 6351cabdff1aSopenharmony_cienabled avfoundation && check_apple_framework AVFoundation 6352cabdff1aSopenharmony_cienabled coreimage && check_apple_framework CoreImage 6353cabdff1aSopenharmony_cienabled metal && check_apple_framework Metal 6354cabdff1aSopenharmony_cienabled videotoolbox && check_apple_framework VideoToolbox 6355cabdff1aSopenharmony_ci 6356cabdff1aSopenharmony_cicheck_apple_framework CoreFoundation 6357cabdff1aSopenharmony_cicheck_apple_framework CoreMedia 6358cabdff1aSopenharmony_cicheck_apple_framework CoreVideo 6359cabdff1aSopenharmony_cicheck_apple_framework CoreAudio 6360cabdff1aSopenharmony_ci 6361cabdff1aSopenharmony_cienabled avfoundation && { 6362cabdff1aSopenharmony_ci disable coregraphics applicationservices 6363cabdff1aSopenharmony_ci check_lib coregraphics CoreGraphics/CoreGraphics.h CGGetActiveDisplayList "-framework CoreGraphics" || 6364cabdff1aSopenharmony_ci check_lib applicationservices ApplicationServices/ApplicationServices.h CGGetActiveDisplayList "-framework ApplicationServices"; } 6365cabdff1aSopenharmony_ci 6366cabdff1aSopenharmony_cienabled videotoolbox && { 6367cabdff1aSopenharmony_ci check_lib coreservices CoreServices/CoreServices.h UTGetOSTypeFromString "-framework CoreServices" 6368cabdff1aSopenharmony_ci check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVC "-framework CoreMedia" 6369cabdff1aSopenharmony_ci check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVCWithAlpha "-framework CoreMedia" 6370cabdff1aSopenharmony_ci check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_VP9 "-framework CoreMedia" 6371cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange "-framework CoreVideo" 6372cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_422YpCbCr8BiPlanarVideoRange "-framework CoreVideo" 6373cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_422YpCbCr10BiPlanarVideoRange "-framework CoreVideo" 6374cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_422YpCbCr16BiPlanarVideoRange "-framework CoreVideo" 6375cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_444YpCbCr8BiPlanarVideoRange "-framework CoreVideo" 6376cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_444YpCbCr10BiPlanarVideoRange "-framework CoreVideo" 6377cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_444YpCbCr16BiPlanarVideoRange "-framework CoreVideo" 6378cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ "-framework CoreVideo" 6379cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_ITU_R_2100_HLG "-framework CoreVideo" 6380cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_Linear "-framework CoreVideo" 6381cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferYCbCrMatrix_ITU_R_2020 "-framework CoreVideo" 6382cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferColorPrimaries_ITU_R_2020 "-framework CoreVideo" 6383cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_ITU_R_2020 "-framework CoreVideo" 6384cabdff1aSopenharmony_ci check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_SMPTE_ST_428_1 "-framework CoreVideo" 6385cabdff1aSopenharmony_ci} 6386cabdff1aSopenharmony_ci 6387cabdff1aSopenharmony_cienabled metal && test_cmd $metalcc -v || disable metal 6388cabdff1aSopenharmony_ci 6389cabdff1aSopenharmony_cicheck_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss 6390cabdff1aSopenharmony_ci 6391cabdff1aSopenharmony_cicheck_type "windows.h dxva.h" "DXVA_PicParams_AV1" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0 6392cabdff1aSopenharmony_cicheck_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0 6393cabdff1aSopenharmony_cicheck_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0 6394cabdff1aSopenharmony_cicheck_type "windows.h d3d11.h" "ID3D11VideoDecoder" 6395cabdff1aSopenharmony_cicheck_type "windows.h d3d11.h" "ID3D11VideoContext" 6396cabdff1aSopenharmony_cicheck_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602 6397cabdff1aSopenharmony_cicheck_func_headers mfapi.h MFCreateAlignedMemoryBuffer -lmfplat 6398cabdff1aSopenharmony_ci 6399cabdff1aSopenharmony_cicheck_type "vdpau/vdpau.h" "VdpPictureInfoHEVC" 6400cabdff1aSopenharmony_cicheck_type "vdpau/vdpau.h" "VdpPictureInfoVP9" 6401cabdff1aSopenharmony_cicheck_type "vdpau/vdpau.h" "VdpPictureInfoAV1" 6402cabdff1aSopenharmony_ci 6403cabdff1aSopenharmony_ciif [ -z "$nvccflags" ]; then 6404cabdff1aSopenharmony_ci nvccflags=$nvccflags_default 6405cabdff1aSopenharmony_cifi 6406cabdff1aSopenharmony_ci 6407cabdff1aSopenharmony_cinvccflags="$nvccflags -std=c++11" 6408cabdff1aSopenharmony_ci 6409cabdff1aSopenharmony_ciif enabled x86_64 || enabled ppc64 || enabled aarch64; then 6410cabdff1aSopenharmony_ci nvccflags="$nvccflags -m64" 6411cabdff1aSopenharmony_cielse 6412cabdff1aSopenharmony_ci nvccflags="$nvccflags -m32" 6413cabdff1aSopenharmony_cifi 6414cabdff1aSopenharmony_ci 6415cabdff1aSopenharmony_ciif enabled cuda_nvcc; then 6416cabdff1aSopenharmony_ci nvccflags="$nvccflags -ptx" 6417cabdff1aSopenharmony_cielse 6418cabdff1aSopenharmony_ci nvccflags="$nvccflags -S -nocudalib -nocudainc --cuda-device-only -Wno-c++11-narrowing -include ${source_link}/compat/cuda/cuda_runtime.h" 6419cabdff1aSopenharmony_ci check_nvcc cuda_llvm 6420cabdff1aSopenharmony_cifi 6421cabdff1aSopenharmony_ci 6422cabdff1aSopenharmony_ciif ! disabled ffnvcodec; then 6423cabdff1aSopenharmony_ci ffnv_hdr_list="ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" 6424cabdff1aSopenharmony_ci check_pkg_config ffnvcodec "ffnvcodec >= 9.1.23.1" "$ffnv_hdr_list" "" || \ 6425cabdff1aSopenharmony_ci check_pkg_config ffnvcodec "ffnvcodec >= 9.0.18.3 ffnvcodec < 9.1" "$ffnv_hdr_list" "" || \ 6426cabdff1aSopenharmony_ci check_pkg_config ffnvcodec "ffnvcodec >= 8.2.15.10 ffnvcodec < 8.3" "$ffnv_hdr_list" "" || \ 6427cabdff1aSopenharmony_ci check_pkg_config ffnvcodec "ffnvcodec >= 8.1.24.11 ffnvcodec < 8.2" "$ffnv_hdr_list" "" 6428cabdff1aSopenharmony_cifi 6429cabdff1aSopenharmony_ci 6430cabdff1aSopenharmony_ciif enabled_all libglslang libshaderc; then 6431cabdff1aSopenharmony_ci die "ERROR: libshaderc and libglslang are mutually exclusive, if in doubt, disable libglslang" 6432cabdff1aSopenharmony_cifi 6433cabdff1aSopenharmony_ci 6434cabdff1aSopenharmony_cicheck_cpp_condition winrt windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" 6435cabdff1aSopenharmony_ci 6436cabdff1aSopenharmony_ciif ! disabled w32threads && ! enabled pthreads; then 6437cabdff1aSopenharmony_ci check_func_headers "windows.h process.h" _beginthreadex && 6438cabdff1aSopenharmony_ci check_type "windows.h" CONDITION_VARIABLE && 6439cabdff1aSopenharmony_ci check_type "windows.h" INIT_ONCE && 6440cabdff1aSopenharmony_ci enable w32threads || disable w32threads 6441cabdff1aSopenharmony_ci if ! enabled w32threads && enabled winrt; then 6442cabdff1aSopenharmony_ci check_func_headers "windows.h" CreateThread && 6443cabdff1aSopenharmony_ci enable w32threads || disable w32threads 6444cabdff1aSopenharmony_ci fi 6445cabdff1aSopenharmony_cifi 6446cabdff1aSopenharmony_ci 6447cabdff1aSopenharmony_ci# check for some common methods of building with pthread support 6448cabdff1aSopenharmony_ci# do this before the optional library checks as some of them require pthreads 6449cabdff1aSopenharmony_ciif ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then 6450cabdff1aSopenharmony_ci if check_lib pthreads pthread.h pthread_join -pthread && 6451cabdff1aSopenharmony_ci check_lib pthreads pthread.h pthread_create -pthread; then 6452cabdff1aSopenharmony_ci add_cflags -pthread 6453cabdff1aSopenharmony_ci elif check_lib pthreads pthread.h pthread_join -pthreads && 6454cabdff1aSopenharmony_ci check_lib pthreads pthread.h pthread_create -pthreads; then 6455cabdff1aSopenharmony_ci add_cflags -pthreads 6456cabdff1aSopenharmony_ci elif check_lib pthreads pthread.h pthread_join -ldl -pthread && 6457cabdff1aSopenharmony_ci check_lib pthreads pthread.h pthread_create -ldl -pthread; then 6458cabdff1aSopenharmony_ci add_cflags -ldl -pthread 6459cabdff1aSopenharmony_ci elif check_lib pthreads pthread.h pthread_join -lpthreadGC2 && 6460cabdff1aSopenharmony_ci check_lib pthreads pthread.h pthread_create -lpthreadGC2; then 6461cabdff1aSopenharmony_ci : 6462cabdff1aSopenharmony_ci elif check_lib pthreads pthread.h pthread_join -lpthread && 6463cabdff1aSopenharmony_ci check_lib pthreads pthread.h pthread_create -lpthread; then 6464cabdff1aSopenharmony_ci : 6465cabdff1aSopenharmony_ci elif check_func pthread_join && check_func pthread_create; then 6466cabdff1aSopenharmony_ci enable pthreads 6467cabdff1aSopenharmony_ci fi 6468cabdff1aSopenharmony_ci check_cc pthreads "pthread.h" "static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER" 6469cabdff1aSopenharmony_ci 6470cabdff1aSopenharmony_ci if enabled pthreads; then 6471cabdff1aSopenharmony_ci check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" $pthreads_extralibs 6472cabdff1aSopenharmony_ci check_func pthread_cancel $pthreads_extralibs 6473cabdff1aSopenharmony_ci fi 6474cabdff1aSopenharmony_cifi 6475cabdff1aSopenharmony_ci 6476cabdff1aSopenharmony_cienabled zlib && { check_pkg_config zlib zlib "zlib.h" zlibVersion || 6477cabdff1aSopenharmony_ci check_lib zlib zlib.h zlibVersion -lz; } 6478cabdff1aSopenharmony_cienabled bzlib && check_lib bzlib bzlib.h BZ2_bzlibVersion -lbz2 6479cabdff1aSopenharmony_cienabled lzma && check_lib lzma lzma.h lzma_version_number -llzma 6480cabdff1aSopenharmony_ci 6481cabdff1aSopenharmony_cienabled zlib && test_exec $zlib_extralibs <<EOF && enable zlib_gzip 6482cabdff1aSopenharmony_ci#include <zlib.h> 6483cabdff1aSopenharmony_ciint main(void) { 6484cabdff1aSopenharmony_ci if (zlibCompileFlags() & (1 << 17)) return 1; 6485cabdff1aSopenharmony_ci return 0; 6486cabdff1aSopenharmony_ci} 6487cabdff1aSopenharmony_ciEOF 6488cabdff1aSopenharmony_ci 6489cabdff1aSopenharmony_ci[ -x "$(command -v gzip)" ] && enable gzip 6490cabdff1aSopenharmony_ci 6491cabdff1aSopenharmony_cienabled zlib_gzip && enabled gzip || disable ptx_compression 6492cabdff1aSopenharmony_ci 6493cabdff1aSopenharmony_ci# On some systems dynamic loading requires no extra linker flags 6494cabdff1aSopenharmony_cicheck_lib libdl dlfcn.h "dlopen dlsym" || check_lib libdl dlfcn.h "dlopen dlsym" -ldl 6495cabdff1aSopenharmony_ci 6496cabdff1aSopenharmony_cicheck_lib libm math.h sin -lm 6497cabdff1aSopenharmony_ci 6498cabdff1aSopenharmony_ciatan2f_args=2 6499cabdff1aSopenharmony_cicopysign_args=2 6500cabdff1aSopenharmony_cihypot_args=2 6501cabdff1aSopenharmony_cildexpf_args=2 6502cabdff1aSopenharmony_cipowf_args=2 6503cabdff1aSopenharmony_ci 6504cabdff1aSopenharmony_cifor func in $MATH_FUNCS; do 6505cabdff1aSopenharmony_ci eval check_mathfunc $func \${${func}_args:-1} $libm_extralibs 6506cabdff1aSopenharmony_cidone 6507cabdff1aSopenharmony_ci 6508cabdff1aSopenharmony_cifor func in $COMPLEX_FUNCS; do 6509cabdff1aSopenharmony_ci eval check_complexfunc $func \${${func}_args:-1} 6510cabdff1aSopenharmony_cidone 6511cabdff1aSopenharmony_ci 6512cabdff1aSopenharmony_ci# these are off by default, so fail if requested and not available 6513cabdff1aSopenharmony_cienabled avisynth && { require_headers "avisynth/avisynth_c.h avisynth/avs/version.h" && 6514cabdff1aSopenharmony_ci { test_cpp_condition avisynth/avs/version.h "AVS_MAJOR_VER >= 3 && AVS_MINOR_VER >= 7 && AVS_BUGFIX_VER >= 1 || AVS_MAJOR_VER >= 3 && AVS_MINOR_VER > 7 || AVS_MAJOR_VER > 3" || 6515cabdff1aSopenharmony_ci die "ERROR: AviSynth+ header version must be >= 3.7.1"; } } 6516cabdff1aSopenharmony_cienabled cuda_nvcc && { check_nvcc cuda_nvcc || die "ERROR: failed checking for nvcc."; } 6517cabdff1aSopenharmony_cienabled chromaprint && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint 6518cabdff1aSopenharmony_cienabled decklink && { require_headers DeckLinkAPI.h && 6519cabdff1aSopenharmony_ci { test_cpp_condition DeckLinkAPIVersion.h "BLACKMAGIC_DECKLINK_API_VERSION >= 0x0a0b0000" || die "ERROR: Decklink API version must be >= 10.11"; } } 6520cabdff1aSopenharmony_cienabled frei0r && require_headers "frei0r.h" 6521cabdff1aSopenharmony_cienabled gmp && require gmp gmp.h mpz_export -lgmp 6522cabdff1aSopenharmony_cienabled gnutls && require_pkg_config gnutls gnutls gnutls/gnutls.h gnutls_global_init 6523cabdff1aSopenharmony_cienabled jni && { [ $target_os = "android" ] && check_headers jni.h && enabled pthreads || die "ERROR: jni not found"; } 6524cabdff1aSopenharmony_cienabled ladspa && require_headers "ladspa.h dlfcn.h" 6525cabdff1aSopenharmony_cienabled lcms2 && require_pkg_config lcms2 "lcms2 >= 2.13" lcms2.h cmsCreateContext 6526cabdff1aSopenharmony_cienabled libaom && require_pkg_config libaom "aom >= 1.0.0" aom/aom_codec.h aom_codec_version 6527cabdff1aSopenharmony_cienabled libaribb24 && { check_pkg_config libaribb24 "aribb24 > 1.0.3" "aribb24/aribb24.h" arib_instance_new || 6528cabdff1aSopenharmony_ci { enabled gpl && require_pkg_config libaribb24 aribb24 "aribb24/aribb24.h" arib_instance_new; } || 6529cabdff1aSopenharmony_ci die "ERROR: libaribb24 requires version higher than 1.0.3 or --enable-gpl."; } 6530cabdff1aSopenharmony_cienabled lv2 && require_pkg_config lv2 lilv-0 "lilv/lilv.h" lilv_world_new 6531cabdff1aSopenharmony_cienabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883 6532cabdff1aSopenharmony_cienabled libass && require_pkg_config libass "libass >= 0.11.0" ass/ass.h ass_library_init 6533cabdff1aSopenharmony_cienabled libbluray && require_pkg_config libbluray libbluray libbluray/bluray.h bd_open 6534cabdff1aSopenharmony_cienabled libbs2b && require_pkg_config libbs2b libbs2b bs2b.h bs2b_open 6535cabdff1aSopenharmony_cienabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 && 6536cabdff1aSopenharmony_ci { check_lib libcelt celt/celt.h celt_decoder_create_custom -lcelt0 || 6537cabdff1aSopenharmony_ci die "ERROR: libcelt must be installed and version must be >= 0.11.0."; } 6538cabdff1aSopenharmony_cienabled libcaca && require_pkg_config libcaca caca caca.h caca_create_canvas 6539cabdff1aSopenharmony_cienabled libcodec2 && require libcodec2 codec2/codec2.h codec2_create -lcodec2 6540cabdff1aSopenharmony_cienabled libdav1d && require_pkg_config libdav1d "dav1d >= 0.5.0" "dav1d/dav1d.h" dav1d_version 6541cabdff1aSopenharmony_cienabled libdavs2 && require_pkg_config libdavs2 "davs2 >= 1.6.0" davs2.h davs2_decoder_open 6542cabdff1aSopenharmony_cienabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new 6543cabdff1aSopenharmony_cienabled libdrm && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion 6544cabdff1aSopenharmony_cienabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen || 6545cabdff1aSopenharmony_ci { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac && 6546cabdff1aSopenharmony_ci warn "using libfdk without pkg-config"; } } 6547cabdff1aSopenharmony_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" 6548cabdff1aSopenharmony_cienabled libflite && require libflite "flite/flite.h" flite_init $flite_extralibs 6549cabdff1aSopenharmony_cienabled fontconfig && enable libfontconfig 6550cabdff1aSopenharmony_cienabled libfontconfig && require_pkg_config libfontconfig fontconfig "fontconfig/fontconfig.h" FcInit 6551cabdff1aSopenharmony_cienabled libfreetype && require_pkg_config libfreetype freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType 6552cabdff1aSopenharmony_cienabled libfribidi && require_pkg_config libfribidi fribidi fribidi.h fribidi_version_info 6553cabdff1aSopenharmony_cienabled libglslang && { check_lib spirv_compiler glslang/Include/glslang_c_interface.h glslang_initialize_process \ 6554cabdff1aSopenharmony_ci -lglslang -lMachineIndependent -lOSDependent -lHLSL -lOGLCompiler -lGenericCodeGen \ 6555cabdff1aSopenharmony_ci -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++ -lm || 6556cabdff1aSopenharmony_ci require spirv_compiler glslang/Include/glslang_c_interface.h glslang_initialize_process \ 6557cabdff1aSopenharmony_ci -lglslang -lOSDependent -lHLSL -lOGLCompiler \ 6558cabdff1aSopenharmony_ci -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++ -lm; } 6559cabdff1aSopenharmony_cienabled libgme && { check_pkg_config libgme libgme gme/gme.h gme_new_emu || 6560cabdff1aSopenharmony_ci require libgme gme/gme.h gme_new_emu -lgme -lstdc++; } 6561cabdff1aSopenharmony_cienabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do 6562cabdff1aSopenharmony_ci check_lib libgsm "${gsm_hdr}" gsm_create -lgsm && break; 6563cabdff1aSopenharmony_ci done || die "ERROR: libgsm not found"; } 6564cabdff1aSopenharmony_cienabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc $pthreads_extralibs 6565cabdff1aSopenharmony_cienabled libjxl && require_pkg_config libjxl "libjxl >= 0.7.0" jxl/decode.h JxlDecoderVersion && 6566cabdff1aSopenharmony_ci require_pkg_config libjxl_threads "libjxl_threads >= 0.7.0" jxl/thread_parallel_runner.h JxlThreadParallelRunner 6567cabdff1aSopenharmony_cienabled libklvanc && require libklvanc libklvanc/vanc.h klvanc_context_create -lklvanc 6568cabdff1aSopenharmony_cienabled libkvazaar && require_pkg_config libkvazaar "kvazaar >= 0.8.1" kvazaar.h kvz_api_get 6569cabdff1aSopenharmony_cienabled liblensfun && require_pkg_config liblensfun lensfun lensfun.h lf_db_new 6570cabdff1aSopenharmony_ci# While it may appear that require is being used as a pkg-config 6571cabdff1aSopenharmony_ci# fallback for libmfx, it is actually being used to detect a different 6572cabdff1aSopenharmony_ci# installation route altogether. If libmfx is installed via the Intel 6573cabdff1aSopenharmony_ci# Media SDK or Intel Media Server Studio, these don't come with 6574cabdff1aSopenharmony_ci# pkg-config support. Instead, users should make sure that the build 6575cabdff1aSopenharmony_ci# can find the libraries and headers through other means. 6576cabdff1aSopenharmony_cienabled libmfx && { check_pkg_config libmfx "libmfx >= 1.28" "mfx/mfxvideo.h" MFXInit || 6577cabdff1aSopenharmony_ci { require libmfx "mfx/mfxvideo.h mfx/mfxdefs.h" MFXInit "-llibmfx $advapi32_extralibs" && 6578cabdff1aSopenharmony_ci { test_cpp_condition mfx/mfxdefs.h "MFX_VERSION >= 1028" || die "ERROR: libmfx version must be >= 1.28"; } && 6579cabdff1aSopenharmony_ci warn "using libmfx without pkg-config"; } } 6580cabdff1aSopenharmony_ci 6581cabdff1aSopenharmony_ciif enabled libmfx; then 6582cabdff1aSopenharmony_ci check_cc MFX_CODEC_VP9 "mfx/mfxvp9.h mfx/mfxstructures.h" "MFX_CODEC_VP9" 6583cabdff1aSopenharmony_cifi 6584cabdff1aSopenharmony_ci 6585cabdff1aSopenharmony_cienabled libmodplug && require_pkg_config libmodplug libmodplug libmodplug/modplug.h ModPlug_Load 6586cabdff1aSopenharmony_cienabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame $libm_extralibs 6587cabdff1aSopenharmony_cienabled libmysofa && { check_pkg_config libmysofa libmysofa mysofa.h mysofa_neighborhood_init_withstepdefine || 6588cabdff1aSopenharmony_ci require libmysofa mysofa.h mysofa_neighborhood_init_withstepdefine -lmysofa $zlib_extralibs; } 6589cabdff1aSopenharmony_cienabled libnpp && { check_lib libnpp npp.h nppGetLibVersion -lnppig -lnppicc -lnppc -lnppidei -lnppif || 6590cabdff1aSopenharmony_ci check_lib libnpp npp.h nppGetLibVersion -lnppi -lnppif -lnppc -lnppidei || 6591cabdff1aSopenharmony_ci die "ERROR: libnpp not found"; } 6592cabdff1aSopenharmony_cienabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb 6593cabdff1aSopenharmony_cienabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb 6594cabdff1aSopenharmony_cienabled libopencv && { check_headers opencv2/core/core_c.h && 6595cabdff1aSopenharmony_ci { check_pkg_config libopencv opencv opencv2/core/core_c.h cvCreateImageHeader || 6596cabdff1aSopenharmony_ci require libopencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } || 6597cabdff1aSopenharmony_ci require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; } 6598cabdff1aSopenharmony_cienabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion 6599cabdff1aSopenharmony_cienabled libopenjpeg && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version || 6600cabdff1aSopenharmony_ci { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } } 6601cabdff1aSopenharmony_cienabled libopenmpt && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++" 6602cabdff1aSopenharmony_cienabled libopenvino && require libopenvino c_api/ie_c_api.h ie_c_api_version -linference_engine_c_api 6603cabdff1aSopenharmony_cienabled libopus && { 6604cabdff1aSopenharmony_ci enabled libopus_decoder && { 6605cabdff1aSopenharmony_ci require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create 6606cabdff1aSopenharmony_ci } 6607cabdff1aSopenharmony_ci enabled libopus_encoder && { 6608cabdff1aSopenharmony_ci require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create 6609cabdff1aSopenharmony_ci } 6610cabdff1aSopenharmony_ci} 6611cabdff1aSopenharmony_cienabled libplacebo && require_pkg_config libplacebo "libplacebo >= 4.192.0" libplacebo/vulkan.h pl_vulkan_create 6612cabdff1aSopenharmony_cienabled libpulse && require_pkg_config libpulse libpulse pulse/pulseaudio.h pa_context_new 6613cabdff1aSopenharmony_cienabled librabbitmq && require_pkg_config librabbitmq "librabbitmq >= 0.7.1" amqp.h amqp_new_connection 6614cabdff1aSopenharmony_cienabled librav1e && require_pkg_config librav1e "rav1e >= 0.4.0" rav1e.h rav1e_context_new 6615cabdff1aSopenharmony_cienabled librist && require_pkg_config librist "librist >= 0.2.7" librist/librist.h rist_receiver_create 6616cabdff1aSopenharmony_cienabled librsvg && require_pkg_config librsvg librsvg-2.0 librsvg-2.0/librsvg/rsvg.h rsvg_handle_render_cairo 6617cabdff1aSopenharmony_cienabled librtmp && require_pkg_config librtmp librtmp librtmp/rtmp.h RTMP_Socket 6618cabdff1aSopenharmony_cienabled librubberband && require_pkg_config librubberband "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new -lstdc++ && append librubberband_extralibs "-lstdc++" 6619cabdff1aSopenharmony_cienabled libshaderc && require_pkg_config spirv_compiler "shaderc >= 2019.1" shaderc/shaderc.h shaderc_compiler_initialize 6620cabdff1aSopenharmony_cienabled libshine && require_pkg_config libshine shine shine/layer3.h shine_encode_buffer 6621cabdff1aSopenharmony_cienabled libsmbclient && { check_pkg_config libsmbclient smbclient libsmbclient.h smbc_init || 6622cabdff1aSopenharmony_ci require libsmbclient libsmbclient.h smbc_init -lsmbclient; } 6623cabdff1aSopenharmony_cienabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy -lstdc++ 6624cabdff1aSopenharmony_cienabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr 6625cabdff1aSopenharmony_cienabled libssh && require_pkg_config libssh libssh libssh/sftp.h sftp_init 6626cabdff1aSopenharmony_cienabled libspeex && require_pkg_config libspeex speex speex/speex.h speex_decoder_init 6627cabdff1aSopenharmony_cienabled libsrt && require_pkg_config libsrt "srt >= 1.3.0" srt/srt.h srt_socket 6628cabdff1aSopenharmony_cienabled libsvtav1 && require_pkg_config libsvtav1 "SvtAv1Enc >= 0.9.0" EbSvtAv1Enc.h svt_av1_enc_init_handle 6629cabdff1aSopenharmony_cienabled libtensorflow && require libtensorflow tensorflow/c/c_api.h TF_Version -ltensorflow 6630cabdff1aSopenharmony_cienabled libtesseract && require_pkg_config libtesseract tesseract tesseract/capi.h TessBaseAPICreate 6631cabdff1aSopenharmony_cienabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg 6632cabdff1aSopenharmony_cienabled libtls && require_pkg_config libtls libtls tls.h tls_configure 6633cabdff1aSopenharmony_cienabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame && 6634cabdff1aSopenharmony_ci { check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame || 6635cabdff1aSopenharmony_ci die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; } 6636cabdff1aSopenharmony_cienabled libuavs3d && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode 6637cabdff1aSopenharmony_cienabled libv4l2 && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl 6638cabdff1aSopenharmony_cienabled libvidstab && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit 6639cabdff1aSopenharmony_cienabled libvmaf && require_pkg_config libvmaf "libvmaf >= 2.0.0" libvmaf.h vmaf_init 6640cabdff1aSopenharmony_cienabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc 6641cabdff1aSopenharmony_cienabled libvorbis && require_pkg_config libvorbis vorbis vorbis/codec.h vorbis_info_init && 6642cabdff1aSopenharmony_ci require_pkg_config libvorbisenc vorbisenc vorbis/vorbisenc.h vorbis_encode_init 6643cabdff1aSopenharmony_ci 6644cabdff1aSopenharmony_cienabled libvpx && { 6645cabdff1aSopenharmony_ci enabled libvpx_vp8_decoder && { 6646cabdff1aSopenharmony_ci check_pkg_config libvpx_vp8_decoder "vpx >= 1.4.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx || 6647cabdff1aSopenharmony_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" 6648cabdff1aSopenharmony_ci } 6649cabdff1aSopenharmony_ci enabled libvpx_vp8_encoder && { 6650cabdff1aSopenharmony_ci check_pkg_config libvpx_vp8_encoder "vpx >= 1.4.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx || 6651cabdff1aSopenharmony_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" 6652cabdff1aSopenharmony_ci } 6653cabdff1aSopenharmony_ci enabled libvpx_vp9_decoder && { 6654cabdff1aSopenharmony_ci check_pkg_config libvpx_vp9_decoder "vpx >= 1.4.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx || 6655cabdff1aSopenharmony_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" 6656cabdff1aSopenharmony_ci } 6657cabdff1aSopenharmony_ci enabled libvpx_vp9_encoder && { 6658cabdff1aSopenharmony_ci check_pkg_config libvpx_vp9_encoder "vpx >= 1.4.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx || 6659cabdff1aSopenharmony_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" 6660cabdff1aSopenharmony_ci } 6661cabdff1aSopenharmony_ci if disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder; then 6662cabdff1aSopenharmony_ci die "libvpx enabled but no supported decoders found" 6663cabdff1aSopenharmony_ci fi 6664cabdff1aSopenharmony_ci} 6665cabdff1aSopenharmony_ci 6666cabdff1aSopenharmony_cienabled libwebp && { 6667cabdff1aSopenharmony_ci enabled libwebp_encoder && require_pkg_config libwebp "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion 6668cabdff1aSopenharmony_ci enabled libwebp_anim_encoder && check_pkg_config libwebp_anim_encoder "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit; } 6669cabdff1aSopenharmony_cienabled libx264 && require_pkg_config libx264 x264 "stdint.h x264.h" x264_encoder_encode && 6670cabdff1aSopenharmony_ci require_cpp_condition libx264 x264.h "X264_BUILD >= 118" && { 6671cabdff1aSopenharmony_ci [ "$toolchain" != "msvc" ] || 6672cabdff1aSopenharmony_ci require_cpp_condition libx264 x264.h "X264_BUILD >= 158"; } && 6673cabdff1aSopenharmony_ci check_cpp_condition libx262 x264.h "X264_MPEG2" 6674cabdff1aSopenharmony_cienabled libx265 && require_pkg_config libx265 x265 x265.h x265_api_get && 6675cabdff1aSopenharmony_ci require_cpp_condition libx265 x265.h "X265_BUILD >= 70" 6676cabdff1aSopenharmony_cienabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode "-lxavs $pthreads_extralibs $libm_extralibs" 6677cabdff1aSopenharmony_cienabled libxavs2 && require_pkg_config libxavs2 "xavs2 >= 1.3.0" "stdint.h xavs2.h" xavs2_api_get 6678cabdff1aSopenharmony_cienabled libxvid && require libxvid xvid.h xvid_global -lxvidcore 6679cabdff1aSopenharmony_cienabled libzimg && require_pkg_config libzimg "zimg >= 2.7.0" zimg.h zimg_get_api_version 6680cabdff1aSopenharmony_cienabled libzmq && require_pkg_config libzmq "libzmq >= 4.2.1" zmq.h zmq_ctx_new 6681cabdff1aSopenharmony_cienabled libzvbi && require_pkg_config libzvbi zvbi-0.2 libzvbi.h vbi_decoder_new && 6682cabdff1aSopenharmony_ci { test_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" || 6683cabdff1aSopenharmony_ci enabled gpl || die "ERROR: libzvbi requires version 0.2.28 or --enable-gpl."; } 6684cabdff1aSopenharmony_cienabled libxml2 && require_pkg_config libxml2 libxml-2.0 libxml2/libxml/xmlversion.h xmlCheckVersion 6685cabdff1aSopenharmony_cienabled mbedtls && { check_pkg_config mbedtls mbedtls mbedtls/x509_crt.h mbedtls_x509_crt_init || 6686cabdff1aSopenharmony_ci check_pkg_config mbedtls mbedtls mbedtls/ssl.h mbedtls_ssl_init || 6687cabdff1aSopenharmony_ci check_lib mbedtls mbedtls/ssl.h mbedtls_ssl_init -lmbedtls -lmbedx509 -lmbedcrypto || 6688cabdff1aSopenharmony_ci die "ERROR: mbedTLS not found"; } 6689cabdff1aSopenharmony_cienabled mediacodec && { enabled jni || die "ERROR: mediacodec requires --enable-jni"; } 6690cabdff1aSopenharmony_cienabled mmal && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host || 6691cabdff1aSopenharmony_ci { ! enabled cross_compile && 6692cabdff1aSopenharmony_ci add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline && 6693cabdff1aSopenharmony_ci add_ldflags -L/opt/vc/lib/ && 6694cabdff1aSopenharmony_ci check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } || 6695cabdff1aSopenharmony_ci die "ERROR: mmal not found" && 6696cabdff1aSopenharmony_ci check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; } 6697cabdff1aSopenharmony_cienabled openal && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do 6698cabdff1aSopenharmony_ci check_lib openal 'AL/al.h' alGetError "${al_extralibs}" && break; done } || 6699cabdff1aSopenharmony_ci die "ERROR: openal not found"; } && 6700cabdff1aSopenharmony_ci { test_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" || 6701cabdff1aSopenharmony_ci die "ERROR: openal must be installed and version must be 1.1 or compatible"; } 6702cabdff1aSopenharmony_cienabled opencl && { check_pkg_config opencl OpenCL CL/cl.h clEnqueueNDRangeKernel || 6703cabdff1aSopenharmony_ci check_lib opencl OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL || 6704cabdff1aSopenharmony_ci check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL || 6705cabdff1aSopenharmony_ci die "ERROR: opencl not found"; } && 6706cabdff1aSopenharmony_ci { test_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" || 6707cabdff1aSopenharmony_ci test_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" || 6708cabdff1aSopenharmony_ci die "ERROR: opencl must be installed and version must be 1.2 or compatible"; } 6709cabdff1aSopenharmony_cienabled opengl && { check_lib opengl GL/glx.h glXGetProcAddress "-lGL" || 6710cabdff1aSopenharmony_ci check_lib opengl windows.h wglGetProcAddress "-lopengl32 -lgdi32" || 6711cabdff1aSopenharmony_ci check_lib opengl OpenGL/gl3.h glGetError "-Wl,-framework,OpenGL" || 6712cabdff1aSopenharmony_ci check_lib opengl ES2/gl.h glGetError "-isysroot=${sysroot} -Wl,-framework,OpenGLES" || 6713cabdff1aSopenharmony_ci die "ERROR: opengl not found." 6714cabdff1aSopenharmony_ci } 6715cabdff1aSopenharmony_cienabled omx_rpi && { test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoRequestIFrame || 6716cabdff1aSopenharmony_ci { ! enabled cross_compile && 6717cabdff1aSopenharmony_ci add_cflags -isystem/opt/vc/include/IL && 6718cabdff1aSopenharmony_ci test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoRequestIFrame; } || 6719cabdff1aSopenharmony_ci die "ERROR: OpenMAX IL headers from raspberrypi/firmware not found"; } && 6720cabdff1aSopenharmony_ci enable omx 6721cabdff1aSopenharmony_cienabled omx && require_headers OMX_Core.h 6722cabdff1aSopenharmony_cienabled openssl && { { check_pkg_config openssl "openssl >= 3.0.0" openssl/ssl.h OPENSSL_init_ssl && 6723cabdff1aSopenharmony_ci { enabled gplv3 || ! enabled gpl || enabled nonfree || die "ERROR: OpenSSL >=3.0.0 requires --enable-version3"; }; } || 6724cabdff1aSopenharmony_ci { enabled gpl && ! enabled nonfree && die "ERROR: OpenSSL <3.0.0 is incompatible with the gpl"; } || 6725cabdff1aSopenharmony_ci check_pkg_config openssl openssl openssl/ssl.h OPENSSL_init_ssl || 6726cabdff1aSopenharmony_ci check_pkg_config openssl openssl openssl/ssl.h SSL_library_init || 6727cabdff1aSopenharmony_ci check_lib openssl openssl/ssl.h OPENSSL_init_ssl -lssl -lcrypto || 6728cabdff1aSopenharmony_ci check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto || 6729cabdff1aSopenharmony_ci check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 || 6730cabdff1aSopenharmony_ci check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 || 6731cabdff1aSopenharmony_ci die "ERROR: openssl not found"; } 6732cabdff1aSopenharmony_cienabled pocketsphinx && require_pkg_config pocketsphinx pocketsphinx pocketsphinx/pocketsphinx.h ps_init 6733cabdff1aSopenharmony_cienabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/rk_mpi.h mpp_create && 6734cabdff1aSopenharmony_ci require_pkg_config rockchip_mpp "rockchip_mpp >= 1.3.7" rockchip/rk_mpi.h mpp_create && 6735cabdff1aSopenharmony_ci { enabled libdrm || 6736cabdff1aSopenharmony_ci die "ERROR: rkmpp requires --enable-libdrm"; } 6737cabdff1aSopenharmony_ci } 6738cabdff1aSopenharmony_cienabled vapoursynth && require_pkg_config vapoursynth "vapoursynth-script >= 42" VSScript.h vsscript_init 6739cabdff1aSopenharmony_ci 6740cabdff1aSopenharmony_ci 6741cabdff1aSopenharmony_ciif enabled gcrypt; then 6742cabdff1aSopenharmony_ci GCRYPT_CONFIG="${cross_prefix}libgcrypt-config" 6743cabdff1aSopenharmony_ci if "${GCRYPT_CONFIG}" --version > /dev/null 2>&1; then 6744cabdff1aSopenharmony_ci gcrypt_cflags=$("${GCRYPT_CONFIG}" --cflags) 6745cabdff1aSopenharmony_ci gcrypt_extralibs=$("${GCRYPT_CONFIG}" --libs) 6746cabdff1aSopenharmony_ci check_func_headers gcrypt.h gcry_mpi_new $gcrypt_cflags $gcrypt_extralibs || 6747cabdff1aSopenharmony_ci die "ERROR: gcrypt not found" 6748cabdff1aSopenharmony_ci add_cflags $gcrypt_cflags 6749cabdff1aSopenharmony_ci else 6750cabdff1aSopenharmony_ci require gcrypt gcrypt.h gcry_mpi_new -lgcrypt 6751cabdff1aSopenharmony_ci fi 6752cabdff1aSopenharmony_cifi 6753cabdff1aSopenharmony_ci 6754cabdff1aSopenharmony_ciif enabled sdl2; then 6755cabdff1aSopenharmony_ci SDL2_CONFIG="${cross_prefix}sdl2-config" 6756cabdff1aSopenharmony_ci test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 3.0.0" SDL_events.h SDL_PollEvent 6757cabdff1aSopenharmony_ci if disabled sdl2 && "${SDL2_CONFIG}" --version > /dev/null 2>&1; then 6758cabdff1aSopenharmony_ci sdl2_cflags=$("${SDL2_CONFIG}" --cflags) 6759cabdff1aSopenharmony_ci sdl2_extralibs=$("${SDL2_CONFIG}" --libs) 6760cabdff1aSopenharmony_ci test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags && 6761cabdff1aSopenharmony_ci test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x030000" $sdl2_cflags && 6762cabdff1aSopenharmony_ci check_func_headers SDL_events.h SDL_PollEvent $sdl2_extralibs $sdl2_cflags && 6763cabdff1aSopenharmony_ci enable sdl2 6764cabdff1aSopenharmony_ci fi 6765cabdff1aSopenharmony_ci if test $target_os = "mingw32"; then 6766cabdff1aSopenharmony_ci sdl2_extralibs=$(filter_out '-mwindows' $sdl2_extralibs) 6767cabdff1aSopenharmony_ci fi 6768cabdff1aSopenharmony_cifi 6769cabdff1aSopenharmony_ci 6770cabdff1aSopenharmony_ciif enabled decklink; then 6771cabdff1aSopenharmony_ci case $target_os in 6772cabdff1aSopenharmony_ci mingw32*|mingw64*|win32|win64) 6773cabdff1aSopenharmony_ci decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 -loleaut32" 6774cabdff1aSopenharmony_ci decklink_indev_extralibs="$decklink_indev_extralibs -lole32 -loleaut32" 6775cabdff1aSopenharmony_ci ;; 6776cabdff1aSopenharmony_ci esac 6777cabdff1aSopenharmony_cifi 6778cabdff1aSopenharmony_ci 6779cabdff1aSopenharmony_cienabled securetransport && 6780cabdff1aSopenharmony_ci check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" && 6781cabdff1aSopenharmony_ci check_lib securetransport "Security/SecureTransport.h Security/Security.h" "SSLCreateContext" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" || 6782cabdff1aSopenharmony_ci disable securetransport 6783cabdff1aSopenharmony_ci 6784cabdff1aSopenharmony_cienabled securetransport && 6785cabdff1aSopenharmony_ci check_func SecItemImport "-Wl,-framework,CoreFoundation -Wl,-framework,Security" 6786cabdff1aSopenharmony_ci 6787cabdff1aSopenharmony_cienabled schannel && 6788cabdff1aSopenharmony_ci check_func_headers "windows.h security.h" InitializeSecurityContext -DSECURITY_WIN32 -lsecur32 && 6789cabdff1aSopenharmony_ci test_cpp_condition winerror.h "defined(SEC_I_CONTEXT_EXPIRED)" && 6790cabdff1aSopenharmony_ci schannel_extralibs="-lsecur32" || 6791cabdff1aSopenharmony_ci disable schannel 6792cabdff1aSopenharmony_ci 6793cabdff1aSopenharmony_cimakeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo 6794cabdff1aSopenharmony_cienabled makeinfo \ 6795cabdff1aSopenharmony_ci && [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \ 6796cabdff1aSopenharmony_ci && enable makeinfo_html || disable makeinfo_html 6797cabdff1aSopenharmony_cidisabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html 6798cabdff1aSopenharmony_ciperl -v > /dev/null 2>&1 && enable perl || disable perl 6799cabdff1aSopenharmony_cipod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man 6800cabdff1aSopenharmony_cirsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout 6801cabdff1aSopenharmony_cixmllint --version > /dev/null 2>&1 && enable xmllint || disable xmllint 6802cabdff1aSopenharmony_ci 6803cabdff1aSopenharmony_ci# check V4L2 codecs available in the API 6804cabdff1aSopenharmony_ciif enabled v4l2_m2m; then 6805cabdff1aSopenharmony_ci check_headers linux/fb.h 6806cabdff1aSopenharmony_ci check_headers linux/videodev2.h 6807cabdff1aSopenharmony_ci test_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete 6808cabdff1aSopenharmony_ci check_cc v4l2_m2m linux/videodev2.h "int i = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_VIDEO_M2M | V4L2_BUF_FLAG_LAST;" 6809cabdff1aSopenharmony_ci check_cc vc1_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VC1_ANNEX_G;" 6810cabdff1aSopenharmony_ci check_cc mpeg1_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG1;" 6811cabdff1aSopenharmony_ci check_cc mpeg2_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG2;" 6812cabdff1aSopenharmony_ci check_cc mpeg4_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG4;" 6813cabdff1aSopenharmony_ci check_cc hevc_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_HEVC;" 6814cabdff1aSopenharmony_ci check_cc h263_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H263;" 6815cabdff1aSopenharmony_ci check_cc h264_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H264;" 6816cabdff1aSopenharmony_ci check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;" 6817cabdff1aSopenharmony_ci check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;" 6818cabdff1aSopenharmony_cifi 6819cabdff1aSopenharmony_ci 6820cabdff1aSopenharmony_cicheck_headers sys/videoio.h 6821cabdff1aSopenharmony_citest_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete 6822cabdff1aSopenharmony_ci 6823cabdff1aSopenharmony_cicheck_lib user32 "windows.h winuser.h" GetShellWindow -luser32 6824cabdff1aSopenharmony_cicheck_lib vfw32 "windows.h vfw.h" capCreateCaptureWindow -lvfw32 6825cabdff1aSopenharmony_ci# check that WM_CAP_DRIVER_CONNECT is defined to the proper value 6826cabdff1aSopenharmony_ci# w32api 3.12 had it defined wrong 6827cabdff1aSopenharmony_cicheck_cpp_condition vfwcap_defines vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" 6828cabdff1aSopenharmony_ci 6829cabdff1aSopenharmony_cicheck_type "dshow.h" IBaseFilter 6830cabdff1aSopenharmony_ci 6831cabdff1aSopenharmony_ci# check for ioctl_meteor.h, ioctl_bt848.h and alternatives 6832cabdff1aSopenharmony_cicheck_headers "dev/bktr/ioctl_meteor.h dev/bktr/ioctl_bt848.h" || 6833cabdff1aSopenharmony_ci check_headers "machine/ioctl_meteor.h machine/ioctl_bt848.h" || 6834cabdff1aSopenharmony_ci check_headers "dev/video/meteor/ioctl_meteor.h dev/video/bktr/ioctl_bt848.h" || 6835cabdff1aSopenharmony_ci check_headers "dev/ic/bt8xx.h" 6836cabdff1aSopenharmony_ci 6837cabdff1aSopenharmony_ciif check_struct sys/soundcard.h audio_buf_info bytes; then 6838cabdff1aSopenharmony_ci enable_sanitized sys/soundcard.h 6839cabdff1aSopenharmony_cielse 6840cabdff1aSopenharmony_ci test_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_sanitized sys/soundcard.h 6841cabdff1aSopenharmony_ci #include <sys/soundcard.h> 6842cabdff1aSopenharmony_ci audio_buf_info abc; 6843cabdff1aSopenharmony_ciEOF 6844cabdff1aSopenharmony_cifi 6845cabdff1aSopenharmony_ci 6846cabdff1aSopenharmony_cienabled alsa && { check_pkg_config alsa alsa "alsa/asoundlib.h" snd_pcm_htimestamp || 6847cabdff1aSopenharmony_ci check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound; } 6848cabdff1aSopenharmony_ci 6849cabdff1aSopenharmony_cienabled libjack && 6850cabdff1aSopenharmony_ci require_pkg_config libjack jack jack/jack.h jack_port_get_latency_range 6851cabdff1aSopenharmony_ci 6852cabdff1aSopenharmony_cienabled sndio && { check_pkg_config sndio sndio "sndio.h" sio_open || 6853cabdff1aSopenharmony_ci check_lib sndio sndio.h sio_open -lsndio; } 6854cabdff1aSopenharmony_ci 6855cabdff1aSopenharmony_ciif enabled libcdio; then 6856cabdff1aSopenharmony_ci check_pkg_config libcdio libcdio_paranoia "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open || 6857cabdff1aSopenharmony_ci check_pkg_config libcdio libcdio_paranoia "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open || 6858cabdff1aSopenharmony_ci check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || 6859cabdff1aSopenharmony_ci check_lib libcdio "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || 6860cabdff1aSopenharmony_ci die "ERROR: No usable libcdio/cdparanoia found" 6861cabdff1aSopenharmony_cifi 6862cabdff1aSopenharmony_ci 6863cabdff1aSopenharmony_cienabled libxcb && check_pkg_config libxcb "xcb >= 1.4" xcb/xcb.h xcb_connect || 6864cabdff1aSopenharmony_ci disable libxcb_shm libxcb_shape libxcb_xfixes 6865cabdff1aSopenharmony_ci 6866cabdff1aSopenharmony_ciif enabled libxcb; then 6867cabdff1aSopenharmony_ci enabled libxcb_shm && check_pkg_config libxcb_shm xcb-shm xcb/shm.h xcb_shm_attach 6868cabdff1aSopenharmony_ci enabled libxcb_shape && check_pkg_config libxcb_shape xcb-shape xcb/shape.h xcb_shape_get_rectangles 6869cabdff1aSopenharmony_ci enabled libxcb_xfixes && check_pkg_config libxcb_xfixes xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image 6870cabdff1aSopenharmony_cifi 6871cabdff1aSopenharmony_ci 6872cabdff1aSopenharmony_cicheck_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs" 6873cabdff1aSopenharmony_ci 6874cabdff1aSopenharmony_ci# d3d11va requires linking directly to dxgi and d3d11 if not building for 6875cabdff1aSopenharmony_ci# the desktop api partition 6876cabdff1aSopenharmony_citest_cpp <<EOF && enable uwp && d3d11va_extralibs="-ldxgi -ld3d11" 6877cabdff1aSopenharmony_ci#ifdef WINAPI_FAMILY 6878cabdff1aSopenharmony_ci#include <winapifamily.h> 6879cabdff1aSopenharmony_ci#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 6880cabdff1aSopenharmony_ci#error desktop, not uwp 6881cabdff1aSopenharmony_ci#else 6882cabdff1aSopenharmony_ci// WINAPI_FAMILY_APP, WINAPI_FAMILY_PHONE_APP => UWP 6883cabdff1aSopenharmony_ci#endif 6884cabdff1aSopenharmony_ci#else 6885cabdff1aSopenharmony_ci#error no family set 6886cabdff1aSopenharmony_ci#endif 6887cabdff1aSopenharmony_ciEOF 6888cabdff1aSopenharmony_ci 6889cabdff1aSopenharmony_ci# mediafoundation requires linking directly to mfplat if building for uwp target 6890cabdff1aSopenharmony_cienabled uwp && mediafoundation_extralibs="-lmfplat -lmfuuid -lole32 -lstrmiids" || mediafoundation_extralibs="-lmfuuid -lole32 -lstrmiids" 6891cabdff1aSopenharmony_ci 6892cabdff1aSopenharmony_cienabled libdrm && 6893cabdff1aSopenharmony_ci check_pkg_config libdrm_getfb2 libdrm "xf86drmMode.h" drmModeGetFB2 6894cabdff1aSopenharmony_ci 6895cabdff1aSopenharmony_cienabled vaapi && 6896cabdff1aSopenharmony_ci check_pkg_config vaapi "libva >= 0.35.0" "va/va.h" vaInitialize 6897cabdff1aSopenharmony_ci 6898cabdff1aSopenharmony_ciif enabled vaapi; then 6899cabdff1aSopenharmony_ci check_pkg_config vaapi_drm "libva-drm" "va/va_drm.h" vaGetDisplayDRM 6900cabdff1aSopenharmony_ci 6901cabdff1aSopenharmony_ci if enabled xlib_x11; then 6902cabdff1aSopenharmony_ci check_pkg_config vaapi_x11 "libva-x11" "va/va_x11.h" vaGetDisplay 6903cabdff1aSopenharmony_ci fi 6904cabdff1aSopenharmony_ci 6905cabdff1aSopenharmony_ci check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)" 6906cabdff1aSopenharmony_ci 6907cabdff1aSopenharmony_ci check_type "va/va.h va/va_dec_hevc.h" "VAPictureParameterBufferHEVC" 6908cabdff1aSopenharmony_ci check_struct "va/va.h" "VADecPictureParameterBufferVP9" bit_depth 6909cabdff1aSopenharmony_ci check_struct "va/va.h" "VADecPictureParameterBufferAV1" bit_depth_idx 6910cabdff1aSopenharmony_ci check_type "va/va.h va/va_vpp.h" "VAProcFilterParameterBufferHDRToneMapping" 6911cabdff1aSopenharmony_ci check_struct "va/va.h va/va_vpp.h" "VAProcPipelineCaps" rotation_flags 6912cabdff1aSopenharmony_ci check_struct "va/va.h va/va_vpp.h" "VAProcPipelineCaps" blend_flags 6913cabdff1aSopenharmony_ci check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC" 6914cabdff1aSopenharmony_ci check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG" 6915cabdff1aSopenharmony_ci check_type "va/va.h va/va_enc_vp8.h" "VAEncPictureParameterBufferVP8" 6916cabdff1aSopenharmony_ci check_type "va/va.h va/va_enc_vp9.h" "VAEncPictureParameterBufferVP9" 6917cabdff1aSopenharmony_cifi 6918cabdff1aSopenharmony_ci 6919cabdff1aSopenharmony_ciif enabled_all opencl libdrm ; then 6920cabdff1aSopenharmony_ci check_type "CL/cl_intel.h" "clCreateImageFromFdINTEL_fn" && 6921cabdff1aSopenharmony_ci enable opencl_drm_beignet 6922cabdff1aSopenharmony_ci check_func_headers "CL/cl_ext.h" clImportMemoryARM && 6923cabdff1aSopenharmony_ci enable opencl_drm_arm 6924cabdff1aSopenharmony_cifi 6925cabdff1aSopenharmony_ci 6926cabdff1aSopenharmony_ciif enabled_all opencl vaapi ; then 6927cabdff1aSopenharmony_ci if enabled opencl_drm_beignet ; then 6928cabdff1aSopenharmony_ci enable opencl_vaapi_beignet 6929cabdff1aSopenharmony_ci else 6930cabdff1aSopenharmony_ci check_type "CL/cl.h CL/cl_va_api_media_sharing_intel.h" "clCreateFromVA_APIMediaSurfaceINTEL_fn" && 6931cabdff1aSopenharmony_ci enable opencl_vaapi_intel_media 6932cabdff1aSopenharmony_ci fi 6933cabdff1aSopenharmony_cifi 6934cabdff1aSopenharmony_ci 6935cabdff1aSopenharmony_ciif enabled_all opencl dxva2 ; then 6936cabdff1aSopenharmony_ci check_type "CL/cl_dx9_media_sharing.h" cl_dx9_surface_info_khr && 6937cabdff1aSopenharmony_ci enable opencl_dxva2 6938cabdff1aSopenharmony_cifi 6939cabdff1aSopenharmony_ci 6940cabdff1aSopenharmony_ciif enabled_all opencl d3d11va ; then 6941cabdff1aSopenharmony_ci check_type "CL/cl_d3d11.h" clGetDeviceIDsFromD3D11KHR_fn && 6942cabdff1aSopenharmony_ci enable opencl_d3d11 6943cabdff1aSopenharmony_cifi 6944cabdff1aSopenharmony_ci 6945cabdff1aSopenharmony_cienabled vdpau && 6946cabdff1aSopenharmony_ci check_cpp_condition vdpau vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" 6947cabdff1aSopenharmony_ci 6948cabdff1aSopenharmony_cienabled vdpau && 6949cabdff1aSopenharmony_ci check_lib vdpau_x11 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11 6950cabdff1aSopenharmony_ci 6951cabdff1aSopenharmony_cienabled crystalhd && check_lib crystalhd "stdint.h libcrystalhd/libcrystalhd_if.h" DtsCrystalHDVersion -lcrystalhd 6952cabdff1aSopenharmony_ci 6953cabdff1aSopenharmony_ciif enabled vulkan; then 6954cabdff1aSopenharmony_ci check_pkg_config_header_only vulkan "vulkan >= 1.2.189" "vulkan/vulkan.h" "defined VK_VERSION_1_2" || 6955cabdff1aSopenharmony_ci check_cpp_condition vulkan "vulkan/vulkan.h" "defined(VK_VERSION_1_3) || (defined(VK_VERSION_1_2) && VK_HEADER_VERSION >= 189)" 6956cabdff1aSopenharmony_cifi 6957cabdff1aSopenharmony_ci 6958cabdff1aSopenharmony_ciif enabled x86; then 6959cabdff1aSopenharmony_ci case $target_os in 6960cabdff1aSopenharmony_ci mingw32*|mingw64*|win32|win64|linux|cygwin*) 6961cabdff1aSopenharmony_ci ;; 6962cabdff1aSopenharmony_ci *) 6963cabdff1aSopenharmony_ci disable ffnvcodec cuvid nvdec nvenc 6964cabdff1aSopenharmony_ci ;; 6965cabdff1aSopenharmony_ci esac 6966cabdff1aSopenharmony_cielif enabled_any aarch64 ppc64 && ! enabled bigendian; then 6967cabdff1aSopenharmony_ci case $target_os in 6968cabdff1aSopenharmony_ci linux) 6969cabdff1aSopenharmony_ci ;; 6970cabdff1aSopenharmony_ci *) 6971cabdff1aSopenharmony_ci disable ffnvcodec cuvid nvdec nvenc 6972cabdff1aSopenharmony_ci ;; 6973cabdff1aSopenharmony_ci esac 6974cabdff1aSopenharmony_cielse 6975cabdff1aSopenharmony_ci disable ffnvcodec cuvid nvdec nvenc 6976cabdff1aSopenharmony_cifi 6977cabdff1aSopenharmony_ci 6978cabdff1aSopenharmony_cienabled ffnvcodec && enable cuda 6979cabdff1aSopenharmony_ci 6980cabdff1aSopenharmony_cienabled nvenc && 6981cabdff1aSopenharmony_ci test_cc -I$source_path <<EOF || disable nvenc 6982cabdff1aSopenharmony_ci#include <ffnvcodec/nvEncodeAPI.h> 6983cabdff1aSopenharmony_ciNV_ENCODE_API_FUNCTION_LIST flist; 6984cabdff1aSopenharmony_civoid f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; } 6985cabdff1aSopenharmony_ciint main(void) { return 0; } 6986cabdff1aSopenharmony_ciEOF 6987cabdff1aSopenharmony_ci 6988cabdff1aSopenharmony_ciif enabled_any nvdec cuvid; then 6989cabdff1aSopenharmony_ci check_type "ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h" "CUVIDAV1PICPARAMS" 6990cabdff1aSopenharmony_cifi 6991cabdff1aSopenharmony_ci 6992cabdff1aSopenharmony_cienabled amf && 6993cabdff1aSopenharmony_ci check_cpp_condition amf "AMF/core/Version.h" \ 6994cabdff1aSopenharmony_ci "(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x0001000400090000" 6995cabdff1aSopenharmony_ci 6996cabdff1aSopenharmony_ci# Funny iconv installations are not unusual, so check it after all flags have been set 6997cabdff1aSopenharmony_ciif enabled libc_iconv; then 6998cabdff1aSopenharmony_ci check_func_headers iconv.h iconv 6999cabdff1aSopenharmony_cielif enabled iconv; then 7000cabdff1aSopenharmony_ci check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv 7001cabdff1aSopenharmony_cifi 7002cabdff1aSopenharmony_ci 7003cabdff1aSopenharmony_cienabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel" 7004cabdff1aSopenharmony_ci 7005cabdff1aSopenharmony_ci# add some useful compiler flags if supported 7006cabdff1aSopenharmony_cicheck_cflags -Wdeclaration-after-statement 7007cabdff1aSopenharmony_cicheck_cflags -Wall 7008cabdff1aSopenharmony_cicheck_cflags -Wdisabled-optimization 7009cabdff1aSopenharmony_cicheck_cflags -Wpointer-arith 7010cabdff1aSopenharmony_cicheck_cflags -Wredundant-decls 7011cabdff1aSopenharmony_cicheck_cflags -Wwrite-strings 7012cabdff1aSopenharmony_cicheck_cflags -Wtype-limits 7013cabdff1aSopenharmony_cicheck_cflags -Wundef 7014cabdff1aSopenharmony_cicheck_cflags -Wmissing-prototypes 7015cabdff1aSopenharmony_cicheck_cflags -Wstrict-prototypes 7016cabdff1aSopenharmony_cicheck_cflags -Wempty-body 7017cabdff1aSopenharmony_ci 7018cabdff1aSopenharmony_ciif enabled extra_warnings; then 7019cabdff1aSopenharmony_ci check_cflags -Wcast-qual 7020cabdff1aSopenharmony_ci check_cflags -Wextra 7021cabdff1aSopenharmony_ci check_cflags -Wpedantic 7022cabdff1aSopenharmony_cifi 7023cabdff1aSopenharmony_ci 7024cabdff1aSopenharmony_cicheck_disable_warning(){ 7025cabdff1aSopenharmony_ci warning_flag=-W${1#-Wno-} 7026cabdff1aSopenharmony_ci test_cflags $unknown_warning_flags $warning_flag && add_cflags $1 7027cabdff1aSopenharmony_ci} 7028cabdff1aSopenharmony_ci 7029cabdff1aSopenharmony_citest_cflags -Werror=unused-command-line-argument && 7030cabdff1aSopenharmony_ci append unknown_warning_flags "-Werror=unused-command-line-argument" 7031cabdff1aSopenharmony_citest_cflags -Werror=unknown-warning-option && 7032cabdff1aSopenharmony_ci append unknown_warning_flags "-Werror=unknown-warning-option" 7033cabdff1aSopenharmony_ci 7034cabdff1aSopenharmony_cicheck_disable_warning -Wno-parentheses 7035cabdff1aSopenharmony_cicheck_disable_warning -Wno-switch 7036cabdff1aSopenharmony_cicheck_disable_warning -Wno-format-zero-length 7037cabdff1aSopenharmony_cicheck_disable_warning -Wno-pointer-sign 7038cabdff1aSopenharmony_cicheck_disable_warning -Wno-unused-const-variable 7039cabdff1aSopenharmony_cicheck_disable_warning -Wno-bool-operation 7040cabdff1aSopenharmony_cicheck_disable_warning -Wno-char-subscripts 7041cabdff1aSopenharmony_ci 7042cabdff1aSopenharmony_cicheck_disable_warning_headers(){ 7043cabdff1aSopenharmony_ci warning_flag=-W${1#-Wno-} 7044cabdff1aSopenharmony_ci test_cflags $warning_flag && add_cflags_headers $1 7045cabdff1aSopenharmony_ci} 7046cabdff1aSopenharmony_ci 7047cabdff1aSopenharmony_cicheck_disable_warning_headers -Wno-deprecated-declarations 7048cabdff1aSopenharmony_cicheck_disable_warning_headers -Wno-unused-variable 7049cabdff1aSopenharmony_ci 7050cabdff1aSopenharmony_citest_cc <<EOF && enable blocks_extension 7051cabdff1aSopenharmony_civoid (^block)(void); 7052cabdff1aSopenharmony_ciEOF 7053cabdff1aSopenharmony_ci 7054cabdff1aSopenharmony_ci# add some linker flags 7055cabdff1aSopenharmony_cicheck_ldflags -Wl,--warn-common 7056cabdff1aSopenharmony_cicheck_ldflags -Wl,-rpath-link=:libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil 7057cabdff1aSopenharmony_cienabled rpath && add_ldexeflags -Wl,-rpath,$libdir && add_ldsoflags -Wl,-rpath,$libdir 7058cabdff1aSopenharmony_citest_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic 7059cabdff1aSopenharmony_ci 7060cabdff1aSopenharmony_ci# add some strip flags 7061cabdff1aSopenharmony_cicheck_stripflags -x 7062cabdff1aSopenharmony_ci 7063cabdff1aSopenharmony_cienabled neon_clobber_test && 7064cabdff1aSopenharmony_ci check_ldflags -Wl,--wrap,avcodec_open2 \ 7065cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_decode_subtitle2 \ 7066cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_encode_subtitle \ 7067cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_send_packet \ 7068cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_receive_packet \ 7069cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_send_frame \ 7070cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_receive_frame \ 7071cabdff1aSopenharmony_ci -Wl,--wrap,swr_convert || 7072cabdff1aSopenharmony_ci disable neon_clobber_test 7073cabdff1aSopenharmony_ci 7074cabdff1aSopenharmony_cienabled xmm_clobber_test && 7075cabdff1aSopenharmony_ci check_ldflags -Wl,--wrap,avcodec_open2 \ 7076cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_decode_subtitle2 \ 7077cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_encode_subtitle \ 7078cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_send_packet \ 7079cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_receive_packet \ 7080cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_send_frame \ 7081cabdff1aSopenharmony_ci -Wl,--wrap,avcodec_receive_frame \ 7082cabdff1aSopenharmony_ci -Wl,--wrap,swr_convert \ 7083cabdff1aSopenharmony_ci -Wl,--wrap,sws_scale || 7084cabdff1aSopenharmony_ci disable xmm_clobber_test 7085cabdff1aSopenharmony_ci 7086cabdff1aSopenharmony_cicheck_ld "cc" proper_dce <<EOF 7087cabdff1aSopenharmony_ciextern const int array[512]; 7088cabdff1aSopenharmony_cistatic inline int func(void) { return array[0]; } 7089cabdff1aSopenharmony_ciint main(void) { return 0; } 7090cabdff1aSopenharmony_ciEOF 7091cabdff1aSopenharmony_ci 7092cabdff1aSopenharmony_ciif enabled proper_dce; then 7093cabdff1aSopenharmony_ci echo "X { local: *; };" > $TMPV 7094cabdff1aSopenharmony_ci if test_ldflags -Wl,${version_script},$TMPV; then 7095cabdff1aSopenharmony_ci append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver' 7096cabdff1aSopenharmony_ci quotes='""' 7097cabdff1aSopenharmony_ci test_cc <<EOF && enable symver_asm_label 7098cabdff1aSopenharmony_civoid ff_foo(void) __asm__ ("av_foo@VERSION"); 7099cabdff1aSopenharmony_civoid ff_foo(void) { ${inline_asm+__asm__($quotes);} } 7100cabdff1aSopenharmony_ciEOF 7101cabdff1aSopenharmony_ci test_cc <<EOF && enable symver_gnu_asm 7102cabdff1aSopenharmony_ci__asm__(".symver ff_foo,av_foo@VERSION"); 7103cabdff1aSopenharmony_civoid ff_foo(void) {} 7104cabdff1aSopenharmony_ciEOF 7105cabdff1aSopenharmony_ci fi 7106cabdff1aSopenharmony_cifi 7107cabdff1aSopenharmony_ci 7108cabdff1aSopenharmony_ciif [ -z "$optflags" ]; then 7109cabdff1aSopenharmony_ci if enabled small; then 7110cabdff1aSopenharmony_ci optflags=$cflags_size 7111cabdff1aSopenharmony_ci elif enabled optimizations; then 7112cabdff1aSopenharmony_ci optflags=$cflags_speed 7113cabdff1aSopenharmony_ci else 7114cabdff1aSopenharmony_ci optflags=$cflags_noopt 7115cabdff1aSopenharmony_ci fi 7116cabdff1aSopenharmony_cifi 7117cabdff1aSopenharmony_ci 7118cabdff1aSopenharmony_cicheck_optflags(){ 7119cabdff1aSopenharmony_ci check_cflags "$@" 7120cabdff1aSopenharmony_ci enabled lto && check_ldflags "$@" 7121cabdff1aSopenharmony_ci} 7122cabdff1aSopenharmony_ci 7123cabdff1aSopenharmony_cicheck_optflags $optflags 7124cabdff1aSopenharmony_cicheck_optflags -fno-math-errno 7125cabdff1aSopenharmony_cicheck_optflags -fno-signed-zeros 7126cabdff1aSopenharmony_ci 7127cabdff1aSopenharmony_ciif enabled lto; then 7128cabdff1aSopenharmony_ci test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker" 7129cabdff1aSopenharmony_ci check_cflags -flto 7130cabdff1aSopenharmony_ci check_ldflags -flto $cpuflags 7131cabdff1aSopenharmony_ci disable inline_asm_direct_symbol_refs 7132cabdff1aSopenharmony_cifi 7133cabdff1aSopenharmony_ci 7134cabdff1aSopenharmony_cienabled ftrapv && check_cflags -ftrapv 7135cabdff1aSopenharmony_ci 7136cabdff1aSopenharmony_citest_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone" 7137cabdff1aSopenharmony_ciint x; 7138cabdff1aSopenharmony_ciEOF 7139cabdff1aSopenharmony_ci 7140cabdff1aSopenharmony_ci 7141cabdff1aSopenharmony_ciif enabled icc; then 7142cabdff1aSopenharmony_ci # Just warnings, no remarks 7143cabdff1aSopenharmony_ci check_cflags -w1 7144cabdff1aSopenharmony_ci # -wd: Disable following warnings 7145cabdff1aSopenharmony_ci # 144, 167, 556: -Wno-pointer-sign 7146cabdff1aSopenharmony_ci # 188: enumerated type mixed with another type 7147cabdff1aSopenharmony_ci # 1292: attribute "foo" ignored 7148cabdff1aSopenharmony_ci # 1419: external declaration in primary source file 7149cabdff1aSopenharmony_ci # 10006: ignoring unknown option -fno-signed-zeros 7150cabdff1aSopenharmony_ci # 10148: ignoring unknown option -Wno-parentheses 7151cabdff1aSopenharmony_ci # 10156: ignoring option '-W'; no argument required 7152cabdff1aSopenharmony_ci # 13200: No EMMS instruction before call to function 7153cabdff1aSopenharmony_ci # 13203: No EMMS instruction before return from function 7154cabdff1aSopenharmony_ci check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156,13200,13203 7155cabdff1aSopenharmony_ci # 11030: Warning unknown option --as-needed 7156cabdff1aSopenharmony_ci # 10156: ignoring option '-export'; no argument required 7157cabdff1aSopenharmony_ci check_ldflags -wd10156,11030 7158cabdff1aSopenharmony_ci # icc 11.0 and 11.1 work with ebp_available, but don't pass the test 7159cabdff1aSopenharmony_ci enable ebp_available 7160cabdff1aSopenharmony_ci # The test above does not test linking 7161cabdff1aSopenharmony_ci enabled lto && disable symver_asm_label 7162cabdff1aSopenharmony_ci if enabled x86_32; then 7163cabdff1aSopenharmony_ci icc_version=$($cc -dumpversion) 7164cabdff1aSopenharmony_ci test ${icc_version%%.*} -ge 11 && 7165cabdff1aSopenharmony_ci check_cflags -falign-stack=maintain-16-byte || 7166cabdff1aSopenharmony_ci disable aligned_stack 7167cabdff1aSopenharmony_ci fi 7168cabdff1aSopenharmony_cielif enabled gcc; then 7169cabdff1aSopenharmony_ci check_optflags -fno-tree-vectorize 7170cabdff1aSopenharmony_ci check_cflags -Werror=format-security 7171cabdff1aSopenharmony_ci check_cflags -Werror=implicit-function-declaration 7172cabdff1aSopenharmony_ci check_cflags -Werror=missing-prototypes 7173cabdff1aSopenharmony_ci check_cflags -Werror=return-type 7174cabdff1aSopenharmony_ci check_cflags -Werror=vla 7175cabdff1aSopenharmony_ci check_cflags -Wformat 7176cabdff1aSopenharmony_ci check_cflags -fdiagnostics-color=auto 7177cabdff1aSopenharmony_ci enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized 7178cabdff1aSopenharmony_ci if enabled x86_32; then 7179cabdff1aSopenharmony_ci case $target_os in 7180cabdff1aSopenharmony_ci *bsd*) 7181cabdff1aSopenharmony_ci # BSDs don't guarantee a 16 byte aligned stack, but we can 7182cabdff1aSopenharmony_ci # request GCC to try to maintain 16 byte alignment throughout 7183cabdff1aSopenharmony_ci # function calls. Library entry points that might call assembly 7184cabdff1aSopenharmony_ci # functions align the stack. (The parameter means 2^4 bytes.) 7185cabdff1aSopenharmony_ci check_cflags -mpreferred-stack-boundary=4 7186cabdff1aSopenharmony_ci ;; 7187cabdff1aSopenharmony_ci esac 7188cabdff1aSopenharmony_ci fi 7189cabdff1aSopenharmony_cielif enabled llvm_gcc; then 7190cabdff1aSopenharmony_ci check_cflags -mllvm -stack-alignment=16 7191cabdff1aSopenharmony_cielif enabled clang; then 7192cabdff1aSopenharmony_ci if enabled x86_32; then 7193cabdff1aSopenharmony_ci # Clang doesn't support maintaining alignment without assuming the 7194cabdff1aSopenharmony_ci # same alignment in every function. If 16 byte alignment would be 7195cabdff1aSopenharmony_ci # enabled, one would also have to either add attribute_align_arg on 7196cabdff1aSopenharmony_ci # every single entry point into the libraries or enable -mstackrealign 7197cabdff1aSopenharmony_ci # (doing stack realignment in every single function). 7198cabdff1aSopenharmony_ci case $target_os in 7199cabdff1aSopenharmony_ci mingw32|win32|*bsd*) 7200cabdff1aSopenharmony_ci disable aligned_stack 7201cabdff1aSopenharmony_ci ;; 7202cabdff1aSopenharmony_ci *) 7203cabdff1aSopenharmony_ci check_cflags -mllvm -stack-alignment=16 7204cabdff1aSopenharmony_ci check_cflags -mstack-alignment=16 7205cabdff1aSopenharmony_ci ;; 7206cabdff1aSopenharmony_ci esac 7207cabdff1aSopenharmony_ci else 7208cabdff1aSopenharmony_ci check_cflags -mllvm -stack-alignment=16 7209cabdff1aSopenharmony_ci check_cflags -mstack-alignment=16 7210cabdff1aSopenharmony_ci fi 7211cabdff1aSopenharmony_ci check_cflags -Qunused-arguments 7212cabdff1aSopenharmony_ci check_cflags -Werror=implicit-function-declaration 7213cabdff1aSopenharmony_ci check_cflags -Werror=missing-prototypes 7214cabdff1aSopenharmony_ci check_cflags -Werror=return-type 7215cabdff1aSopenharmony_cielif enabled cparser; then 7216cabdff1aSopenharmony_ci add_cflags -Wno-missing-variable-declarations 7217cabdff1aSopenharmony_ci add_cflags -Wno-empty-statement 7218cabdff1aSopenharmony_cielif enabled armcc; then 7219cabdff1aSopenharmony_ci add_cflags -W${armcc_opt},--diag_suppress=4343 # hardfp compat 7220cabdff1aSopenharmony_ci add_cflags -W${armcc_opt},--diag_suppress=3036 # using . as system include dir 7221cabdff1aSopenharmony_ci # 2523: use of inline assembly is deprecated 7222cabdff1aSopenharmony_ci add_cflags -W${armcc_opt},--diag_suppress=2523 7223cabdff1aSopenharmony_ci add_cflags -W${armcc_opt},--diag_suppress=1207 7224cabdff1aSopenharmony_ci add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition 7225cabdff1aSopenharmony_ci add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat 7226cabdff1aSopenharmony_ci add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign 7227cabdff1aSopenharmony_ci add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign 7228cabdff1aSopenharmony_cielif enabled pathscale; then 7229cabdff1aSopenharmony_ci add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF 7230cabdff1aSopenharmony_ci disable inline_asm 7231cabdff1aSopenharmony_cielif enabled_any msvc icl; then 7232cabdff1aSopenharmony_ci enabled x86_32 && disable aligned_stack 7233cabdff1aSopenharmony_ci enabled_all x86_32 debug && add_cflags -Oy- 7234cabdff1aSopenharmony_ci enabled debug && add_ldflags -debug 7235cabdff1aSopenharmony_ci enable pragma_deprecated 7236cabdff1aSopenharmony_ci if enabled icl; then 7237cabdff1aSopenharmony_ci # -Qansi-alias is basically -fstrict-aliasing, but does not work 7238cabdff1aSopenharmony_ci # (correctly) on icl 13.x. 7239cabdff1aSopenharmony_ci test_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" && 7240cabdff1aSopenharmony_ci add_cflags -Qansi-alias 7241cabdff1aSopenharmony_ci # Some inline asm is not compilable in debug 7242cabdff1aSopenharmony_ci if enabled debug; then 7243cabdff1aSopenharmony_ci disable ebp_available 7244cabdff1aSopenharmony_ci disable ebx_available 7245cabdff1aSopenharmony_ci fi 7246cabdff1aSopenharmony_ci fi 7247cabdff1aSopenharmony_ci # msvcrt10 x64 incorrectly enables log2, only msvcrt12 (MSVC 2013) onwards actually has log2. 7248cabdff1aSopenharmony_ci check_cpp_condition log2 crtversion.h "_VC_CRT_MAJOR_VERSION >= 12" 7249cabdff1aSopenharmony_ci # The CRT headers contain __declspec(restrict) in a few places, but if redefining 7250cabdff1aSopenharmony_ci # restrict, this might break. MSVC 2010 and 2012 fail with __declspec(__restrict) 7251cabdff1aSopenharmony_ci # (as it ends up if the restrict redefine is done before including stdlib.h), while 7252cabdff1aSopenharmony_ci # MSVC 2013 and newer can handle it fine. 7253cabdff1aSopenharmony_ci # If this declspec fails, force including stdlib.h before the restrict redefinition 7254cabdff1aSopenharmony_ci # happens in config.h. 7255cabdff1aSopenharmony_ci if [ $restrict_keyword != restrict ]; then 7256cabdff1aSopenharmony_ci test_cc <<EOF || add_cflags -FIstdlib.h 7257cabdff1aSopenharmony_ci__declspec($restrict_keyword) void *foo(int); 7258cabdff1aSopenharmony_ciEOF 7259cabdff1aSopenharmony_ci fi 7260cabdff1aSopenharmony_ci # the new SSA optimzer in VS2015 U3 is mis-optimizing some parts of the code 7261cabdff1aSopenharmony_ci # Issue has been fixed in MSVC v19.00.24218. 7262cabdff1aSopenharmony_ci test_cpp_condition windows.h "_MSC_FULL_VER >= 190024218" || 7263cabdff1aSopenharmony_ci check_cflags -d2SSAOptimizer- 7264cabdff1aSopenharmony_ci # enable utf-8 source processing on VS2015 U2 and newer 7265cabdff1aSopenharmony_ci test_cpp_condition windows.h "_MSC_FULL_VER >= 190023918" && 7266cabdff1aSopenharmony_ci add_cflags -utf-8 7267cabdff1aSopenharmony_cifi 7268cabdff1aSopenharmony_ci 7269cabdff1aSopenharmony_cifor pfx in "" host_; do 7270cabdff1aSopenharmony_ci varname=${pfx%_}cc_type 7271cabdff1aSopenharmony_ci eval "type=\$$varname" 7272cabdff1aSopenharmony_ci if [ "$type" = "msvc" ]; then 7273cabdff1aSopenharmony_ci test_${pfx}cc <<EOF || add_${pfx}cflags -Dinline=__inline 7274cabdff1aSopenharmony_cistatic inline int foo(int a) { return a; } 7275cabdff1aSopenharmony_ciEOF 7276cabdff1aSopenharmony_ci fi 7277cabdff1aSopenharmony_cidone 7278cabdff1aSopenharmony_ci 7279cabdff1aSopenharmony_cicase $as_type in 7280cabdff1aSopenharmony_ci clang) 7281cabdff1aSopenharmony_ci add_asflags -Qunused-arguments 7282cabdff1aSopenharmony_ci ;; 7283cabdff1aSopenharmony_ciesac 7284cabdff1aSopenharmony_ci 7285cabdff1aSopenharmony_cicase $ld_type in 7286cabdff1aSopenharmony_ci clang) 7287cabdff1aSopenharmony_ci check_ldflags -Qunused-arguments 7288cabdff1aSopenharmony_ci ;; 7289cabdff1aSopenharmony_ciesac 7290cabdff1aSopenharmony_ci 7291cabdff1aSopenharmony_cienable frame_thread_encoder 7292cabdff1aSopenharmony_ci 7293cabdff1aSopenharmony_ci# these filters depend on removed avcodec APIs 7294cabdff1aSopenharmony_ci# they are kept disabled for now, but will be removed if 7295cabdff1aSopenharmony_ci# nobody updates and re-enables them 7296cabdff1aSopenharmony_cidisable mcdeint_filter 7297cabdff1aSopenharmony_cidisable uspp_filter 7298cabdff1aSopenharmony_ci 7299cabdff1aSopenharmony_cienabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; } 7300cabdff1aSopenharmony_ci 7301cabdff1aSopenharmony_cicheck_deps $CONFIG_LIST \ 7302cabdff1aSopenharmony_ci $CONFIG_EXTRA \ 7303cabdff1aSopenharmony_ci $HAVE_LIST \ 7304cabdff1aSopenharmony_ci $ALL_COMPONENTS \ 7305cabdff1aSopenharmony_ci 7306cabdff1aSopenharmony_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" 7307cabdff1aSopenharmony_ci 7308cabdff1aSopenharmony_cicase $target_os in 7309cabdff1aSopenharmony_cihaiku) 7310cabdff1aSopenharmony_ci disable memalign 7311cabdff1aSopenharmony_ci disable posix_memalign 7312cabdff1aSopenharmony_ci ;; 7313cabdff1aSopenharmony_ci*-dos|freedos|opendos) 7314cabdff1aSopenharmony_ci if test_cpp_condition sys/version.h "defined(__DJGPP__) && __DJGPP__ == 2 && __DJGPP_MINOR__ == 5"; then 7315cabdff1aSopenharmony_ci disable memalign 7316cabdff1aSopenharmony_ci fi 7317cabdff1aSopenharmony_ci ;; 7318cabdff1aSopenharmony_ciesac 7319cabdff1aSopenharmony_ci 7320cabdff1aSopenharmony_ciflatten_extralibs(){ 7321cabdff1aSopenharmony_ci nested_entries= 7322cabdff1aSopenharmony_ci list_name=$1 7323cabdff1aSopenharmony_ci eval list=\$${1} 7324cabdff1aSopenharmony_ci for entry in $list; do 7325cabdff1aSopenharmony_ci entry_copy=$entry 7326cabdff1aSopenharmony_ci resolve entry_copy 7327cabdff1aSopenharmony_ci flat_entries= 7328cabdff1aSopenharmony_ci for e in $entry_copy; do 7329cabdff1aSopenharmony_ci case $e in 7330cabdff1aSopenharmony_ci *_extralibs) nested_entries="$nested_entries$e ";; 7331cabdff1aSopenharmony_ci *) flat_entries="$flat_entries$e ";; 7332cabdff1aSopenharmony_ci esac 7333cabdff1aSopenharmony_ci done 7334cabdff1aSopenharmony_ci eval $entry="\$flat_entries" 7335cabdff1aSopenharmony_ci done 7336cabdff1aSopenharmony_ci append $list_name "$nested_entries" 7337cabdff1aSopenharmony_ci 7338cabdff1aSopenharmony_ci resolve nested_entries 7339cabdff1aSopenharmony_ci if test -n "$(filter '*_extralibs' $nested_entries)"; then 7340cabdff1aSopenharmony_ci flatten_extralibs $list_name 7341cabdff1aSopenharmony_ci fi 7342cabdff1aSopenharmony_ci} 7343cabdff1aSopenharmony_ci 7344cabdff1aSopenharmony_ciflatten_extralibs_wrapper(){ 7345cabdff1aSopenharmony_ci list_name=$1 7346cabdff1aSopenharmony_ci flatten_extralibs $list_name 7347cabdff1aSopenharmony_ci unique $list_name 7348cabdff1aSopenharmony_ci resolve $list_name 7349cabdff1aSopenharmony_ci eval $list_name=\$\(\$ldflags_filter \$$list_name\) 7350cabdff1aSopenharmony_ci eval printf \''%s'\' \""\$$list_name"\" 7351cabdff1aSopenharmony_ci} 7352cabdff1aSopenharmony_ci 7353cabdff1aSopenharmony_cifor linkunit in $LIBRARY_LIST; do 7354cabdff1aSopenharmony_ci unset current_extralibs 7355cabdff1aSopenharmony_ci eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST 7356cabdff1aSopenharmony_ci for comp in ${components}; do 7357cabdff1aSopenharmony_ci enabled $comp || continue 7358cabdff1aSopenharmony_ci comp_extralibs="${comp}_extralibs" 7359cabdff1aSopenharmony_ci append current_extralibs $comp_extralibs 7360cabdff1aSopenharmony_ci done 7361cabdff1aSopenharmony_ci eval prepend ${linkunit}_extralibs $current_extralibs 7362cabdff1aSopenharmony_cidone 7363cabdff1aSopenharmony_ci 7364cabdff1aSopenharmony_cifor linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do 7365cabdff1aSopenharmony_ci eval ${linkunit}_extralibs=\$\(flatten_extralibs_wrapper ${linkunit}_extralibs\) 7366cabdff1aSopenharmony_cidone 7367cabdff1aSopenharmony_ci 7368cabdff1aSopenharmony_cimap 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST 7369cabdff1aSopenharmony_ci 7370cabdff1aSopenharmony_cifor thread in $THREADS_LIST; do 7371cabdff1aSopenharmony_ci if enabled $thread; then 7372cabdff1aSopenharmony_ci test -n "$thread_type" && 7373cabdff1aSopenharmony_ci die "ERROR: Only one thread type must be selected." || 7374cabdff1aSopenharmony_ci thread_type="$thread" 7375cabdff1aSopenharmony_ci fi 7376cabdff1aSopenharmony_cidone 7377cabdff1aSopenharmony_ci 7378cabdff1aSopenharmony_ciif disabled stdatomic; then 7379cabdff1aSopenharmony_ci if enabled atomics_gcc; then 7380cabdff1aSopenharmony_ci add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc' 7381cabdff1aSopenharmony_ci elif enabled atomics_win32; then 7382cabdff1aSopenharmony_ci add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32' 7383cabdff1aSopenharmony_ci elif enabled atomics_suncc; then 7384cabdff1aSopenharmony_ci add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc' 7385cabdff1aSopenharmony_ci elif enabled pthreads; then 7386cabdff1aSopenharmony_ci add_compat atomics/pthread/stdatomic.o 7387cabdff1aSopenharmony_ci add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread' 7388cabdff1aSopenharmony_ci else 7389cabdff1aSopenharmony_ci enabled threads && die "Threading is enabled, but no atomics are available" 7390cabdff1aSopenharmony_ci add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy' 7391cabdff1aSopenharmony_ci fi 7392cabdff1aSopenharmony_cifi 7393cabdff1aSopenharmony_ci 7394cabdff1aSopenharmony_ci# Check if requested libraries were found. 7395cabdff1aSopenharmony_cifor lib in $AUTODETECT_LIBS; do 7396cabdff1aSopenharmony_ci requested $lib && ! enabled $lib && die "ERROR: $lib requested but not found"; 7397cabdff1aSopenharmony_cidone 7398cabdff1aSopenharmony_ci 7399cabdff1aSopenharmony_cienabled zlib && add_cppflags -DZLIB_CONST 7400cabdff1aSopenharmony_ci 7401cabdff1aSopenharmony_ci# conditional library dependencies, in any order 7402cabdff1aSopenharmony_cienabled amovie_filter && prepend avfilter_deps "avformat avcodec" 7403cabdff1aSopenharmony_cienabled aresample_filter && prepend avfilter_deps "swresample" 7404cabdff1aSopenharmony_cienabled bm3d_filter && prepend avfilter_deps "avcodec" 7405cabdff1aSopenharmony_cienabled cover_rect_filter && prepend avfilter_deps "avformat avcodec" 7406cabdff1aSopenharmony_cienabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample" 7407cabdff1aSopenharmony_cienabled elbg_filter && prepend avfilter_deps "avcodec" 7408cabdff1aSopenharmony_cienabled find_rect_filter && prepend avfilter_deps "avformat avcodec" 7409cabdff1aSopenharmony_cienabled firequalizer_filter && prepend avfilter_deps "avcodec" 7410cabdff1aSopenharmony_cienabled mcdeint_filter && prepend avfilter_deps "avcodec" 7411cabdff1aSopenharmony_cienabled movie_filter && prepend avfilter_deps "avformat avcodec" 7412cabdff1aSopenharmony_cienabled pan_filter && prepend avfilter_deps "swresample" 7413cabdff1aSopenharmony_cienabled pp_filter && prepend avfilter_deps "postproc" 7414cabdff1aSopenharmony_cienabled removelogo_filter && prepend avfilter_deps "avformat avcodec swscale" 7415cabdff1aSopenharmony_cienabled sab_filter && prepend avfilter_deps "swscale" 7416cabdff1aSopenharmony_cienabled scale_filter && prepend avfilter_deps "swscale" 7417cabdff1aSopenharmony_cienabled scale2ref_filter && prepend avfilter_deps "swscale" 7418cabdff1aSopenharmony_cienabled showcqt_filter && prepend avfilter_deps "avformat swscale" 7419cabdff1aSopenharmony_cienabled signature_filter && prepend avfilter_deps "avcodec avformat" 7420cabdff1aSopenharmony_cienabled smartblur_filter && prepend avfilter_deps "swscale" 7421cabdff1aSopenharmony_cienabled spp_filter && prepend avfilter_deps "avcodec" 7422cabdff1aSopenharmony_cienabled sr_filter && prepend avfilter_deps "avformat swscale" 7423cabdff1aSopenharmony_cienabled subtitles_filter && prepend avfilter_deps "avformat avcodec" 7424cabdff1aSopenharmony_cienabled uspp_filter && prepend avfilter_deps "avcodec" 7425cabdff1aSopenharmony_cienabled zoompan_filter && prepend avfilter_deps "swscale" 7426cabdff1aSopenharmony_ci 7427cabdff1aSopenharmony_cienabled lavfi_indev && prepend avdevice_deps "avfilter" 7428cabdff1aSopenharmony_ci 7429cabdff1aSopenharmony_ci#FIXME 7430cabdff1aSopenharmony_cienabled_any sdl2_outdev opengl_outdev && enabled sdl2 && 7431cabdff1aSopenharmony_ci add_cflags $(filter_out '-Dmain=SDL_main' $sdl2_cflags) 7432cabdff1aSopenharmony_ci 7433cabdff1aSopenharmony_cienabled opus_decoder && prepend avcodec_deps "swresample" 7434cabdff1aSopenharmony_ci 7435cabdff1aSopenharmony_ci# reorder the items at var $1 to align with the items order at var $2 . 7436cabdff1aSopenharmony_ci# die if an item at $1 is not at $2 . 7437cabdff1aSopenharmony_cireorder_by(){ 7438cabdff1aSopenharmony_ci eval rb_in=\$$1 7439cabdff1aSopenharmony_ci eval rb_ordered=\$$2 7440cabdff1aSopenharmony_ci 7441cabdff1aSopenharmony_ci for rb in $rb_in; do 7442cabdff1aSopenharmony_ci is_in $rb $rb_ordered || die "$rb at \$$1 is not at \$$2" 7443cabdff1aSopenharmony_ci done 7444cabdff1aSopenharmony_ci 7445cabdff1aSopenharmony_ci rb_out= 7446cabdff1aSopenharmony_ci for rb in $rb_ordered; do 7447cabdff1aSopenharmony_ci is_in $rb $rb_in && rb_out="$rb_out$rb " 7448cabdff1aSopenharmony_ci done 7449cabdff1aSopenharmony_ci eval $1=\$rb_out 7450cabdff1aSopenharmony_ci} 7451cabdff1aSopenharmony_ci 7452cabdff1aSopenharmony_ci# deps-expand fflib $1: N x {append all expanded deps; unique} 7453cabdff1aSopenharmony_ci# within a set of N items, N expansions are enough to expose a cycle. 7454cabdff1aSopenharmony_ciexpand_deps(){ 7455cabdff1aSopenharmony_ci unique ${1}_deps # required for the early break test. 7456cabdff1aSopenharmony_ci for dummy in $LIBRARY_LIST; do # N iteratios 7457cabdff1aSopenharmony_ci eval deps=\$${1}_deps 7458cabdff1aSopenharmony_ci append ${1}_deps $(map 'eval echo \$${v}_deps' $deps) 7459cabdff1aSopenharmony_ci unique ${1}_deps 7460cabdff1aSopenharmony_ci eval '[ ${#deps} = ${#'${1}_deps'} ]' && break # doesn't expand anymore 7461cabdff1aSopenharmony_ci done 7462cabdff1aSopenharmony_ci 7463cabdff1aSopenharmony_ci eval is_in $1 \$${1}_deps && die "Dependency cycle at ${1}_deps" 7464cabdff1aSopenharmony_ci reorder_by ${1}_deps LIBRARY_LIST # linking order is expected later 7465cabdff1aSopenharmony_ci} 7466cabdff1aSopenharmony_ci 7467cabdff1aSopenharmony_ci#we have to remove gpl from the deps here as some code assumes all lib deps are libs 7468cabdff1aSopenharmony_cipostproc_deps="$(filter_out 'gpl' $postproc_deps)" 7469cabdff1aSopenharmony_ci 7470cabdff1aSopenharmony_cimap 'expand_deps $v' $LIBRARY_LIST 7471cabdff1aSopenharmony_ci 7472cabdff1aSopenharmony_ciif test "$quiet" != "yes"; then 7473cabdff1aSopenharmony_ci 7474cabdff1aSopenharmony_ciecho "install prefix $prefix" 7475cabdff1aSopenharmony_ciecho "source path $source_path" 7476cabdff1aSopenharmony_ciecho "C compiler $cc" 7477cabdff1aSopenharmony_ciecho "C library $libc_type" 7478cabdff1aSopenharmony_ciif test "$host_cc" != "$cc"; then 7479cabdff1aSopenharmony_ci echo "host C compiler $host_cc" 7480cabdff1aSopenharmony_ci echo "host C library $host_libc_type" 7481cabdff1aSopenharmony_cifi 7482cabdff1aSopenharmony_ciecho "ARCH $arch ($cpu)" 7483cabdff1aSopenharmony_ciif test "$build_suffix" != ""; then 7484cabdff1aSopenharmony_ci echo "build suffix $build_suffix" 7485cabdff1aSopenharmony_cifi 7486cabdff1aSopenharmony_ciif test "$progs_suffix" != ""; then 7487cabdff1aSopenharmony_ci echo "progs suffix $progs_suffix" 7488cabdff1aSopenharmony_cifi 7489cabdff1aSopenharmony_ciif test "$extra_version" != ""; then 7490cabdff1aSopenharmony_ci echo "version string suffix $extra_version" 7491cabdff1aSopenharmony_cifi 7492cabdff1aSopenharmony_ciecho "big-endian ${bigendian-no}" 7493cabdff1aSopenharmony_ciecho "runtime cpu detection ${runtime_cpudetect-no}" 7494cabdff1aSopenharmony_ciif enabled x86; then 7495cabdff1aSopenharmony_ci echo "standalone assembly ${x86asm-no}" 7496cabdff1aSopenharmony_ci echo "x86 assembler ${x86asmexe}" 7497cabdff1aSopenharmony_ci echo "MMX enabled ${mmx-no}" 7498cabdff1aSopenharmony_ci echo "MMXEXT enabled ${mmxext-no}" 7499cabdff1aSopenharmony_ci echo "3DNow! enabled ${amd3dnow-no}" 7500cabdff1aSopenharmony_ci echo "3DNow! extended enabled ${amd3dnowext-no}" 7501cabdff1aSopenharmony_ci echo "SSE enabled ${sse-no}" 7502cabdff1aSopenharmony_ci echo "SSSE3 enabled ${ssse3-no}" 7503cabdff1aSopenharmony_ci echo "AESNI enabled ${aesni-no}" 7504cabdff1aSopenharmony_ci echo "AVX enabled ${avx-no}" 7505cabdff1aSopenharmony_ci echo "AVX2 enabled ${avx2-no}" 7506cabdff1aSopenharmony_ci echo "AVX-512 enabled ${avx512-no}" 7507cabdff1aSopenharmony_ci echo "AVX-512ICL enabled ${avx512icl-no}" 7508cabdff1aSopenharmony_ci echo "XOP enabled ${xop-no}" 7509cabdff1aSopenharmony_ci echo "FMA3 enabled ${fma3-no}" 7510cabdff1aSopenharmony_ci echo "FMA4 enabled ${fma4-no}" 7511cabdff1aSopenharmony_ci echo "i686 features enabled ${i686-no}" 7512cabdff1aSopenharmony_ci echo "CMOV is fast ${fast_cmov-no}" 7513cabdff1aSopenharmony_ci echo "EBX available ${ebx_available-no}" 7514cabdff1aSopenharmony_ci echo "EBP available ${ebp_available-no}" 7515cabdff1aSopenharmony_cifi 7516cabdff1aSopenharmony_ciif enabled aarch64; then 7517cabdff1aSopenharmony_ci echo "NEON enabled ${neon-no}" 7518cabdff1aSopenharmony_ci echo "VFP enabled ${vfp-no}" 7519cabdff1aSopenharmony_cifi 7520cabdff1aSopenharmony_ciif enabled arm; then 7521cabdff1aSopenharmony_ci echo "ARMv5TE enabled ${armv5te-no}" 7522cabdff1aSopenharmony_ci echo "ARMv6 enabled ${armv6-no}" 7523cabdff1aSopenharmony_ci echo "ARMv6T2 enabled ${armv6t2-no}" 7524cabdff1aSopenharmony_ci echo "VFP enabled ${vfp-no}" 7525cabdff1aSopenharmony_ci echo "NEON enabled ${neon-no}" 7526cabdff1aSopenharmony_ci echo "THUMB enabled ${thumb-no}" 7527cabdff1aSopenharmony_cifi 7528cabdff1aSopenharmony_ciif enabled mips; then 7529cabdff1aSopenharmony_ci echo "MIPS FPU enabled ${mipsfpu-no}" 7530cabdff1aSopenharmony_ci echo "MIPS DSP R1 enabled ${mipsdsp-no}" 7531cabdff1aSopenharmony_ci echo "MIPS DSP R2 enabled ${mipsdspr2-no}" 7532cabdff1aSopenharmony_ci echo "MIPS MSA enabled ${msa-no}" 7533cabdff1aSopenharmony_ci echo "LOONGSON MMI enabled ${mmi-no}" 7534cabdff1aSopenharmony_cifi 7535cabdff1aSopenharmony_ciif enabled ppc; then 7536cabdff1aSopenharmony_ci echo "AltiVec enabled ${altivec-no}" 7537cabdff1aSopenharmony_ci echo "VSX enabled ${vsx-no}" 7538cabdff1aSopenharmony_ci echo "POWER8 enabled ${power8-no}" 7539cabdff1aSopenharmony_ci echo "PPC 4xx optimizations ${ppc4xx-no}" 7540cabdff1aSopenharmony_ci echo "dcbzl available ${dcbzl-no}" 7541cabdff1aSopenharmony_cifi 7542cabdff1aSopenharmony_ciif enabled loongarch; then 7543cabdff1aSopenharmony_ci echo "LSX enabled ${lsx-no}" 7544cabdff1aSopenharmony_ci echo "LASX enabled ${lasx-no}" 7545cabdff1aSopenharmony_cifi 7546cabdff1aSopenharmony_ciecho "debug symbols ${debug-no}" 7547cabdff1aSopenharmony_ciecho "strip symbols ${stripping-no}" 7548cabdff1aSopenharmony_ciecho "optimize for size ${small-no}" 7549cabdff1aSopenharmony_ciecho "optimizations ${optimizations-no}" 7550cabdff1aSopenharmony_ciecho "static ${static-no}" 7551cabdff1aSopenharmony_ciecho "shared ${shared-no}" 7552cabdff1aSopenharmony_ciecho "postprocessing support ${postproc-no}" 7553cabdff1aSopenharmony_ciecho "network support ${network-no}" 7554cabdff1aSopenharmony_ciecho "threading support ${thread_type-no}" 7555cabdff1aSopenharmony_ciecho "safe bitstream reader ${safe_bitstream_reader-no}" 7556cabdff1aSopenharmony_ciecho "texi2html enabled ${texi2html-no}" 7557cabdff1aSopenharmony_ciecho "perl enabled ${perl-no}" 7558cabdff1aSopenharmony_ciecho "pod2man enabled ${pod2man-no}" 7559cabdff1aSopenharmony_ciecho "makeinfo enabled ${makeinfo-no}" 7560cabdff1aSopenharmony_ciecho "makeinfo supports HTML ${makeinfo_html-no}" 7561cabdff1aSopenharmony_ciecho "xmllint enabled ${xmllint-no}" 7562cabdff1aSopenharmony_citest -n "$random_seed" && 7563cabdff1aSopenharmony_ci echo "random seed ${random_seed}" 7564cabdff1aSopenharmony_ciecho 7565cabdff1aSopenharmony_ci 7566cabdff1aSopenharmony_ciecho "External libraries:" 7567cabdff1aSopenharmony_ciprint_enabled '' $EXTERNAL_LIBRARY_LIST $EXTERNAL_AUTODETECT_LIBRARY_LIST | print_in_columns 7568cabdff1aSopenharmony_ciecho 7569cabdff1aSopenharmony_ci 7570cabdff1aSopenharmony_ciecho "External libraries providing hardware acceleration:" 7571cabdff1aSopenharmony_ciprint_enabled '' $HWACCEL_LIBRARY_LIST $HWACCEL_AUTODETECT_LIBRARY_LIST | print_in_columns 7572cabdff1aSopenharmony_ciecho 7573cabdff1aSopenharmony_ci 7574cabdff1aSopenharmony_ciecho "Libraries:" 7575cabdff1aSopenharmony_ciprint_enabled '' $LIBRARY_LIST | print_in_columns 7576cabdff1aSopenharmony_ciecho 7577cabdff1aSopenharmony_ci 7578cabdff1aSopenharmony_ciecho "Programs:" 7579cabdff1aSopenharmony_ciprint_enabled '' $PROGRAM_LIST | print_in_columns 7580cabdff1aSopenharmony_ciecho 7581cabdff1aSopenharmony_ci 7582cabdff1aSopenharmony_cifor type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do 7583cabdff1aSopenharmony_ci echo "Enabled ${type}s:" 7584cabdff1aSopenharmony_ci eval list=\$$(toupper $type)_LIST 7585cabdff1aSopenharmony_ci print_enabled '_*' $list | print_in_columns 7586cabdff1aSopenharmony_ci echo 7587cabdff1aSopenharmony_cidone 7588cabdff1aSopenharmony_ci 7589cabdff1aSopenharmony_ciif test -n "$ignore_tests"; then 7590cabdff1aSopenharmony_ci ignore_tests=$(echo $ignore_tests | tr ',' ' ') 7591cabdff1aSopenharmony_ci echo "Ignored FATE tests:" 7592cabdff1aSopenharmony_ci echo $ignore_tests | print_in_columns 7593cabdff1aSopenharmony_ci echo 7594cabdff1aSopenharmony_cifi 7595cabdff1aSopenharmony_ci 7596cabdff1aSopenharmony_ciecho "License: $license" 7597cabdff1aSopenharmony_ci 7598cabdff1aSopenharmony_cifi # test "$quiet" != "yes" 7599cabdff1aSopenharmony_ci 7600cabdff1aSopenharmony_ciif test -n "$WARN_IF_GETS_DISABLED_LIST"; then 7601cabdff1aSopenharmony_ci for cfg in $WARN_IF_GETS_DISABLED_LIST; do 7602cabdff1aSopenharmony_ci if disabled $cfg; then 7603cabdff1aSopenharmony_ci varname=${cfg}_disable_reason 7604cabdff1aSopenharmony_ci eval "warn \"Disabled $cfg because \$$varname\"" 7605cabdff1aSopenharmony_ci fi 7606cabdff1aSopenharmony_ci done 7607cabdff1aSopenharmony_cifi 7608cabdff1aSopenharmony_ci 7609cabdff1aSopenharmony_ciif test -n "$WARNINGS"; then 7610cabdff1aSopenharmony_ci printf "\n%s%s$WARNINGS%s" "$warn_color" "$bold_color" "$reset_color" 7611cabdff1aSopenharmony_ci enabled fatal_warnings && exit 1 7612cabdff1aSopenharmony_cifi 7613cabdff1aSopenharmony_ci 7614cabdff1aSopenharmony_citest -e Makefile || echo "include $source_path/Makefile" > Makefile 7615cabdff1aSopenharmony_ci 7616cabdff1aSopenharmony_ciesc(){ 7617cabdff1aSopenharmony_ci echo "$*" | sed 's/%/%25/g;s/:/%3a/g' 7618cabdff1aSopenharmony_ci} 7619cabdff1aSopenharmony_ci 7620cabdff1aSopenharmony_ciecho "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" > ffbuild/config.fate 7621cabdff1aSopenharmony_ci 7622cabdff1aSopenharmony_cienabled stripping || strip="echo skipping strip" 7623cabdff1aSopenharmony_cienabled stripping || striptype="" 7624cabdff1aSopenharmony_ci 7625cabdff1aSopenharmony_ciconfig_files="$TMPH ffbuild/config.mak doc/config.texi" 7626cabdff1aSopenharmony_ci 7627cabdff1aSopenharmony_cicat > ffbuild/config.mak <<EOF 7628cabdff1aSopenharmony_ci# Automatically generated by configure - do not modify! 7629cabdff1aSopenharmony_ciifndef FFMPEG_CONFIG_MAK 7630cabdff1aSopenharmony_ciFFMPEG_CONFIG_MAK=1 7631cabdff1aSopenharmony_ciFFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION 7632cabdff1aSopenharmony_ciprefix=$prefix 7633cabdff1aSopenharmony_ciLIBDIR=\$(DESTDIR)$libdir 7634cabdff1aSopenharmony_ciSHLIBDIR=\$(DESTDIR)$shlibdir 7635cabdff1aSopenharmony_ciINCDIR=\$(DESTDIR)$incdir 7636cabdff1aSopenharmony_ciBINDIR=\$(DESTDIR)$bindir 7637cabdff1aSopenharmony_ciDATADIR=\$(DESTDIR)$datadir 7638cabdff1aSopenharmony_ciDOCDIR=\$(DESTDIR)$docdir 7639cabdff1aSopenharmony_ciMANDIR=\$(DESTDIR)$mandir 7640cabdff1aSopenharmony_ciPKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir 7641cabdff1aSopenharmony_ciINSTALL_NAME_DIR=$install_name_dir 7642cabdff1aSopenharmony_ciSRC_PATH=$source_path 7643cabdff1aSopenharmony_ciSRC_LINK=$source_link 7644cabdff1aSopenharmony_ciifndef MAIN_MAKEFILE 7645cabdff1aSopenharmony_ciSRC_PATH:=\$(SRC_PATH:.%=..%) 7646cabdff1aSopenharmony_ciendif 7647cabdff1aSopenharmony_ciCC_IDENT=$cc_ident 7648cabdff1aSopenharmony_ciARCH=$arch 7649cabdff1aSopenharmony_ciINTRINSICS=$intrinsics 7650cabdff1aSopenharmony_ciEXTERN_PREFIX=$extern_prefix 7651cabdff1aSopenharmony_ciCC=$cc 7652cabdff1aSopenharmony_ciCXX=$cxx 7653cabdff1aSopenharmony_ciAS=$as 7654cabdff1aSopenharmony_ciOBJCC=$objcc 7655cabdff1aSopenharmony_ciLD=$ld 7656cabdff1aSopenharmony_ciDEPCC=$dep_cc 7657cabdff1aSopenharmony_ciDEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS) 7658cabdff1aSopenharmony_ciDEPAS=$as 7659cabdff1aSopenharmony_ciDEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS) 7660cabdff1aSopenharmony_ciX86ASM=$x86asmexe 7661cabdff1aSopenharmony_ciDEPX86ASM=$x86asmexe 7662cabdff1aSopenharmony_ciDEPX86ASMFLAGS=\$(X86ASMFLAGS) 7663cabdff1aSopenharmony_ciAR=$ar 7664cabdff1aSopenharmony_ciARFLAGS=$arflags 7665cabdff1aSopenharmony_ciAR_O=$ar_o 7666cabdff1aSopenharmony_ciAR_CMD=$ar 7667cabdff1aSopenharmony_ciNM_CMD=$nm 7668cabdff1aSopenharmony_ciMETALCC=$metalcc 7669cabdff1aSopenharmony_ciMETALLIB=$metallib 7670cabdff1aSopenharmony_ciRANLIB=$ranlib 7671cabdff1aSopenharmony_ciSTRIP=$strip 7672cabdff1aSopenharmony_ciSTRIPTYPE=$striptype 7673cabdff1aSopenharmony_ciNVCC=$nvcc 7674cabdff1aSopenharmony_ciCP=cp -p 7675cabdff1aSopenharmony_ciLN_S=$ln_s 7676cabdff1aSopenharmony_ciCPPFLAGS=$CPPFLAGS 7677cabdff1aSopenharmony_ciCFLAGS=$CFLAGS 7678cabdff1aSopenharmony_ciCXXFLAGS=$CXXFLAGS 7679cabdff1aSopenharmony_ciOBJCCFLAGS=$OBJCFLAGS 7680cabdff1aSopenharmony_ciASFLAGS=$ASFLAGS 7681cabdff1aSopenharmony_ciNVCCFLAGS=$nvccflags 7682cabdff1aSopenharmony_ciAS_C=$AS_C 7683cabdff1aSopenharmony_ciAS_O=$AS_O 7684cabdff1aSopenharmony_ciOBJCC_C=$OBJCC_C 7685cabdff1aSopenharmony_ciOBJCC_E=$OBJCC_E 7686cabdff1aSopenharmony_ciOBJCC_O=$OBJCC_O 7687cabdff1aSopenharmony_ciCC_C=$CC_C 7688cabdff1aSopenharmony_ciCC_E=$CC_E 7689cabdff1aSopenharmony_ciCC_O=$CC_O 7690cabdff1aSopenharmony_ciCXX_C=$CXX_C 7691cabdff1aSopenharmony_ciCXX_O=$CXX_O 7692cabdff1aSopenharmony_ciNVCC_C=$NVCC_C 7693cabdff1aSopenharmony_ciNVCC_O=$NVCC_O 7694cabdff1aSopenharmony_ciLD_O=$LD_O 7695cabdff1aSopenharmony_ciX86ASM_O=$X86ASM_O 7696cabdff1aSopenharmony_ciLD_LIB=$LD_LIB 7697cabdff1aSopenharmony_ciLD_PATH=$LD_PATH 7698cabdff1aSopenharmony_ciDLLTOOL=$dlltool 7699cabdff1aSopenharmony_ciWINDRES=$windres 7700cabdff1aSopenharmony_ciDOXYGEN=$doxygen 7701cabdff1aSopenharmony_ciLDFLAGS=$LDFLAGS 7702cabdff1aSopenharmony_ciLDEXEFLAGS=$LDEXEFLAGS 7703cabdff1aSopenharmony_ciLDSOFLAGS=$LDSOFLAGS 7704cabdff1aSopenharmony_ciSHFLAGS=$(echo $($ldflags_filter $SHFLAGS)) 7705cabdff1aSopenharmony_ciASMSTRIPFLAGS=$ASMSTRIPFLAGS 7706cabdff1aSopenharmony_ciX86ASMFLAGS=$X86ASMFLAGS 7707cabdff1aSopenharmony_ciMSAFLAGS=$MSAFLAGS 7708cabdff1aSopenharmony_ciMMIFLAGS=$MMIFLAGS 7709cabdff1aSopenharmony_ciLSXFLAGS=$LSXFLAGS 7710cabdff1aSopenharmony_ciLASXFLAGS=$LASXFLAGS 7711cabdff1aSopenharmony_ciBUILDSUF=$build_suffix 7712cabdff1aSopenharmony_ciPROGSSUF=$progs_suffix 7713cabdff1aSopenharmony_ciFULLNAME=$FULLNAME 7714cabdff1aSopenharmony_ciLIBPREF=$LIBPREF 7715cabdff1aSopenharmony_ciLIBSUF=$LIBSUF 7716cabdff1aSopenharmony_ciLIBNAME=$LIBNAME 7717cabdff1aSopenharmony_ciSLIBPREF=$SLIBPREF 7718cabdff1aSopenharmony_ciSLIBSUF=$SLIBSUF 7719cabdff1aSopenharmony_ciEXESUF=$EXESUF 7720cabdff1aSopenharmony_ciEXTRA_VERSION=$extra_version 7721cabdff1aSopenharmony_ciCCDEP=$CCDEP 7722cabdff1aSopenharmony_ciCXXDEP=$CXXDEP 7723cabdff1aSopenharmony_ciCCDEP_FLAGS=$CCDEP_FLAGS 7724cabdff1aSopenharmony_ciASDEP=$ASDEP 7725cabdff1aSopenharmony_ciASDEP_FLAGS=$ASDEP_FLAGS 7726cabdff1aSopenharmony_ciX86ASMDEP=$X86ASMDEP 7727cabdff1aSopenharmony_ciX86ASMDEP_FLAGS=$X86ASMDEP_FLAGS 7728cabdff1aSopenharmony_ciCC_DEPFLAGS=$CC_DEPFLAGS 7729cabdff1aSopenharmony_ciCXX_DEPFLAGS=$CXX_DEPFLAGS 7730cabdff1aSopenharmony_ciOBJCC_DEPFLAGS=$OBJC_DEPFLAGS 7731cabdff1aSopenharmony_ciAS_DEPFLAGS=$AS_DEPFLAGS 7732cabdff1aSopenharmony_ciX86ASM_DEPFLAGS=$X86ASM_DEPFLAGS 7733cabdff1aSopenharmony_ciHOSTCC=$host_cc 7734cabdff1aSopenharmony_ciHOSTLD=$host_ld 7735cabdff1aSopenharmony_ciHOSTCFLAGS=$host_cflags 7736cabdff1aSopenharmony_ciHOSTCPPFLAGS=$host_cppflags 7737cabdff1aSopenharmony_ciHOSTEXESUF=$HOSTEXESUF 7738cabdff1aSopenharmony_ciHOSTLDFLAGS=$host_ldflags 7739cabdff1aSopenharmony_ciHOSTEXTRALIBS=$host_extralibs 7740cabdff1aSopenharmony_ciDEPHOSTCC=$host_cc 7741cabdff1aSopenharmony_ciDEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS) 7742cabdff1aSopenharmony_ciHOSTCCDEP=$HOSTCCDEP 7743cabdff1aSopenharmony_ciHOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS 7744cabdff1aSopenharmony_ciHOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS 7745cabdff1aSopenharmony_ciHOSTCC_C=$HOSTCC_C 7746cabdff1aSopenharmony_ciHOSTCC_O=$HOSTCC_O 7747cabdff1aSopenharmony_ciHOSTLD_O=$HOSTLD_O 7748cabdff1aSopenharmony_ciTARGET_EXEC=$target_exec $target_exec_args 7749cabdff1aSopenharmony_ciTARGET_PATH=$target_path 7750cabdff1aSopenharmony_ciTARGET_SAMPLES=${target_samples:-\$(SAMPLES)} 7751cabdff1aSopenharmony_ciCFLAGS-ffplay=${sdl2_cflags} 7752cabdff1aSopenharmony_ciCFLAGS_HEADERS=$CFLAGS_HEADERS 7753cabdff1aSopenharmony_ciLIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD 7754cabdff1aSopenharmony_ciEXTRALIBS=$extralibs 7755cabdff1aSopenharmony_ciCOMPAT_OBJS=$compat_objs 7756cabdff1aSopenharmony_ciINSTALL=$install 7757cabdff1aSopenharmony_ciLIBTARGET=${LIBTARGET} 7758cabdff1aSopenharmony_ciSLIBNAME=${SLIBNAME} 7759cabdff1aSopenharmony_ciSLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION} 7760cabdff1aSopenharmony_ciSLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR} 7761cabdff1aSopenharmony_ciSLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD} 7762cabdff1aSopenharmony_ciSLIB_EXTRA_CMD=${SLIB_EXTRA_CMD} 7763cabdff1aSopenharmony_ciSLIB_INSTALL_NAME=${SLIB_INSTALL_NAME} 7764cabdff1aSopenharmony_ciSLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS} 7765cabdff1aSopenharmony_ciSLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB} 7766cabdff1aSopenharmony_ciSLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB} 7767cabdff1aSopenharmony_ciVERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD} 7768cabdff1aSopenharmony_ciSAMPLES:=${samples:-\$(FATE_SAMPLES)} 7769cabdff1aSopenharmony_ciNOREDZONE_FLAGS=$noredzone_flags 7770cabdff1aSopenharmony_ciLIBFUZZER_PATH=$libfuzzer_path 7771cabdff1aSopenharmony_ciIGNORE_TESTS=$ignore_tests 7772cabdff1aSopenharmony_ciEOF 7773cabdff1aSopenharmony_ci 7774cabdff1aSopenharmony_cimap 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST 7775cabdff1aSopenharmony_ci 7776cabdff1aSopenharmony_cifor entry in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do 7777cabdff1aSopenharmony_ci eval echo "EXTRALIBS-${entry}=\$${entry}_extralibs" >> ffbuild/config.mak 7778cabdff1aSopenharmony_cidone 7779cabdff1aSopenharmony_ci 7780cabdff1aSopenharmony_cicat > $TMPH <<EOF 7781cabdff1aSopenharmony_ci/* Automatically generated by configure - do not modify! */ 7782cabdff1aSopenharmony_ci#ifndef FFMPEG_CONFIG_H 7783cabdff1aSopenharmony_ci#define FFMPEG_CONFIG_H 7784cabdff1aSopenharmony_ci#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)" 7785cabdff1aSopenharmony_ci#define FFMPEG_LICENSE "$(c_escape $license)" 7786cabdff1aSopenharmony_ci#define CONFIG_THIS_YEAR 2023 7787cabdff1aSopenharmony_ci#define FFMPEG_DATADIR "$(eval c_escape $datadir)" 7788cabdff1aSopenharmony_ci#define AVCONV_DATADIR "$(eval c_escape $datadir)" 7789cabdff1aSopenharmony_ci#define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})" 7790cabdff1aSopenharmony_ci#define OS_NAME $target_os 7791cabdff1aSopenharmony_ci#define av_restrict $restrict_keyword 7792cabdff1aSopenharmony_ci#define EXTERN_PREFIX "${extern_prefix}" 7793cabdff1aSopenharmony_ci#define EXTERN_ASM ${extern_prefix} 7794cabdff1aSopenharmony_ci#define BUILDSUF "$build_suffix" 7795cabdff1aSopenharmony_ci#define SLIBSUF "$SLIBSUF" 7796cabdff1aSopenharmony_ci#define HAVE_MMX2 HAVE_MMXEXT 7797cabdff1aSopenharmony_ci#define SWS_MAX_FILTER_SIZE $sws_max_filter_size 7798cabdff1aSopenharmony_ciEOF 7799cabdff1aSopenharmony_ci 7800cabdff1aSopenharmony_citest -n "$assert_level" && 7801cabdff1aSopenharmony_ci echo "#define ASSERT_LEVEL $assert_level" >>$TMPH 7802cabdff1aSopenharmony_ci 7803cabdff1aSopenharmony_citest -n "$malloc_prefix" && 7804cabdff1aSopenharmony_ci echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH 7805cabdff1aSopenharmony_ci 7806cabdff1aSopenharmony_ciif enabled x86asm; then 7807cabdff1aSopenharmony_ci append config_files $TMPASM 7808cabdff1aSopenharmony_ci cat > $TMPASM <<EOF 7809cabdff1aSopenharmony_ci; Automatically generated by configure - do not modify! 7810cabdff1aSopenharmony_ciEOF 7811cabdff1aSopenharmony_cifi 7812cabdff1aSopenharmony_ci 7813cabdff1aSopenharmony_cienabled getenv || echo "#define getenv(x) NULL" >> $TMPH 7814cabdff1aSopenharmony_ci 7815cabdff1aSopenharmony_ci 7816cabdff1aSopenharmony_cimkdir -p doc 7817cabdff1aSopenharmony_cimkdir -p tests 7818cabdff1aSopenharmony_cimkdir -p tests/api 7819cabdff1aSopenharmony_ciecho "@c auto-generated by configure - do not modify! " > doc/config.texi 7820cabdff1aSopenharmony_ci 7821cabdff1aSopenharmony_ciprint_config ARCH_ "$config_files" $ARCH_LIST 7822cabdff1aSopenharmony_ciprint_config HAVE_ "$config_files" $HAVE_LIST 7823cabdff1aSopenharmony_ciprint_config CONFIG_ "$config_files" $CONFIG_LIST \ 7824cabdff1aSopenharmony_ci $CONFIG_EXTRA \ 7825cabdff1aSopenharmony_ci 7826cabdff1aSopenharmony_ciecho "#endif /* FFMPEG_CONFIG_H */" >> $TMPH 7827cabdff1aSopenharmony_ci 7828cabdff1aSopenharmony_ci# Do not overwrite an unchanged config.h to avoid superfluous rebuilds. 7829cabdff1aSopenharmony_cicp_if_changed $TMPH config.h 7830cabdff1aSopenharmony_citouch ffbuild/.config 7831cabdff1aSopenharmony_ci 7832cabdff1aSopenharmony_ci# Copy config.asm before printing ALL_COMPONENTS; that's not needed in assembly. 7833cabdff1aSopenharmony_cienabled x86asm && cp_if_changed $TMPASM config.asm 7834cabdff1aSopenharmony_ci 7835cabdff1aSopenharmony_ci# Reopen a new TMPH for config_components.h. 7836cabdff1aSopenharmony_cicat > $TMPH <<EOF 7837cabdff1aSopenharmony_ci/* Automatically generated by configure - do not modify! */ 7838cabdff1aSopenharmony_ci#ifndef FFMPEG_CONFIG_COMPONENTS_H 7839cabdff1aSopenharmony_ci#define FFMPEG_CONFIG_COMPONENTS_H 7840cabdff1aSopenharmony_ciEOF 7841cabdff1aSopenharmony_ci 7842cabdff1aSopenharmony_ciprint_config CONFIG_ "$config_files" $ALL_COMPONENTS 7843cabdff1aSopenharmony_ci 7844cabdff1aSopenharmony_ciecho "#endif /* FFMPEG_CONFIG_COMPONENTS_H */" >> $TMPH 7845cabdff1aSopenharmony_ciecho "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak 7846cabdff1aSopenharmony_ci 7847cabdff1aSopenharmony_cicp_if_changed $TMPH config_components.h 7848cabdff1aSopenharmony_ci 7849cabdff1aSopenharmony_cicat > $TMPH <<EOF 7850cabdff1aSopenharmony_ci/* Generated by ffmpeg configure */ 7851cabdff1aSopenharmony_ci#ifndef AVUTIL_AVCONFIG_H 7852cabdff1aSopenharmony_ci#define AVUTIL_AVCONFIG_H 7853cabdff1aSopenharmony_ciEOF 7854cabdff1aSopenharmony_ci 7855cabdff1aSopenharmony_ciprint_config AV_HAVE_ $TMPH $HAVE_LIST_PUB 7856cabdff1aSopenharmony_ci 7857cabdff1aSopenharmony_ciecho "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH 7858cabdff1aSopenharmony_ci 7859cabdff1aSopenharmony_cicp_if_changed $TMPH libavutil/avconfig.h 7860cabdff1aSopenharmony_ci 7861cabdff1aSopenharmony_ci# full_filter_name_foo=vf_foo 7862cabdff1aSopenharmony_ci# full_filter_name_bar=asrc_bar 7863cabdff1aSopenharmony_ci# ... 7864cabdff1aSopenharmony_cieval "$(sed -n "s/^extern const AVFilter ff_\([avfsinkrc]\{2,5\}\)_\(.*\);/full_filter_name_\2=\1_\2/p" $source_path/libavfilter/allfilters.c)" 7865cabdff1aSopenharmony_ci 7866cabdff1aSopenharmony_ci# generate the lists of enabled components 7867cabdff1aSopenharmony_ciprint_enabled_components(){ 7868cabdff1aSopenharmony_ci file=$1 7869cabdff1aSopenharmony_ci struct_name=$2 7870cabdff1aSopenharmony_ci name=$3 7871cabdff1aSopenharmony_ci shift 3 7872cabdff1aSopenharmony_ci echo "static const $struct_name * const $name[] = {" > $TMPH 7873cabdff1aSopenharmony_ci for c in $*; do 7874cabdff1aSopenharmony_ci if enabled $c; then 7875cabdff1aSopenharmony_ci case $name in 7876cabdff1aSopenharmony_ci filter_list) 7877cabdff1aSopenharmony_ci eval c=\$full_filter_name_${c%_filter} 7878cabdff1aSopenharmony_ci ;; 7879cabdff1aSopenharmony_ci indev_list) 7880cabdff1aSopenharmony_ci c=${c%_indev}_demuxer 7881cabdff1aSopenharmony_ci ;; 7882cabdff1aSopenharmony_ci outdev_list) 7883cabdff1aSopenharmony_ci c=${c%_outdev}_muxer 7884cabdff1aSopenharmony_ci ;; 7885cabdff1aSopenharmony_ci esac 7886cabdff1aSopenharmony_ci printf " &ff_%s,\n" $c >> $TMPH 7887cabdff1aSopenharmony_ci fi 7888cabdff1aSopenharmony_ci done 7889cabdff1aSopenharmony_ci if [ "$name" = "filter_list" ]; then 7890cabdff1aSopenharmony_ci for c in asrc_abuffer vsrc_buffer asink_abuffer vsink_buffer; do 7891cabdff1aSopenharmony_ci printf " &ff_%s,\n" $c >> $TMPH 7892cabdff1aSopenharmony_ci done 7893cabdff1aSopenharmony_ci fi 7894cabdff1aSopenharmony_ci echo " NULL };" >> $TMPH 7895cabdff1aSopenharmony_ci cp_if_changed $TMPH $file 7896cabdff1aSopenharmony_ci} 7897cabdff1aSopenharmony_ci 7898cabdff1aSopenharmony_ciprint_enabled_components libavfilter/filter_list.c AVFilter filter_list $FILTER_LIST 7899cabdff1aSopenharmony_ciprint_enabled_components libavcodec/codec_list.c FFCodec codec_list $CODEC_LIST 7900cabdff1aSopenharmony_ciprint_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST 7901cabdff1aSopenharmony_ciprint_enabled_components libavcodec/bsf_list.c FFBitStreamFilter bitstream_filters $BSF_LIST 7902cabdff1aSopenharmony_ciprint_enabled_components libavformat/demuxer_list.c AVInputFormat demuxer_list $DEMUXER_LIST 7903cabdff1aSopenharmony_ciprint_enabled_components libavformat/muxer_list.c AVOutputFormat muxer_list $MUXER_LIST 7904cabdff1aSopenharmony_ciprint_enabled_components libavdevice/indev_list.c AVInputFormat indev_list $INDEV_LIST 7905cabdff1aSopenharmony_ciprint_enabled_components libavdevice/outdev_list.c AVOutputFormat outdev_list $OUTDEV_LIST 7906cabdff1aSopenharmony_ciprint_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST 7907cabdff1aSopenharmony_ci 7908cabdff1aSopenharmony_ci# Settings for pkg-config files 7909cabdff1aSopenharmony_ci 7910cabdff1aSopenharmony_cicat > $TMPH <<EOF 7911cabdff1aSopenharmony_ci# Automatically generated by configure - do not modify! 7912cabdff1aSopenharmony_cishared=$shared 7913cabdff1aSopenharmony_cibuild_suffix=$build_suffix 7914cabdff1aSopenharmony_ciprefix=$prefix 7915cabdff1aSopenharmony_cilibdir=$libdir 7916cabdff1aSopenharmony_ciincdir=$incdir 7917cabdff1aSopenharmony_cirpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}") 7918cabdff1aSopenharmony_cisource_path=${source_path} 7919cabdff1aSopenharmony_ciLIBPREF=${LIBPREF} 7920cabdff1aSopenharmony_ciLIBSUF=${LIBSUF} 7921cabdff1aSopenharmony_ciextralibs_avutil="$avutil_extralibs" 7922cabdff1aSopenharmony_ciextralibs_avcodec="$avcodec_extralibs" 7923cabdff1aSopenharmony_ciextralibs_avformat="$avformat_extralibs" 7924cabdff1aSopenharmony_ciextralibs_avdevice="$avdevice_extralibs" 7925cabdff1aSopenharmony_ciextralibs_avfilter="$avfilter_extralibs" 7926cabdff1aSopenharmony_ciextralibs_postproc="$postproc_extralibs" 7927cabdff1aSopenharmony_ciextralibs_swscale="$swscale_extralibs" 7928cabdff1aSopenharmony_ciextralibs_swresample="$swresample_extralibs" 7929cabdff1aSopenharmony_ciEOF 7930cabdff1aSopenharmony_ci 7931cabdff1aSopenharmony_cifor lib in $LIBRARY_LIST; do 7932cabdff1aSopenharmony_ci lib_deps="$(eval echo \$${lib}_deps)" 7933cabdff1aSopenharmony_ci echo ${lib}_deps=\"$lib_deps\" >> $TMPH 7934cabdff1aSopenharmony_cidone 7935cabdff1aSopenharmony_ci 7936cabdff1aSopenharmony_cicp_if_changed $TMPH ffbuild/config.sh 7937