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
119 --disable-ffserver disable ffserver build
121 Documentation options:
122 --disable-doc do not build documentation
123 --disable-htmlpages do not build HTML documentation pages
124 --disable-manpages do not build man documentation pages
125 --disable-podpages do not build POD documentation pages
126 --disable-txtpages do not build text documentation pages
129 --disable-avdevice disable libavdevice build
130 --disable-avcodec disable libavcodec build
131 --disable-avformat disable libavformat build
132 --disable-swresample disable libswresample build
133 --disable-swscale disable libswscale build
134 --disable-postproc disable libpostproc build
135 --disable-avfilter disable libavfilter build
136 --enable-avresample enable libavresample build [no]
137 --disable-pthreads disable pthreads [autodetect]
138 --disable-w32threads disable Win32 threads [autodetect]
139 --disable-os2threads disable OS/2 threads [autodetect]
140 --disable-network disable network support [no]
141 --disable-dct disable DCT code
142 --disable-dwt disable DWT code
143 --disable-error-resilience disable error resilience code
144 --disable-lsp disable LSP code
145 --disable-lzo disable LZO decoder code
146 --disable-mdct disable MDCT code
147 --disable-rdft disable RDFT code
148 --disable-fft disable FFT code
149 --disable-faan disable floating point AAN (I)DCT code
150 --disable-pixelutils disable pixel utils in libavutil
152 Individual component options:
153 --disable-everything disable all components listed below
154 --disable-encoder=NAME disable encoder NAME
155 --enable-encoder=NAME enable encoder NAME
156 --disable-encoders disable all encoders
157 --disable-decoder=NAME disable decoder NAME
158 --enable-decoder=NAME enable decoder NAME
159 --disable-decoders disable all decoders
160 --disable-hwaccel=NAME disable hwaccel NAME
161 --enable-hwaccel=NAME enable hwaccel NAME
162 --disable-hwaccels disable all hwaccels
163 --disable-muxer=NAME disable muxer NAME
164 --enable-muxer=NAME enable muxer NAME
165 --disable-muxers disable all muxers
166 --disable-demuxer=NAME disable demuxer NAME
167 --enable-demuxer=NAME enable demuxer NAME
168 --disable-demuxers disable all demuxers
169 --enable-parser=NAME enable parser NAME
170 --disable-parser=NAME disable parser NAME
171 --disable-parsers disable all parsers
172 --enable-bsf=NAME enable bitstream filter NAME
173 --disable-bsf=NAME disable bitstream filter NAME
174 --disable-bsfs disable all bitstream filters
175 --enable-protocol=NAME enable protocol NAME
176 --disable-protocol=NAME disable protocol NAME
177 --disable-protocols disable all protocols
178 --enable-indev=NAME enable input device NAME
179 --disable-indev=NAME disable input device NAME
180 --disable-indevs disable input devices
181 --enable-outdev=NAME enable output device NAME
182 --disable-outdev=NAME disable output device NAME
183 --disable-outdevs disable output devices
184 --disable-devices disable all devices
185 --enable-filter=NAME enable filter NAME
186 --disable-filter=NAME disable filter NAME
187 --disable-filters disable all filters
189 External library support:
191 Using any of the following switches will allow FFmpeg to link to the
192 corresponding external library. All the components depending on that library
193 will become enabled, if all their other dependencies are met and they are not
194 explicitly disabled. E.g. --enable-libwavpack will enable linking to
195 libwavpack and allow the libwavpack encoder to be built, unless it is
196 specifically disabled with --disable-encoder=libwavpack.
198 Note that only the system libraries are auto-detected. All the other external
199 libraries must be explicitly enabled.
201 Also note that the following help text describes the purpose of the libraries
202 themselves, not all their features will necessarily be usable by FFmpeg.
204 --disable-alsa disable ALSA support [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 is not used [no]
217 --disable-iconv disable iconv [autodetect]
218 --disable-jack disable libjack support [autodetect]
219 --enable-jni enable JNI support [no]
220 --enable-ladspa enable LADSPA audio filtering [no]
221 --enable-libass enable libass subtitles rendering,
222 needed for subtitles and ass filter [no]
223 --enable-libbluray enable BluRay reading using libbluray [no]
224 --enable-libbs2b enable bs2b DSP library [no]
225 --enable-libcaca enable textual display using libcaca [no]
226 --enable-libcelt enable CELT decoding via libcelt [no]
227 --enable-libcdio enable audio CD grabbing with libcdio [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-libkvazaar enable HEVC encoding via libkvazaar [no]
240 --enable-libmodplug enable ModPlug via libmodplug [no]
241 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
242 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
243 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
244 --enable-libopencv enable video filtering via libopencv [no]
245 --enable-libopenh264 enable H.264 encoding via OpenH264 [no]
246 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
247 --enable-libopenmpt enable decoding tracked files via libopenmpt [no]
248 --enable-libopus enable Opus de/encoding via libopus [no]
249 --enable-libpulse enable Pulseaudio input via libpulse [no]
250 --enable-librsvg enable SVG rasterization via librsvg [no]
251 --enable-librubberband enable rubberband needed for rubberband filter [no]
252 --enable-librtmp enable RTMP[E] support via librtmp [no]
253 --enable-libshine enable fixed-point MP3 encoding via libshine [no]
254 --enable-libsmbclient enable Samba protocol via libsmbclient [no]
255 --enable-libsnappy enable Snappy compression, needed for hap encoding [no]
256 --enable-libsoxr enable Include libsoxr resampling [no]
257 --enable-libspeex enable Speex de/encoding via libspeex [no]
258 --enable-libssh enable SFTP protocol via libssh [no]
259 --enable-libtesseract enable Tesseract, needed for ocr filter [no]
260 --enable-libtheora enable Theora encoding via libtheora [no]
261 --enable-libtwolame enable MP2 encoding via libtwolame [no]
262 --enable-libv4l2 enable libv4l2/v4l-utils [no]
263 --enable-libvidstab enable video stabilization using vid.stab [no]
264 --enable-libvmaf enable vmaf filter via libvmaf [no]
265 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
266 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
267 native implementation exists [no]
268 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
269 --enable-libwavpack enable wavpack encoding via libwavpack [no]
270 --enable-libwebp enable WebP encoding via libwebp [no]
271 --enable-libx264 enable H.264 encoding via x264 [no]
272 --enable-libx265 enable HEVC encoding via x265 [no]
273 --enable-libxavs enable AVS encoding via xavs [no]
274 --enable-libxcb enable X11 grabbing using XCB [autodetect]
275 --enable-libxcb-shm enable X11 grabbing shm communication [autodetect]
276 --enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect]
277 --enable-libxcb-shape enable X11 grabbing shape rendering [autodetect]
278 --enable-libxvid enable Xvid encoding via xvidcore,
279 native MPEG-4/Xvid encoder exists [no]
280 --enable-libxml2 enable XML parsing using the C library libxml2 [no]
281 --enable-libzimg enable z.lib, needed for zscale filter [no]
282 --enable-libzmq enable message passing via libzmq [no]
283 --enable-libzvbi enable teletext support via libzvbi [no]
284 --disable-lzma disable lzma [autodetect]
285 --enable-decklink enable Blackmagic DeckLink I/O support [no]
286 --enable-libndi_newtek enable Newteck NDI I/O support [no]
287 --enable-mediacodec enable Android MediaCodec support [no]
288 --enable-libmysofa enable libmysofa, needed for sofalizer filter [no]
289 --enable-openal enable OpenAL 1.1 capture support [no]
290 --enable-opencl enable OpenCL code
291 --enable-opengl enable OpenGL rendering [no]
292 --enable-openssl enable openssl, needed for https support
293 if gnutls is not used [no]
294 --disable-sndio disable sndio support [autodetect]
295 --disable-schannel disable SChannel SSP, needed for TLS support on
296 Windows if openssl and gnutls are not used [autodetect]
297 --disable-sdl2 disable sdl2 [autodetect]
298 --disable-securetransport disable Secure Transport, needed for TLS support
299 on OSX if openssl and gnutls are not used [autodetect]
300 --disable-xlib disable xlib [autodetect]
301 --disable-zlib disable zlib [autodetect]
303 The following libraries provide various hardware acceleration features:
304 --disable-audiotoolbox disable Apple AudioToolbox code [autodetect]
305 --disable-cuda disable dynamically linked Nvidia CUDA code [autodetect]
306 --enable-cuda-sdk enable CUDA features that require the CUDA SDK [no]
307 --disable-cuvid disable Nvidia CUVID support [autodetect]
308 --disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect]
309 --disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect]
310 --enable-libdrm enable DRM code (Linux) [no]
311 --enable-libmfx enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
312 --enable-libnpp enable Nvidia Performance Primitives-based code [no]
313 --enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
314 --disable-nvenc disable Nvidia video encoding code [autodetect]
315 --enable-omx enable OpenMAX IL code [no]
316 --enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no]
317 --disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
318 --disable-vda disable Apple Video Decode Acceleration code [autodetect]
319 --disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
320 --disable-videotoolbox disable VideoToolbox code [autodetect]
323 --arch=ARCH select architecture [$arch]
324 --cpu=CPU select the minimum required CPU (affects
325 instruction selection, may crash on older CPUs)
326 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
327 --progs-suffix=SUFFIX program name suffix []
328 --enable-cross-compile assume a cross-compiler is used
329 --sysroot=PATH root of cross-build tree
330 --sysinclude=PATH location of cross-build system headers
331 --target-os=OS compiler targets OS [$target_os]
332 --target-exec=CMD command to run executables on target
333 --target-path=DIR path to view of build directory on target
334 --target-samples=DIR path to samples directory on target
335 --tempprefix=PATH force fixed dir/prefix instead of mktemp for checks
336 --toolchain=NAME set tool defaults according to NAME
337 --nm=NM use nm tool NM [$nm_default]
338 --ar=AR use archive tool AR [$ar_default]
339 --as=AS use assembler AS [$as_default]
340 --ln_s=LN_S use symbolic link tool LN_S [$ln_s_default]
341 --strip=STRIP use strip tool STRIP [$strip_default]
342 --windres=WINDRES use windows resource compiler WINDRES [$windres_default]
343 --x86asmexe=EXE use nasm-compatible assembler EXE [$x86asmexe_default]
344 --cc=CC use C compiler CC [$cc_default]
345 --cxx=CXX use C compiler CXX [$cxx_default]
346 --objcc=OCC use ObjC compiler OCC [$cc_default]
347 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
348 --nvcc=NVCC use Nvidia CUDA compiler NVCC [$nvcc_default]
349 --ld=LD use linker LD [$ld_default]
350 --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default]
351 --pkg-config-flags=FLAGS pass additional flags to pkgconf []
352 --ranlib=RANLIB use ranlib RANLIB [$ranlib_default]
353 --doxygen=DOXYGEN use DOXYGEN to generate API doc [$doxygen_default]
354 --host-cc=HOSTCC use host C compiler HOSTCC
355 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
356 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
357 --host-ld=HOSTLD use host linker HOSTLD
358 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
359 --host-libs=HLIBS use libs HLIBS when linking for host
360 --host-os=OS compiler host OS [$target_os]
361 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
362 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
363 --extra-objcflags=FLAGS add FLAGS to OBJCFLAGS [$CFLAGS]
364 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
365 --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
366 --extra-ldlibflags=ELDFLAGS add ELDFLAGS to LDLIBFLAGS [$LDLIBFLAGS]
367 --extra-libs=ELIBS add ELIBS [$ELIBS]
368 --extra-version=STRING version string suffix []
369 --optflags=OPTFLAGS override optimization-related compiler flags
370 --nvccflags=NVCCFLAGS override nvcc flags [$nvccflags_default]
371 --build-suffix=SUFFIX library name suffix []
372 --enable-pic build position-independent code
373 --enable-thumb compile for Thumb instruction set
374 --enable-lto use link-time optimization
375 --env="ENV=override" override the environment variables
377 Advanced options (experts only):
378 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
379 --custom-allocator=NAME use a supported custom allocator
380 --disable-symver disable symbol versioning
381 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
382 --disable-safe-bitstream-reader
383 disable buffer boundary checking in bitreaders
384 (faster, but may crash)
385 --sws-max-filter-size=N the max filter size swscale uses [$sws_max_filter_size_default]
387 Optimization options (experts only):
388 --disable-asm disable all assembly optimizations
389 --disable-altivec disable AltiVec optimizations
390 --disable-vsx disable VSX optimizations
391 --disable-power8 disable POWER8 optimizations
392 --disable-amd3dnow disable 3DNow! optimizations
393 --disable-amd3dnowext disable 3DNow! extended optimizations
394 --disable-mmx disable MMX optimizations
395 --disable-mmxext disable MMXEXT optimizations
396 --disable-sse disable SSE optimizations
397 --disable-sse2 disable SSE2 optimizations
398 --disable-sse3 disable SSE3 optimizations
399 --disable-ssse3 disable SSSE3 optimizations
400 --disable-sse4 disable SSE4 optimizations
401 --disable-sse42 disable SSE4.2 optimizations
402 --disable-avx disable AVX optimizations
403 --disable-xop disable XOP optimizations
404 --disable-fma3 disable FMA3 optimizations
405 --disable-fma4 disable FMA4 optimizations
406 --disable-avx2 disable AVX2 optimizations
407 --disable-aesni disable AESNI optimizations
408 --disable-armv5te disable armv5te optimizations
409 --disable-armv6 disable armv6 optimizations
410 --disable-armv6t2 disable armv6t2 optimizations
411 --disable-vfp disable VFP optimizations
412 --disable-neon disable NEON optimizations
413 --disable-inline-asm disable use of inline assembly
414 --disable-x86asm disable use of standalone x86 assembly
415 --disable-mipsdsp disable MIPS DSP ASE R1 optimizations
416 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
417 --disable-msa disable MSA optimizations
418 --disable-mipsfpu disable floating point MIPS optimizations
419 --disable-mmi disable Loongson SIMD optimizations
420 --disable-fast-unaligned consider unaligned accesses slow
422 Developer options (useful when working on FFmpeg itself):
423 --disable-debug disable debugging symbols
424 --enable-debug=LEVEL set the debug level [$debuglevel]
425 --disable-optimizations disable compiler optimizations
426 --enable-extra-warnings enable more compiler warnings
427 --disable-stripping disable stripping of executables and shared libraries
428 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
429 2 causes a slowdown at runtime.
430 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
431 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
432 leaks and errors, using the specified valgrind binary.
433 Cannot be combined with --target-exec
434 --enable-ftrapv Trap arithmetic overflows
435 --samples=PATH location of test samples for FATE, if not set use
436 \$FATE_SAMPLES at make invocation time.
437 --enable-neon-clobber-test check NEON registers for clobbering (should be
438 used only for debugging purposes)
439 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
440 should be used only for debugging purposes)
441 --enable-random randomly enable/disable components
443 --enable-random=LIST randomly enable/disable specific components or
444 --disable-random=LIST component groups. LIST is a comma-separated list
445 of NAME[:PROB] entries where NAME is a component
446 (group) and PROB the probability associated with
448 --random-seed=VALUE seed value for --enable/disable-random
449 --disable-valgrind-backtrace do not print a backtrace under Valgrind
450 (only applies to --disable-optimizations builds)
451 --enable-osfuzz Enable building fuzzer tool
452 --libfuzzer=PATH path to libfuzzer
453 --ignore-tests=TESTS comma-separated list (without "fate-" prefix
454 in the name) of tests whose result is ignored
455 --enable-linux-perf enable Linux Performance Monitor API
457 NOTE: Object files are built at the place where configure is launched.
463 if test -t 1 && which tput >/dev/null 2>&1; then
464 ncolors=$(tput colors)
465 if test -n "$ncolors" && test $ncolors -ge 8; then
466 bold_color=$(tput bold)
467 warn_color=$(tput setaf 3)
468 error_color=$(tput setaf 1)
469 reset_color=$(tput sgr0)
471 # 72 used instead of 80 since that's the default of pr
477 echo "$@" >> $logfile
482 pr -n -t $1 >> $logfile
488 WARNINGS="${WARNINGS}WARNING: $*\n"
493 echo "$error_color$bold_color$@$reset_color"
496 If you think configure made a mistake, make sure you are using the latest
497 version from Git. If the latest version fails, report the problem to the
498 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
500 if disabled logging; then
502 Rerun configure with logging enabled (do not use --disable-logging), and
503 include the log this produces with your report.
507 Include the log file "$logfile" produced by configure as this will help
514 # Avoid locale weirdness, besides we really just want to translate ASCII.
516 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
520 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
524 echo "$*" | sed 's/["\\]/\\\0/g'
528 v=$(echo "$1" | sed "s/'/'\\\\''/g")
529 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
534 echo "$@" | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//'
541 eval "case $v in $pat) printf '%s ' $v ;; esac"
549 eval "case $v in $pat) ;; *) printf '%s ' $v ;; esac"
556 for v; do eval $m; done
562 for v; do echo ${v}${suffix}; done
577 eval : \${$var:=$value}
582 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
588 eval $(sanitize_var_name "$var")='$*'
592 eval echo \$$(sanitize_var_name "$1")
597 eval level=\${${pvar}_level:=0}
598 eval ${pvar}_${level}="\$$pvar"
599 eval ${pvar}_level=$(($level+1))
605 eval level=\${${pvar}_level:-0}
606 test $level = 0 && continue
607 eval level=$(($level-1))
608 eval $pvar="\${${pvar}_${level}}"
609 eval ${pvar}_level=$level
610 eval unset ${pvar}_${level}
616 eval ${var}_requested=yes
639 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
645 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
651 enabled $var && continue
652 eval sel="\$${var}_select"
653 eval sgs="\$${var}_suggest"
657 enable_deep_weak $sgs
669 disabled $var && continue
678 test "${1#!}" = "$1" && op='=' || op=!=
679 eval test "x\$${1#!}_requested" $op "xyes"
683 test "${1#!}" = "$1" && op='=' || op=!=
684 eval test "x\$${1#!}" $op "xyes"
688 test "${1#!}" = "$1" && op='=' || op=!=
689 eval test "x\$${1#!}" $op "xno"
694 enabled $opt || return 1
700 disabled $opt || return 1
706 enabled $opt && return 0
712 disabled $opt && return 0
719 eval : \${$opt:=\$${opt}_default}
727 [ $var = $value ] && return 0
735 enabled ${cfg}_checking && die "Circular dependency for $cfg."
736 disabled ${cfg}_checking && continue
737 enable ${cfg}_checking
740 eval dep_all="\$${cfg}_deps"
741 eval dep_any="\$${cfg}_deps_any"
742 eval dep_sel="\$${cfg}_select"
743 eval dep_sgs="\$${cfg}_suggest"
744 eval dep_ifa="\$${cfg}_if"
745 eval dep_ifn="\$${cfg}_if_any"
747 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
748 do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
749 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
751 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
752 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
753 enabled_all $dep_all || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but not all dependencies are satisfied: $dep_all"; }
754 enabled_any $dep_any || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but not any dependency is satisfied: $dep_any"; }
755 disabled_any $dep_sel && { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but some selected dependency is unsatisfied: $dep_sel"; }
757 if enabled $cfg; then
759 enable_deep_weak $dep_sgs
762 disable ${cfg}_checking
771 for cfg in $allopts; do
772 enabled $cfg || continue
773 eval dep_extralibs="\$${cfg}_extralibs"
774 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
782 map 'eval echo "$v \${$v:-no}"' "$@" |
783 awk "BEGIN { split(\"$files\", files) }
785 c = \"$pfx\" toupper(\$1);
791 if (file ~ /\\.h\$/) {
792 printf(\"#define %s %d\\n\", c, v) >>file;
793 } else if (file ~ /\\.asm\$/) {
794 printf(\"%%define %s %d\\n\", c, v) >>file;
795 } else if (file ~ /\\.mak\$/) {
796 n = -v ? \"\" : \"!\";
797 printf(\"%s%s=yes\\n\", n, c) >>file;
798 } else if (file ~ /\\.texi\$/) {
799 pre = -v ? \"\" : \"@c \";
802 gsub(/_/, \"-\", c2);
803 printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
813 enabled $v && printf "%s\n" ${v%$suf}
820 eval "$var=\"\$$var $*\""
826 eval "$var=\"$* \$$var\""
832 for tok in $(eval echo \$$var); do
833 uniq_list="$(filter_out $tok $uniq_list) $tok"
835 eval "$var=\"${uniq_list}\""
843 append CFLAGS $($cflags_filter "$@")
846 add_cflags_headers(){
847 append CFLAGS_HEADERS $($cflags_filter "$@")
851 append CXXFLAGS $($cflags_filter "$@")
855 append ASFLAGS $($asflags_filter "$@")
859 append OBJCFLAGS $($objcflags_filter "$@")
863 append LDFLAGS $($ldflags_filter "$@")
867 append LDEXEFLAGS $($ldflags_filter "$@")
871 append LDLIBFLAGS $($ldflags_filter "$@")
875 append ASMSTRIPFLAGS "$@"
879 prepend extralibs $($ldflags_filter "$@")
883 append host_cppflags "$@"
887 append host_cflags $($host_cflags_filter "$@")
891 append host_ldflags $($host_ldflags_filter "$@")
895 append compat_objs $1
897 map 'add_cppflags -D$v' "$@"
902 "$@" >> $logfile 2>&1
907 stat "$1" >> $logfile 2>&1
911 eval printf '%s\\n' $CC_O
915 eval printf '%s\\n' $CC_E
922 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
929 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
936 check_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
943 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
947 eval printf '%s\\n' $AS_O
954 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
958 log check_inline_asm "$@"
963 check_cc "$@" <<EOF && enable $name
964 void foo(void){ __asm__ volatile($code); }
968 check_inline_asm_flags(){
969 log check_inline_asm_flags "$@"
974 while [ "$1" != "" ]; do
980 void foo(void){ __asm__ volatile($code); }
983 check_cmd $cc $CPPFLAGS $CFLAGS $flags "$@" $CC_C $(cc_o $TMPO) $TMPC &&
984 enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags
989 check_inline_asm ${1}_inline "\"$2\""
990 echo "$2" | check_as && enable ${1}_external || disable ${1}_external
994 log check_x86asm "$@"
998 check_cmd $x86asmexe $X86ASMFLAGS -Werror "$@" -o $TMPO $TMPS
1002 eval printf '%s\\n' $LD_O
1009 flags=$(filter_out '-l*|*.so' $@)
1010 libs=$(filter '-l*|*.so' $@)
1011 check_$type $($cflags_filter $flags) || return
1012 flags=$($ldflags_filter $flags)
1013 libs=$($ldflags_filter $libs)
1014 check_cmd $ld $LDFLAGS $LDEXEFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
1019 test "${hdr%.h}" = "${hdr}" &&
1020 echo "#include $hdr" ||
1021 echo "#include <$hdr>"
1031 for hdr in $headers; do
1034 echo "int main(void) { $code; return 0; }"
1035 } | check_$check "$@"
1039 log check_cppflags "$@"
1040 check_cpp "$@" <<EOF && append CPPFLAGS "$@"
1046 log test_cflags "$@"
1047 set -- $($cflags_filter "$@")
1054 log check_cflags "$@"
1055 test_cflags "$@" && add_cflags "$@"
1059 log check_cxxflags "$@"
1060 set -- $($cflags_filter "$@")
1061 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
1067 log test_objcflags "$@"
1068 set -- $($objcflags_filter "$@")
1069 check_objcc "$@" <<EOF
1075 log check_objcflags "$@"
1076 test_objcflags "$@" && add_objcflags "$@"
1080 log test_ldflags "$@"
1081 check_ld "cc" "$@" <<EOF
1082 int main(void){ return 0; }
1087 log check_ldflags "$@"
1088 test_ldflags "$@" && add_ldflags "$@"
1092 log test_stripflags "$@"
1093 # call check_cc to get a fresh TMPO
1095 int main(void) { return 0; }
1097 check_cmd $strip $ASMSTRIPFLAGS "$@" $TMPO
1101 log check_stripflags "$@"
1102 test_stripflags "$@" && add_stripflags "$@"
1106 log check_header "$@"
1109 disable_safe $header
1110 check_cpp "$@" <<EOF && enable_safe $header
1116 check_header_objcc(){
1117 log check_header_objcc "$@"
1121 disable_safe $header
1123 echo "#include <$header>"
1124 echo "int main(void) { return 0; }"
1125 } | check_objcc && check_stat "$TMPO" && enable_safe $header
1128 check_apple_framework(){
1129 log check_apple_framework "$@"
1131 name="$(tolower $framework)"
1132 header="${framework}/${framework}.h"
1134 check_header_objcc $header && enable $name && add_extralibs "-framework $framework"
1142 check_ld "cc" "$@" <<EOF && enable $func
1144 int main(void){ $func(); }
1148 check_complexfunc(){
1149 log check_complexfunc "$@"
1153 test $narg = 2 && args="f, g" || args="f * I"
1155 check_ld "cc" "$@" <<EOF && enable $func
1156 #include <complex.h>
1158 float foo(complex float f, complex float g) { return $func($args); }
1159 int main(void){ return (int) foo; }
1164 log check_mathfunc "$@"
1168 test $narg = 2 && args="f, g" || args="f"
1170 check_ld "cc" "$@" <<EOF && enable $func
1172 float foo(float f, float g) { return $func($args); }
1173 int main(void){ return (int) foo; }
1177 check_func_headers(){
1178 log check_func_headers "$@"
1183 for hdr in $headers; do
1186 echo "#include <stdint.h>"
1187 for func in $funcs; do
1188 echo "long check_$func(void) { return (long) $func; }"
1190 echo "int main(void) { int ret = 0;"
1191 # LTO could optimize out the test functions without this
1192 for func in $funcs; do
1193 echo " ret |= ((intptr_t)check_$func) & 0xFFFF;"
1195 echo "return ret; }"
1196 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
1199 check_class_headers_cpp(){
1200 log check_class_headers_cpp "$@"
1205 for hdr in $headers; do
1206 echo "#include <$hdr>"
1208 echo "int main(void) { "
1210 for class in $classes; do
1211 echo "$class obj$i;"
1215 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
1218 check_cpp_condition(){
1219 log check_cpp_condition "$@"
1223 check_cpp "$@" <<EOF
1226 #error "unsatisfied condition: $condition"
1232 log test_cflags_cc "$@"
1237 set -- $($cflags_filter "$flags")
1241 #error "unsatisfied condition: $condition"
1253 check_func_headers "$headers" "$funcs" "$@" &&
1254 enable $name && add_extralibs "$@"
1258 log check_lib_cpp "$@"
1262 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
1266 log check_pkg_config "$@"
1272 check_cmd $pkg_config --exists --print-errors $pkg_version || return
1273 pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
1274 pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
1275 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
1276 set_safe "${pkg}_cflags" $pkg_cflags &&
1277 set_safe "${pkg}_extralibs" $pkg_libs
1281 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
1285 log check_exec_crash "$@"
1288 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1289 # are safe but may not be available everywhere. Thus we use
1290 # raise(SIGTERM) instead. The check is run in a subshell so we
1291 # can redirect the "Terminated" message from the shell. SIGBUS
1292 # is not defined by standard C so it is used conditionally.
1294 (check_exec "$@") >> $logfile 2>&1 <<EOF
1296 static void sighandler(int sig){
1302 int (*func_ptr)(void) = foo;
1304 signal(SIGILL, sighandler);
1305 signal(SIGFPE, sighandler);
1306 signal(SIGSEGV, sighandler);
1308 signal(SIGBUS, sighandler);
1320 disable_safe "$type"
1321 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
1325 log check_struct "$@"
1330 disable_safe "${struct}_${member}"
1331 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1332 enable_safe "${struct}_${member}"
1336 log check_builtin "$@"
1342 check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1345 check_compile_assert(){
1346 log check_compile_assert "$@"
1352 check_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
1362 check_lib $name "$headers" $func "$@" || die "ERROR: $name_version not found"
1370 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1374 log use_pkg_config "$@"
1376 check_pkg_config "$@" || return 1
1377 add_cflags $(get_safe "${pkg}_cflags")
1378 add_extralibs $(get_safe "${pkg}_extralibs")
1381 require_pkg_config(){
1382 use_pkg_config "$@" || die "ERROR: $pkg not found using pkg-config$pkg_config_fail_message"
1386 eval printf '%s\\n' $HOSTCC_E
1390 eval printf '%s\\n' $HOSTCC_O
1394 log check_host_cc "$@"
1397 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1401 log check_host_cpp "$@"
1404 check_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC
1407 check_host_cppflags(){
1408 log check_host_cppflags "$@"
1409 check_host_cpp "$@" <<EOF && append host_cppflags "$@"
1414 check_host_cflags(){
1415 log check_host_cflags "$@"
1416 set -- $($host_cflags_filter "$@")
1417 check_host_cc "$@" <<EOF && append host_cflags "$@"
1422 check_host_cpp_condition(){
1423 log check_host_cpp_condition "$@"
1427 check_host_cpp "$@" <<EOF
1430 #error "unsatisfied condition: $condition"
1436 cmp -s "$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return
1437 mkdir -p "$(dirname $2)"
1441 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1442 # system-dependent things.
1444 AVCODEC_COMPONENTS="
1452 AVDEVICE_COMPONENTS="
1457 AVFILTER_COMPONENTS="
1461 AVFORMAT_COMPONENTS="
1467 AVRESAMPLE_COMPONENTS=""
1469 AVUTIL_COMPONENTS=""
1473 $AVDEVICE_COMPONENTS
1474 $AVFILTER_COMPONENTS
1475 $AVFORMAT_COMPONENTS
1476 $AVRESAMPLE_COMPONENTS
1481 avio_dir_cmd_example
1482 avio_reading_example
1483 decode_audio_example
1484 decode_video_example
1485 demuxing_decoding_example
1486 encode_audio_example
1487 encode_video_example
1489 filter_audio_example
1490 filtering_audio_example
1491 filtering_video_example
1492 http_multiclient_example
1498 resampling_audio_example
1499 scaling_video_example
1500 transcode_aac_example
1504 EXTERNAL_AUTODETECT_LIBRARY_LIST="
1524 EXTERNAL_LIBRARY_GPL_LIST="
1536 EXTERNAL_LIBRARY_NONFREE_LIST="
1543 EXTERNAL_LIBRARY_VERSION3_LIST="
1550 EXTERNAL_LIBRARY_GPLV3_LIST="
1554 EXTERNAL_LIBRARY_LIST="
1555 $EXTERNAL_AUTODETECT_LIBRARY_LIST
1556 $EXTERNAL_LIBRARY_GPL_LIST
1557 $EXTERNAL_LIBRARY_NONFREE_LIST
1558 $EXTERNAL_LIBRARY_VERSION3_LIST
1559 $EXTERNAL_LIBRARY_GPLV3_LIST
1617 HWACCEL_AUTODETECT_LIBRARY_LIST="
1632 HWACCEL_LIBRARY_NONFREE_LIST="
1637 HWACCEL_LIBRARY_LIST="
1638 $HWACCEL_AUTODETECT_LIBRARY_LIST
1639 $HWACCEL_LIBRARY_NONFREE_LIST
1659 safe_bitstream_reader
1706 # COMPONENT_LIST needs to come last to ensure correct dependency checking
1710 $EXTERNAL_LIBRARY_LIST
1711 $HWACCEL_LIBRARY_LIST
1743 $EXTERNAL_AUTODETECT_LIBRARY_LIST
1744 $HWACCEL_AUTODETECT_LIBRARY_LIST
1786 ARCH_EXT_LIST_MIPS="
1798 ARCH_EXT_LIST_LOONGSON="
1804 ARCH_EXT_LIST_X86_SIMD="
1833 $ARCH_EXT_LIST_X86_SIMD
1843 $ARCH_EXT_LIST_LOONGSON
1866 sync_val_compare_and_swap
1884 cdio_paranoia_paranoia_h
1888 dev_bktr_ioctl_bt848_h
1889 dev_bktr_ioctl_meteor_h
1891 dev_video_bktr_ioctl_bt848_h
1892 dev_video_meteor_ioctl_meteor_h
1902 machine_ioctl_bt848_h
1903 machine_ioctl_meteor_h
1905 opencv2_core_core_c_h
1906 openjpeg_2_2_openjpeg_h
1907 openjpeg_2_1_openjpeg_h
1908 openjpeg_2_0_openjpeg_h
1909 openjpeg_1_5_openjpeg_h
1987 GetProcessAffinityMask
1988 GetProcessMemoryInfo
1991 GetSystemTimeAsFileTime
1998 jack_port_get_latency_range
2015 SetConsoleTextAttribute
2016 SetConsoleCtrlHandler
2024 UTGetOSTypeFromString
2029 TOOLCHAIN_FEATURES="
2043 inline_asm_direct_symbol_refs
2045 inline_asm_nonlocal_labels
2056 CONDITION_VARIABLE_Ptr
2059 struct_group_source_req
2060 struct_ip_mreq_source
2062 struct_msghdr_msg_flags
2064 struct_rusage_ru_maxrss
2065 struct_sctp_event_subscribe
2067 struct_sockaddr_sa_len
2068 struct_sockaddr_storage
2069 struct_stat_st_mtim_tv_nsec
2070 struct_v4l2_frmivalenum_discrete
2075 $(add_suffix _external $ARCH_EXT_LIST)
2076 $(add_suffix _inline $ARCH_EXT_LIST)
2095 MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
2108 # options emitted with CONFIG_ prefix but not available on the command line
2125 frame_thread_encoder
2279 # code dependency declarations
2281 # architecture extensions
2286 armv8_deps="aarch64"
2287 neon_deps_any="aarch64 arm"
2288 intrinsics_neon_deps="neon"
2289 vfp_deps_any="aarch64 arm"
2293 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
2295 loongson2_deps="mips"
2296 loongson3_deps="mips"
2299 mipsdspr2_deps="mips"
2300 mips32r2_deps="mips"
2301 mips32r5_deps="mips"
2302 mips32r6_deps="mips"
2303 mips64r2_deps="mips"
2304 mips64r6_deps="mips"
2316 x86_64_select="i686"
2317 x86_64_suggest="fast_cmov"
2320 amd3dnowext_deps="amd3dnow"
2337 mmx_external_deps="x86asm"
2338 mmx_inline_deps="inline_asm"
2339 mmx_suggest="mmx_external mmx_inline"
2341 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do
2342 eval dep=\$${ext}_deps
2343 eval ${ext}_external_deps='"${dep}_external"'
2344 eval ${ext}_inline_deps='"${dep}_inline"'
2345 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
2348 aligned_stack_if_any="aarch64 ppc x86"
2349 fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
2350 fast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
2351 fast_unaligned_if_any="aarch64 ppc x86"
2352 simd_align_16_if_any="altivec neon sse"
2353 simd_align_32_if_any="avx"
2355 # system capabilities
2356 symver_if_any="symver_asm_label symver_gnu_asm"
2357 valgrind_backtrace_deps="!optimizations valgrind_valgrind_h"
2360 atomics_gcc_if="sync_val_compare_and_swap"
2361 atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
2362 atomics_win32_if="MemoryBarrier"
2363 atomics_native_if_any="$ATOMICS_LIST"
2364 w32threads_deps="atomics_native"
2365 threads_if_any="$THREADS_LIST"
2369 dirac_parse_select="golomb"
2370 error_resilience_select="me_cmp"
2371 faandct_deps="faan fdctdsp"
2372 faanidct_deps="faan idctdsp"
2373 h264dsp_select="startcode"
2374 hevcparse_select="golomb"
2375 frame_thread_encoder_deps="encoders threads"
2376 intrax8_select="blockdsp idctdsp"
2379 me_cmp_select="fdctdsp idctdsp pixblockdsp"
2380 mpeg_er_select="error_resilience"
2381 mpegaudio_select="mpegaudiodsp mpegaudioheader"
2382 mpegaudiodsp_select="dct"
2383 mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp"
2384 mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp"
2385 vc1dsp_select="h264chroma qpeldsp startcode"
2388 # decoders / encoders
2389 aac_decoder_select="mdct15 mdct sinewin"
2390 aac_fixed_decoder_select="mdct sinewin"
2391 aac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin"
2392 aac_latm_decoder_select="aac_decoder aac_latm_parser"
2393 ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct"
2394 ac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct"
2395 ac3_encoder_select="ac3dsp audiodsp mdct me_cmp"
2396 ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp"
2397 adpcm_g722_decoder_select="g722dsp"
2398 adpcm_g722_encoder_select="g722dsp"
2399 aic_decoder_select="golomb idctdsp"
2400 alac_encoder_select="lpc"
2401 als_decoder_select="bswapdsp"
2402 amrnb_decoder_select="lsp"
2403 amrwb_decoder_select="lsp"
2404 amv_decoder_select="sp5x_decoder exif"
2405 amv_encoder_select="aandcttables jpegtables mpegvideoenc"
2406 ape_decoder_select="bswapdsp llauddsp"
2407 apng_decoder_select="zlib"
2408 apng_encoder_select="llvidencdsp zlib"
2409 asv1_decoder_select="blockdsp bswapdsp idctdsp"
2410 asv1_encoder_select="bswapdsp fdctdsp pixblockdsp"
2411 asv2_decoder_select="blockdsp bswapdsp idctdsp"
2412 asv2_encoder_select="bswapdsp fdctdsp pixblockdsp"
2413 atrac1_decoder_select="mdct sinewin"
2414 atrac3_decoder_select="mdct"
2415 atrac3p_decoder_select="mdct sinewin"
2416 avrn_decoder_select="exif jpegtables"
2417 bink_decoder_select="blockdsp hpeldsp"
2418 binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
2419 binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
2420 cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
2421 clearvideo_decoder_select="idctdsp"
2422 cllc_decoder_select="bswapdsp"
2423 comfortnoise_encoder_select="lpc"
2424 cook_decoder_select="audiodsp mdct sinewin"
2425 cscd_decoder_select="lzo"
2426 cscd_decoder_suggest="zlib"
2427 dca_decoder_select="mdct"
2428 dds_decoder_select="texturedsp"
2429 dirac_decoder_select="dirac_parse dwt golomb videodsp mpegvideoenc"
2430 dnxhd_decoder_select="blockdsp idctdsp"
2431 dnxhd_encoder_select="aandcttables blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
2432 dolby_e_decoder_select="mdct"
2433 dvvideo_decoder_select="dvprofile idctdsp"
2434 dvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp"
2435 dxa_decoder_select="zlib"
2436 dxv_decoder_select="lzf texturedsp"
2437 eac3_decoder_select="ac3_decoder"
2438 eac3_encoder_select="ac3_encoder"
2439 eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo"
2440 eatgq_decoder_select="aandcttables"
2441 eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp"
2442 exr_decoder_select="zlib"
2443 ffv1_decoder_select="rangecoder"
2444 ffv1_encoder_select="rangecoder"
2445 ffvhuff_decoder_select="huffyuv_decoder"
2446 ffvhuff_encoder_select="huffyuv_encoder"
2447 fic_decoder_select="golomb"
2448 flac_decoder_select="flacdsp"
2449 flac_encoder_select="bswapdsp flacdsp lpc"
2450 flashsv2_decoder_select="zlib"
2451 flashsv2_encoder_select="zlib"
2452 flashsv_decoder_select="zlib"
2453 flashsv_encoder_select="zlib"
2454 flv_decoder_select="h263_decoder"
2455 flv_encoder_select="h263_encoder"
2456 fourxm_decoder_select="blockdsp bswapdsp"
2457 fraps_decoder_select="bswapdsp huffman"
2458 g2m_decoder_select="blockdsp idctdsp jpegtables zlib"
2459 g729_decoder_select="audiodsp"
2460 h261_decoder_select="mpegvideo"
2461 h261_encoder_select="aandcttables mpegvideoenc"
2462 h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp"
2463 h263_encoder_select="aandcttables h263dsp mpegvideoenc"
2464 h263i_decoder_select="h263_decoder"
2465 h263p_decoder_select="h263_decoder"
2466 h263p_encoder_select="h263_encoder"
2467 h264_decoder_select="cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp"
2468 h264_decoder_suggest="error_resilience"
2469 hap_decoder_select="snappy texturedsp"
2470 hap_encoder_deps="libsnappy"
2471 hap_encoder_select="texturedspenc"
2472 hevc_decoder_select="bswapdsp cabac golomb hevcparse videodsp"
2473 huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp"
2474 huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp"
2475 iac_decoder_select="imc_decoder"
2476 imc_decoder_select="bswapdsp fft mdct sinewin"
2477 indeo3_decoder_select="hpeldsp"
2478 indeo4_decoder_select="ividsp"
2479 indeo5_decoder_select="ividsp"
2480 interplay_video_decoder_select="hpeldsp"
2481 jpegls_decoder_select="mjpeg_decoder"
2482 jv_decoder_select="blockdsp"
2483 lagarith_decoder_select="llviddsp"
2484 ljpeg_encoder_select="aandcttables idctdsp jpegtables mpegvideoenc"
2485 magicyuv_decoder_select="llviddsp"
2486 mdec_decoder_select="blockdsp idctdsp mpegvideo"
2487 metasound_decoder_select="lsp mdct sinewin"
2488 mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp"
2489 mjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables"
2490 mjpeg_encoder_select="aandcttables jpegtables mpegvideoenc"
2491 mjpegb_decoder_select="mjpeg_decoder"
2492 mlp_decoder_select="mlp_parser"
2493 mlp_encoder_select="lpc"
2494 motionpixels_decoder_select="bswapdsp"
2495 mp1_decoder_select="mpegaudio"
2496 mp1float_decoder_select="mpegaudio"
2497 mp2_decoder_select="mpegaudio"
2498 mp2float_decoder_select="mpegaudio"
2499 mp3_decoder_select="mpegaudio"
2500 mp3adu_decoder_select="mpegaudio"
2501 mp3adufloat_decoder_select="mpegaudio"
2502 mp3float_decoder_select="mpegaudio"
2503 mp3on4_decoder_select="mpegaudio"
2504 mp3on4float_decoder_select="mpegaudio"
2505 mpc7_decoder_select="bswapdsp mpegaudiodsp"
2506 mpc8_decoder_select="mpegaudiodsp"
2507 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
2508 mpeg_xvmc_decoder_select="mpeg2video_decoder"
2509 mpegvideo_decoder_select="mpegvideo"
2510 mpeg1video_decoder_select="mpegvideo"
2511 mpeg1video_encoder_select="aandcttables mpegvideoenc h263dsp"
2512 mpeg2video_decoder_select="mpegvideo"
2513 mpeg2video_encoder_select="aandcttables mpegvideoenc h263dsp"
2514 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
2515 mpeg4_encoder_select="h263_encoder"
2516 msa1_decoder_select="mss34dsp"
2517 mscc_decoder_select="zlib"
2518 msmpeg4v1_decoder_select="h263_decoder"
2519 msmpeg4v2_decoder_select="h263_decoder"
2520 msmpeg4v2_encoder_select="h263_encoder"
2521 msmpeg4v3_decoder_select="h263_decoder"
2522 msmpeg4v3_encoder_select="h263_encoder"
2523 mss2_decoder_select="mpegvideo qpeldsp vc1_decoder"
2524 mts2_decoder_select="mss34dsp"
2525 mxpeg_decoder_select="mjpeg_decoder"
2526 nellymoser_decoder_select="mdct sinewin"
2527 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
2528 nuv_decoder_select="idctdsp lzo"
2529 on2avc_decoder_select="mdct"
2530 opus_decoder_deps="swresample"
2531 opus_decoder_select="mdct15"
2532 opus_encoder_select="audio_frame_queue mdct15"
2533 png_decoder_select="zlib"
2534 png_encoder_select="llvidencdsp zlib"
2535 prores_decoder_select="blockdsp idctdsp"
2536 prores_encoder_select="fdctdsp"
2537 qcelp_decoder_select="lsp"
2538 qdm2_decoder_select="mdct rdft mpegaudiodsp"
2539 ra_144_decoder_select="audiodsp"
2540 ra_144_encoder_select="audio_frame_queue lpc audiodsp"
2541 ralf_decoder_select="golomb"
2542 rawvideo_decoder_select="bswapdsp"
2543 rscc_decoder_select="zlib"
2544 rtjpeg_decoder_select="me_cmp"
2545 rv10_decoder_select="h263_decoder"
2546 rv10_encoder_select="h263_encoder"
2547 rv20_decoder_select="h263_decoder"
2548 rv20_encoder_select="h263_encoder"
2549 rv30_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
2550 rv40_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
2551 screenpresso_decoder_select="zlib"
2552 shorten_decoder_select="bswapdsp"
2553 sipr_decoder_select="lsp"
2554 snow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp"
2555 snow_encoder_select="aandcttables dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder"
2556 sonic_decoder_select="golomb rangecoder"
2557 sonic_encoder_select="golomb rangecoder"
2558 sonic_ls_encoder_select="golomb rangecoder"
2559 sp5x_decoder_select="mjpeg_decoder"
2560 srgc_decoder_select="zlib"
2561 svq1_decoder_select="hpeldsp"
2562 svq1_encoder_select="aandcttables hpeldsp me_cmp mpegvideoenc"
2563 svq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
2564 svq3_decoder_suggest="zlib"
2565 tak_decoder_select="audiodsp"
2566 tdsc_decoder_select="zlib mjpeg_decoder"
2567 theora_decoder_select="vp3_decoder"
2568 thp_decoder_select="mjpeg_decoder"
2569 tiff_decoder_suggest="zlib lzma"
2570 tiff_encoder_suggest="zlib"
2571 truehd_decoder_select="mlp_parser"
2572 truehd_encoder_select="lpc"
2573 truemotion2_decoder_select="bswapdsp"
2574 truespeech_decoder_select="bswapdsp"
2575 tscc_decoder_select="zlib"
2576 twinvq_decoder_select="mdct lsp sinewin"
2577 txd_decoder_select="texturedsp"
2578 utvideo_decoder_select="bswapdsp llviddsp"
2579 utvideo_encoder_select="bswapdsp huffman llvidencdsp"
2580 vble_decoder_select="llviddsp"
2581 vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp"
2582 vc1_qsv_decoder_deps="libmfx"
2583 vc1_qsv_decoder_select="qsvdec vc1_qsv_hwaccel vc1_parser"
2584 vc1image_decoder_select="vc1_decoder"
2585 vorbis_decoder_select="mdct"
2586 vorbis_encoder_select="mdct"
2587 vp3_decoder_select="hpeldsp vp3dsp videodsp"
2588 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
2589 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
2590 vp6a_decoder_select="vp6_decoder"
2591 vp6f_decoder_select="vp6_decoder"
2592 vp7_decoder_select="h264pred videodsp vp8dsp"
2593 vp8_decoder_select="h264pred videodsp vp8dsp"
2594 vp9_decoder_select="videodsp vp9_parser"
2595 webp_decoder_select="vp8_decoder exif"
2596 wmalossless_decoder_select="llauddsp"
2597 wmapro_decoder_select="mdct sinewin wma_freqs"
2598 wmav1_decoder_select="mdct sinewin wma_freqs"
2599 wmav1_encoder_select="mdct sinewin wma_freqs"
2600 wmav2_decoder_select="mdct sinewin wma_freqs"
2601 wmav2_encoder_select="mdct sinewin wma_freqs"
2602 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
2603 wmv1_decoder_select="h263_decoder"
2604 wmv1_encoder_select="h263_encoder"
2605 wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
2606 wmv2_encoder_select="h263_encoder wmv2dsp"
2607 wmv3_decoder_select="vc1_decoder"
2608 wmv3image_decoder_select="wmv3_decoder"
2609 xma1_decoder_select="wmapro_decoder"
2610 xma2_decoder_select="wmapro_decoder"
2611 zerocodec_decoder_select="zlib"
2612 zlib_decoder_select="zlib"
2613 zlib_encoder_select="zlib"
2614 zmbv_decoder_select="zlib"
2615 zmbv_encoder_select="zlib"
2617 # hardware accelerators
2618 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
2619 cuda_deps_any="dlopen LoadLibrary"
2621 d3d11va_deps="d3d11_h dxva_h ID3D11VideoDecoder ID3D11VideoContext"
2622 dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32"
2623 dxva2_extralibs="-luser32"
2624 vda_framework_deps="VideoDecodeAcceleration_VDADecoder_h blocks_extension"
2625 vda_framework_extralibs="-framework VideoDecodeAcceleration"
2626 vda_deps="vda_framework pthreads"
2627 vda_extralibs="-framework CoreFoundation -framework QuartzCore"
2628 videotoolbox_hwaccel_deps="videotoolbox pthreads"
2629 videotoolbox_hwaccel_extralibs="-framework QuartzCore"
2630 xvmc_deps="X11_extensions_XvMClib_h"
2632 h263_vaapi_hwaccel_deps="vaapi"
2633 h263_vaapi_hwaccel_select="h263_decoder"
2634 h263_videotoolbox_hwaccel_deps="videotoolbox"
2635 h263_videotoolbox_hwaccel_select="h263_decoder"
2636 h264_cuvid_hwaccel_deps="cuda cuvid"
2637 h264_cuvid_hwaccel_select="h264_cuvid_decoder"
2638 h264_d3d11va_hwaccel_deps="d3d11va"
2639 h264_d3d11va_hwaccel_select="h264_decoder"
2640 h264_d3d11va2_hwaccel_deps="d3d11va"
2641 h264_d3d11va2_hwaccel_select="h264_decoder"
2642 h264_dxva2_hwaccel_deps="dxva2"
2643 h264_dxva2_hwaccel_select="h264_decoder"
2644 h264_mediacodec_hwaccel_deps="mediacodec"
2645 h264_mmal_hwaccel_deps="mmal"
2646 h264_qsv_hwaccel_deps="libmfx"
2647 h264_vaapi_hwaccel_deps="vaapi"
2648 h264_vaapi_hwaccel_select="h264_decoder"
2649 h264_vda_hwaccel_deps="vda"
2650 h264_vda_hwaccel_select="h264_decoder"
2651 h264_vda_old_hwaccel_deps="vda"
2652 h264_vda_old_hwaccel_select="h264_decoder"
2653 h264_vdpau_hwaccel_deps="vdpau"
2654 h264_vdpau_hwaccel_select="h264_decoder"
2655 h264_videotoolbox_hwaccel_deps="videotoolbox"
2656 h264_videotoolbox_hwaccel_select="h264_decoder"
2657 hevc_cuvid_hwaccel_deps="cuda cuvid"
2658 hevc_cuvid_hwaccel_select="hevc_cuvid_decoder"
2659 hevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
2660 hevc_d3d11va_hwaccel_select="hevc_decoder"
2661 hevc_mediacodec_hwaccel_deps="mediacodec"
2662 hevc_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
2663 hevc_d3d11va2_hwaccel_select="hevc_decoder"
2664 hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
2665 hevc_dxva2_hwaccel_select="hevc_decoder"
2666 hevc_qsv_hwaccel_deps="libmfx"
2667 hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
2668 hevc_vaapi_hwaccel_select="hevc_decoder"
2669 hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
2670 hevc_vdpau_hwaccel_select="hevc_decoder"
2671 mjpeg_cuvid_hwaccel_deps="cuda cuvid"
2672 mjpeg_cuvid_hwaccel_select="mjpeg_cuvid_decoder"
2673 mpeg_xvmc_hwaccel_deps="xvmc"
2674 mpeg_xvmc_hwaccel_select="mpeg2video_decoder"
2675 mpeg1_cuvid_hwaccel_deps="cuda cuvid"
2676 mpeg1_cuvid_hwaccel_select="mpeg1_cuvid_decoder"
2677 mpeg1_vdpau_hwaccel_deps="vdpau"
2678 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
2679 mpeg1_videotoolbox_hwaccel_deps="videotoolbox"
2680 mpeg1_videotoolbox_hwaccel_select="mpeg1video_decoder"
2681 mpeg1_xvmc_hwaccel_deps="xvmc"
2682 mpeg1_xvmc_hwaccel_select="mpeg1video_decoder"
2683 mpeg2_cuvid_hwaccel_deps="cuda cuvid"
2684 mpeg2_cuvid_hwaccel_select="mpeg2_cuvid_decoder"
2685 mpeg2_d3d11va_hwaccel_deps="d3d11va"
2686 mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
2687 mpeg2_d3d11va2_hwaccel_deps="d3d11va"
2688 mpeg2_d3d11va2_hwaccel_select="mpeg2video_decoder"
2689 mpeg2_dxva2_hwaccel_deps="dxva2"
2690 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
2691 mpeg2_mediacodec_hwaccel_deps="mediacodec"
2692 mpeg2_mmal_hwaccel_deps="mmal"
2693 mpeg2_qsv_hwaccel_deps="libmfx"
2694 mpeg2_qsv_hwaccel_select="qsvdec_mpeg2"
2695 mpeg2_vaapi_hwaccel_deps="vaapi"
2696 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
2697 mpeg2_vdpau_hwaccel_deps="vdpau"
2698 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
2699 mpeg2_videotoolbox_hwaccel_deps="videotoolbox"
2700 mpeg2_videotoolbox_hwaccel_select="mpeg2video_decoder"
2701 mpeg2_xvmc_hwaccel_deps="xvmc"
2702 mpeg2_xvmc_hwaccel_select="mpeg2video_decoder"
2703 mpeg4_cuvid_hwaccel_deps="cuda cuvid"
2704 mpeg4_cuvid_hwaccel_select="mpeg4_cuvid_decoder"
2705 mpeg4_mediacodec_hwaccel_deps="mediacodec"
2706 mpeg4_mmal_hwaccel_deps="mmal"
2707 mpeg4_vaapi_hwaccel_deps="vaapi"
2708 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
2709 mpeg4_vdpau_hwaccel_deps="vdpau"
2710 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
2711 mpeg4_videotoolbox_hwaccel_deps="videotoolbox"
2712 mpeg4_videotoolbox_hwaccel_select="mpeg4_decoder"
2713 vc1_cuvid_hwaccel_deps="cuda cuvid"
2714 vc1_cuvid_hwaccel_select="vc1_cuvid_decoder"
2715 vc1_d3d11va_hwaccel_deps="d3d11va"
2716 vc1_d3d11va_hwaccel_select="vc1_decoder"
2717 vc1_d3d11va2_hwaccel_deps="d3d11va"
2718 vc1_d3d11va2_hwaccel_select="vc1_decoder"
2719 vc1_dxva2_hwaccel_deps="dxva2"
2720 vc1_dxva2_hwaccel_select="vc1_decoder"
2721 vc1_mmal_hwaccel_deps="mmal"
2722 vc1_qsv_hwaccel_deps="libmfx"
2723 vc1_qsv_hwaccel_select="qsvdec_vc1"
2724 vc1_vaapi_hwaccel_deps="vaapi"
2725 vc1_vaapi_hwaccel_select="vc1_decoder"
2726 vc1_vdpau_hwaccel_deps="vdpau"
2727 vc1_vdpau_hwaccel_select="vc1_decoder"
2728 vp8_cuvid_hwaccel_deps="cuda cuvid"
2729 vp8_cuvid_hwaccel_select="vp8_cuvid_decoder"
2730 vp9_cuvid_hwaccel_deps="cuda cuvid"
2731 vp9_cuvid_hwaccel_select="vp9_cuvid_decoder"
2732 vp8_mediacodec_hwaccel_deps="mediacodec"
2733 vp8_qsv_hwaccel_deps="libmfx"
2734 vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
2735 vp9_d3d11va_hwaccel_select="vp9_decoder"
2736 vp9_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
2737 vp9_d3d11va2_hwaccel_select="vp9_decoder"
2738 vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
2739 vp9_dxva2_hwaccel_select="vp9_decoder"
2740 vp9_mediacodec_hwaccel_deps="mediacodec"
2741 vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth"
2742 vp9_vaapi_hwaccel_select="vp9_decoder"
2743 wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
2744 wmv3_d3d11va2_hwaccel_select="vc1_d3d11va2_hwaccel"
2745 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
2746 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
2747 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
2749 # hardware-accelerated codecs
2750 omx_deps="dlopen pthreads"
2751 omx_extralibs='$ldl'
2752 omx_rpi_select="omx"
2755 vaapi_encode_deps="vaapi"
2757 hwupload_cuda_filter_deps="cuda"
2758 scale_npp_filter_deps="cuda libnpp"
2759 scale_cuda_filter_deps="cuda_sdk"
2762 nvenc_deps_any="dlopen LoadLibrary"
2763 nvenc_encoder_deps="nvenc"
2765 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
2766 h264_cuvid_decoder_deps="cuda cuvid"
2767 h264_cuvid_decoder_select="h264_mp4toannexb_bsf"
2768 h264_mediacodec_decoder_deps="mediacodec"
2769 h264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser"
2770 h264_mmal_decoder_deps="mmal"
2771 h264_nvenc_encoder_deps="nvenc"
2772 h264_omx_encoder_deps="omx"
2773 h264_qsv_decoder_deps="libmfx"
2774 h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel"
2775 h264_qsv_encoder_deps="libmfx"
2776 h264_qsv_encoder_select="qsvenc"
2777 h264_vaapi_encoder_deps="VAEncPictureParameterBufferH264"
2778 h264_vaapi_encoder_select="vaapi_encode golomb"
2779 h264_vda_decoder_deps="vda"
2780 h264_vda_decoder_select="h264_decoder"
2781 h264_vdpau_decoder_deps="vdpau"
2782 h264_vdpau_decoder_select="h264_decoder"
2783 hevc_cuvid_decoder_deps="cuda cuvid"
2784 hevc_cuvid_decoder_select="hevc_mp4toannexb_bsf"
2785 hevc_mediacodec_decoder_deps="mediacodec"
2786 hevc_mediacodec_decoder_select="hevc_mp4toannexb_bsf hevc_parser"
2787 hevc_nvenc_encoder_deps="nvenc"
2788 hevc_qsv_decoder_deps="libmfx"
2789 hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec hevc_qsv_hwaccel"
2790 hevc_qsv_encoder_deps="libmfx"
2791 hevc_qsv_encoder_select="hevcparse qsvenc"
2792 hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC"
2793 hevc_vaapi_encoder_select="vaapi_encode golomb"
2794 mjpeg_cuvid_decoder_deps="cuda cuvid"
2795 mjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
2796 mjpeg_vaapi_encoder_select="vaapi_encode jpegtables"
2797 mpeg1_cuvid_decoder_deps="cuda cuvid"
2798 mpeg1_vdpau_decoder_deps="vdpau"
2799 mpeg1_vdpau_decoder_select="mpeg1video_decoder"
2800 mpeg2_crystalhd_decoder_select="crystalhd"
2801 mpeg2_cuvid_decoder_deps="cuda cuvid"
2802 mpeg2_mmal_decoder_deps="mmal"
2803 mpeg2_mediacodec_decoder_deps="mediacodec"
2804 mpeg2_qsv_decoder_deps="libmfx"
2805 mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel"
2806 mpeg2_qsv_encoder_deps="libmfx"
2807 mpeg2_qsv_encoder_select="qsvenc"
2808 mpeg2_vaapi_encoder_deps="VAEncPictureParameterBufferMPEG2"
2809 mpeg2_vaapi_encoder_select="vaapi_encode"
2810 mpeg4_crystalhd_decoder_select="crystalhd"
2811 mpeg4_cuvid_decoder_deps="cuda cuvid"
2812 mpeg4_mediacodec_decoder_deps="mediacodec"
2813 mpeg4_mmal_decoder_deps="mmal"
2814 mpeg4_omx_encoder_deps="omx"
2815 mpeg4_vdpau_decoder_deps="vdpau"
2816 mpeg4_vdpau_decoder_select="mpeg4_decoder"
2817 mpeg_vdpau_decoder_deps="vdpau"
2818 mpeg_vdpau_decoder_select="mpeg2video_decoder"
2819 msmpeg4_crystalhd_decoder_select="crystalhd"
2820 nvenc_h264_encoder_select="h264_nvenc_encoder"
2821 nvenc_hevc_encoder_select="hevc_nvenc_encoder"
2822 vc1_crystalhd_decoder_select="crystalhd"
2823 vc1_cuvid_decoder_deps="cuda cuvid"
2824 vc1_mmal_decoder_deps="mmal"
2825 vc1_vdpau_decoder_deps="vdpau"
2826 vc1_vdpau_decoder_select="vc1_decoder"
2827 vp8_cuvid_decoder_deps="cuda cuvid"
2828 vp8_mediacodec_decoder_deps="mediacodec"
2829 vp8_qsv_decoder_deps="libmfx"
2830 vp8_qsv_decoder_select="qsvdec vp8_qsv_hwaccel vp8_parser"
2831 vp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8"
2832 vp8_vaapi_encoder_select="vaapi_encode"
2833 vp9_cuvid_decoder_deps="cuda cuvid"
2834 vp9_mediacodec_decoder_deps="mediacodec"
2835 vp9_vaapi_encoder_deps="VAEncPictureParameterBufferVP9"
2836 vp9_vaapi_encoder_select="vaapi_encode"
2837 wmv3_crystalhd_decoder_select="crystalhd"
2838 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
2841 h264_parser_select="golomb h264dsp h264parse"
2842 hevc_parser_select="hevcparse"
2843 mpegaudio_parser_select="mpegaudioheader"
2844 mpegvideo_parser_select="mpegvideo"
2845 mpeg4video_parser_select="h263dsp mpegvideo qpeldsp"
2846 vc1_parser_select="vc1dsp"
2849 mjpeg2jpeg_bsf_select="jpegtables"
2851 # external libraries
2852 aac_at_decoder_deps="audiotoolbox"
2853 ac3_at_decoder_deps="audiotoolbox"
2854 ac3_at_decoder_select="ac3_parser"
2855 adpcm_ima_qt_at_decoder_deps="audiotoolbox"
2856 alac_at_decoder_deps="audiotoolbox"
2857 amr_nb_at_decoder_deps="audiotoolbox"
2858 avisynth_deps_any="dlopen LoadLibrary"
2859 avisynth_demuxer_deps="avisynth"
2860 avisynth_demuxer_select="riffdec"
2861 eac3_at_decoder_deps="audiotoolbox"
2862 eac3_at_decoder_select="ac3_parser"
2863 gsm_ms_at_decoder_deps="audiotoolbox"
2864 ilbc_at_decoder_deps="audiotoolbox"
2865 mp1_at_decoder_deps="audiotoolbox"
2866 mp2_at_decoder_deps="audiotoolbox"
2867 mp3_at_decoder_deps="audiotoolbox"
2868 mp1_at_decoder_select="mpegaudioheader"
2869 mp2_at_decoder_select="mpegaudioheader"
2870 mp3_at_decoder_select="mpegaudioheader"
2871 pcm_alaw_at_decoder_deps="audiotoolbox"
2872 pcm_mulaw_at_decoder_deps="audiotoolbox"
2873 qdmc_at_decoder_deps="audiotoolbox"
2874 qdm2_at_decoder_deps="audiotoolbox"
2875 aac_at_encoder_deps="audiotoolbox"
2876 aac_at_encoder_select="audio_frame_queue"
2877 alac_at_encoder_deps="audiotoolbox"
2878 alac_at_encoder_select="audio_frame_queue"
2879 ilbc_at_encoder_deps="audiotoolbox"
2880 ilbc_at_encoder_select="audio_frame_queue"
2881 pcm_alaw_at_encoder_deps="audiotoolbox"
2882 pcm_alaw_at_encoder_select="audio_frame_queue"
2883 pcm_mulaw_at_encoder_deps="audiotoolbox"
2884 pcm_mulaw_at_encoder_select="audio_frame_queue"
2885 chromaprint_muxer_deps="chromaprint"
2886 h264_videotoolbox_encoder_deps="videotoolbox_encoder pthreads"
2887 libcelt_decoder_deps="libcelt"
2888 libfdk_aac_decoder_deps="libfdk_aac"
2889 libfdk_aac_encoder_deps="libfdk_aac"
2890 libfdk_aac_encoder_select="audio_frame_queue"
2891 libgme_demuxer_deps="libgme"
2892 libgsm_decoder_deps="libgsm"
2893 libgsm_encoder_deps="libgsm"
2894 libgsm_ms_decoder_deps="libgsm"
2895 libgsm_ms_encoder_deps="libgsm"
2896 libilbc_decoder_deps="libilbc"
2897 libilbc_encoder_deps="libilbc"
2898 libkvazaar_encoder_deps="libkvazaar"
2899 libmodplug_demuxer_deps="libmodplug"
2900 libmp3lame_encoder_deps="libmp3lame"
2901 libmp3lame_encoder_select="audio_frame_queue mpegaudioheader"
2902 libopencore_amrnb_decoder_deps="libopencore_amrnb"
2903 libopencore_amrnb_encoder_deps="libopencore_amrnb"
2904 libopencore_amrnb_encoder_select="audio_frame_queue"
2905 libopencore_amrwb_decoder_deps="libopencore_amrwb"
2906 libopenh264_decoder_deps="libopenh264"
2907 libopenh264_decoder_select="h264_mp4toannexb_bsf"
2908 libopenh264_encoder_deps="libopenh264"
2909 libopenjpeg_decoder_deps="libopenjpeg"
2910 libopenjpeg_encoder_deps="libopenjpeg"
2911 libopenmpt_demuxer_deps="libopenmpt"
2912 libopus_decoder_deps="libopus"
2913 libopus_encoder_deps="libopus"
2914 libopus_encoder_select="audio_frame_queue"
2915 librsvg_decoder_deps="librsvg"
2916 libshine_encoder_deps="libshine"
2917 libshine_encoder_select="audio_frame_queue"
2918 libspeex_decoder_deps="libspeex"
2919 libspeex_encoder_deps="libspeex"
2920 libspeex_encoder_select="audio_frame_queue"
2921 libtheora_encoder_deps="libtheora"
2922 libtwolame_encoder_deps="libtwolame"
2923 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
2924 libvorbis_decoder_deps="libvorbis"
2925 libvorbis_encoder_deps="libvorbis"
2926 libvorbis_encoder_select="audio_frame_queue"
2927 libvpx_vp8_decoder_deps="libvpx"
2928 libvpx_vp8_encoder_deps="libvpx"
2929 libvpx_vp9_decoder_deps="libvpx"
2930 libvpx_vp9_encoder_deps="libvpx"
2931 libwavpack_encoder_deps="libwavpack"
2932 libwavpack_encoder_select="audio_frame_queue"
2933 libwebp_encoder_deps="libwebp"
2934 libwebp_anim_encoder_deps="libwebp"
2935 libx262_encoder_deps="libx262"
2936 libx264_encoder_deps="libx264"
2937 libx264rgb_encoder_deps="libx264 x264_csp_bgr"
2938 libx264rgb_encoder_select="libx264_encoder"
2939 libx265_encoder_deps="libx265"
2940 libxavs_encoder_deps="libxavs"
2941 libxvid_encoder_deps="libxvid"
2942 libzvbi_teletext_decoder_deps="libzvbi"
2943 videotoolbox_extralibs="-framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework CoreVideo"
2944 videotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames"
2945 videotoolbox_encoder_suggest="vda_framework"
2948 ac3_demuxer_select="ac3_parser"
2949 aiff_muxer_select="iso_media"
2950 asf_demuxer_select="riffdec"
2951 asf_o_demuxer_select="riffdec"
2952 asf_muxer_select="riffenc"
2953 asf_stream_muxer_select="asf_muxer"
2954 avi_demuxer_select="iso_media riffdec exif"
2955 avi_muxer_select="riffenc"
2956 caf_demuxer_select="iso_media riffdec"
2957 caf_muxer_select="iso_media"
2958 dash_muxer_select="mp4_muxer"
2959 dash_demuxer_deps="libxml2"
2960 dirac_demuxer_select="dirac_parser"
2961 dts_demuxer_select="dca_parser"
2962 dtshd_demuxer_select="dca_parser"
2963 dv_demuxer_select="dvprofile"
2964 dv_muxer_select="dvprofile"
2965 dxa_demuxer_select="riffdec"
2966 eac3_demuxer_select="ac3_parser"
2967 f4v_muxer_select="mov_muxer"
2968 fifo_muxer_deps="threads"
2969 flac_demuxer_select="flac_parser"
2970 hds_muxer_select="flv_muxer"
2971 hls_muxer_select="mpegts_muxer"
2972 image2_alias_pix_demuxer_select="image2_demuxer"
2973 image2_brender_pix_demuxer_select="image2_demuxer"
2974 ipod_muxer_select="mov_muxer"
2975 ismv_muxer_select="mov_muxer"
2976 matroska_audio_muxer_select="matroska_muxer"
2977 matroska_demuxer_select="iso_media riffdec"
2978 matroska_demuxer_suggest="bzlib lzo zlib"
2979 matroska_muxer_select="iso_media riffenc"
2980 mmf_muxer_select="riffenc"
2981 mov_demuxer_select="iso_media riffdec"
2982 mov_demuxer_suggest="zlib"
2983 mov_muxer_select="iso_media riffenc rtpenc_chain"
2984 mp3_demuxer_select="mpegaudio_parser"
2985 mp3_muxer_select="mpegaudioheader"
2986 mp4_muxer_select="mov_muxer"
2987 mpegts_demuxer_select="iso_media"
2988 mpegts_muxer_select="adts_muxer latm_muxer"
2989 mpegtsraw_demuxer_select="mpegts_demuxer"
2990 mxf_d10_muxer_select="mxf_muxer"
2991 mxf_opatom_muxer_select="mxf_muxer"
2992 nut_muxer_select="riffenc"
2993 nuv_demuxer_select="riffdec"
2994 oga_muxer_select="ogg_muxer"
2995 ogg_demuxer_select="dirac_parse"
2996 ogv_muxer_select="ogg_muxer"
2997 opus_muxer_select="ogg_muxer"
2998 psp_muxer_select="mov_muxer"
2999 rtp_demuxer_select="sdp_demuxer"
3000 rtp_muxer_select="golomb"
3001 rtpdec_select="asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
3002 rtsp_demuxer_select="http_protocol rtpdec"
3003 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
3004 sap_demuxer_select="sdp_demuxer"
3005 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
3006 sdp_demuxer_select="rtpdec"
3007 smoothstreaming_muxer_select="ismv_muxer"
3008 spdif_muxer_select="aac_parser"
3009 spx_muxer_select="ogg_muxer"
3010 swf_demuxer_suggest="zlib"
3011 tak_demuxer_select="tak_parser"
3012 tg2_muxer_select="mov_muxer"
3013 tgp_muxer_select="mov_muxer"
3014 vobsub_demuxer_select="mpegps_demuxer"
3015 w64_demuxer_select="wav_demuxer"
3016 w64_muxer_select="wav_muxer"
3017 wav_demuxer_select="riffdec"
3018 wav_muxer_select="riffenc"
3019 webm_muxer_select="iso_media riffenc"
3020 webm_dash_manifest_demuxer_select="matroska_demuxer"
3021 wtv_demuxer_select="mpegts_demuxer riffdec"
3022 wtv_muxer_select="mpegts_muxer riffenc"
3023 xmv_demuxer_select="riffdec"
3024 xwma_demuxer_select="riffdec"
3027 alsa_indev_deps="alsa"
3028 alsa_outdev_deps="alsa"
3029 avfoundation_indev_deps="avfoundation pthreads"
3030 avfoundation_indev_extralibs="-framework Foundation -framework CoreVideo -framework CoreMedia"
3031 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
3032 caca_outdev_deps="libcaca"
3033 decklink_indev_deps="decklink threads"
3034 decklink_indev_extralibs="-lstdc++"
3035 decklink_outdev_deps="decklink threads"
3036 decklink_outdev_extralibs="-lstdc++"
3037 libndi_newtek_indev_deps="libndi_newtek"
3038 libndi_newtek_indev_extralibs="-lndi"
3039 libndi_newtek_outdev_deps="libndi_newtek"
3040 libndi_newtek_outdev_extralibs="-lndi"
3041 dshow_indev_deps="IBaseFilter"
3042 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi"
3043 dv1394_indev_deps="dv1394"
3044 dv1394_indev_select="dv_demuxer"
3045 fbdev_indev_deps="linux_fb_h"
3046 fbdev_outdev_deps="linux_fb_h"
3047 gdigrab_indev_deps="CreateDIBSection"
3048 gdigrab_indev_extralibs="-lgdi32"
3049 gdigrab_indev_select="bmp_decoder"
3050 iec61883_indev_deps="libiec61883"
3051 jack_indev_deps="jack"
3052 jack_indev_deps_any="sem_timedwait dispatch_dispatch_h"
3053 lavfi_indev_deps="avfilter"
3054 libcdio_indev_deps="libcdio"
3055 libdc1394_indev_deps="libdc1394"
3056 libv4l2_indev_deps="libv4l2"
3057 openal_indev_deps="openal"
3058 opengl_outdev_deps="opengl"
3059 oss_indev_deps_any="soundcard_h sys_soundcard_h"
3060 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
3061 pulse_indev_deps="libpulse"
3062 pulse_outdev_deps="libpulse"
3063 sdl2_outdev_deps="sdl2"
3064 sndio_indev_deps="sndio"
3065 sndio_outdev_deps="sndio"
3066 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
3067 v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h"
3068 vfwcap_indev_deps="vfw32 vfwcap_defines"
3069 xcbgrab_indev_deps="libxcb"
3070 xv_outdev_deps="X11_extensions_Xvlib_h XvGetPortAttribute"
3071 xv_outdev_extralibs="-lXv -lX11 -lXext"
3074 async_protocol_deps="threads"
3075 bluray_protocol_deps="libbluray"
3076 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
3077 ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
3078 ffrtmpcrypt_protocol_select="tcp_protocol"
3079 ffrtmphttp_protocol_deps="!librtmp_protocol"
3080 ffrtmphttp_protocol_select="http_protocol"
3081 ftp_protocol_select="tcp_protocol"
3082 gopher_protocol_select="network"
3083 http_protocol_select="tcp_protocol"
3084 httpproxy_protocol_select="tcp_protocol"
3085 https_protocol_select="tls_protocol"
3086 icecast_protocol_select="http_protocol"
3087 librtmp_protocol_deps="librtmp"
3088 librtmpe_protocol_deps="librtmp"
3089 librtmps_protocol_deps="librtmp"
3090 librtmpt_protocol_deps="librtmp"
3091 librtmpte_protocol_deps="librtmp"
3092 libsmbclient_protocol_deps="libsmbclient gplv3"
3093 libssh_protocol_deps="libssh"
3094 mmsh_protocol_select="http_protocol"
3095 mmst_protocol_select="network"
3096 rtmp_protocol_deps="!librtmp_protocol"
3097 rtmp_protocol_select="tcp_protocol"
3098 rtmpe_protocol_select="ffrtmpcrypt_protocol"
3099 rtmps_protocol_deps="!librtmp_protocol"
3100 rtmps_protocol_select="tls_protocol"
3101 rtmpt_protocol_select="ffrtmphttp_protocol"
3102 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
3103 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
3104 rtp_protocol_select="udp_protocol"
3105 sctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
3106 sctp_protocol_select="network"
3107 srtp_protocol_select="rtp_protocol srtp"
3108 tcp_protocol_select="network"
3109 tls_gnutls_protocol_deps="gnutls !tls_schannel_protocol !tls_securetransport_protocol"
3110 tls_gnutls_protocol_select="tcp_protocol"
3111 tls_openssl_protocol_deps="openssl !tls_schannel_protocol !tls_securetransport_protocol !tls_gnutls_protocol"
3112 tls_openssl_protocol_select="tcp_protocol"
3113 tls_schannel_protocol_deps="schannel"
3114 tls_schannel_protocol_select="tcp_protocol"
3115 tls_securetransport_protocol_deps="securetransport"
3116 tls_securetransport_protocol_select="tcp_protocol"
3117 tls_protocol_deps_any="tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol"
3118 udp_protocol_select="network"
3119 udplite_protocol_select="network"
3120 unix_protocol_deps="sys_un_h"
3121 unix_protocol_select="network"
3124 afftfilt_filter_deps="avcodec"
3125 afftfilt_filter_select="fft"
3126 afir_filter_deps="avcodec"
3127 afir_filter_select="fft"
3128 amovie_filter_deps="avcodec avformat"
3129 aresample_filter_deps="swresample"
3130 ass_filter_deps="libass"
3131 atempo_filter_deps="avcodec"
3132 atempo_filter_select="rdft"
3133 azmq_filter_deps="libzmq"
3134 blackframe_filter_deps="gpl"
3135 boxblur_filter_deps="gpl"
3136 bs2b_filter_deps="libbs2b"
3137 colormatrix_filter_deps="gpl"
3138 coreimage_filter_deps="coreimage"
3139 coreimage_filter_extralibs="-framework OpenGL -framework AppKit"
3140 coreimagesrc_filter_deps="coreimage"
3141 coreimagesrc_filter_extralibs="-framework OpenGL -framework AppKit"
3142 cover_rect_filter_deps="avcodec avformat gpl"
3143 cropdetect_filter_deps="gpl"
3144 deinterlace_qsv_filter_deps="libmfx"
3145 deinterlace_vaapi_filter_deps="vaapi"
3146 delogo_filter_deps="gpl"
3147 deshake_filter_select="pixelutils"
3148 drawtext_filter_deps="libfreetype"
3149 elbg_filter_deps="avcodec"
3150 eq_filter_deps="gpl"
3151 fftfilt_filter_deps="avcodec"
3152 fftfilt_filter_select="rdft"
3153 find_rect_filter_deps="avcodec avformat gpl"
3154 firequalizer_filter_deps="avcodec"
3155 firequalizer_filter_select="rdft"
3156 flite_filter_deps="libflite"
3157 framerate_filter_select="pixelutils"
3158 frei0r_filter_deps="frei0r dlopen"
3159 frei0r_src_filter_deps="frei0r dlopen"
3160 fspp_filter_deps="gpl"
3161 geq_filter_deps="gpl"
3162 histeq_filter_deps="gpl"
3163 hqdn3d_filter_deps="gpl"
3164 interlace_filter_deps="gpl"
3165 kerndeint_filter_deps="gpl"
3166 ladspa_filter_deps="ladspa dlopen"
3167 mcdeint_filter_deps="avcodec gpl"
3168 movie_filter_deps="avcodec avformat"
3169 mpdecimate_filter_deps="gpl"
3170 mpdecimate_filter_select="pixelutils"
3171 mptestsrc_filter_deps="gpl"
3172 negate_filter_deps="lut_filter"
3173 nnedi_filter_deps="gpl"
3174 ocr_filter_deps="libtesseract"
3175 ocv_filter_deps="libopencv"
3176 owdenoise_filter_deps="gpl"
3177 pan_filter_deps="swresample"
3178 perspective_filter_deps="gpl"
3179 phase_filter_deps="gpl"
3180 pp7_filter_deps="gpl"
3181 pp_filter_deps="gpl postproc"
3182 pullup_filter_deps="gpl"
3183 removelogo_filter_deps="avcodec avformat swscale"
3184 repeatfields_filter_deps="gpl"
3185 resample_filter_deps="avresample"
3186 rubberband_filter_deps="librubberband"
3187 sab_filter_deps="gpl swscale"
3188 scale2ref_filter_deps="swscale"
3189 scale_filter_deps="swscale"
3190 scale_qsv_filter_deps="libmfx"
3191 select_filter_select="pixelutils"
3192 showcqt_filter_deps="avcodec avformat swscale"
3193 showcqt_filter_select="fft"
3194 showfreqs_filter_deps="avcodec"
3195 showfreqs_filter_select="fft"
3196 showspectrum_filter_deps="avcodec"
3197 showspectrum_filter_select="fft"
3198 showspectrumpic_filter_deps="avcodec"
3199 showspectrumpic_filter_select="fft"
3200 signature_filter_deps="gpl avcodec avformat"
3201 smartblur_filter_deps="gpl swscale"
3202 sofalizer_filter_deps="libmysofa avcodec"
3203 sofalizer_filter_select="fft"
3204 spectrumsynth_filter_deps="avcodec"
3205 spectrumsynth_filter_select="fft"
3206 spp_filter_deps="gpl avcodec"
3207 spp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp"
3208 stereo3d_filter_deps="gpl"
3209 subtitles_filter_deps="avformat avcodec libass"
3210 super2xsai_filter_deps="gpl"
3211 pixfmts_super2xsai_test_deps="super2xsai_filter"
3212 tinterlace_filter_deps="gpl"
3213 tinterlace_merge_test_deps="tinterlace_filter"
3214 tinterlace_pad_test_deps="tinterlace_filter"
3215 tonemap_filter_deps="const_nan"
3216 uspp_filter_deps="gpl avcodec"
3217 vaguedenoiser_filter_deps="gpl"
3218 vidstabdetect_filter_deps="libvidstab"
3219 vidstabtransform_filter_deps="libvidstab"
3220 libvmaf_filter_deps="libvmaf"
3221 zmq_filter_deps="libzmq"
3222 zoompan_filter_deps="swscale"
3223 zscale_filter_deps="libzimg const_nan"
3224 scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
3227 avio_dir_cmd_deps="avformat avutil"
3228 avio_reading_deps="avformat avcodec avutil"
3229 decode_audio_example_deps="avcodec avutil"
3230 decode_video_example_deps="avcodec avutil"
3231 demuxing_decoding_example_deps="avcodec avformat avutil"
3232 encode_audio_example_deps="avcodec avutil"
3233 encode_video_example_deps="avcodec avutil"
3234 extract_mvs_example_deps="avcodec avformat avutil"
3235 filter_audio_example_deps="avfilter avutil"
3236 filtering_audio_example_deps="avfilter avcodec avformat avutil"
3237 filtering_video_example_deps="avfilter avcodec avformat avutil"
3238 http_multiclient_example_deps="avformat avutil fork"
3239 hw_decode_example_deps="avcodec avformat avutil"
3240 metadata_example_deps="avformat avutil"
3241 muxing_example_deps="avcodec avformat avutil swscale"
3242 qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder"
3243 remuxing_example_deps="avcodec avformat avutil"
3244 resampling_audio_example_deps="avutil swresample"
3245 scaling_video_example_deps="avutil swscale"
3246 transcode_aac_example_deps="avcodec avformat swresample"
3247 transcoding_example_deps="avfilter avcodec avformat avutil"
3249 # libraries, in linking order
3250 avcodec_deps="avutil"
3251 avcodec_select="null_bsf"
3252 avdevice_deps="avformat avcodec avutil"
3253 avfilter_deps="avutil"
3254 avformat_deps="avcodec avutil"
3255 avresample_deps="avutil"
3256 postproc_deps="avutil gpl"
3257 swresample_deps="avutil"
3258 swscale_deps="avutil"
3261 ffmpeg_deps="avcodec avfilter avformat swresample"
3262 ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter
3265 ffplay_deps="avcodec avformat swscale swresample sdl2"
3266 ffplay_extralibs='$sdl2_extralibs'
3267 ffplay_select="rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter"
3268 ffprobe_deps="avcodec avformat"
3269 ffserver_deps="avformat fork sarestart"
3270 ffserver_select="ffm_muxer rtp_protocol rtsp_demuxer"
3273 podpages_deps="perl"
3274 manpages_deps="perl pod2man"
3275 htmlpages_deps="perl"
3276 htmlpages_deps_any="makeinfo_html texi2html"
3277 txtpages_deps="perl makeinfo"
3278 doc_deps_any="manpages htmlpages podpages txtpages"
3280 # default parameters
3282 logfile="ffbuild/config.log"
3284 # installation paths
3285 prefix_default="/usr/local"
3286 bindir_default='${prefix}/bin'
3287 datadir_default='${prefix}/share/ffmpeg'
3288 docdir_default='${prefix}/share/doc/ffmpeg'
3289 incdir_default='${prefix}/include'
3290 libdir_default='${prefix}/lib'
3291 mandir_default='${prefix}/share/man'
3297 host_cc_default="gcc"
3298 doxygen_default="doxygen"
3300 ln_s_default="ln -s -f"
3302 pkg_config_default=pkg-config
3303 ranlib_default="ranlib"
3304 strip_default="strip"
3305 version_script='--version-script'
3306 x86asmexe_default="nasm"
3307 windres_default="windres"
3309 nvccflags_default="-gencode arch=compute_30,code=sm_30 -O2"
3312 target_os_default=$(tolower $(uname -s))
3313 host_os=$target_os_default
3316 if test "$target_os_default" = aix; then
3317 arch_default=$(uname -p)
3318 strip_default="strip -X32_64"
3320 arch_default=$(uname -m)
3325 # configurable options
3326 enable $PROGRAM_LIST
3327 enable $DOCUMENT_LIST
3328 enable $EXAMPLE_LIST
3329 enable $(filter_out avresample $LIBRARY_LIST)
3335 enable faan faandct faanidct
3336 enable optimizations
3337 enable runtime_cpudetect
3338 enable safe_bitstream_reader
3340 enable swscale_alpha
3341 enable valgrind_backtrace
3343 sws_max_filter_size_default=256
3344 set_default sws_max_filter_size
3347 SHFLAGS='-shared -Wl,-soname,$$(@F)'
3350 FULLNAME='$(NAME)$(BUILDSUF)'
3351 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
3354 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
3355 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
3356 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
3357 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
3358 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
3359 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
3360 VERSION_SCRIPT_POSTPROCESS_CMD="cat"
3387 host_extralibs='-lm'
3388 host_cflags_filter=echo
3389 host_ldflags_filter=echo
3391 target_path='$(CURDIR)'
3393 # since the object filename is not given with the -MM flag, the compiler
3394 # is only able to print the basename, and we must add the path ourselves
3395 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)'
3401 if test -f configure; then
3404 source_path=$(cd $(dirname "$0"); pwd)
3405 case "$source_path" in
3406 *[[:blank:]]*) die "Out of tree builds are impossible with whitespace in source path." ;;
3408 test -e "$source_path/config.h" &&
3409 die "Out of tree builds are impossible with config.h in source dir."
3416 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
3422 file=$source_path/$3
3423 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
3426 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
3427 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
3428 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
3429 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
3430 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
3431 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
3432 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
3433 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
3434 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
3436 find_things_extern(){
3439 file=$source_path/$3
3440 sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
3443 BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
3444 PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
3460 for n in $COMPONENT_LIST; do
3461 v=$(toupper ${n%s})_LIST
3463 eval ${n}_if_any="\$$v"
3466 enable $ARCH_EXT_LIST
3469 echo "Unknown option \"$1\"."
3470 echo "See $0 --help for available options."
3474 print_in_columns() {
3475 cols=$(expr $ncols / 24)
3476 cat | tr ' ' '\n' | sort | pr -r "-$cols" -w $ncols -t
3482 echo $* | sed s/$suffix//g | print_in_columns
3494 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
3495 echo "prob ${prob:-0.5}"
3503 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
3504 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
3513 --extra-ldexeflags=*)
3514 add_ldexeflags $optval
3516 --extra-ldlibflags=*)
3517 add_ldlibflags $optval
3520 add_extralibs $optval
3523 disable $INDEV_LIST $OUTDEV_LIST
3526 debuglevel="$optval"
3529 disable $PROGRAM_LIST
3531 --disable-everything)
3532 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
3535 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
3536 disable $LIBRARY_LIST $PROGRAM_LIST doc
3539 --enable-random|--disable-random)
3540 action=${opt%%-random}
3541 do_random ${action#--} $COMPONENT_LIST
3543 --enable-random=*|--disable-random=*)
3544 action=${opt%%-random=*}
3545 do_random ${action#--} $optval
3550 --enable-*=*|--disable-*=*)
3551 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
3552 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
3553 eval list=\$$(toupper $thing)_LIST
3554 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
3555 list=$(filter "$name" $list)
3556 [ "$list" = "" ] && warn "Option $opt did not match anything"
3559 --enable-yasm|--disable-yasm)
3560 warn "The ${opt} option is only provided for compatibility and will be\n"\
3561 "removed in the future. Use --enable-x86asm / --disable-x86asm instead."
3562 test $opt = --enable-yasm && x86asm=yes || x86asm=no
3565 warn "The --yasmexe option is only provided for compatibility and will be\n"\
3566 "removed in the future. Use --x86asmexe instead."
3569 --enable-?*|--disable-?*)
3570 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
3571 if is_in $option $COMPONENT_LIST; then
3572 test $action = disable && action=unset
3573 eval $action \$$(toupper ${option%s})_LIST
3574 elif is_in $option $CMDLINE_SELECT; then
3581 NAME="${opt#--list-}"
3582 is_in $NAME $COMPONENT_LIST || die_unknown $opt
3584 eval show_list $NAME \$$(toupper $NAME)_LIST
3586 --help|-h) show_help
3588 --quiet|-q) quiet=yes
3590 --fatal-warnings) enable fatal_warnings
3593 libfuzzer_path="$optval"
3596 optname="${opt%%=*}"
3597 optname="${optname#--}"
3598 optname=$(echo "$optname" | sed 's/-/_/g')
3599 if is_in $optname $CMDLINE_SET; then
3600 eval $optname='$optval'
3601 elif is_in $optname $CMDLINE_APPEND; then
3602 append $optname "$optval"
3614 if disabled autodetect; then
3616 # Unless iconv is explicitely disabled by the user, we still want to probe
3617 # for the iconv from the libc.
3618 disabled iconv || enable libc_iconv
3620 disable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST
3621 disable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST
3623 # Mark specifically enabled, but normally autodetected libraries as requested.
3624 for lib in $AUTODETECT_LIBS; do
3625 enabled $lib && request $lib
3627 #TODO: switch to $AUTODETECT_LIBS when $THREADS_LIST is supported the same way
3628 enable_weak $EXTERNAL_AUTODETECT_LIBRARY_LIST
3629 enable_weak $HWACCEL_AUTODETECT_LIBRARY_LIST
3631 disabled logging && logfile=/dev/null
3633 die_license_disabled() {
3634 enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; }
3637 die_license_disabled_gpl() {
3638 enabled $1 || { enabled $v && die "$v is incompatible with the gpl and --enable-$1 is not specified."; }
3641 map "die_license_disabled gpl" $EXTERNAL_LIBRARY_GPL_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
3642 map "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
3644 enabled gpl && map "die_license_disabled_gpl nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST
3645 map "die_license_disabled nonfree" $HWACCEL_LIBRARY_NONFREE_LIST
3647 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3649 # Disable all the library-specific components if the library itself
3650 # is disabled, see AVCODEC_LIST and following _LIST variables.
3652 disable_components(){
3653 disabled ${1} && disable $(
3654 eval components="\$$(toupper ${1})_COMPONENTS"
3655 map 'eval echo \${$(toupper ${v%s})_LIST}' $components
3659 map 'disable_components $v' $LIBRARY_LIST
3661 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
3664 test -n "$valgrind" && toolchain="valgrind-memcheck"
3666 enabled ossfuzz && {
3667 add_cflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp -fno-omit-frame-pointer
3668 add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp
3671 case "$toolchain" in
3673 cc_default="${toolchain%-asan}"
3674 add_cflags -fsanitize=address
3675 add_ldflags -fsanitize=address
3678 cc_default="${toolchain%-msan}"
3679 add_cflags -fsanitize=memory -fsanitize-memory-track-origins
3680 add_ldflags -fsanitize=memory
3683 cc_default="${toolchain%-tsan}"
3684 add_cflags -fsanitize=thread -fPIE
3685 add_ldflags -fsanitize=thread -pie
3686 case "$toolchain" in
3694 cc_default="${toolchain%-usan}"
3695 add_cflags -fsanitize=undefined
3696 add_ldflags -fsanitize=undefined
3699 target_exec_default="valgrind"
3700 case "$toolchain" in
3702 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"
3705 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"
3710 # Check whether the current MSVC version needs the C99 converter.
3711 # From MSVC 2013 (compiler major version 18) onwards, it does actually
3712 # support enough of C99 to build ffmpeg. Default to the new
3713 # behaviour if the regexp was unable to match anything, since this
3714 # successfully parses the version number of existing supported
3715 # versions that require the converter (MSVC 2010 and 2012).
3716 cl_major_ver=$(cl 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
3717 if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
3721 cc_default="c99wrap cl"
3722 cxx_default="c99wrap cl"
3724 ld_default="$source_path/compat/windows/mslink"
3725 nm_default="dumpbin -symbols"
3732 target_os_default="win32"
3733 # Use a relative path for TMPDIR. This makes sure all the
3734 # ffconf temp files are written with a relative path, avoiding
3735 # issues with msys/win32 path conversion for MSVC parameters
3736 # such as -Fo<file> or -out:<file>.
3742 nm_default="dumpbin -symbols"
3744 target_os_default="win32"
3748 add_cflags -fprofile-arcs -ftest-coverage
3749 add_ldflags -fprofile-arcs -ftest-coverage
3752 add_cflags -fprofile-arcs -ftest-coverage
3753 add_ldflags --coverage
3756 add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
3757 add_cflags -fno-strict-overflow -fstack-protector-all
3758 add_ldflags -Wl,-z,relro -Wl,-z,now
3760 add_ldexeflags -fPIE -pie
3763 die "Unknown toolchain $toolchain"
3767 test -n "$cross_prefix" && enable cross_compile
3769 if enabled cross_compile; then
3770 test -n "$arch" && test -n "$target_os" ||
3771 die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
3774 ar_default="${cross_prefix}${ar_default}"
3775 cc_default="${cross_prefix}${cc_default}"
3776 cxx_default="${cross_prefix}${cxx_default}"
3777 nm_default="${cross_prefix}${nm_default}"
3778 pkg_config_default="${cross_prefix}${pkg_config_default}"
3779 if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
3780 ranlib_default="${cross_prefix}${ranlib_default} -D"
3782 ranlib_default="${cross_prefix}${ranlib_default}"
3784 strip_default="${cross_prefix}${strip_default}"
3785 windres_default="${cross_prefix}${windres_default}"
3787 sysinclude_default="${sysroot}/usr/include"
3789 set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
3790 target_exec target_os x86asmexe nvcc
3791 enabled cross_compile || host_cc_default=$cc
3794 pkg_config_fail_message=""
3795 if ! $pkg_config --version >/dev/null 2>&1; then
3796 warn "$pkg_config not found, library detection may fail."
3798 elif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags; then
3799 pkg_config_fail_message="
3800 Note: When building a static binary, add --pkg-config-flags=\"--static\"."
3803 if test $doxygen != $doxygen_default && \
3804 ! $doxygen --version >/dev/null 2>&1; then
3805 warn "Specified doxygen \"$doxygen\" not found, API documentation will fail to build."
3810 mingw32*|mingw64*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
3814 EXESUF=$(exesuf $target_os)
3815 HOSTEXESUF=$(exesuf $host_os)
3817 # set temporary file name
3818 : ${TMPDIR:=$TEMPDIR}
3822 if [ -n "$tempprefix" ] ; then
3824 tmpname="$tempprefix.${HOSTNAME}.${UID}"
3828 elif ! check_cmd mktemp -u XXXXXX; then
3829 # simple replacement for missing mktemp
3830 # NOT SAFE FOR GENERAL USE
3832 tmpname="${2%%XXX*}.${HOSTNAME}.${UID}.$$"
3838 FFTMPDIR=$(mktemp -d "${TMPDIR}/ffconf.XXXXXXXX" 2> /dev/null) ||
3839 die "Unable to create temporary directory in $TMPDIR."
3842 tmp="${FFTMPDIR}/test"$2
3843 (set -C; exec > $tmp) 2> /dev/null ||
3844 die "Unable to create temporary file in $FFTMPDIR."
3848 trap 'rm -rf -- "$FFTMPDIR"' EXIT
3854 tmpfile TMPE $EXESUF
3866 # make sure we can execute files in $TMPDIR
3867 cat > $TMPSH 2>> $logfile <<EOF
3870 chmod +x $TMPSH >> $logfile 2>&1
3871 if ! $TMPSH >> $logfile 2>&1; then
3873 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
3874 variable to another directory and make sure that it is not mounted noexec.
3876 die "Sanity test failed."
3882 # Filter out MSVC cl.exe options from cflags that shouldn't
3883 # be passed to gas-preprocessor
3893 -std=c99) echo -c99 ;;
3894 -mcpu=*) echo -arch ${flag#*=} ;;
3895 -mieee) echo -ieee ;;
3896 -O*|-fast) echo $flag ;;
3897 -fno-math-errno) echo -assume nomath_errno ;;
3899 -Wall) echo -msg_enable level2 ;;
3900 -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
3901 -Wl,*) echo $flag ;;
3911 -Wno-switch) echo -Wno-switch-enum ;;
3912 -Wno-format-zero-length) ;;
3913 -Wdisabled-optimization) ;;
3914 -Wno-pointer-sign) echo -Wno-other ;;
3920 msvc_common_flags(){
3923 # In addition to specifying certain flags under the compiler
3924 # specific filters, they must be specified here as well or else the
3925 # generic catch all at the bottom will print the original flag.
3930 -fomit-frame-pointer) ;;
3934 -fno-signed-zeros) ;;
3938 -lz) echo zlib.lib ;;
3939 -lx264) echo libx264.lib ;;
3941 -l*) echo ${flag#-l}.lib ;;
3942 -LARGEADDRESSAWARE) echo $flag ;;
3943 -L*) echo -libpath:${flag#-L} ;;
3950 msvc_common_flags "$@"
3953 -Wall) echo -W3 -wd4018 -wd4146 -wd4244 -wd4305 \
3955 -Wextra) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
3956 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
3957 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
3959 -wd4273 -wd4554 -wd4701 -wd4703 ;;
3965 msvc_common_flags "$@"
3968 # Despite what Intel's documentation says -Wall, which is supported
3969 # on Windows, does enable remarks so disable them here.
3970 -Wall) echo $flag -Qdiag-disable:remark ;;
3971 -std=c99) echo -Qstd=c99 ;;
3989 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
3990 -fomit-frame-pointer) echo -Mnoframe ;;
4001 case "${flag#*=}" in
4002 native) echo -xtarget=native ;;
4003 v9|niagara) echo -xarch=sparc ;;
4004 ultrasparc) echo -xarch=sparcvis ;;
4005 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
4006 i586|pentium) echo -xchip=pentium ;;
4007 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
4008 pentium3*|c3-2) echo -xtarget=pentium3 ;;
4009 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
4010 pentium4*) echo -xtarget=pentium4 ;;
4011 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
4012 *-sse3) echo -xarch=sse3 ;;
4013 core2) echo -xarch=ssse3 -xchip=core2 ;;
4014 bonnell) echo -xarch=ssse3 ;;
4015 corei7|nehalem) echo -xtarget=nehalem ;;
4016 westmere) echo -xtarget=westmere ;;
4017 silvermont) echo -xarch=sse4_2 ;;
4018 corei7-avx|sandybridge) echo -xtarget=sandybridge ;;
4019 core-avx*|ivybridge|haswell|broadwell|skylake*|knl)
4021 amdfam10|barcelona) echo -xtarget=barcelona ;;
4022 btver1) echo -xarch=amdsse4a ;;
4023 btver2|bdver*|znver*) echo -xarch=avx ;;
4024 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
4025 k8|opteron|athlon64|athlon-fx)
4026 echo -xarch=sse2a ;;
4027 athlon*) echo -xarch=pentium_proa ;;
4030 -std=c99) echo -xc99 ;;
4031 -fomit-frame-pointer) echo -xregs=frameptr ;;
4032 -fPIC) echo -KPIC -xcode=pic32 ;;
4033 -W*,*) echo $flag ;;
4034 -f*-*|-W*|-mimpure-text) ;;
4045 case "${flag#*=}" in
4046 armv7-a|cortex-a*) echo -mv=7a8 ;;
4047 armv7-r|cortex-r*) echo -mv=7r4 ;;
4048 armv7-m|cortex-m*) echo -mv=7m3 ;;
4049 armv6*|arm11*) echo -mv=6 ;;
4050 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
4052 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
4055 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
4056 -mfpu=vfp) echo --float_support=vfpv2 ;;
4057 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
4058 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
4059 -msoft-float) echo --float_support=vfplib ;;
4060 -O[0-3]|-mf=*) echo $flag ;;
4062 -pds=*) echo $flag ;;
4063 -D*|-I*) echo $flag ;;
4064 --gcc|--abi=*) echo $flag ;;
4075 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
4076 unset _ld_o _ldflags _ld_lib _ld_path
4077 unset _depflags _DEPCMD _DEPFLAGS
4080 if $_cc --version 2>&1 | grep -q '^GNU assembler'; then
4081 true # no-op to avoid reading stdin in following checks
4082 elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
4084 gcc_extra_ver=$(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)')
4085 _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver"
4086 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4089 elif $_cc -v 2>&1 | grep -qi ^gcc; then
4091 gcc_version=$($_cc --version | head -n1)
4092 gcc_basever=$($_cc -dumpversion)
4093 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
4094 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
4095 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
4096 case $gcc_basever in
4099 *) _depflags='-MMD -MF $(@:.o=.d) -MT $@' ;;
4101 if [ "$first" = true ]; then
4102 case $gcc_basever in
4104 warn "gcc 4.2 is outdated and may miscompile FFmpeg. Please use a newer compiler." ;;
4109 elif $_cc --version 2>/dev/null | grep -q ^icc; then
4111 _ident=$($_cc --version | head -n1)
4116 _flags_filter=icc_flags
4117 elif $_cc -v 2>&1 | grep -q xlc; then
4119 _ident=$($_cc -qversion 2>/dev/null | head -n1)
4121 _cflags_size='-O5 -qcompact'
4122 elif $_cc -V 2>/dev/null | grep -q Compaq; then
4124 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
4126 _cflags_speed='-fast'
4128 _flags_filter=ccc_flags
4129 elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then
4130 test -d "$sysroot" || die "No valid sysroot specified."
4132 _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //')
4133 armcc_conf="$PWD/armcc.conf"
4134 $_cc --arm_linux_configure \
4135 --arm_linux_config_file="$armcc_conf" \
4136 --configure_sysroot="$sysroot" \
4137 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
4138 die "Error creating armcc configuration file."
4139 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
4140 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
4141 as_default="${cross_prefix}gcc"
4145 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
4147 _ident=$($_cc -version | head -n1 | tr -s ' ')
4148 _flags='--gcc --abi=eabi -me'
4151 _depflags='-ppa -ppd=$(@:.o=.d)'
4152 _cflags_speed='-O3 -mf=5'
4153 _cflags_size='-O3 -mf=2'
4154 _flags_filter=tms470_flags
4155 elif $_cc -v 2>&1 | grep -q clang; then
4157 _ident=$($_cc --version 2>/dev/null | head -n1)
4158 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4161 elif $_cc -V 2>&1 | grep -q Sun; then
4163 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
4164 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
4165 _DEPFLAGS='-xM1 -xc99'
4168 _cflags_size='-O5 -xspace'
4169 _flags_filter=suncc_flags
4170 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
4172 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
4173 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4176 _flags_filter='filter_out -Wdisabled-optimization'
4177 elif $_cc -v 2>&1 | grep -q Open64; then
4179 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
4180 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4183 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
4184 elif $_cc -V 2>&1 | grep -q Portland; then
4186 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
4187 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
4188 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
4189 _cflags_size="-O2 -Munroll=c:1 $opt_common"
4191 _flags_filter=pgi_flags
4192 elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then
4194 _ident=$($_cc | head -n1)
4195 # 4509: "This form of conditional instruction is deprecated"
4196 _flags="-nologo -ignore 4509"
4197 _flags_filter=armasm_flags
4198 elif $_cc 2>&1 | grep -q Intel; then
4200 _ident=$($_cc 2>&1 | head -n1)
4201 _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@'
4202 # Not only is O3 broken on 13.x+ but it is slower on all previous
4203 # versions (tested) as well.
4205 _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff
4206 if $_cc 2>&1 | grep -q Linker; then
4213 _flags_filter=icl_flags
4215 _ld_path='-libpath:'
4216 # -Qdiag-error to make icl error when seeing certain unknown arguments
4217 _flags='-nologo -Qdiag-error:4044,10157'
4218 # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency
4219 # with MSVC which enables it by default.
4220 _cflags='-Qms0 -Qvec- -Qsimd- -GS -fp:precise'
4222 elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then
4223 # lld can emulate multiple different linkers; in ms link.exe mode,
4224 # the -? parameter gives the help output which contains an identifyable
4225 # string, while it gives an error in other modes.
4227 # The link.exe mode doesn't have a switch for getting the version,
4228 # but we can force it back to gnu mode and get the version from there.
4229 _ident=$($_cc -flavor gnu --version 2>/dev/null)
4231 _flags_filter=msvc_flags
4233 _ld_path='-libpath:'
4234 elif $_cc -nologo- 2>&1 | grep -q Microsoft; then
4236 _ident=$($_cc 2>&1 | head -n1)
4237 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
4238 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
4242 if $_cc -nologo- 2>&1 | grep -q Linker; then
4249 _flags_filter=msvc_flags
4251 _ld_path='-libpath:'
4254 elif $_cc --version 2>/dev/null | grep -q ^cparser; then
4256 _ident=$($_cc --version | head -n1)
4260 _flags_filter=cparser_flags
4263 eval ${pfx}_type=\$_type
4264 eval ${pfx}_ident=\$_ident
4268 eval ${1}_C=\${_cc_c-\${${1}_C}}
4269 eval ${1}_E=\${_cc_e-\${${1}_E}}
4270 eval ${1}_O=\${_cc_o-\${${1}_O}}
4272 if [ -n "$_depflags" ]; then
4273 eval ${1}_DEPFLAGS=\$_depflags
4275 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
4276 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
4277 eval DEP${1}FLAGS=\$_flags
4281 probe_cc cc "$cc" "true"
4282 cflags_filter=$_flags_filter
4283 cflags_speed=$_cflags_speed
4284 cflags_size=$_cflags_size
4285 cflags_noopt=$_cflags_noopt
4286 add_cflags $_flags $_cflags
4287 cc_ldflags=$_ldflags
4291 probe_cc hostcc "$host_cc"
4292 host_cflags_filter=$_flags_filter
4293 host_cflags_speed=$_cflags_speed
4294 add_host_cflags $_flags $_cflags
4297 test -n "$cc_type" && enable $cc_type ||
4298 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
4300 : ${as_default:=$cc}
4301 : ${objcc_default:=$cc}
4302 : ${dep_cc_default:=$cc}
4303 : ${ld_default:=$cc}
4304 : ${host_ld_default:=$host_cc}
4305 set_default ar as objcc dep_cc ld ln_s host_ld windres
4308 asflags_filter=$_flags_filter
4309 add_asflags $_flags $_cflags
4312 probe_cc objcc "$objcc"
4313 objcflags_filter=$_flags_filter
4314 add_objcflags $_flags $_cflags
4318 ldflags_filter=$_flags_filter
4319 add_ldflags $_flags $_ldflags
4320 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
4322 LD_LIB=${_ld_lib-$LD_LIB}
4323 LD_PATH=${_ld_path-$LD_PATH}
4325 probe_cc hostld "$host_ld"
4326 host_ldflags_filter=$_flags_filter
4327 add_host_ldflags $_flags $_ldflags
4328 HOSTLD_O=${_ld_o-$HOSTLD_O}
4330 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
4331 probe_cc depcc "$dep_cc"
4332 CCDEP=${_DEPCMD:-$DEPCMD}
4333 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
4337 if $ar 2>&1 | grep -q Microsoft; then
4340 elif $ar 2>&1 | grep -q 'Texas Instruments'; then
4343 elif $ar 2>&1 | grep -q 'Usage: ar.*-X.*any'; then
4344 arflags='-Xany -r -c'
4346 elif $ar 2>&1 | grep -q "\[D\] "; then
4354 add_cflags $extra_cflags
4355 add_cxxflags $extra_cxxflags
4356 add_objcflags $extra_objcflags
4357 add_asflags $extra_cflags
4359 if test -n "$sysroot"; then
4362 add_cppflags --sysroot="$sysroot"
4363 add_ldflags --sysroot="$sysroot"
4364 # On Darwin --sysroot may be ignored, -isysroot always affects headers and linking
4365 add_cppflags -isysroot "$sysroot"
4366 add_ldflags -isysroot "$sysroot"
4369 add_cppflags -I"$sysinclude"
4370 add_ldflags --sysroot="$sysroot"
4375 if test "$cpu" = host; then
4376 enabled cross_compile &&
4377 die "--cpu=host makes no sense when cross-compiling."
4382 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
4384 s/.*$1=\\([^ ]*\\).*/\\1/
4389 cpu=$(check_native -march || check_native -mcpu)
4393 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
4394 sed -n "/cc1.*-target-cpu /{
4395 s/.*-target-cpu \\([^ ]*\\).*/\\1/
4400 cpu=$(check_native -march)
4404 test "${cpu:-host}" = host &&
4405 die "--cpu=host not supported with compiler $cc"
4408 # Deal with common $arch aliases
4432 "Power Macintosh"|ppc*|powerpc*)
4447 i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
4452 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
4455 # Add processor-specific flags
4456 if enabled aarch64; then
4460 cpuflags="-march=$cpu"
4463 cpuflags="-mcpu=$cpu"
4467 elif enabled alpha; then
4469 cpuflags="-mcpu=$cpu"
4471 elif enabled arm; then
4474 check_cpp_condition stddef.h \
4475 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
4480 if check_arm_arch 4; then echo armv4
4481 elif check_arm_arch 4T; then echo armv4t
4482 elif check_arm_arch 5; then echo armv5
4483 elif check_arm_arch 5E; then echo armv5e
4484 elif check_arm_arch 5T; then echo armv5t
4485 elif check_arm_arch 5TE; then echo armv5te
4486 elif check_arm_arch 5TEJ; then echo armv5te
4487 elif check_arm_arch 6; then echo armv6
4488 elif check_arm_arch 6J; then echo armv6j
4489 elif check_arm_arch 6K; then echo armv6k
4490 elif check_arm_arch 6Z; then echo armv6z
4491 elif check_arm_arch 6ZK; then echo armv6zk
4492 elif check_arm_arch 6T2; then echo armv6t2
4493 elif check_arm_arch 7; then echo armv7
4494 elif check_arm_arch 7A 7_A; then echo armv7-a
4495 elif check_arm_arch 7S; then echo armv7-a
4496 elif check_arm_arch 7R 7_R; then echo armv7-r
4497 elif check_arm_arch 7M 7_M; then echo armv7-m
4498 elif check_arm_arch 7EM 7E_M; then echo armv7-m
4499 elif check_arm_arch 8A 8_A; then echo armv8-a
4503 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
4507 cpuflags="-march=$cpu"
4508 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
4511 cpuflags="-mcpu=$cpu"
4513 cortex-a*) subarch=armv7a ;;
4514 cortex-r*) subarch=armv7r ;;
4515 cortex-m*) enable thumb; subarch=armv7m ;;
4516 arm11*) subarch=armv6 ;;
4517 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
4518 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
4519 *) subarch=$(probe_arm_arch) ;;
4525 armv5t*) enable fast_clz ;;
4528 disabled fast_unaligned || enable fast_unaligned
4532 elif enabled avr32; then
4537 cpuflags="-mpart=$cpu"
4541 cpuflags="-march=$cpu"
4545 cpuflags="-mcpu=$cpu"
4549 cpuflags="-march=$cpu"
4553 elif enabled bfin; then
4555 cpuflags="-mcpu=$cpu"
4557 elif enabled mips; then
4559 cpuflags="-march=$cpu"
4561 if [ "$cpu" != "generic" ]; then
4571 24kc|24kf*|24kec|34kc|1004kc|24kef*|34kf*|1004kf*|74kc|74kf)
4582 enable local_aligned_8 local_aligned_16 local_aligned_32
4583 enable simd_align_16
4587 enable fast_unaligned
4588 disable aligned_stack
4594 cpuflags="-march=loongson3a -mhard-float -fno-expensive-optimizations"
4597 cpuflags="-march=loongson2e -mhard-float -fno-expensive-optimizations"
4600 cpuflags="-march=loongson2f -mhard-float -fno-expensive-optimizations"
4605 # Unknown CPU. Disable everything.
4606 warn "unknown CPU. Disabling all MIPS optimizations."
4629 24kef*|34kf*|1004kf*)
4637 check_cflags "-mtune=p5600" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops"
4641 check_cflags "-mtune=i6400 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
4645 check_cflags "-mtune=p6600 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
4649 # We do not disable anything. Is up to the user to disable the unwanted features.
4650 warn 'generic cpu selected'
4653 elif enabled ppc; then
4657 case $(tolower $cpu) in
4658 601|ppc601|powerpc601)
4659 cpuflags="-mcpu=601"
4662 603*|ppc603*|powerpc603*)
4663 cpuflags="-mcpu=603"
4666 604*|ppc604*|powerpc604*)
4667 cpuflags="-mcpu=604"
4670 g3|75*|ppc75*|powerpc75*)
4671 cpuflags="-mcpu=750"
4674 g4|745*|ppc745*|powerpc745*)
4675 cpuflags="-mcpu=7450"
4678 74*|ppc74*|powerpc74*)
4679 cpuflags="-mcpu=7400"
4682 g5|970|ppc970|powerpc970)
4683 cpuflags="-mcpu=970"
4687 cpuflags="-mcpu=$cpu"
4691 cpuflags="-mcpu=$cpu"
4694 cpuflags="-mcpu=cell"
4699 cpuflags="-mcpu=e500mc"
4703 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
4708 cpuflags="-mcpu=8540 -mhard-float"
4714 elif enabled sparc; then
4717 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
4718 cpuflags="-mcpu=$cpu"
4720 ultrasparc*|niagara[234])
4721 cpuflags="-mcpu=$cpu"
4725 elif enabled x86; then
4729 cpuflags="-march=$cpu"
4733 # targets that do NOT support nopl and conditional mov (cmov)
4734 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
4735 cpuflags="-march=$cpu"
4738 # targets that do support nopl and conditional mov (cmov)
4739 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx\
4740 |core*|atom|bonnell|nehalem|westmere|silvermont|sandybridge|ivybridge|haswell|broadwell|skylake*|knl\
4741 |amdfam10|barcelona|b[dt]ver*|znver*)
4742 cpuflags="-march=$cpu"
4746 # targets that do support conditional mov but on which it's slow
4747 pentium4|pentium4m|prescott|nocona)
4748 cpuflags="-march=$cpu"
4756 if [ "$cpu" != generic ]; then
4757 add_cflags $cpuflags
4758 add_asflags $cpuflags
4759 test "$cc_type" = "$ld_type" && add_ldflags $cpuflags
4762 # compiler sanity check
4764 int main(void){ return 0; }
4766 if test "$?" != 0; then
4767 echo "$cc is unable to create an executable file."
4768 if test -z "$cross_prefix" && ! enabled cross_compile ; then
4769 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
4770 echo "Only do this if you know what cross compiling means."
4772 die "C compiler test failed."
4775 add_cppflags -D_ISOC99_SOURCE
4776 add_cxxflags -D__STDC_CONSTANT_MACROS
4777 check_cxxflags -std=c++11 || check_cxxflags -std=c++0x
4779 # some compilers silently accept -std=c11, so we also need to check that the
4780 # version macro is defined properly
4781 if test_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L"; then
4784 check_cflags -std=c99
4787 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
4790 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
4794 add_host_cppflags -D_ISOC99_SOURCE
4795 check_host_cflags -std=c99
4796 check_host_cflags -Wall
4797 check_host_cflags $host_cflags_speed
4803 check_code cc "" "int test[2*($expr) - 1]" &&
4804 subarch=$arch64 || subarch=$arch32
4812 check_64bit mips mips64 '_MIPS_SIM > 1'
4816 check_64bit parisc parisc64 'sizeof(void *) > 4'
4820 check_64bit ppc ppc64 'sizeof(void *) > 4'
4824 check_64bit s390 s390x 'sizeof(void *) > 4'
4828 check_64bit sparc sparc64 'sizeof(void *) > 4'
4832 check_64bit x86_32 x86_64 'sizeof(void *) > 4'
4833 # Treat x32 as x64 for now. Note it also needs spic=$shared
4834 test "$subarch" = "x86_32" && check_cpp_condition stddef.h 'defined(__x86_64__)' &&
4836 if test "$subarch" = "x86_64"; then
4841 check_cc <<EOF && subarch="ppc64"
4842 int test[(int)sizeof(char*) - 7];
4848 enabled spic && enable_weak pic
4850 enabled x86_64 && objformat=elf64 || objformat="elf32"
4856 add_cppflags '-I\$(SRC_PATH)/compat/aix'
4857 enabled shared && add_ldflags -Wl,-brtl
4861 enable section_data_rel_ro
4862 SLIB_INSTALL_NAME='$(SLIBNAME)'
4864 SHFLAGS='-shared -Wl,-soname,$(SLIBNAME)'
4867 prefix_default="/boot/common"
4868 network_extralibs="-lnetwork"
4872 SHFLAGS='-shared -Wl,-h,$$(@F)'
4873 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
4874 network_extralibs="-lsocket -lnsl"
4875 add_cppflags -D__EXTENSIONS__
4876 # When using suncc to build, the Solaris linker will mark
4877 # an executable with each instruction set encountered by
4878 # the Solaris assembler. As our libraries contain their own
4879 # guards for processor-specific code, instead suppress
4880 # generation of the HWCAPS ELF section on Solaris x86 only.
4881 enabled_all suncc x86 &&
4882 echo "hwcap_1 = OVERRIDE;" > mapfile &&
4883 add_ldflags -Wl,-M,mapfile
4884 nm_default='nm -P -g'
4886 VERSION_SCRIPT_POSTPROCESS_CMD='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
4890 oss_indev_extralibs="-lossaudio"
4891 oss_outdev_extralibs="-lossaudio"
4892 enabled gcc || check_ldflags -Wl,-zmuldefs
4897 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
4899 oss_indev_extralibs="-lossaudio"
4900 oss_outdev_extralibs="-lossaudio"
4908 add_extralibs -lpoll -lgnugetopt
4912 enabled ppc && add_asflags -force_cpusubtype_ALL
4913 install_name_dir_default='$(SHLIBDIR)'
4914 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
4915 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
4917 add_ldflags -Wl,-dynamic,-search_paths_first
4919 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
4920 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
4922 enabled x86_64 && objformat="macho64" || objformat="macho32"
4923 enabled_any pic shared x86_64 ||
4924 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
4925 check_header dispatch/dispatch.h &&
4926 add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore'
4927 version_script='-exported_symbols_list'
4928 VERSION_SCRIPT_POSTPROCESS_CMD='tr " " "\n" | sed -n /global:/,/local:/p | grep ";" | tr ";" "\n" | sed -E "s/(.+)/_\1/g" | sed -E "s/(.+[^*])$$$$/\1*/"'
4931 die "Native MSYS builds are discouraged, please use the MINGW environment."
4934 if test $target_os = "mingw32ce"; then
4940 if enabled x86_64; then
4941 LIBTARGET="i386:x86-64"
4942 elif enabled arm; then
4945 enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
4946 enabled x86_32 && check_ldflags -Wl,--large-address-aware
4947 shlibdir_default="$bindir_default"
4950 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
4951 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
4952 dlltool="${cross_prefix}dlltool"
4953 if check_cmd lib.exe -list; then
4954 SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
4955 if enabled x86_64; then
4958 elif check_cmd $dlltool --version; then
4959 SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); $(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
4961 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
4963 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
4964 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
4965 SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--disable-auto-image-base'
4966 enabled x86_64 && objformat="win64" || objformat="win32"
4969 check_ldflags -Wl,--nxcompat,--dynamicbase
4970 # Lets work around some stupidity in binutils.
4971 # ld will strip relocations from executables even though we need them
4972 # for dynamicbase (ASLR). Using -pie does retain the reloc section
4973 # however ld then forgets what the entry point should be (oops) so we
4974 # have to manually (re)set it.
4975 if enabled x86_32; then
4976 disabled debug && add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup
4977 elif enabled x86_64; then
4978 disabled debug && add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup
4979 check_ldflags -Wl,--high-entropy-va # binutils 2.25
4980 # Set image base >4GB for extra entropy with HEASLR
4981 add_ldexeflags -Wl,--image-base,0x140000000
4982 append SHFLAGS -Wl,--image-base,0x180000000
4987 if enabled shared; then
4988 # Link to the import library instead of the normal static library
4991 # Cannot build both shared and static libs with MSVC or icl.
4994 enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
4995 shlibdir_default="$bindir_default"
4998 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
4999 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
5000 SLIB_CREATE_DEF_CMD='$(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
5001 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
5003 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
5004 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
5005 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
5006 enabled x86_64 && objformat="win64" || objformat="win32"
5012 shlibdir_default="$bindir_default"
5015 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
5016 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
5017 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
5019 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
5020 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
5021 enabled x86_64 && objformat="win64" || objformat="win32"
5023 enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
5024 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5026 *-dos|freedos|opendos)
5027 network_extralibs="-lsocket"
5030 add_cppflags -U__STRICT_ANSI__
5034 enable section_data_rel_ro
5035 enabled_any arm aarch64 && enable_weak linux_perf
5039 ranlib="echo ignoring ranlib"
5044 add_cppflags -D_GNU_SOURCE
5045 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zhigh-mem -Zmap
5046 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
5050 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
5051 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(FULLNAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
5052 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(FULLNAME).def; \
5053 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(FULLNAME).def; \
5054 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(FULLNAME).def; \
5055 echo EXPORTS >> $(SUBDIR)$(FULLNAME).def; \
5056 emxexp $(OBJS) >> $(SUBDIR)$(FULLNAME).def'
5057 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.a $(SUBDIR)$(FULLNAME).def; \
5058 emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.lib $(SUBDIR)$(FULLNAME).def;'
5059 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
5061 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(FULLNAME)_dll.a $(LIBPREF)$(FULLNAME)_dll.lib'
5063 enable_weak os2threads
5066 add_cppflags -D_BSD_SOURCE
5071 add_cppflags -D_QNX_SOURCE
5072 network_extralibs="-lsocket"
5077 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
5078 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
5079 add_ldflags -Wl,--target1-abs,--no-undefined \
5080 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
5081 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
5082 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
5083 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
5084 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
5087 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
5094 die "Unknown OS '$target_os'."
5098 # test if creating links works
5099 link_dest=$(mktemp -u $TMPDIR/dest_XXXXXXXX)
5100 link_name=$(mktemp -u $TMPDIR/name_XXXXXXXX)
5102 $ln_s "$link_dest" "$link_name"
5103 touch "$link_dest/test_file"
5104 if [ "$source_path" != "." ] && ([ ! -d src ] || [ -L src ]) && [ -e "$link_name/test_file" ]; then
5105 # create link to source path
5106 [ -e src ] && rm src
5107 $ln_s "$source_path" src
5110 # creating directory links doesn't work
5111 # fall back to using the full source path
5112 source_link="$source_path"
5118 # determine libc flavour
5123 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
5124 if check_${pfx}cpp_condition features.h "defined __UCLIBC__"; then
5125 eval ${pfx}libc_type=uclibc
5126 add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5127 elif check_${pfx}cpp_condition features.h "defined __GLIBC__"; then
5128 eval ${pfx}libc_type=glibc
5129 add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5130 # MinGW headers can be installed on Cygwin, so check for newlib first.
5131 elif check_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
5132 eval ${pfx}libc_type=newlib
5133 add_${pfx}cppflags -U__STRICT_ANSI__ -D_XOPEN_SOURCE=600
5134 # MinGW64 is backwards compatible with MinGW32, so check for it first.
5135 elif check_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
5136 eval ${pfx}libc_type=mingw64
5137 if check_${pfx}cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then
5138 add_compat msvcrt/snprintf.o
5139 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
5141 add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
5142 eval test \$${pfx_no_}cc_type = "gcc" &&
5143 add_${pfx}cppflags -D__printf__=__gnu_printf__
5144 elif check_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION" ||
5145 check_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
5146 eval ${pfx}libc_type=mingw32
5147 check_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
5148 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
5149 die "ERROR: MinGW32 runtime version must be >= 3.15."
5150 add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
5151 check_${pfx}cpp_condition _mingw.h "defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0502" ||
5152 add_${pfx}cppflags -D_WIN32_WINNT=0x0502
5153 check_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700" &&
5154 add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700
5155 eval test \$${pfx_no_}cc_type = "gcc" &&
5156 add_${pfx}cppflags -D__printf__=__gnu_printf__
5157 elif check_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
5158 eval ${pfx}libc_type=msvcrt
5159 if check_${pfx}cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14"; then
5160 if [ "$pfx" = host_ ]; then
5161 add_host_cppflags -Dsnprintf=_snprintf
5163 add_compat strtod.o strtod=avpriv_strtod
5164 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
5165 _snprintf=avpriv_snprintf \
5166 vsnprintf=avpriv_vsnprintf
5169 add_${pfx}cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS
5170 # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
5171 # 0x601 by default unless something else is set by the user.
5172 # This can easily lead to us detecting functions only present
5173 # in such new versions and producing binaries requiring windows 7.0.
5174 # Therefore explicitly set the default to XP unless the user has
5175 # set something else on the command line.
5176 # Don't do this if WINAPI_FAMILY is set and is set to a non-desktop
5177 # family. For these cases, configure is free to use any functions
5178 # found in the SDK headers by default. (Alternatively, we could force
5179 # _WIN32_WINNT to 0x0602 in that case.)
5180 check_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
5181 { check_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0502; }
5182 #ifdef WINAPI_FAMILY
5183 #include <winapifamily.h>
5184 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
5189 if [ "$pfx" = "" ]; then
5190 check_func strtoll || add_cflags -Dstrtoll=_strtoi64
5191 check_func strtoull || add_cflags -Dstrtoull=_strtoui64
5193 elif check_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
5194 eval ${pfx}libc_type=klibc
5195 elif check_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
5196 eval ${pfx}libc_type=bionic
5197 elif check_${pfx}cpp_condition sys/brand.h "defined LABELED_BRAND_NAME"; then
5198 eval ${pfx}libc_type=solaris
5199 add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
5201 check_${pfx}cc <<EOF
5203 void *v = localtime_r;
5205 test "$?" != 0 && check_${pfx}cc -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 <<EOF && add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5207 void *v = localtime_r;
5213 test -n "$libc_type" && enable libc_$libc_type
5215 test -n "$host_libc_type" && enable host_libc_$host_libc_type
5219 add_compat strtod.o strtod=avpriv_strtod
5223 # hacks for compiler/libc/os combinations
5225 if enabled_all tms470 libc_glibc; then
5226 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
5227 add_cppflags -D__USER_LABEL_PREFIX__=
5228 add_cppflags -D__builtin_memset=memset
5229 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
5230 add_cflags -pds=48 # incompatible redefinition of macro
5233 if enabled_all ccc libc_glibc; then
5234 add_ldflags -Wl,-z,now # calls to libots crash without this
5237 check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
5238 add_cppflags '-I\$(SRC_PATH)/compat/float'
5241 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
5244 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" > ffbuild/config.fate
5246 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
5249 : ${shlibdir_default:="$libdir"}
5250 : ${pkgconfigdir_default:="$libdir/pkgconfig"}
5252 set_default $PATHS_LIST
5255 # we need to build at least one lib type
5256 if ! enabled_any static shared; then
5258 At least one library type must be built.
5259 Specify --enable-static to build the static libraries or --enable-shared to
5260 build the shared libraries as well. To only build the shared libraries specify
5261 --disable-static in addition to --enable-shared.
5266 disabled optimizations || enabled ossfuzz || check_cflags -fomit-frame-pointer
5269 disabled pic && return
5272 case "$target_os" in
5282 enabled pic && enable_weak_pic
5284 check_cc <<EOF || die "Symbol mangling check failed."
5287 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
5288 extern_prefix=${sym%%ff_extern*}
5290 check_cc <<EOF && enable_weak inline_asm
5291 void foo(void) { __asm__ volatile ("" ::); }
5295 for restrict_keyword in restrict __restrict__ __restrict; do
5296 check_cc <<EOF && _restrict=$restrict_keyword && break
5297 void foo(char * $restrict_keyword p);
5301 check_cc <<EOF && enable pragma_deprecated
5302 void foo(void) { _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") }
5305 check_cc <<EOF && enable attribute_packed
5306 struct { int x; } __attribute__((packed)) x;
5309 check_cc <<EOF && enable attribute_may_alias
5310 union { int x; } __attribute__((may_alias)) x;
5313 check_cc <<EOF || die "endian test failed"
5314 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
5316 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
5318 check_cc <<EOF && enable const_nan
5320 void foo(void) { struct { double d; } static const bar[] = { { NAN } }; }
5323 if ! enabled ppc64 || enabled bigendian; then
5328 log "check_gas using '$as' as AS"
5329 # :vararg is used on aarch64, arm and ppc altivec
5330 check_as <<EOF || return 1
5331 .macro m n, y:vararg=0
5336 # .altmacro is only used in arm asm
5337 ! enabled arm || check_as <<EOF || return 1
5344 if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then
5346 enabled_any arm aarch64 && nogas=die
5347 enabled_all ppc altivec && [ $target_os_default != aix ] && nogas=warn
5351 arm*) gaspp_as_type=armasm; as_noop=-h ;;
5352 gcc) gaspp_as_type=gas ;;
5353 *) gaspp_as_type=$as_type ;;
5356 [ $target_os = "darwin" ] && gaspp_as_type="apple-$gaspp_as_type"
5358 test "${as#*gas-preprocessor.pl}" != "$as" ||
5359 check_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- ${as:=$cc} $as_noop &&
5360 gas="${gas:=gas-preprocessor.pl} -arch $arch -as-type $gaspp_as_type -- ${as:=$cc}"
5362 if ! check_gas ; then
5365 $nogas "GNU assembler not found, install/update gas-preprocessor"
5368 check_as <<EOF && enable as_func
5374 check_inline_asm inline_asm_labels '"1:\n"'
5376 check_inline_asm inline_asm_nonlocal_labels '"Label:\n"'
5378 if enabled aarch64; then
5379 enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]'
5380 # internal assembler in clang 3.3 does not support this instruction
5381 enabled neon && check_insn neon 'ext v0.8B, v0.8B, v1.8B, #1'
5382 enabled vfp && check_insn vfp 'fmadd d0, d0, d1, d2'
5384 map 'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM
5386 elif enabled alpha; then
5390 elif enabled arm; then
5392 enabled msvc && check_cpp_condition stddef.h "defined _M_ARMT" && enable thumb
5394 check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
5395 float func(float a, float b){ return a+b; }
5398 enabled thumb && check_cflags -mthumb || check_cflags -marm
5400 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
5402 elif check_cpp_condition stddef.h "defined _M_ARM_FP && _M_ARM_FP >= 30"; then
5404 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ]; then
5405 case "${cross_prefix:-$cc}" in
5406 *hardfloat*) enable vfp_args; fpabi=vfp ;;
5407 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
5408 __asm__ (".eabi_attribute 28, 1");
5409 int main(void) { return 0; }
5412 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
5415 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
5416 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
5417 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
5418 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
5419 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
5420 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
5421 enabled setend && check_insn setend 'setend be'
5423 [ $target_os = linux ] || [ $target_os = android ] ||
5424 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
5427 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
5429 check_as <<EOF && enable as_dn_directive
5433 check_as <<EOF && enable as_fpu_directive
5437 # llvm's integrated assembler supports .object_arch from llvm 3.5
5438 [ "$objformat" = elf32 ] || [ "$objformat" = elf64 ] &&
5439 check_as <<EOF && enable as_object_arch
5443 [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
5445 elif enabled mips; then
5447 enabled loongson2 && check_inline_asm loongson2 '"dmult.g $8, $9, $10"'
5448 enabled loongson3 && check_inline_asm loongson3 '"gsldxc1 $f0, 0($2, $3)"'
5449 enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"'
5451 # Enable minimum ISA based on selected options
5452 if enabled mips64; then
5453 enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6'
5454 enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2'
5455 disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64'
5457 enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6'
5458 enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5'
5459 enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2'
5460 disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32'
5463 enabled mipsfpu && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f2"' '-mhard-float'
5464 enabled mipsfpu && (enabled mips32r5 || enabled mips32r6 || enabled mips64r6) && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f1"' '-mfp64'
5465 enabled mipsfpu && enabled msa && check_inline_asm_flags msa '"addvi.b $w0, $w1, 1"' '-mmsa' && check_header msa.h || disable msa
5466 enabled mipsdsp && check_inline_asm_flags mipsdsp '"addu.qb $t0, $t1, $t2"' '-mdsp'
5467 enabled mipsdspr2 && check_inline_asm_flags mipsdspr2 '"absq_s.qb $t0, $t1"' '-mdspr2'
5469 if enabled bigendian && enabled msa; then
5473 elif enabled parisc; then
5475 if enabled gcc; then
5476 case $($cc -dumpversion) in
5477 4.[3-9].*) check_cflags -fno-optimize-sibling-calls ;;
5481 elif enabled ppc; then
5483 enable local_aligned_8 local_aligned_16 local_aligned_32
5485 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
5486 check_inline_asm ibm_asm '"add 0, 0, 0"'
5487 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
5488 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
5490 # AltiVec flags: The FSF version of GCC differs from the Apple version
5491 if enabled altivec; then
5492 check_cflags -maltivec -mabi=altivec &&
5493 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
5494 check_cflags -faltivec
5496 # check if our compiler supports Motorola AltiVec C API
5497 check_cc <<EOF || disable altivec
5500 vector signed int v1 = (vector signed int) { 0 };
5501 vector signed int v2 = (vector signed int) { 1 };
5502 v1 = vec_add(v1, v2);
5507 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
5510 if enabled vsx; then
5511 check_cflags -mvsx &&
5512 check_builtin vec_vsx_ld "altivec.h" "__builtin_vec_vsx_ld" || disable vsx
5515 if enabled power8; then
5516 check_cpp_condition "altivec.h" "defined(_ARCH_PWR8)" || disable power8
5519 elif enabled x86; then
5521 check_builtin rdtsc intrin.h "__rdtsc()"
5522 check_builtin mm_empty mmintrin.h "_mm_empty()"
5524 enable local_aligned_8 local_aligned_16 local_aligned_32
5526 # check whether EBP is available on x86
5527 # As 'i' is stored on the stack, this program will crash
5528 # if the base pointer is used to access it because the
5529 # base pointer is cleared in the inline assembly code.
5530 check_exec_crash <<EOF && enable ebp_available
5532 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
5536 # check whether EBX is available on x86
5537 check_inline_asm ebx_available '""::"b"(0)' &&
5538 check_inline_asm ebx_available '"":::"%ebx"'
5540 # check whether xmm clobbers are supported
5541 check_inline_asm xmm_clobbers '"":::"%xmm0"'
5543 check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test, %eax"' ||
5544 check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test(%rip), %eax"'
5546 # check whether binutils is new enough to compile SSSE3/MMXEXT
5547 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
5548 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
5552 if check_cmd $x86asmexe_probe -v; then
5553 x86asmexe=$x86asmexe_probe
5555 x86asm_debug="-g -F dwarf"
5556 elif check_cmd $x86asmexe_probe --version; then
5557 x86asmexe=$x86asmexe_probe
5559 x86asm_debug="-g dwarf2"
5561 check_x86asm "movbe ecx, [5]" && enable x86asm
5564 if ! disabled_any asm mmx x86asm; then
5566 for program in $x86asmexe nasm yasm; do
5567 probe_x86asm $program && break
5569 disabled x86asm && die "nasm/yasm not found or too old. Use --disable-x86asm for a crippled build."
5570 test $x86asm_type = 'nasm' && X86ASM_DEPFLAGS='-MD $(@:.o=.d)'
5571 test $x86asm_type = 'yasm' && X86ASMDEP='$(DEPX86ASM) $(X86ASMFLAGS) -M $(X86ASM_O) $< > $(@:.o=.d)'
5572 X86ASMFLAGS="-f $objformat"
5573 enabled pic && append X86ASMFLAGS "-DPIC"
5574 test -n "$extern_prefix" && append X86ASMFLAGS "-DPREFIX"
5575 case "$objformat" in
5576 elf*) enabled debug && append X86ASMFLAGS $x86asm_debug ;;
5579 check_x86asm "vextracti128 xmm0, ymm0, 0" || disable avx2_external
5580 check_x86asm "vpmacsdd xmm0, xmm1, xmm2, xmm3" || disable xop_external
5581 check_x86asm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
5582 check_x86asm "CPU amdnop" || disable cpunop
5586 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
5593 check_code cc arm_neon.h "int16x8_t test = vdupq_n_s16(0)" && enable intrinsics_neon
5595 check_ldflags -Wl,--as-needed
5596 check_ldflags -Wl,-z,noexecstack
5598 if check_func dlopen && check_func dlsym; then
5600 elif check_func dlopen -ldl && check_func dlsym -ldl; then
5604 avisynth_demuxer_extralibs='$ldl'
5605 cuda_extralibs='$ldl'
5606 decklink_outdev_extralibs="$decklink_outdev_extralibs $ldl"
5607 decklink_indev_extralibs="$decklink_indev_extralibs $ldl"
5608 libndi_newtek_outdev_extralibs="$libndi_newtek_outdev_extralibs $ldl"
5609 libndi_newtek_indev_extralibs="$libndi_newtek_indev_extralibs $ldl"
5610 frei0r_filter_extralibs='$ldl'
5611 frei0r_src_filter_extralibs='$ldl'
5612 ladspa_filter_extralibs='$ldl'
5613 nvenc_extralibs='$ldl'
5615 if ! disabled network; then
5616 check_func getaddrinfo $network_extralibs
5617 check_func inet_aton $network_extralibs
5619 check_type netdb.h "struct addrinfo"
5620 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
5621 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
5622 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
5623 check_type poll.h "struct pollfd"
5624 check_type netinet/sctp.h "struct sctp_event_subscribe"
5625 check_struct "sys/socket.h" "struct msghdr" msg_flags
5626 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
5627 check_type netinet/in.h "struct sockaddr_in6"
5628 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
5629 check_type "sys/types.h sys/socket.h" socklen_t
5631 # Prefer arpa/inet.h over winsock2
5632 if check_header arpa/inet.h ; then
5633 check_func closesocket
5634 elif check_header winsock2.h ; then
5635 check_func_headers winsock2.h closesocket -lws2 &&
5636 network_extralibs="-lws2" ||
5637 { check_func_headers winsock2.h closesocket -lws2_32 &&
5638 network_extralibs="-lws2_32"; } || disable winsock2_h network
5639 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
5641 check_type ws2tcpip.h socklen_t
5642 check_type ws2tcpip.h "struct addrinfo"
5643 check_type ws2tcpip.h "struct group_source_req"
5644 check_type ws2tcpip.h "struct ip_mreq_source"
5645 check_type ws2tcpip.h "struct ipv6_mreq"
5646 check_type winsock2.h "struct pollfd"
5647 check_struct winsock2.h "struct sockaddr" sa_len
5648 check_type ws2tcpip.h "struct sockaddr_in6"
5649 check_type ws2tcpip.h "struct sockaddr_storage"
5655 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
5656 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
5657 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
5658 check_builtin sarestart signal.h "SA_RESTART"
5659 check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" -lpthread
5660 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
5661 check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)"
5662 check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)"
5663 check_builtin x264_csp_bgr "stdint.h x264.h" "X264_CSP_BGR"
5665 case "$custom_allocator" in
5667 # jemalloc by default does not use a prefix
5668 require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc
5671 require_pkg_config libtcmalloc gperftools/tcmalloc.h tc_malloc
5676 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
5677 check_func ${malloc_prefix}memalign && enable memalign
5678 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
5681 check_func_headers stdlib.h arc4random
5682 check_func_headers time.h clock_gettime ||
5683 { check_lib clock_gettime time.h clock_gettime -lrt && LIBRT="-lrt"; }
5686 check_func gethrtime
5688 check_func getrusage
5689 check_func gettimeofday
5691 check_func mach_absolute_time
5695 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
5696 check_func_headers time.h nanosleep ||
5697 { check_lib nanosleep time.h nanosleep -lrt && LIBRT="-lrt"; }
5698 check_func sched_getaffinity
5699 check_func setrlimit
5700 check_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE
5701 check_func strerror_r
5706 check_func_headers conio.h kbhit
5707 check_func_headers io.h setmode
5708 check_func_headers lzo/lzo1x.h lzo1x_999_compress
5709 check_func_headers stdlib.h getenv
5710 check_func_headers sys/stat.h lstat
5712 check_func_headers windows.h GetProcessAffinityMask
5713 check_func_headers windows.h GetProcessTimes
5714 check_func_headers windows.h GetSystemTimeAsFileTime
5715 check_func_headers windows.h LoadLibrary
5716 check_func_headers windows.h MapViewOfFile
5717 check_func_headers windows.h PeekNamedPipe
5718 check_func_headers windows.h SetConsoleTextAttribute
5719 check_func_headers windows.h SetConsoleCtrlHandler
5720 check_func_headers windows.h Sleep
5721 check_func_headers windows.h VirtualAlloc
5722 check_struct windows.h "CONDITION_VARIABLE" Ptr
5723 check_func_headers glob.h glob
5725 check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext
5727 check_header d3d11.h
5728 check_header direct.h
5729 check_header dirent.h
5730 check_header dlfcn.h
5731 check_header dxgidebug.h
5733 check_header dxva2api.h -D_WIN32_WINNT=0x0600
5735 check_header libcrystalhd/libcrystalhd_if.h
5736 check_header mach/mach_time.h
5737 check_header malloc.h
5738 check_header net/udplite.h
5740 check_header sys/mman.h
5741 check_header sys/param.h
5742 check_header sys/resource.h
5743 check_header sys/select.h
5744 check_header sys/time.h
5745 check_header sys/un.h
5746 check_header termios.h
5747 check_header unistd.h
5748 check_header valgrind/valgrind.h
5749 check_header VideoDecodeAcceleration/VDADecoder.h
5750 check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepareToEncodeFrames -framework VideoToolbox
5751 check_header windows.h
5752 check_header X11/extensions/XvMClib.h
5753 check_header asm/types.h
5755 # it seems there are versions of clang in some distros that try to use the
5756 # gcc headers, which explodes for stdatomic
5757 # so we also check that atomics actually work here
5758 check_builtin stdatomic_h stdatomic.h "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0)"
5760 check_lib ole32 "windows.h" CoTaskMemFree -lole32
5761 check_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32
5762 check_lib wincrypt "windows.h wincrypt.h" CryptGenRandom -ladvapi32
5763 check_lib psapi "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
5765 enabled audiotoolbox && check_apple_framework AudioToolbox
5766 enabled avfoundation && check_apple_framework AVFoundation
5767 enabled coreimage && check_apple_framework CoreImage
5768 enabled videotoolbox && check_apple_framework VideoToolbox
5770 enabled avfoundation && {
5771 check_lib avfoundation CoreGraphics/CoreGraphics.h CGGetActiveDisplayList "-framework CoreGraphics" ||
5772 check_lib avfoundation ApplicationServices/ApplicationServices.h CGGetActiveDisplayList "-framework ApplicationServices"; }
5774 enabled videotoolbox &&
5775 check_lib coreservices CoreServices/CoreServices.h UTGetOSTypeFromString "-framework CoreServices"
5777 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
5779 check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
5780 check_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
5781 check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
5782 check_type "windows.h d3d11.h" "ID3D11VideoContext"
5783 check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
5785 check_type "va/va.h va/va_dec_hevc.h" "VAPictureParameterBufferHEVC"
5786 check_struct "va/va.h" "VADecPictureParameterBufferVP9" bit_depth
5787 check_type "va/va.h va/va_vpp.h" "VAProcPipelineParameterBuffer"
5788 check_type "va/va.h va/va_enc_h264.h" "VAEncPictureParameterBufferH264"
5789 check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC"
5790 check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
5791 check_type "va/va.h va/va_enc_mpeg2.h" "VAEncPictureParameterBufferMPEG2"
5792 check_type "va/va.h va/va_enc_vp8.h" "VAEncPictureParameterBufferVP8"
5793 check_type "va/va.h va/va_enc_vp9.h" "VAEncPictureParameterBufferVP9"
5795 check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
5797 check_cpp_condition windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" && enable winrt || disable winrt
5799 if ! disabled w32threads && ! enabled pthreads; then
5800 check_func_headers "windows.h process.h" _beginthreadex &&
5801 enable w32threads || disable w32threads
5802 if ! enabled w32threads && enabled winrt; then
5803 check_func_headers "windows.h" CreateThread &&
5804 enable w32threads || disable w32threads
5808 # check for some common methods of building with pthread support
5809 # do this before the optional library checks as some of them require pthreads
5810 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
5811 if check_lib pthreads pthread.h pthread_join -pthread &&
5812 check_lib pthreads pthread.h pthread_create -pthread; then
5814 elif check_lib pthreads pthread.h pthread_join -pthreads &&
5815 check_lib pthreads pthread.h pthread_create -pthreads; then
5816 add_cflags -pthreads
5817 elif check_lib pthreads pthread.h pthread_join -ldl -pthread &&
5818 check_lib pthreads pthread.h pthread_create -ldl -pthread; then
5819 add_cflags -ldl -pthread
5820 elif check_lib pthreads pthread.h pthread_join -lpthreadGC2 &&
5821 check_lib pthreads pthread.h pthread_create -lpthreadGC2; then
5823 elif check_lib pthreads pthread.h pthread_join -lpthread &&
5824 check_lib pthreads pthread.h pthread_create -lpthread; then
5826 elif check_func pthread_join && check_func pthread_create; then
5829 check_code cc "pthread.h" "static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER" || disable pthreads
5833 if enabled pthreads; then
5834 check_func pthread_cancel
5838 check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)"
5840 enabled zlib && check_lib zlib zlib.h zlibVersion -lz
5841 enabled bzlib && check_lib bzlib bzlib.h BZ2_bzlibVersion -lbz2
5842 enabled lzma && check_lib lzma lzma.h lzma_version_number -llzma
5844 check_lib libm math.h sin -lm && LIBM="-lm"
5852 for func in $MATH_FUNCS; do
5853 eval check_mathfunc $func \${${func}_args:-1} $LIBM
5856 for func in $COMPLEX_FUNCS; do
5857 eval check_complexfunc $func \${${func}_args:-1}
5860 # these are off by default, so fail if requested and not available
5861 enabled cuda_sdk && require cuda_sdk cuda.h cuCtxCreate -lcuda
5862 enabled cuvid && { enabled cuda ||
5863 die "ERROR: CUVID requires CUDA"; }
5864 enabled chromaprint && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint
5865 enabled decklink && { { check_header DeckLinkAPI.h || die "ERROR: DeckLinkAPI.h header not found"; } &&
5866 { check_cpp_condition DeckLinkAPIVersion.h "BLACKMAGIC_DECKLINK_API_VERSION >= 0x0a060100" || die "ERROR: Decklink API version must be >= 10.6.1."; } }
5867 enabled libndi_newtek && { check_header Processing.NDI.Lib.h || die "ERROR: Processing.NDI.Lib.h header not found"; }
5868 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
5869 enabled gmp && require gmp gmp.h mpz_export -lgmp
5870 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
5871 enabled jni && { [ $target_os = "android" ] && check_header jni.h && enabled pthreads || die "ERROR: jni not found"; }
5872 enabled ladspa && { check_header ladspa.h || die "ERROR: ladspa.h header not found"; }
5873 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
5874 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
5875 enabled libbluray && require_pkg_config libbluray libbluray/bluray.h bd_open
5876 enabled libbs2b && require_pkg_config libbs2b bs2b.h bs2b_open
5877 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
5878 { check_lib libcelt celt/celt.h celt_decoder_create_custom -lcelt0 ||
5879 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
5880 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
5881 enabled libdc1394 && require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new
5882 enabled libdrm && require_pkg_config libdrm xf86drm.h drmGetVersion
5883 enabled libfdk_aac && { use_pkg_config fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
5884 { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
5885 warn "using libfdk without pkg-config"; } }
5886 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"
5887 enabled libflite && require libflite "flite/flite.h" flite_init $flite_extralibs
5888 enabled fontconfig && enable libfontconfig
5889 enabled libfontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
5890 enabled libfreetype && require_pkg_config freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
5891 enabled libfribidi && require_pkg_config fribidi fribidi.h fribidi_version_info
5892 enabled libgme && { use_pkg_config libgme gme/gme.h gme_new_emu ||
5893 require libgme gme/gme.h gme_new_emu -lgme -lstdc++; }
5894 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
5895 check_lib libgsm "${gsm_hdr}" gsm_create -lgsm && break;
5896 done || die "ERROR: libgsm not found"; }
5897 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
5898 enabled libkvazaar && require_pkg_config "kvazaar >= 0.8.1" kvazaar.h kvz_api_get
5899 # While it may appear that require is being used as a pkg-config
5900 # fallback for libmfx, it is actually being used to detect a different
5901 # installation route altogether. If libmfx is installed via the Intel
5902 # Media SDK or Intel Media Server Studio, these don't come with
5903 # pkg-config support. Instead, users should make sure that the build
5904 # can find the libraries and headers through other means.
5905 enabled libmfx && { use_pkg_config libmfx "mfx/mfxvideo.h" MFXInit ||
5906 { require libmfx "mfx/mfxvideo.h" MFXInit -llibmfx && warn "using libmfx without pkg-config"; } }
5907 enabled libmodplug && require_pkg_config libmodplug libmodplug/modplug.h ModPlug_Load
5908 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
5909 enabled libmysofa && require libmysofa "mysofa.h" mysofa_load -lmysofa
5910 enabled libnpp && { check_lib libnpp npp.h nppGetLibVersion -lnppig -lnppicc -lnppc ||
5911 check_lib libnpp npp.h nppGetLibVersion -lnppi -lnppc ||
5912 die "ERROR: libnpp not found"; }
5913 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
5914 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
5915 enabled libopencv && { check_header opencv2/core/core_c.h &&
5916 { use_pkg_config opencv opencv2/core/core_c.h cvCreateImageHeader ||
5917 require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
5918 require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; }
5919 enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion
5920 enabled libopenjpeg && { { check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5921 check_lib libopenjpeg openjpeg-2.2/openjpeg.h opj_version -lopenjp2 ||
5922 { check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5923 check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||
5924 { check_lib libopenjpeg openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5925 { check_lib libopenjpeg openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5926 { check_lib libopenjpeg openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5927 die "ERROR: libopenjpeg not found"; }
5928 enabled libopenmpt && require_pkg_config "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create
5929 enabled libopus && {
5930 enabled libopus_decoder && {
5931 require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
5933 enabled libopus_encoder && {
5934 require_pkg_config opus opus_multistream.h opus_multistream_surround_encoder_create
5937 enabled libpulse && require_pkg_config libpulse pulse/pulseaudio.h pa_context_new
5938 enabled librsvg && require_pkg_config librsvg-2.0 librsvg-2.0/librsvg/rsvg.h rsvg_handle_render_cairo
5939 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
5940 enabled librubberband && require_pkg_config "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new
5941 enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_buffer
5942 enabled libsmbclient && { use_pkg_config smbclient libsmbclient.h smbc_init ||
5943 require smbclient libsmbclient.h smbc_init -lsmbclient; }
5944 enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy
5945 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr && LIBSOXR="-lsoxr"
5946 enabled libssh && require_pkg_config libssh libssh/sftp.h sftp_init
5947 enabled libspeex && require_pkg_config speex speex/speex.h speex_decoder_init -lspeex
5948 enabled libtesseract && require_pkg_config tesseract tesseract/capi.h TessBaseAPICreate
5949 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
5950 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
5951 { check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
5952 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
5953 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
5954 enabled libvidstab && require_pkg_config "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
5955 enabled libvmaf && require_pkg_config libvmaf libvmaf.h compute_vmaf
5956 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
5957 enabled libvorbis && require_pkg_config vorbis vorbis/codec.h vorbis_info_init &&
5958 require_pkg_config vorbisenc vorbis/vorbisenc.h vorbis_encode_init
5961 enabled libvpx_vp8_decoder && {
5962 use_pkg_config "vpx >= 0.9.1" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx ||
5963 check_lib libvpx_vp8_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
5964 die "ERROR: libvpx decoder version must be >=0.9.1";
5966 enabled libvpx_vp8_encoder && {
5967 use_pkg_config "vpx >= 0.9.7" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx ||
5968 check_lib libvpx_vp8_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VP8E_SET_MAX_INTRA_BITRATE_PCT" -lvpx ||
5969 die "ERROR: libvpx encoder version must be >=0.9.7";
5971 enabled libvpx_vp9_decoder && {
5972 use_pkg_config "vpx >= 1.3.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx ||
5973 check_lib libvpx_vp9_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx
5975 enabled libvpx_vp9_encoder && {
5976 use_pkg_config "vpx >= 1.3.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx ||
5977 check_lib libvpx_vp9_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx VP9E_SET_AQ_MODE" -lvpx
5979 if disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder; then
5980 die "libvpx enabled but no supported decoders found"
5984 enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack
5985 enabled libwebp && {
5986 enabled libwebp_encoder && require_pkg_config "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
5987 enabled libwebp_anim_encoder && { use_pkg_config "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit || disable libwebp_anim_encoder; } }
5988 enabled libx264 && { use_pkg_config x264 "stdint.h x264.h" x264_encoder_encode ||
5989 { require libx264 "stdint.h x264.h" x264_encoder_encode -lx264 &&
5990 warn "using libx264 without pkg-config"; } } &&
5991 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
5992 die "ERROR: libx264 must be installed and version must be >= 0.118."; } &&
5993 { check_cpp_condition x264.h "X264_MPEG2" &&
5995 enabled libx265 && require_pkg_config x265 x265.h x265_api_get &&
5996 { check_cpp_condition x265.h "X265_BUILD >= 68" ||
5997 die "ERROR: libx265 version must be >= 68."; }
5998 enabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode -lxavs
5999 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
6000 enabled libzimg && require_pkg_config "zimg >= 2.3.0" zimg.h zimg_get_api_version
6001 enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new
6002 enabled libzvbi && require libzvbi libzvbi.h vbi_decoder_new -lzvbi &&
6003 { check_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" ||
6004 enabled gpl || die "ERROR: libzvbi requires version 0.2.28 or --enable-gpl."; }
6005 enabled libxml2 && require_pkg_config libxml-2.0 libxml2/libxml/xmlversion.h xmlCheckVersion
6006 enabled mediacodec && { enabled jni || die "ERROR: mediacodec requires --enable-jni"; }
6007 enabled mmal && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
6008 { ! enabled cross_compile &&
6009 add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
6010 add_ldflags -L/opt/vc/lib/ &&
6011 check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
6012 die "ERROR: mmal not found" &&
6013 check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
6014 enabled openal && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
6015 check_lib openal 'AL/al.h' alGetError "${al_extralibs}" && break; done } ||
6016 die "ERROR: openal not found"; } &&
6017 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
6018 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
6019 enabled opencl && { check_lib opencl OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
6020 check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
6021 die "ERROR: opencl not found"; } &&
6022 { check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
6023 check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
6024 die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
6025 enabled opengl && { check_lib opengl GL/glx.h glXGetProcAddress "-lGL" ||
6026 check_lib opengl windows.h wglGetProcAddress "-lopengl32 -lgdi32" ||
6027 check_lib opengl OpenGL/gl3.h glGetError "-Wl,-framework,OpenGL" ||
6028 check_lib opengl ES2/gl.h glGetError "-isysroot=${sysroot} -Wl,-framework,OpenGLES" ||
6029 die "ERROR: opengl not found."
6031 enabled omx_rpi && { check_header OMX_Core.h ||
6032 { ! enabled cross_compile && add_cflags -isystem/opt/vc/include/IL && check_header OMX_Core.h ; } ||
6033 die "ERROR: OpenMAX IL headers not found"; }
6034 enabled omx && { check_header OMX_Core.h || die "ERROR: OpenMAX IL headers not found"; }
6035 enabled openssl && { use_pkg_config openssl openssl/ssl.h OPENSSL_init_ssl ||
6036 use_pkg_config openssl openssl/ssl.h SSL_library_init ||
6037 check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
6038 check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
6039 check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
6040 die "ERROR: openssl not found"; }
6042 if enabled gcrypt; then
6043 GCRYPT_CONFIG="${cross_prefix}libgcrypt-config"
6044 if "${GCRYPT_CONFIG}" --version > /dev/null 2>&1; then
6045 gcrypt_cflags=$("${GCRYPT_CONFIG}" --cflags)
6046 gcrypt_extralibs=$("${GCRYPT_CONFIG}" --libs)
6047 check_func_headers gcrypt.h gcry_mpi_new $gcrypt_cflags $gcrypt_extralibs ||
6048 die "ERROR: gcrypt not found"
6049 add_cflags $gcrypt_cflags && add_extralibs $gcrypt_extralibs
6051 require gcrypt gcrypt.h gcry_mpi_new -lgcrypt
6055 if enabled sdl2; then
6056 SDL2_CONFIG="${cross_prefix}sdl2-config"
6057 if check_pkg_config sdl2 SDL_events.h SDL_PollEvent; then
6058 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
6059 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
6060 check_func SDL_Init $sdl2_extralibs $sdl2_cflags ||
6062 elif "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
6063 sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
6064 sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
6065 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
6066 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
6067 check_func SDL_Init $sdl2_extralibs $sdl2_cflags ||
6072 if test $target_os = "mingw32"; then
6073 sdl2_extralibs="$sdl2_extralibs -mconsole"
6076 enabled sdl2 && add_cflags $sdl2_cflags && add_extralibs $sdl2_extralibs
6078 if enabled decklink; then
6080 mingw32*|mingw64*|win32|win64)
6081 decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 -loleaut32"
6082 decklink_indev_extralibs="$decklink_indev_extralibs -lole32 -loleaut32"
6087 enabled securetransport &&
6088 check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
6089 check_lib securetransport "Security/SecureTransport.h Security/Security.h" "SSLCreateContext SecItemImport" "-Wl,-framework,CoreFoundation -Wl,-framework,Security" ||
6090 disable securetransport
6093 check_func_headers "windows.h security.h" InitializeSecurityContext -DSECURITY_WIN32 -lsecur32 &&
6094 check_cpp_condition winerror.h "defined(SEC_I_CONTEXT_EXPIRED)" &&
6095 add_extralibs -lsecur32 ||
6098 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
6100 && [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \
6101 && enable makeinfo_html || disable makeinfo_html
6102 disabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
6103 perl -v > /dev/null 2>&1 && enable perl || disable perl
6104 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
6105 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
6107 check_header linux/fb.h
6108 check_header linux/videodev2.h
6109 check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
6111 check_header sys/videoio.h
6112 check_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
6114 check_lib user32 "windows.h winuser.h" GetShellWindow -luser32
6115 check_lib vfw32 "windows.h vfw.h" capCreateCaptureWindow -lvfw32
6116 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
6117 # w32api 3.12 had it defined wrong
6118 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
6120 check_type "dshow.h" IBaseFilter
6122 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
6123 { check_header dev/bktr/ioctl_meteor.h &&
6124 check_header dev/bktr/ioctl_bt848.h; } ||
6125 { check_header machine/ioctl_meteor.h &&
6126 check_header machine/ioctl_bt848.h; } ||
6127 { check_header dev/video/meteor/ioctl_meteor.h &&
6128 check_header dev/video/bktr/ioctl_bt848.h; } ||
6129 check_header dev/ic/bt8xx.h
6131 if check_struct sys/soundcard.h audio_buf_info bytes; then
6132 enable_safe sys/soundcard.h
6134 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
6135 #include <sys/soundcard.h>
6139 check_header soundcard.h
6141 enabled alsa && check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound
6143 enabled jack && check_lib jack jack/jack.h jack_client_open -ljack &&
6144 check_func jack_port_get_latency_range -ljack
6146 enabled sndio && check_lib sndio sndio.h sio_open -lsndio
6148 if enabled libcdio; then
6149 check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
6150 check_lib libcdio "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
6151 die "ERROR: No usable libcdio/cdparanoia found"
6154 enabled libxcb && check_pkg_config "xcb >= 1.4" xcb/xcb.h xcb_connect || disable libxcb
6156 if enabled libxcb; then
6158 enabled libxcb_shm && check_pkg_config xcb-shm xcb/shm.h xcb_shm_attach || disable libxcb_shm
6159 enabled libxcb_shape && check_pkg_config xcb-shape xcb/shape.h xcb_shape_get_rectangles || disable libxcb_shape
6160 enabled libxcb_xfixes && check_pkg_config xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image || disable libxcb_xfixes
6162 add_cflags $xcb_cflags $xcb_shm_cflags $xcb_xfixes_cflags $xcb_shape_cflags
6163 add_extralibs $xcb_extralibs $xcb_shm_extralibs $xcb_xfixes_extralibs $xcb_shape_extralibs
6166 check_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs"
6168 # d3d11va requires linking directly to dxgi and d3d11 if not building for
6169 # the desktop api partition
6170 check_cpp <<EOF && enable uwp && d3d11va_extralibs="-ldxgi -ld3d11"
6171 #ifdef WINAPI_FAMILY
6172 #include <winapifamily.h>
6173 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
6174 #error desktop, not uwp
6176 // WINAPI_FAMILY_APP, WINAPI_FAMILY_PHONE_APP => UWP
6179 #error no family set
6184 check_lib vaapi va/va.h vaInitialize -lva
6187 check_code cc "va/va.h" "vaCreateSurfaces(0, 0, 0, 0, 0, 0, 0, 0)" ||
6191 check_lib vaapi_drm "va/va.h va/va_drm.h" vaGetDisplayDRM -lva -lva-drm
6194 check_lib vaapi_x11 "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 -lX11
6197 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
6201 check_lib vdpau_x11 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11
6203 enabled crystalhd && check_lib crystalhd "stdint.h libcrystalhd/libcrystalhd_if.h" DtsCrystalHDVersion -lcrystalhd
6205 if enabled x86; then
6207 mingw32*|mingw64*|win32|win64|linux|cygwin*)
6210 disable cuda cuvid nvenc
6214 disable cuda cuvid nvenc
6218 check_cc -I$source_path <<EOF || disable nvenc
6219 #include "compat/nvenc/nvEncodeAPI.h"
6220 NV_ENCODE_API_FUNCTION_LIST flist;
6221 void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; }
6222 int main(void) { return 0; }
6225 # Funny iconv installations are not unusual, so check it after all flags have been set
6226 if enabled libc_iconv; then
6227 check_func_headers iconv.h iconv
6228 elif enabled iconv; then
6229 check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv
6232 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
6234 # add some useful compiler flags if supported
6235 check_cflags -Wdeclaration-after-statement
6237 check_cflags -Wdisabled-optimization
6238 check_cflags -Wpointer-arith
6239 check_cflags -Wredundant-decls
6240 check_cflags -Wwrite-strings
6241 check_cflags -Wtype-limits
6242 check_cflags -Wundef
6243 check_cflags -Wmissing-prototypes
6244 check_cflags -Wno-pointer-to-int-cast
6245 check_cflags -Wstrict-prototypes
6246 check_cflags -Wempty-body
6248 if enabled extra_warnings; then
6249 check_cflags -Wcast-qual
6250 check_cflags -Wextra
6251 check_cflags -Wpedantic
6254 check_disable_warning(){
6255 warning_flag=-W${1#-Wno-}
6256 test_cflags $warning_flag && add_cflags $1
6259 check_disable_warning -Wno-parentheses
6260 check_disable_warning -Wno-switch
6261 check_disable_warning -Wno-format-zero-length
6262 check_disable_warning -Wno-pointer-sign
6263 check_disable_warning -Wno-unused-const-variable
6265 check_disable_warning_headers(){
6266 warning_flag=-W${1#-Wno-}
6267 test_cflags $warning_flag && add_cflags_headers $1
6270 check_disable_warning_headers -Wno-deprecated-declarations
6271 check_disable_warning_headers -Wno-unused-variable
6273 check_cc <<EOF && enable blocks_extension
6274 void (^block)(void);
6277 # add some linker flags
6278 check_ldflags -Wl,--warn-common
6279 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
6280 enabled rpath && add_ldexeflags -Wl,-rpath,$libdir
6281 enabled rpath && add_ldlibflags -Wl,-rpath,$libdir
6282 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
6284 # add some strip flags
6287 enabled neon_clobber_test &&
6288 check_ldflags -Wl,--wrap,avcodec_open2 \
6289 -Wl,--wrap,avcodec_decode_audio4 \
6290 -Wl,--wrap,avcodec_decode_video2 \
6291 -Wl,--wrap,avcodec_decode_subtitle2 \
6292 -Wl,--wrap,avcodec_encode_audio2 \
6293 -Wl,--wrap,avcodec_encode_video2 \
6294 -Wl,--wrap,avcodec_encode_subtitle \
6295 -Wl,--wrap,avcodec_send_packet \
6296 -Wl,--wrap,avcodec_receive_packet \
6297 -Wl,--wrap,avcodec_send_frame \
6298 -Wl,--wrap,avcodec_receive_frame \
6299 -Wl,--wrap,swr_convert \
6300 -Wl,--wrap,avresample_convert ||
6301 disable neon_clobber_test
6303 enabled xmm_clobber_test &&
6304 check_ldflags -Wl,--wrap,avcodec_open2 \
6305 -Wl,--wrap,avcodec_decode_audio4 \
6306 -Wl,--wrap,avcodec_decode_video2 \
6307 -Wl,--wrap,avcodec_decode_subtitle2 \
6308 -Wl,--wrap,avcodec_encode_audio2 \
6309 -Wl,--wrap,avcodec_encode_video2 \
6310 -Wl,--wrap,avcodec_encode_subtitle \
6311 -Wl,--wrap,avcodec_send_packet \
6312 -Wl,--wrap,avcodec_receive_packet \
6313 -Wl,--wrap,avcodec_send_frame \
6314 -Wl,--wrap,avcodec_receive_frame \
6315 -Wl,--wrap,swr_convert \
6316 -Wl,--wrap,avresample_convert \
6317 -Wl,--wrap,sws_scale ||
6318 disable xmm_clobber_test
6320 check_ld "cc" <<EOF && enable proper_dce
6321 extern const int array[512];
6322 static inline int func(void) { return array[0]; }
6323 int main(void) { return 0; }
6326 if enabled proper_dce; then
6327 echo "X { local: *; };" > $TMPV
6328 if test_ldflags -Wl,${version_script},$TMPV; then
6329 append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver'
6330 check_cc <<EOF && enable symver_asm_label
6331 void ff_foo(void) __asm__ ("av_foo@VERSION");
6332 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
6334 check_cc <<EOF && enable symver_gnu_asm
6335 __asm__(".symver ff_foo,av_foo@VERSION");
6336 void ff_foo(void) {}
6341 if [ -z "$optflags" ]; then
6342 if enabled small; then
6343 optflags=$cflags_size
6344 elif enabled optimizations; then
6345 optflags=$cflags_speed
6347 optflags=$cflags_noopt
6351 if [ -z "$nvccflags" ]; then
6352 nvccflags=$nvccflags_default
6355 if enabled x86_64 || enabled ppc64 || enabled aarch64; then
6356 nvccflags="$nvccflags -m64"
6358 nvccflags="$nvccflags -m32"
6363 enabled lto && check_ldflags "$@"
6366 check_optflags $optflags
6367 check_optflags -fno-math-errno
6368 check_optflags -fno-signed-zeros
6370 if enabled lto; then
6371 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
6373 check_ldflags -flto $cpuflags
6374 disable inline_asm_direct_symbol_refs
6377 enabled ftrapv && check_cflags -ftrapv
6379 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
6384 if enabled icc; then
6385 # Just warnings, no remarks
6387 # -wd: Disable following warnings
6388 # 144, 167, 556: -Wno-pointer-sign
6389 # 188: enumerated type mixed with another type
6390 # 1292: attribute "foo" ignored
6391 # 1419: external declaration in primary source file
6392 # 10006: ignoring unknown option -fno-signed-zeros
6393 # 10148: ignoring unknown option -Wno-parentheses
6394 # 10156: ignoring option '-W'; no argument required
6395 # 13200: No EMMS instruction before call to function
6396 # 13203: No EMMS instruction before return from function
6397 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156,13200,13203
6398 # 11030: Warning unknown option --as-needed
6399 # 10156: ignoring option '-export'; no argument required
6400 check_ldflags -wd10156,11030
6401 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
6402 enable ebp_available
6403 # The test above does not test linking
6404 enabled lto && disable symver_asm_label
6405 if enabled x86_32; then
6406 icc_version=$($cc -dumpversion)
6407 test ${icc_version%%.*} -ge 11 &&
6408 check_cflags -falign-stack=maintain-16-byte ||
6409 disable aligned_stack
6411 elif enabled ccc; then
6412 # disable some annoying warnings
6413 add_cflags -msg_disable bitnotint
6414 add_cflags -msg_disable mixfuncvoid
6415 add_cflags -msg_disable nonstandcast
6416 add_cflags -msg_disable unsupieee
6417 elif enabled gcc; then
6418 check_optflags -fno-tree-vectorize
6419 check_cflags -Werror=format-security
6420 check_cflags -Werror=implicit-function-declaration
6421 check_cflags -Werror=missing-prototypes
6422 check_cflags -Werror=return-type
6423 check_cflags -Werror=vla
6424 check_cflags -Wformat
6425 check_cflags -fdiagnostics-color=auto
6426 enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized
6427 elif enabled llvm_gcc; then
6428 check_cflags -mllvm -stack-alignment=16
6429 elif enabled clang; then
6430 check_cflags -mllvm -stack-alignment=16
6431 check_cflags -mstack-alignment=16
6432 check_cflags -Qunused-arguments
6433 check_cflags -Werror=implicit-function-declaration
6434 check_cflags -Werror=missing-prototypes
6435 check_cflags -Werror=return-type
6436 elif enabled cparser; then
6437 add_cflags -Wno-missing-variable-declarations
6438 add_cflags -Wno-empty-statement
6439 elif enabled armcc; then
6440 add_cflags -W${armcc_opt},--diag_suppress=4343 # hardfp compat
6441 add_cflags -W${armcc_opt},--diag_suppress=3036 # using . as system include dir
6442 # 2523: use of inline assembly is deprecated
6443 add_cflags -W${armcc_opt},--diag_suppress=2523
6444 add_cflags -W${armcc_opt},--diag_suppress=1207
6445 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
6446 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
6447 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
6448 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
6449 elif enabled tms470; then
6450 add_cflags -pds=824 -pds=837
6452 elif enabled pathscale; then
6453 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
6454 elif enabled_any msvc icl; then
6455 enabled x86_32 && disable aligned_stack
6456 enabled_all x86_32 debug && add_cflags -Oy-
6457 enabled debug && add_ldflags -debug
6458 enable pragma_deprecated
6459 if enabled icl; then
6460 # -Qansi-alias is basically -fstrict-aliasing, but does not work
6461 # (correctly) on icl 13.x.
6462 check_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" &&
6463 add_cflags -Qansi-alias
6464 # Some inline asm is not compilable in debug
6465 if enabled debug; then
6466 disable ebp_available
6467 disable ebx_available
6470 # msvcrt10 x64 incorrectly enables log2, only msvcrt12 (MSVC 2013) onwards actually has log2.
6471 check_cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION >= 12" || disable log2
6472 # The CRT headers contain __declspec(restrict) in a few places, but if redefining
6473 # restrict, this might break. MSVC 2010 and 2012 fail with __declspec(__restrict)
6474 # (as it ends up if the restrict redefine is done before including stdlib.h), while
6475 # MSVC 2013 and newer can handle it fine.
6476 # If this declspec fails, force including stdlib.h before the restrict redefinition
6477 # happens in config.h.
6478 if [ $_restrict != restrict ]; then
6479 check_cc <<EOF || add_cflags -FIstdlib.h
6480 __declspec($_restrict) void* foo(int);
6483 # the new SSA optimzer in VS2015 U3 is mis-optimizing some parts of the code
6484 # Issue has been fixed in MSVC v19.00.24218.
6485 check_cpp_condition windows.h "_MSC_FULL_VER >= 190024218" ||
6486 check_cflags -d2SSAOptimizer-
6487 # enable utf-8 source processing on VS2015 U2 and newer
6488 check_cpp_condition windows.h "_MSC_FULL_VER >= 190023918" &&
6492 for pfx in "" host_; do
6493 varname=${pfx%_}cc_type
6494 eval "type=\$$varname"
6495 if [ "$type" = "msvc" ]; then
6496 check_${pfx}cc <<EOF || add_${pfx}cflags -Dinline=__inline
6497 static inline int foo(int a) { return a; }
6504 add_asflags -Qunused-arguments
6510 check_ldflags -Qunused-arguments
6516 enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
6520 enable frame_thread_encoder
6522 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
6524 check_deps $CONFIG_LIST \
6529 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"
6532 if test $target_os = "haiku"; then
6534 disable posix_memalign
6538 # -> enable ${lib}_deps_${dep}
6539 # -> add $dep to ${lib}_deps only once
6543 enabled "${lib}_deps_${dep}" && return 0
6544 enable "${lib}_deps_${dep}"
6545 prepend "${lib}_deps" $dep
6548 # merge deps lib components
6549 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
6554 enabled $comp || continue
6555 eval "dep=\"\$${comp}_deps\""
6562 merge_deps libavfilter $FILTER_LIST
6564 map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
6566 for thread in $THREADS_LIST; do
6567 if enabled $thread; then
6568 test -n "$thread_type" &&
6569 die "ERROR: Only one thread type must be selected." ||
6570 thread_type="$thread"
6574 if disabled stdatomic_h; then
6575 if enabled atomics_gcc; then
6576 add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
6577 elif enabled atomics_win32; then
6578 add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
6579 elif enabled atomics_suncc; then
6580 add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
6581 elif enabled pthreads; then
6582 add_compat atomics/pthread/stdatomic.o
6583 add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
6585 enabled threads && die "Threading is enabled, but no atomics are available"
6586 add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
6590 # Check if requested libraries were found.
6591 for lib in $AUTODETECT_LIBS; do
6592 requested $lib && ! enabled $lib && die "ERROR: $lib requested but not found";
6595 enabled zlib && add_cppflags -DZLIB_CONST
6597 # conditional library dependencies, in linking order
6598 enabled afftfilt_filter && prepend avfilter_deps "avcodec"
6599 enabled afir_filter && prepend avfilter_deps "avcodec"
6600 enabled amovie_filter && prepend avfilter_deps "avformat avcodec"
6601 enabled aresample_filter && prepend avfilter_deps "swresample"
6602 enabled atempo_filter && prepend avfilter_deps "avcodec"
6603 enabled cover_rect_filter && prepend avfilter_deps "avformat avcodec"
6604 enabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample"
6605 enabled elbg_filter && prepend avfilter_deps "avcodec"
6606 enabled fftfilt_filter && prepend avfilter_deps "avcodec"
6607 enabled find_rect_filter && prepend avfilter_deps "avformat avcodec"
6608 enabled firequalizer_filter && prepend avfilter_deps "avcodec"
6609 enabled mcdeint_filter && prepend avfilter_deps "avcodec"
6610 enabled movie_filter && prepend avfilter_deps "avformat avcodec"
6611 enabled pan_filter && prepend avfilter_deps "swresample"
6612 enabled pp_filter && prepend avfilter_deps "postproc"
6613 enabled removelogo_filter && prepend avfilter_deps "avformat avcodec swscale"
6614 enabled resample_filter && prepend avfilter_deps "avresample"
6615 enabled sab_filter && prepend avfilter_deps "swscale"
6616 enabled scale_filter && prepend avfilter_deps "swscale"
6617 enabled scale2ref_filter && prepend avfilter_deps "swscale"
6618 enabled sofalizer_filter && prepend avfilter_deps "avcodec"
6619 enabled showcqt_filter && prepend avfilter_deps "avformat avcodec swscale"
6620 enabled showfreqs_filter && prepend avfilter_deps "avcodec"
6621 enabled showspectrum_filter && prepend avfilter_deps "avcodec"
6622 enabled signature_filter && prepend avfilter_deps "avcodec avformat"
6623 enabled smartblur_filter && prepend avfilter_deps "swscale"
6624 enabled spectrumsynth_filter && prepend avfilter_deps "avcodec"
6625 enabled spp_filter && prepend avfilter_deps "avcodec"
6626 enabled subtitles_filter && prepend avfilter_deps "avformat avcodec"
6627 enabled uspp_filter && prepend avfilter_deps "avcodec"
6628 enabled zoompan_filter && prepend avfilter_deps "swscale"
6630 enabled lavfi_indev && prepend avdevice_deps "avfilter"
6632 enabled opus_decoder && prepend avcodec_deps "swresample"
6636 eval "deps=\$$lib_deps"
6637 append $lib_deps $(map 'eval echo \$${v}_deps' $deps)
6641 #we have to remove gpl from the deps here as some code assumes all lib deps are libs
6642 postproc_deps="$(filter_out 'gpl' $postproc_deps)"
6644 map 'expand_deps $v' $LIBRARY_LIST
6646 license="LGPL version 2.1 or later"
6647 if enabled nonfree; then
6648 license="nonfree and unredistributable"
6649 elif enabled gplv3; then
6650 license="GPL version 3 or later"
6651 elif enabled lgplv3; then
6652 license="LGPL version 3 or later"
6653 elif enabled gpl; then
6654 license="GPL version 2 or later"
6657 if test "$quiet" != "yes"; then
6659 echo "install prefix $prefix"
6660 echo "source path $source_path"
6661 echo "C compiler $cc"
6662 echo "C library $libc_type"
6663 if test "$host_cc" != "$cc"; then
6664 echo "host C compiler $host_cc"
6665 echo "host C library $host_libc_type"
6667 echo "ARCH $arch ($cpu)"
6668 if test "$build_suffix" != ""; then
6669 echo "build suffix $build_suffix"
6671 if test "$progs_suffix" != ""; then
6672 echo "progs suffix $progs_suffix"
6674 if test "$extra_version" != ""; then
6675 echo "version string suffix $extra_version"
6677 echo "big-endian ${bigendian-no}"
6678 echo "runtime cpu detection ${runtime_cpudetect-no}"
6679 if enabled x86; then
6680 echo "standalone assembly ${x86asm-no}"
6681 echo "x86 assembler ${x86asmexe}"
6682 echo "MMX enabled ${mmx-no}"
6683 echo "MMXEXT enabled ${mmxext-no}"
6684 echo "3DNow! enabled ${amd3dnow-no}"
6685 echo "3DNow! extended enabled ${amd3dnowext-no}"
6686 echo "SSE enabled ${sse-no}"
6687 echo "SSSE3 enabled ${ssse3-no}"
6688 echo "AESNI enabled ${aesni-no}"
6689 echo "AVX enabled ${avx-no}"
6690 echo "AVX2 enabled ${avx2-no}"
6691 echo "XOP enabled ${xop-no}"
6692 echo "FMA3 enabled ${fma3-no}"
6693 echo "FMA4 enabled ${fma4-no}"
6694 echo "i686 features enabled ${i686-no}"
6695 echo "CMOV is fast ${fast_cmov-no}"
6696 echo "EBX available ${ebx_available-no}"
6697 echo "EBP available ${ebp_available-no}"
6699 if enabled aarch64; then
6700 echo "NEON enabled ${neon-no}"
6701 echo "VFP enabled ${vfp-no}"
6703 if enabled arm; then
6704 echo "ARMv5TE enabled ${armv5te-no}"
6705 echo "ARMv6 enabled ${armv6-no}"
6706 echo "ARMv6T2 enabled ${armv6t2-no}"
6707 echo "VFP enabled ${vfp-no}"
6708 echo "NEON enabled ${neon-no}"
6709 echo "THUMB enabled ${thumb-no}"
6711 if enabled mips; then
6712 echo "MIPS FPU enabled ${mipsfpu-no}"
6713 echo "MIPS DSP R1 enabled ${mipsdsp-no}"
6714 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
6715 echo "MIPS MSA enabled ${msa-no}"
6716 echo "LOONGSON MMI enabled ${mmi-no}"
6718 if enabled ppc; then
6719 echo "AltiVec enabled ${altivec-no}"
6720 echo "VSX enabled ${vsx-no}"
6721 echo "POWER8 enabled ${power8-no}"
6722 echo "PPC 4xx optimizations ${ppc4xx-no}"
6723 echo "dcbzl available ${dcbzl-no}"
6725 echo "debug symbols ${debug-no}"
6726 echo "strip symbols ${stripping-no}"
6727 echo "optimize for size ${small-no}"
6728 echo "optimizations ${optimizations-no}"
6729 echo "static ${static-no}"
6730 echo "shared ${shared-no}"
6731 echo "postprocessing support ${postproc-no}"
6732 echo "network support ${network-no}"
6733 echo "threading support ${thread_type-no}"
6734 echo "safe bitstream reader ${safe_bitstream_reader-no}"
6735 echo "texi2html enabled ${texi2html-no}"
6736 echo "perl enabled ${perl-no}"
6737 echo "pod2man enabled ${pod2man-no}"
6738 echo "makeinfo enabled ${makeinfo-no}"
6739 echo "makeinfo supports HTML ${makeinfo_html-no}"
6740 test -n "$random_seed" &&
6741 echo "random seed ${random_seed}"
6744 echo "External libraries:"
6745 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_in_columns
6748 echo "External libraries providing hardware acceleration:"
6749 print_enabled '' $HWACCEL_LIBRARY_LIST | print_in_columns
6753 print_enabled '' $LIBRARY_LIST | print_in_columns
6757 print_enabled '' $PROGRAM_LIST | print_in_columns
6760 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
6761 echo "Enabled ${type}s:"
6762 eval list=\$$(toupper $type)_LIST
6763 print_enabled '_*' $list | print_in_columns
6767 if test -n "$ignore_tests"; then
6768 ignore_tests=$(echo $ignore_tests | tr ',' ' ')
6769 echo "Ignored FATE tests:"
6770 echo $ignore_tests | print_in_columns
6774 echo "License: $license"
6776 echo "Creating configuration files ..."
6778 fi # test "$quiet" != "yes"
6780 test -e Makefile || echo "include $source_path/Makefile" > Makefile
6782 enabled stripping || strip="echo skipping strip"
6784 config_files="$TMPH ffbuild/config.mak doc/config.texi"
6786 cat > ffbuild/config.mak <<EOF
6787 # Automatically generated by configure - do not modify!
6788 ifndef FFMPEG_CONFIG_MAK
6790 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
6792 LIBDIR=\$(DESTDIR)$libdir
6793 SHLIBDIR=\$(DESTDIR)$shlibdir
6794 INCDIR=\$(DESTDIR)$incdir
6795 BINDIR=\$(DESTDIR)$bindir
6796 DATADIR=\$(DESTDIR)$datadir
6797 DOCDIR=\$(DESTDIR)$docdir
6798 MANDIR=\$(DESTDIR)$mandir
6799 PKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir
6800 INSTALL_NAME_DIR=$install_name_dir
6801 SRC_PATH=$source_path
6802 SRC_LINK=$source_link
6803 ifndef MAIN_MAKEFILE
6804 SRC_PATH:=\$(SRC_PATH:.%=..%)
6808 INTRINSICS=$intrinsics
6815 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
6817 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
6819 DEPX86ASM=$x86asmexe
6820 DEPX86ASMFLAGS=\$(X86ASMFLAGS)
6832 OBJCFLAGS=$OBJCFLAGS
6834 NVCCFLAGS=$nvccflags
6856 LDEXEFLAGS=$LDEXEFLAGS
6857 LDLIBFLAGS=$LDLIBFLAGS
6858 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
6859 ASMSTRIPFLAGS=$ASMSTRIPFLAGS
6860 X86ASMFLAGS=$X86ASMFLAGS
6861 BUILDSUF=$build_suffix
6862 PROGSSUF=$progs_suffix
6870 EXTRA_VERSION=$extra_version
6873 CCDEP_FLAGS=$CCDEP_FLAGS
6875 ASDEP_FLAGS=$ASDEP_FLAGS
6876 X86ASMDEP=$X86ASMDEP
6877 X86ASMDEP_FLAGS=$X86ASMDEP_FLAGS
6878 CC_DEPFLAGS=$CC_DEPFLAGS
6879 AS_DEPFLAGS=$AS_DEPFLAGS
6880 X86ASM_DEPFLAGS=$X86ASM_DEPFLAGS
6883 HOSTCFLAGS=$host_cflags
6884 HOSTCPPFLAGS=$host_cppflags
6885 HOSTEXESUF=$HOSTEXESUF
6886 HOSTLDFLAGS=$host_ldflags
6887 HOSTEXTRALIBS=$host_extralibs
6889 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
6890 HOSTCCDEP=$HOSTCCDEP
6891 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
6892 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
6896 TARGET_EXEC=$target_exec $target_exec_args
6897 TARGET_PATH=$target_path
6898 TARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
6899 CFLAGS-ffplay=${sdl2_cflags}
6900 CFLAGS_HEADERS=$CFLAGS_HEADERS
6901 ZLIB=$($ldflags_filter -lz)
6902 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
6903 EXTRALIBS=$extralibs
6904 COMPAT_OBJS=$compat_objs
6906 LIBTARGET=${LIBTARGET}
6907 SLIBNAME=${SLIBNAME}
6908 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
6909 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
6910 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
6911 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
6912 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
6913 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
6914 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
6915 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
6916 VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
6917 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
6918 NOREDZONE_FLAGS=$noredzone_flags
6919 LIBFUZZER_PATH=$libfuzzer_path
6920 IGNORE_TESTS=$ignore_tests
6923 map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST
6925 print_program_extralibs(){
6926 eval "program_extralibs=\$${1}_extralibs"
6927 eval echo "EXTRALIBS-${1}=${program_extralibs}" >> ffbuild/config.mak
6930 map 'print_program_extralibs $v' $PROGRAM_LIST
6933 /* Automatically generated by configure - do not modify! */
6934 #ifndef FFMPEG_CONFIG_H
6935 #define FFMPEG_CONFIG_H
6936 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
6937 #define FFMPEG_LICENSE "$(c_escape $license)"
6938 #define CONFIG_THIS_YEAR 2017
6939 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
6940 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
6941 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
6942 #define av_restrict $_restrict
6943 #define EXTERN_PREFIX "${extern_prefix}"
6944 #define EXTERN_ASM ${extern_prefix}
6945 #define BUILDSUF "$build_suffix"
6946 #define SLIBSUF "$SLIBSUF"
6947 #define HAVE_MMX2 HAVE_MMXEXT
6948 #define SWS_MAX_FILTER_SIZE $sws_max_filter_size
6951 test -n "$assert_level" &&
6952 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
6954 test -n "$malloc_prefix" &&
6955 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
6957 if enabled x86asm; then
6958 append config_files $TMPASM
6962 enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
6968 echo "@c auto-generated by configure - do not modify! " > doc/config.texi
6970 print_config ARCH_ "$config_files" $ARCH_LIST
6971 print_config HAVE_ "$config_files" $HAVE_LIST
6972 print_config CONFIG_ "$config_files" $CONFIG_LIST \
6976 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
6977 echo "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak
6979 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
6980 cp_if_changed $TMPH config.h
6981 touch ffbuild/.config
6983 enabled x86asm && cp_if_changed $TMPASM config.asm
6986 /* Generated by ffconf */
6987 #ifndef AVUTIL_AVCONFIG_H
6988 #define AVUTIL_AVCONFIG_H
6991 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
6993 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
6995 cp_if_changed $TMPH libavutil/avconfig.h
6997 # generate the lists of enabled components
6998 print_enabled_components(){
7003 echo "static const $struct_name *$name[] = {" > $TMPH
7005 enabled $c && printf " &ff_%s,\n" $c >> $TMPH
7007 echo " NULL };" >> $TMPH
7008 cp_if_changed $TMPH $file
7011 print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
7012 print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
7014 if test -n "$WARNINGS"; then
7015 printf "\n%s%s$WARNINGS%s" "$warn_color" "$bold_color" "$reset_color"
7016 enabled fatal_warnings && exit 1
7019 # Settings for pkg-config files
7021 cat > ffbuild/config.sh <<EOF
7022 # Automatically generated by configure - do not modify!
7024 build_suffix=$build_suffix
7028 rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}")
7029 source_path=${source_path}
7033 extralibs_avutil="$LIBRT $LIBM"
7034 extralibs_avcodec="$extralibs"
7035 extralibs_avformat="$extralibs"
7036 extralibs_avdevice="$extralibs"
7037 extralibs_avfilter="$extralibs"
7038 extralibs_avresample="$LIBM"
7039 extralibs_postproc=""
7040 extralibs_swscale="$LIBM"
7041 extralibs_swresample="$LIBM $LIBSOXR"
7044 for lib in $LIBRARY_LIST; do
7045 lib_deps="$(eval echo \$${lib}_deps)"
7046 echo ${lib}_deps=\"$lib_deps\" >> ffbuild/config.sh