3 # FFmpeg configure script
5 # Copyright (c) 2000-2002 Fabrice Bellard
6 # Copyright (c) 2005-2008 Diego Biurrun
7 # Copyright (c) 2005-2008 Mans Rullgard
10 # Prevent locale nonsense from breaking basic text processing.
14 # make sure we are running under a compatible shell
15 # try to make this part work with most shells
18 echo "Trying shell $1"
19 type "$1" > /dev/null 2>&1 && exec "$@"
23 (: ${foo%%bar}) 2> /dev/null
26 (: ${foo?}) 2> /dev/null
29 if test "$E1" != 0 || test "$E2" = 0; then
30 echo "Broken shell detected. Trying alternatives."
32 if test "0$FF_CONF_EXEC" -lt 1; then
34 try_exec bash "$0" "$@"
36 if test "0$FF_CONF_EXEC" -lt 2; then
38 try_exec ksh "$0" "$@"
40 if test "0$FF_CONF_EXEC" -lt 3; then
42 try_exec /usr/xpg4/bin/sh "$0" "$@"
44 echo "No compatible shell script interpreter found."
45 echo "This configure script requires a POSIX-compatible shell"
46 echo "such as bash or ksh."
47 echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
48 echo "Instead, install a working POSIX-compatible shell."
49 echo "Disabling this configure test will create a broken FFmpeg."
50 if test "$BASH_VERSION" = '2.04.0(1)-release'; then
51 echo "This bash version ($BASH_VERSION) is broken on your platform."
52 echo "Upgrade to a later version if available."
57 test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH
61 Usage: configure [options]
62 Options: [defaults in brackets after descriptions]
65 --help print this message
66 --list-decoders show all available decoders
67 --list-encoders show all available encoders
68 --list-hwaccels show all available hardware accelerators
69 --list-demuxers show all available demuxers
70 --list-muxers show all available muxers
71 --list-parsers show all available parsers
72 --list-protocols show all available protocols
73 --list-bsfs show all available bitstream filters
74 --list-indevs show all available input devices
75 --list-outdevs show all available output devices
76 --list-filters show all available filters
79 --logfile=FILE log tests and output to FILE [config.log]
80 --disable-logging do not log configure debug information
81 --fatal-warnings fail if any configure warning is generated
82 --prefix=PREFIX install in PREFIX [$prefix]
83 --bindir=DIR install binaries in DIR [PREFIX/bin]
84 --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
85 --docdir=DIR install documentation in DIR [PREFIX/share/doc/ffmpeg]
86 --libdir=DIR install libs in DIR [PREFIX/lib]
87 --shlibdir=DIR install shared libs in DIR [LIBDIR]
88 --incdir=DIR install includes in DIR [PREFIX/include]
89 --mandir=DIR install man page in DIR [PREFIX/share/man]
90 --pkgconfigdir=DIR install pkg-config files in DIR [LIBDIR/pkgconfig]
91 --enable-rpath use rpath to allow installing libraries in paths
92 not part of the dynamic linker search path
93 use rpath when linking programs [USE WITH CARE]
94 --install-name-dir=DIR Darwin directory name for installed targets
97 --enable-gpl allow use of GPL code, the resulting libs
98 and binaries will be under GPL [no]
99 --enable-version3 upgrade (L)GPL to version 3 [no]
100 --enable-nonfree allow use of nonfree code, the resulting libs
101 and binaries will be unredistributable [no]
103 Configuration options:
104 --disable-static do not build static libraries [no]
105 --enable-shared build shared libraries [no]
106 --enable-small optimize for size instead of speed
107 --disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary)
108 --enable-gray enable full grayscale support (slower color)
109 --disable-swscale-alpha disable alpha channel support in swscale
110 --disable-all disable building components, libraries and programs
111 --enable-incompatible-libav-abi enable incompatible Libav fork ABI [no]
112 --enable-raise-major increase major version numbers in sonames [no]
115 --disable-programs do not build command line programs
116 --disable-ffmpeg disable ffmpeg build
117 --disable-ffplay disable ffplay build
118 --disable-ffprobe disable ffprobe build
119 --disable-ffserver disable ffserver build
121 Documentation options:
122 --disable-doc do not build documentation
123 --disable-htmlpages do not build HTML documentation pages
124 --disable-manpages do not build man documentation pages
125 --disable-podpages do not build POD documentation pages
126 --disable-txtpages do not build text documentation pages
129 --disable-avdevice disable libavdevice build
130 --disable-avcodec disable libavcodec build
131 --disable-avformat disable libavformat build
132 --disable-swresample disable libswresample build
133 --disable-swscale disable libswscale build
134 --disable-postproc disable libpostproc build
135 --disable-avfilter disable libavfilter build
136 --enable-avresample enable libavresample build [no]
137 --disable-pthreads disable pthreads [autodetect]
138 --disable-w32threads disable Win32 threads [autodetect]
139 --disable-os2threads disable OS/2 threads [autodetect]
140 --disable-network disable network support [no]
141 --disable-dct disable DCT code
142 --disable-dwt disable DWT code
143 --disable-error-resilience disable error resilience code
144 --disable-lsp disable LSP code
145 --disable-lzo disable LZO decoder code
146 --disable-mdct disable MDCT code
147 --disable-rdft disable RDFT code
148 --disable-fft disable FFT code
149 --disable-faan disable floating point AAN (I)DCT code
150 --disable-pixelutils disable pixel utils in libavutil
152 Individual component options:
153 --disable-everything disable all components listed below
154 --disable-encoder=NAME disable encoder NAME
155 --enable-encoder=NAME enable encoder NAME
156 --disable-encoders disable all encoders
157 --disable-decoder=NAME disable decoder NAME
158 --enable-decoder=NAME enable decoder NAME
159 --disable-decoders disable all decoders
160 --disable-hwaccel=NAME disable hwaccel NAME
161 --enable-hwaccel=NAME enable hwaccel NAME
162 --disable-hwaccels disable all hwaccels
163 --disable-muxer=NAME disable muxer NAME
164 --enable-muxer=NAME enable muxer NAME
165 --disable-muxers disable all muxers
166 --disable-demuxer=NAME disable demuxer NAME
167 --enable-demuxer=NAME enable demuxer NAME
168 --disable-demuxers disable all demuxers
169 --enable-parser=NAME enable parser NAME
170 --disable-parser=NAME disable parser NAME
171 --disable-parsers disable all parsers
172 --enable-bsf=NAME enable bitstream filter NAME
173 --disable-bsf=NAME disable bitstream filter NAME
174 --disable-bsfs disable all bitstream filters
175 --enable-protocol=NAME enable protocol NAME
176 --disable-protocol=NAME disable protocol NAME
177 --disable-protocols disable all protocols
178 --enable-indev=NAME enable input device NAME
179 --disable-indev=NAME disable input device NAME
180 --disable-indevs disable input devices
181 --enable-outdev=NAME enable output device NAME
182 --disable-outdev=NAME disable output device NAME
183 --disable-outdevs disable output devices
184 --disable-devices disable all devices
185 --enable-filter=NAME enable filter NAME
186 --disable-filter=NAME disable filter NAME
187 --disable-filters disable all filters
189 External library support:
191 Using any of the following switches will allow FFmpeg to link to the
192 corresponding external library. All the components depending on that library
193 will become enabled, if all their other dependencies are met and they are not
194 explicitly disabled. E.g. --enable-libwavpack will enable linking to
195 libwavpack and allow the libwavpack encoder to be built, unless it is
196 specifically disabled with --disable-encoder=libwavpack.
198 Note that only the system libraries are auto-detected. All the other external
199 libraries must be explicitly enabled.
201 Also note that the following help text describes the purpose of the libraries
202 themselves, not all their features will necessarily be usable by FFmpeg.
204 --enable-avisynth enable reading of AviSynth script files [no]
205 --disable-bzlib disable bzlib [autodetect]
206 --enable-chromaprint enable audio fingerprinting with chromaprint [no]
207 --enable-frei0r enable frei0r video filtering [no]
208 --enable-gcrypt enable gcrypt, needed for rtmp(t)e support
209 if openssl, librtmp or gmp is not used [no]
210 --enable-gmp enable gmp, needed for rtmp(t)e support
211 if openssl or librtmp is not used [no]
212 --enable-gnutls enable gnutls, needed for https support
213 if openssl is not used [no]
214 --disable-iconv disable iconv [autodetect]
215 --enable-jni enable JNI support [no]
216 --enable-ladspa enable LADSPA audio filtering [no]
217 --enable-libass enable libass subtitles rendering,
218 needed for subtitles and ass filter [no]
219 --enable-libbluray enable BluRay reading using libbluray [no]
220 --enable-libbs2b enable bs2b DSP library [no]
221 --enable-libcaca enable textual display using libcaca [no]
222 --enable-libcelt enable CELT decoding via libcelt [no]
223 --enable-libcdio enable audio CD grabbing with libcdio [no]
224 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
226 --enable-libebur128 enable libebur128 for EBU R128 measurement,
227 needed for loudnorm filter [no]
228 --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
229 --enable-libflite enable flite (voice synthesis) support via libflite [no]
230 --enable-libfontconfig enable libfontconfig, useful for drawtext filter [no]
231 --enable-libfreetype enable libfreetype, needed for drawtext filter [no]
232 --enable-libfribidi enable libfribidi, improves drawtext filter [no]
233 --enable-libgme enable Game Music Emu via libgme [no]
234 --enable-libgsm enable GSM de/encoding via libgsm [no]
235 --enable-libiec61883 enable iec61883 via libiec61883 [no]
236 --enable-libilbc enable iLBC de/encoding via libilbc [no]
237 --enable-libkvazaar enable HEVC encoding via libkvazaar [no]
238 --enable-libmodplug enable ModPlug via libmodplug [no]
239 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
240 --enable-libnut enable NUT (de)muxing via libnut,
241 native (de)muxer exists [no]
242 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
243 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
244 --enable-libopencv enable video filtering via libopencv [no]
245 --enable-libopenh264 enable H.264 encoding via OpenH264 [no]
246 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
247 --enable-libopenmpt enable decoding tracked files via libopenmpt [no]
248 --enable-libopus enable Opus de/encoding via libopus [no]
249 --enable-libpulse enable Pulseaudio input via libpulse [no]
250 --enable-librubberband enable rubberband needed for rubberband filter [no]
251 --enable-librtmp enable RTMP[E] support via librtmp [no]
252 --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
253 --enable-libshine enable fixed-point MP3 encoding via libshine [no]
254 --enable-libsmbclient enable Samba protocol via libsmbclient [no]
255 --enable-libsnappy enable Snappy compression, needed for hap encoding [no]
256 --enable-libsoxr enable Include libsoxr resampling [no]
257 --enable-libspeex enable Speex de/encoding via libspeex [no]
258 --enable-libssh enable SFTP protocol via libssh [no]
259 --enable-libtesseract enable Tesseract, needed for ocr filter [no]
260 --enable-libtheora enable Theora encoding via libtheora [no]
261 --enable-libtwolame enable MP2 encoding via libtwolame [no]
262 --enable-libv4l2 enable libv4l2/v4l-utils [no]
263 --enable-libvidstab enable video stabilization using vid.stab [no]
264 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
265 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
266 native implementation exists [no]
267 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
268 --enable-libwavpack enable wavpack encoding via libwavpack [no]
269 --enable-libwebp enable WebP encoding via libwebp [no]
270 --enable-libx264 enable H.264 encoding via x264 [no]
271 --enable-libx265 enable HEVC encoding via x265 [no]
272 --enable-libxavs enable AVS encoding via xavs [no]
273 --enable-libxcb enable X11 grabbing using XCB [autodetect]
274 --enable-libxcb-shm enable X11 grabbing shm communication [autodetect]
275 --enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect]
276 --enable-libxcb-shape enable X11 grabbing shape rendering [autodetect]
277 --enable-libxvid enable Xvid encoding via xvidcore,
278 native MPEG-4/Xvid encoder exists [no]
279 --enable-libzimg enable z.lib, needed for zscale filter [no]
280 --enable-libzmq enable message passing via libzmq [no]
281 --enable-libzvbi enable teletext support via libzvbi [no]
282 --disable-lzma disable lzma [autodetect]
283 --enable-decklink enable Blackmagic DeckLink I/O support [no]
284 --enable-mediacodec enable Android MediaCodec support [no]
285 --enable-netcdf enable NetCDF, needed for sofalizer filter [no]
286 --enable-openal enable OpenAL 1.1 capture support [no]
287 --enable-opencl enable OpenCL code
288 --enable-opengl enable OpenGL rendering [no]
289 --enable-openssl enable openssl, needed for https support
290 if gnutls is not used [no]
291 --disable-schannel disable SChannel SSP, needed for TLS support on
292 Windows if openssl and gnutls are not used [autodetect]
293 --disable-sdl2 disable sdl2 [autodetect]
294 --disable-securetransport disable Secure Transport, needed for TLS support
295 on OSX if openssl and gnutls are not used [autodetect]
296 --enable-x11grab enable X11 grabbing (legacy) [no]
297 --disable-xlib disable xlib [autodetect]
298 --disable-zlib disable zlib [autodetect]
300 The following libraries provide various hardware acceleration features:
301 --disable-audiotoolbox disable Apple AudioToolbox code [autodetect]
302 --enable-cuda enable dynamically linked Nvidia CUDA code [no]
303 --enable-cuvid enable Nvidia CUVID support [autodetect]
304 --disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect]
305 --disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect]
306 --enable-libmfx enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
307 --enable-libnpp enable Nvidia Performance Primitives-based code [no]
308 --enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
309 --disable-nvenc disable Nvidia video encoding code [autodetect]
310 --enable-omx enable OpenMAX IL code [no]
311 --enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no]
312 --disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
313 --disable-vda disable Apple Video Decode Acceleration code [autodetect]
314 --disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
315 --disable-videotoolbox disable VideoToolbox code [autodetect]
318 --arch=ARCH select architecture [$arch]
319 --cpu=CPU select the minimum required CPU (affects
320 instruction selection, may crash on older CPUs)
321 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
322 --progs-suffix=SUFFIX program name suffix []
323 --enable-cross-compile assume a cross-compiler is used
324 --sysroot=PATH root of cross-build tree
325 --sysinclude=PATH location of cross-build system headers
326 --target-os=OS compiler targets OS [$target_os]
327 --target-exec=CMD command to run executables on target
328 --target-path=DIR path to view of build directory on target
329 --target-samples=DIR path to samples directory on target
330 --tempprefix=PATH force fixed dir/prefix instead of mktemp for checks
331 --toolchain=NAME set tool defaults according to NAME
332 --nm=NM use nm tool NM [$nm_default]
333 --ar=AR use archive tool AR [$ar_default]
334 --as=AS use assembler AS [$as_default]
335 --ln_s=LN_S use symbolic link tool LN_S [$ln_s_default]
336 --strip=STRIP use strip tool STRIP [$strip_default]
337 --windres=WINDRES use windows resource compiler WINDRES [$windres_default]
338 --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
339 --cc=CC use C compiler CC [$cc_default]
340 --cxx=CXX use C compiler CXX [$cxx_default]
341 --objcc=OCC use ObjC compiler OCC [$cc_default]
342 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
343 --ld=LD use linker LD [$ld_default]
344 --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default]
345 --pkg-config-flags=FLAGS pass additional flags to pkgconf []
346 --ranlib=RANLIB use ranlib RANLIB [$ranlib_default]
347 --doxygen=DOXYGEN use DOXYGEN to generate API doc [$doxygen_default]
348 --host-cc=HOSTCC use host C compiler HOSTCC
349 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
350 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
351 --host-ld=HOSTLD use host linker HOSTLD
352 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
353 --host-libs=HLIBS use libs HLIBS when linking for host
354 --host-os=OS compiler host OS [$target_os]
355 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
356 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
357 --extra-objcflags=FLAGS add FLAGS to OBJCFLAGS [$CFLAGS]
358 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
359 --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
360 --extra-ldlibflags=ELDFLAGS add ELDFLAGS to LDLIBFLAGS [$LDLIBFLAGS]
361 --extra-libs=ELIBS add ELIBS [$ELIBS]
362 --extra-version=STRING version string suffix []
363 --optflags=OPTFLAGS override optimization-related compiler flags
364 --build-suffix=SUFFIX library name suffix []
365 --enable-pic build position-independent code
366 --enable-thumb compile for Thumb instruction set
367 --enable-lto use link-time optimization
368 --env="ENV=override" override the environment variables
370 Advanced options (experts only):
371 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
372 --custom-allocator=NAME use a supported custom allocator
373 --disable-symver disable symbol versioning
374 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
375 --disable-safe-bitstream-reader
376 disable buffer boundary checking in bitreaders
377 (faster, but may crash)
378 --enable-memalign-hack emulate memalign, interferes with memory debuggers
379 --sws-max-filter-size=N the max filter size swscale uses [$sws_max_filter_size_default]
381 Optimization options (experts only):
382 --disable-asm disable all assembly optimizations
383 --disable-altivec disable AltiVec optimizations
384 --disable-vsx disable VSX optimizations
385 --disable-power8 disable POWER8 optimizations
386 --disable-amd3dnow disable 3DNow! optimizations
387 --disable-amd3dnowext disable 3DNow! extended optimizations
388 --disable-mmx disable MMX optimizations
389 --disable-mmxext disable MMXEXT optimizations
390 --disable-sse disable SSE optimizations
391 --disable-sse2 disable SSE2 optimizations
392 --disable-sse3 disable SSE3 optimizations
393 --disable-ssse3 disable SSSE3 optimizations
394 --disable-sse4 disable SSE4 optimizations
395 --disable-sse42 disable SSE4.2 optimizations
396 --disable-avx disable AVX optimizations
397 --disable-xop disable XOP optimizations
398 --disable-fma3 disable FMA3 optimizations
399 --disable-fma4 disable FMA4 optimizations
400 --disable-avx2 disable AVX2 optimizations
401 --disable-aesni disable AESNI optimizations
402 --disable-armv5te disable armv5te optimizations
403 --disable-armv6 disable armv6 optimizations
404 --disable-armv6t2 disable armv6t2 optimizations
405 --disable-vfp disable VFP optimizations
406 --disable-neon disable NEON optimizations
407 --disable-inline-asm disable use of inline assembly
408 --disable-yasm disable use of nasm/yasm assembly
409 --disable-mipsdsp disable MIPS DSP ASE R1 optimizations
410 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
411 --disable-msa disable MSA optimizations
412 --disable-mipsfpu disable floating point MIPS optimizations
413 --disable-mmi disable Loongson SIMD optimizations
414 --disable-fast-unaligned consider unaligned accesses slow
416 Developer options (useful when working on FFmpeg itself):
417 --disable-debug disable debugging symbols
418 --enable-debug=LEVEL set the debug level [$debuglevel]
419 --disable-optimizations disable compiler optimizations
420 --enable-extra-warnings enable more compiler warnings
421 --disable-stripping disable stripping of executables and shared libraries
422 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
423 2 causes a slowdown at runtime.
424 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
425 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
426 leaks and errors, using the specified valgrind binary.
427 Cannot be combined with --target-exec
428 --enable-ftrapv Trap arithmetic overflows
429 --samples=PATH location of test samples for FATE, if not set use
430 \$FATE_SAMPLES at make invocation time.
431 --enable-neon-clobber-test check NEON registers for clobbering (should be
432 used only for debugging purposes)
433 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
434 should be used only for debugging purposes)
435 --enable-random randomly enable/disable components
437 --enable-random=LIST randomly enable/disable specific components or
438 --disable-random=LIST component groups. LIST is a comma-separated list
439 of NAME[:PROB] entries where NAME is a component
440 (group) and PROB the probability associated with
442 --random-seed=VALUE seed value for --enable/disable-random
443 --disable-valgrind-backtrace do not print a backtrace under Valgrind
444 (only applies to --disable-optimizations builds)
446 NOTE: Object files are built at the place where configure is launched.
452 if test -t 1 && which tput >/dev/null 2>&1; then
453 ncolors=$(tput colors)
454 if test -n "$ncolors" && test $ncolors -ge 8; then
455 bold_color=$(tput bold)
456 warn_color=$(tput setaf 3)
457 error_color=$(tput setaf 1)
458 reset_color=$(tput sgr0)
460 # 72 used instead of 80 since that's the default of pr
466 echo "$@" >> $logfile
471 pr -n -t $1 >> $logfile
477 WARNINGS="${WARNINGS}WARNING: $*\n"
482 echo "$error_color$bold_color$@$reset_color"
485 If you think configure made a mistake, make sure you are using the latest
486 version from Git. If the latest version fails, report the problem to the
487 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
489 if disabled logging; then
491 Rerun configure with logging enabled (do not use --disable-logging), and
492 include the log this produces with your report.
496 Include the log file "$logfile" produced by configure as this will help
503 # Avoid locale weirdness, besides we really just want to translate ASCII.
505 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
509 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
513 echo "$*" | sed 's/["\\]/\\\0/g'
517 v=$(echo "$1" | sed "s/'/'\\\\''/g")
518 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
523 echo "$@" | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//'
530 eval "case $v in $pat) echo $v ;; esac"
538 eval "case $v in $pat) ;; *) echo $v ;; esac"
545 for v; do eval $m; done
551 for v; do echo ${v}${suffix}; done
566 eval : \${$var:=$value}
571 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
577 eval $(sanitize_var_name "$var")='$*'
581 eval echo \$$(sanitize_var_name "$1")
586 eval level=\${${pvar}_level:=0}
587 eval ${pvar}_${level}="\$$pvar"
588 eval ${pvar}_level=$(($level+1))
594 eval level=\${${pvar}_level:-0}
595 test $level = 0 && continue
596 eval level=$(($level-1))
597 eval $pvar="\${${pvar}_${level}}"
598 eval ${pvar}_level=$level
599 eval unset ${pvar}_${level}
621 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
627 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
633 enabled $var && continue
634 eval sel="\$${var}_select"
635 eval sgs="\$${var}_suggest"
639 enable_deep_weak $sgs
651 disabled $var && continue
660 test "${1#!}" = "$1" && op='=' || op=!=
661 eval test "x\$${1#!}" $op "xyes"
665 test "${1#!}" = "$1" && op='=' || op=!=
666 eval test "x\$${1#!}" $op "xno"
671 enabled $opt || return 1
677 disabled $opt || return 1
683 enabled $opt && return 0
689 disabled $opt && return 0
696 eval : \${$opt:=\$${opt}_default}
704 [ $var = $value ] && return 0
712 enabled ${cfg}_checking && die "Circular dependency for $cfg."
713 disabled ${cfg}_checking && continue
714 enable ${cfg}_checking
717 eval dep_all="\$${cfg}_deps"
718 eval dep_any="\$${cfg}_deps_any"
719 eval dep_sel="\$${cfg}_select"
720 eval dep_sgs="\$${cfg}_suggest"
721 eval dep_ifa="\$${cfg}_if"
722 eval dep_ifn="\$${cfg}_if_any"
724 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
725 do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
726 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
728 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
729 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
730 enabled_all $dep_all || disable $cfg
731 enabled_any $dep_any || disable $cfg
732 disabled_any $dep_sel && disable $cfg
734 if enabled $cfg; then
736 enable_deep_weak $dep_sgs
739 disable ${cfg}_checking
748 for cfg in $allopts; do
749 enabled $cfg || continue
750 eval dep_extralibs="\$${cfg}_extralibs"
751 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
759 map 'eval echo "$v \${$v:-no}"' "$@" |
760 awk "BEGIN { split(\"$files\", files) }
762 c = \"$pfx\" toupper(\$1);
768 if (file ~ /\\.h\$/) {
769 printf(\"#define %s %d\\n\", c, v) >>file;
770 } else if (file ~ /\\.asm\$/) {
771 printf(\"%%define %s %d\\n\", c, v) >>file;
772 } else if (file ~ /\\.mak\$/) {
773 n = -v ? \"\" : \"!\";
774 printf(\"%s%s=yes\\n\", n, c) >>file;
775 } else if (file ~ /\\.texi\$/) {
776 pre = -v ? \"\" : \"@c \";
779 gsub(/_/, \"-\", c2);
780 printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
790 enabled $v && printf "%s\n" ${v%$suf}
797 eval "$var=\"\$$var $*\""
803 eval "$var=\"$* \$$var\""
809 for tok in $(eval echo \$$var); do
810 uniq_list="$(filter_out $tok $uniq_list) $tok"
812 eval "$var=\"${uniq_list}\""
820 append CFLAGS $($cflags_filter "$@")
824 append CXXFLAGS $($cflags_filter "$@")
828 append ASFLAGS $($asflags_filter "$@")
832 append OBJCFLAGS $($objcflags_filter "$@")
836 append LDFLAGS $($ldflags_filter "$@")
840 append LDEXEFLAGS $($ldflags_filter "$@")
844 append LDLIBFLAGS $($ldflags_filter "$@")
848 append ASMSTRIPFLAGS "$@"
852 prepend extralibs $($ldflags_filter "$@")
856 append host_cppflags "$@"
860 append host_cflags $($host_cflags_filter "$@")
864 append host_ldflags $($host_ldflags_filter "$@")
868 append compat_objs $1
870 map 'add_cppflags -D$v' "$@"
875 "$@" >> $logfile 2>&1
880 stat "$1" >> $logfile 2>&1
884 eval printf '%s\\n' $CC_O
888 eval printf '%s\\n' $CC_E
895 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
902 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
909 check_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
916 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
920 eval printf '%s\\n' $AS_O
927 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
931 log check_inline_asm "$@"
936 check_cc "$@" <<EOF && enable $name
937 void foo(void){ __asm__ volatile($code); }
941 check_inline_asm_flags(){
942 log check_inline_asm_flags "$@"
947 while [ "$1" != "" ]; do
953 void foo(void){ __asm__ volatile($code); }
956 check_cmd $cc $CPPFLAGS $CFLAGS $flags "$@" $CC_C $(cc_o $TMPO) $TMPC &&
957 enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags
962 check_inline_asm ${1}_inline "\"$2\""
963 echo "$2" | check_as && enable ${1}_external || disable ${1}_external
971 check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
975 eval printf '%s\\n' $LD_O
982 flags=$(filter_out '-l*|*.so' $@)
983 libs=$(filter '-l*|*.so' $@)
984 check_$type $($cflags_filter $flags) || return
985 flags=$($ldflags_filter $flags)
986 libs=$($ldflags_filter $libs)
987 check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
992 test "${hdr%.h}" = "${hdr}" &&
993 echo "#include $hdr" ||
994 echo "#include <$hdr>"
1004 for hdr in $headers; do
1007 echo "int main(void) { $code; return 0; }"
1008 } | check_$check "$@"
1012 log check_cppflags "$@"
1013 check_cc "$@" <<EOF && append CPPFLAGS "$@"
1019 log test_cflags "$@"
1020 set -- $($cflags_filter "$@")
1027 log check_cflags "$@"
1028 test_cflags "$@" && add_cflags "$@"
1032 log check_cxxflags "$@"
1033 set -- $($cflags_filter "$@")
1034 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
1040 log test_cflags "$@"
1041 set -- $($cflags_filter "$@")
1042 check_objcc "$@" <<EOF
1048 log check_cflags "$@"
1049 test_objcflags "$@" && add_objcflags "$@"
1053 log test_ldflags "$@"
1054 check_ld "cc" "$@" <<EOF
1055 int main(void){ return 0; }
1060 log check_ldflags "$@"
1061 test_ldflags "$@" && add_ldflags "$@"
1065 log test_stripflags "$@"
1066 # call check_cc to get a fresh TMPO
1068 int main(void) { return 0; }
1070 check_cmd $strip $ASMSTRIPFLAGS "$@" $TMPO
1074 log check_stripflags "$@"
1075 test_stripflags "$@" && add_stripflags "$@"
1079 log check_header "$@"
1082 disable_safe $header
1083 check_cpp "$@" <<EOF && enable_safe $header
1089 check_header_objcc(){
1090 log check_header_objcc "$@"
1094 disable_safe $header
1096 echo "#include <$header>"
1097 echo "int main(void) { return 0; }"
1098 } | check_objcc && check_stat "$TMPO" && enable_safe $headers
1106 check_ld "cc" "$@" <<EOF && enable $func
1108 int main(void){ $func(); }
1112 check_complexfunc(){
1113 log check_complexfunc "$@"
1117 test $narg = 2 && args="f, g" || args="f * I"
1119 check_ld "cc" "$@" <<EOF && enable $func
1120 #include <complex.h>
1122 float foo(complex float f, complex float g) { return $func($args); }
1123 int main(void){ return (int) foo; }
1128 log check_mathfunc "$@"
1132 test $narg = 2 && args="f, g" || args="f"
1134 check_ld "cc" "$@" <<EOF && enable $func
1136 float foo(float f, float g) { return $func($args); }
1137 int main(void){ return (int) foo; }
1141 check_func_headers(){
1142 log check_func_headers "$@"
1147 for hdr in $headers; do
1150 for func in $funcs; do
1151 echo "long check_$func(void) { return (long) $func; }"
1153 echo "int main(void) { return 0; }"
1154 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
1157 check_class_headers_cpp(){
1158 log check_class_headers_cpp "$@"
1163 for hdr in $headers; do
1164 echo "#include <$hdr>"
1166 echo "int main(void) { "
1168 for class in $classes; do
1169 echo "$class obj$i;"
1173 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
1176 check_cpp_condition(){
1177 log check_cpp_condition "$@"
1181 check_cpp "$@" <<EOF
1184 #error "unsatisfied condition: $condition"
1194 check_header $header && check_func $func "$@" && add_extralibs "$@"
1202 check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
1206 log check_lib_cpp "$@"
1210 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
1214 log check_pkg_config "$@"
1220 check_cmd $pkg_config --exists --print-errors $pkgandversion || return
1221 pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
1222 pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
1223 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
1224 set_safe "${pkg}_cflags" $pkg_cflags &&
1225 set_safe "${pkg}_libs" $pkg_libs
1229 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
1235 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1236 # are safe but may not be available everywhere. Thus we use
1237 # raise(SIGTERM) instead. The check is run in a subshell so we
1238 # can redirect the "Terminated" message from the shell. SIGBUS
1239 # is not defined by standard C so it is used conditionally.
1241 (check_exec "$@") >> $logfile 2>&1 <<EOF
1243 static void sighandler(int sig){
1249 int (*func_ptr)(void) = foo;
1251 signal(SIGILL, sighandler);
1252 signal(SIGFPE, sighandler);
1253 signal(SIGSEGV, sighandler);
1255 signal(SIGBUS, sighandler);
1267 disable_safe "$type"
1268 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
1272 log check_struct "$@"
1277 disable_safe "${struct}_${member}"
1278 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1279 enable_safe "${struct}_${member}"
1283 log check_builtin "$@"
1289 check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1292 check_compile_assert(){
1293 log check_compile_assert "$@"
1299 check_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
1307 check_lib $header $func "$@" || die "ERROR: $name not found"
1315 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
1323 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1328 check_pkg_config "$@" || return 1
1329 add_cflags $(get_safe "${pkg}_cflags")
1330 add_extralibs $(get_safe "${pkg}_libs")
1333 require_pkg_config(){
1334 use_pkg_config "$@" || die "ERROR: $pkg not found using pkg-config$pkg_config_fail_message"
1337 require_libfreetype(){
1338 log require_libfreetype "$@"
1340 check_cmd $pkg_config --exists --print-errors $pkg \
1341 || die "ERROR: $pkg not found"
1342 pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
1343 pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
1345 echo "#include <ft2build.h>"
1346 echo "#include FT_FREETYPE_H"
1347 echo "long check_func(void) { return (long) FT_Init_FreeType; }"
1348 echo "int main(void) { return 0; }"
1349 } | check_ld "cc" $pkg_cflags $pkg_libs \
1350 && set_safe "${pkg}_cflags" $pkg_cflags \
1351 && set_safe "${pkg}_libs" $pkg_libs \
1352 || die "ERROR: $pkg not found"
1353 add_cflags $(get_safe "${pkg}_cflags")
1354 add_extralibs $(get_safe "${pkg}_libs")
1358 eval printf '%s\\n' $HOSTCC_E
1362 eval printf '%s\\n' $HOSTCC_O
1366 log check_host_cc "$@"
1369 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1373 log check_host_cpp "$@"
1376 check_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC
1379 check_host_cppflags(){
1380 log check_host_cppflags "$@"
1381 check_host_cc "$@" <<EOF && append host_cppflags "$@"
1386 check_host_cflags(){
1387 log check_host_cflags "$@"
1388 set -- $($host_cflags_filter "$@")
1389 check_host_cc "$@" <<EOF && append host_cflags "$@"
1394 check_host_cpp_condition(){
1395 log check_host_cpp_condition "$@"
1399 check_host_cpp "$@" <<EOF
1402 #error "unsatisfied condition: $condition"
1408 cmp -s "$1" "$2" && echo "$2 is unchanged" && return
1409 mkdir -p "$(dirname $2)"
1413 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1414 # system-dependent things.
1416 AVCODEC_COMPONENTS="
1424 AVDEVICE_COMPONENTS="
1428 AVFILTER_COMPONENTS="
1431 AVFORMAT_COMPONENTS="
1437 AVRESAMPLE_COMPONENTS=""
1438 AVUTIL_COMPONENTS=""
1442 $AVDEVICE_COMPONENTS
1443 $AVFILTER_COMPONENTS
1444 $AVFORMAT_COMPONENTS
1445 $AVRESAMPLE_COMPONENTS
1450 avio_dir_cmd_example
1451 avio_reading_example
1452 decoding_encoding_example
1453 demuxing_decoding_example
1455 filter_audio_example
1456 filtering_audio_example
1457 filtering_video_example
1458 http_multiclient_example
1463 resampling_audio_example
1464 scaling_video_example
1465 transcode_aac_example
1469 EXTERNAL_LIBRARY_LIST="
1558 HWACCEL_LIBRARY_LIST="
1572 videotoolbox_hwaccel
1590 safe_bitstream_reader
1641 $EXTERNAL_LIBRARY_LIST
1642 $HWACCEL_LIBRARY_LIST
1649 incompatible_libav_abi
1711 ARCH_EXT_LIST_MIPS="
1723 ARCH_EXT_LIST_LOONGSON="
1729 ARCH_EXT_LIST_X86_SIMD="
1758 $ARCH_EXT_LIST_X86_SIMD
1768 $ARCH_EXT_LIST_LOONGSON
1784 atomic_compare_exchange
1791 sync_val_compare_and_swap
1802 incompatible_libav_abi
1811 cdio_paranoia_paranoia_h
1813 dev_bktr_ioctl_bt848_h
1814 dev_bktr_ioctl_meteor_h
1816 dev_video_bktr_ioctl_bt848_h
1817 dev_video_meteor_ioctl_meteor_h
1827 machine_ioctl_bt848_h
1828 machine_ioctl_meteor_h
1830 opencv2_core_core_c_h
1831 openjpeg_2_1_openjpeg_h
1832 openjpeg_2_0_openjpeg_h
1833 openjpeg_1_5_openjpeg_h
1911 GetProcessAffinityMask
1912 GetProcessMemoryInfo
1915 GetSystemTimeAsFileTime
1922 jack_port_get_latency_range
1939 SetConsoleTextAttribute
1940 SetConsoleCtrlHandler
1948 UTGetOSTypeFromString
1953 TOOLCHAIN_FEATURES="
1965 inline_asm_direct_symbol_refs
1967 inline_asm_nonlocal_labels
1978 CONDITION_VARIABLE_Ptr
1981 struct_group_source_req
1982 struct_ip_mreq_source
1984 struct_msghdr_msg_flags
1986 struct_rusage_ru_maxrss
1987 struct_sctp_event_subscribe
1989 struct_sockaddr_sa_len
1990 struct_sockaddr_storage
1991 struct_stat_st_mtim_tv_nsec
1992 struct_v4l2_frmivalenum_discrete
1997 $(add_suffix _external $ARCH_EXT_LIST)
1998 $(add_suffix _inline $ARCH_EXT_LIST)
2021 MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
2035 # options emitted with CONFIG_ prefix but not available on the command line
2052 frame_thread_encoder
2201 # code dependency declarations
2203 # architecture extensions
2208 armv8_deps="aarch64"
2209 neon_deps_any="aarch64 arm"
2210 intrinsics_neon_deps="neon"
2211 vfp_deps_any="aarch64 arm"
2215 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
2217 loongson2_deps="mips"
2218 loongson3_deps="mips"
2221 mipsdspr2_deps="mips"
2222 mips32r2_deps="mips"
2223 mips32r5_deps="mips"
2224 mips32r6_deps="mips"
2225 mips64r2_deps="mips"
2226 mips64r6_deps="mips"
2238 x86_64_select="i686"
2239 x86_64_suggest="fast_cmov"
2242 amd3dnowext_deps="amd3dnow"
2259 mmx_external_deps="yasm"
2260 mmx_inline_deps="inline_asm"
2261 mmx_suggest="mmx_external mmx_inline"
2263 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do
2264 eval dep=\$${ext}_deps
2265 eval ${ext}_external_deps='"${dep}_external"'
2266 eval ${ext}_inline_deps='"${dep}_inline"'
2267 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
2270 aligned_stack_if_any="aarch64 ppc x86"
2271 fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
2272 fast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
2273 fast_unaligned_if_any="aarch64 ppc x86"
2274 simd_align_16_if_any="altivec neon sse"
2276 # system capabilities
2277 symver_if_any="symver_asm_label symver_gnu_asm"
2278 valgrind_backtrace_deps="!optimizations valgrind_valgrind_h"
2281 atomics_gcc_if_any="sync_val_compare_and_swap atomic_compare_exchange"
2282 atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
2283 atomics_win32_if="MemoryBarrier"
2284 atomics_native_if_any="$ATOMICS_LIST"
2285 w32threads_deps="atomics_native"
2286 threads_if_any="$THREADS_LIST"
2290 dirac_parse_select="golomb"
2291 error_resilience_select="me_cmp"
2292 faandct_deps="faan fdctdsp"
2293 faanidct_deps="faan idctdsp"
2294 h264dsp_select="startcode"
2295 frame_thread_encoder_deps="encoders threads"
2296 intrax8_select="blockdsp idctdsp"
2298 me_cmp_select="fdctdsp idctdsp pixblockdsp"
2299 mpeg_er_select="error_resilience"
2300 mpegaudio_select="mpegaudiodsp"
2301 mpegaudiodsp_select="dct"
2302 mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp"
2303 mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp"
2304 vc1dsp_select="h264chroma qpeldsp startcode"
2307 # decoders / encoders
2308 aac_decoder_select="imdct15 mdct sinewin"
2309 aac_fixed_decoder_select="mdct sinewin"
2310 aac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin"
2311 aac_latm_decoder_select="aac_decoder aac_latm_parser"
2312 ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct"
2313 ac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct"
2314 ac3_encoder_select="ac3dsp audiodsp mdct me_cmp"
2315 ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp"
2316 adpcm_g722_decoder_select="g722dsp"
2317 adpcm_g722_encoder_select="g722dsp"
2318 aic_decoder_select="golomb idctdsp"
2319 alac_encoder_select="lpc"
2320 als_decoder_select="bswapdsp"
2321 amrnb_decoder_select="lsp"
2322 amrwb_decoder_select="lsp"
2323 amv_decoder_select="sp5x_decoder exif"
2324 amv_encoder_select="aandcttables jpegtables mpegvideoenc"
2325 ape_decoder_select="bswapdsp llauddsp"
2326 apng_decoder_select="zlib"
2327 apng_encoder_select="huffyuvencdsp zlib"
2328 asv1_decoder_select="blockdsp bswapdsp idctdsp"
2329 asv1_encoder_select="bswapdsp fdctdsp pixblockdsp"
2330 asv2_decoder_select="blockdsp bswapdsp idctdsp"
2331 asv2_encoder_select="bswapdsp fdctdsp pixblockdsp"
2332 atrac1_decoder_select="mdct sinewin"
2333 atrac3_decoder_select="mdct"
2334 atrac3p_decoder_select="mdct sinewin"
2335 avrn_decoder_select="exif jpegtables"
2336 bink_decoder_select="blockdsp hpeldsp"
2337 binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
2338 binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
2339 cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
2340 cllc_decoder_select="bswapdsp"
2341 comfortnoise_encoder_select="lpc"
2342 cook_decoder_select="audiodsp mdct sinewin"
2343 cscd_decoder_select="lzo"
2344 cscd_decoder_suggest="zlib"
2345 dca_decoder_select="mdct"
2346 dds_decoder_select="texturedsp"
2347 dirac_decoder_select="dirac_parse dwt golomb videodsp mpegvideoenc"
2348 dnxhd_decoder_select="blockdsp idctdsp"
2349 dnxhd_encoder_select="aandcttables blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
2350 dvvideo_decoder_select="dvprofile idctdsp"
2351 dvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp"
2352 dxa_decoder_select="zlib"
2353 dxv_decoder_select="lzf texturedsp"
2354 eac3_decoder_select="ac3_decoder"
2355 eac3_encoder_select="ac3_encoder"
2356 eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo"
2357 eatgq_decoder_select="aandcttables"
2358 eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp"
2359 exr_decoder_select="zlib"
2360 ffv1_decoder_select="golomb rangecoder"
2361 ffv1_encoder_select="rangecoder"
2362 ffvhuff_decoder_select="huffyuv_decoder"
2363 ffvhuff_encoder_select="huffyuv_encoder"
2364 fic_decoder_select="golomb"
2365 flac_decoder_select="flacdsp golomb"
2366 flac_encoder_select="bswapdsp flacdsp golomb lpc"
2367 flashsv2_decoder_select="zlib"
2368 flashsv2_encoder_select="zlib"
2369 flashsv_decoder_select="zlib"
2370 flashsv_encoder_select="zlib"
2371 flv_decoder_select="h263_decoder"
2372 flv_encoder_select="h263_encoder"
2373 fourxm_decoder_select="blockdsp bswapdsp"
2374 fraps_decoder_select="bswapdsp huffman"
2375 g2m_decoder_select="blockdsp idctdsp jpegtables zlib"
2376 g729_decoder_select="audiodsp"
2377 h261_decoder_select="mpegvideo"
2378 h261_encoder_select="aandcttables mpegvideoenc"
2379 h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp"
2380 h263_encoder_select="aandcttables h263dsp mpegvideoenc"
2381 h263i_decoder_select="h263_decoder"
2382 h263p_decoder_select="h263_decoder"
2383 h263p_encoder_select="h263_encoder"
2384 h264_decoder_select="cabac golomb h264chroma h264dsp h264pred h264qpel videodsp"
2385 h264_decoder_suggest="error_resilience"
2386 hap_decoder_select="snappy texturedsp"
2387 hap_encoder_deps="libsnappy"
2388 hap_encoder_select="texturedspenc"
2389 hevc_decoder_select="bswapdsp cabac golomb videodsp"
2390 huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp"
2391 huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llviddsp"
2392 iac_decoder_select="imc_decoder"
2393 imc_decoder_select="bswapdsp fft mdct sinewin"
2394 indeo3_decoder_select="hpeldsp"
2395 indeo4_decoder_select="ividsp"
2396 indeo5_decoder_select="ividsp"
2397 interplay_video_decoder_select="hpeldsp"
2398 jpegls_decoder_select="golomb mjpeg_decoder"
2399 jpegls_encoder_select="golomb"
2400 jv_decoder_select="blockdsp"
2401 lagarith_decoder_select="huffyuvdsp"
2402 ljpeg_encoder_select="aandcttables idctdsp jpegtables"
2403 loco_decoder_select="golomb"
2404 magicyuv_decoder_select="huffyuvdsp"
2405 mdec_decoder_select="blockdsp idctdsp mpegvideo"
2406 metasound_decoder_select="lsp mdct sinewin"
2407 mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp"
2408 mjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables"
2409 mjpeg_encoder_select="aandcttables jpegtables mpegvideoenc"
2410 mjpegb_decoder_select="mjpeg_decoder"
2411 mjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
2412 mjpeg_vaapi_encoder_select="vaapi_encode jpegtables"
2413 mlp_decoder_select="mlp_parser"
2414 motionpixels_decoder_select="bswapdsp"
2415 mp1_decoder_select="mpegaudio"
2416 mp1float_decoder_select="mpegaudio"
2417 mp2_decoder_select="mpegaudio"
2418 mp2float_decoder_select="mpegaudio"
2419 mp3_decoder_select="mpegaudio"
2420 mp3adu_decoder_select="mpegaudio"
2421 mp3adufloat_decoder_select="mpegaudio"
2422 mp3float_decoder_select="mpegaudio"
2423 mp3on4_decoder_select="mpegaudio"
2424 mp3on4float_decoder_select="mpegaudio"
2425 mpc7_decoder_select="bswapdsp mpegaudiodsp"
2426 mpc8_decoder_select="mpegaudiodsp"
2427 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
2428 mpeg_xvmc_decoder_select="mpeg2video_decoder"
2429 mpegvideo_decoder_select="mpegvideo"
2430 mpeg1video_decoder_select="mpegvideo"
2431 mpeg1video_encoder_select="aandcttables mpegvideoenc h263dsp"
2432 mpeg2video_decoder_select="mpegvideo"
2433 mpeg2video_encoder_select="aandcttables mpegvideoenc h263dsp"
2434 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
2435 mpeg4_encoder_select="h263_encoder"
2436 msa1_decoder_select="mss34dsp"
2437 msmpeg4v1_decoder_select="h263_decoder"
2438 msmpeg4v2_decoder_select="h263_decoder"
2439 msmpeg4v2_encoder_select="h263_encoder"
2440 msmpeg4v3_decoder_select="h263_decoder"
2441 msmpeg4v3_encoder_select="h263_encoder"
2442 mss2_decoder_select="vc1_decoder mpegvideo"
2443 mts2_decoder_select="mss34dsp"
2444 mxpeg_decoder_select="mjpeg_decoder"
2445 nellymoser_decoder_select="mdct sinewin"
2446 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
2447 nuv_decoder_select="idctdsp lzo"
2448 on2avc_decoder_select="mdct"
2449 opus_decoder_deps="swresample"
2450 opus_decoder_select="imdct15"
2451 png_decoder_select="zlib"
2452 png_encoder_select="huffyuvencdsp zlib"
2453 prores_decoder_select="blockdsp idctdsp"
2454 prores_encoder_select="fdctdsp"
2455 qcelp_decoder_select="lsp"
2456 qdm2_decoder_select="mdct rdft mpegaudiodsp"
2457 ra_144_decoder_select="audiodsp"
2458 ra_144_encoder_select="audio_frame_queue lpc audiodsp"
2459 ralf_decoder_select="golomb"
2460 rawvideo_decoder_select="bswapdsp"
2461 rscc_decoder_select="zlib"
2462 rtjpeg_decoder_select="me_cmp"
2463 rv10_decoder_select="h263_decoder"
2464 rv10_encoder_select="h263_encoder"
2465 rv20_decoder_select="h263_decoder"
2466 rv20_encoder_select="h263_encoder"
2467 rv30_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
2468 rv40_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
2469 screenpresso_decoder_select="zlib"
2470 shorten_decoder_select="golomb"
2471 sipr_decoder_select="lsp"
2472 snow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp"
2473 snow_encoder_select="aandcttables dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder"
2474 sonic_decoder_select="golomb rangecoder"
2475 sonic_encoder_select="golomb rangecoder"
2476 sonic_ls_encoder_select="golomb rangecoder"
2477 sp5x_decoder_select="mjpeg_decoder"
2478 svq1_decoder_select="hpeldsp"
2479 svq1_encoder_select="aandcttables hpeldsp me_cmp mpegvideoenc"
2480 svq3_decoder_select="golomb h264dsp h264pred hpeldsp tpeldsp videodsp"
2481 svq3_decoder_suggest="zlib"
2482 tak_decoder_select="audiodsp"
2483 tdsc_decoder_select="zlib mjpeg_decoder"
2484 theora_decoder_select="vp3_decoder"
2485 thp_decoder_select="mjpeg_decoder"
2486 tiff_decoder_suggest="zlib lzma"
2487 tiff_encoder_suggest="zlib"
2488 truehd_decoder_select="mlp_parser"
2489 truemotion2_decoder_select="bswapdsp"
2490 truespeech_decoder_select="bswapdsp"
2491 tscc_decoder_select="zlib"
2492 twinvq_decoder_select="mdct lsp sinewin"
2493 txd_decoder_select="texturedsp"
2494 utvideo_decoder_select="bswapdsp"
2495 utvideo_encoder_select="bswapdsp huffman huffyuvencdsp"
2496 vble_decoder_select="huffyuvdsp"
2497 vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp"
2498 vc1_qsv_decoder_deps="libmfx"
2499 vc1_qsv_decoder_select="qsvdec vc1_qsv_hwaccel"
2500 vc1image_decoder_select="vc1_decoder"
2501 vorbis_decoder_select="mdct"
2502 vorbis_encoder_select="mdct"
2503 vp3_decoder_select="hpeldsp vp3dsp videodsp"
2504 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
2505 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
2506 vp6a_decoder_select="vp6_decoder"
2507 vp6f_decoder_select="vp6_decoder"
2508 vp7_decoder_select="h264pred videodsp vp8dsp"
2509 vp8_decoder_select="h264pred videodsp vp8dsp"
2510 vp9_decoder_select="videodsp vp9_parser"
2511 webp_decoder_select="vp8_decoder exif"
2512 wmalossless_decoder_select="llauddsp"
2513 wmapro_decoder_select="mdct sinewin wma_freqs"
2514 wmav1_decoder_select="mdct sinewin wma_freqs"
2515 wmav1_encoder_select="mdct sinewin wma_freqs"
2516 wmav2_decoder_select="mdct sinewin wma_freqs"
2517 wmav2_encoder_select="mdct sinewin wma_freqs"
2518 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
2519 wmv1_decoder_select="h263_decoder"
2520 wmv1_encoder_select="h263_encoder"
2521 wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
2522 wmv2_encoder_select="h263_encoder wmv2dsp"
2523 wmv3_decoder_select="vc1_decoder"
2524 wmv3image_decoder_select="wmv3_decoder"
2525 xma1_decoder_select="wmapro_decoder"
2526 xma2_decoder_select="wmapro_decoder"
2527 zerocodec_decoder_select="zlib"
2528 zlib_decoder_select="zlib"
2529 zlib_encoder_select="zlib"
2530 zmbv_decoder_select="zlib"
2531 zmbv_encoder_select="zlib"
2534 audiotoolbox_deps="AudioToolbox_AudioToolbox_h"
2535 audiotoolbox_extralibs="-framework CoreFoundation -framework AudioToolbox -framework CoreMedia"
2537 # hardware accelerators
2538 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
2540 d3d11va_deps="d3d11_h dxva_h ID3D11VideoDecoder ID3D11VideoContext"
2541 dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode"
2542 vaapi_deps="va_va_h"
2543 vda_framework_deps="VideoDecodeAcceleration_VDADecoder_h"
2544 vda_framework_extralibs="-framework VideoDecodeAcceleration"
2545 vda_deps="vda_framework pthreads"
2546 vda_extralibs="-framework CoreFoundation -framework QuartzCore"
2547 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
2548 videotoolbox_hwaccel_deps="videotoolbox pthreads"
2549 videotoolbox_hwaccel_extralibs="-framework QuartzCore"
2550 xvmc_deps="X11_extensions_XvMClib_h"
2552 h263_cuvid_hwaccel_deps="cuda cuvid"
2553 h263_vaapi_hwaccel_deps="vaapi"
2554 h263_vaapi_hwaccel_select="h263_decoder"
2555 h263_videotoolbox_hwaccel_deps="videotoolbox"
2556 h263_videotoolbox_hwaccel_select="h263_decoder"
2557 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
2558 h264_cuvid_hwaccel_deps="cuda cuvid"
2559 h264_d3d11va_hwaccel_deps="d3d11va"
2560 h264_d3d11va_hwaccel_select="h264_decoder"
2561 h264_dxva2_hwaccel_deps="dxva2"
2562 h264_dxva2_hwaccel_select="h264_decoder"
2563 h264_mediacodec_decoder_deps="mediacodec"
2564 h264_mediacodec_hwaccel_deps="mediacodec"
2565 h264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser"
2566 h264_mmal_decoder_deps="mmal"
2567 h264_mmal_decoder_select="mmal"
2568 h264_mmal_hwaccel_deps="mmal"
2569 h264_omx_encoder_deps="omx"
2570 h264_qsv_hwaccel_deps="libmfx"
2571 h264_vaapi_hwaccel_deps="vaapi"
2572 h264_vaapi_hwaccel_select="h264_decoder"
2573 h264_vda_decoder_deps="vda"
2574 h264_vda_decoder_select="h264_decoder"
2575 h264_vda_hwaccel_deps="vda"
2576 h264_vda_hwaccel_select="h264_decoder"
2577 h264_vda_old_hwaccel_deps="vda"
2578 h264_vda_old_hwaccel_select="h264_decoder"
2579 h264_vdpau_decoder_deps="vdpau"
2580 h264_vdpau_decoder_select="h264_decoder"
2581 h264_vdpau_hwaccel_deps="vdpau"
2582 h264_vdpau_hwaccel_select="h264_decoder"
2583 h264_videotoolbox_hwaccel_deps="videotoolbox"
2584 h264_videotoolbox_hwaccel_select="h264_decoder"
2585 hevc_cuvid_hwaccel_deps="cuda cuvid"
2586 hevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
2587 hevc_d3d11va_hwaccel_select="hevc_decoder"
2588 hevc_mediacodec_decoder_deps="mediacodec"
2589 hevc_mediacodec_hwaccel_deps="mediacodec"
2590 hevc_mediacodec_decoder_select="hevc_mp4toannexb_bsf hevc_parser"
2591 hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
2592 hevc_dxva2_hwaccel_select="hevc_decoder"
2593 hevc_qsv_hwaccel_deps="libmfx"
2594 hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
2595 hevc_vaapi_hwaccel_select="hevc_decoder"
2596 hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
2597 hevc_vdpau_hwaccel_select="hevc_decoder"
2598 mjpeg_cuvid_hwaccel_deps="cuda cuvid"
2599 mpeg_vdpau_decoder_deps="vdpau"
2600 mpeg_vdpau_decoder_select="mpeg2video_decoder"
2601 mpeg_xvmc_hwaccel_deps="xvmc"
2602 mpeg_xvmc_hwaccel_select="mpeg2video_decoder"
2603 mpeg1_cuvid_hwaccel_deps="cuda cuvid"
2604 mpeg1_vdpau_decoder_deps="vdpau"
2605 mpeg1_vdpau_decoder_select="mpeg1video_decoder"
2606 mpeg1_vdpau_hwaccel_deps="vdpau"
2607 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
2608 mpeg1_videotoolbox_hwaccel_deps="videotoolbox"
2609 mpeg1_videotoolbox_hwaccel_select="mpeg1video_decoder"
2610 mpeg1_xvmc_hwaccel_deps="xvmc"
2611 mpeg1_xvmc_hwaccel_select="mpeg1video_decoder"
2612 mpeg2_crystalhd_decoder_select="crystalhd"
2613 mpeg2_cuvid_hwaccel_deps="cuda cuvid"
2614 mpeg2_d3d11va_hwaccel_deps="d3d11va"
2615 mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
2616 mpeg2_dxva2_hwaccel_deps="dxva2"
2617 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
2618 mpeg2_mmal_decoder_deps="mmal"
2619 mpeg2_mmal_decoder_select="mmal"
2620 mpeg2_mmal_hwaccel_deps="mmal"
2621 mpeg2_qsv_hwaccel_deps="libmfx"
2622 mpeg2_qsv_hwaccel_select="qsvdec_mpeg2"
2623 mpeg2_vaapi_hwaccel_deps="vaapi"
2624 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
2625 mpeg2_vdpau_hwaccel_deps="vdpau"
2626 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
2627 mpeg2_videotoolbox_hwaccel_deps="videotoolbox"
2628 mpeg2_videotoolbox_hwaccel_select="mpeg2video_decoder"
2629 mpeg2_xvmc_hwaccel_deps="xvmc"
2630 mpeg2_xvmc_hwaccel_select="mpeg2video_decoder"
2631 mpeg4_crystalhd_decoder_select="crystalhd"
2632 mpeg4_cuvid_hwaccel_deps="cuda cuvid"
2633 mpeg4_mmal_decoder_deps="mmal"
2634 mpeg4_mmal_decoder_select="mmal"
2635 mpeg4_mmal_hwaccel_deps="mmal"
2636 mpeg4_omx_encoder_deps="omx"
2637 mpeg4_vaapi_hwaccel_deps="vaapi"
2638 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
2639 mpeg4_vdpau_decoder_deps="vdpau"
2640 mpeg4_vdpau_decoder_select="mpeg4_decoder"
2641 mpeg4_vdpau_hwaccel_deps="vdpau"
2642 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
2643 mpeg4_videotoolbox_hwaccel_deps="videotoolbox"
2644 mpeg4_videotoolbox_hwaccel_select="mpeg4_decoder"
2645 msmpeg4_crystalhd_decoder_select="crystalhd"
2646 vc1_crystalhd_decoder_select="crystalhd"
2647 vc1_cuvid_hwaccel_deps="cuda cuvid"
2648 vc1_d3d11va_hwaccel_deps="d3d11va"
2649 vc1_d3d11va_hwaccel_select="vc1_decoder"
2650 vc1_dxva2_hwaccel_deps="dxva2"
2651 vc1_dxva2_hwaccel_select="vc1_decoder"
2652 vc1_mmal_decoder_deps="mmal"
2653 vc1_mmal_decoder_select="mmal"
2654 vc1_mmal_hwaccel_deps="mmal"
2655 vc1_qsv_hwaccel_deps="libmfx"
2656 vc1_qsv_hwaccel_select="qsvdec_vc1"
2657 vc1_vaapi_hwaccel_deps="vaapi"
2658 vc1_vaapi_hwaccel_select="vc1_decoder"
2659 vc1_vdpau_decoder_deps="vdpau"
2660 vc1_vdpau_decoder_select="vc1_decoder"
2661 vc1_vdpau_hwaccel_deps="vdpau"
2662 vc1_vdpau_hwaccel_select="vc1_decoder"
2663 vp8_cuvid_hwaccel_deps="cuda cuvid"
2664 vp9_cuvid_hwaccel_deps="cuda cuvid"
2665 vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
2666 vp9_d3d11va_hwaccel_select="vp9_decoder"
2667 vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
2668 vp9_dxva2_hwaccel_select="vp9_decoder"
2669 vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9"
2670 vp9_vaapi_hwaccel_select="vp9_decoder"
2671 wmv3_crystalhd_decoder_select="crystalhd"
2672 wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
2673 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
2674 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
2675 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
2676 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
2678 # hardware-accelerated codecs
2679 omx_deps="dlopen pthreads"
2680 omx_extralibs='$ldl'
2683 vaapi_encode_deps="vaapi"
2685 hwupload_cuda_filter_deps="cuda"
2686 scale_npp_filter_deps="cuda libnpp"
2688 nvenc_deps_any="dlopen LoadLibrary"
2689 nvenc_encoder_deps="nvenc"
2690 h263_cuvid_decoder_deps="cuda cuvid"
2691 h263_cuvid_decoder_select="h263_cuvid_hwaccel"
2692 h264_cuvid_decoder_deps="cuda cuvid"
2693 h264_cuvid_decoder_select="h264_mp4toannexb_bsf h264_cuvid_hwaccel"
2694 h264_nvenc_encoder_deps="nvenc"
2695 h264_qsv_decoder_deps="libmfx"
2696 h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel"
2697 h264_qsv_encoder_deps="libmfx"
2698 h264_qsv_encoder_select="qsvenc"
2699 h264_vaapi_encoder_deps="VAEncPictureParameterBufferH264"
2700 h264_vaapi_encoder_select="vaapi_encode golomb"
2702 hevc_cuvid_decoder_deps="cuda cuvid"
2703 hevc_cuvid_decoder_select="hevc_mp4toannexb_bsf hevc_cuvid_hwaccel"
2704 hevc_nvenc_encoder_deps="nvenc"
2705 hevc_qsv_decoder_deps="libmfx"
2706 hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec hevc_qsv_hwaccel"
2707 hevc_qsv_encoder_deps="libmfx"
2708 hevc_qsv_encoder_select="qsvenc"
2709 hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC"
2710 hevc_vaapi_encoder_select="vaapi_encode golomb"
2711 mjpeg_cuvid_decoder_deps="cuda cuvid"
2712 mjpeg_cuvid_decoder_select="mjpeg_cuvid_hwaccel"
2713 mpeg1_cuvid_decoder_deps="cuda cuvid"
2714 mpeg1_cuvid_decoder_select="mpeg1_cuvid_hwaccel"
2715 mpeg2_cuvid_decoder_deps="cuda cuvid"
2716 mpeg2_cuvid_decoder_select="mpeg2_cuvid_hwaccel"
2717 mpeg2_qsv_decoder_deps="libmfx"
2718 mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel"
2719 mpeg2_qsv_encoder_deps="libmfx"
2720 mpeg2_qsv_encoder_select="qsvenc"
2721 mpeg4_cuvid_decoder_deps="cuda cuvid"
2722 mpeg4_cuvid_decoder_select="mpeg4_cuvid_hwaccel"
2723 nvenc_h264_encoder_deps="nvenc"
2724 nvenc_hevc_encoder_deps="nvenc"
2726 vc1_cuvid_decoder_deps="cuda cuvid"
2727 vc1_cuvid_decoder_select="vc1_cuvid_hwaccel"
2728 vp8_cuvid_decoder_deps="cuda cuvid"
2729 vp8_cuvid_decoder_select="vp8_cuvid_hwaccel"
2730 vp9_cuvid_decoder_deps="cuda cuvid"
2731 vp9_cuvid_decoder_select="vp9_cuvid_hwaccel"
2734 h264_parser_select="golomb h264dsp"
2735 hevc_parser_select="golomb"
2736 mpegvideo_parser_select="mpegvideo"
2737 mpeg4video_parser_select="h263dsp mpegvideo qpeldsp"
2738 vc1_parser_select="vc1dsp"
2741 mjpeg2jpeg_bsf_select="jpegtables"
2743 # external libraries
2744 aac_at_decoder_deps="audiotoolbox"
2745 ac3_at_decoder_deps="audiotoolbox"
2746 ac3_at_decoder_select="ac3_parser"
2747 adpcm_ima_qt_at_decoder_deps="audiotoolbox"
2748 alac_at_decoder_deps="audiotoolbox"
2749 amr_nb_at_decoder_deps="audiotoolbox"
2750 eac3_at_decoder_deps="audiotoolbox"
2751 eac3_at_decoder_select="ac3_parser"
2752 gsm_ms_at_decoder_deps="audiotoolbox"
2753 ilbc_at_decoder_deps="audiotoolbox"
2754 mp1_at_decoder_deps="audiotoolbox"
2755 mp2_at_decoder_deps="audiotoolbox"
2756 mp3_at_decoder_deps="audiotoolbox"
2757 pcm_alaw_at_decoder_deps="audiotoolbox"
2758 pcm_mulaw_at_decoder_deps="audiotoolbox"
2759 qdmc_at_decoder_deps="audiotoolbox"
2760 qdm2_at_decoder_deps="audiotoolbox"
2761 aac_at_encoder_deps="audiotoolbox"
2762 aac_at_encoder_select="audio_frame_queue"
2763 alac_at_encoder_deps="audiotoolbox"
2764 alac_at_encoder_select="audio_frame_queue"
2765 ilbc_at_encoder_deps="audiotoolbox"
2766 ilbc_at_encoder_select="audio_frame_queue"
2767 pcm_alaw_at_encoder_deps="audiotoolbox"
2768 pcm_alaw_at_encoder_select="audio_frame_queue"
2769 pcm_mulaw_at_encoder_deps="audiotoolbox"
2770 pcm_mulaw_at_encoder_select="audio_frame_queue"
2771 chromaprint_muxer_deps="chromaprint"
2772 h264_videotoolbox_encoder_deps="videotoolbox_encoder pthreads"
2773 libcelt_decoder_deps="libcelt"
2774 libfdk_aac_decoder_deps="libfdk_aac"
2775 libfdk_aac_encoder_deps="libfdk_aac"
2776 libfdk_aac_encoder_select="audio_frame_queue"
2777 libgme_demuxer_deps="libgme"
2778 libgsm_decoder_deps="libgsm"
2779 libgsm_encoder_deps="libgsm"
2780 libgsm_ms_decoder_deps="libgsm"
2781 libgsm_ms_encoder_deps="libgsm"
2782 libilbc_decoder_deps="libilbc"
2783 libilbc_encoder_deps="libilbc"
2784 libkvazaar_encoder_deps="libkvazaar"
2785 libmodplug_demuxer_deps="libmodplug"
2786 libmp3lame_encoder_deps="libmp3lame"
2787 libmp3lame_encoder_select="audio_frame_queue"
2788 libopencore_amrnb_decoder_deps="libopencore_amrnb"
2789 libopencore_amrnb_encoder_deps="libopencore_amrnb"
2790 libopencore_amrnb_encoder_select="audio_frame_queue"
2791 libopencore_amrwb_decoder_deps="libopencore_amrwb"
2792 libopenh264_decoder_deps="libopenh264"
2793 libopenh264_decoder_select="h264_mp4toannexb_bsf"
2794 libopenh264_encoder_deps="libopenh264"
2795 libopenjpeg_decoder_deps="libopenjpeg"
2796 libopenjpeg_encoder_deps="libopenjpeg"
2797 libopenmpt_demuxer_deps="libopenmpt"
2798 libopus_decoder_deps="libopus"
2799 libopus_encoder_deps="libopus"
2800 libopus_encoder_select="audio_frame_queue"
2801 libschroedinger_decoder_deps="libschroedinger"
2802 libschroedinger_encoder_deps="libschroedinger"
2803 libshine_encoder_deps="libshine"
2804 libshine_encoder_select="audio_frame_queue"
2805 libspeex_decoder_deps="libspeex"
2806 libspeex_encoder_deps="libspeex"
2807 libspeex_encoder_select="audio_frame_queue"
2808 libtheora_encoder_deps="libtheora"
2809 libtwolame_encoder_deps="libtwolame"
2810 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
2811 libvorbis_decoder_deps="libvorbis"
2812 libvorbis_encoder_deps="libvorbis"
2813 libvorbis_encoder_select="audio_frame_queue"
2814 libvpx_vp8_decoder_deps="libvpx"
2815 libvpx_vp8_encoder_deps="libvpx"
2816 libvpx_vp9_decoder_deps="libvpx"
2817 libvpx_vp9_encoder_deps="libvpx"
2818 libwavpack_encoder_deps="libwavpack"
2819 libwebp_encoder_deps="libwebp"
2820 libwebp_anim_encoder_deps="libwebp"
2821 libx262_encoder_deps="libx262"
2822 libx264_encoder_deps="libx264"
2823 libx264rgb_encoder_deps="libx264 x264_csp_bgr"
2824 libx264rgb_encoder_select="libx264_encoder"
2825 libx265_encoder_deps="libx265"
2826 libxavs_encoder_deps="libxavs"
2827 libxvid_encoder_deps="libxvid"
2828 libzvbi_teletext_decoder_deps="libzvbi"
2829 videotoolbox_deps="VideoToolbox_VideoToolbox_h"
2830 videotoolbox_extralibs="-framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework CoreVideo"
2831 videotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames"
2832 videotoolbox_encoder_suggest="vda_framework vt_bt2020"
2833 vt_bt2020_deps="kCVImageBufferColorPrimaries_ITU_R_2020"
2836 ac3_demuxer_select="ac3_parser"
2837 asf_demuxer_select="riffdec"
2838 asf_o_demuxer_select="riffdec"
2839 asf_muxer_select="riffenc"
2840 asf_stream_muxer_select="asf_muxer"
2841 avi_demuxer_select="iso_media riffdec exif"
2842 avi_muxer_select="riffenc"
2843 avisynth_demuxer_deps="avisynth"
2844 avisynth_demuxer_select="riffdec"
2845 caf_demuxer_select="iso_media riffdec"
2846 dash_muxer_select="mp4_muxer"
2847 dirac_demuxer_select="dirac_parser"
2848 dts_demuxer_select="dca_parser"
2849 dtshd_demuxer_select="dca_parser"
2850 dv_demuxer_select="dvprofile"
2851 dv_muxer_select="dvprofile"
2852 dxa_demuxer_select="riffdec"
2853 eac3_demuxer_select="ac3_parser"
2854 f4v_muxer_select="mov_muxer"
2855 fifo_muxer_deps="threads"
2856 flac_demuxer_select="flac_parser"
2857 hds_muxer_select="flv_muxer"
2858 hls_muxer_select="mpegts_muxer"
2859 image2_alias_pix_demuxer_select="image2_demuxer"
2860 image2_brender_pix_demuxer_select="image2_demuxer"
2861 ipod_muxer_select="mov_muxer"
2862 ismv_muxer_select="mov_muxer"
2863 libnut_demuxer_deps="libnut"
2864 libnut_muxer_deps="libnut"
2865 matroska_audio_muxer_select="matroska_muxer"
2866 matroska_demuxer_select="iso_media riffdec"
2867 matroska_demuxer_suggest="bzlib lzo zlib"
2868 matroska_muxer_select="iso_media riffenc"
2869 mmf_muxer_select="riffenc"
2870 mov_demuxer_select="iso_media riffdec"
2871 mov_demuxer_suggest="zlib"
2872 mov_muxer_select="iso_media riffenc rtpenc_chain"
2873 mp3_demuxer_select="mpegaudio_parser"
2874 mp4_muxer_select="mov_muxer"
2875 mpegts_demuxer_select="iso_media"
2876 mpegts_muxer_select="adts_muxer latm_muxer"
2877 mpegtsraw_demuxer_select="mpegts_demuxer"
2878 mxf_d10_muxer_select="mxf_muxer"
2879 mxf_opatom_muxer_select="mxf_muxer"
2880 nut_muxer_select="riffenc"
2881 nuv_demuxer_select="riffdec"
2882 oga_muxer_select="ogg_muxer"
2883 ogg_demuxer_select="dirac_parse"
2884 ogv_muxer_select="ogg_muxer"
2885 opus_muxer_select="ogg_muxer"
2886 psp_muxer_select="mov_muxer"
2887 rtp_demuxer_select="sdp_demuxer"
2888 rtpdec_select="asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
2889 rtsp_demuxer_select="http_protocol rtpdec"
2890 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2891 sap_demuxer_select="sdp_demuxer"
2892 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
2893 sdp_demuxer_select="rtpdec"
2894 smoothstreaming_muxer_select="ismv_muxer"
2895 spdif_muxer_select="aac_parser"
2896 spx_muxer_select="ogg_muxer"
2897 swf_demuxer_suggest="zlib"
2898 tak_demuxer_select="tak_parser"
2899 tg2_muxer_select="mov_muxer"
2900 tgp_muxer_select="mov_muxer"
2901 vobsub_demuxer_select="mpegps_demuxer"
2902 w64_demuxer_select="wav_demuxer"
2903 w64_muxer_select="wav_muxer"
2904 wav_demuxer_select="riffdec"
2905 wav_muxer_select="riffenc"
2906 webm_muxer_select="iso_media riffenc"
2907 webm_dash_manifest_demuxer_select="matroska_demuxer"
2908 wtv_demuxer_select="mpegts_demuxer riffdec"
2909 wtv_muxer_select="mpegts_muxer riffenc"
2910 xmv_demuxer_select="riffdec"
2911 xwma_demuxer_select="riffdec"
2914 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
2915 alsa_outdev_deps="alsa_asoundlib_h"
2916 avfoundation_indev_extralibs="-framework CoreVideo -framework Foundation -framework AVFoundation -framework CoreMedia"
2917 avfoundation_indev_select="avfoundation"
2918 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2919 caca_outdev_deps="libcaca"
2920 decklink_indev_deps="decklink pthreads"
2921 decklink_indev_extralibs="-lstdc++"
2922 decklink_outdev_deps="decklink pthreads"
2923 decklink_outdev_extralibs="-lstdc++"
2924 dshow_indev_deps="IBaseFilter"
2925 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi"
2926 dv1394_indev_deps="dv1394"
2927 dv1394_indev_select="dv_demuxer"
2928 fbdev_indev_deps="linux_fb_h"
2929 fbdev_outdev_deps="linux_fb_h"
2930 gdigrab_indev_deps="CreateDIBSection"
2931 gdigrab_indev_extralibs="-lgdi32"
2932 gdigrab_indev_select="bmp_decoder"
2933 iec61883_indev_deps="libiec61883"
2934 jack_indev_deps="jack_jack_h"
2935 jack_indev_deps_any="sem_timedwait dispatch_dispatch_h"
2936 lavfi_indev_deps="avfilter"
2937 libcdio_indev_deps="libcdio"
2938 libdc1394_indev_deps="libdc1394"
2939 libv4l2_indev_deps="libv4l2"
2940 openal_indev_deps="openal"
2941 opengl_outdev_deps="opengl"
2942 oss_indev_deps_any="soundcard_h sys_soundcard_h"
2943 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
2944 pulse_indev_deps="libpulse"
2945 pulse_outdev_deps="libpulse"
2946 qtkit_indev_extralibs="-framework QTKit -framework Foundation -framework QuartzCore"
2947 qtkit_indev_select="qtkit"
2948 sdl2_outdev_deps="sdl2"
2949 sndio_indev_deps="sndio_h"
2950 sndio_outdev_deps="sndio_h"
2951 v4l_indev_deps="linux_videodev_h"
2952 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
2953 v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h"
2954 vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
2955 vfwcap_indev_extralibs="-lavicap32"
2956 x11grab_indev_deps="x11grab"
2957 x11grab_xcb_indev_deps="libxcb"
2958 xv_outdev_deps="X11_extensions_Xvlib_h XvGetPortAttribute"
2959 xv_outdev_extralibs="-lXv -lX11 -lXext"
2962 async_protocol_deps="threads"
2963 bluray_protocol_deps="libbluray"
2964 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
2965 ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
2966 ffrtmpcrypt_protocol_select="tcp_protocol"
2967 ffrtmphttp_protocol_deps="!librtmp_protocol"
2968 ffrtmphttp_protocol_select="http_protocol"
2969 ftp_protocol_select="tcp_protocol"
2970 gopher_protocol_select="network"
2971 http_protocol_select="tcp_protocol"
2972 httpproxy_protocol_select="tcp_protocol"
2973 https_protocol_select="tls_protocol"
2974 icecast_protocol_select="http_protocol"
2975 librtmp_protocol_deps="librtmp"
2976 librtmpe_protocol_deps="librtmp"
2977 librtmps_protocol_deps="librtmp"
2978 librtmpt_protocol_deps="librtmp"
2979 librtmpte_protocol_deps="librtmp"
2980 libsmbclient_protocol_deps="libsmbclient gplv3"
2981 libssh_protocol_deps="libssh"
2982 mmsh_protocol_select="http_protocol"
2983 mmst_protocol_select="network"
2984 rtmp_protocol_deps="!librtmp_protocol"
2985 rtmp_protocol_select="tcp_protocol"
2986 rtmpe_protocol_select="ffrtmpcrypt_protocol"
2987 rtmps_protocol_deps="!librtmp_protocol"
2988 rtmps_protocol_select="tls_protocol"
2989 rtmpt_protocol_select="ffrtmphttp_protocol"
2990 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
2991 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
2992 rtp_protocol_select="udp_protocol"
2993 sctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
2994 sctp_protocol_select="network"
2995 srtp_protocol_select="rtp_protocol srtp"
2996 tcp_protocol_select="network"
2997 tls_gnutls_protocol_deps="gnutls !tls_schannel_protocol !tls_securetransport_protocol"
2998 tls_gnutls_protocol_select="tcp_protocol"
2999 tls_openssl_protocol_deps="openssl !tls_schannel_protocol !tls_securetransport_protocol !tls_gnutls_protocol"
3000 tls_openssl_protocol_select="tcp_protocol"
3001 tls_schannel_protocol_deps="schannel"
3002 tls_schannel_protocol_select="tcp_protocol"
3003 tls_securetransport_protocol_deps="securetransport"
3004 tls_securetransport_protocol_select="tcp_protocol"
3005 tls_protocol_deps_any="tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol"
3006 udp_protocol_select="network"
3007 udplite_protocol_select="network"
3008 unix_protocol_deps="sys_un_h"
3009 unix_protocol_select="network"
3012 afftfilt_filter_deps="avcodec"
3013 afftfilt_filter_select="fft"
3014 amovie_filter_deps="avcodec avformat"
3015 aresample_filter_deps="swresample"
3016 ass_filter_deps="libass"
3017 asyncts_filter_deps="avresample"
3018 atempo_filter_deps="avcodec"
3019 atempo_filter_select="rdft"
3020 azmq_filter_deps="libzmq"
3021 blackframe_filter_deps="gpl"
3022 boxblur_filter_deps="gpl"
3023 bs2b_filter_deps="libbs2b"
3024 colormatrix_filter_deps="gpl"
3025 cover_rect_filter_deps="avcodec avformat gpl"
3026 cropdetect_filter_deps="gpl"
3027 delogo_filter_deps="gpl"
3028 deshake_filter_select="pixelutils"
3029 drawtext_filter_deps="libfreetype"
3030 ebur128_filter_deps="gpl"
3031 eq_filter_deps="gpl"
3032 fftfilt_filter_deps="avcodec"
3033 fftfilt_filter_select="rdft"
3034 find_rect_filter_deps="avcodec avformat gpl"
3035 firequalizer_filter_deps="avcodec"
3036 firequalizer_filter_select="rdft"
3037 flite_filter_deps="libflite"
3038 framerate_filter_select="pixelutils"
3039 frei0r_filter_deps="frei0r dlopen"
3040 frei0r_src_filter_deps="frei0r dlopen"
3041 fspp_filter_deps="gpl"
3042 geq_filter_deps="gpl"
3043 histeq_filter_deps="gpl"
3044 hqdn3d_filter_deps="gpl"
3045 interlace_filter_deps="gpl"
3046 kerndeint_filter_deps="gpl"
3047 ladspa_filter_deps="ladspa dlopen"
3048 loudnorm_filter_deps="libebur128"
3049 mcdeint_filter_deps="avcodec gpl"
3050 movie_filter_deps="avcodec avformat"
3051 mpdecimate_filter_deps="gpl"
3052 mpdecimate_filter_select="pixelutils"
3053 mptestsrc_filter_deps="gpl"
3054 negate_filter_deps="lut_filter"
3055 nnedi_filter_deps="gpl"
3056 ocr_filter_deps="libtesseract"
3057 ocv_filter_deps="libopencv"
3058 owdenoise_filter_deps="gpl"
3059 pan_filter_deps="swresample"
3060 perspective_filter_deps="gpl"
3061 phase_filter_deps="gpl"
3062 pp7_filter_deps="gpl"
3063 pp_filter_deps="gpl postproc"
3064 pullup_filter_deps="gpl"
3065 removelogo_filter_deps="avcodec avformat swscale"
3066 repeatfields_filter_deps="gpl"
3067 resample_filter_deps="avresample"
3068 rubberband_filter_deps="librubberband"
3069 sab_filter_deps="gpl swscale"
3070 scale2ref_filter_deps="swscale"
3071 scale_filter_deps="swscale"
3072 select_filter_select="pixelutils"
3073 showcqt_filter_deps="avcodec avformat swscale"
3074 showcqt_filter_select="fft"
3075 showfreqs_filter_deps="avcodec"
3076 showfreqs_filter_select="fft"
3077 showspectrum_filter_deps="avcodec"
3078 showspectrum_filter_select="fft"
3079 showspectrumpic_filter_deps="avcodec"
3080 showspectrumpic_filter_select="fft"
3081 smartblur_filter_deps="gpl swscale"
3082 sofalizer_filter_deps="netcdf avcodec"
3083 sofalizer_filter_select="fft"
3084 spectrumsynth_filter_deps="avcodec"
3085 spectrumsynth_filter_select="fft"
3086 spp_filter_deps="gpl avcodec"
3087 spp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp"
3088 stereo3d_filter_deps="gpl"
3089 subtitles_filter_deps="avformat avcodec libass"
3090 super2xsai_filter_deps="gpl"
3091 pixfmts_super2xsai_test_deps="super2xsai_filter"
3092 tinterlace_filter_deps="gpl"
3093 tinterlace_merge_test_deps="tinterlace_filter"
3094 tinterlace_pad_test_deps="tinterlace_filter"
3095 uspp_filter_deps="gpl avcodec"
3096 vaguedenoiser_filter_deps="gpl"
3097 vidstabdetect_filter_deps="libvidstab"
3098 vidstabtransform_filter_deps="libvidstab"
3099 zmq_filter_deps="libzmq"
3100 zoompan_filter_deps="swscale"
3101 zscale_filter_deps="libzimg"
3102 scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
3105 avio_dir_cmd_deps="avformat avutil"
3106 avio_reading_deps="avformat avcodec avutil"
3107 decoding_encoding_example_deps="avcodec avformat avutil"
3108 demuxing_decoding_example_deps="avcodec avformat avutil"
3109 extract_mvs_example_deps="avcodec avformat avutil"
3110 filter_audio_example_deps="avfilter avutil"
3111 filtering_audio_example_deps="avfilter avcodec avformat avutil"
3112 filtering_video_example_deps="avfilter avcodec avformat avutil"
3113 http_multiclient_example_deps="avformat avutil"
3114 metadata_example_deps="avformat avutil"
3115 muxing_example_deps="avcodec avformat avutil swscale"
3116 qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder vaapi_x11"
3117 remuxing_example_deps="avcodec avformat avutil"
3118 resampling_audio_example_deps="avutil swresample"
3119 scaling_video_example_deps="avutil swscale"
3120 transcode_aac_example_deps="avcodec avformat swresample"
3121 transcoding_example_deps="avfilter avcodec avformat avutil"
3123 # libraries, in linking order
3124 avcodec_deps="avutil"
3125 avdevice_deps="avformat avcodec avutil"
3126 avfilter_deps="avutil"
3127 avformat_deps="avcodec avutil"
3128 avresample_deps="avutil"
3129 postproc_deps="avutil gpl"
3130 swresample_deps="avutil"
3131 swscale_deps="avutil"
3134 ffmpeg_deps="avcodec avfilter avformat swresample"
3135 ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter
3137 setpts_filter trim_filter"
3138 ffplay_deps="avcodec avformat swscale swresample sdl2"
3139 ffplay_libs='$sdl2_libs'
3140 ffplay_select="rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter"
3141 ffprobe_deps="avcodec avformat"
3142 ffserver_deps="avformat fork sarestart"
3143 ffserver_select="ffm_muxer rtp_protocol rtsp_demuxer"
3146 podpages_deps="perl"
3147 manpages_deps="perl pod2man"
3148 htmlpages_deps="perl"
3149 htmlpages_deps_any="makeinfo_html texi2html"
3150 txtpages_deps="perl makeinfo"
3151 doc_deps_any="manpages htmlpages podpages txtpages"
3153 # default parameters
3155 logfile="config.log"
3157 # installation paths
3158 prefix_default="/usr/local"
3159 bindir_default='${prefix}/bin'
3160 datadir_default='${prefix}/share/ffmpeg'
3161 docdir_default='${prefix}/share/doc/ffmpeg'
3162 incdir_default='${prefix}/include'
3163 libdir_default='${prefix}/lib'
3164 mandir_default='${prefix}/share/man'
3170 host_cc_default="gcc"
3172 doxygen_default="doxygen"
3174 ln_s_default="ln -s -f"
3177 pkg_config_default=pkg-config
3178 ranlib_default="ranlib"
3179 strip_default="strip"
3180 version_script='--version-script'
3181 yasmexe_default="yasm"
3182 windres_default="windres"
3185 target_os_default=$(tolower $(uname -s))
3186 host_os=$target_os_default
3189 if test "$target_os_default" = aix; then
3190 arch_default=$(uname -p)
3191 strip_default="strip -X32_64"
3193 arch_default=$(uname -m)
3198 # configurable options
3199 enable $PROGRAM_LIST
3200 enable $DOCUMENT_LIST
3201 enable $EXAMPLE_LIST
3202 enable $(filter_out avresample $LIBRARY_LIST)
3208 enable faan faandct faanidct
3209 enable optimizations
3210 enable runtime_cpudetect
3211 enable safe_bitstream_reader
3213 enable swscale_alpha
3214 enable valgrind_backtrace
3216 sws_max_filter_size_default=256
3217 set_default sws_max_filter_size
3219 # Enable platform codecs by default.
3222 # Enable hwaccels by default.
3223 enable d3d11va dxva2 vaapi vda vdpau videotoolbox_hwaccel xvmc
3226 enable nvenc vda_framework videotoolbox videotoolbox_encoder
3229 SHFLAGS='-shared -Wl,-soname,$$(@F)'
3232 FULLNAME='$(NAME)$(BUILDSUF)'
3233 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
3236 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
3237 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
3238 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
3239 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
3240 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
3241 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
3242 VERSION_SCRIPT_POSTPROCESS_CMD="cat"
3267 host_cflags_filter=echo
3268 host_ldflags_filter=echo
3270 target_path='$(CURDIR)'
3272 # since the object filename is not given with the -MM flag, the compiler
3273 # is only able to print the basename, and we must add the path ourselves
3274 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)'
3278 if test -f configure; then
3281 source_path=$(cd $(dirname "$0"); pwd)
3282 case "$source_path" in
3283 *[[:blank:]]*) die "Out of tree builds are impossible with whitespace in source path." ;;
3285 test -e "$source_path/config.h" &&
3286 die "Out of tree builds are impossible with config.h in source dir."
3293 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
3299 file=$source_path/$3
3300 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
3303 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
3304 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
3305 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
3306 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
3307 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
3308 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
3309 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
3310 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
3311 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
3313 find_things_extern(){
3316 file=$source_path/$3
3317 sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
3320 BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
3321 PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
3337 for n in $COMPONENT_LIST; do
3338 v=$(toupper ${n%s})_LIST
3340 eval ${n}_if_any="\$$v"
3343 enable $ARCH_EXT_LIST
3346 echo "Unknown option \"$1\"."
3347 echo "See $0 --help for available options."
3351 print_in_columns() {
3352 cols=$(expr $ncols / 24)
3353 cat | tr ' ' '\n' | sort | pr -r "-$cols" -w $ncols -t
3359 echo $* | sed s/$suffix//g | print_in_columns
3371 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
3372 echo "prob ${prob:-0.5}"
3380 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
3381 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
3390 --extra-ldexeflags=*)
3391 add_ldexeflags $optval
3393 --extra-ldlibflags=*)
3394 add_ldlibflags $optval
3397 add_extralibs $optval
3400 disable $INDEV_LIST $OUTDEV_LIST
3403 debuglevel="$optval"
3406 disable $PROGRAM_LIST
3408 --disable-everything)
3409 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
3412 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
3413 disable $LIBRARY_LIST $PROGRAM_LIST doc
3416 --enable-random|--disable-random)
3417 action=${opt%%-random}
3418 do_random ${action#--} $COMPONENT_LIST
3420 --enable-random=*|--disable-random=*)
3421 action=${opt%%-random=*}
3422 do_random ${action#--} $optval
3424 --enable-*=*|--disable-*=*)
3425 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
3426 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
3427 eval list=\$$(toupper $thing)_LIST
3428 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
3429 list=$(filter "$name" $list)
3430 [ "$list" = "" ] && warn "Option $opt did not match anything"
3433 --enable-?*|--disable-?*)
3434 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
3435 if is_in $option $COMPONENT_LIST; then
3436 test $action = disable && action=unset
3437 eval $action \$$(toupper ${option%s})_LIST
3438 elif is_in $option $CMDLINE_SELECT; then
3445 NAME="${opt#--list-}"
3446 is_in $NAME $COMPONENT_LIST || die_unknown $opt
3448 eval show_list $NAME \$$(toupper $NAME)_LIST
3450 --help|-h) show_help
3452 --fatal-warnings) enable fatal_warnings
3455 optname="${opt%%=*}"
3456 optname="${optname#--}"
3457 optname=$(echo "$optname" | sed 's/-/_/g')
3458 if is_in $optname $CMDLINE_SET; then
3459 eval $optname='$optval'
3460 elif is_in $optname $CMDLINE_APPEND; then
3461 append $optname "$optval"
3473 disabled logging && logfile=/dev/null
3475 # Disable all the library-specific components if the library itself
3476 # is disabled, see AVCODEC_LIST and following _LIST variables.
3478 disable_components(){
3479 disabled ${1} && disable $(
3480 eval components="\$$(toupper ${1})_COMPONENTS"
3481 map 'eval echo \${$(toupper ${v%s})_LIST}' $components
3485 map 'disable_components $v' $LIBRARY_LIST
3487 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
3490 test -n "$valgrind" && toolchain="valgrind-memcheck"
3492 case "$toolchain" in
3494 cc_default="${toolchain%-asan}"
3495 add_cflags -fsanitize=address
3496 add_ldflags -fsanitize=address
3499 cc_default="${toolchain%-msan}"
3500 add_cflags -fsanitize=memory -fsanitize-memory-track-origins
3501 add_ldflags -fsanitize=memory
3504 cc_default="${toolchain%-tsan}"
3505 add_cflags -fsanitize=thread -pie
3506 add_ldflags -fsanitize=thread -pie
3507 case "$toolchain" in
3515 cc_default="${toolchain%-usan}"
3516 add_cflags -fsanitize=undefined
3517 add_ldflags -fsanitize=undefined
3520 target_exec_default="valgrind"
3521 case "$toolchain" in
3523 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"
3526 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"
3531 # Check whether the current MSVC version needs the C99 converter.
3532 # From MSVC 2013 (compiler major version 18) onwards, it does actually
3533 # support enough of C99 to build ffmpeg. Default to the new
3534 # behaviour if the regexp was unable to match anything, since this
3535 # successfully parses the version number of existing supported
3536 # versions that require the converter (MSVC 2010 and 2012).
3537 cl_major_ver=$(cl 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
3538 if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
3541 cc_default="c99wrap cl"
3543 ld_default="$source_path/compat/windows/mslink"
3544 nm_default="dumpbin -symbols"
3551 target_os_default="win32"
3552 # Use a relative path for TMPDIR. This makes sure all the
3553 # ffconf temp files are written with a relative path, avoiding
3554 # issues with msys/win32 path conversion for MSVC parameters
3555 # such as -Fo<file> or -out:<file>.
3561 nm_default="dumpbin -symbols"
3563 target_os_default="win32"
3567 add_cflags -fprofile-arcs -ftest-coverage
3568 add_ldflags -fprofile-arcs -ftest-coverage
3571 add_cflags -fprofile-arcs -ftest-coverage
3572 add_ldflags --coverage
3575 add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
3576 add_cflags -fno-strict-overflow -fstack-protector-all
3577 add_ldflags -Wl,-z,relro -Wl,-z,now
3580 die "Unknown toolchain $toolchain"
3584 test -n "$cross_prefix" && enable cross_compile
3586 if enabled cross_compile; then
3587 test -n "$arch" && test -n "$target_os" ||
3588 die "Must specify target arch and OS when cross-compiling"
3591 ar_default="${cross_prefix}${ar_default}"
3592 cc_default="${cross_prefix}${cc_default}"
3593 cxx_default="${cross_prefix}${cxx_default}"
3594 nm_default="${cross_prefix}${nm_default}"
3595 pkg_config_default="${cross_prefix}${pkg_config_default}"
3596 if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
3597 ranlib_default="${cross_prefix}${ranlib_default} -D"
3599 ranlib_default="${cross_prefix}${ranlib_default}"
3601 strip_default="${cross_prefix}${strip_default}"
3602 windres_default="${cross_prefix}${windres_default}"
3604 sysinclude_default="${sysroot}/usr/include"
3606 set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
3607 target_exec target_os yasmexe
3608 enabled cross_compile || host_cc_default=$cc
3611 pkg_config_fail_message=""
3612 if ! $pkg_config --version >/dev/null 2>&1; then
3613 warn "$pkg_config not found, library detection may fail."
3615 elif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags; then
3616 pkg_config_fail_message="
3617 Note: When building a static binary, add --pkg-config-flags=\"--static\"."
3620 if test $doxygen != $doxygen_default && \
3621 ! $doxygen --version >/dev/null 2>&1; then
3622 warn "Specified doxygen \"$doxygen\" not found, API documentation will fail to build."
3627 mingw32*|mingw64*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
3631 EXESUF=$(exesuf $target_os)
3632 HOSTEXESUF=$(exesuf $host_os)
3634 # set temporary file name
3635 : ${TMPDIR:=$TEMPDIR}
3639 if [ -n "$tempprefix" ] ; then
3641 echo $tempprefix.${HOSTNAME}.${UID}
3643 elif ! check_cmd mktemp -u XXXXXX; then
3644 # simple replacement for missing mktemp
3645 # NOT SAFE FOR GENERAL USE
3647 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
3652 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
3653 (set -C; exec > $tmp) 2>/dev/null ||
3654 die "Unable to create temporary file in $TMPDIR."
3655 append TMPFILES $tmp
3659 trap 'rm -f -- $TMPFILES' EXIT
3664 tmpfile TMPE $EXESUF
3676 # make sure we can execute files in $TMPDIR
3677 cat > $TMPSH 2>> $logfile <<EOF
3680 chmod +x $TMPSH >> $logfile 2>&1
3681 if ! $TMPSH >> $logfile 2>&1; then
3683 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
3684 variable to another directory and make sure that it is not mounted noexec.
3686 die "Sanity test failed."
3692 # Filter out MSVC cl.exe options from cflags that shouldn't
3693 # be passed to gas-preprocessor
3703 -std=c99) echo -c99 ;;
3704 -mcpu=*) echo -arch ${flag#*=} ;;
3705 -mieee) echo -ieee ;;
3706 -O*|-fast) echo $flag ;;
3707 -fno-math-errno) echo -assume nomath_errno ;;
3709 -Wall) echo -msg_enable level2 ;;
3710 -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
3711 -Wl,*) echo $flag ;;
3721 -Wno-switch) echo -Wno-switch-enum ;;
3722 -Wno-format-zero-length) ;;
3723 -Wdisabled-optimization) ;;
3724 -Wno-pointer-sign) echo -Wno-other ;;
3730 msvc_common_flags(){
3733 # In addition to specifying certain flags under the compiler
3734 # specific filters, they must be specified here as well or else the
3735 # generic catch all at the bottom will print the original flag.
3739 -fomit-frame-pointer) ;;
3743 -fno-signed-zeros) ;;
3747 -lz) echo zlib.lib ;;
3748 -lavifil32) echo vfw32.lib ;;
3749 -lavicap32) echo vfw32.lib user32.lib ;;
3750 -lx264) echo libx264.lib ;;
3751 -l*) echo ${flag#-l}.lib ;;
3752 -LARGEADDRESSAWARE) echo $flag ;;
3753 -L*) echo -libpath:${flag#-L} ;;
3760 msvc_common_flags "$@"
3763 -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
3764 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
3765 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
3767 -wd4273 -wd4554 -wd4701 ;;
3773 msvc_common_flags "$@"
3776 # Despite what Intel's documentation says -Wall, which is supported
3777 # on Windows, does enable remarks so disable them here.
3778 -Wall) echo $flag -Qdiag-disable:remark ;;
3779 -std=c99) echo -Qstd=c99 ;;
3797 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
3798 -fomit-frame-pointer) echo -Mnoframe ;;
3809 case "${flag#*=}" in
3810 native) echo -xtarget=native ;;
3811 v9|niagara) echo -xarch=sparc ;;
3812 ultrasparc) echo -xarch=sparcvis ;;
3813 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
3814 i586|pentium) echo -xchip=pentium ;;
3815 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
3816 pentium3*|c3-2) echo -xtarget=pentium3 ;;
3817 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
3818 pentium4*) echo -xtarget=pentium4 ;;
3819 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
3820 *-sse3) echo -xarch=sse3 ;;
3821 core2) echo -xarch=ssse3 -xchip=core2 ;;
3822 bonnell) echo -xarch=ssse3 ;;
3823 corei7|nehalem) echo -xtarget=nehalem ;;
3824 westmere) echo -xtarget=westmere ;;
3825 silvermont) echo -xarch=sse4_2 ;;
3826 corei7-avx|sandybridge) echo -xtarget=sandybridge ;;
3827 core-avx*|ivybridge|haswell|broadwell|skylake*|knl)
3829 amdfam10|barcelona) echo -xtarget=barcelona ;;
3830 btver1) echo -xarch=amdsse4a ;;
3831 btver2|bdver*|znver*) echo -xarch=avx ;;
3832 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
3833 k8|opteron|athlon64|athlon-fx)
3834 echo -xarch=sse2a ;;
3835 athlon*) echo -xarch=pentium_proa ;;
3838 -std=c99) echo -xc99 ;;
3839 -fomit-frame-pointer) echo -xregs=frameptr ;;
3840 -fPIC) echo -KPIC -xcode=pic32 ;;
3841 -W*,*) echo $flag ;;
3842 -f*-*|-W*|-mimpure-text) ;;
3853 case "${flag#*=}" in
3854 armv7-a|cortex-a*) echo -mv=7a8 ;;
3855 armv7-r|cortex-r*) echo -mv=7r4 ;;
3856 armv7-m|cortex-m*) echo -mv=7m3 ;;
3857 armv6*|arm11*) echo -mv=6 ;;
3858 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
3860 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
3863 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
3864 -mfpu=vfp) echo --float_support=vfpv2 ;;
3865 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
3866 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
3867 -msoft-float) echo --float_support=vfplib ;;
3868 -O[0-3]|-mf=*) echo $flag ;;
3870 -pds=*) echo $flag ;;
3871 -D*|-I*) echo $flag ;;
3872 --gcc|--abi=*) echo $flag ;;
3883 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
3884 unset _ld_o _ldflags _ld_lib _ld_path
3885 unset _depflags _DEPCMD _DEPFLAGS
3888 if $_cc --version 2>&1 | grep -q '^GNU assembler'; then
3889 true # no-op to avoid reading stdin in following checks
3890 elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
3892 gcc_extra_ver=$(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)')
3893 _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver"
3894 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3897 elif $_cc -v 2>&1 | grep -qi ^gcc; then
3899 gcc_version=$($_cc --version | head -n1)
3900 gcc_basever=$($_cc -dumpversion)
3901 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
3902 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
3903 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
3904 case $gcc_basever in
3907 *) _depflags='-MMD -MF $(@:.o=.d) -MT $@' ;;
3909 if [ "$first" = true ]; then
3910 case $gcc_basever in
3912 warn "gcc 4.2 is outdated and may miscompile FFmpeg. Please use a newer compiler." ;;
3917 elif $_cc --version 2>/dev/null | grep -q ^icc; then
3919 _ident=$($_cc --version | head -n1)
3924 _flags_filter=icc_flags
3925 elif $_cc -v 2>&1 | grep -q xlc; then
3927 _ident=$($_cc -qversion 2>/dev/null | head -n1)
3929 _cflags_size='-O5 -qcompact'
3930 elif $_cc -V 2>/dev/null | grep -q Compaq; then
3932 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
3934 _cflags_speed='-fast'
3936 _flags_filter=ccc_flags
3937 elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then
3938 test -d "$sysroot" || die "No valid sysroot specified."
3940 _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //')
3941 armcc_conf="$PWD/armcc.conf"
3942 $_cc --arm_linux_configure \
3943 --arm_linux_config_file="$armcc_conf" \
3944 --configure_sysroot="$sysroot" \
3945 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
3946 die "Error creating armcc configuration file."
3947 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
3948 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
3949 as_default="${cross_prefix}gcc"
3953 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
3955 _ident=$($_cc -version | head -n1 | tr -s ' ')
3956 _flags='--gcc --abi=eabi -me'
3959 _depflags='-ppa -ppd=$(@:.o=.d)'
3960 _cflags_speed='-O3 -mf=5'
3961 _cflags_size='-O3 -mf=2'
3962 _flags_filter=tms470_flags
3963 elif $_cc -v 2>&1 | grep -q clang; then
3965 _ident=$($_cc --version 2>/dev/null | head -n1)
3966 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3969 elif $_cc -V 2>&1 | grep -q Sun; then
3971 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
3972 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
3973 _DEPFLAGS='-xM1 -xc99'
3976 _cflags_size='-O5 -xspace'
3977 _flags_filter=suncc_flags
3978 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
3980 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
3981 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3984 _flags_filter='filter_out -Wdisabled-optimization'
3985 elif $_cc -v 2>&1 | grep -q Open64; then
3987 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
3988 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
3991 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
3992 elif $_cc -V 2>&1 | grep -q Portland; then
3994 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
3995 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
3996 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
3997 _cflags_size="-O2 -Munroll=c:1 $opt_common"
3999 _flags_filter=pgi_flags
4000 elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then
4002 _ident=$($_cc | head -n1)
4003 # 4509: "This form of conditional instruction is deprecated"
4004 _flags="-nologo -ignore 4509"
4005 _flags_filter=armasm_flags
4006 elif $_cc 2>&1 | grep -q Intel; then
4008 _ident=$($_cc 2>&1 | head -n1)
4009 _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@'
4010 # Not only is O3 broken on 13.x+ but it is slower on all previous
4011 # versions (tested) as well.
4013 _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff
4014 if $_cc 2>&1 | grep -q Linker; then
4021 _flags_filter=icl_flags
4023 _ld_path='-libpath:'
4024 # -Qdiag-error to make icl error when seeing certain unknown arguments
4025 _flags='-nologo -Qdiag-error:4044,10157'
4026 # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency
4027 # with MSVC which enables it by default.
4028 _cflags='-D_USE_MATH_DEFINES -Qms0 -Qvec- -Qsimd- -GS -fp:precise'
4030 elif $_cc -nologo- 2>&1 | grep -q Microsoft; then
4032 _ident=$($_cc 2>&1 | head -n1)
4033 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
4034 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
4037 if $_cc -nologo- 2>&1 | grep -q Linker; then
4044 _flags_filter=msvc_flags
4046 _ld_path='-libpath:'
4048 _cflags='-D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS'
4050 elif $_cc --version 2>/dev/null | grep -q ^cparser; then
4052 _ident=$($_cc --version | head -n1)
4056 _flags_filter=cparser_flags
4059 eval ${pfx}_type=\$_type
4060 eval ${pfx}_ident=\$_ident
4064 eval ${1}_C=\${_cc_c-\${${1}_C}}
4065 eval ${1}_E=\${_cc_e-\${${1}_E}}
4066 eval ${1}_O=\${_cc_o-\${${1}_O}}
4068 if [ -n "$_depflags" ]; then
4069 eval ${1}_DEPFLAGS=\$_depflags
4071 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
4072 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
4073 eval DEP${1}FLAGS=\$_flags
4077 probe_cc cc "$cc" "true"
4078 cflags_filter=$_flags_filter
4079 cflags_speed=$_cflags_speed
4080 cflags_size=$_cflags_size
4081 cflags_noopt=$_cflags_noopt
4082 add_cflags $_flags $_cflags
4083 cc_ldflags=$_ldflags
4086 probe_cc hostcc "$host_cc"
4087 host_cflags_filter=$_flags_filter
4088 add_host_cflags $_flags $_cflags