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 --quiet Suppress showing informative output
67 --list-decoders show all available decoders
68 --list-encoders show all available encoders
69 --list-hwaccels show all available hardware accelerators
70 --list-demuxers show all available demuxers
71 --list-muxers show all available muxers
72 --list-parsers show all available parsers
73 --list-protocols show all available protocols
74 --list-bsfs show all available bitstream filters
75 --list-indevs show all available input devices
76 --list-outdevs show all available output devices
77 --list-filters show all available filters
80 --logfile=FILE log tests and output to FILE [ffbuild/config.log]
81 --disable-logging do not log configure debug information
82 --fatal-warnings fail if any configure warning is generated
83 --prefix=PREFIX install in PREFIX [$prefix_default]
84 --bindir=DIR install binaries in DIR [PREFIX/bin]
85 --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
86 --docdir=DIR install documentation in DIR [PREFIX/share/doc/ffmpeg]
87 --libdir=DIR install libs in DIR [PREFIX/lib]
88 --shlibdir=DIR install shared libs in DIR [LIBDIR]
89 --incdir=DIR install includes in DIR [PREFIX/include]
90 --mandir=DIR install man page in DIR [PREFIX/share/man]
91 --pkgconfigdir=DIR install pkg-config files in DIR [LIBDIR/pkgconfig]
92 --enable-rpath use rpath to allow installing libraries in paths
93 not part of the dynamic linker search path
94 use rpath when linking programs (USE WITH CARE)
95 --install-name-dir=DIR Darwin directory name for installed targets
98 --enable-gpl allow use of GPL code, the resulting libs
99 and binaries will be under GPL [no]
100 --enable-version3 upgrade (L)GPL to version 3 [no]
101 --enable-nonfree allow use of nonfree code, the resulting libs
102 and binaries will be unredistributable [no]
104 Configuration options:
105 --disable-static do not build static libraries [no]
106 --enable-shared build shared libraries [no]
107 --enable-small optimize for size instead of speed
108 --disable-runtime-cpudetect disable detecting CPU capabilities at runtime (smaller binary)
109 --enable-gray enable full grayscale support (slower color)
110 --disable-swscale-alpha disable alpha channel support in swscale
111 --disable-all disable building components, libraries and programs
112 --disable-autodetect disable automatically detected external libraries [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
120 Documentation options:
121 --disable-doc do not build documentation
122 --disable-htmlpages do not build HTML documentation pages
123 --disable-manpages do not build man documentation pages
124 --disable-podpages do not build POD documentation pages
125 --disable-txtpages do not build text documentation pages
128 --disable-avdevice disable libavdevice build
129 --disable-avcodec disable libavcodec build
130 --disable-avformat disable libavformat build
131 --disable-swresample disable libswresample build
132 --disable-swscale disable libswscale build
133 --disable-postproc disable libpostproc build
134 --disable-avfilter disable libavfilter build
135 --enable-avresample enable libavresample build (deprecated) [no]
136 --disable-pthreads disable pthreads [autodetect]
137 --disable-w32threads disable Win32 threads [autodetect]
138 --disable-os2threads disable OS/2 threads [autodetect]
139 --disable-network disable network support [no]
140 --disable-dct disable DCT code
141 --disable-dwt disable DWT code
142 --disable-error-resilience disable error resilience code
143 --disable-lsp disable LSP code
144 --disable-lzo disable LZO decoder code
145 --disable-mdct disable MDCT code
146 --disable-rdft disable RDFT code
147 --disable-fft disable FFT code
148 --disable-faan disable floating point AAN (I)DCT code
149 --disable-pixelutils disable pixel utils in libavutil
151 Individual component options:
152 --disable-everything disable all components listed below
153 --disable-encoder=NAME disable encoder NAME
154 --enable-encoder=NAME enable encoder NAME
155 --disable-encoders disable all encoders
156 --disable-decoder=NAME disable decoder NAME
157 --enable-decoder=NAME enable decoder NAME
158 --disable-decoders disable all decoders
159 --disable-hwaccel=NAME disable hwaccel NAME
160 --enable-hwaccel=NAME enable hwaccel NAME
161 --disable-hwaccels disable all hwaccels
162 --disable-muxer=NAME disable muxer NAME
163 --enable-muxer=NAME enable muxer NAME
164 --disable-muxers disable all muxers
165 --disable-demuxer=NAME disable demuxer NAME
166 --enable-demuxer=NAME enable demuxer NAME
167 --disable-demuxers disable all demuxers
168 --enable-parser=NAME enable parser NAME
169 --disable-parser=NAME disable parser NAME
170 --disable-parsers disable all parsers
171 --enable-bsf=NAME enable bitstream filter NAME
172 --disable-bsf=NAME disable bitstream filter NAME
173 --disable-bsfs disable all bitstream filters
174 --enable-protocol=NAME enable protocol NAME
175 --disable-protocol=NAME disable protocol NAME
176 --disable-protocols disable all protocols
177 --enable-indev=NAME enable input device NAME
178 --disable-indev=NAME disable input device NAME
179 --disable-indevs disable input devices
180 --enable-outdev=NAME enable output device NAME
181 --disable-outdev=NAME disable output device NAME
182 --disable-outdevs disable output devices
183 --disable-devices disable all devices
184 --enable-filter=NAME enable filter NAME
185 --disable-filter=NAME disable filter NAME
186 --disable-filters disable all filters
188 External library support:
190 Using any of the following switches will allow FFmpeg to link to the
191 corresponding external library. All the components depending on that library
192 will become enabled, if all their other dependencies are met and they are not
193 explicitly disabled. E.g. --enable-libwavpack will enable linking to
194 libwavpack and allow the libwavpack encoder to be built, unless it is
195 specifically disabled with --disable-encoder=libwavpack.
197 Note that only the system libraries are auto-detected. All the other external
198 libraries must be explicitly enabled.
200 Also note that the following help text describes the purpose of the libraries
201 themselves, not all their features will necessarily be usable by FFmpeg.
203 --disable-alsa disable ALSA support [autodetect]
204 --disable-appkit disable Apple AppKit framework [autodetect]
205 --disable-avfoundation disable Apple AVFoundation framework [autodetect]
206 --enable-avisynth enable reading of AviSynth script files [no]
207 --disable-bzlib disable bzlib [autodetect]
208 --disable-coreimage disable Apple CoreImage framework [autodetect]
209 --enable-chromaprint enable audio fingerprinting with chromaprint [no]
210 --enable-frei0r enable frei0r video filtering [no]
211 --enable-gcrypt enable gcrypt, needed for rtmp(t)e support
212 if openssl, librtmp or gmp is not used [no]
213 --enable-gmp enable gmp, needed for rtmp(t)e support
214 if openssl or librtmp is not used [no]
215 --enable-gnutls enable gnutls, needed for https support
216 if openssl or libtls is not used [no]
217 --disable-iconv disable iconv [autodetect]
218 --enable-jni enable JNI support [no]
219 --enable-ladspa enable LADSPA audio filtering [no]
220 --enable-libass enable libass subtitles rendering,
221 needed for subtitles and ass filter [no]
222 --enable-libbluray enable BluRay reading using libbluray [no]
223 --enable-libbs2b enable bs2b DSP library [no]
224 --enable-libcaca enable textual display using libcaca [no]
225 --enable-libcelt enable CELT decoding via libcelt [no]
226 --enable-libcdio enable audio CD grabbing with libcdio [no]
227 --enable-libcodec2 enable codec2 en/decoding using libcodec2 [no]
228 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
230 --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
231 --enable-libflite enable flite (voice synthesis) support via libflite [no]
232 --enable-libfontconfig enable libfontconfig, useful for drawtext filter [no]
233 --enable-libfreetype enable libfreetype, needed for drawtext filter [no]
234 --enable-libfribidi enable libfribidi, improves drawtext filter [no]
235 --enable-libgme enable Game Music Emu via libgme [no]
236 --enable-libgsm enable GSM de/encoding via libgsm [no]
237 --enable-libiec61883 enable iec61883 via libiec61883 [no]
238 --enable-libilbc enable iLBC de/encoding via libilbc [no]
239 --enable-libjack enable JACK audio sound server [no]
240 --enable-libkvazaar enable HEVC encoding via libkvazaar [no]
241 --enable-libmodplug enable ModPlug via libmodplug [no]
242 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
243 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
244 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
245 --enable-libopencv enable video filtering via libopencv [no]
246 --enable-libopenh264 enable H.264 encoding via OpenH264 [no]
247 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
248 --enable-libopenmpt enable decoding tracked files via libopenmpt [no]
249 --enable-libopus enable Opus de/encoding via libopus [no]
250 --enable-libpulse enable Pulseaudio input via libpulse [no]
251 --enable-librsvg enable SVG rasterization via librsvg [no]
252 --enable-librubberband enable rubberband needed for rubberband filter [no]
253 --enable-librtmp enable RTMP[E] support via librtmp [no]
254 --enable-libshine enable fixed-point MP3 encoding via libshine [no]
255 --enable-libsmbclient enable Samba protocol via libsmbclient [no]
256 --enable-libsnappy enable Snappy compression, needed for hap encoding [no]
257 --enable-libsoxr enable Include libsoxr resampling [no]
258 --enable-libspeex enable Speex de/encoding via libspeex [no]
259 --enable-libssh enable SFTP protocol via libssh [no]
260 --enable-libtesseract enable Tesseract, needed for ocr filter [no]
261 --enable-libtheora enable Theora encoding via libtheora [no]
262 --enable-libtls enable LibreSSL (via libtls), needed for https support
263 if openssl or gnutls is not used [no]
264 --enable-libtwolame enable MP2 encoding via libtwolame [no]
265 --enable-libv4l2 enable libv4l2/v4l-utils [no]
266 --enable-libvidstab enable video stabilization using vid.stab [no]
267 --enable-libvmaf enable vmaf filter via libvmaf [no]
268 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
269 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
270 native implementation exists [no]
271 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
272 --enable-libwavpack enable wavpack encoding via libwavpack [no]
273 --enable-libwebp enable WebP encoding via libwebp [no]
274 --enable-libx264 enable H.264 encoding via x264 [no]
275 --enable-libx265 enable HEVC encoding via x265 [no]
276 --enable-libxavs enable AVS encoding via xavs [no]
277 --enable-libxcb enable X11 grabbing using XCB [autodetect]
278 --enable-libxcb-shm enable X11 grabbing shm communication [autodetect]
279 --enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect]
280 --enable-libxcb-shape enable X11 grabbing shape rendering [autodetect]
281 --enable-libxvid enable Xvid encoding via xvidcore,
282 native MPEG-4/Xvid encoder exists [no]
283 --enable-libxml2 enable XML parsing using the C library libxml2 [no]
284 --enable-libzimg enable z.lib, needed for zscale filter [no]
285 --enable-libzmq enable message passing via libzmq [no]
286 --enable-libzvbi enable teletext support via libzvbi [no]
287 --enable-lv2 enable LV2 audio filtering [no]
288 --disable-lzma disable lzma [autodetect]
289 --enable-decklink enable Blackmagic DeckLink I/O support [no]
290 --enable-libndi_newtek enable Newteck NDI I/O support [no]
291 --enable-mediacodec enable Android MediaCodec support [no]
292 --enable-libmysofa enable libmysofa, needed for sofalizer filter [no]
293 --enable-openal enable OpenAL 1.1 capture support [no]
294 --enable-opencl enable OpenCL processing [no]
295 --enable-opengl enable OpenGL rendering [no]
296 --enable-openssl enable openssl, needed for https support
297 if gnutls or libtls is not used [no]
298 --disable-sndio disable sndio support [autodetect]
299 --disable-schannel disable SChannel SSP, needed for TLS support on
300 Windows if openssl and gnutls are not used [autodetect]
301 --disable-sdl2 disable sdl2 [autodetect]
302 --disable-securetransport disable Secure Transport, needed for TLS support
303 on OSX if openssl and gnutls are not used [autodetect]
304 --disable-xlib disable xlib [autodetect]
305 --disable-zlib disable zlib [autodetect]
307 The following libraries provide various hardware acceleration features:
308 --disable-amf disable AMF video encoding code [autodetect]
309 --disable-audiotoolbox disable Apple AudioToolbox code [autodetect]
310 --enable-cuda-sdk enable CUDA features that require the CUDA SDK [no]
311 --disable-cuvid disable Nvidia CUVID support [autodetect]
312 --disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect]
313 --disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect]
314 --disable-ffnvcodec disable dynamically linked Nvidia code [autodetect]
315 --enable-libdrm enable DRM code (Linux) [no]
316 --enable-libmfx enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
317 --enable-libnpp enable Nvidia Performance Primitives-based code [no]
318 --enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
319 --disable-nvdec disable Nvidia video decoding acceleration (via hwaccel) [autodetect]
320 --disable-nvenc disable Nvidia video encoding code [autodetect]
321 --enable-omx enable OpenMAX IL code [no]
322 --enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no]
323 --enable-rkmpp enable Rockchip Media Process Platform code [no]
324 --disable-v4l2-m2m disable V4L2 mem2mem code [autodetect]
325 --disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
326 --disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
327 --disable-videotoolbox disable VideoToolbox code [autodetect]
330 --arch=ARCH select architecture [$arch]
331 --cpu=CPU select the minimum required CPU (affects
332 instruction selection, may crash on older CPUs)
333 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
334 --progs-suffix=SUFFIX program name suffix []
335 --enable-cross-compile assume a cross-compiler is used
336 --sysroot=PATH root of cross-build tree
337 --sysinclude=PATH location of cross-build system headers
338 --target-os=OS compiler targets OS [$target_os]
339 --target-exec=CMD command to run executables on target
340 --target-path=DIR path to view of build directory on target
341 --target-samples=DIR path to samples directory on target
342 --tempprefix=PATH force fixed dir/prefix instead of mktemp for checks
343 --toolchain=NAME set tool defaults according to NAME
344 --nm=NM use nm tool NM [$nm_default]
345 --ar=AR use archive tool AR [$ar_default]
346 --as=AS use assembler AS [$as_default]
347 --ln_s=LN_S use symbolic link tool LN_S [$ln_s_default]
348 --strip=STRIP use strip tool STRIP [$strip_default]
349 --windres=WINDRES use windows resource compiler WINDRES [$windres_default]
350 --x86asmexe=EXE use nasm-compatible assembler EXE [$x86asmexe_default]
351 --cc=CC use C compiler CC [$cc_default]
352 --cxx=CXX use C compiler CXX [$cxx_default]
353 --objcc=OCC use ObjC compiler OCC [$cc_default]
354 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
355 --nvcc=NVCC use Nvidia CUDA compiler NVCC [$nvcc_default]
356 --ld=LD use linker LD [$ld_default]
357 --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default]
358 --pkg-config-flags=FLAGS pass additional flags to pkgconf []
359 --ranlib=RANLIB use ranlib RANLIB [$ranlib_default]
360 --doxygen=DOXYGEN use DOXYGEN to generate API doc [$doxygen_default]
361 --host-cc=HOSTCC use host C compiler HOSTCC
362 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
363 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
364 --host-ld=HOSTLD use host linker HOSTLD
365 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
366 --host-libs=HLIBS use libs HLIBS when linking for host
367 --host-os=OS compiler host OS [$target_os]
368 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
369 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
370 --extra-objcflags=FLAGS add FLAGS to OBJCFLAGS [$CFLAGS]
371 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
372 --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
373 --extra-ldsoflags=ELDFLAGS add ELDFLAGS to LDSOFLAGS [$LDSOFLAGS]
374 --extra-libs=ELIBS add ELIBS [$ELIBS]
375 --extra-version=STRING version string suffix []
376 --optflags=OPTFLAGS override optimization-related compiler flags
377 --nvccflags=NVCCFLAGS override nvcc flags [$nvccflags_default]
378 --build-suffix=SUFFIX library name suffix []
379 --enable-pic build position-independent code
380 --enable-thumb compile for Thumb instruction set
381 --enable-lto use link-time optimization
382 --env="ENV=override" override the environment variables
384 Advanced options (experts only):
385 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
386 --custom-allocator=NAME use a supported custom allocator
387 --disable-symver disable symbol versioning
388 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
389 --disable-safe-bitstream-reader
390 disable buffer boundary checking in bitreaders
391 (faster, but may crash)
392 --sws-max-filter-size=N the max filter size swscale uses [$sws_max_filter_size_default]
394 Optimization options (experts only):
395 --disable-asm disable all assembly optimizations
396 --disable-altivec disable AltiVec optimizations
397 --disable-vsx disable VSX optimizations
398 --disable-power8 disable POWER8 optimizations
399 --disable-amd3dnow disable 3DNow! optimizations
400 --disable-amd3dnowext disable 3DNow! extended optimizations
401 --disable-mmx disable MMX optimizations
402 --disable-mmxext disable MMXEXT optimizations
403 --disable-sse disable SSE optimizations
404 --disable-sse2 disable SSE2 optimizations
405 --disable-sse3 disable SSE3 optimizations
406 --disable-ssse3 disable SSSE3 optimizations
407 --disable-sse4 disable SSE4 optimizations
408 --disable-sse42 disable SSE4.2 optimizations
409 --disable-avx disable AVX optimizations
410 --disable-xop disable XOP optimizations
411 --disable-fma3 disable FMA3 optimizations
412 --disable-fma4 disable FMA4 optimizations
413 --disable-avx2 disable AVX2 optimizations
414 --disable-avx512 disable AVX-512 optimizations
415 --disable-aesni disable AESNI optimizations
416 --disable-armv5te disable armv5te optimizations
417 --disable-armv6 disable armv6 optimizations
418 --disable-armv6t2 disable armv6t2 optimizations
419 --disable-vfp disable VFP optimizations
420 --disable-neon disable NEON optimizations
421 --disable-inline-asm disable use of inline assembly
422 --disable-x86asm disable use of standalone x86 assembly
423 --disable-mipsdsp disable MIPS DSP ASE R1 optimizations
424 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
425 --disable-msa disable MSA optimizations
426 --disable-mipsfpu disable floating point MIPS optimizations
427 --disable-mmi disable Loongson SIMD optimizations
428 --disable-fast-unaligned consider unaligned accesses slow
430 Developer options (useful when working on FFmpeg itself):
431 --disable-debug disable debugging symbols
432 --enable-debug=LEVEL set the debug level [$debuglevel]
433 --disable-optimizations disable compiler optimizations
434 --enable-extra-warnings enable more compiler warnings
435 --disable-stripping disable stripping of executables and shared libraries
436 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
437 2 causes a slowdown at runtime.
438 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
439 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
440 leaks and errors, using the specified valgrind binary.
441 Cannot be combined with --target-exec
442 --enable-ftrapv Trap arithmetic overflows
443 --samples=PATH location of test samples for FATE, if not set use
444 \$FATE_SAMPLES at make invocation time.
445 --enable-neon-clobber-test check NEON registers for clobbering (should be
446 used only for debugging purposes)
447 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
448 should be used only for debugging purposes)
449 --enable-random randomly enable/disable components
451 --enable-random=LIST randomly enable/disable specific components or
452 --disable-random=LIST component groups. LIST is a comma-separated list
453 of NAME[:PROB] entries where NAME is a component
454 (group) and PROB the probability associated with
456 --random-seed=VALUE seed value for --enable/disable-random
457 --disable-valgrind-backtrace do not print a backtrace under Valgrind
458 (only applies to --disable-optimizations builds)
459 --enable-osfuzz Enable building fuzzer tool
460 --libfuzzer=PATH path to libfuzzer
461 --ignore-tests=TESTS comma-separated list (without "fate-" prefix
462 in the name) of tests whose result is ignored
463 --enable-linux-perf enable Linux Performance Monitor API
465 NOTE: Object files are built at the place where configure is launched.
470 if test -t 1 && which tput >/dev/null 2>&1; then
471 ncolors=$(tput colors)
472 if test -n "$ncolors" && test $ncolors -ge 8; then
473 bold_color=$(tput bold)
474 warn_color=$(tput setaf 3)
475 error_color=$(tput setaf 1)
476 reset_color=$(tput sgr0)
478 # 72 used instead of 80 since that's the default of pr
484 echo "$@" >> $logfile
489 pr -n -t $1 >> $logfile
495 WARNINGS="${WARNINGS}WARNING: $*\n"
500 echo "$error_color$bold_color$@$reset_color"
503 If you think configure made a mistake, make sure you are using the latest
504 version from Git. If the latest version fails, report the problem to the
505 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
507 if disabled logging; then
509 Rerun configure with logging enabled (do not use --disable-logging), and
510 include the log this produces with your report.
514 Include the log file "$logfile" produced by configure as this will help
521 # Avoid locale weirdness, besides we really just want to translate ASCII.
523 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
527 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
531 echo "$*" | sed 's/["\\]/\\\0/g'
535 v=$(echo "$1" | sed "s/'/'\\\\''/g")
536 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
541 echo "$@" | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//'
548 eval "case '$v' in $pat) printf '%s ' '$v' ;; esac"
556 eval "case '$v' in $pat) ;; *) printf '%s ' '$v' ;; esac"
563 for v; do eval $m; done
569 for v; do echo ${v}${suffix}; done
575 for v; do echo ${v%$suffix}; done
590 eval : \${$var:=$value}
595 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
601 eval $(sanitize_var_name "$var")='$*'
605 eval echo \$$(sanitize_var_name "$1")
610 eval level=\${${pvar}_level:=0}
611 eval ${pvar}_${level}="\$$pvar"
612 eval ${pvar}_level=$(($level+1))
618 eval level=\${${pvar}_level:-0}
619 test $level = 0 && continue
620 eval level=$(($level-1))
621 eval $pvar="\${${pvar}_${level}}"
622 eval ${pvar}_level=$level
623 eval unset ${pvar}_${level}
629 eval ${var}_requested=yes
652 enable $(sanitize_var_name $var)
658 disable $(sanitize_var_name $var)
664 enabled $var && continue
665 eval sel="\$${var}_select"
666 eval sgs="\$${var}_suggest"
670 enable_deep_weak $sgs
682 disabled $var && continue
691 test "${1#!}" = "$1" && op="=" || op="!="
692 eval test "x\$${1#!}_requested" $op "xyes"
696 test "${1#!}" = "$1" && op="=" || op="!="
697 eval test "x\$${1#!}" $op "xyes"
701 test "${1#!}" = "$1" && op="=" || op="!="
702 eval test "x\$${1#!}" $op "xno"
707 enabled $opt || return 1
713 disabled $opt || return 1
719 enabled $opt && return 0
725 disabled $opt && return 0
732 eval : \${$opt:=\$${opt}_default}
740 [ $var = $value ] && return 0
747 enabled ${cfg}_checking && die "Circular dependency for $cfg."
748 disabled ${cfg}_checking && continue
749 enable ${cfg}_checking
751 eval dep_all="\$${cfg}_deps"
752 eval dep_any="\$${cfg}_deps_any"
753 eval dep_con="\$${cfg}_conflict"
754 eval dep_sel="\$${cfg}_select"
755 eval dep_sgs="\$${cfg}_suggest"
756 eval dep_ifa="\$${cfg}_if"
757 eval dep_ifn="\$${cfg}_if_any"
759 pushvar cfg dep_all dep_any dep_con dep_sel dep_sgs dep_ifa dep_ifn
760 check_deps $dep_all $dep_any $dep_con $dep_sel $dep_sgs $dep_ifa $dep_ifn
761 popvar cfg dep_all dep_any dep_con dep_sel dep_sgs dep_ifa dep_ifn
763 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
764 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
765 enabled_all $dep_all || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but not all dependencies are satisfied: $dep_all"; }
766 enabled_any $dep_any || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but not any dependency is satisfied: $dep_any"; }
767 disabled_all $dep_con || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but some conflicting dependencies are unsatisfied: $dep_con"; }
768 disabled_any $dep_sel && { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but some selected dependency is unsatisfied: $dep_sel"; }
770 enabled $cfg && enable_deep_weak $dep_sel $dep_sgs
772 for dep in $dep_all $dep_any $dep_sel $dep_sgs; do
773 # filter out library deps, these do not belong in extralibs
774 is_in $dep $LIBRARY_LIST && continue
775 enabled $dep && eval append ${cfg}_extralibs ${dep}_extralibs
778 disable ${cfg}_checking
786 map 'eval echo "$v \${$v:-no}"' "$@" |
787 awk "BEGIN { split(\"$files\", files) }
789 c = \"$pfx\" toupper(\$1);
795 if (file ~ /\\.h\$/) {
796 printf(\"#define %s %d\\n\", c, v) >>file;
797 } else if (file ~ /\\.asm\$/) {
798 printf(\"%%define %s %d\\n\", c, v) >>file;
799 } else if (file ~ /\\.mak\$/) {
800 n = -v ? \"\" : \"!\";
801 printf(\"%s%s=yes\\n\", n, c) >>file;
802 } else if (file ~ /\\.texi\$/) {
803 pre = -v ? \"\" : \"@c \";
806 gsub(/_/, \"-\", c2);
807 printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
817 enabled $v && printf "%s\n" ${v%$suf}
824 eval "$var=\"\$$var $*\""
830 eval "$var=\"$* \$$var\""
836 for tok in $(eval echo \$$var); do
837 uniq_list="$(filter_out $tok $uniq_list) $tok"
839 eval "$var=\"${uniq_list}\""
845 for entry in $(eval echo \$$var); do
846 tmpvar="$tmpvar $(eval echo \$${entry})"
848 eval "$var=\"${tmpvar}\""
856 append CFLAGS $($cflags_filter "$@")
859 add_cflags_headers(){
860 append CFLAGS_HEADERS $($cflags_filter "$@")
864 append CXXFLAGS $($cflags_filter "$@")
868 append ASFLAGS $($asflags_filter "$@")
872 append OBJCFLAGS $($objcflags_filter "$@")
876 append LDFLAGS $($ldflags_filter "$@")
880 append LDEXEFLAGS $($ldflags_filter "$@")
884 append LDSOFLAGS $($ldflags_filter "$@")
888 append ASMSTRIPFLAGS "$@"
892 prepend extralibs $($ldflags_filter "$@")
896 append host_cppflags "$@"
900 append host_cflags $($host_cflags_filter "$@")
904 append host_ldflags $($host_ldflags_filter "$@")
908 append compat_objs $1
910 map 'add_cppflags -D$v' "$@"
915 "$@" >> $logfile 2>&1
920 stat "$1" >> $logfile 2>&1
924 eval printf '%s\\n' $CC_O
928 eval printf '%s\\n' $CC_E
935 test_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
942 test_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
949 test_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
956 test_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
960 eval printf '%s\\n' $AS_O
967 test_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
973 disabled $cmd && return
975 test_cmd $@ && enable $cmd
979 log check_inline_asm "$@"
984 test_cc "$@" <<EOF && enable $name
985 void foo(void){ __asm__ volatile($code); }
989 check_inline_asm_flags(){
990 log check_inline_asm_flags "$@"
995 while [ "$1" != "" ]; do
1001 void foo(void){ __asm__ volatile($code); }
1004 test_cmd $cc $CPPFLAGS $CFLAGS $flags "$@" $CC_C $(cc_o $TMPO) $TMPC &&
1005 enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags
1010 check_inline_asm ${1}_inline "$2"
1011 echo "$2" | test_as && enable ${1}_external || disable ${1}_external
1015 log test_x86asm "$@"
1019 test_cmd $x86asmexe $X86ASMFLAGS -Werror "$@" -o $TMPO $TMPS
1023 eval printf '%s\\n' $LD_O
1030 flags=$(filter_out '-l*|*.so' $@)
1031 libs=$(filter '-l*|*.so' $@)
1032 test_$type $($cflags_filter $flags) || return
1033 flags=$($ldflags_filter $flags)
1034 libs=$($ldflags_filter $libs)
1035 test_cmd $ld $LDFLAGS $LDEXEFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
1040 test "${hdr%.h}" = "${hdr}" &&
1041 echo "#include $hdr" ||
1042 echo "#include <$hdr>"
1052 for hdr in $headers; do
1055 echo "int main(void) { $code; return 0; }"
1056 } | test_$check "$@"
1060 log check_cppflags "$@"
1061 test_cpp "$@" <<EOF && append CPPFLAGS "$@"
1067 log test_cflags "$@"
1068 set -- $($cflags_filter "$@")
1075 log check_cflags "$@"
1076 test_cflags "$@" && add_cflags "$@"
1080 log check_cxxflags "$@"
1081 set -- $($cflags_filter "$@")
1082 test_cxx "$@" <<EOF && append CXXFLAGS "$@"
1088 log test_objcflags "$@"
1089 set -- $($objcflags_filter "$@")
1090 test_objcc "$@" <<EOF
1096 log check_objcflags "$@"
1097 test_objcflags "$@" && add_objcflags "$@"
1101 log test_ldflags "$@"
1102 set -- $($ldflags_filter "$@")
1103 test_ld "cc" "$@" <<EOF
1104 int main(void){ return 0; }
1109 log check_ldflags "$@"
1110 test_ldflags "$@" && add_ldflags "$@"
1114 log test_stripflags "$@"
1115 # call test_cc to get a fresh TMPO
1117 int main(void) { return 0; }
1119 test_cmd $strip $ASMSTRIPFLAGS "$@" $TMPO
1123 log check_stripflags "$@"
1124 test_stripflags "$@" && add_stripflags "$@"
1128 log check_header "$@"
1131 disable_sanitized $headers
1133 for hdr in $headers; do
1137 } | test_cpp "$@" && enable_sanitized $headers
1140 check_header_objcc(){
1141 log check_header_objcc "$@"
1145 disable_sanitized $header
1147 echo "#include <$header>"
1148 echo "int main(void) { return 0; }"
1149 } | test_objcc && test_stat "$TMPO" && enable_sanitized $header
1152 check_apple_framework(){
1153 log check_apple_framework "$@"
1155 name="$(tolower $framework)"
1156 header="${framework}/${framework}.h"
1158 check_header_objcc $header &&
1159 enable $name && eval ${name}_extralibs='"-framework $framework"'
1167 test_ld "cc" "$@" <<EOF && enable $func
1169 int main(void){ $func(); }
1173 check_complexfunc(){
1174 log check_complexfunc "$@"
1178 test $narg = 2 && args="f, g" || args="f * I"
1180 test_ld "cc" "$@" <<EOF && enable $func
1181 #include <complex.h>
1183 float foo(complex float f, complex float g) { return $func($args); }
1184 int main(void){ return (int) foo; }
1189 log check_mathfunc "$@"
1193 test $narg = 2 && args="f, g" || args="f"
1195 test_ld "cc" "$@" <<EOF && enable $func
1197 float foo(float f, float g) { return $func($args); }
1198 int main(void){ return (int) foo; }
1202 check_func_headers(){
1203 log check_func_headers "$@"
1208 for hdr in $headers; do
1211 echo "#include <stdint.h>"
1212 for func in $funcs; do
1213 echo "long check_$func(void) { return (long) $func; }"
1215 echo "int main(void) { int ret = 0;"
1216 # LTO could optimize out the test functions without this
1217 for func in $funcs; do
1218 echo " ret |= ((intptr_t)check_$func) & 0xFFFF;"
1220 echo "return ret; }"
1221 } | test_ld "cc" "$@" && enable $funcs && enable_sanitized $headers
1224 check_class_headers_cpp(){
1225 log check_class_headers_cpp "$@"
1230 for hdr in $headers; do
1231 echo "#include <$hdr>"
1233 echo "int main(void) { "
1235 for class in $classes; do
1236 echo "$class obj$i;"
1240 } | test_ld "cxx" "$@" && enable $funcs && enable_sanitized $headers
1243 test_cpp_condition(){
1244 log test_cpp_condition "$@"
1251 #error "unsatisfied condition: $condition"
1256 check_cpp_condition(){
1257 log check_cpp_condition "$@"
1261 test_cpp_condition "$@" && enable $name
1265 log test_cflags_cc "$@"
1270 set -- $($cflags_filter "$flags")
1274 #error "unsatisfied condition: $condition"
1286 check_func_headers "$headers" "$funcs" "$@" &&
1287 enable $name && eval ${name}_extralibs="\$@"
1291 log check_lib_cpp "$@"
1297 check_class_headers_cpp "$headers" "$classes" "$@" &&
1298 enable $name && eval ${name}_extralibs="\$@"
1302 log test_pkg_config "$@"
1310 test_cmd $pkg_config --exists --print-errors $pkg_version || return
1311 pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
1312 pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
1313 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
1315 set_sanitized "${name}_cflags" $pkg_cflags &&
1316 set_sanitized "${name}_extralibs" $pkg_libs
1320 log check_pkg_config "$@"
1322 test_pkg_config "$@" &&
1323 eval add_cflags \$${name}_cflags
1327 test_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
1331 log check_exec_crash "$@"
1334 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1335 # are safe but may not be available everywhere. Thus we use
1336 # raise(SIGTERM) instead. The check is run in a subshell so we
1337 # can redirect the "Terminated" message from the shell. SIGBUS
1338 # is not defined by standard C so it is used conditionally.
1340 (test_exec "$@") >> $logfile 2>&1 <<EOF
1342 static void sighandler(int sig){
1348 int (*func_ptr)(void) = foo;
1350 signal(SIGILL, sighandler);
1351 signal(SIGFPE, sighandler);
1352 signal(SIGSEGV, sighandler);
1354 signal(SIGBUS, sighandler);
1366 disable_sanitized "$type"
1367 test_code cc "$headers" "$type v" "$@" && enable_sanitized "$type"
1371 log check_struct "$@"
1376 disable_sanitized "${struct}_${member}"
1377 test_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1378 enable_sanitized "${struct}_${member}"
1382 log check_builtin "$@"
1388 test_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1391 check_compile_assert(){
1392 log check_compile_assert "$@"
1398 test_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
1406 test_code cc "$@" && enable "$name"
1414 check_lib $name "$@" || die "ERROR: $name_version not found"
1421 test_code cc "$@" || die "ERROR: $name failed"
1429 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1433 log require_header "$@"
1435 check_header "$@" || die "ERROR: $headers not found"
1438 require_cpp_condition(){
1439 log require_cpp_condition "$@"
1441 test_cpp_condition "$@" || die "ERROR: $condition not satisfied"
1444 require_pkg_config(){
1445 log require_pkg_config "$@"
1447 check_pkg_config "$@" || die "ERROR: $pkg_version not found using pkg-config$pkg_config_fail_message"
1451 eval printf '%s\\n' $HOSTCC_E
1455 eval printf '%s\\n' $HOSTCC_O
1459 log test_host_cc "$@"
1462 test_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1466 log test_host_cpp "$@"
1469 test_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC
1472 check_host_cppflags(){
1473 log check_host_cppflags "$@"
1474 test_host_cpp "$@" <<EOF && append host_cppflags "$@"
1479 check_host_cflags(){
1480 log check_host_cflags "$@"
1481 set -- $($host_cflags_filter "$@")
1482 test_host_cc "$@" <<EOF && append host_cflags "$@"
1487 test_host_cpp_condition(){
1488 log test_host_cpp_condition "$@"
1492 test_host_cpp "$@" <<EOF
1495 #error "unsatisfied condition: $condition"
1500 check_host_cpp_condition(){
1501 log check_host_cpp_condition "$@"
1505 test_host_cpp_condition "$@" && enable $name
1509 cmp -s "$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return
1510 mkdir -p "$(dirname $2)"
1514 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1515 # system-dependent things.
1517 AVCODEC_COMPONENTS="
1525 AVDEVICE_COMPONENTS="
1530 AVFILTER_COMPONENTS="
1534 AVFORMAT_COMPONENTS="
1542 $AVDEVICE_COMPONENTS
1543 $AVFILTER_COMPONENTS
1544 $AVFORMAT_COMPONENTS
1548 avio_dir_cmd_example
1549 avio_reading_example
1550 decode_audio_example
1551 decode_video_example
1552 demuxing_decoding_example
1553 encode_audio_example
1554 encode_video_example
1556 filter_audio_example
1557 filtering_audio_example
1558 filtering_video_example
1559 http_multiclient_example
1565 resampling_audio_example
1566 scaling_video_example
1567 transcode_aac_example
1569 vaapi_encode_example
1570 vaapi_transcode_example
1573 EXTERNAL_AUTODETECT_LIBRARY_LIST="
1593 EXTERNAL_LIBRARY_GPL_LIST="
1605 EXTERNAL_LIBRARY_NONFREE_LIST="
1613 EXTERNAL_LIBRARY_VERSION3_LIST="
1622 EXTERNAL_LIBRARY_GPLV3_LIST="
1626 EXTERNAL_LIBRARY_LIST="
1627 $EXTERNAL_LIBRARY_GPL_LIST
1628 $EXTERNAL_LIBRARY_NONFREE_LIST
1629 $EXTERNAL_LIBRARY_VERSION3_LIST
1630 $EXTERNAL_LIBRARY_GPLV3_LIST
1689 HWACCEL_AUTODETECT_LIBRARY_LIST="
1707 # catchall list of things that require external libs to link
1713 HWACCEL_LIBRARY_NONFREE_LIST="
1718 HWACCEL_LIBRARY_LIST="
1719 $HWACCEL_LIBRARY_NONFREE_LIST
1740 safe_bitstream_reader
1786 # COMPONENT_LIST needs to come last to ensure correct dependency checking
1790 $EXTERNAL_LIBRARY_LIST
1791 $EXTERNAL_AUTODETECT_LIBRARY_LIST
1792 $HWACCEL_LIBRARY_LIST
1793 $HWACCEL_AUTODETECT_LIBRARY_LIST
1825 $EXTERNAL_AUTODETECT_LIBRARY_LIST
1826 $HWACCEL_AUTODETECT_LIBRARY_LIST
1868 ARCH_EXT_LIST_MIPS="
1880 ARCH_EXT_LIST_LOONGSON="
1886 ARCH_EXT_LIST_X86_SIMD="
1916 $ARCH_EXT_LIST_X86_SIMD
1926 $ARCH_EXT_LIST_LOONGSON
1947 sync_val_compare_and_swap
1964 cdio_paranoia_paranoia_h
1967 dev_bktr_ioctl_bt848_h
1968 dev_bktr_ioctl_meteor_h
1970 dev_video_bktr_ioctl_bt848_h
1971 dev_video_meteor_ioctl_meteor_h
1979 machine_ioctl_bt848_h
1980 machine_ioctl_meteor_h
1982 opencv2_core_core_c_h
2044 MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
2062 GetProcessAffinityMask
2063 GetProcessMemoryInfo
2066 GetSystemTimeAsFileTime
2089 SetConsoleTextAttribute
2090 SetConsoleCtrlHandler
2098 UTGetOSTypeFromString
2110 TOOLCHAIN_FEATURES="
2122 inline_asm_direct_symbol_refs
2124 inline_asm_nonlocal_labels
2135 kCMVideoCodecType_HEVC
2138 struct_group_source_req
2139 struct_ip_mreq_source
2141 struct_msghdr_msg_flags
2143 struct_rusage_ru_maxrss
2144 struct_sctp_event_subscribe
2146 struct_sockaddr_sa_len
2147 struct_sockaddr_storage
2148 struct_stat_st_mtim_tv_nsec
2149 struct_v4l2_frmivalenum_discrete
2154 $(add_suffix _external $ARCH_EXT_LIST)
2155 $(add_suffix _inline $ARCH_EXT_LIST)
2176 opencl_vaapi_beignet
2177 opencl_vaapi_intel_media
2183 # options emitted with CONFIG_ prefix but not available on the command line
2205 frame_thread_encoder
2361 # code dependency declarations
2363 # architecture extensions
2368 armv8_deps="aarch64"
2369 neon_deps_any="aarch64 arm"
2370 intrinsics_neon_deps="neon"
2371 vfp_deps_any="aarch64 arm"
2375 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
2384 loongson2_deps="mips"
2385 loongson3_deps="mips"
2386 mips32r2_deps="mips"
2387 mips32r5_deps="mips"
2388 mips32r6_deps="mips"
2389 mips64r2_deps="mips"
2390 mips64r6_deps="mips"
2393 mipsdspr2_deps="mips"
2398 x86_64_select="i686"
2399 x86_64_suggest="fast_cmov"
2402 amd3dnowext_deps="amd3dnow"
2420 mmx_external_deps="x86asm"
2421 mmx_inline_deps="inline_asm x86"
2422 mmx_suggest="mmx_external mmx_inline"
2424 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do
2425 eval dep=\$${ext}_deps
2426 eval ${ext}_external_deps='"${dep}_external"'
2427 eval ${ext}_inline_deps='"${dep}_inline"'
2428 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
2431 aligned_stack_if_any="aarch64 ppc x86"
2432 fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
2433 fast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
2434 fast_unaligned_if_any="aarch64 ppc x86"
2435 simd_align_16_if_any="altivec neon sse"
2436 simd_align_32_if_any="avx"
2437 simd_align_64_if_any="avx512"
2439 # system capabilities
2440 symver_if_any="symver_asm_label symver_gnu_asm"
2441 valgrind_backtrace_conflict="optimizations"
2442 valgrind_backtrace_deps="valgrind_valgrind_h"
2445 atomics_gcc_if="sync_val_compare_and_swap"
2446 atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
2447 atomics_win32_if="MemoryBarrier"
2448 atomics_native_if_any="$ATOMICS_LIST"
2449 w32threads_deps="atomics_native"
2450 threads_if_any="$THREADS_LIST"
2453 cbs_h264_select="cbs golomb"
2454 cbs_h265_select="cbs golomb"
2455 cbs_mpeg2_select="cbs"
2457 dirac_parse_select="golomb"
2458 error_resilience_select="me_cmp"
2460 faandct_select="fdctdsp"
2461 faanidct_deps="faan"
2462 faanidct_select="idctdsp"
2463 h264dsp_select="startcode"
2464 hevcparse_select="golomb"
2465 frame_thread_encoder_deps="encoders threads"
2466 intrax8_select="blockdsp idctdsp"
2469 me_cmp_select="fdctdsp idctdsp pixblockdsp"
2470 mpeg_er_select="error_resilience"
2471 mpegaudio_select="mpegaudiodsp mpegaudioheader"
2472 mpegaudiodsp_select="dct"
2473 mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp"
2474 mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp"
2475 vc1dsp_select="h264chroma qpeldsp startcode"
2478 # decoders / encoders
2479 aac_decoder_select="adts_header mdct15 mdct sinewin"
2480 aac_fixed_decoder_select="adts_header mdct sinewin"
2481 aac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin"
2482 aac_latm_decoder_select="aac_decoder aac_latm_parser"
2483 ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct"
2484 ac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct"
2485 ac3_encoder_select="ac3dsp audiodsp mdct me_cmp"
2486 ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp"
2487 adpcm_g722_decoder_select="g722dsp"
2488 adpcm_g722_encoder_select="g722dsp"
2489 aic_decoder_select="golomb idctdsp"
2490 alac_encoder_select="lpc"
2491 als_decoder_select="bswapdsp"
2492 amrnb_decoder_select="lsp"
2493 amrwb_decoder_select="lsp"
2494 amv_decoder_select="sp5x_decoder exif"
2495 amv_encoder_select="aandcttables jpegtables mpegvideoenc"
2496 ape_decoder_select="bswapdsp llauddsp"
2497 apng_decoder_deps="zlib"
2498 apng_encoder_deps="zlib"
2499 apng_encoder_select="llvidencdsp"
2500 aptx_decoder_select="audio_frame_queue"
2501 aptx_encoder_select="audio_frame_queue"
2502 aptx_hd_decoder_select="audio_frame_queue"
2503 aptx_hd_encoder_select="audio_frame_queue"
2504 asv1_decoder_select="blockdsp bswapdsp idctdsp"
2505 asv1_encoder_select="bswapdsp fdctdsp pixblockdsp"
2506 asv2_decoder_select="blockdsp bswapdsp idctdsp"
2507 asv2_encoder_select="bswapdsp fdctdsp pixblockdsp"
2508 atrac1_decoder_select="mdct sinewin"
2509 atrac3_decoder_select="mdct"
2510 atrac3p_decoder_select="mdct sinewin"
2511 avrn_decoder_select="exif jpegtables"
2512 bink_decoder_select="blockdsp hpeldsp"
2513 binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
2514 binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
2515 cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
2516 clearvideo_decoder_select="idctdsp"
2517 cllc_decoder_select="bswapdsp"
2518 comfortnoise_encoder_select="lpc"
2519 cook_decoder_select="audiodsp mdct sinewin"
2520 cscd_decoder_select="lzo"
2521 cscd_decoder_suggest="zlib"
2522 dca_decoder_select="mdct"
2523 dds_decoder_select="texturedsp"
2524 dirac_decoder_select="dirac_parse dwt golomb videodsp mpegvideoenc"
2525 dnxhd_decoder_select="blockdsp idctdsp"
2526 dnxhd_encoder_select="aandcttables blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
2527 dolby_e_decoder_select="mdct"
2528 dvvideo_decoder_select="dvprofile idctdsp"
2529 dvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp"
2530 dxa_decoder_deps="zlib"
2531 dxv_decoder_select="lzf texturedsp"
2532 eac3_decoder_select="ac3_decoder"
2533 eac3_encoder_select="ac3_encoder"
2534 eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo"
2535 eatgq_decoder_select="aandcttables"
2536 eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp"
2537 exr_decoder_deps="zlib"
2538 ffv1_decoder_select="rangecoder"
2539 ffv1_encoder_select="rangecoder"
2540 ffvhuff_decoder_select="huffyuv_decoder"
2541 ffvhuff_encoder_select="huffyuv_encoder"
2542 fic_decoder_select="golomb"
2543 flac_decoder_select="flacdsp"
2544 flac_encoder_select="bswapdsp flacdsp lpc"
2545 flashsv2_decoder_deps="zlib"
2546 flashsv2_encoder_deps="zlib"
2547 flashsv_decoder_deps="zlib"
2548 flashsv_encoder_deps="zlib"
2549 flv_decoder_select="h263_decoder"
2550 flv_encoder_select="h263_encoder"
2551 fourxm_decoder_select="blockdsp bswapdsp"
2552 fraps_decoder_select="bswapdsp huffman"
2553 g2m_decoder_deps="zlib"
2554 g2m_decoder_select="blockdsp idctdsp jpegtables"
2555 g729_decoder_select="audiodsp"
2556 h261_decoder_select="mpegvideo"
2557 h261_encoder_select="aandcttables mpegvideoenc"
2558 h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp"
2559 h263_encoder_select="aandcttables h263dsp mpegvideoenc"
2560 h263i_decoder_select="h263_decoder"
2561 h263p_decoder_select="h263_decoder"
2562 h263p_encoder_select="h263_encoder"
2563 h264_decoder_select="cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp"
2564 h264_decoder_suggest="error_resilience"
2565 hap_decoder_select="snappy texturedsp"
2566 hap_encoder_deps="libsnappy"
2567 hap_encoder_select="texturedspenc"
2568 hevc_decoder_select="bswapdsp cabac golomb hevcparse videodsp"
2569 huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp"
2570 huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp"
2571 iac_decoder_select="imc_decoder"
2572 imc_decoder_select="bswapdsp fft mdct sinewin"
2573 indeo3_decoder_select="hpeldsp"
2574 indeo4_decoder_select="ividsp"
2575 indeo5_decoder_select="ividsp"
2576 interplay_video_decoder_select="hpeldsp"
2577 jpegls_decoder_select="mjpeg_decoder"
2578 jv_decoder_select="blockdsp"
2579 lagarith_decoder_select="llviddsp"
2580 ljpeg_encoder_select="aandcttables idctdsp jpegtables mpegvideoenc"
2581 magicyuv_decoder_select="llviddsp"
2582 magicyuv_encoder_select="llvidencdsp"
2583 mdec_decoder_select="blockdsp idctdsp mpegvideo"
2584 metasound_decoder_select="lsp mdct sinewin"
2585 mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp"
2586 mjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables"
2587 mjpeg_encoder_select="aandcttables jpegtables mpegvideoenc"
2588 mjpegb_decoder_select="mjpeg_decoder"
2589 mlp_decoder_select="mlp_parser"
2590 mlp_encoder_select="lpc"
2591 motionpixels_decoder_select="bswapdsp"
2592 mp1_decoder_select="mpegaudio"
2593 mp1float_decoder_select="mpegaudio"
2594 mp2_decoder_select="mpegaudio"
2595 mp2float_decoder_select="mpegaudio"
2596 mp3_decoder_select="mpegaudio"
2597 mp3adu_decoder_select="mpegaudio"
2598 mp3adufloat_decoder_select="mpegaudio"
2599 mp3float_decoder_select="mpegaudio"
2600 mp3on4_decoder_select="mpegaudio"
2601 mp3on4float_decoder_select="mpegaudio"
2602 mpc7_decoder_select="bswapdsp mpegaudiodsp"
2603 mpc8_decoder_select="mpegaudiodsp"
2604 mpegvideo_decoder_select="mpegvideo"
2605 mpeg1video_decoder_select="mpegvideo"
2606 mpeg1video_encoder_select="aandcttables mpegvideoenc h263dsp"
2607 mpeg2video_decoder_select="mpegvideo"
2608 mpeg2video_encoder_select="aandcttables mpegvideoenc h263dsp"
2609 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
2610 mpeg4_encoder_select="h263_encoder"
2611 msa1_decoder_select="mss34dsp"
2612 mscc_decoder_deps="zlib"
2613 msmpeg4v1_decoder_select="h263_decoder"
2614 msmpeg4v2_decoder_select="h263_decoder"
2615 msmpeg4v2_encoder_select="h263_encoder"
2616 msmpeg4v3_decoder_select="h263_decoder"
2617 msmpeg4v3_encoder_select="h263_encoder"
2618 mss2_decoder_select="mpegvideo qpeldsp vc1_decoder"
2619 mts2_decoder_select="mss34dsp"
2620 mxpeg_decoder_select="mjpeg_decoder"
2621 nellymoser_decoder_select="mdct sinewin"
2622 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
2623 nuv_decoder_select="idctdsp lzo"
2624 on2avc_decoder_select="mdct"
2625 opus_decoder_deps="swresample"
2626 opus_decoder_select="mdct15"
2627 opus_encoder_select="audio_frame_queue mdct15"
2628 png_decoder_deps="zlib"
2629 png_encoder_deps="zlib"
2630 png_encoder_select="llvidencdsp"
2631 prores_decoder_select="blockdsp idctdsp"
2632 prores_encoder_select="fdctdsp"
2633 qcelp_decoder_select="lsp"
2634 qdm2_decoder_select="mdct rdft mpegaudiodsp"
2635 ra_144_decoder_select="audiodsp"
2636 ra_144_encoder_select="audio_frame_queue lpc audiodsp"
2637 ralf_decoder_select="golomb"
2638 rawvideo_decoder_select="bswapdsp"
2639 rscc_decoder_deps="zlib"
2640 rtjpeg_decoder_select="me_cmp"
2641 rv10_decoder_select="h263_decoder"
2642 rv10_encoder_select="h263_encoder"
2643 rv20_decoder_select="h263_decoder"
2644 rv20_encoder_select="h263_encoder"
2645 rv30_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
2646 rv40_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
2647 screenpresso_decoder_deps="zlib"
2648 shorten_decoder_select="bswapdsp"
2649 sipr_decoder_select="lsp"
2650 snow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp"
2651 snow_encoder_select="aandcttables dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder"
2652 sonic_decoder_select="golomb rangecoder"
2653 sonic_encoder_select="golomb rangecoder"
2654 sonic_ls_encoder_select="golomb rangecoder"
2655 sp5x_decoder_select="mjpeg_decoder"
2656 srgc_decoder_deps="zlib"
2657 svq1_decoder_select="hpeldsp"
2658 svq1_encoder_select="aandcttables hpeldsp me_cmp mpegvideoenc"
2659 svq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
2660 svq3_decoder_suggest="zlib"
2661 tak_decoder_select="audiodsp"
2662 tdsc_decoder_deps="zlib"
2663 tdsc_decoder_select="mjpeg_decoder"
2664 theora_decoder_select="vp3_decoder"
2665 thp_decoder_select="mjpeg_decoder"
2666 tiff_decoder_suggest="zlib lzma"
2667 tiff_encoder_suggest="zlib"
2668 truehd_decoder_select="mlp_parser"
2669 truehd_encoder_select="lpc"
2670 truemotion2_decoder_select="bswapdsp"
2671 truespeech_decoder_select="bswapdsp"
2672 tscc_decoder_deps="zlib"
2673 twinvq_decoder_select="mdct lsp sinewin"
2674 txd_decoder_select="texturedsp"
2675 utvideo_decoder_select="bswapdsp llviddsp"
2676 utvideo_encoder_select="bswapdsp huffman llvidencdsp"
2677 vble_decoder_select="llviddsp"
2678 vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp"
2679 vc1image_decoder_select="vc1_decoder"
2680 vorbis_decoder_select="mdct"
2681 vorbis_encoder_select="audio_frame_queue mdct"
2682 vp3_decoder_select="hpeldsp vp3dsp videodsp"
2683 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
2684 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
2685 vp6a_decoder_select="vp6_decoder"
2686 vp6f_decoder_select="vp6_decoder"
2687 vp7_decoder_select="h264pred videodsp vp8dsp"
2688 vp8_decoder_select="h264pred videodsp vp8dsp"
2689 vp9_decoder_select="videodsp vp9_parser vp9_superframe_split_bsf"
2690 webp_decoder_select="vp8_decoder exif"
2691 wmalossless_decoder_select="llauddsp"
2692 wmapro_decoder_select="mdct sinewin wma_freqs"
2693 wmav1_decoder_select="mdct sinewin wma_freqs"
2694 wmav1_encoder_select="mdct sinewin wma_freqs"
2695 wmav2_decoder_select="mdct sinewin wma_freqs"
2696 wmav2_encoder_select="mdct sinewin wma_freqs"
2697 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
2698 wmv1_decoder_select="h263_decoder"
2699 wmv1_encoder_select="h263_encoder"
2700 wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
2701 wmv2_encoder_select="h263_encoder wmv2dsp"
2702 wmv3_decoder_select="vc1_decoder"
2703 wmv3image_decoder_select="wmv3_decoder"
2704 xma1_decoder_select="wmapro_decoder"
2705 xma2_decoder_select="wmapro_decoder"
2706 zerocodec_decoder_deps="zlib"
2707 zlib_decoder_deps="zlib"
2708 zlib_encoder_deps="zlib"
2709 zmbv_decoder_deps="zlib"
2710 zmbv_encoder_deps="zlib"
2712 # hardware accelerators
2713 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
2714 cuda_deps="ffnvcodec"
2715 cuvid_deps="ffnvcodec"
2716 d3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext"
2717 dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32 user32"
2718 ffnvcodec_deps_any="libdl LoadLibrary"
2719 nvdec_deps="ffnvcodec"
2720 videotoolbox_hwaccel_deps="videotoolbox pthreads"
2721 videotoolbox_hwaccel_extralibs="-framework QuartzCore"
2722 xvmc_deps="X11_extensions_XvMClib_h"
2724 h263_vaapi_hwaccel_deps="vaapi"
2725 h263_vaapi_hwaccel_select="h263_decoder"
2726 h263_videotoolbox_hwaccel_deps="videotoolbox"
2727 h263_videotoolbox_hwaccel_select="h263_decoder"
2728 h264_d3d11va_hwaccel_deps="d3d11va"
2729 h264_d3d11va_hwaccel_select="h264_decoder"
2730 h264_d3d11va2_hwaccel_deps="d3d11va"
2731 h264_d3d11va2_hwaccel_select="h264_decoder"
2732 h264_dxva2_hwaccel_deps="dxva2"
2733 h264_dxva2_hwaccel_select="h264_decoder"
2734 h264_nvdec_hwaccel_deps="nvdec"
2735 h264_nvdec_hwaccel_select="h264_decoder"
2736 h264_vaapi_hwaccel_deps="vaapi"
2737 h264_vaapi_hwaccel_select="h264_decoder"
2738 h264_vdpau_hwaccel_deps="vdpau"
2739 h264_vdpau_hwaccel_select="h264_decoder"
2740 h264_videotoolbox_hwaccel_deps="videotoolbox"
2741 h264_videotoolbox_hwaccel_select="h264_decoder"
2742 hevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
2743 hevc_d3d11va_hwaccel_select="hevc_decoder"
2744 hevc_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
2745 hevc_d3d11va2_hwaccel_select="hevc_decoder"
2746 hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
2747 hevc_dxva2_hwaccel_select="hevc_decoder"
2748 hevc_nvdec_hwaccel_deps="nvdec"
2749 hevc_nvdec_hwaccel_select="hevc_decoder"
2750 hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
2751 hevc_vaapi_hwaccel_select="hevc_decoder"
2752 hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
2753 hevc_vdpau_hwaccel_select="hevc_decoder"
2754 hevc_videotoolbox_hwaccel_deps="videotoolbox"
2755 hevc_videotoolbox_hwaccel_select="hevc_decoder"
2756 mjpeg_nvdec_hwaccel_deps="nvdec"
2757 mjpeg_nvdec_hwaccel_select="mjpeg_decoder"
2758 mjpeg_vaapi_hwaccel_deps="vaapi"
2759 mjpeg_vaapi_hwaccel_select="mjpeg_decoder"
2760 mpeg_xvmc_hwaccel_deps="xvmc"
2761 mpeg_xvmc_hwaccel_select="mpeg2video_decoder"
2762 mpeg1_nvdec_hwaccel_deps="nvdec"
2763 mpeg1_nvdec_hwaccel_select="mpeg1video_decoder"
2764 mpeg1_vdpau_hwaccel_deps="vdpau"
2765 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
2766 mpeg1_videotoolbox_hwaccel_deps="videotoolbox"
2767 mpeg1_videotoolbox_hwaccel_select="mpeg1video_decoder"
2768 mpeg1_xvmc_hwaccel_deps="xvmc"
2769 mpeg1_xvmc_hwaccel_select="mpeg1video_decoder"
2770 mpeg2_d3d11va_hwaccel_deps="d3d11va"
2771 mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
2772 mpeg2_d3d11va2_hwaccel_deps="d3d11va"
2773 mpeg2_d3d11va2_hwaccel_select="mpeg2video_decoder"
2774 mpeg2_dxva2_hwaccel_deps="dxva2"
2775 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
2776 mpeg2_nvdec_hwaccel_deps="nvdec"
2777 mpeg2_nvdec_hwaccel_select="mpeg2video_decoder"
2778 mpeg2_vaapi_hwaccel_deps="vaapi"
2779 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
2780 mpeg2_vdpau_hwaccel_deps="vdpau"
2781 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
2782 mpeg2_videotoolbox_hwaccel_deps="videotoolbox"
2783 mpeg2_videotoolbox_hwaccel_select="mpeg2video_decoder"
2784 mpeg2_xvmc_hwaccel_deps="xvmc"
2785 mpeg2_xvmc_hwaccel_select="mpeg2video_decoder"
2786 mpeg4_nvdec_hwaccel_deps="nvdec"
2787 mpeg4_nvdec_hwaccel_select="mpeg4_decoder"
2788 mpeg4_vaapi_hwaccel_deps="vaapi"
2789 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
2790 mpeg4_vdpau_hwaccel_deps="vdpau"
2791 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
2792 mpeg4_videotoolbox_hwaccel_deps="videotoolbox"
2793 mpeg4_videotoolbox_hwaccel_select="mpeg4_decoder"
2794 vc1_d3d11va_hwaccel_deps="d3d11va"
2795 vc1_d3d11va_hwaccel_select="vc1_decoder"
2796 vc1_d3d11va2_hwaccel_deps="d3d11va"
2797 vc1_d3d11va2_hwaccel_select="vc1_decoder"
2798 vc1_dxva2_hwaccel_deps="dxva2"
2799 vc1_dxva2_hwaccel_select="vc1_decoder"
2800 vc1_nvdec_hwaccel_deps="nvdec"
2801 vc1_nvdec_hwaccel_select="vc1_decoder"
2802 vc1_vaapi_hwaccel_deps="vaapi"
2803 vc1_vaapi_hwaccel_select="vc1_decoder"
2804 vc1_vdpau_hwaccel_deps="vdpau"
2805 vc1_vdpau_hwaccel_select="vc1_decoder"
2806 vp8_nvdec_hwaccel_deps="nvdec"
2807 vp8_nvdec_hwaccel_select="vp8_decoder"
2808 vp8_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferVP8"
2809 vp8_vaapi_hwaccel_select="vp8_decoder"
2810 vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
2811 vp9_d3d11va_hwaccel_select="vp9_decoder"
2812 vp9_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
2813 vp9_d3d11va2_hwaccel_select="vp9_decoder"
2814 vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
2815 vp9_dxva2_hwaccel_select="vp9_decoder"
2816 vp9_nvdec_hwaccel_deps="nvdec"
2817 vp9_nvdec_hwaccel_select="vp9_decoder"
2818 vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth"
2819 vp9_vaapi_hwaccel_select="vp9_decoder"
2820 wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
2821 wmv3_d3d11va2_hwaccel_select="vc1_d3d11va2_hwaccel"
2822 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
2823 wmv3_nvdec_hwaccel_select="vc1_nvdec_hwaccel"
2824 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
2825 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
2827 # hardware-accelerated codecs
2828 omx_deps="libdl pthreads"
2829 omx_rpi_select="omx"
2834 vaapi_encode_deps="vaapi"
2835 v4l2_m2m_deps_any="linux_videodev2_h"
2837 hwupload_cuda_filter_deps="ffnvcodec"
2838 scale_npp_filter_deps="ffnvcodec libnpp"
2839 scale_cuda_filter_deps="cuda_sdk"
2840 thumbnail_cuda_filter_deps="cuda_sdk"
2842 amf_deps_any="libdl LoadLibrary"
2843 nvenc_deps="ffnvcodec"
2844 nvenc_deps_any="libdl LoadLibrary"
2845 nvenc_encoder_deps="nvenc"
2847 h263_v4l2m2m_decoder_deps="v4l2_m2m h263_v4l2_m2m"
2848 h263_v4l2m2m_encoder_deps="v4l2_m2m h263_v4l2_m2m"
2849 h264_amf_encoder_deps="amf"
2850 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
2851 h264_cuvid_decoder_deps="cuvid"
2852 h264_cuvid_decoder_select="h264_mp4toannexb_bsf"
2853 h264_mediacodec_decoder_deps="mediacodec"
2854 h264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser"
2855 h264_mmal_decoder_deps="mmal"
2856 h264_nvenc_encoder_deps="nvenc"
2857 h264_omx_encoder_deps="omx"
2858 h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec"
2859 h264_qsv_encoder_select="qsvenc"
2860 h264_rkmpp_decoder_deps="rkmpp"
2861 h264_rkmpp_decoder_select="h264_mp4toannexb_bsf"
2862 h264_vaapi_encoder_deps="VAEncPictureParameterBufferH264"
2863 h264_vaapi_encoder_select="cbs_h264 vaapi_encode"
2864 h264_v4l2m2m_decoder_deps="v4l2_m2m h264_v4l2_m2m"
2865 h264_v4l2m2m_encoder_deps="v4l2_m2m h264_v4l2_m2m"
2866 hevc_amf_encoder_deps="amf"
2867 hevc_cuvid_decoder_deps="cuvid"
2868 hevc_cuvid_decoder_select="hevc_mp4toannexb_bsf"
2869 hevc_mediacodec_decoder_deps="mediacodec"
2870 hevc_mediacodec_decoder_select="hevc_mp4toannexb_bsf hevc_parser"
2871 hevc_nvenc_encoder_deps="nvenc"
2872 hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec"
2873 hevc_qsv_encoder_select="hevcparse qsvenc"
2874 hevc_rkmpp_decoder_deps="rkmpp"
2875 hevc_rkmpp_decoder_select="hevc_mp4toannexb_bsf"
2876 hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC"
2877 hevc_vaapi_encoder_select="cbs_h265 vaapi_encode"
2878 hevc_v4l2m2m_decoder_deps="v4l2_m2m hevc_v4l2_m2m"
2879 hevc_v4l2m2m_encoder_deps="v4l2_m2m hevc_v4l2_m2m"
2880 mjpeg_cuvid_decoder_deps="cuvid"
2881 mjpeg_qsv_encoder_deps="libmfx"
2882 mjpeg_qsv_encoder_select="qsvenc"
2883 mjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
2884 mjpeg_vaapi_encoder_select="vaapi_encode jpegtables"
2885 mpeg1_cuvid_decoder_deps="cuvid"
2886 mpeg1_v4l2m2m_decoder_deps="v4l2_m2m mpeg1_v4l2_m2m"
2887 mpeg2_crystalhd_decoder_select="crystalhd"
2888 mpeg2_cuvid_decoder_deps="cuvid"
2889 mpeg2_mmal_decoder_deps="mmal"
2890 mpeg2_mediacodec_decoder_deps="mediacodec"
2891 mpeg2_qsv_decoder_select="qsvdec mpegvideo_parser"
2892 mpeg2_qsv_encoder_select="qsvenc"
2893 mpeg2_vaapi_encoder_deps="VAEncPictureParameterBufferMPEG2"
2894 mpeg2_vaapi_encoder_select="cbs_mpeg2 vaapi_encode"
2895 mpeg2_v4l2m2m_decoder_deps="v4l2_m2m mpeg2_v4l2_m2m"
2896 mpeg4_crystalhd_decoder_select="crystalhd"
2897 mpeg4_cuvid_decoder_deps="cuvid"
2898 mpeg4_mediacodec_decoder_deps="mediacodec"
2899 mpeg4_mmal_decoder_deps="mmal"
2900 mpeg4_omx_encoder_deps="omx"
2901 mpeg4_v4l2m2m_decoder_deps="v4l2_m2m mpeg4_v4l2_m2m"
2902 mpeg4_v4l2m2m_encoder_deps="v4l2_m2m mpeg4_v4l2_m2m"
2903 msmpeg4_crystalhd_decoder_select="crystalhd"
2904 nvenc_h264_encoder_select="h264_nvenc_encoder"
2905 nvenc_hevc_encoder_select="hevc_nvenc_encoder"
2906 vc1_crystalhd_decoder_select="crystalhd"
2907 vc1_cuvid_decoder_deps="cuvid"
2908 vc1_mmal_decoder_deps="mmal"
2909 vc1_qsv_decoder_select="qsvdec vc1_parser"
2910 vc1_v4l2m2m_decoder_deps="v4l2_m2m vc1_v4l2_m2m"
2911 vp8_cuvid_decoder_deps="cuvid"
2912 vp8_mediacodec_decoder_deps="mediacodec"
2913 vp8_qsv_decoder_select="qsvdec vp8_parser"
2914 vp8_rkmpp_decoder_deps="rkmpp"
2915 vp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8"
2916 vp8_vaapi_encoder_select="vaapi_encode"
2917 vp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m"
2918 vp8_v4l2m2m_encoder_deps="v4l2_m2m vp8_v4l2_m2m"
2919 vp9_cuvid_decoder_deps="cuvid"
2920 vp9_mediacodec_decoder_deps="mediacodec"
2921 vp9_rkmpp_decoder_deps="rkmpp"
2922 vp9_vaapi_encoder_deps="VAEncPictureParameterBufferVP9"
2923 vp9_vaapi_encoder_select="vaapi_encode"
2924 vp9_v4l2m2m_decoder_deps="v4l2_m2m vp9_v4l2_m2m"
2925 wmv3_crystalhd_decoder_select="crystalhd"
2928 aac_parser_select="adts_header"
2929 h264_parser_select="golomb h264dsp h264parse"
2930 hevc_parser_select="hevcparse"
2931 mpegaudio_parser_select="mpegaudioheader"
2932 mpegvideo_parser_select="mpegvideo"
2933 mpeg4video_parser_select="h263dsp mpegvideo qpeldsp"
2934 vc1_parser_select="vc1dsp"
2937 aac_adtstoasc_bsf_select="adts_header"
2938 filter_units_bsf_select="cbs"
2939 h264_metadata_bsf_deps="const_nan"
2940 h264_metadata_bsf_select="cbs_h264"
2941 h264_redundant_pps_bsf_select="cbs_h264"
2942 hevc_metadata_bsf_select="cbs_h265"
2943 mjpeg2jpeg_bsf_select="jpegtables"
2944 mpeg2_metadata_bsf_select="cbs_mpeg2"
2945 trace_headers_bsf_select="cbs"
2947 # external libraries
2948 aac_at_decoder_deps="audiotoolbox"
2949 aac_at_decoder_select="aac_adtstoasc_bsf"
2950 ac3_at_decoder_deps="audiotoolbox"
2951 ac3_at_decoder_select="ac3_parser"
2952 adpcm_ima_qt_at_decoder_deps="audiotoolbox"
2953 alac_at_decoder_deps="audiotoolbox"
2954 amr_nb_at_decoder_deps="audiotoolbox"
2955 avisynth_deps_any="libdl LoadLibrary"
2956 avisynth_demuxer_deps="avisynth"
2957 avisynth_demuxer_select="riffdec"
2958 eac3_at_decoder_deps="audiotoolbox"
2959 eac3_at_decoder_select="ac3_parser"
2960 gsm_ms_at_decoder_deps="audiotoolbox"
2961 ilbc_at_decoder_deps="audiotoolbox"
2962 mp1_at_decoder_deps="audiotoolbox"
2963 mp2_at_decoder_deps="audiotoolbox"
2964 mp3_at_decoder_deps="audiotoolbox"
2965 mp1_at_decoder_select="mpegaudioheader"
2966 mp2_at_decoder_select="mpegaudioheader"
2967 mp3_at_decoder_select="mpegaudioheader"
2968 pcm_alaw_at_decoder_deps="audiotoolbox"
2969 pcm_mulaw_at_decoder_deps="audiotoolbox"
2970 qdmc_at_decoder_deps="audiotoolbox"
2971 qdm2_at_decoder_deps="audiotoolbox"
2972 aac_at_encoder_deps="audiotoolbox"
2973 aac_at_encoder_select="audio_frame_queue"
2974 alac_at_encoder_deps="audiotoolbox"
2975 alac_at_encoder_select="audio_frame_queue"
2976 ilbc_at_encoder_deps="audiotoolbox"
2977 ilbc_at_encoder_select="audio_frame_queue"
2978 pcm_alaw_at_encoder_deps="audiotoolbox"
2979 pcm_alaw_at_encoder_select="audio_frame_queue"
2980 pcm_mulaw_at_encoder_deps="audiotoolbox"
2981 pcm_mulaw_at_encoder_select="audio_frame_queue"
2982 chromaprint_muxer_deps="chromaprint"
2983 h264_videotoolbox_encoder_deps="pthreads"
2984 h264_videotoolbox_encoder_select="videotoolbox_encoder"
2985 hevc_videotoolbox_encoder_deps="pthreads"
2986 hevc_videotoolbox_encoder_select="videotoolbox_encoder"
2987 libcelt_decoder_deps="libcelt"
2988 libcodec2_decoder_deps="libcodec2"
2989 libcodec2_encoder_deps="libcodec2"
2990 libfdk_aac_decoder_deps="libfdk_aac"
2991 libfdk_aac_encoder_deps="libfdk_aac"
2992 libfdk_aac_encoder_select="audio_frame_queue"
2993 libgme_demuxer_deps="libgme"
2994 libgsm_decoder_deps="libgsm"
2995 libgsm_encoder_deps="libgsm"
2996 libgsm_ms_decoder_deps="libgsm"
2997 libgsm_ms_encoder_deps="libgsm"
2998 libilbc_decoder_deps="libilbc"
2999 libilbc_encoder_deps="libilbc"
3000 libkvazaar_encoder_deps="libkvazaar"
3001 libmodplug_demuxer_deps="libmodplug"
3002 libmp3lame_encoder_deps="libmp3lame"
3003 libmp3lame_encoder_select="audio_frame_queue mpegaudioheader"
3004 libopencore_amrnb_decoder_deps="libopencore_amrnb"
3005 libopencore_amrnb_encoder_deps="libopencore_amrnb"
3006 libopencore_amrnb_encoder_select="audio_frame_queue"
3007 libopencore_amrwb_decoder_deps="libopencore_amrwb"
3008 libopenh264_decoder_deps="libopenh264"
3009 libopenh264_decoder_select="h264_mp4toannexb_bsf"
3010 libopenh264_encoder_deps="libopenh264"
3011 libopenjpeg_decoder_deps="libopenjpeg"
3012 libopenjpeg_encoder_deps="libopenjpeg"
3013 libopenmpt_demuxer_deps="libopenmpt"
3014 libopus_decoder_deps="libopus"
3015 libopus_encoder_deps="libopus"
3016 libopus_encoder_select="audio_frame_queue"
3017 librsvg_decoder_deps="librsvg"
3018 libshine_encoder_deps="libshine"
3019 libshine_encoder_select="audio_frame_queue"
3020 libspeex_decoder_deps="libspeex"
3021 libspeex_encoder_deps="libspeex"
3022 libspeex_encoder_select="audio_frame_queue"
3023 libtheora_encoder_deps="libtheora"
3024 libtwolame_encoder_deps="libtwolame"
3025 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
3026 libvorbis_decoder_deps="libvorbis"
3027 libvorbis_encoder_deps="libvorbis libvorbisenc"
3028 libvorbis_encoder_select="audio_frame_queue"
3029 libvpx_vp8_decoder_deps="libvpx"
3030 libvpx_vp8_encoder_deps="libvpx"
3031 libvpx_vp9_decoder_deps="libvpx"
3032 libvpx_vp9_encoder_deps="libvpx"
3033 libwavpack_encoder_deps="libwavpack"
3034 libwavpack_encoder_select="audio_frame_queue"
3035 libwebp_encoder_deps="libwebp"
3036 libwebp_anim_encoder_deps="libwebp"
3037 libx262_encoder_deps="libx262"
3038 libx264_encoder_deps="libx264"
3039 libx264rgb_encoder_deps="libx264 x264_csp_bgr"
3040 libx264rgb_encoder_select="libx264_encoder"
3041 libx265_encoder_deps="libx265"
3042 libxavs_encoder_deps="libxavs"
3043 libxvid_encoder_deps="libxvid"
3044 libzvbi_teletext_decoder_deps="libzvbi"
3045 videotoolbox_suggest="coreservices"
3046 videotoolbox_deps="corefoundation coremedia corevideo"
3047 videotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames"
3050 ac3_demuxer_select="ac3_parser"
3051 aiff_muxer_select="iso_media"
3052 asf_demuxer_select="riffdec"
3053 asf_o_demuxer_select="riffdec"
3054 asf_muxer_select="riffenc"
3055 asf_stream_muxer_select="asf_muxer"
3056 avi_demuxer_select="iso_media riffdec exif"
3057 avi_muxer_select="riffenc"
3058 caf_demuxer_select="iso_media riffdec"
3059 caf_muxer_select="iso_media"
3060 dash_muxer_select="mp4_muxer"
3061 dash_demuxer_deps="libxml2"
3062 dirac_demuxer_select="dirac_parser"
3063 dts_demuxer_select="dca_parser"
3064 dtshd_demuxer_select="dca_parser"
3065 dv_demuxer_select="dvprofile"
3066 dv_muxer_select="dvprofile"
3067 dxa_demuxer_select="riffdec"
3068 eac3_demuxer_select="ac3_parser"
3069 f4v_muxer_select="mov_muxer"
3070 fifo_muxer_deps="threads"
3071 flac_demuxer_select="flac_parser"
3072 hds_muxer_select="flv_muxer"
3073 hls_muxer_select="mpegts_muxer"
3074 hls_muxer_suggest="gcrypt openssl"
3075 image2_alias_pix_demuxer_select="image2_demuxer"
3076 image2_brender_pix_demuxer_select="image2_demuxer"
3077 ipod_muxer_select="mov_muxer"
3078 ismv_muxer_select="mov_muxer"
3079 matroska_audio_muxer_select="matroska_muxer"
3080 matroska_demuxer_select="iso_media riffdec"
3081 matroska_demuxer_suggest="bzlib lzo zlib"
3082 matroska_muxer_select="iso_media riffenc"
3083 mmf_muxer_select="riffenc"
3084 mov_demuxer_select="iso_media riffdec"
3085 mov_demuxer_suggest="zlib"
3086 mov_muxer_select="iso_media riffenc rtpenc_chain"
3087 mp3_demuxer_select="mpegaudio_parser"
3088 mp3_muxer_select="mpegaudioheader"
3089 mp4_muxer_select="mov_muxer"
3090 mpegts_demuxer_select="iso_media"
3091 mpegts_muxer_select="adts_muxer latm_muxer"
3092 mpegtsraw_demuxer_select="mpegts_demuxer"
3093 mxf_d10_muxer_select="mxf_muxer"
3094 mxf_opatom_muxer_select="mxf_muxer"
3095 nut_muxer_select="riffenc"
3096 nuv_demuxer_select="riffdec"
3097 oga_muxer_select="ogg_muxer"
3098 ogg_demuxer_select="dirac_parse"
3099 ogv_muxer_select="ogg_muxer"
3100 opus_muxer_select="ogg_muxer"
3101 psp_muxer_select="mov_muxer"
3102 rtp_demuxer_select="sdp_demuxer"
3103 rtp_muxer_select="golomb"
3104 rtpdec_select="asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
3105 rtsp_demuxer_select="http_protocol rtpdec"
3106 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
3107 sap_demuxer_select="sdp_demuxer"
3108 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
3109 sdp_demuxer_select="rtpdec"
3110 smoothstreaming_muxer_select="ismv_muxer"
3111 spdif_demuxer_select="adts_header"
3112 spdif_muxer_select="adts_header"
3113 spx_muxer_select="ogg_muxer"
3114 swf_demuxer_suggest="zlib"
3115 tak_demuxer_select="tak_parser"
3116 tg2_muxer_select="mov_muxer"
3117 tgp_muxer_select="mov_muxer"
3118 vobsub_demuxer_select="mpegps_demuxer"
3119 w64_demuxer_select="wav_demuxer"
3120 w64_muxer_select="wav_muxer"
3121 wav_demuxer_select="riffdec"
3122 wav_muxer_select="riffenc"
3123 webm_muxer_select="iso_media riffenc"
3124 webm_dash_manifest_demuxer_select="matroska_demuxer"
3125 wtv_demuxer_select="mpegts_demuxer riffdec"
3126 wtv_muxer_select="mpegts_muxer riffenc"
3127 xmv_demuxer_select="riffdec"
3128 xwma_demuxer_select="riffdec"
3131 android_camera_indev_deps="android camera2ndk mediandk pthreads"
3132 android_camera_indev_extralibs="-landroid -lcamera2ndk -lmediandk"
3133 alsa_indev_deps="alsa"
3134 alsa_outdev_deps="alsa"
3135 avfoundation_indev_deps="avfoundation corevideo coremedia pthreads"
3136 avfoundation_indev_suggest="coregraphics applicationservices"
3137 avfoundation_indev_extralibs="-framework Foundation"
3138 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
3139 caca_outdev_deps="libcaca"
3140 decklink_deps_any="libdl LoadLibrary"
3141 decklink_indev_deps="decklink threads"
3142 decklink_indev_extralibs="-lstdc++"
3143 decklink_outdev_deps="decklink threads"
3144 decklink_outdev_extralibs="-lstdc++"
3145 libndi_newtek_indev_deps="libndi_newtek"
3146 libndi_newtek_indev_extralibs="-lndi"
3147 libndi_newtek_outdev_deps="libndi_newtek"
3148 libndi_newtek_outdev_extralibs="-lndi"
3149 dshow_indev_deps="IBaseFilter"
3150 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi"
3151 fbdev_indev_deps="linux_fb_h"
3152 fbdev_outdev_deps="linux_fb_h"
3153 gdigrab_indev_deps="CreateDIBSection"
3154 gdigrab_indev_extralibs="-lgdi32"
3155 gdigrab_indev_select="bmp_decoder"
3156 iec61883_indev_deps="libiec61883"
3157 jack_indev_deps="libjack"
3158 jack_indev_deps_any="sem_timedwait dispatch_dispatch_h"
3159 kmsgrab_indev_deps="libdrm"
3160 lavfi_indev_deps="avfilter"
3161 libcdio_indev_deps="libcdio"
3162 libdc1394_indev_deps="libdc1394"
3163 openal_indev_deps="openal"
3164 opengl_outdev_deps="opengl"
3165 oss_indev_deps_any="sys_soundcard_h"
3166 oss_outdev_deps_any="sys_soundcard_h"
3167 pulse_indev_deps="libpulse"
3168 pulse_outdev_deps="libpulse"
3169 sdl2_outdev_deps="sdl2"
3170 sndio_indev_deps="sndio"
3171 sndio_outdev_deps="sndio"
3172 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
3173 v4l2_indev_suggest="libv4l2"
3174 v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h"
3175 v4l2_outdev_suggest="libv4l2"
3176 vfwcap_indev_deps="vfw32 vfwcap_defines"
3177 xcbgrab_indev_deps="libxcb"
3178 xcbgrab_indev_suggest="libxcb_shm libxcb_shape libxcb_xfixes"
3179 xv_outdev_deps="X11_extensions_Xvlib_h XvGetPortAttribute"
3180 xv_outdev_extralibs="-lXv -lX11 -lXext"
3183 async_protocol_deps="threads"
3184 bluray_protocol_deps="libbluray"
3185 ffrtmpcrypt_protocol_conflict="librtmp_protocol"
3186 ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
3187 ffrtmpcrypt_protocol_select="tcp_protocol"
3188 ffrtmphttp_protocol_conflict="librtmp_protocol"
3189 ffrtmphttp_protocol_select="http_protocol"
3190 ftp_protocol_select="tcp_protocol"
3191 gopher_protocol_select="network"
3192 http_protocol_select="tcp_protocol"
3193 http_protocol_suggest="zlib"
3194 httpproxy_protocol_select="tcp_protocol"
3195 httpproxy_protocol_suggest="zlib"
3196 https_protocol_select="tls_protocol"
3197 https_protocol_suggest="zlib"
3198 icecast_protocol_select="http_protocol"
3199 librtmp_protocol_deps="librtmp"
3200 librtmpe_protocol_deps="librtmp"
3201 librtmps_protocol_deps="librtmp"
3202 librtmpt_protocol_deps="librtmp"
3203 librtmpte_protocol_deps="librtmp"
3204 libsmbclient_protocol_deps="libsmbclient gplv3"
3205 libssh_protocol_deps="libssh"
3206 libtls_conflict="openssl gnutls"
3207 mmsh_protocol_select="http_protocol"
3208 mmst_protocol_select="network"
3209 rtmp_protocol_conflict="librtmp_protocol"
3210 rtmp_protocol_select="tcp_protocol"
3211 rtmp_protocol_suggest="zlib"
3212 rtmpe_protocol_select="ffrtmpcrypt_protocol"
3213 rtmpe_protocol_suggest="zlib"
3214 rtmps_protocol_conflict="librtmp_protocol"
3215 rtmps_protocol_select="tls_protocol"
3216 rtmps_protocol_suggest="zlib"
3217 rtmpt_protocol_select="ffrtmphttp_protocol"
3218 rtmpt_protocol_suggest="zlib"
3219 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
3220 rtmpte_protocol_suggest="zlib"
3221 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
3222 rtmpts_protocol_suggest="zlib"
3223 rtp_protocol_select="udp_protocol"
3224 schannel_conflict="openssl gnutls libtls"
3225 sctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
3226 sctp_protocol_select="network"
3227 securetransport_conflict="openssl gnutls libtls"
3228 srtp_protocol_select="rtp_protocol srtp"
3229 tcp_protocol_select="network"
3230 tls_protocol_deps_any="gnutls openssl schannel securetransport libtls"
3231 tls_protocol_select="tcp_protocol"
3232 udp_protocol_select="network"
3233 udplite_protocol_select="network"
3234 unix_protocol_deps="sys_un_h"
3235 unix_protocol_select="network"
3238 afftfilt_filter_deps="avcodec"
3239 afftfilt_filter_select="fft"
3240 afir_filter_deps="avcodec"
3241 afir_filter_select="fft"
3242 amovie_filter_deps="avcodec avformat"
3243 aresample_filter_deps="swresample"
3244 ass_filter_deps="libass"
3245 atempo_filter_deps="avcodec"
3246 atempo_filter_select="rdft"
3247 avgblur_opencl_filter_deps="opencl"
3248 azmq_filter_deps="libzmq"
3249 blackframe_filter_deps="gpl"
3250 boxblur_filter_deps="gpl"
3251 bs2b_filter_deps="libbs2b"
3252 colormatrix_filter_deps="gpl"
3253 convolution_opencl_filter_deps="opencl"
3254 convolve_filter_deps="avcodec"
3255 convolve_filter_select="fft"
3256 coreimage_filter_deps="coreimage appkit"
3257 coreimage_filter_extralibs="-framework OpenGL"
3258 coreimagesrc_filter_deps="coreimage appkit"
3259 coreimagesrc_filter_extralibs="-framework OpenGL"
3260 cover_rect_filter_deps="avcodec avformat gpl"
3261 cropdetect_filter_deps="gpl"
3262 deconvolve_filter_deps="avcodec"
3263 deconvolve_filter_select="fft"
3264 deinterlace_qsv_filter_deps="libmfx"
3265 deinterlace_vaapi_filter_deps="vaapi"
3266 delogo_filter_deps="gpl"
3267 denoise_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
3268 deshake_filter_select="pixelutils"
3269 drawtext_filter_deps="libfreetype"
3270 drawtext_filter_suggest="libfontconfig libfribidi"
3271 elbg_filter_deps="avcodec"
3272 eq_filter_deps="gpl"
3273 fftfilt_filter_deps="avcodec"
3274 fftfilt_filter_select="rdft"
3275 find_rect_filter_deps="avcodec avformat gpl"
3276 firequalizer_filter_deps="avcodec"
3277 firequalizer_filter_select="rdft"
3278 flite_filter_deps="libflite"
3279 framerate_filter_select="pixelutils"
3280 frei0r_filter_deps="frei0r libdl"
3281 frei0r_src_filter_deps="frei0r libdl"
3282 fspp_filter_deps="gpl"
3283 geq_filter_deps="gpl"
3284 histeq_filter_deps="gpl"
3285 hqdn3d_filter_deps="gpl"
3286 interlace_filter_deps="gpl"
3287 kerndeint_filter_deps="gpl"
3288 ladspa_filter_deps="ladspa libdl"
3289 lv2_filter_deps="lv2"
3290 mcdeint_filter_deps="avcodec gpl"
3291 movie_filter_deps="avcodec avformat"
3292 mpdecimate_filter_deps="gpl"
3293 mpdecimate_filter_select="pixelutils"
3294 mptestsrc_filter_deps="gpl"
3295 negate_filter_deps="lut_filter"
3296 nnedi_filter_deps="gpl"
3297 ocr_filter_deps="libtesseract"
3298 ocv_filter_deps="libopencv"
3299 openclsrc_filter_deps="opencl"
3300 overlay_opencl_filter_deps="opencl"
3301 overlay_qsv_filter_deps="libmfx"
3302 overlay_qsv_filter_select="qsvvpp"
3303 owdenoise_filter_deps="gpl"
3304 pan_filter_deps="swresample"
3305 perspective_filter_deps="gpl"
3306 phase_filter_deps="gpl"
3307 pp7_filter_deps="gpl"
3308 pp_filter_deps="gpl postproc"
3309 procamp_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
3310 program_opencl_filter_deps="opencl"
3311 pullup_filter_deps="gpl"
3312 removelogo_filter_deps="avcodec avformat swscale"
3313 repeatfields_filter_deps="gpl"
3314 resample_filter_deps="avresample"
3315 rubberband_filter_deps="librubberband"
3316 sab_filter_deps="gpl swscale"
3317 scale2ref_filter_deps="swscale"
3318 scale_filter_deps="swscale"
3319 scale_qsv_filter_deps="libmfx"
3320 select_filter_select="pixelutils"
3321 sharpness_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
3322 showcqt_filter_deps="avcodec avformat swscale"
3323 showcqt_filter_suggest="libfontconfig libfreetype"
3324 showcqt_filter_select="fft"
3325 showfreqs_filter_deps="avcodec"
3326 showfreqs_filter_select="fft"
3327 showspectrum_filter_deps="avcodec"
3328 showspectrum_filter_select="fft"
3329 showspectrumpic_filter_deps="avcodec"
3330 showspectrumpic_filter_select="fft"
3331 signature_filter_deps="gpl avcodec avformat"
3332 smartblur_filter_deps="gpl swscale"
3333 sofalizer_filter_deps="libmysofa avcodec"
3334 sofalizer_filter_select="fft"
3335 spectrumsynth_filter_deps="avcodec"
3336 spectrumsynth_filter_select="fft"
3337 spp_filter_deps="gpl avcodec"
3338 spp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp"
3339 stereo3d_filter_deps="gpl"
3340 subtitles_filter_deps="avformat avcodec libass"
3341 super2xsai_filter_deps="gpl"
3342 pixfmts_super2xsai_test_deps="super2xsai_filter"
3343 tinterlace_filter_deps="gpl"
3344 tinterlace_merge_test_deps="tinterlace_filter"
3345 tinterlace_pad_test_deps="tinterlace_filter"
3346 tonemap_filter_deps="const_nan"
3347 unsharp_opencl_filter_deps="opencl"
3348 uspp_filter_deps="gpl avcodec"
3349 vaguedenoiser_filter_deps="gpl"
3350 vidstabdetect_filter_deps="libvidstab"
3351 vidstabtransform_filter_deps="libvidstab"
3352 libvmaf_filter_deps="libvmaf pthreads"
3353 zmq_filter_deps="libzmq"
3354 zoompan_filter_deps="swscale"
3355 zscale_filter_deps="libzimg const_nan"
3356 scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
3357 vpp_qsv_filter_deps="libmfx"
3358 vpp_qsv_filter_select="qsvvpp"
3361 avio_dir_cmd_deps="avformat avutil"
3362 avio_reading_deps="avformat avcodec avutil"
3363 decode_audio_example_deps="avcodec avutil"
3364 decode_video_example_deps="avcodec avutil"
3365 demuxing_decoding_example_deps="avcodec avformat avutil"
3366 encode_audio_example_deps="avcodec avutil"
3367 encode_video_example_deps="avcodec avutil"
3368 extract_mvs_example_deps="avcodec avformat avutil"
3369 filter_audio_example_deps="avfilter avutil"
3370 filtering_audio_example_deps="avfilter avcodec avformat avutil"
3371 filtering_video_example_deps="avfilter avcodec avformat avutil"
3372 http_multiclient_example_deps="avformat avutil fork"
3373 hw_decode_example_deps="avcodec avformat avutil"
3374 metadata_example_deps="avformat avutil"
3375 muxing_example_deps="avcodec avformat avutil swscale"
3376 qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder"
3377 remuxing_example_deps="avcodec avformat avutil"
3378 resampling_audio_example_deps="avutil swresample"
3379 scaling_video_example_deps="avutil swscale"
3380 transcode_aac_example_deps="avcodec avformat swresample"
3381 transcoding_example_deps="avfilter avcodec avformat avutil"
3382 vaapi_encode_example_deps="avcodec avutil h264_vaapi_encoder"
3383 vaapi_transcode_example_deps="avcodec avformat avutil h264_vaapi_encoder"
3386 cpu_init_extralibs="pthreads_extralibs"
3387 cws2fws_extralibs="zlib_extralibs"
3389 # libraries, in linking order
3390 avcodec_deps="avutil"
3391 avcodec_suggest="libm"
3392 avcodec_select="null_bsf"
3393 avdevice_deps="avformat avcodec avutil"
3394 avdevice_suggest="libm"
3395 avfilter_deps="avutil"
3396 avfilter_suggest="libm"
3397 avformat_deps="avcodec avutil"
3398 avformat_suggest="libm network zlib"
3399 avresample_deps="avutil"
3400 avresample_suggest="libm"
3401 avutil_suggest="clock_gettime ffnvcodec libm libdrm libmfx opencl user32 vaapi videotoolbox corefoundation corevideo coremedia wincrypt"
3402 postproc_deps="avutil gpl"
3403 postproc_suggest="libm"
3404 swresample_deps="avutil"
3405 swresample_suggest="libm libsoxr"
3406 swscale_deps="avutil"
3407 swscale_suggest="libm"
3409 avcodec_extralibs="pthreads_extralibs iconv_extralibs"
3410 avfilter_extralibs="pthreads_extralibs"
3411 avutil_extralibs="d3d11va_extralibs nanosleep_extralibs pthreads_extralibs vaapi_drm_extralibs vaapi_x11_extralibs vdpau_x11_extralibs"
3414 ffmpeg_deps="avcodec avfilter avformat swresample"
3415 ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter
3418 ffmpeg_suggest="ole32 psapi shell32"
3419 ffplay_deps="avcodec avformat swscale swresample sdl2"
3420 ffplay_select="rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter"
3421 ffplay_suggest="shell32"
3422 ffprobe_deps="avcodec avformat"
3423 ffprobe_suggest="shell32"
3426 podpages_deps="perl"
3427 manpages_deps="perl pod2man"
3428 htmlpages_deps="perl"
3429 htmlpages_deps_any="makeinfo_html texi2html"
3430 txtpages_deps="perl makeinfo"
3431 doc_deps_any="manpages htmlpages podpages txtpages"
3433 # default parameters
3435 logfile="ffbuild/config.log"
3437 # installation paths
3438 prefix_default="/usr/local"
3439 bindir_default='${prefix}/bin'
3440 datadir_default='${prefix}/share/ffmpeg'
3441 docdir_default='${prefix}/share/doc/ffmpeg'
3442 incdir_default='${prefix}/include'
3443 libdir_default='${prefix}/lib'
3444 mandir_default='${prefix}/share/man'
3450 host_cc_default="gcc"
3451 doxygen_default="doxygen"
3453 ln_s_default="ln -s -f"
3455 pkg_config_default=pkg-config
3456 ranlib_default="ranlib"
3457 strip_default="strip"
3458 version_script='--version-script'
3460 x86asmexe_default="nasm"
3461 windres_default="windres"
3463 nvccflags_default="-gencode arch=compute_30,code=sm_30 -O2"
3467 target_os_default=$(tolower $(uname -s))
3468 host_os=$target_os_default
3471 if test "$target_os_default" = aix; then
3472 arch_default=$(uname -p)
3473 strip_default="strip -X32_64"
3475 arch_default=$(uname -m)
3480 # configurable options
3481 enable $PROGRAM_LIST
3482 enable $DOCUMENT_LIST
3483 enable $EXAMPLE_LIST
3484 enable $(filter_out avresample $LIBRARY_LIST)
3490 enable faan faandct faanidct
3491 enable optimizations
3492 enable runtime_cpudetect
3493 enable safe_bitstream_reader
3495 enable swscale_alpha
3496 enable valgrind_backtrace
3498 sws_max_filter_size_default=256
3499 set_default sws_max_filter_size
3501 # internal components are enabled by default
3502 enable $EXTRALIBS_LIST
3504 # Avoid external, non-system, libraries getting enabled by dependency resolution
3505 disable $EXTERNAL_LIBRARY_LIST $HWACCEL_LIBRARY_LIST
3508 SHFLAGS='-shared -Wl,-soname,$$(@F)'
3511 FULLNAME='$(NAME)$(BUILDSUF)'
3512 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
3515 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
3516 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
3517 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
3518 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
3519 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
3520 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
3521 VERSION_SCRIPT_POSTPROCESS_CMD="cat"
3548 host_extralibs='-lm'
3549 host_cflags_filter=echo
3550 host_ldflags_filter=echo
3552 target_path='$(CURDIR)'
3554 # since the object filename is not given with the -MM flag, the compiler
3555 # is only able to print the basename, and we must add the path ourselves
3556 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)'
3562 if test -f configure; then
3565 source_path=$(cd $(dirname "$0"); pwd)
3566 case "$source_path" in
3567 *[[:blank:]]*) die "Out of tree builds are impossible with whitespace in source path." ;;
3569 test -e "$source_path/config.h" &&
3570 die "Out of tree builds are impossible with config.h in source dir."
3577 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
3583 file=$source_path/$3
3584 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
3587 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
3589 find_things_extern(){
3592 file=$source_path/$3
3594 sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$out/p" "$file"
3597 OUTDEV_LIST=$(find_things_extern muxer AVOutputFormat libavdevice/alldevices.c outdev)
3598 INDEV_LIST=$(find_things_extern demuxer AVInputFormat libavdevice/alldevices.c indev)
3599 MUXER_LIST=$(find_things_extern muxer AVOutputFormat libavformat/allformats.c)
3600 DEMUXER_LIST=$(find_things_extern demuxer AVInputFormat libavformat/allformats.c)
3601 ENCODER_LIST=$(find_things_extern encoder AVCodec libavcodec/allcodecs.c)
3602 DECODER_LIST=$(find_things_extern decoder AVCodec libavcodec/allcodecs.c)
3607 PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parser.c)
3608 BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
3609 HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h)
3610 PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
3612 AVCODEC_COMPONENTS_LIST="
3620 AVDEVICE_COMPONENTS_LIST="
3625 AVFILTER_COMPONENTS_LIST="
3629 AVFORMAT_COMPONENTS_LIST="
3636 $AVCODEC_COMPONENTS_LIST
3637 $AVDEVICE_COMPONENTS_LIST
3638 $AVFILTER_COMPONENTS_LIST
3639 $AVFORMAT_COMPONENTS_LIST
3642 for n in $COMPONENT_LIST; do
3643 v=$(toupper ${n%s})_LIST
3645 eval ${n}_if_any="\$$v"
3648 enable $ARCH_EXT_LIST
3651 echo "Unknown option \"$1\"."
3652 echo "See $0 --help for available options."
3656 print_in_columns() {
3657 cols=$(expr $ncols / 24)
3658 cat | tr ' ' '\n' | sort | pr -r "-$cols" -w $ncols -t
3664 echo $* | sed s/$suffix//g | print_in_columns
3676 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
3677 echo "prob ${prob:-0.5}"
3685 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
3686 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
3695 --extra-ldexeflags=*)
3696 add_ldexeflags $optval
3698 --extra-ldsoflags=*)
3699 add_ldsoflags $optval
3701 --extra-ldlibflags=*)
3702 warn "The --extra-ldlibflags option is only provided for compatibility and will be\n"\
3703 "removed in the future. Use --extra-ldsoflags instead."
3704 add_ldsoflags $optval
3707 add_extralibs $optval
3710 disable $INDEV_LIST $OUTDEV_LIST
3713 debuglevel="$optval"
3716 disable $PROGRAM_LIST
3718 --disable-everything)
3719 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
3722 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
3723 disable $LIBRARY_LIST $PROGRAM_LIST doc
3726 --enable-random|--disable-random)
3727 action=${opt%%-random}
3728 do_random ${action#--} $COMPONENT_LIST
3730 --enable-random=*|--disable-random=*)
3731 action=${opt%%-random=*}
3732 do_random ${action#--} $optval
3737 --enable-*=*|--disable-*=*)
3738 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
3739 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
3740 eval list=\$$(toupper $thing)_LIST
3741 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
3742 list=$(filter "$name" $list)
3743 [ "$list" = "" ] && warn "Option $opt did not match anything"
3746 --enable-yasm|--disable-yasm)
3747 warn "The ${opt} option is only provided for compatibility and will be\n"\
3748 "removed in the future. Use --enable-x86asm / --disable-x86asm instead."
3749 test $opt = --enable-yasm && x86asm=yes || x86asm=no
3752 warn "The --yasmexe option is only provided for compatibility and will be\n"\
3753 "removed in the future. Use --x86asmexe instead."
3756 --enable-?*|--disable-?*)
3757 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
3758 if is_in $option $COMPONENT_LIST; then
3759 test $action = disable && action=unset
3760 eval $action \$$(toupper ${option%s})_LIST
3761 elif is_in $option $CMDLINE_SELECT; then
3768 NAME="${opt#--list-}"
3769 is_in $NAME $COMPONENT_LIST || die_unknown $opt
3771 eval show_list $NAME \$$(toupper $NAME)_LIST
3773 --help|-h) show_help
3775 --quiet|-q) quiet=yes
3777 --fatal-warnings) enable fatal_warnings
3780 libfuzzer_path="$optval"
3783 optname="${opt%%=*}"
3784 optname="${optname#--}"
3785 optname=$(echo "$optname" | sed 's/-/_/g')
3786 if is_in $optname $CMDLINE_SET; then
3787 eval $optname='$optval'
3788 elif is_in $optname $CMDLINE_APPEND; then
3789 append $optname "$optval"
3801 if disabled autodetect; then
3803 # Unless iconv is explicitely disabled by the user, we still want to probe
3804 # for the iconv from the libc.
3805 disabled iconv || enable libc_iconv
3807 disable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST
3808 disable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST
3810 # Mark specifically enabled, but normally autodetected libraries as requested.
3811 for lib in $AUTODETECT_LIBS; do
3812 enabled $lib && request $lib
3814 #TODO: switch to $AUTODETECT_LIBS when $THREADS_LIST is supported the same way
3815 enable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST
3816 enable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST
3818 disabled logging && logfile=/dev/null
3820 # command line configuration sanity checks
3822 # we need to build at least one lib type
3823 if ! enabled_any static shared; then
3825 At least one library type must be built.
3826 Specify --enable-static to build the static libraries or --enable-shared to
3827 build the shared libraries as well. To only build the shared libraries specify
3828 --disable-static in addition to --enable-shared.
3833 die_license_disabled() {
3834 enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; }
3837 die_license_disabled_gpl() {
3838 enabled $1 || { enabled $v && die "$v is incompatible with the gpl and --enable-$1 is not specified."; }
3841 map "die_license_disabled gpl" $EXTERNAL_LIBRARY_GPL_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
3842 map "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
3844 enabled gpl && map "die_license_disabled_gpl nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST
3845 map "die_license_disabled nonfree" $HWACCEL_LIBRARY_NONFREE_LIST
3847 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3849 if enabled nonfree; then
3850 license="nonfree and unredistributable"
3851 elif enabled gplv3; then
3852 license="GPL version 3 or later"
3853 elif enabled lgplv3; then
3854 license="LGPL version 3 or later"
3855 elif enabled gpl; then
3856 license="GPL version 2 or later"
3858 license="LGPL version 2.1 or later"
3861 enabled_all gnutls openssl &&
3862 die "GnuTLS and OpenSSL must not be enabled at the same time."
3864 # Disable all the library-specific components if the library itself
3865 # is disabled, see AVCODEC_LIST and following _LIST variables.
3867 disable_components(){
3868 disabled ${1} && disable $(
3869 eval components="\$$(toupper ${1})_COMPONENTS"
3870 map 'eval echo \${$(toupper ${v%s})_LIST}' $components
3874 map 'disable_components $v' $LIBRARY_LIST
3876 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
3879 test -n "$valgrind" && toolchain="valgrind-memcheck"
3881 enabled ossfuzz && {
3882 add_cflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp -fno-omit-frame-pointer
3883 add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp
3886 case "$toolchain" in
3888 cc_default="${toolchain%-asan}"
3889 add_cflags -fsanitize=address
3890 add_ldflags -fsanitize=address
3893 cc_default="${toolchain%-msan}"
3894 add_cflags -fsanitize=memory -fsanitize-memory-track-origins
3895 add_ldflags -fsanitize=memory
3898 cc_default="${toolchain%-tsan}"
3899 add_cflags -fsanitize=thread -fPIE
3900 add_ldflags -fsanitize=thread -pie
3901 case "$toolchain" in
3909 cc_default="${toolchain%-usan}"
3910 add_cflags -fsanitize=undefined
3911 add_ldflags -fsanitize=undefined
3914 target_exec_default="valgrind"
3915 case "$toolchain" in
3917 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"
3920 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"
3925 # Check whether the current MSVC version needs the C99 converter.
3926 # From MSVC 2013 (compiler major version 18) onwards, it does actually
3927 # support enough of C99 to build ffmpeg. Default to the new
3928 # behaviour if the regexp was unable to match anything, since this
3929 # successfully parses the version number of existing supported
3930 # versions that require the converter (MSVC 2010 and 2012).
3931 cl_major_ver=$(cl 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
3932 if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
3936 cc_default="c99wrap cl"
3937 cxx_default="c99wrap cl"
3939 ld_default="$source_path/compat/windows/mslink"
3940 nm_default="dumpbin -symbols"
3944 as_default="armasm64"
3950 target_os_default="win32"
3951 # Use a relative path for TMPDIR. This makes sure all the
3952 # ffconf temp files are written with a relative path, avoiding
3953 # issues with msys/win32 path conversion for MSVC parameters
3954 # such as -Fo<file> or -out:<file>.
3960 nm_default="dumpbin -symbols"
3962 target_os_default="win32"
3966 add_cflags -fprofile-arcs -ftest-coverage
3967 add_ldflags -fprofile-arcs -ftest-coverage
3970 add_cflags -fprofile-arcs -ftest-coverage
3971 add_ldflags --coverage
3974 add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
3975 add_cflags -fno-strict-overflow -fstack-protector-all
3976 add_ldflags -Wl,-z,relro -Wl,-z,now
3978 add_ldexeflags -fPIE -pie
3981 die "Unknown toolchain $toolchain"
3985 if test -n "$cross_prefix"; then
3986 test -n "$arch" && test -n "$target_os" ||
3987 die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
3988 enable cross_compile
3991 ar_default="${cross_prefix}${ar_default}"
3992 cc_default="${cross_prefix}${cc_default}"
3993 cxx_default="${cross_prefix}${cxx_default}"
3994 nm_default="${cross_prefix}${nm_default}"
3995 pkg_config_default="${cross_prefix}${pkg_config_default}"
3996 if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
3997 ranlib_default="${cross_prefix}${ranlib_default} -D"
3999 ranlib_default="${cross_prefix}${ranlib_default}"
4001 strip_default="${cross_prefix}${strip_default}"
4002 windres_default="${cross_prefix}${windres_default}"
4004 sysinclude_default="${sysroot}/usr/include"
4006 set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
4007 target_exec target_os x86asmexe nvcc
4008 enabled cross_compile || host_cc_default=$cc
4011 pkg_config_fail_message=""
4012 if ! $pkg_config --version >/dev/null 2>&1; then
4013 warn "$pkg_config not found, library detection may fail."
4015 elif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags; then
4016 pkg_config_fail_message="
4017 Note: When building a static binary, add --pkg-config-flags=\"--static\"."
4020 if test $doxygen != $doxygen_default && \
4021 ! $doxygen --version >/dev/null 2>&1; then
4022 warn "Specified doxygen \"$doxygen\" not found, API documentation will fail to build."
4027 mingw32*|mingw64*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
4031 EXESUF=$(exesuf $target_os)
4032 HOSTEXESUF=$(exesuf $host_os)
4034 # set temporary file name
4035 : ${TMPDIR:=$TEMPDIR}
4039 if [ -n "$tempprefix" ] ; then
4041 tmpname="$tempprefix.${HOSTNAME}.${UID}"
4045 elif ! test_cmd mktemp -u XXXXXX; then
4046 # simple replacement for missing mktemp
4047 # NOT SAFE FOR GENERAL USE
4049 tmpname="${2%%XXX*}.${HOSTNAME}.${UID}.$$"
4055 FFTMPDIR=$(mktemp -d "${TMPDIR}/ffconf.XXXXXXXX" 2> /dev/null) ||
4056 die "Unable to create temporary directory in $TMPDIR."
4059 tmp="${FFTMPDIR}/test"$2
4060 (set -C; exec > $tmp) 2> /dev/null ||
4061 die "Unable to create temporary file in $FFTMPDIR."
4065 trap 'rm -rf -- "$FFTMPDIR"' EXIT
4071 tmpfile TMPE $EXESUF
4083 # make sure we can execute files in $TMPDIR
4084 cat > $TMPSH 2>> $logfile <<EOF
4087 chmod +x $TMPSH >> $logfile 2>&1
4088 if ! $TMPSH >> $logfile 2>&1; then
4090 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
4091 variable to another directory and make sure that it is not mounted noexec.
4093 die "Sanity test failed."
4099 # Filter out MSVC cl.exe options from cflags that shouldn't
4100 # be passed to gas-preprocessor
4110 -Wno-switch) echo -Wno-switch-enum ;;
4111 -Wno-format-zero-length) ;;
4112 -Wdisabled-optimization) ;;
4113 -Wno-pointer-sign) echo -Wno-other ;;
4119 msvc_common_flags(){
4122 # In addition to specifying certain flags under the compiler
4123 # specific filters, they must be specified here as well or else the
4124 # generic catch all at the bottom will print the original flag.
4129 -fomit-frame-pointer) ;;
4133 -fno-signed-zeros) ;;
4137 -lz) echo zlib.lib ;;
4138 -lx264) echo libx264.lib ;;
4140 -l*) echo ${flag#-l}.lib ;;
4141 -LARGEADDRESSAWARE) echo $flag ;;
4142 -L*) echo -libpath:${flag#-L} ;;
4149 msvc_common_flags "$@"
4152 -Wall) echo -W3 -wd4018 -wd4146 -wd4244 -wd4305 \
4154 -Wextra) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
4155 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
4156 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
4158 -wd4273 -wd4554 -wd4701 -wd4703 ;;
4164 msvc_common_flags "$@"
4167 # Despite what Intel's documentation says -Wall, which is supported
4168 # on Windows, does enable remarks so disable them here.
4169 -Wall) echo $flag -Qdiag-disable:remark ;;
4170 -std=c99) echo -Qstd=c99 ;;
4189 case "${flag#*=}" in
4190 native) echo -xtarget=native ;;
4191 v9|niagara) echo -xarch=sparc ;;
4192 ultrasparc) echo -xarch=sparcvis ;;
4193 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
4194 i586|pentium) echo -xchip=pentium ;;
4195 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
4196 pentium3*|c3-2) echo -xtarget=pentium3 ;;
4197 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
4198 pentium4*) echo -xtarget=pentium4 ;;
4199 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
4200 *-sse3) echo -xarch=sse3 ;;
4201 core2) echo -xarch=ssse3 -xchip=core2 ;;
4202 bonnell) echo -xarch=ssse3 ;;
4203 corei7|nehalem) echo -xtarget=nehalem ;;
4204 westmere) echo -xtarget=westmere ;;
4205 silvermont) echo -xarch=sse4_2 ;;
4206 corei7-avx|sandybridge) echo -xtarget=sandybridge ;;
4207 core-avx*|ivybridge|haswell|broadwell|skylake*|knl)
4209 amdfam10|barcelona) echo -xtarget=barcelona ;;
4210 btver1) echo -xarch=amdsse4a ;;
4211 btver2|bdver*|znver*) echo -xarch=avx ;;
4212 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
4213 k8|opteron|athlon64|athlon-fx)
4214 echo -xarch=sse2a ;;
4215 athlon*) echo -xarch=pentium_proa ;;
4218 -std=c99) echo -xc99 ;;
4219 -fomit-frame-pointer) echo -xregs=frameptr ;;
4220 -fPIC) echo -KPIC -xcode=pic32 ;;
4221 -W*,*) echo $flag ;;
4222 -f*-*|-W*|-mimpure-text) ;;
4234 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
4235 unset _ld_o _ldflags _ld_lib _ld_path
4236 unset _depflags _DEPCMD _DEPFLAGS
4239 if $_cc --version 2>&1 | grep -q '^GNU assembler'; then
4240 true # no-op to avoid reading stdin in following checks
4241 elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
4243 gcc_extra_ver=$(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)')
4244 _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver"
4245 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4248 elif $_cc -v 2>&1 | grep -qi ^gcc; then
4250 gcc_version=$($_cc --version | head -n1)
4251 gcc_basever=$($_cc -dumpversion)
4252 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
4253 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
4254 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
4255 case $gcc_basever in
4258 *) _depflags='-MMD -MF $(@:.o=.d) -MT $@' ;;
4260 if [ "$first" = true ]; then
4261 case $gcc_basever in
4263 warn "gcc 4.2 is outdated and may miscompile FFmpeg. Please use a newer compiler." ;;
4268 elif $_cc --version 2>/dev/null | grep -q ^icc; then
4270 _ident=$($_cc --version | head -n1)
4275 _flags_filter=icc_flags
4276 elif $_cc -v 2>&1 | grep -q xlc; then
4278 _ident=$($_cc -qversion 2>/dev/null | head -n1)
4280 _cflags_size='-O5 -qcompact'
4281 elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then
4282 test -d "$sysroot" || die "No valid sysroot specified."
4284 _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //')
4285 armcc_conf="$PWD/armcc.conf"
4286 $_cc --arm_linux_configure \
4287 --arm_linux_config_file="$armcc_conf" \
4288 --configure_sysroot="$sysroot" \
4289 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
4290 die "Error creating armcc configuration file."
4291 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
4292 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
4293 as_default="${cross_prefix}gcc"
4297 elif $_cc -v 2>&1 | grep -q clang; then
4299 _ident=$($_cc --version 2>/dev/null | head -n1)
4300 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4303 elif $_cc -V 2>&1 | grep -q Sun; then
4305 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
4306 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
4307 _DEPFLAGS='-xM1 -xc99'
4310 _cflags_size='-O5 -xspace'
4311 _flags_filter=suncc_flags
4312 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
4314 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
4315 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4318 _flags_filter='filter_out -Wdisabled-optimization'
4319 elif $_cc -v 2>&1 | grep -q Open64; then
4321 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
4322 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4325 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
4326 elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then
4328 _ident=$($_cc | head -n1)
4329 # 4509: "This form of conditional instruction is deprecated"
4330 _flags="-nologo -ignore 4509"
4331 _flags_filter=armasm_flags
4332 elif $_cc 2>&1 | grep -q Intel; then
4334 _ident=$($_cc 2>&1 | head -n1)
4335 _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@'
4336 # Not only is O3 broken on 13.x+ but it is slower on all previous
4337 # versions (tested) as well.
4339 _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff
4340 if $_cc 2>&1 | grep -q Linker; then
4347 _flags_filter=icl_flags
4349 _ld_path='-libpath:'
4350 # -Qdiag-error to make icl error when seeing certain unknown arguments
4351 _flags='-nologo -Qdiag-error:4044,10157'
4352 # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency
4353 # with MSVC which enables it by default.
4354 _cflags='-Qms0 -Qvec- -Qsimd- -GS -fp:precise'
4356 elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then
4357 # lld can emulate multiple different linkers; in ms link.exe mode,
4358 # the -? parameter gives the help output which contains an identifyable
4359 # string, while it gives an error in other modes.
4361 # The link.exe mode doesn't have a switch for getting the version,
4362 # but we can force it back to gnu mode and get the version from there.
4363 _ident=$($_cc -flavor gnu --version 2>/dev/null)
4365 _flags_filter=msvc_flags
4367 _ld_path='-libpath:'
4368 elif $_cc -nologo- 2>&1 | grep -q Microsoft; then
4370 _ident=$($_cc 2>&1 | head -n1 | tr -d '\r')
4371 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
4372 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
4376 if $_cc -nologo- 2>&1 | grep -q Linker; then
4383 _flags_filter=msvc_flags
4385 _ld_path='-libpath:'
4388 elif $_cc --version 2>/dev/null | grep -q ^cparser; then
4390 _ident=$($_cc --version | head -n1)
4394 _flags_filter=cparser_flags
4397 eval ${pfx}_type=\$_type
4398 eval ${pfx}_ident=\$_ident
4402 eval ${1}_C=\${_cc_c-\${${1}_C}}
4403 eval ${1}_E=\${_cc_e-\${${1}_E}}
4404 eval ${1}_O=\${_cc_o-\${${1}_O}}
4406 if [ -n "$_depflags" ]; then
4407 eval ${1}_DEPFLAGS=\$_depflags
4409 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
4410 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
4411 eval DEP${1}FLAGS=\$_flags
4415 probe_cc cc "$cc" "true"
4416 cflags_filter=$_flags_filter
4417 cflags_speed=$_cflags_speed
4418 cflags_size=$_cflags_size
4419 cflags_noopt=$_cflags_noopt
4420 add_cflags $_flags $_cflags
4421 cc_ldflags=$_ldflags
4425 probe_cc hostcc "$host_cc"
4426 host_cflags_filter=$_flags_filter
4427 host_cflags_speed=$_cflags_speed
4428 add_host_cflags $_flags $_cflags
4431 test -n "$cc_type" && enable $cc_type ||
4432 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
4434 : ${as_default:=$cc}
4435 : ${objcc_default:=$cc}
4436 : ${dep_cc_default:=$cc}
4437 : ${ld_default:=$cc}
4438 : ${host_ld_default:=$host_cc}
4439 set_default ar as objcc dep_cc ld ln_s host_ld windres
4442 asflags_filter=$_flags_filter
4443 add_asflags $_flags $_cflags
4446 probe_cc objcc "$objcc"
4447 objcflags_filter=$_flags_filter
4448 add_objcflags $_flags $_cflags
4452 ldflags_filter=$_flags_filter
4453 add_ldflags $_flags $_ldflags
4454 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
4456 LD_LIB=${_ld_lib-$LD_LIB}
4457 LD_PATH=${_ld_path-$LD_PATH}
4459 probe_cc hostld "$host_ld"
4460 host_ldflags_filter=$_flags_filter
4461 add_host_ldflags $_flags $_ldflags
4462 HOSTLD_O=${_ld_o-$HOSTLD_O}
4464 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
4465 probe_cc depcc "$dep_cc"
4466 CCDEP=${_DEPCMD:-$DEPCMD}
4467 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
4471 if $ar 2>&1 | grep -q Microsoft; then
4474 elif $ar 2>&1 | grep -q "\[D\] "; then
4482 add_cflags $extra_cflags
4483 add_cxxflags $extra_cxxflags
4484 add_objcflags $extra_objcflags
4485 add_asflags $extra_cflags
4487 if test -n "$sysroot"; then
4490 add_cppflags --sysroot="$sysroot"
4491 add_ldflags --sysroot="$sysroot"
4496 if test "$cpu" = host; then
4497 enabled cross_compile &&
4498 die "--cpu=host makes no sense when cross-compiling."
4503 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
4505 s/.*$1=\\([^ ]*\\).*/\\1/
4510 cpu=$(check_native -march || check_native -mcpu)
4514 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
4515 sed -n "/cc1.*-target-cpu /{
4516 s/.*-target-cpu \\([^ ]*\\).*/\\1/
4521 cpu=$(check_native -march)
4525 test "${cpu:-host}" = host &&
4526 die "--cpu=host not supported with compiler $cc"
4529 # Deal with common $arch aliases
4553 "Power Macintosh"|ppc*|powerpc*)
4568 i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
4573 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
4576 # Add processor-specific flags
4577 if enabled aarch64; then
4581 cpuflags="-march=$cpu"
4584 cpuflags="-mcpu=$cpu"
4588 elif enabled alpha; then
4590 cpuflags="-mcpu=$cpu"
4592 elif enabled arm; then
4595 test_cpp_condition stddef.h \
4596 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
4601 if check_arm_arch 4; then echo armv4
4602 elif check_arm_arch 4T; then echo armv4t
4603 elif check_arm_arch 5; then echo armv5
4604 elif check_arm_arch 5E; then echo armv5e
4605 elif check_arm_arch 5T; then echo armv5t
4606 elif check_arm_arch 5TE; then echo armv5te
4607 elif check_arm_arch 5TEJ; then echo armv5te
4608 elif check_arm_arch 6; then echo armv6
4609 elif check_arm_arch 6J; then echo armv6j
4610 elif check_arm_arch 6K; then echo armv6k
4611 elif check_arm_arch 6Z; then echo armv6z
4612 elif check_arm_arch 6KZ; then echo armv6zk
4613 elif check_arm_arch 6ZK; then echo armv6zk
4614 elif check_arm_arch 6T2; then echo armv6t2
4615 elif check_arm_arch 7; then echo armv7
4616 elif check_arm_arch 7A 7_A; then echo armv7-a
4617 elif check_arm_arch 7S; then echo armv7-a
4618 elif check_arm_arch 7R 7_R; then echo armv7-r
4619 elif check_arm_arch 7M 7_M; then echo armv7-m
4620 elif check_arm_arch 7EM 7E_M; then echo armv7-m
4621 elif check_arm_arch 8A 8_A; then echo armv8-a
4625 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
4629 cpuflags="-march=$cpu"
4630 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
4633 cpuflags="-mcpu=$cpu"
4635 cortex-a*) subarch=armv7a ;;
4636 cortex-r*) subarch=armv7r ;;
4637 cortex-m*) enable thumb; subarch=armv7m ;;
4638 arm11*) subarch=armv6 ;;
4639 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
4640 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
4641 *) subarch=$(probe_arm_arch) ;;
4647 armv5t*) enable fast_clz ;;
4650 disabled fast_unaligned || enable fast_unaligned
4654 elif enabled avr32; then
4659 cpuflags="-mpart=$cpu"
4663 cpuflags="-march=$cpu"
4667 cpuflags="-mcpu=$cpu"
4671 cpuflags="-march=$cpu"
4675 elif enabled bfin; then
4677 cpuflags="-mcpu=$cpu"
4679 elif enabled mips; then
4681 cpuflags="-march=$cpu"
4683 if [ "$cpu" != "generic" ]; then
4693 24kc|24kf*|24kec|34kc|1004kc|24kef*|34kf*|1004kf*|74kc|74kf)
4704 enable local_aligned
4705 enable simd_align_16
4709 enable fast_unaligned
4710 disable aligned_stack
4716 cpuflags="-march=loongson3a -mhard-float -fno-expensive-optimizations"
4719 cpuflags="-march=loongson2e -mhard-float -fno-expensive-optimizations"
4722 cpuflags="-march=loongson2f -mhard-float -fno-expensive-optimizations"
4727 # Unknown CPU. Disable everything.
4728 warn "unknown CPU. Disabling all MIPS optimizations."
4751 24kef*|34kf*|1004kf*)
4759 check_cflags "-mtune=p5600" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops"
4763 check_cflags "-mtune=i6400 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
4767 check_cflags "-mtune=p6600 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
4771 # We do not disable anything. Is up to the user to disable the unwanted features.
4772 warn 'generic cpu selected'
4775 elif enabled ppc; then
4779 case $(tolower $cpu) in
4780 601|ppc601|powerpc601)
4781 cpuflags="-mcpu=601"
4784 603*|ppc603*|powerpc603*)
4785 cpuflags="-mcpu=603"
4788 604*|ppc604*|powerpc604*)
4789 cpuflags="-mcpu=604"
4792 g3|75*|ppc75*|powerpc75*)
4793 cpuflags="-mcpu=750"
4796 g4|745*|ppc745*|powerpc745*)
4797 cpuflags="-mcpu=7450"
4800 74*|ppc74*|powerpc74*)
4801 cpuflags="-mcpu=7400"
4804 g5|970|ppc970|powerpc970)
4805 cpuflags="-mcpu=970"
4809 cpuflags="-mcpu=$cpu"
4813 cpuflags="-mcpu=$cpu"
4816 cpuflags="-mcpu=cell"
4821 cpuflags="-mcpu=e500mc"
4825 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
4830 cpuflags="-mcpu=8540 -mhard-float"
4836 elif enabled sparc; then
4839 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
4840 cpuflags="-mcpu=$cpu"
4842 ultrasparc*|niagara[234])
4843 cpuflags="-mcpu=$cpu"
4847 elif enabled x86; then
4851 cpuflags="-march=$cpu"
4855 # targets that do NOT support nopl and conditional mov (cmov)
4856 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
4857 cpuflags="-march=$cpu"
4860 # targets that do support nopl and conditional mov (cmov)
4861 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx\
4862 |core*|atom|bonnell|nehalem|westmere|silvermont|sandybridge|ivybridge|haswell|broadwell|skylake*|knl\
4863 |amdfam10|barcelona|b[dt]ver*|znver*)
4864 cpuflags="-march=$cpu"
4868 # targets that do support conditional mov but on which it's slow
4869 pentium4|pentium4m|prescott|nocona)
4870 cpuflags="-march=$cpu"
4878 if [ "$cpu" != generic ]; then
4879 add_cflags $cpuflags
4880 add_asflags $cpuflags
4881 test "$cc_type" = "$ld_type" && add_ldflags $cpuflags
4884 # compiler sanity check
4886 int main(void){ return 0; }
4888 if test "$?" != 0; then
4889 echo "$cc is unable to create an executable file."
4890 if test -z "$cross_prefix" && ! enabled cross_compile ; then
4891 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
4892 echo "Only do this if you know what cross compiling means."
4894 die "C compiler test failed."
4897 add_cppflags -D_ISOC99_SOURCE
4898 add_cxxflags -D__STDC_CONSTANT_MACROS
4899 check_cxxflags -std=c++11 || check_cxxflags -std=c++0x
4901 # some compilers silently accept -std=c11, so we also need to check that the
4902 # version macro is defined properly
4903 test_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L" &&
4904 add_cflags -std=c11 ||
4905 check_cflags -std=c99
4907 check_cppflags -D_FILE_OFFSET_BITS=64
4908 check_cppflags -D_LARGEFILE_SOURCE
4910 add_host_cppflags -D_ISOC99_SOURCE
4911 check_host_cflags -std=c99
4912 check_host_cflags -Wall
4913 check_host_cflags $host_cflags_speed
4918 expr=${3:-'sizeof(void *) > 4'}
4919 test_code cc "" "int test[2*($expr) - 1]" &&
4920 subarch=$arch64 || subarch=$arch32
4926 enabled shared && enable_weak pic
4929 check_64bit mips mips64 '_MIPS_SIM > 1'
4930 enabled shared && enable_weak pic
4933 check_64bit parisc parisc64
4934 enabled shared && enable_weak pic
4937 check_64bit ppc ppc64
4938 enabled shared && enable_weak pic
4941 check_64bit s390 s390x
4942 enabled shared && enable_weak pic
4945 check_64bit sparc sparc64
4946 enabled shared && enable_weak pic
4949 check_64bit x86_32 x86_64
4950 # Treat x32 as x64 for now. Note it also needs pic if shared
4951 test "$subarch" = "x86_32" && test_cpp_condition stddef.h 'defined(__x86_64__)' &&
4952 subarch=x86_64 && enable x86_64 && disable x86_32
4953 if enabled x86_64; then
4954 enabled shared && enable_weak pic
4964 add_cppflags '-I\$(SRC_PATH)/compat/aix'
4965 enabled shared && add_ldflags -Wl,-brtl
4966 arflags='-Xany -r -c'
4970 enable section_data_rel_ro
4971 SLIB_INSTALL_NAME='$(SLIBNAME)'
4973 SHFLAGS='-shared -Wl,-soname,$(SLIBNAME)'
4976 prefix_default="/boot/common"
4977 network_extralibs="-lnetwork"
4981 SHFLAGS='-shared -Wl,-h,$$(@F)'
4982 enabled x86 && append SHFLAGS -mimpure-text
4983 network_extralibs="-lsocket -lnsl"
4984 add_cppflags -D__EXTENSIONS__
4985 # When using suncc to build, the Solaris linker will mark
4986 # an executable with each instruction set encountered by
4987 # the Solaris assembler. As our libraries contain their own
4988 # guards for processor-specific code, instead suppress
4989 # generation of the HWCAPS ELF section on Solaris x86 only.
4990 enabled_all suncc x86 &&
4991 echo "hwcap_1 = OVERRIDE;" > mapfile &&
4992 add_ldflags -Wl,-M,mapfile
4993 nm_default='nm -P -g'
4995 VERSION_SCRIPT_POSTPROCESS_CMD='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
4999 oss_indev_extralibs="-lossaudio"
5000 oss_outdev_extralibs="-lossaudio"
5001 enabled gcc || check_ldflags -Wl,-zmuldefs
5006 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
5008 oss_indev_extralibs="-lossaudio"
5009 oss_outdev_extralibs="-lossaudio"
5017 add_extralibs -lpoll -lgnugetopt
5021 enabled ppc && add_asflags -force_cpusubtype_ALL
5022 install_name_dir_default='$(SHLIBDIR)'
5023 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
5024 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
5026 add_ldflags -Wl,-dynamic,-search_paths_first
5027 check_cflags -Werror=partial-availability
5029 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
5030 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
5031 enabled x86_64 && objformat="macho64" || objformat="macho32"
5032 enabled_any pic shared x86_64 ||
5033 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
5034 check_header dispatch/dispatch.h &&
5035 add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore'
5036 if test -n "$sysroot"; then
5037 is_in -isysroot $cc $CPPFLAGS $CFLAGS || check_cppflags -isysroot $sysroot
5038 is_in -isysroot $ld $LDFLAGS || check_ldflags -isysroot $sysroot
5040 version_script='-exported_symbols_list'
5041 VERSION_SCRIPT_POSTPROCESS_CMD='tr " " "\n" | sed -n /global:/,/local:/p | grep ";" | tr ";" "\n" | sed -E "s/(.+)/_\1/g" | sed -E "s/(.+[^*])$$$$/\1*/"'
5044 die "Native MSYS builds are discouraged, please use the MINGW environment."
5049 if enabled x86_64; then
5050 LIBTARGET="i386:x86-64"
5051 elif enabled arm; then
5053 elif enabled aarch64; then
5056 if enabled shared; then
5057 # Cannot build both shared and static libs when using dllimport.
5060 enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres
5061 enabled x86_32 && check_ldflags -Wl,--large-address-aware
5062 shlibdir_default="$bindir_default"
5065 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
5066 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
5067 if test_cmd lib.exe -list; then
5068 SLIB_EXTRA_CMD=-'lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
5069 if enabled x86_64; then
5073 SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
5075 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
5077 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
5078 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
5079 SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" AR="$(AR_CMD)" NM="$(NM_CMD)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
5080 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--disable-auto-image-base $$(@:$(SLIBSUF)=.def)'
5081 enabled x86_64 && objformat="win64" || objformat="win32"
5082 dlltool="${cross_prefix}dlltool"
5085 check_ldflags -Wl,--nxcompat,--dynamicbase
5086 # Lets work around some stupidity in binutils.
5087 # ld will strip relocations from executables even though we need them
5088 # for dynamicbase (ASLR). Using -pie does retain the reloc section
5089 # however ld then forgets what the entry point should be (oops) so we
5090 # have to manually (re)set it.
5091 if enabled x86_32; then
5092 disabled debug && add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup
5093 elif enabled x86_64; then
5094 disabled debug && add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup
5095 check_ldflags -Wl,--high-entropy-va # binutils 2.25
5096 # Set image base >4GB for extra entropy with HEASLR
5097 add_ldexeflags -Wl,--image-base,0x140000000
5098 append SHFLAGS -Wl,--image-base,0x180000000
5103 if enabled shared; then
5104 # Link to the import library instead of the normal static library
5107 # Cannot build both shared and static libs with MSVC or icl.
5110 enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
5111 shlibdir_default="$bindir_default"
5114 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
5115 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
5116 SLIB_CREATE_DEF_CMD='EXTERN_PREFIX="$(EXTERN_PREFIX)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
5117 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
5119 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
5120 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
5121 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
5122 enabled x86_64 && objformat="win64" || objformat="win32"
5128 shlibdir_default="$bindir_default"
5131 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
5132 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
5133 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
5135 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
5136 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
5137 enabled x86_64 && objformat="win64" || objformat="win32"
5139 enabled shared && ! enabled small && test_cmd $windres --version && enable gnu_windres
5140 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5142 *-dos|freedos|opendos)
5143 network_extralibs="-lsocket"
5146 add_cppflags -U__STRICT_ANSI__
5149 enable section_data_rel_ro
5150 enabled_any arm aarch64 && enable_weak linux_perf
5154 ranlib="echo ignoring ranlib"
5160 add_cppflags -D_GNU_SOURCE
5161 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zhigh-mem -Zmap
5162 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
5166 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
5167 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(FULLNAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
5168 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(FULLNAME).def; \
5169 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(FULLNAME).def; \
5170 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(FULLNAME).def; \
5171 echo EXPORTS >> $(SUBDIR)$(FULLNAME).def; \
5172 emxexp $(OBJS) >> $(SUBDIR)$(FULLNAME).def'
5173 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.a $(SUBDIR)$(FULLNAME).def; \
5174 emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.lib $(SUBDIR)$(FULLNAME).def;'
5175 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
5177 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(FULLNAME)_dll.a $(LIBPREF)$(FULLNAME)_dll.lib'
5179 enable_weak os2threads
5182 add_cppflags -D_BSD_SOURCE
5187 add_cppflags -D_QNX_SOURCE
5188 network_extralibs="-lsocket"
5193 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
5194 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
5195 add_ldflags -Wl,--target1-abs,--no-undefined \
5196 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
5197 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
5198 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
5199 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
5200 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
5207 die "Unknown OS '$target_os'."
5211 # test if creating links works
5212 link_dest=$(mktemp -u $TMPDIR/dest_XXXXXXXX)
5213 link_name=$(mktemp -u $TMPDIR/name_XXXXXXXX)
5215 $ln_s "$link_dest" "$link_name"
5216 touch "$link_dest/test_file"
5217 if [ "$source_path" != "." ] && ([ ! -d src ] || [ -L src ]) && [ -e "$link_name/test_file" ]; then
5218 # create link to source path
5219 [ -e src ] && rm src
5220 $ln_s "$source_path" src
5223 # creating directory links doesn't work
5224 # fall back to using the full source path
5225 source_link="$source_path"
5231 # determine libc flavour
5236 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
5237 if test_${pfx}cpp_condition features.h "defined __UCLIBC__"; then
5238 eval ${pfx}libc_type=uclibc
5239 add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5240 elif test_${pfx}cpp_condition features.h "defined __GLIBC__"; then
5241 eval ${pfx}libc_type=glibc
5242 add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5243 # MinGW headers can be installed on Cygwin, so check for newlib first.
5244 elif test_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
5245 eval ${pfx}libc_type=newlib
5246 add_${pfx}cppflags -U__STRICT_ANSI__ -D_XOPEN_SOURCE=600
5247 # MinGW64 is backwards compatible with MinGW32, so check for it first.
5248 elif test_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
5249 eval ${pfx}libc_type=mingw64
5250 if test_${pfx}cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then
5251 add_compat msvcrt/snprintf.o
5252 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
5254 add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
5255 eval test \$${pfx_no_}cc_type = "gcc" &&
5256 add_${pfx}cppflags -D__printf__=__gnu_printf__
5257 test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" &&
5258 add_${pfx}cppflags -D_WIN32_WINNT=0x0600
5259 elif test_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION" ||
5260 test_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
5261 eval ${pfx}libc_type=mingw32
5262 test_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
5263 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
5264 die "ERROR: MinGW32 runtime version must be >= 3.15."
5265 add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
5266 test_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700" &&
5267 add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700
5268 test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" &&
5269 add_${pfx}cppflags -D_WIN32_WINNT=0x0600
5270 eval test \$${pfx_no_}cc_type = "gcc" &&
5271 add_${pfx}cppflags -D__printf__=__gnu_printf__
5272 elif test_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
5273 eval ${pfx}libc_type=msvcrt
5274 if test_${pfx}cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14"; then
5275 if [ "$pfx" = host_ ]; then
5276 add_host_cppflags -Dsnprintf=_snprintf
5278 add_compat strtod.o strtod=avpriv_strtod
5279 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
5280 _snprintf=avpriv_snprintf \
5281 vsnprintf=avpriv_vsnprintf
5284 add_${pfx}cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS
5285 # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
5286 # 0x601 by default unless something else is set by the user.
5287 # This can easily lead to us detecting functions only present
5288 # in such new versions and producing binaries requiring windows 7.0.
5289 # Therefore explicitly set the default to Vista unless the user has
5290 # set something else on the command line.
5291 # Don't do this if WINAPI_FAMILY is set and is set to a non-desktop
5292 # family. For these cases, configure is free to use any functions
5293 # found in the SDK headers by default. (Alternatively, we could force
5294 # _WIN32_WINNT to 0x0602 in that case.)
5295 test_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
5296 { test_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0600; }
5297 #ifdef WINAPI_FAMILY
5298 #include <winapifamily.h>
5299 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
5304 if [ "$pfx" = "" ]; then
5305 check_func strtoll || add_cflags -Dstrtoll=_strtoi64
5306 check_func strtoull || add_cflags -Dstrtoull=_strtoui64
5308 elif test_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
5309 eval ${pfx}libc_type=klibc
5310 elif test_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
5311 eval ${pfx}libc_type=bionic
5312 elif test_${pfx}cpp_condition sys/brand.h "defined LABELED_BRAND_NAME"; then
5313 eval ${pfx}libc_type=solaris
5314 add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
5318 void *v = localtime_r;
5320 test "$?" != 0 && test_${pfx}cc -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 <<EOF && add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5322 void *v = localtime_r;
5325 eval test -n "\${${pfx}libc_type}" && enable ${pfx}libc_${libc_type}
5331 # hacks for compiler/libc/os combinations
5335 add_compat strtod.o strtod=avpriv_strtod
5339 check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
5340 add_cppflags '-I\$(SRC_PATH)/compat/float'
5342 test_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
5345 : ${shlibdir_default:="$libdir"}
5346 : ${pkgconfigdir_default:="$libdir/pkgconfig"}
5348 set_default $PATHS_LIST
5351 disabled optimizations || enabled ossfuzz || check_cflags -fomit-frame-pointer
5354 disabled pic && return
5357 case "$target_os" in
5358 mingw*|cygwin*|win*)
5367 enabled pic && enable_weak_pic
5369 test_cc <<EOF || die "Symbol mangling check failed."
5372 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
5373 extern_prefix=${sym%%ff_extern*}
5375 ! disabled inline_asm && check_inline_asm inline_asm '"" ::'
5377 for restrict_keyword in restrict __restrict__ __restrict ""; do
5378 test_code cc "" "char * $restrict_keyword p" && break
5381 check_cc pragma_deprecated "" '_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")'
5383 test_cc <<EOF || die "endian test failed"
5384 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
5386 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
5388 check_cc const_nan math.h "struct { double d; } static const bar[] = { { NAN } }"
5390 if ! enabled ppc64 || enabled bigendian; then
5395 log "check_gas using '$as' as AS"
5396 # :vararg is used on aarch64, arm and ppc altivec
5397 test_as <<EOF || return 1
5398 .macro m n, y:vararg=0
5403 # .altmacro is only used in arm asm
5404 ! enabled arm || test_as <<EOF || return 1
5411 if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then
5413 enabled_any arm aarch64 && nogas=die
5414 enabled_all ppc altivec && [ $target_os_default != aix ] && nogas=warn
5418 arm*) gaspp_as_type=armasm; as_noop=-h ;;
5419 gcc) gaspp_as_type=gas ;;
5420 *) gaspp_as_type=$as_type ;;
5423 [ $target_os = "darwin" ] && gaspp_as_type="apple-$gaspp_as_type"
5425 test "${as#*gas-preprocessor.pl}" != "$as" ||
5426 test_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- ${as:=$cc} $as_noop &&
5427 gas="${gas:=gas-preprocessor.pl} -arch $arch -as-type $gaspp_as_type -- ${as:=$cc}"
5429 if ! check_gas ; then
5432 $nogas "GNU assembler not found, install/update gas-preprocessor"
5435 test_as <<EOF && enable as_func
5441 check_inline_asm inline_asm_labels '"1:\n"'
5443 check_inline_asm inline_asm_nonlocal_labels '"Label:\n"'
5445 if enabled aarch64; then
5446 enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]'
5447 # internal assembler in clang 3.3 does not support this instruction
5448 enabled neon && check_insn neon 'ext v0.8B, v0.8B, v1.8B, #1'
5449 enabled vfp && check_insn vfp 'fmadd d0, d0, d1, d2'
5451 map 'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM
5453 elif enabled alpha; then
5457 elif enabled arm; then
5459 enabled msvc && check_cpp_condition thumb stddef.h "defined _M_ARMT"
5460 test_cpp_condition stddef.h "defined __thumb__" && test_cc <<EOF && enable_weak thumb
5461 float func(float a, float b){ return a+b; }
5463 enabled thumb && check_cflags -mthumb || check_cflags -marm
5465 if check_cpp_condition vfp_args stddef.h "defined __ARM_PCS_VFP"; then
5467 elif check_cpp_condition vfp_args stddef.h "defined _M_ARM_FP && _M_ARM_FP >= 30"; then
5469 elif ! test_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ]; then
5470 case "${cross_prefix:-$cc}" in
5471 *hardfloat*) enable vfp_args; fpabi=vfp ;;
5472 *) test_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
5473 __asm__ (".eabi_attribute 28, 1");
5474 int main(void) { return 0; }
5477 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
5480 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
5481 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
5482 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
5483 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
5484 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
5485 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
5486 enabled setend && check_insn setend 'setend be'
5488 [ $target_os = linux ] || [ $target_os = android ] ||
5489 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
5492 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
5494 test_as <<EOF && enable as_arch_directive
5497 test_as <<EOF && enable as_fpu_directive
5501 # llvm's integrated assembler supports .object_arch from llvm 3.5
5502 [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] &&
5503 test_as <<EOF && enable as_object_arch
5507 # MS armasm fails to assemble our PIC constructs
5508 [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
5510 elif enabled mips; then
5512 enabled loongson2 && check_inline_asm loongson2 '"dmult.g $8, $9, $10"'
5513 enabled loongson3 && check_inline_asm loongson3 '"gsldxc1 $f0, 0($2, $3)"'
5514 enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"'
5516 # Enable minimum ISA based on selected options
5517 if enabled mips64; then
5518 enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6'
5519 enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2'
5520 disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64'
5522 enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6'
5523 enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5'
5524 enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2'
5525 disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32'
5528 enabled mipsfpu && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f2"' '-mhard-float'
5529 enabled mipsfpu && (enabled mips32r5 || enabled mips32r6 || enabled mips64r6) && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f1"' '-mfp64'
5530 enabled mipsfpu && enabled msa && check_inline_asm_flags msa '"addvi.b $w0, $w1, 1"' '-mmsa' && check_header msa.h || disable msa
5531 enabled mipsdsp && check_inline_asm_flags mipsdsp '"addu.qb $t0, $t1, $t2"' '-mdsp'
5532 enabled mipsdspr2 && check_inline_asm_flags mipsdspr2 '"absq_s.qb $t0, $t1"' '-mdspr2'
5534 if enabled bigendian && enabled msa; then
5538 elif enabled parisc; then
5540 if enabled gcc; then
5541 case $($cc -dumpversion) in
5542 4.[3-9].*) check_cflags -fno-optimize-sibling-calls ;;
5546 elif enabled ppc; then
5548 enable local_aligned
5550 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
5551 check_inline_asm ibm_asm '"add 0, 0, 0"'
5552 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
5553 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
5555 if enabled altivec; then
5556 check_cflags -maltivec -mabi=altivec
5558 # check if our compiler supports Motorola AltiVec C API
5559 check_cc altivec altivec.h "vector signed int v1 = (vector signed int) { 0 };
5560 vector signed int v2 = (vector signed int) { 1 };
5561 v1 = vec_add(v1, v2);"
5563 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
5566 if enabled vsx; then
5567 check_cflags -mvsx &&
5568 check_cc vsx altivec.h "int v[4] = { 0 };
5569 vector signed int v1 = vec_vsx_ld(0, v);"
5572 if enabled power8; then
5573 check_cpp_condition power8 "altivec.h" "defined(_ARCH_PWR8)"
5576 elif enabled x86; then
5578 check_builtin rdtsc intrin.h "__rdtsc()"
5579 check_builtin mm_empty mmintrin.h "_mm_empty()"
5581 enable local_aligned
5583 # check whether EBP is available on x86
5584 # As 'i' is stored on the stack, this program will crash
5585 # if the base pointer is used to access it because the
5586 # base pointer is cleared in the inline assembly code.
5587 check_exec_crash <<EOF && enable ebp_available
5589 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
5593 # check whether EBX is available on x86
5594 check_inline_asm ebx_available '""::"b"(0)' &&
5595 check_inline_asm ebx_available '"":::"%ebx"'
5597 # check whether xmm clobbers are supported
5598 check_inline_asm xmm_clobbers '"":::"%xmm0"'
5600 check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test, %eax"' ||
5601 check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test(%rip), %eax"'
5603 # check whether binutils is new enough to compile SSSE3/MMXEXT
5604 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
5605 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
5609 if test_cmd $x86asmexe_probe -v; then
5610 x86asmexe=$x86asmexe_probe
5612 x86asm_debug="-g -F dwarf"
5614 X86ASM_DEPFLAGS='-MD $(@:.o=.d)'
5615 elif test_cmd $x86asmexe_probe --version; then
5616 x86asmexe=$x86asmexe_probe
5618 x86asm_debug="-g dwarf2"
5619 X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)'
5622 test_x86asm "movbe ecx, [5]" && enable x86asm
5625 if ! disabled_any asm mmx x86asm; then
5627 for program in $x86asmexe nasm yasm; do
5628 probe_x86asm $program && break
5630 disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build."
5631 X86ASMFLAGS="-f $objformat"
5632 enabled pic && append X86ASMFLAGS "-DPIC"
5633 test -n "$extern_prefix" && append X86ASMFLAGS "-DPREFIX"
5634 case "$objformat" in
5635 elf*) enabled debug && append X86ASMFLAGS $x86asm_debug ;;
5638 test_x86asm "vmovdqa32 [eax]{k1}{z}, zmm0" || disable avx512_external
5639 test_x86asm "vextracti128 xmm0, ymm0, 0" || disable avx2_external
5640 test_x86asm "vpmacsdd xmm0, xmm1, xmm2, xmm3" || disable xop_external
5641 test_x86asm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
5642 test_x86asm "CPU amdnop" || disable cpunop
5646 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
5653 check_cc intrinsics_neon arm_neon.h "int16x8_t test = vdupq_n_s16(0)"
5655 check_ldflags -Wl,--as-needed
5656 check_ldflags -Wl,-z,noexecstack
5658 if ! disabled network; then
5659 check_func getaddrinfo $network_extralibs
5660 check_func inet_aton $network_extralibs
5662 check_type netdb.h "struct addrinfo"
5663 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
5664 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
5665 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
5666 check_type poll.h "struct pollfd"
5667 check_type netinet/sctp.h "struct sctp_event_subscribe"
5668 check_struct "sys/socket.h" "struct msghdr" msg_flags
5669 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
5670 check_type netinet/in.h "struct sockaddr_in6"
5671 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
5672 check_type "sys/types.h sys/socket.h" socklen_t
5674 # Prefer arpa/inet.h over winsock2
5675 if check_header arpa/inet.h ; then
5676 check_func closesocket
5677 elif check_header winsock2.h ; then
5678 check_func_headers winsock2.h closesocket -lws2 &&
5679 network_extralibs="-lws2" ||
5680 { check_func_headers winsock2.h closesocket -lws2_32 &&
5681 network_extralibs="-lws2_32"; } || disable winsock2_h network
5682 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
5684 check_type ws2tcpip.h socklen_t
5685 check_type ws2tcpip.h "struct addrinfo"
5686 check_type ws2tcpip.h "struct group_source_req"
5687 check_type ws2tcpip.h "struct ip_mreq_source"
5688 check_type ws2tcpip.h "struct ipv6_mreq"
5689 check_type winsock2.h "struct pollfd"
5690 check_struct winsock2.h "struct sockaddr" sa_len
5691 check_type ws2tcpip.h "struct sockaddr_in6"
5692 check_type ws2tcpip.h "struct sockaddr_storage"
5698 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
5699 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
5700 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
5701 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
5702 check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)"
5703 check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)"
5704 check_builtin x264_csp_bgr "stdint.h x264.h" "X264_CSP_BGR"
5706 case "$custom_allocator" in
5708 # jemalloc by default does not use a prefix
5709 require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc
5712 require_pkg_config libtcmalloc libtcmalloc gperftools/tcmalloc.h tc_malloc
5717 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
5718 check_func ${malloc_prefix}memalign && enable memalign
5719 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
5722 check_func_headers stdlib.h arc4random
5723 check_lib clock_gettime time.h clock_gettime || check_lib clock_gettime time.h clock_gettime -lrt
5726 check_func gethrtime
5728 check_func getrusage
5729 check_func gettimeofday
5734 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
5735 check_func_headers time.h nanosleep || check_lib nanosleep time.h nanosleep -lrt
5736 check_func sched_getaffinity
5737 check_func setrlimit
5738 check_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE
5739 check_func strerror_r
5744 check_func_headers conio.h kbhit
5745 check_func_headers io.h setmode
5746 check_func_headers lzo/lzo1x.h lzo1x_999_compress
5747 check_func_headers mach/mach_time.h mach_absolute_time
5748 check_func_headers stdlib.h getenv
5749 check_func_headers sys/stat.h lstat
5751 check_func_headers windows.h GetProcessAffinityMask
5752 check_func_headers windows.h GetProcessTimes
5753 check_func_headers windows.h GetSystemTimeAsFileTime
5754 check_func_headers windows.h LoadLibrary
5755 check_func_headers windows.h MapViewOfFile
5756 check_func_headers windows.h PeekNamedPipe
5757 check_func_headers windows.h SetConsoleTextAttribute
5758 check_func_headers windows.h SetConsoleCtrlHandler
5759 check_func_headers windows.h Sleep
5760 check_func_headers windows.h VirtualAlloc
5761 check_func_headers glob.h glob
5763 check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext
5765 check_header direct.h
5766 check_header dirent.h
5767 check_header dxgidebug.h
5769 check_header dxva2api.h -D_WIN32_WINNT=0x0600
5771 check_header libcrystalhd/libcrystalhd_if.h
5772 check_header malloc.h
5773 check_header net/udplite.h
5775 check_header sys/param.h
5776 check_header sys/resource.h
5777 check_header sys/select.h
5778 check_header sys/time.h
5779 check_header sys/un.h
5780 check_header termios.h
5781 check_header unistd.h
5782 check_header valgrind/valgrind.h
5783 check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepareToEncodeFrames -framework VideoToolbox
5784 check_header windows.h
5785 check_header X11/extensions/XvMClib.h
5786 check_header asm/types.h
5788 # it seems there are versions of clang in some distros that try to use the
5789 # gcc headers, which explodes for stdatomic
5790 # so we also check that atomics actually work here
5791 check_builtin stdatomic stdatomic.h "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0)"
5793 check_lib advapi32 "windows.h" RegCloseKey -ladvapi32
5794 check_lib ole32 "windows.h" CoTaskMemFree -lole32
5795 check_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32
5796 check_lib wincrypt "windows.h wincrypt.h" CryptGenRandom -ladvapi32
5797 check_lib psapi "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
5799 check_lib android android/native_window.h ANativeWindow_acquire -landroid
5800 check_lib mediandk "stdint.h media/NdkImage.h" AImage_delete -lmediandk
5801 check_lib camera2ndk "stdbool.h stdint.h camera/NdkCameraManager.h" ACameraManager_create -lcamera2ndk
5803 enabled appkit && check_apple_framework AppKit
5804 enabled audiotoolbox && check_apple_framework AudioToolbox
5805 enabled avfoundation && check_apple_framework AVFoundation
5806 enabled coreimage && check_apple_framework CoreImage
5807 enabled videotoolbox && check_apple_framework VideoToolbox
5809 check_apple_framework CoreFoundation
5810 check_apple_framework CoreMedia
5811 check_apple_framework CoreVideo
5813 enabled avfoundation && {
5814 disable coregraphics applicationservices
5815 check_lib coregraphics CoreGraphics/CoreGraphics.h CGGetActiveDisplayList "-framework CoreGraphics" ||
5816 check_lib applicationservices ApplicationServices/ApplicationServices.h CGGetActiveDisplayList "-framework ApplicationServices"; }
5818 enabled videotoolbox && {
5819 check_lib coreservices CoreServices/CoreServices.h UTGetOSTypeFromString "-framework CoreServices"
5820 check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVC "-framework CoreMedia"
5823 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
5825 check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
5826 check_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
5827 check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
5828 check_type "windows.h d3d11.h" "ID3D11VideoContext"
5829 check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
5831 check_type "va/va.h va/va_dec_hevc.h" "VAPictureParameterBufferHEVC"
5832 check_type "va/va.h va/va_dec_vp8.h" "VAPictureParameterBufferVP8"
5833 check_struct "va/va.h" "VADecPictureParameterBufferVP9" bit_depth
5834 check_type "va/va.h va/va_vpp.h" "VAProcPipelineParameterBuffer"
5835 check_type "va/va.h va/va_enc_h264.h" "VAEncPictureParameterBufferH264"
5836 check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC"
5837 check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
5838 check_type "va/va.h va/va_enc_mpeg2.h" "VAEncPictureParameterBufferMPEG2"
5839 check_type "va/va.h va/va_enc_vp8.h" "VAEncPictureParameterBufferVP8"
5840 check_type "va/va.h va/va_enc_vp9.h" "VAEncPictureParameterBufferVP9"
5842 check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
5844 if ! disabled ffnvcodec; then
5845 check_pkg_config ffnvcodec "ffnvcodec >= 8.0.14.1" \
5846 "ffnvcodec/nvEncodeAPI.h ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h ffnvcodec/dynlink_nvcuvid.h" ""
5849 check_cpp_condition winrt windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)"
5851 if ! disabled w32threads && ! enabled pthreads; then
5852 check_func_headers "windows.h process.h" _beginthreadex &&
5853 check_type "windows.h" CONDITION_VARIABLE &&
5854 enable w32threads || disable w32threads
5855 if ! enabled w32threads && enabled winrt; then
5856 check_func_headers "windows.h" CreateThread &&
5857 enable w32threads || disable w32threads
5861 # check for some common methods of building with pthread support
5862 # do this before the optional library checks as some of them require pthreads
5863 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
5864 if check_lib pthreads pthread.h pthread_join -pthread &&
5865 check_lib pthreads pthread.h pthread_create -pthread; then
5867 elif check_lib pthreads pthread.h pthread_join -pthreads &&
5868 check_lib pthreads pthread.h pthread_create -pthreads; then
5869 add_cflags -pthreads
5870 elif check_lib pthreads pthread.h pthread_join -ldl -pthread &&
5871 check_lib pthreads pthread.h pthread_create -ldl -pthread; then
5872 add_cflags -ldl -pthread
5873 elif check_lib pthreads pthread.h pthread_join -lpthreadGC2 &&
5874 check_lib pthreads pthread.h pthread_create -lpthreadGC2; then
5876 elif check_lib pthreads pthread.h pthread_join -lpthread &&
5877 check_lib pthreads pthread.h pthread_create -lpthread; then
5879 elif check_func pthread_join && check_func pthread_create; then
5882 check_cc pthreads "pthread.h" "static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER"
5884 if enabled pthreads; then
5885 check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" $pthreads_extralibs
5886 check_func pthread_cancel $pthreads_extralibs
5890 enabled zlib && check_lib zlib zlib.h zlibVersion -lz
5891 enabled bzlib && check_lib bzlib bzlib.h BZ2_bzlibVersion -lbz2
5892 enabled lzma && check_lib lzma lzma.h lzma_version_number -llzma
5894 # On some systems dynamic loading requires no extra linker flags
5895 check_lib libdl dlfcn.h "dlopen dlsym" || check_lib libdl dlfcn.h "dlopen dlsym" -ldl
5897 check_lib libm math.h sin -lm
5905 for func in $MATH_FUNCS; do
5906 eval check_mathfunc $func \${${func}_args:-1} $libm_extralibs
5909 for func in $COMPLEX_FUNCS; do
5910 eval check_complexfunc $func \${${func}_args:-1}
5913 # these are off by default, so fail if requested and not available
5914 enabled cuda_sdk && require cuda_sdk cuda.h cuCtxCreate -lcuda
5915 enabled chromaprint && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint
5916 enabled decklink && { require_header DeckLinkAPI.h &&
5917 { test_cpp_condition DeckLinkAPIVersion.h "BLACKMAGIC_DECKLINK_API_VERSION >= 0x0a060100" || die "ERROR: Decklink API version must be >= 10.6.1."; } }
5918 enabled libndi_newtek && require_header Processing.NDI.Lib.h
5919 enabled frei0r && require_header frei0r.h
5920 enabled gmp && require gmp gmp.h mpz_export -lgmp
5921 enabled gnutls && require_pkg_config gnutls gnutls gnutls/gnutls.h gnutls_global_init
5922 enabled jni && { [ $target_os = "android" ] && check_header jni.h && enabled pthreads || die "ERROR: jni not found"; }
5923 enabled ladspa && require_header ladspa.h
5924 enabled lv2 && require_pkg_config lv2 lilv-0 "lilv-0/lilv/lilv.h" lilv_world_new
5925 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
5926 enabled libass && require_pkg_config libass libass ass/ass.h ass_library_init
5927 enabled libbluray && require_pkg_config libbluray libbluray libbluray/bluray.h bd_open
5928 enabled libbs2b && require_pkg_config libbs2b libbs2b bs2b.h bs2b_open
5929 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
5930 { check_lib libcelt celt/celt.h celt_decoder_create_custom -lcelt0 ||
5931 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
5932 enabled libcaca && require_pkg_config libcaca caca caca.h caca_create_canvas
5933 enabled libcodec2 && require libcodec2 codec2/codec2.h codec2_create -lcodec2
5934 enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new
5935 enabled libdrm && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion
5936 enabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
5937 { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
5938 warn "using libfdk without pkg-config"; } }
5939 flite_extralibs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
5940 enabled libflite && require libflite "flite/flite.h" flite_init $flite_extralibs
5941 enabled fontconfig && enable libfontconfig
5942 enabled libfontconfig && require_pkg_config libfontconfig fontconfig "fontconfig/fontconfig.h" FcInit
5943 enabled libfreetype && require_pkg_config libfreetype freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
5944 enabled libfribidi && require_pkg_config libfribidi fribidi fribidi.h fribidi_version_info
5945 enabled libgme && { check_pkg_config libgme libgme gme/gme.h gme_new_emu ||
5946 require libgme gme/gme.h gme_new_emu -lgme -lstdc++; }
5947 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
5948 check_lib libgsm "${gsm_hdr}" gsm_create -lgsm && break;
5949 done || die "ERROR: libgsm not found"; }
5950 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc $pthreads_extralibs
5951 enabled libkvazaar && require_pkg_config libkvazaar "kvazaar >= 0.8.1" kvazaar.h kvz_api_get
5952 # While it may appear that require is being used as a pkg-config
5953 # fallback for libmfx, it is actually being used to detect a different
5954 # installation route altogether. If libmfx is installed via the Intel
5955 # Media SDK or Intel Media Server Studio, these don't come with
5956 # pkg-config support. Instead, users should make sure that the build
5957 # can find the libraries and headers through other means.
5958 enabled libmfx && { check_pkg_config libmfx libmfx "mfx/mfxvideo.h" MFXInit ||
5959 { require libmfx "mfx/mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } }
5960 enabled libmodplug && require_pkg_config libmodplug libmodplug libmodplug/modplug.h ModPlug_Load
5961 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame $libm_extralibs
5962 enabled libmysofa && require libmysofa "mysofa.h" mysofa_load -lmysofa $zlib_extralibs
5963 enabled libnpp && { check_lib libnpp npp.h nppGetLibVersion -lnppig -lnppicc -lnppc ||
5964 check_lib libnpp npp.h nppGetLibVersion -lnppi -lnppc ||
5965 die "ERROR: libnpp not found"; }
5966 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
5967 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
5968 enabled libopencv && { check_header opencv2/core/core_c.h &&
5969 { check_pkg_config libopencv opencv opencv2/core/core_c.h cvCreateImageHeader ||
5970 require libopencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
5971 require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; }
5972 enabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion
5973 enabled libopenjpeg && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version ||
5974 { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
5975 enabled libopenmpt && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
5976 enabled libopus && {
5977 enabled libopus_decoder && {
5978 require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
5980 enabled libopus_encoder && {
5981 require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
5984 enabled libpulse && require_pkg_config libpulse libpulse pulse/pulseaudio.h pa_context_new
5985 enabled librsvg && require_pkg_config librsvg librsvg-2.0 librsvg-2.0/librsvg/rsvg.h rsvg_handle_render_cairo
5986 enabled librtmp && require_pkg_config librtmp librtmp librtmp/rtmp.h RTMP_Socket
5987 enabled librubberband && require_pkg_config librubberband "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new -lstdc++ && append librubberband_extralibs "-lstdc++"
5988 enabled libshine && require_pkg_config libshine shine shine/layer3.h shine_encode_buffer
5989 enabled libsmbclient && { check_pkg_config libsmbclient smbclient libsmbclient.h smbc_init ||
5990 require libsmbclient libsmbclient.h smbc_init -lsmbclient; }
5991 enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy -lstdc++
5992 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
5993 enabled libssh && require_pkg_config libssh libssh libssh/sftp.h sftp_init
5994 enabled libspeex && require_pkg_config libspeex speex speex/speex.h speex_decoder_init
5995 enabled libtesseract && require_pkg_config libtesseract tesseract tesseract/capi.h TessBaseAPICreate
5996 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
5997 enabled libtls && require_pkg_config libtls libtls tls.h tls_configure
5998 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
5999 { check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
6000 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
6001 enabled libv4l2 && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
6002 enabled libvidstab && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
6003 enabled libvmaf && require_pkg_config libvmaf "libvmaf >= 0.6.2" libvmaf.h compute_vmaf
6004 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
6005 enabled libvorbis && require_pkg_config libvorbis vorbis vorbis/codec.h vorbis_info_init &&
6006 require_pkg_config libvorbisenc vorbisenc vorbis/vorbisenc.h vorbis_encode_init
6009 enabled libvpx_vp8_decoder && {
6010 check_pkg_config libvpx_vp8_decoder "vpx >= 1.4.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx ||
6011 check_lib libvpx_vp8_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_dec_init_ver VPX_IMG_FMT_HIGHBITDEPTH" -lvpx ||
6012 die "ERROR: libvpx decoder version must be >=1.4.0";
6014 enabled libvpx_vp8_encoder && {
6015 check_pkg_config libvpx_vp8_encoder "vpx >= 1.4.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx ||
6016 check_lib libvpx_vp8_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VPX_IMG_FMT_HIGHBITDEPTH" -lvpx ||
6017 die "ERROR: libvpx encoder version must be >=1.4.0";
6019 enabled libvpx_vp9_decoder && {
6020 check_pkg_config libvpx_vp9_decoder "vpx >= 1.4.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx ||
6021 check_lib libvpx_vp9_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx VPX_IMG_FMT_HIGHBITDEPTH" "-lvpx $libm_extralibs"
6023 enabled libvpx_vp9_encoder && {
6024 check_pkg_config libvpx_vp9_encoder "vpx >= 1.4.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx ||
6025 check_lib libvpx_vp9_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx VPX_IMG_FMT_HIGHBITDEPTH" "-lvpx $libm_extralibs"
6027 if disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder; then
6028 die "libvpx enabled but no supported decoders found"
6032 enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack
6033 enabled libwebp && {
6034 enabled libwebp_encoder && require_pkg_config libwebp "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
6035 enabled libwebp_anim_encoder && check_pkg_config libwebp_anim_encoder "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit; }
6036 enabled libx264 && { check_pkg_config libx264 x264 "stdint.h x264.h" x264_encoder_encode ||
6037 { require libx264 "stdint.h x264.h" x264_encoder_encode "-lx264 $pthreads_extralibs $libm_extralibs" &&
6038 warn "using libx264 without pkg-config"; } } &&
6039 require_cpp_condition x264.h "X264_BUILD >= 118" &&
6040 check_cpp_condition libx262 x264.h "X264_MPEG2"
6041 enabled libx265 && require_pkg_config libx265 x265 x265.h x265_api_get &&
6042 require_cpp_condition x265.h "X265_BUILD >= 68"
6043 enabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode "-lxavs $pthreads_extralibs $libm_extralibs"
6044 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
6045 enabled libzimg && require_pkg_config libzimg "zimg >= 2.7.0" zimg.h zimg_get_api_version
6046 enabled libzmq && require_pkg_config libzmq libzmq zmq.h zmq_ctx_new
6047 enabled libzvbi && require_pkg_config libzvbi zvbi-0.2 libzvbi.h vbi_decoder_new &&
6048 { test_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" ||
6049 enabled gpl || die "ERROR: libzvbi requires version 0.2.28 or --enable-gpl."; }
6050 enabled libxml2 && require_pkg_config libxml2 libxml-2.0 libxml2/libxml/xmlversion.h xmlCheckVersion
6051 enabled mediacodec && { enabled jni || die "ERROR: mediacodec requires --enable-jni"; }
6052 enabled mmal && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
6053 { ! enabled cross_compile &&
6054 add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
6055 add_ldflags -L/opt/vc/lib/ &&
6056 check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
6057 die "ERROR: mmal not found" &&
6058 check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
6059 enabled openal && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
6060 check_lib openal 'AL/al.h' alGetError "${al_extralibs}" && break; done } ||
6061 die "ERROR: openal not found"; } &&
6062 { test_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
6063 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
6064 enabled opencl && { check_lib opencl OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
6065 check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
6066 die "ERROR: opencl not found"; } &&
6067 { test_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
6068 test_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
6069 die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
6070 enabled opengl && { check_lib opengl GL/glx.h glXGetProcAddress "-lGL" ||
6071 check_lib opengl windows.h wglGetProcAddress "-lopengl32 -lgdi32" ||
6072 check_lib opengl OpenGL/gl3.h glGetError "-Wl,-framework,OpenGL" ||
6073 check_lib opengl ES2/gl.h glGetError "-isysroot=${sysroot} -Wl,-framework,OpenGLES" ||
6074 die "ERROR: opengl not found."
6076 enabled omx && require_header OMX_Core.h
6077 enabled omx_rpi && { check_header OMX_Core.h ||
6078 { ! enabled cross_compile && add_cflags -isystem/opt/vc/include/IL && check_header OMX_Core.h ; } ||
6079 die "ERROR: OpenMAX IL headers not found"; } && enable omx
6080 enabled openssl && { check_pkg_config openssl openssl openssl/ssl.h OPENSSL_init_ssl ||
6081 check_pkg_config openssl openssl openssl/ssl.h SSL_library_init ||
6082 check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
6083 check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
6084 check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
6085 die "ERROR: openssl not found"; }
6086 enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/rk_mpi.h mpp_create &&
6087 require_pkg_config rockchip_mpp "rockchip_mpp >= 1.3.7" rockchip/rk_mpi.h mpp_create &&
6089 die "ERROR: rkmpp requires --enable-libdrm"; }
6092 if enabled gcrypt; then
6093 GCRYPT_CONFIG="${cross_prefix}libgcrypt-config"
6094 if "${GCRYPT_CONFIG}" --version > /dev/null 2>&1; then
6095 gcrypt_cflags=$("${GCRYPT_CONFIG}" --cflags)
6096 gcrypt_extralibs=$("${GCRYPT_CONFIG}" --libs)
6097 check_func_headers gcrypt.h gcry_mpi_new $gcrypt_cflags $gcrypt_extralibs ||
6098 die "ERROR: gcrypt not found"
6099 add_cflags $gcrypt_cflags
6101 require gcrypt gcrypt.h gcry_mpi_new -lgcrypt
6105 if enabled sdl2; then
6106 SDL2_CONFIG="${cross_prefix}sdl2-config"
6107 test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 2.1.0" SDL_events.h SDL_PollEvent
6108 if disabled sdl2 && "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
6109 sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
6110 sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
6111 test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
6112 test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
6113 check_func_headers SDL_events.h SDL_PollEvent $sdl2_extralibs $sdl2_cflags &&
6116 if test $target_os = "mingw32"; then
6117 sdl2_extralibs=$(filter_out '-mwindows' $sdl2_extralibs)
6121 if enabled decklink; then
6123 mingw32*|mingw64*|win32|win64)
6124 decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 -loleaut32"
6125 decklink_indev_extralibs="$decklink_indev_extralibs -lole32 -loleaut32"
6130 enabled securetransport &&
6131 check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
6132 check_lib securetransport "Security/SecureTransport.h Security/Security.h" "SSLCreateContext" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" ||
6133 disable securetransport
6135 enabled securetransport &&
6136 check_func SecItemImport "-Wl,-framework,CoreFoundation -Wl,-framework,Security"
6139 check_func_headers "windows.h security.h" InitializeSecurityContext -DSECURITY_WIN32 -lsecur32 &&
6140 test_cpp_condition winerror.h "defined(SEC_I_CONTEXT_EXPIRED)" &&
6141 schannel_extralibs="-lsecur32" ||
6144 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
6146 && [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \
6147 && enable makeinfo_html || disable makeinfo_html
6148 disabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
6149 perl -v > /dev/null 2>&1 && enable perl || disable perl
6150 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
6151 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
6153 # check V4L2 codecs available in the API
6154 check_header linux/fb.h
6155 check_header linux/videodev2.h
6156 test_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
6157 check_cc v4l2_m2m linux/videodev2.h "int i = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_VIDEO_M2M | V4L2_BUF_FLAG_LAST;"
6158 check_cc vc1_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VC1_ANNEX_G;"
6159 check_cc mpeg1_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG1;"
6160 check_cc mpeg2_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG2;"
6161 check_cc mpeg4_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG4;"
6162 check_cc hevc_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_HEVC;"
6163 check_cc h263_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H263;"
6164 check_cc h264_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_H264;"
6165 check_cc vp8_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP8;"
6166 check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
6168 check_header sys/videoio.h
6169 test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
6171 check_lib user32 "windows.h winuser.h" GetShellWindow -luser32
6172 check_lib vfw32 "windows.h vfw.h" capCreateCaptureWindow -lvfw32
6173 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
6174 # w32api 3.12 had it defined wrong
6175 check_cpp_condition vfwcap_defines vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER"
6177 check_type "dshow.h" IBaseFilter
6179 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
6180 check_header "dev/bktr/ioctl_meteor.h dev/bktr/ioctl_bt848.h" ||
6181 check_header "machine/ioctl_meteor.h machine/ioctl_bt848.h" ||
6182 check_header "dev/video/meteor/ioctl_meteor.h dev/video/bktr/ioctl_bt848.h" ||
6183 check_header "dev/ic/bt8xx.h"
6185 if check_struct sys/soundcard.h audio_buf_info bytes; then
6186 enable_sanitized sys/soundcard.h
6188 test_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_sanitized sys/soundcard.h
6189 #include <sys/soundcard.h>
6194 enabled alsa && check_pkg_config alsa alsa "alsa/asoundlib.h" snd_pcm_htimestamp ||
6195 check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound
6198 require_pkg_config libjack jack jack/jack.h jack_port_get_latency_range
6200 enabled sndio && check_lib sndio sndio.h sio_open -lsndio
6202 if enabled libcdio; then
6203 check_pkg_config libcdio libcdio_paranoia "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open ||
6204 check_pkg_config libcdio libcdio_paranoia "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open ||
6205 check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
6206 check_lib libcdio "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
6207 die "ERROR: No usable libcdio/cdparanoia found"
6210 enabled libxcb && check_pkg_config libxcb "xcb >= 1.4" xcb/xcb.h xcb_connect ||
6211 disable libxcb_shm libxcb_shape libxcb_xfixes
6213 if enabled libxcb; then
6214 enabled libxcb_shm && check_pkg_config libxcb_shm xcb-shm xcb/shm.h xcb_shm_attach
6215 enabled libxcb_shape && check_pkg_config libxcb_shape xcb-shape xcb/shape.h xcb_shape_get_rectangles
6216 enabled libxcb_xfixes && check_pkg_config libxcb_xfixes xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image
6219 check_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs"
6221 # d3d11va requires linking directly to dxgi and d3d11 if not building for
6222 # the desktop api partition
6223 test_cpp <<EOF && enable uwp && d3d11va_extralibs="-ldxgi -ld3d11"
6224 #ifdef WINAPI_FAMILY
6225 #include <winapifamily.h>
6226 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
6227 #error desktop, not uwp
6229 // WINAPI_FAMILY_APP, WINAPI_FAMILY_PHONE_APP => UWP
6232 #error no family set
6237 check_lib vaapi va/va.h vaInitialize -lva
6240 check_cc vaapi "va/va.h" "vaCreateSurfaces(0, 0, 0, 0, 0, 0, 0, 0)"
6242 if enabled vaapi; then
6243 check_lib vaapi_drm "va/va.h va/va_drm.h" vaGetDisplayDRM -lva -lva-drm
6244 check_lib vaapi_x11 "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 -lX11
6248 check_cpp_condition vaapi_1 "va/va.h" "VA_CHECK_VERSION(1, 0, 0)"
6250 if enabled_all opencl libdrm ; then
6251 check_type "CL/cl_intel.h" "clCreateImageFromFdINTEL_fn" &&
6252 enable opencl_drm_beignet
6253 check_func_headers "CL/cl_ext.h" clImportMemoryARM &&
6254 enable opencl_drm_arm
6257 if enabled_all opencl vaapi ; then
6258 enabled opencl_drm_beignet && enable opencl_vaapi_beignet
6259 if enabled libmfx ; then
6260 check_type "CL/cl.h CL/va_ext.h" "clCreateFromVA_APIMediaSurfaceINTEL_fn" &&
6261 enable opencl_vaapi_intel_media
6265 if enabled_all opencl dxva2 ; then
6266 check_type "CL/cl_dx9_media_sharing.h" cl_dx9_surface_info_khr &&
6270 if enabled_all opencl d3d11va ; then
6271 check_type "CL/cl_d3d11.h" clGetDeviceIDsFromD3D11KHR_fn &&
6276 check_cpp_condition vdpau vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP"
6279 check_lib vdpau_x11 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11
6281 enabled crystalhd && check_lib crystalhd "stdint.h libcrystalhd/libcrystalhd_if.h" DtsCrystalHDVersion -lcrystalhd
6283 if enabled x86; then
6285 mingw32*|mingw64*|win32|win64|linux|cygwin*)
6288 disable ffnvcodec cuvid nvdec nvenc
6292 disable ffnvcodec cuvid nvdec nvenc
6295 enabled ffnvcodec && enable cuda
6298 test_cc -I$source_path <<EOF || disable nvenc
6299 #include <ffnvcodec/nvEncodeAPI.h>
6300 NV_ENCODE_API_FUNCTION_LIST flist;
6301 void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; }
6302 int main(void) { return 0; }
6306 check_cpp_condition amf "AMF/core/Version.h" \
6307 "(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x0001000400040001"
6309 # Funny iconv installations are not unusual, so check it after all flags have been set
6310 if enabled libc_iconv; then
6311 check_func_headers iconv.h iconv
6312 elif enabled iconv; then
6313 check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv
6316 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
6318 # add some useful compiler flags if supported
6319 check_cflags -Wdeclaration-after-statement
6321 check_cflags -Wdisabled-optimization
6322 check_cflags -Wpointer-arith
6323 check_cflags -Wredundant-decls
6324 check_cflags -Wwrite-strings
6325 check_cflags -Wtype-limits
6326 check_cflags -Wundef
6327 check_cflags -Wmissing-prototypes
6328 check_cflags -Wno-pointer-to-int-cast
6329 check_cflags -Wstrict-prototypes
6330 check_cflags -Wempty-body
6332 if enabled extra_warnings; then
6333 check_cflags -Wcast-qual
6334 check_cflags -Wextra
6335 check_cflags -Wpedantic
6338 check_disable_warning(){
6339 warning_flag=-W${1#-Wno-}
6340 test_cflags $unknown_warning_flags $warning_flag && add_cflags $1
6343 test_cflags -Werror=unused-command-line-argument &&
6344 append unknown_warning_flags "-Werror=unused-command-line-argument"
6345 test_cflags -Werror=unknown-warning-option &&
6346 append unknown_warning_flags "-Werror=unknown-warning-option"
6348 check_disable_warning -Wno-parentheses
6349 check_disable_warning -Wno-switch
6350 check_disable_warning -Wno-format-zero-length
6351 check_disable_warning -Wno-pointer-sign
6352 check_disable_warning -Wno-unused-const-variable
6353 check_disable_warning -Wno-bool-operation
6355 check_disable_warning_headers(){
6356 warning_flag=-W${1#-Wno-}
6357 test_cflags $warning_flag && add_cflags_headers $1
6360 check_disable_warning_headers -Wno-deprecated-declarations
6361 check_disable_warning_headers -Wno-unused-variable
6363 test_cc <<EOF && enable blocks_extension
6364 void (^block)(void);
6367 # add some linker flags
6368 check_ldflags -Wl,--warn-common
6369 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
6370 enabled rpath && add_ldexeflags -Wl,-rpath,$libdir && add_ldsoflags -Wl,-rpath,$libdir
6371 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
6373 # add some strip flags
6376 enabled neon_clobber_test &&
6377 check_ldflags -Wl,--wrap,avcodec_open2 \
6378 -Wl,--wrap,avcodec_decode_audio4 \
6379 -Wl,--wrap,avcodec_decode_video2 \
6380 -Wl,--wrap,avcodec_decode_subtitle2 \
6381 -Wl,--wrap,avcodec_encode_audio2 \
6382 -Wl,--wrap,avcodec_encode_video2 \
6383 -Wl,--wrap,avcodec_encode_subtitle \
6384 -Wl,--wrap,avcodec_send_packet \
6385 -Wl,--wrap,avcodec_receive_packet \
6386 -Wl,--wrap,avcodec_send_frame \
6387 -Wl,--wrap,avcodec_receive_frame \
6388 -Wl,--wrap,swr_convert \
6389 -Wl,--wrap,avresample_convert ||
6390 disable neon_clobber_test
6392 enabled xmm_clobber_test &&
6393 check_ldflags -Wl,--wrap,avcodec_open2 \
6394 -Wl,--wrap,avcodec_decode_audio4 \
6395 -Wl,--wrap,avcodec_decode_video2 \
6396 -Wl,--wrap,avcodec_decode_subtitle2 \
6397 -Wl,--wrap,avcodec_encode_audio2 \
6398 -Wl,--wrap,avcodec_encode_video2 \
6399 -Wl,--wrap,avcodec_encode_subtitle \
6400 -Wl,--wrap,avcodec_send_packet \
6401 -Wl,--wrap,avcodec_receive_packet \
6402 -Wl,--wrap,avcodec_send_frame \
6403 -Wl,--wrap,avcodec_receive_frame \
6404 -Wl,--wrap,swr_convert \
6405 -Wl,--wrap,avresample_convert \
6406 -Wl,--wrap,sws_scale ||
6407 disable xmm_clobber_test
6409 test_ld "cc" <<EOF && enable proper_dce
6410 extern const int array[512];
6411 static inline int func(void) { return array[0]; }
6412 int main(void) { return 0; }
6415 if enabled proper_dce; then
6416 echo "X { local: *; };" > $TMPV
6417 if test_ldflags -Wl,${version_script},$TMPV; then
6418 append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver'
6420 test_cc <<EOF && enable symver_asm_label
6421 void ff_foo(void) __asm__ ("av_foo@VERSION");
6422 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
6424 test_cc <<EOF && enable symver_gnu_asm
6425 __asm__(".symver ff_foo,av_foo@VERSION");
6426 void ff_foo(void) {}
6431 if [ -z "$optflags" ]; then
6432 if enabled small; then
6433 optflags=$cflags_size
6434 elif enabled optimizations; then
6435 optflags=$cflags_speed
6437 optflags=$cflags_noopt
6441 if [ -z "$nvccflags" ]; then
6442 nvccflags=$nvccflags_default
6445 if enabled x86_64 || enabled ppc64 || enabled aarch64; then
6446 nvccflags="$nvccflags -m64"
6448 nvccflags="$nvccflags -m32"
6453 enabled lto && check_ldflags "$@"
6456 check_optflags $optflags
6457 check_optflags -fno-math-errno
6458 check_optflags -fno-signed-zeros
6460 if enabled lto; then
6461 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
6463 check_ldflags -flto $cpuflags
6464 disable inline_asm_direct_symbol_refs
6467 enabled ftrapv && check_cflags -ftrapv
6469 test_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
6474 if enabled icc; then
6475 # Just warnings, no remarks
6477 # -wd: Disable following warnings
6478 # 144, 167, 556: -Wno-pointer-sign
6479 # 188: enumerated type mixed with another type
6480 # 1292: attribute "foo" ignored
6481 # 1419: external declaration in primary source file
6482 # 10006: ignoring unknown option -fno-signed-zeros
6483 # 10148: ignoring unknown option -Wno-parentheses
6484 # 10156: ignoring option '-W'; no argument required
6485 # 13200: No EMMS instruction before call to function
6486 # 13203: No EMMS instruction before return from function
6487 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156,13200,13203
6488 # 11030: Warning unknown option --as-needed
6489 # 10156: ignoring option '-export'; no argument required
6490 check_ldflags -wd10156,11030
6491 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
6492 enable ebp_available
6493 # The test above does not test linking
6494 enabled lto && disable symver_asm_label
6495 if enabled x86_32; then
6496 icc_version=$($cc -dumpversion)
6497 test ${icc_version%%.*} -ge 11 &&
6498 check_cflags -falign-stack=maintain-16-byte ||
6499 disable aligned_stack
6501 elif enabled gcc; then
6502 check_optflags -fno-tree-vectorize
6503 check_cflags -Werror=format-security
6504 check_cflags -Werror=implicit-function-declaration
6505 check_cflags -Werror=missing-prototypes
6506 check_cflags -Werror=return-type
6507 check_cflags -Werror=vla
6508 check_cflags -Wformat
6509 check_cflags -fdiagnostics-color=auto
6510 enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized
6511 elif enabled llvm_gcc; then
6512 check_cflags -mllvm -stack-alignment=16
6513 elif enabled clang; then
6514 check_cflags -mllvm -stack-alignment=16
6515 check_cflags -mstack-alignment=16
6516 check_cflags -Qunused-arguments
6517 check_cflags -Werror=implicit-function-declaration
6518 check_cflags -Werror=missing-prototypes
6519 check_cflags -Werror=return-type
6520 elif enabled cparser; then
6521 add_cflags -Wno-missing-variable-declarations
6522 add_cflags -Wno-empty-statement
6523 elif enabled armcc; then
6524 add_cflags -W${armcc_opt},--diag_suppress=4343 # hardfp compat
6525 add_cflags -W${armcc_opt},--diag_suppress=3036 # using . as system include dir
6526 # 2523: use of inline assembly is deprecated
6527 add_cflags -W${armcc_opt},--diag_suppress=2523
6528 add_cflags -W${armcc_opt},--diag_suppress=1207
6529 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
6530 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
6531 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
6532 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
6533 elif enabled pathscale; then
6534 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
6536 elif enabled_any msvc icl; then
6537 enabled x86_32 && disable aligned_stack
6538 enabled_all x86_32 debug && add_cflags -Oy-
6539 enabled debug && add_ldflags -debug
6540 enable pragma_deprecated
6541 if enabled icl; then
6542 # -Qansi-alias is basically -fstrict-aliasing, but does not work
6543 # (correctly) on icl 13.x.
6544 test_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" &&
6545 add_cflags -Qansi-alias
6546 # Some inline asm is not compilable in debug
6547 if enabled debug; then
6548 disable ebp_available
6549 disable ebx_available
6552 # msvcrt10 x64 incorrectly enables log2, only msvcrt12 (MSVC 2013) onwards actually has log2.
6553 check_cpp_condition log2 crtversion.h "_VC_CRT_MAJOR_VERSION >= 12"
6554 # The CRT headers contain __declspec(restrict) in a few places, but if redefining
6555 # restrict, this might break. MSVC 2010 and 2012 fail with __declspec(__restrict)
6556 # (as it ends up if the restrict redefine is done before including stdlib.h), while
6557 # MSVC 2013 and newer can handle it fine.
6558 # If this declspec fails, force including stdlib.h before the restrict redefinition
6559 # happens in config.h.
6560 if [ $restrict_keyword != restrict ]; then
6561 test_cc <<EOF || add_cflags -FIstdlib.h
6562 __declspec($restrict_keyword) void *foo(int);
6565 # the new SSA optimzer in VS2015 U3 is mis-optimizing some parts of the code
6566 # Issue has been fixed in MSVC v19.00.24218.
6567 test_cpp_condition windows.h "_MSC_FULL_VER >= 190024218" ||
6568 check_cflags -d2SSAOptimizer-
6569 # enable utf-8 source processing on VS2015 U2 and newer
6570 test_cpp_condition windows.h "_MSC_FULL_VER >= 190023918" &&
6574 for pfx in "" host_; do
6575 varname=${pfx%_}cc_type
6576 eval "type=\$$varname"
6577 if [ "$type" = "msvc" ]; then
6578 test_${pfx}cc <<EOF || add_${pfx}cflags -Dinline=__inline
6579 static inline int foo(int a) { return a; }
6586 add_asflags -Qunused-arguments
6592 check_ldflags -Qunused-arguments
6596 enable frame_thread_encoder
6598 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
6600 check_deps $CONFIG_LIST \
6605 enabled threads && ! enabled pthreads && ! enabled atomics_native && die "non pthread threading without atomics not supported, try adding --enable-pthreads or --cpu=i486 or higher if you are on x86"
6606 enabled avresample && warn "Building with deprecated library libavresample"
6608 if test $target_os = "haiku"; then
6610 disable posix_memalign
6613 flatten_extralibs(){
6614 unset nested_entries
6617 for entry in $list; do
6620 append nested_entries $(filter '*_extralibs' $entry_copy)
6621 flat_entries=$(filter_out '*_extralibs' $entry_copy)
6622 eval $entry="\$flat_entries"
6624 append $list_name "$nested_entries"
6626 resolve nested_entries
6627 if test -n "$(filter '*_extralibs' $nested_entries)"; then
6628 flatten_extralibs $list_name
6632 flatten_extralibs_wrapper(){
6634 flatten_extralibs $list_name
6637 eval $list_name=\$\(\$ldflags_filter \$$list_name\)
6638 eval printf \''%s'\' \""\$$list_name"\"
6641 for linkunit in $LIBRARY_LIST; do
6642 unset current_extralibs
6643 eval components=\$$(toupper ${linkunit})_COMPONENTS_LIST
6644 for comp in ${components}; do
6645 enabled $comp || continue
6646 comp_extralibs="${comp}_extralibs"
6647 append current_extralibs $comp_extralibs
6649 eval prepend ${linkunit}_extralibs $current_extralibs
6652 for linkunit in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
6653 eval ${linkunit}_extralibs=\$\(flatten_extralibs_wrapper ${linkunit}_extralibs\)
6656 map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
6658 for thread in $THREADS_LIST; do
6659 if enabled $thread; then
6660 test -n "$thread_type" &&
6661 die "ERROR: Only one thread type must be selected." ||
6662 thread_type="$thread"
6666 if disabled stdatomic; then
6667 if enabled atomics_gcc; then
6668 add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
6669 elif enabled atomics_win32; then
6670 add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
6671 elif enabled atomics_suncc; then
6672 add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
6673 elif enabled pthreads; then
6674 add_compat atomics/pthread/stdatomic.o
6675 add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
6677 enabled threads && die "Threading is enabled, but no atomics are available"
6678 add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
6682 # Check if requested libraries were found.
6683 for lib in $AUTODETECT_LIBS; do
6684 requested $lib && ! enabled $lib && die "ERROR: $lib requested but not found";
6687 enabled zlib && add_cppflags -DZLIB_CONST
6689 # conditional library dependencies, in linking order
6690 enabled afftfilt_filter && prepend avfilter_deps "avcodec"
6691 enabled afir_filter && prepend avfilter_deps "avcodec"
6692 enabled amovie_filter && prepend avfilter_deps "avformat avcodec"
6693 enabled aresample_filter && prepend avfilter_deps "swresample"
6694 enabled atempo_filter && prepend avfilter_deps "avcodec"
6695 enabled cover_rect_filter && prepend avfilter_deps "avformat avcodec"
6696 enabled convolve_filter && prepend avfilter_deps "avcodec"
6697 enabled deconvolve_filter && prepend avfilter_deps "avcodec"
6698 enabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample"
6699 enabled elbg_filter && prepend avfilter_deps "avcodec"
6700 enabled fftfilt_filter && prepend avfilter_deps "avcodec"
6701 enabled find_rect_filter && prepend avfilter_deps "avformat avcodec"
6702 enabled firequalizer_filter && prepend avfilter_deps "avcodec"
6703 enabled mcdeint_filter && prepend avfilter_deps "avcodec"
6704 enabled movie_filter && prepend avfilter_deps "avformat avcodec"
6705 enabled pan_filter && prepend avfilter_deps "swresample"
6706 enabled pp_filter && prepend avfilter_deps "postproc"
6707 enabled removelogo_filter && prepend avfilter_deps "avformat avcodec swscale"
6708 enabled resample_filter && prepend avfilter_deps "avresample"
6709 enabled sab_filter && prepend avfilter_deps "swscale"
6710 enabled scale_filter && prepend avfilter_deps "swscale"
6711 enabled scale2ref_filter && prepend avfilter_deps "swscale"
6712 enabled sofalizer_filter && prepend avfilter_deps "avcodec"
6713 enabled showcqt_filter && prepend avfilter_deps "avformat avcodec swscale"
6714 enabled showfreqs_filter && prepend avfilter_deps "avcodec"
6715 enabled showspectrum_filter && prepend avfilter_deps "avcodec"
6716 enabled signature_filter && prepend avfilter_deps "avcodec avformat"
6717 enabled smartblur_filter && prepend avfilter_deps "swscale"
6718 enabled spectrumsynth_filter && prepend avfilter_deps "avcodec"
6719 enabled spp_filter && prepend avfilter_deps "avcodec"
6720 enabled subtitles_filter && prepend avfilter_deps "avformat avcodec"
6721 enabled uspp_filter && prepend avfilter_deps "avcodec"
6722 enabled zoompan_filter && prepend avfilter_deps "swscale"
6724 enabled lavfi_indev && prepend avdevice_deps "avfilter"
6727 enabled sdl2_outdev && add_cflags $(filter_out '-Dmain=SDL_main' $sdl2_cflags)
6729 enabled opus_decoder && prepend avcodec_deps "swresample"
6733 eval "deps=\$$lib_deps"
6734 append $lib_deps $(map 'eval echo \$${v}_deps' $deps)
6738 #we have to remove gpl from the deps here as some code assumes all lib deps are libs
6739 postproc_deps="$(filter_out 'gpl' $postproc_deps)"
6741 map 'expand_deps $v' $LIBRARY_LIST
6743 if test "$quiet" != "yes"; then
6745 echo "install prefix $prefix"
6746 echo "source path $source_path"
6747 echo "C compiler $cc"
6748 echo "C library $libc_type"
6749 if test "$host_cc" != "$cc"; then
6750 echo "host C compiler $host_cc"
6751 echo "host C library $host_libc_type"
6753 echo "ARCH $arch ($cpu)"
6754 if test "$build_suffix" != ""; then
6755 echo "build suffix $build_suffix"
6757 if test "$progs_suffix" != ""; then
6758 echo "progs suffix $progs_suffix"
6760 if test "$extra_version" != ""; then
6761 echo "version string suffix $extra_version"
6763 echo "big-endian ${bigendian-no}"
6764 echo "runtime cpu detection ${runtime_cpudetect-no}"
6765 if enabled x86; then
6766 echo "standalone assembly ${x86asm-no}"
6767 echo "x86 assembler ${x86asmexe}"
6768 echo "MMX enabled ${mmx-no}"
6769 echo "MMXEXT enabled ${mmxext-no}"
6770 echo "3DNow! enabled ${amd3dnow-no}"
6771 echo "3DNow! extended enabled ${amd3dnowext-no}"
6772 echo "SSE enabled ${sse-no}"
6773 echo "SSSE3 enabled ${ssse3-no}"
6774 echo "AESNI enabled ${aesni-no}"
6775 echo "AVX enabled ${avx-no}"
6776 echo "AVX2 enabled ${avx2-no}"
6777 echo "AVX-512 enabled ${avx512-no}"
6778 echo "XOP enabled ${xop-no}"
6779 echo "FMA3 enabled ${fma3-no}"
6780 echo "FMA4 enabled ${fma4-no}"
6781 echo "i686 features enabled ${i686-no}"
6782 echo "CMOV is fast ${fast_cmov-no}"
6783 echo "EBX available ${ebx_available-no}"
6784 echo "EBP available ${ebp_available-no}"
6786 if enabled aarch64; then
6787 echo "NEON enabled ${neon-no}"
6788 echo "VFP enabled ${vfp-no}"
6790 if enabled arm; then
6791 echo "ARMv5TE enabled ${armv5te-no}"
6792 echo "ARMv6 enabled ${armv6-no}"
6793 echo "ARMv6T2 enabled ${armv6t2-no}"
6794 echo "VFP enabled ${vfp-no}"
6795 echo "NEON enabled ${neon-no}"
6796 echo "THUMB enabled ${thumb-no}"
6798 if enabled mips; then
6799 echo "MIPS FPU enabled ${mipsfpu-no}"
6800 echo "MIPS DSP R1 enabled ${mipsdsp-no}"
6801 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
6802 echo "MIPS MSA enabled ${msa-no}"
6803 echo "LOONGSON MMI enabled ${mmi-no}"
6805 if enabled ppc; then
6806 echo "AltiVec enabled ${altivec-no}"
6807 echo "VSX enabled ${vsx-no}"
6808 echo "POWER8 enabled ${power8-no}"
6809 echo "PPC 4xx optimizations ${ppc4xx-no}"
6810 echo "dcbzl available ${dcbzl-no}"
6812 echo "debug symbols ${debug-no}"
6813 echo "strip symbols ${stripping-no}"
6814 echo "optimize for size ${small-no}"
6815 echo "optimizations ${optimizations-no}"
6816 echo "static ${static-no}"
6817 echo "shared ${shared-no}"
6818 echo "postprocessing support ${postproc-no}"
6819 echo "network support ${network-no}"
6820 echo "threading support ${thread_type-no}"
6821 echo "safe bitstream reader ${safe_bitstream_reader-no}"
6822 echo "texi2html enabled ${texi2html-no}"
6823 echo "perl enabled ${perl-no}"
6824 echo "pod2man enabled ${pod2man-no}"
6825 echo "makeinfo enabled ${makeinfo-no}"
6826 echo "makeinfo supports HTML ${makeinfo_html-no}"
6827 test -n "$random_seed" &&
6828 echo "random seed ${random_seed}"
6831 echo "External libraries:"
6832 print_enabled '' $EXTERNAL_LIBRARY_LIST $EXTERNAL_AUTODETECT_LIBRARY_LIST | print_in_columns
6835 echo "External libraries providing hardware acceleration:"
6836 print_enabled '' $HWACCEL_LIBRARY_LIST $HWACCEL_AUTODETECT_LIBRARY_LIST | print_in_columns
6840 print_enabled '' $LIBRARY_LIST | print_in_columns
6844 print_enabled '' $PROGRAM_LIST | print_in_columns
6847 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
6848 echo "Enabled ${type}s:"
6849 eval list=\$$(toupper $type)_LIST
6850 print_enabled '_*' $list | print_in_columns
6854 if test -n "$ignore_tests"; then
6855 ignore_tests=$(echo $ignore_tests | tr ',' ' ')
6856 echo "Ignored FATE tests:"
6857 echo $ignore_tests | print_in_columns
6861 echo "License: $license"
6863 fi # test "$quiet" != "yes"
6865 if test -n "$WARNINGS"; then
6866 printf "\n%s%s$WARNINGS%s" "$warn_color" "$bold_color" "$reset_color"
6867 enabled fatal_warnings && exit 1
6870 test -e Makefile || echo "include $source_path/Makefile" > Makefile
6873 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
6876 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" > ffbuild/config.fate
6878 enabled stripping || strip="echo skipping strip"
6879 enabled stripping || striptype=""
6881 config_files="$TMPH ffbuild/config.mak doc/config.texi"
6883 cat > ffbuild/config.mak <<EOF
6884 # Automatically generated by configure - do not modify!
6885 ifndef FFMPEG_CONFIG_MAK
6887 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
6889 LIBDIR=\$(DESTDIR)$libdir
6890 SHLIBDIR=\$(DESTDIR)$shlibdir
6891 INCDIR=\$(DESTDIR)$incdir
6892 BINDIR=\$(DESTDIR)$bindir
6893 DATADIR=\$(DESTDIR)$datadir
6894 DOCDIR=\$(DESTDIR)$docdir
6895 MANDIR=\$(DESTDIR)$mandir
6896 PKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir
6897 INSTALL_NAME_DIR=$install_name_dir
6898 SRC_PATH=$source_path
6899 SRC_LINK=$source_link
6900 ifndef MAIN_MAKEFILE
6901 SRC_PATH:=\$(SRC_PATH:.%=..%)
6905 INTRINSICS=$intrinsics
6906 EXTERN_PREFIX=$extern_prefix
6913 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
6915 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
6917 DEPX86ASM=$x86asmexe
6918 DEPX86ASMFLAGS=\$(X86ASMFLAGS)
6926 STRIPTYPE=$striptype
6933 OBJCFLAGS=$OBJCFLAGS
6935 NVCCFLAGS=$nvccflags
6957 LDEXEFLAGS=$LDEXEFLAGS
6958 LDSOFLAGS=$LDSOFLAGS
6959 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
6960 ASMSTRIPFLAGS=$ASMSTRIPFLAGS
6961 X86ASMFLAGS=$X86ASMFLAGS
6962 BUILDSUF=$build_suffix
6963 PROGSSUF=$progs_suffix
6971 EXTRA_VERSION=$extra_version
6974 CCDEP_FLAGS=$CCDEP_FLAGS
6976 ASDEP_FLAGS=$ASDEP_FLAGS
6977 X86ASMDEP=$X86ASMDEP
6978 X86ASMDEP_FLAGS=$X86ASMDEP_FLAGS
6979 CC_DEPFLAGS=$CC_DEPFLAGS
6980 AS_DEPFLAGS=$AS_DEPFLAGS
6981 X86ASM_DEPFLAGS=$X86ASM_DEPFLAGS
6984 HOSTCFLAGS=$host_cflags
6985 HOSTCPPFLAGS=$host_cppflags
6986 HOSTEXESUF=$HOSTEXESUF
6987 HOSTLDFLAGS=$host_ldflags
6988 HOSTEXTRALIBS=$host_extralibs
6990 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
6991 HOSTCCDEP=$HOSTCCDEP
6992 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
6993 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
6997 TARGET_EXEC=$target_exec $target_exec_args
6998 TARGET_PATH=$target_path
6999 TARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
7000 CFLAGS-ffplay=${sdl2_cflags}
7001 CFLAGS_HEADERS=$CFLAGS_HEADERS
7002 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
7003 EXTRALIBS=$extralibs
7004 COMPAT_OBJS=$compat_objs
7006 LIBTARGET=${LIBTARGET}
7007 SLIBNAME=${SLIBNAME}
7008 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
7009 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
7010 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
7011 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
7012 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
7013 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
7014 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
7015 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
7016 VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
7017 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
7018 NOREDZONE_FLAGS=$noredzone_flags
7019 LIBFUZZER_PATH=$libfuzzer_path
7020 IGNORE_TESTS=$ignore_tests
7023 map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST
7025 for entry in $LIBRARY_LIST $PROGRAM_LIST $EXTRALIBS_LIST; do
7026 eval echo "EXTRALIBS-${entry}=\$${entry}_extralibs" >> ffbuild/config.mak
7030 /* Automatically generated by configure - do not modify! */
7031 #ifndef FFMPEG_CONFIG_H
7032 #define FFMPEG_CONFIG_H
7033 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
7034 #define FFMPEG_LICENSE "$(c_escape $license)"
7035 #define CONFIG_THIS_YEAR 2018
7036 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
7037 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
7038 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
7039 #define av_restrict $restrict_keyword
7040 #define EXTERN_PREFIX "${extern_prefix}"
7041 #define EXTERN_ASM ${extern_prefix}
7042 #define BUILDSUF "$build_suffix"
7043 #define SLIBSUF "$SLIBSUF"
7044 #define HAVE_MMX2 HAVE_MMXEXT
7045 #define SWS_MAX_FILTER_SIZE $sws_max_filter_size
7048 test -n "$assert_level" &&
7049 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
7051 test -n "$malloc_prefix" &&
7052 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
7054 if enabled x86asm; then
7055 append config_files $TMPASM
7057 ; Automatically generated by configure - do not modify!
7061 enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
7067 echo "@c auto-generated by configure - do not modify! " > doc/config.texi
7069 print_config ARCH_ "$config_files" $ARCH_LIST
7070 print_config HAVE_ "$config_files" $HAVE_LIST
7071 print_config CONFIG_ "$config_files" $CONFIG_LIST \
7075 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
7076 echo "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak
7078 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
7079 cp_if_changed $TMPH config.h
7080 touch ffbuild/.config
7082 enabled x86asm && cp_if_changed $TMPASM config.asm
7085 /* Generated by ffmpeg configure */
7086 #ifndef AVUTIL_AVCONFIG_H
7087 #define AVUTIL_AVCONFIG_H
7090 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
7092 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
7094 cp_if_changed $TMPH libavutil/avconfig.h
7096 # generate the lists of enabled components
7097 print_enabled_components(){
7102 echo "static const $struct_name * const $name[] = {" > $TMPH
7107 c=$(add_suffix _demuxer $(remove_suffix _indev $c))
7110 c=$(add_suffix _muxer $(remove_suffix _outdev $c))
7113 printf " &ff_%s,\n" $c >> $TMPH
7116 echo " NULL };" >> $TMPH
7117 cp_if_changed $TMPH $file
7120 print_enabled_components libavcodec/codec_list.c AVCodec codec_list $CODEC_LIST
7121 print_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST
7122 print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
7123 print_enabled_components libavdevice/indev_list.c AVInputFormat indev_list $INDEV_LIST
7124 print_enabled_components libavdevice/outdev_list.c AVOutputFormat outdev_list $OUTDEV_LIST
7125 print_enabled_components libavformat/demuxer_list.c AVInputFormat demuxer_list $DEMUXER_LIST
7126 print_enabled_components libavformat/muxer_list.c AVOutputFormat muxer_list $MUXER_LIST
7127 print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
7129 # Settings for pkg-config files
7132 # Automatically generated by configure - do not modify!
7134 build_suffix=$build_suffix
7138 rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}")
7139 source_path=${source_path}
7142 extralibs_avutil="$avutil_extralibs"
7143 extralibs_avcodec="$avcodec_extralibs"
7144 extralibs_avformat="$avformat_extralibs"
7145 extralibs_avdevice="$avdevice_extralibs"
7146 extralibs_avfilter="$avfilter_extralibs"
7147 extralibs_avresample="$avresample_extralibs"
7148 extralibs_postproc="$postproc_extralibs"
7149 extralibs_swscale="$swscale_extralibs"
7150 extralibs_swresample="$swresample_extralibs"
7153 for lib in $LIBRARY_LIST; do
7154 lib_deps="$(eval echo \$${lib}_deps)"
7155 echo ${lib}_deps=\"$lib_deps\" >> $TMPH
7158 cp_if_changed $TMPH ffbuild/config.sh