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 --enable-raise-major increase major version numbers in sonames [no]
115 --disable-programs do not build command line programs
116 --disable-ffmpeg disable ffmpeg build
117 --disable-ffplay disable ffplay build
118 --disable-ffprobe disable ffprobe build
119 --disable-ffserver disable ffserver build
121 Documentation options:
122 --disable-doc do not build documentation
123 --disable-htmlpages do not build HTML documentation pages
124 --disable-manpages do not build man documentation pages
125 --disable-podpages do not build POD documentation pages
126 --disable-txtpages do not build text documentation pages
129 --disable-avdevice disable libavdevice build
130 --disable-avcodec disable libavcodec build
131 --disable-avformat disable libavformat build
132 --disable-swresample disable libswresample build
133 --disable-swscale disable libswscale build
134 --disable-postproc disable libpostproc build
135 --disable-avfilter disable libavfilter build
136 --enable-avresample enable libavresample build [no]
137 --disable-pthreads disable pthreads [autodetect]
138 --disable-w32threads disable Win32 threads [autodetect]
139 --disable-os2threads disable OS/2 threads [autodetect]
140 --disable-network disable network support [no]
141 --disable-dct disable DCT code
142 --disable-dwt disable DWT code
143 --disable-error-resilience disable error resilience code
144 --disable-lsp disable LSP code
145 --disable-lzo disable LZO decoder code
146 --disable-mdct disable MDCT code
147 --disable-rdft disable RDFT code
148 --disable-fft disable FFT code
149 --disable-faan disable floating point AAN (I)DCT code
150 --disable-pixelutils disable pixel utils in libavutil
152 Individual component options:
153 --disable-everything disable all components listed below
154 --disable-encoder=NAME disable encoder NAME
155 --enable-encoder=NAME enable encoder NAME
156 --disable-encoders disable all encoders
157 --disable-decoder=NAME disable decoder NAME
158 --enable-decoder=NAME enable decoder NAME
159 --disable-decoders disable all decoders
160 --disable-hwaccel=NAME disable hwaccel NAME
161 --enable-hwaccel=NAME enable hwaccel NAME
162 --disable-hwaccels disable all hwaccels
163 --disable-muxer=NAME disable muxer NAME
164 --enable-muxer=NAME enable muxer NAME
165 --disable-muxers disable all muxers
166 --disable-demuxer=NAME disable demuxer NAME
167 --enable-demuxer=NAME enable demuxer NAME
168 --disable-demuxers disable all demuxers
169 --enable-parser=NAME enable parser NAME
170 --disable-parser=NAME disable parser NAME
171 --disable-parsers disable all parsers
172 --enable-bsf=NAME enable bitstream filter NAME
173 --disable-bsf=NAME disable bitstream filter NAME
174 --disable-bsfs disable all bitstream filters
175 --enable-protocol=NAME enable protocol NAME
176 --disable-protocol=NAME disable protocol NAME
177 --disable-protocols disable all protocols
178 --enable-indev=NAME enable input device NAME
179 --disable-indev=NAME disable input device NAME
180 --disable-indevs disable input devices
181 --enable-outdev=NAME enable output device NAME
182 --disable-outdev=NAME disable output device NAME
183 --disable-outdevs disable output devices
184 --disable-devices disable all devices
185 --enable-filter=NAME enable filter NAME
186 --disable-filter=NAME disable filter NAME
187 --disable-filters disable all filters
189 External library support:
191 Using any of the following switches will allow FFmpeg to link to the
192 corresponding external library. All the components depending on that library
193 will become enabled, if all their other dependencies are met and they are not
194 explicitly disabled. E.g. --enable-libwavpack will enable linking to
195 libwavpack and allow the libwavpack encoder to be built, unless it is
196 specifically disabled with --disable-encoder=libwavpack.
198 Note that only the system libraries are auto-detected. All the other external
199 libraries must be explicitly enabled.
201 Also note that the following help text describes the purpose of the libraries
202 themselves, not all their features will necessarily be usable by FFmpeg.
204 --enable-avisynth enable reading of AviSynth script files [no]
205 --disable-bzlib disable bzlib [autodetect]
206 --enable-chromaprint enable audio fingerprinting with chromaprint [no]
207 --enable-frei0r enable frei0r video filtering [no]
208 --enable-gcrypt enable gcrypt, needed for rtmp(t)e support
209 if openssl, librtmp or gmp is not used [no]
210 --enable-gmp enable gmp, needed for rtmp(t)e support
211 if openssl or librtmp is not used [no]
212 --enable-gnutls enable gnutls, needed for https support
213 if openssl is not used [no]
214 --disable-iconv disable iconv [autodetect]
215 --enable-jni enable JNI support [no]
216 --enable-ladspa enable LADSPA audio filtering [no]
217 --enable-libass enable libass subtitles rendering,
218 needed for subtitles and ass filter [no]
219 --enable-libbluray enable BluRay reading using libbluray [no]
220 --enable-libbs2b enable bs2b DSP library [no]
221 --enable-libcaca enable textual display using libcaca [no]
222 --enable-libcelt enable CELT decoding via libcelt [no]
223 --enable-libcdio enable audio CD grabbing with libcdio [no]
224 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
226 --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
227 --enable-libflite enable flite (voice synthesis) support via libflite [no]
228 --enable-libfontconfig enable libfontconfig, useful for drawtext filter [no]
229 --enable-libfreetype enable libfreetype, needed for drawtext filter [no]
230 --enable-libfribidi enable libfribidi, improves drawtext filter [no]
231 --enable-libgme enable Game Music Emu via libgme [no]
232 --enable-libgsm enable GSM de/encoding via libgsm [no]
233 --enable-libiec61883 enable iec61883 via libiec61883 [no]
234 --enable-libilbc enable iLBC de/encoding via libilbc [no]
235 --enable-libkvazaar enable HEVC encoding via libkvazaar [no]
236 --enable-libmodplug enable ModPlug via libmodplug [no]
237 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
238 --enable-libnut enable NUT (de)muxing via libnut,
239 native (de)muxer exists [no]
240 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
241 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
242 --enable-libopencv enable video filtering via libopencv [no]
243 --enable-libopenh264 enable H.264 encoding via OpenH264 [no]
244 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
245 --enable-libopenmpt enable decoding tracked files via libopenmpt [no]
246 --enable-libopus enable Opus de/encoding via libopus [no]
247 --enable-libpulse enable Pulseaudio input via libpulse [no]
248 --enable-librubberband enable rubberband needed for rubberband filter [no]
249 --enable-librtmp enable RTMP[E] support via librtmp [no]
250 --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
251 --enable-libshine enable fixed-point MP3 encoding via libshine [no]
252 --enable-libsmbclient enable Samba protocol via libsmbclient [no]
253 --enable-libsnappy enable Snappy compression, needed for hap encoding [no]
254 --enable-libsoxr enable Include libsoxr resampling [no]
255 --enable-libspeex enable Speex de/encoding via libspeex [no]
256 --enable-libssh enable SFTP protocol via libssh [no]
257 --enable-libtesseract enable Tesseract, needed for ocr filter [no]
258 --enable-libtheora enable Theora encoding via libtheora [no]
259 --enable-libtwolame enable MP2 encoding via libtwolame [no]
260 --enable-libv4l2 enable libv4l2/v4l-utils [no]
261 --enable-libvidstab enable video stabilization using vid.stab [no]
262 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
263 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
264 native implementation exists [no]
265 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
266 --enable-libwavpack enable wavpack encoding via libwavpack [no]
267 --enable-libwebp enable WebP encoding via libwebp [no]
268 --enable-libx264 enable H.264 encoding via x264 [no]
269 --enable-libx265 enable HEVC encoding via x265 [no]
270 --enable-libxavs enable AVS encoding via xavs [no]
271 --enable-libxcb enable X11 grabbing using XCB [autodetect]
272 --enable-libxcb-shm enable X11 grabbing shm communication [autodetect]
273 --enable-libxcb-xfixes enable X11 grabbing mouse rendering [autodetect]
274 --enable-libxcb-shape enable X11 grabbing shape rendering [autodetect]
275 --enable-libxvid enable Xvid encoding via xvidcore,
276 native MPEG-4/Xvid encoder exists [no]
277 --enable-libzimg enable z.lib, needed for zscale filter [no]
278 --enable-libzmq enable message passing via libzmq [no]
279 --enable-libzvbi enable teletext support via libzvbi [no]
280 --disable-lzma disable lzma [autodetect]
281 --enable-decklink enable Blackmagic DeckLink I/O support [no]
282 --enable-mediacodec enable Android MediaCodec support [no]
283 --enable-netcdf enable NetCDF, needed for sofalizer filter [no]
284 --enable-openal enable OpenAL 1.1 capture support [no]
285 --enable-opencl enable OpenCL code
286 --enable-opengl enable OpenGL rendering [no]
287 --enable-openssl enable openssl, needed for https support
288 if gnutls is not used [no]
289 --disable-schannel disable SChannel SSP, needed for TLS support on
290 Windows if openssl and gnutls are not used [autodetect]
291 --disable-sdl2 disable sdl2 [autodetect]
292 --disable-securetransport disable Secure Transport, needed for TLS support
293 on OSX if openssl and gnutls are not used [autodetect]
294 --disable-xlib disable xlib [autodetect]
295 --disable-zlib disable zlib [autodetect]
297 The following libraries provide various hardware acceleration features:
298 --disable-audiotoolbox disable Apple AudioToolbox code [autodetect]
299 --disable-cuda disable dynamically linked Nvidia CUDA code [autodetect]
300 --enable-cuda-sdk enable CUDA features that require the CUDA SDK [no]
301 --disable-cuvid disable Nvidia CUVID support [autodetect]
302 --disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect]
303 --disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect]
304 --enable-libmfx enable Intel MediaSDK (AKA Quick Sync Video) code via libmfx [no]
305 --enable-libnpp enable Nvidia Performance Primitives-based code [no]
306 --enable-mmal enable Broadcom Multi-Media Abstraction Layer (Raspberry Pi) via MMAL [no]
307 --disable-nvenc disable Nvidia video encoding code [autodetect]
308 --enable-omx enable OpenMAX IL code [no]
309 --enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no]
310 --disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
311 --disable-vda disable Apple Video Decode Acceleration code [autodetect]
312 --disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
313 --disable-videotoolbox disable VideoToolbox code [autodetect]
316 --arch=ARCH select architecture [$arch]
317 --cpu=CPU select the minimum required CPU (affects
318 instruction selection, may crash on older CPUs)
319 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
320 --progs-suffix=SUFFIX program name suffix []
321 --enable-cross-compile assume a cross-compiler is used
322 --sysroot=PATH root of cross-build tree
323 --sysinclude=PATH location of cross-build system headers
324 --target-os=OS compiler targets OS [$target_os]
325 --target-exec=CMD command to run executables on target
326 --target-path=DIR path to view of build directory on target
327 --target-samples=DIR path to samples directory on target
328 --tempprefix=PATH force fixed dir/prefix instead of mktemp for checks
329 --toolchain=NAME set tool defaults according to NAME
330 --nm=NM use nm tool NM [$nm_default]
331 --ar=AR use archive tool AR [$ar_default]
332 --as=AS use assembler AS [$as_default]
333 --ln_s=LN_S use symbolic link tool LN_S [$ln_s_default]
334 --strip=STRIP use strip tool STRIP [$strip_default]
335 --windres=WINDRES use windows resource compiler WINDRES [$windres_default]
336 --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
337 --cc=CC use C compiler CC [$cc_default]
338 --cxx=CXX use C compiler CXX [$cxx_default]
339 --objcc=OCC use ObjC compiler OCC [$cc_default]
340 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
341 --ld=LD use linker LD [$ld_default]
342 --pkg-config=PKGCONFIG use pkg-config tool PKGCONFIG [$pkg_config_default]
343 --pkg-config-flags=FLAGS pass additional flags to pkgconf []
344 --ranlib=RANLIB use ranlib RANLIB [$ranlib_default]
345 --doxygen=DOXYGEN use DOXYGEN to generate API doc [$doxygen_default]
346 --host-cc=HOSTCC use host C compiler HOSTCC
347 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
348 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
349 --host-ld=HOSTLD use host linker HOSTLD
350 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
351 --host-libs=HLIBS use libs HLIBS when linking for host
352 --host-os=OS compiler host OS [$target_os]
353 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
354 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
355 --extra-objcflags=FLAGS add FLAGS to OBJCFLAGS [$CFLAGS]
356 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
357 --extra-ldexeflags=ELDFLAGS add ELDFLAGS to LDEXEFLAGS [$LDEXEFLAGS]
358 --extra-ldlibflags=ELDFLAGS add ELDFLAGS to LDLIBFLAGS [$LDLIBFLAGS]
359 --extra-libs=ELIBS add ELIBS [$ELIBS]
360 --extra-version=STRING version string suffix []
361 --optflags=OPTFLAGS override optimization-related compiler flags
362 --build-suffix=SUFFIX library name suffix []
363 --enable-pic build position-independent code
364 --enable-thumb compile for Thumb instruction set
365 --enable-lto use link-time optimization
366 --env="ENV=override" override the environment variables
368 Advanced options (experts only):
369 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
370 --custom-allocator=NAME use a supported custom allocator
371 --disable-symver disable symbol versioning
372 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
373 --disable-safe-bitstream-reader
374 disable buffer boundary checking in bitreaders
375 (faster, but may crash)
376 --sws-max-filter-size=N the max filter size swscale uses [$sws_max_filter_size_default]
378 Optimization options (experts only):
379 --disable-asm disable all assembly optimizations
380 --disable-altivec disable AltiVec optimizations
381 --disable-vsx disable VSX optimizations
382 --disable-power8 disable POWER8 optimizations
383 --disable-amd3dnow disable 3DNow! optimizations
384 --disable-amd3dnowext disable 3DNow! extended optimizations
385 --disable-mmx disable MMX optimizations
386 --disable-mmxext disable MMXEXT optimizations
387 --disable-sse disable SSE optimizations
388 --disable-sse2 disable SSE2 optimizations
389 --disable-sse3 disable SSE3 optimizations
390 --disable-ssse3 disable SSSE3 optimizations
391 --disable-sse4 disable SSE4 optimizations
392 --disable-sse42 disable SSE4.2 optimizations
393 --disable-avx disable AVX optimizations
394 --disable-xop disable XOP optimizations
395 --disable-fma3 disable FMA3 optimizations
396 --disable-fma4 disable FMA4 optimizations
397 --disable-avx2 disable AVX2 optimizations
398 --disable-aesni disable AESNI optimizations
399 --disable-armv5te disable armv5te optimizations
400 --disable-armv6 disable armv6 optimizations
401 --disable-armv6t2 disable armv6t2 optimizations
402 --disable-vfp disable VFP optimizations
403 --disable-neon disable NEON optimizations
404 --disable-inline-asm disable use of inline assembly
405 --disable-yasm disable use of nasm/yasm assembly
406 --disable-mipsdsp disable MIPS DSP ASE R1 optimizations
407 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
408 --disable-msa disable MSA optimizations
409 --disable-mipsfpu disable floating point MIPS optimizations
410 --disable-mmi disable Loongson SIMD optimizations
411 --disable-fast-unaligned consider unaligned accesses slow
413 Developer options (useful when working on FFmpeg itself):
414 --disable-debug disable debugging symbols
415 --enable-debug=LEVEL set the debug level [$debuglevel]
416 --disable-optimizations disable compiler optimizations
417 --enable-extra-warnings enable more compiler warnings
418 --disable-stripping disable stripping of executables and shared libraries
419 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
420 2 causes a slowdown at runtime.
421 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
422 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
423 leaks and errors, using the specified valgrind binary.
424 Cannot be combined with --target-exec
425 --enable-ftrapv Trap arithmetic overflows
426 --samples=PATH location of test samples for FATE, if not set use
427 \$FATE_SAMPLES at make invocation time.
428 --enable-neon-clobber-test check NEON registers for clobbering (should be
429 used only for debugging purposes)
430 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
431 should be used only for debugging purposes)
432 --enable-random randomly enable/disable components
434 --enable-random=LIST randomly enable/disable specific components or
435 --disable-random=LIST component groups. LIST is a comma-separated list
436 of NAME[:PROB] entries where NAME is a component
437 (group) and PROB the probability associated with
439 --random-seed=VALUE seed value for --enable/disable-random
440 --disable-valgrind-backtrace do not print a backtrace under Valgrind
441 (only applies to --disable-optimizations builds)
442 --enable-osfuzz Enable building fuzzer tool
443 --libfuzzer=PATH path to libfuzzer
444 --ignore-tests=TESTS comma-separated list (without "fate-" prefix
445 in the name) of tests whose result is ignored
447 NOTE: Object files are built at the place where configure is launched.
453 if test -t 1 && which tput >/dev/null 2>&1; then
454 ncolors=$(tput colors)
455 if test -n "$ncolors" && test $ncolors -ge 8; then
456 bold_color=$(tput bold)
457 warn_color=$(tput setaf 3)
458 error_color=$(tput setaf 1)
459 reset_color=$(tput sgr0)
461 # 72 used instead of 80 since that's the default of pr
467 echo "$@" >> $logfile
472 pr -n -t $1 >> $logfile
478 WARNINGS="${WARNINGS}WARNING: $*\n"
483 echo "$error_color$bold_color$@$reset_color"
486 If you think configure made a mistake, make sure you are using the latest
487 version from Git. If the latest version fails, report the problem to the
488 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
490 if disabled logging; then
492 Rerun configure with logging enabled (do not use --disable-logging), and
493 include the log this produces with your report.
497 Include the log file "$logfile" produced by configure as this will help
504 # Avoid locale weirdness, besides we really just want to translate ASCII.
506 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
510 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
514 echo "$*" | sed 's/["\\]/\\\0/g'
518 v=$(echo "$1" | sed "s/'/'\\\\''/g")
519 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
524 echo "$@" | sed 's/^ *//;s/[[:space:]][[:space:]]*/ /g;s/ *$//'
531 eval "case $v in $pat) printf '%s ' $v ;; esac"
539 eval "case $v in $pat) ;; *) printf '%s ' $v ;; esac"
546 for v; do eval $m; done
552 for v; do echo ${v}${suffix}; done
567 eval : \${$var:=$value}
572 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
578 eval $(sanitize_var_name "$var")='$*'
582 eval echo \$$(sanitize_var_name "$1")
587 eval level=\${${pvar}_level:=0}
588 eval ${pvar}_${level}="\$$pvar"
589 eval ${pvar}_level=$(($level+1))
595 eval level=\${${pvar}_level:-0}
596 test $level = 0 && continue
597 eval level=$(($level-1))
598 eval $pvar="\${${pvar}_${level}}"
599 eval ${pvar}_level=$level
600 eval unset ${pvar}_${level}
606 eval ${var}_requested=yes
629 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
635 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
641 enabled $var && continue
642 eval sel="\$${var}_select"
643 eval sgs="\$${var}_suggest"
647 enable_deep_weak $sgs
659 disabled $var && continue
668 test "${1#!}" = "$1" && op='=' || op=!=
669 eval test "x\$${1#!}_requested" $op "xyes"
673 test "${1#!}" = "$1" && op='=' || op=!=
674 eval test "x\$${1#!}" $op "xyes"
678 test "${1#!}" = "$1" && op='=' || op=!=
679 eval test "x\$${1#!}" $op "xno"
684 enabled $opt || return 1
690 disabled $opt || return 1
696 enabled $opt && return 0
702 disabled $opt && return 0
709 eval : \${$opt:=\$${opt}_default}
717 [ $var = $value ] && return 0
725 enabled ${cfg}_checking && die "Circular dependency for $cfg."
726 disabled ${cfg}_checking && continue
727 enable ${cfg}_checking
730 eval dep_all="\$${cfg}_deps"
731 eval dep_any="\$${cfg}_deps_any"
732 eval dep_sel="\$${cfg}_select"
733 eval dep_sgs="\$${cfg}_suggest"
734 eval dep_ifa="\$${cfg}_if"
735 eval dep_ifn="\$${cfg}_if_any"
737 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
738 do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
739 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
741 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
742 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
743 enabled_all $dep_all || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but not all dependencies are satisfied: $dep_all"; }
744 enabled_any $dep_any || { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but not any dependency is satisfied: $dep_any"; }
745 disabled_any $dep_sel && { disable $cfg && requested $cfg && die "ERROR: $cfg requested, but some selected dependency is unsatisfied: $dep_sel"; }
747 if enabled $cfg; then
749 enable_deep_weak $dep_sgs
752 disable ${cfg}_checking
761 for cfg in $allopts; do
762 enabled $cfg || continue
763 eval dep_extralibs="\$${cfg}_extralibs"
764 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
772 map 'eval echo "$v \${$v:-no}"' "$@" |
773 awk "BEGIN { split(\"$files\", files) }
775 c = \"$pfx\" toupper(\$1);
781 if (file ~ /\\.h\$/) {
782 printf(\"#define %s %d\\n\", c, v) >>file;
783 } else if (file ~ /\\.asm\$/) {
784 printf(\"%%define %s %d\\n\", c, v) >>file;
785 } else if (file ~ /\\.mak\$/) {
786 n = -v ? \"\" : \"!\";
787 printf(\"%s%s=yes\\n\", n, c) >>file;
788 } else if (file ~ /\\.texi\$/) {
789 pre = -v ? \"\" : \"@c \";
792 gsub(/_/, \"-\", c2);
793 printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
803 enabled $v && printf "%s\n" ${v%$suf}
810 eval "$var=\"\$$var $*\""
816 eval "$var=\"$* \$$var\""
822 for tok in $(eval echo \$$var); do
823 uniq_list="$(filter_out $tok $uniq_list) $tok"
825 eval "$var=\"${uniq_list}\""
833 append CFLAGS $($cflags_filter "$@")
836 add_cflags_headers(){
837 append CFLAGS_HEADERS $($cflags_filter "$@")
841 append CXXFLAGS $($cflags_filter "$@")
845 append ASFLAGS $($asflags_filter "$@")
849 append OBJCFLAGS $($objcflags_filter "$@")
853 append LDFLAGS $($ldflags_filter "$@")
857 append LDEXEFLAGS $($ldflags_filter "$@")
861 append LDLIBFLAGS $($ldflags_filter "$@")
865 append ASMSTRIPFLAGS "$@"
869 prepend extralibs $($ldflags_filter "$@")
873 append host_cppflags "$@"
877 append host_cflags $($host_cflags_filter "$@")
881 append host_ldflags $($host_ldflags_filter "$@")
885 append compat_objs $1
887 map 'add_cppflags -D$v' "$@"
892 "$@" >> $logfile 2>&1
897 stat "$1" >> $logfile 2>&1
901 eval printf '%s\\n' $CC_O
905 eval printf '%s\\n' $CC_E
912 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
919 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
926 check_cmd $objcc -Werror=missing-prototypes $CPPFLAGS $CFLAGS $OBJCFLAGS "$@" $OBJCC_C $(cc_o $TMPO) $TMPM
933 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
937 eval printf '%s\\n' $AS_O
944 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
948 log check_inline_asm "$@"
953 check_cc "$@" <<EOF && enable $name
954 void foo(void){ __asm__ volatile($code); }
958 check_inline_asm_flags(){
959 log check_inline_asm_flags "$@"
964 while [ "$1" != "" ]; do
970 void foo(void){ __asm__ volatile($code); }
973 check_cmd $cc $CPPFLAGS $CFLAGS $flags "$@" $CC_C $(cc_o $TMPO) $TMPC &&
974 enable $name && add_cflags $flags && add_asflags $flags && add_ldflags $flags
979 check_inline_asm ${1}_inline "\"$2\""
980 echo "$2" | check_as && enable ${1}_external || disable ${1}_external
988 check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
992 eval printf '%s\\n' $LD_O
999 flags=$(filter_out '-l*|*.so' $@)
1000 libs=$(filter '-l*|*.so' $@)
1001 check_$type $($cflags_filter $flags) || return
1002 flags=$($ldflags_filter $flags)
1003 libs=$($ldflags_filter $libs)
1004 check_cmd $ld $LDFLAGS $LDEXEFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
1009 test "${hdr%.h}" = "${hdr}" &&
1010 echo "#include $hdr" ||
1011 echo "#include <$hdr>"
1021 for hdr in $headers; do
1024 echo "int main(void) { $code; return 0; }"
1025 } | check_$check "$@"
1029 log check_cppflags "$@"
1030 check_cpp "$@" <<EOF && append CPPFLAGS "$@"
1036 log test_cflags "$@"
1037 set -- $($cflags_filter "$@")
1044 log check_cflags "$@"
1045 test_cflags "$@" && add_cflags "$@"
1049 log check_cxxflags "$@"
1050 set -- $($cflags_filter "$@")
1051 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
1057 log test_objcflags "$@"
1058 set -- $($objcflags_filter "$@")
1059 check_objcc "$@" <<EOF
1065 log check_objcflags "$@"
1066 test_objcflags "$@" && add_objcflags "$@"
1070 log test_ldflags "$@"
1071 check_ld "cc" "$@" <<EOF
1072 int main(void){ return 0; }
1077 log check_ldflags "$@"
1078 test_ldflags "$@" && add_ldflags "$@"
1082 log test_stripflags "$@"
1083 # call check_cc to get a fresh TMPO
1085 int main(void) { return 0; }
1087 check_cmd $strip $ASMSTRIPFLAGS "$@" $TMPO
1091 log check_stripflags "$@"
1092 test_stripflags "$@" && add_stripflags "$@"
1096 log check_header "$@"
1099 disable_safe $header
1100 check_cpp "$@" <<EOF && enable_safe $header
1106 check_header_objcc(){
1107 log check_header_objcc "$@"
1111 disable_safe $header
1113 echo "#include <$header>"
1114 echo "int main(void) { return 0; }"
1115 } | check_objcc && check_stat "$TMPO" && enable_safe $headers
1123 check_ld "cc" "$@" <<EOF && enable $func
1125 int main(void){ $func(); }
1129 check_complexfunc(){
1130 log check_complexfunc "$@"
1134 test $narg = 2 && args="f, g" || args="f * I"
1136 check_ld "cc" "$@" <<EOF && enable $func
1137 #include <complex.h>
1139 float foo(complex float f, complex float g) { return $func($args); }
1140 int main(void){ return (int) foo; }
1145 log check_mathfunc "$@"
1149 test $narg = 2 && args="f, g" || args="f"
1151 check_ld "cc" "$@" <<EOF && enable $func
1153 float foo(float f, float g) { return $func($args); }
1154 int main(void){ return (int) foo; }
1158 check_func_headers(){
1159 log check_func_headers "$@"
1164 for hdr in $headers; do
1167 echo "#include <stdint.h>"
1168 for func in $funcs; do
1169 echo "long check_$func(void) { return (long) $func; }"
1171 echo "int main(void) { int ret = 0;"
1172 # LTO could optimize out the test functions without this
1173 for func in $funcs; do
1174 echo " ret |= ((intptr_t)check_$func) & 0xFFFF;"
1176 echo "return ret; }"
1177 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
1180 check_class_headers_cpp(){
1181 log check_class_headers_cpp "$@"
1186 for hdr in $headers; do
1187 echo "#include <$hdr>"
1189 echo "int main(void) { "
1191 for class in $classes; do
1192 echo "$class obj$i;"
1196 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
1199 check_cpp_condition(){
1200 log check_cpp_condition "$@"
1204 check_cpp "$@" <<EOF
1207 #error "unsatisfied condition: $condition"
1213 log test_cflags_cc "$@"
1218 set -- $($cflags_filter "$flags")
1222 #error "unsatisfied condition: $condition"
1234 check_func_headers "$headers" "$funcs" "$@" &&
1235 enable $name && add_extralibs "$@"
1239 log check_lib_cpp "$@"
1243 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
1247 log check_pkg_config "$@"
1253 check_cmd $pkg_config --exists --print-errors $pkg_version || return
1254 pkg_cflags=$($pkg_config --cflags $pkg_config_flags $pkg)
1255 pkg_libs=$($pkg_config --libs $pkg_config_flags $pkg)
1256 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
1257 set_safe "${pkg}_cflags" $pkg_cflags &&
1258 set_safe "${pkg}_extralibs" $pkg_libs
1262 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
1266 log check_exec_crash "$@"
1269 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1270 # are safe but may not be available everywhere. Thus we use
1271 # raise(SIGTERM) instead. The check is run in a subshell so we
1272 # can redirect the "Terminated" message from the shell. SIGBUS
1273 # is not defined by standard C so it is used conditionally.
1275 (check_exec "$@") >> $logfile 2>&1 <<EOF
1277 static void sighandler(int sig){
1283 int (*func_ptr)(void) = foo;
1285 signal(SIGILL, sighandler);
1286 signal(SIGFPE, sighandler);
1287 signal(SIGSEGV, sighandler);
1289 signal(SIGBUS, sighandler);
1301 disable_safe "$type"
1302 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
1306 log check_struct "$@"
1311 disable_safe "${struct}_${member}"
1312 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1313 enable_safe "${struct}_${member}"
1317 log check_builtin "$@"
1323 check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1326 check_compile_assert(){
1327 log check_compile_assert "$@"
1333 check_code cc "$headers" "char c[2 * !!($condition) - 1]" "$@" && enable "$name"
1343 check_lib $name "$headers" $func "$@" || die "ERROR: $name_version not found"
1351 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1355 log use_pkg_config "$@"
1357 check_pkg_config "$@" || return 1
1358 add_cflags $(get_safe "${pkg}_cflags")
1359 add_extralibs $(get_safe "${pkg}_extralibs")
1362 require_pkg_config(){
1363 use_pkg_config "$@" || die "ERROR: $pkg not found using pkg-config$pkg_config_fail_message"
1367 eval printf '%s\\n' $HOSTCC_E
1371 eval printf '%s\\n' $HOSTCC_O
1375 log check_host_cc "$@"
1378 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1382 log check_host_cpp "$@"
1385 check_cmd $host_cc $host_cppflags $host_cflags "$@" $(hostcc_e $TMPO) $TMPC
1388 check_host_cppflags(){
1389 log check_host_cppflags "$@"
1390 check_host_cpp "$@" <<EOF && append host_cppflags "$@"
1395 check_host_cflags(){
1396 log check_host_cflags "$@"
1397 set -- $($host_cflags_filter "$@")
1398 check_host_cc "$@" <<EOF && append host_cflags "$@"
1403 check_host_cpp_condition(){
1404 log check_host_cpp_condition "$@"
1408 check_host_cpp "$@" <<EOF
1411 #error "unsatisfied condition: $condition"
1417 cmp -s "$1" "$2" && { test "$quiet" != "yes" && echo "$2 is unchanged"; } && return
1418 mkdir -p "$(dirname $2)"
1422 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1423 # system-dependent things.
1425 AVCODEC_COMPONENTS="
1433 AVDEVICE_COMPONENTS="
1437 AVFILTER_COMPONENTS="
1440 AVFORMAT_COMPONENTS="
1446 AVRESAMPLE_COMPONENTS=""
1447 AVUTIL_COMPONENTS=""
1451 $AVDEVICE_COMPONENTS
1452 $AVFILTER_COMPONENTS
1453 $AVFORMAT_COMPONENTS
1454 $AVRESAMPLE_COMPONENTS
1459 avio_dir_cmd_example
1460 avio_reading_example
1461 decode_audio_example
1462 decode_video_example
1463 demuxing_decoding_example
1464 encode_audio_example
1465 encode_video_example
1467 filter_audio_example
1468 filtering_audio_example
1469 filtering_video_example
1470 http_multiclient_example
1475 resampling_audio_example
1476 scaling_video_example
1477 transcode_aac_example
1480 EXTERNAL_AUTODETECT_LIBRARY_LIST="
1496 EXTERNAL_LIBRARY_GPL_LIST="
1508 EXTERNAL_LIBRARY_NONFREE_LIST="
1514 EXTERNAL_LIBRARY_VERSION3_LIST="
1521 EXTERNAL_LIBRARY_GPLV3_LIST="
1525 EXTERNAL_LIBRARY_LIST="
1526 $EXTERNAL_AUTODETECT_LIBRARY_LIST
1527 $EXTERNAL_LIBRARY_GPL_LIST
1528 $EXTERNAL_LIBRARY_NONFREE_LIST
1529 $EXTERNAL_LIBRARY_VERSION3_LIST
1530 $EXTERNAL_LIBRARY_GPLV3_LIST
1587 HWACCEL_AUTODETECT_LIBRARY_LIST="
1597 videotoolbox_hwaccel
1601 HWACCEL_LIBRARY_NONFREE_LIST="
1606 HWACCEL_LIBRARY_LIST="
1607 $HWACCEL_AUTODETECT_LIBRARY_LIST
1608 $HWACCEL_LIBRARY_NONFREE_LIST
1628 safe_bitstream_reader
1675 # COMPONENT_LIST needs to come last to ensure correct dependency checking
1679 $EXTERNAL_LIBRARY_LIST
1680 $HWACCEL_LIBRARY_LIST
1711 $EXTERNAL_AUTODETECT_LIBRARY_LIST
1712 $HWACCEL_AUTODETECT_LIBRARY_LIST
1754 ARCH_EXT_LIST_MIPS="
1766 ARCH_EXT_LIST_LOONGSON="
1772 ARCH_EXT_LIST_X86_SIMD="
1801 $ARCH_EXT_LIST_X86_SIMD
1811 $ARCH_EXT_LIST_LOONGSON
1834 sync_val_compare_and_swap
1853 cdio_paranoia_paranoia_h
1857 dev_bktr_ioctl_bt848_h
1858 dev_bktr_ioctl_meteor_h
1860 dev_video_bktr_ioctl_bt848_h
1861 dev_video_meteor_ioctl_meteor_h
1870 machine_ioctl_bt848_h
1871 machine_ioctl_meteor_h
1873 opencv2_core_core_c_h
1874 openjpeg_2_1_openjpeg_h
1875 openjpeg_2_0_openjpeg_h
1876 openjpeg_1_5_openjpeg_h
1955 GetProcessAffinityMask
1956 GetProcessMemoryInfo
1959 GetSystemTimeAsFileTime
1966 jack_port_get_latency_range
1983 SetConsoleTextAttribute
1984 SetConsoleCtrlHandler
1992 UTGetOSTypeFromString
1997 TOOLCHAIN_FEATURES="
2010 inline_asm_direct_symbol_refs
2012 inline_asm_nonlocal_labels
2023 CONDITION_VARIABLE_Ptr
2026 struct_group_source_req
2027 struct_ip_mreq_source
2029 struct_msghdr_msg_flags
2031 struct_rusage_ru_maxrss
2032 struct_sctp_event_subscribe
2034 struct_sockaddr_sa_len
2035 struct_sockaddr_storage
2036 struct_stat_st_mtim_tv_nsec
2037 struct_v4l2_frmivalenum_discrete
2042 $(add_suffix _external $ARCH_EXT_LIST)
2043 $(add_suffix _inline $ARCH_EXT_LIST)
2066 MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS
2080 # options emitted with CONFIG_ prefix but not available on the command line
2097 frame_thread_encoder
2251 # code dependency declarations
2253 # architecture extensions
2258 armv8_deps="aarch64"
2259 neon_deps_any="aarch64 arm"
2260 intrinsics_neon_deps="neon"
2261 vfp_deps_any="aarch64 arm"
2265 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
2267 loongson2_deps="mips"
2268 loongson3_deps="mips"
2271 mipsdspr2_deps="mips"
2272 mips32r2_deps="mips"
2273 mips32r5_deps="mips"
2274 mips32r6_deps="mips"
2275 mips64r2_deps="mips"
2276 mips64r6_deps="mips"
2288 x86_64_select="i686"
2289 x86_64_suggest="fast_cmov"
2292 amd3dnowext_deps="amd3dnow"
2309 mmx_external_deps="yasm"
2310 mmx_inline_deps="inline_asm"
2311 mmx_suggest="mmx_external mmx_inline"
2313 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86_SIMD); do
2314 eval dep=\$${ext}_deps
2315 eval ${ext}_external_deps='"${dep}_external"'
2316 eval ${ext}_inline_deps='"${dep}_inline"'
2317 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
2320 aligned_stack_if_any="aarch64 ppc x86"
2321 fast_64bit_if_any="aarch64 alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
2322 fast_clz_if_any="aarch64 alpha avr32 mips ppc x86"
2323 fast_unaligned_if_any="aarch64 ppc x86"
2324 simd_align_16_if_any="altivec neon sse"
2325 simd_align_32_if_any="avx"
2327 # system capabilities
2328 symver_if_any="symver_asm_label symver_gnu_asm"
2329 valgrind_backtrace_deps="!optimizations valgrind_valgrind_h"
2332 atomics_gcc_if="sync_val_compare_and_swap"
2333 atomics_suncc_if="atomic_cas_ptr machine_rw_barrier"
2334 atomics_win32_if="MemoryBarrier"
2335 atomics_native_if_any="$ATOMICS_LIST"
2336 w32threads_deps="atomics_native"
2337 threads_if_any="$THREADS_LIST"
2341 dirac_parse_select="golomb"
2342 error_resilience_select="me_cmp"
2343 faandct_deps="faan fdctdsp"
2344 faanidct_deps="faan idctdsp"
2345 h264dsp_select="startcode"
2346 hevcparse_select="golomb"
2347 frame_thread_encoder_deps="encoders threads"
2348 intrax8_select="blockdsp idctdsp"
2351 me_cmp_select="fdctdsp idctdsp pixblockdsp"
2352 mpeg_er_select="error_resilience"
2353 mpegaudio_select="mpegaudiodsp mpegaudioheader"
2354 mpegaudiodsp_select="dct"
2355 mpegvideo_select="blockdsp h264chroma hpeldsp idctdsp me_cmp mpeg_er videodsp"
2356 mpegvideoenc_select="me_cmp mpegvideo pixblockdsp qpeldsp"
2357 vc1dsp_select="h264chroma qpeldsp startcode"
2360 # decoders / encoders
2361 aac_decoder_select="mdct15 mdct sinewin"
2362 aac_fixed_decoder_select="mdct sinewin"
2363 aac_encoder_select="audio_frame_queue iirfilter lpc mdct sinewin"
2364 aac_latm_decoder_select="aac_decoder aac_latm_parser"
2365 ac3_decoder_select="ac3_parser ac3dsp bswapdsp fmtconvert mdct"
2366 ac3_fixed_decoder_select="ac3_parser ac3dsp bswapdsp mdct"
2367 ac3_encoder_select="ac3dsp audiodsp mdct me_cmp"
2368 ac3_fixed_encoder_select="ac3dsp audiodsp mdct me_cmp"
2369 adpcm_g722_decoder_select="g722dsp"
2370 adpcm_g722_encoder_select="g722dsp"
2371 aic_decoder_select="golomb idctdsp"
2372 alac_encoder_select="lpc"
2373 als_decoder_select="bswapdsp"
2374 amrnb_decoder_select="lsp"
2375 amrwb_decoder_select="lsp"
2376 amv_decoder_select="sp5x_decoder exif"
2377 amv_encoder_select="aandcttables jpegtables mpegvideoenc"
2378 ape_decoder_select="bswapdsp llauddsp"
2379 apng_decoder_select="zlib"
2380 apng_encoder_select="llvidencdsp zlib"
2381 asv1_decoder_select="blockdsp bswapdsp idctdsp"
2382 asv1_encoder_select="bswapdsp fdctdsp pixblockdsp"
2383 asv2_decoder_select="blockdsp bswapdsp idctdsp"
2384 asv2_encoder_select="bswapdsp fdctdsp pixblockdsp"
2385 atrac1_decoder_select="mdct sinewin"
2386 atrac3_decoder_select="mdct"
2387 atrac3p_decoder_select="mdct sinewin"
2388 avrn_decoder_select="exif jpegtables"
2389 bink_decoder_select="blockdsp hpeldsp"
2390 binkaudio_dct_decoder_select="mdct rdft dct sinewin wma_freqs"
2391 binkaudio_rdft_decoder_select="mdct rdft sinewin wma_freqs"
2392 cavs_decoder_select="blockdsp golomb h264chroma idctdsp qpeldsp videodsp"
2393 cllc_decoder_select="bswapdsp"
2394 comfortnoise_encoder_select="lpc"
2395 cook_decoder_select="audiodsp mdct sinewin"
2396 cscd_decoder_select="lzo"
2397 cscd_decoder_suggest="zlib"
2398 dca_decoder_select="mdct"
2399 dds_decoder_select="texturedsp"
2400 dirac_decoder_select="dirac_parse dwt golomb videodsp mpegvideoenc"
2401 dnxhd_decoder_select="blockdsp idctdsp"
2402 dnxhd_encoder_select="aandcttables blockdsp fdctdsp idctdsp mpegvideoenc pixblockdsp"
2403 dvvideo_decoder_select="dvprofile idctdsp"
2404 dvvideo_encoder_select="dvprofile fdctdsp me_cmp pixblockdsp"
2405 dxa_decoder_select="zlib"
2406 dxv_decoder_select="lzf texturedsp"
2407 eac3_decoder_select="ac3_decoder"
2408 eac3_encoder_select="ac3_encoder"
2409 eamad_decoder_select="aandcttables blockdsp bswapdsp idctdsp mpegvideo"
2410 eatgq_decoder_select="aandcttables"
2411 eatqi_decoder_select="aandcttables blockdsp bswapdsp idctdsp"
2412 exr_decoder_select="zlib"
2413 ffv1_decoder_select="rangecoder"
2414 ffv1_encoder_select="rangecoder"
2415 ffvhuff_decoder_select="huffyuv_decoder"
2416 ffvhuff_encoder_select="huffyuv_encoder"
2417 fic_decoder_select="golomb"
2418 flac_decoder_select="flacdsp"
2419 flac_encoder_select="bswapdsp flacdsp lpc"
2420 flashsv2_decoder_select="zlib"
2421 flashsv2_encoder_select="zlib"
2422 flashsv_decoder_select="zlib"
2423 flashsv_encoder_select="zlib"
2424 flv_decoder_select="h263_decoder"
2425 flv_encoder_select="h263_encoder"
2426 fourxm_decoder_select="blockdsp bswapdsp"
2427 fraps_decoder_select="bswapdsp huffman"
2428 g2m_decoder_select="blockdsp idctdsp jpegtables zlib"
2429 g729_decoder_select="audiodsp"
2430 h261_decoder_select="mpegvideo"
2431 h261_encoder_select="aandcttables mpegvideoenc"
2432 h263_decoder_select="h263_parser h263dsp mpegvideo qpeldsp"
2433 h263_encoder_select="aandcttables h263dsp mpegvideoenc"
2434 h263i_decoder_select="h263_decoder"
2435 h263p_decoder_select="h263_decoder"
2436 h263p_encoder_select="h263_encoder"
2437 h264_decoder_select="cabac golomb h264chroma h264dsp h264parse h264pred h264qpel videodsp"
2438 h264_decoder_suggest="error_resilience"
2439 hap_decoder_select="snappy texturedsp"
2440 hap_encoder_deps="libsnappy"
2441 hap_encoder_select="texturedspenc"
2442 hevc_decoder_select="bswapdsp cabac golomb hevcparse videodsp"
2443 huffyuv_decoder_select="bswapdsp huffyuvdsp llviddsp"
2444 huffyuv_encoder_select="bswapdsp huffman huffyuvencdsp llvidencdsp"
2445 iac_decoder_select="imc_decoder"
2446 imc_decoder_select="bswapdsp fft mdct sinewin"
2447 indeo3_decoder_select="hpeldsp"
2448 indeo4_decoder_select="ividsp"
2449 indeo5_decoder_select="ividsp"
2450 interplay_video_decoder_select="hpeldsp"
2451 jpegls_decoder_select="mjpeg_decoder"
2452 jv_decoder_select="blockdsp"
2453 lagarith_decoder_select="llviddsp"
2454 ljpeg_encoder_select="aandcttables idctdsp jpegtables mpegvideoenc"
2455 magicyuv_decoder_select="llviddsp"
2456 mdec_decoder_select="blockdsp idctdsp mpegvideo"
2457 metasound_decoder_select="lsp mdct sinewin"
2458 mimic_decoder_select="blockdsp bswapdsp hpeldsp idctdsp"
2459 mjpeg_decoder_select="blockdsp hpeldsp exif idctdsp jpegtables"
2460 mjpeg_encoder_select="aandcttables jpegtables mpegvideoenc"
2461 mjpegb_decoder_select="mjpeg_decoder"
2462 mlp_decoder_select="mlp_parser"
2463 mlp_encoder_select="lpc"
2464 motionpixels_decoder_select="bswapdsp"
2465 mp1_decoder_select="mpegaudio"
2466 mp1float_decoder_select="mpegaudio"
2467 mp2_decoder_select="mpegaudio"
2468 mp2float_decoder_select="mpegaudio"
2469 mp3_decoder_select="mpegaudio"
2470 mp3adu_decoder_select="mpegaudio"
2471 mp3adufloat_decoder_select="mpegaudio"
2472 mp3float_decoder_select="mpegaudio"
2473 mp3on4_decoder_select="mpegaudio"
2474 mp3on4float_decoder_select="mpegaudio"
2475 mpc7_decoder_select="bswapdsp mpegaudiodsp"
2476 mpc8_decoder_select="mpegaudiodsp"
2477 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
2478 mpeg_xvmc_decoder_select="mpeg2video_decoder"
2479 mpegvideo_decoder_select="mpegvideo"
2480 mpeg1video_decoder_select="mpegvideo"
2481 mpeg1video_encoder_select="aandcttables mpegvideoenc h263dsp"
2482 mpeg2video_decoder_select="mpegvideo"
2483 mpeg2video_encoder_select="aandcttables mpegvideoenc h263dsp"
2484 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
2485 mpeg4_encoder_select="h263_encoder"
2486 msa1_decoder_select="mss34dsp"
2487 mscc_decoder_select="zlib"
2488 msmpeg4v1_decoder_select="h263_decoder"
2489 msmpeg4v2_decoder_select="h263_decoder"
2490 msmpeg4v2_encoder_select="h263_encoder"
2491 msmpeg4v3_decoder_select="h263_decoder"
2492 msmpeg4v3_encoder_select="h263_encoder"
2493 mss2_decoder_select="mpegvideo qpeldsp vc1_decoder"
2494 mts2_decoder_select="mss34dsp"
2495 mxpeg_decoder_select="mjpeg_decoder"
2496 nellymoser_decoder_select="mdct sinewin"
2497 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
2498 nuv_decoder_select="idctdsp lzo"
2499 on2avc_decoder_select="mdct"
2500 opus_decoder_deps="swresample"
2501 opus_decoder_select="mdct15"
2502 opus_encoder_select="audio_frame_queue mdct15"
2503 png_decoder_select="zlib"
2504 png_encoder_select="llvidencdsp zlib"
2505 prores_decoder_select="blockdsp idctdsp"
2506 prores_encoder_select="fdctdsp"
2507 qcelp_decoder_select="lsp"
2508 qdm2_decoder_select="mdct rdft mpegaudiodsp"
2509 ra_144_decoder_select="audiodsp"
2510 ra_144_encoder_select="audio_frame_queue lpc audiodsp"
2511 ralf_decoder_select="golomb"
2512 rawvideo_decoder_select="bswapdsp"
2513 rscc_decoder_select="zlib"
2514 rtjpeg_decoder_select="me_cmp"
2515 rv10_decoder_select="h263_decoder"
2516 rv10_encoder_select="h263_encoder"
2517 rv20_decoder_select="h263_decoder"
2518 rv20_encoder_select="h263_encoder"
2519 rv30_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
2520 rv40_decoder_select="golomb h264pred h264qpel mpegvideo rv34dsp"
2521 screenpresso_decoder_select="zlib"
2522 shorten_decoder_select="bswapdsp"
2523 sipr_decoder_select="lsp"
2524 snow_decoder_select="dwt h264qpel hpeldsp me_cmp rangecoder videodsp"
2525 snow_encoder_select="aandcttables dwt h264qpel hpeldsp me_cmp mpegvideoenc rangecoder"
2526 sonic_decoder_select="golomb rangecoder"
2527 sonic_encoder_select="golomb rangecoder"
2528 sonic_ls_encoder_select="golomb rangecoder"
2529 sp5x_decoder_select="mjpeg_decoder"
2530 srgc_decoder_select="zlib"
2531 svq1_decoder_select="hpeldsp"
2532 svq1_encoder_select="aandcttables hpeldsp me_cmp mpegvideoenc"
2533 svq3_decoder_select="golomb h264dsp h264parse h264pred hpeldsp tpeldsp videodsp"
2534 svq3_decoder_suggest="zlib"
2535 tak_decoder_select="audiodsp"
2536 tdsc_decoder_select="zlib mjpeg_decoder"
2537 theora_decoder_select="vp3_decoder"
2538 thp_decoder_select="mjpeg_decoder"
2539 tiff_decoder_suggest="zlib lzma"
2540 tiff_encoder_suggest="zlib"
2541 truehd_decoder_select="mlp_parser"
2542 truehd_encoder_select="lpc"
2543 truemotion2_decoder_select="bswapdsp"
2544 truespeech_decoder_select="bswapdsp"
2545 tscc_decoder_select="zlib"
2546 twinvq_decoder_select="mdct lsp sinewin"
2547 txd_decoder_select="texturedsp"
2548 utvideo_decoder_select="bswapdsp llviddsp"
2549 utvideo_encoder_select="bswapdsp huffman llvidencdsp"
2550 vble_decoder_select="llviddsp"
2551 vc1_decoder_select="blockdsp h263_decoder h264qpel intrax8 mpegvideo vc1dsp"
2552 vc1_qsv_decoder_deps="libmfx"
2553 vc1_qsv_decoder_select="qsvdec vc1_qsv_hwaccel vc1_parser"
2554 vc1image_decoder_select="vc1_decoder"
2555 vorbis_decoder_select="mdct"
2556 vorbis_encoder_select="mdct"
2557 vp3_decoder_select="hpeldsp vp3dsp videodsp"
2558 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp vp56dsp"
2559 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp vp56dsp"
2560 vp6a_decoder_select="vp6_decoder"
2561 vp6f_decoder_select="vp6_decoder"
2562 vp7_decoder_select="h264pred videodsp vp8dsp"
2563 vp8_decoder_select="h264pred videodsp vp8dsp"
2564 vp9_decoder_select="videodsp vp9_parser"
2565 webp_decoder_select="vp8_decoder exif"
2566 wmalossless_decoder_select="llauddsp"
2567 wmapro_decoder_select="mdct sinewin wma_freqs"
2568 wmav1_decoder_select="mdct sinewin wma_freqs"
2569 wmav1_encoder_select="mdct sinewin wma_freqs"
2570 wmav2_decoder_select="mdct sinewin wma_freqs"
2571 wmav2_encoder_select="mdct sinewin wma_freqs"
2572 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
2573 wmv1_decoder_select="h263_decoder"
2574 wmv1_encoder_select="h263_encoder"
2575 wmv2_decoder_select="blockdsp error_resilience h263_decoder idctdsp intrax8 videodsp wmv2dsp"
2576 wmv2_encoder_select="h263_encoder wmv2dsp"
2577 wmv3_decoder_select="vc1_decoder"
2578 wmv3image_decoder_select="wmv3_decoder"
2579 xma1_decoder_select="wmapro_decoder"
2580 xma2_decoder_select="wmapro_decoder"
2581 zerocodec_decoder_select="zlib"
2582 zlib_decoder_select="zlib"
2583 zlib_encoder_select="zlib"
2584 zmbv_decoder_select="zlib"
2585 zmbv_encoder_select="zlib"
2588 audiotoolbox_deps="AudioToolbox_AudioToolbox_h"
2589 audiotoolbox_extralibs="-framework CoreFoundation -framework AudioToolbox -framework CoreMedia"
2591 # hardware accelerators
2592 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
2593 cuda_deps_any="dlopen LoadLibrary"
2595 d3d11va_deps="d3d11_h dxva_h ID3D11VideoDecoder ID3D11VideoContext"
2596 dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode"
2597 dxva2_extralibs="-luser32"
2598 dxva2_lib_deps="dxva2"
2599 vda_framework_deps="VideoDecodeAcceleration_VDADecoder_h"
2600 vda_framework_extralibs="-framework VideoDecodeAcceleration"
2601 vda_deps="vda_framework pthreads"
2602 vda_extralibs="-framework CoreFoundation -framework QuartzCore"
2603 videotoolbox_hwaccel_deps="videotoolbox pthreads"
2604 videotoolbox_hwaccel_extralibs="-framework QuartzCore"
2605 xvmc_deps="X11_extensions_XvMClib_h"
2607 h263_vaapi_hwaccel_deps="vaapi"
2608 h263_vaapi_hwaccel_select="h263_decoder"
2609 h263_videotoolbox_hwaccel_deps="videotoolbox"
2610 h263_videotoolbox_hwaccel_select="h263_decoder"
2611 h264_cuvid_hwaccel_deps="cuda cuvid"
2612 h264_cuvid_hwaccel_select="h264_cuvid_decoder"
2613 h264_d3d11va_hwaccel_deps="d3d11va"
2614 h264_d3d11va_hwaccel_select="h264_decoder"
2615 h264_dxva2_hwaccel_deps="dxva2"
2616 h264_dxva2_hwaccel_select="h264_decoder"
2617 h264_mediacodec_hwaccel_deps="mediacodec"
2618 h264_mmal_hwaccel_deps="mmal"
2619 h264_qsv_hwaccel_deps="libmfx"
2620 h264_vaapi_hwaccel_deps="vaapi"
2621 h264_vaapi_hwaccel_select="h264_decoder"
2622 h264_vda_hwaccel_deps="vda"
2623 h264_vda_hwaccel_select="h264_decoder"
2624 h264_vda_old_hwaccel_deps="vda"
2625 h264_vda_old_hwaccel_select="h264_decoder"
2626 h264_vdpau_hwaccel_deps="vdpau"
2627 h264_vdpau_hwaccel_select="h264_decoder"
2628 h264_videotoolbox_hwaccel_deps="videotoolbox"
2629 h264_videotoolbox_hwaccel_select="h264_decoder"
2630 hevc_cuvid_hwaccel_deps="cuda cuvid"
2631 hevc_cuvid_hwaccel_select="hevc_cuvid_decoder"
2632 hevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC"
2633 hevc_d3d11va_hwaccel_select="hevc_decoder"
2634 hevc_mediacodec_hwaccel_deps="mediacodec"
2635 hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
2636 hevc_dxva2_hwaccel_select="hevc_decoder"
2637 hevc_qsv_hwaccel_deps="libmfx"
2638 hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
2639 hevc_vaapi_hwaccel_select="hevc_decoder"
2640 hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
2641 hevc_vdpau_hwaccel_select="hevc_decoder"
2642 mjpeg_cuvid_hwaccel_deps="cuda cuvid"
2643 mjpeg_cuvid_hwaccel_select="mjpeg_cuvid_decoder"
2644 mpeg_xvmc_hwaccel_deps="xvmc"
2645 mpeg_xvmc_hwaccel_select="mpeg2video_decoder"
2646 mpeg1_cuvid_hwaccel_deps="cuda cuvid"
2647 mpeg1_cuvid_hwaccel_select="mpeg1_cuvid_decoder"
2648 mpeg1_vdpau_hwaccel_deps="vdpau"
2649 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
2650 mpeg1_videotoolbox_hwaccel_deps="videotoolbox"
2651 mpeg1_videotoolbox_hwaccel_select="mpeg1video_decoder"
2652 mpeg1_xvmc_hwaccel_deps="xvmc"
2653 mpeg1_xvmc_hwaccel_select="mpeg1video_decoder"
2654 mpeg2_cuvid_hwaccel_deps="cuda cuvid"
2655 mpeg2_cuvid_hwaccel_select="mpeg2_cuvid_decoder"
2656 mpeg2_d3d11va_hwaccel_deps="d3d11va"
2657 mpeg2_d3d11va_hwaccel_select="mpeg2video_decoder"
2658 mpeg2_dxva2_hwaccel_deps="dxva2"
2659 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
2660 mpeg2_mmal_hwaccel_deps="mmal"
2661 mpeg2_qsv_hwaccel_deps="libmfx"
2662 mpeg2_qsv_hwaccel_select="qsvdec_mpeg2"
2663 mpeg2_vaapi_hwaccel_deps="vaapi"
2664 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
2665 mpeg2_vdpau_hwaccel_deps="vdpau"
2666 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
2667 mpeg2_videotoolbox_hwaccel_deps="videotoolbox"
2668 mpeg2_videotoolbox_hwaccel_select="mpeg2video_decoder"
2669 mpeg2_xvmc_hwaccel_deps="xvmc"
2670 mpeg2_xvmc_hwaccel_select="mpeg2video_decoder"
2671 mpeg4_cuvid_hwaccel_deps="cuda cuvid"
2672 mpeg4_cuvid_hwaccel_select="mpeg4_cuvid_decoder"
2673 mpeg4_mediacodec_hwaccel_deps="mediacodec"
2674 mpeg4_mmal_hwaccel_deps="mmal"
2675 mpeg4_vaapi_hwaccel_deps="vaapi"
2676 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
2677 mpeg4_vdpau_hwaccel_deps="vdpau"
2678 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
2679 mpeg4_videotoolbox_hwaccel_deps="videotoolbox"
2680 mpeg4_videotoolbox_hwaccel_select="mpeg4_decoder"
2681 vc1_cuvid_hwaccel_deps="cuda cuvid"
2682 vc1_cuvid_hwaccel_select="vc1_cuvid_decoder"
2683 vc1_d3d11va_hwaccel_deps="d3d11va"
2684 vc1_d3d11va_hwaccel_select="vc1_decoder"
2685 vc1_dxva2_hwaccel_deps="dxva2"
2686 vc1_dxva2_hwaccel_select="vc1_decoder"
2687 vc1_mmal_hwaccel_deps="mmal"
2688 vc1_qsv_hwaccel_deps="libmfx"
2689 vc1_qsv_hwaccel_select="qsvdec_vc1"
2690 vc1_vaapi_hwaccel_deps="vaapi"
2691 vc1_vaapi_hwaccel_select="vc1_decoder"
2692 vc1_vdpau_hwaccel_deps="vdpau"
2693 vc1_vdpau_hwaccel_select="vc1_decoder"
2694 vp8_cuvid_hwaccel_deps="cuda cuvid"
2695 vp8_cuvid_hwaccel_select="vp8_cuvid_decoder"
2696 vp9_cuvid_hwaccel_deps="cuda cuvid"
2697 vp9_cuvid_hwaccel_select="vp9_cuvid_decoder"
2698 vp8_mediacodec_hwaccel_deps="mediacodec"
2699 vp8_qsv_hwaccel_deps="libmfx"
2700 vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
2701 vp9_d3d11va_hwaccel_select="vp9_decoder"
2702 vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
2703 vp9_dxva2_hwaccel_select="vp9_decoder"
2704 vp9_mediacodec_hwaccel_deps="mediacodec"
2705 vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth"
2706 vp9_vaapi_hwaccel_select="vp9_decoder"
2707 wmv3_d3d11va_hwaccel_select="vc1_d3d11va_hwaccel"
2708 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
2709 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
2710 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
2712 # hardware-accelerated codecs
2713 omx_deps="dlopen pthreads"
2714 omx_extralibs='$ldl'
2715 omx_rpi_select="omx"
2718 vaapi_encode_deps="vaapi"
2720 hwupload_cuda_filter_deps="cuda"
2721 scale_npp_filter_deps="cuda_sdk libnpp"
2724 nvenc_deps_any="dlopen LoadLibrary"
2725 nvenc_encoder_deps="nvenc"
2727 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
2728 h264_cuvid_decoder_deps="cuda cuvid"
2729 h264_cuvid_decoder_select="h264_mp4toannexb_bsf"
2730 h264_mediacodec_decoder_deps="mediacodec"
2731 h264_mediacodec_decoder_select="h264_mp4toannexb_bsf h264_parser"
2732 h264_mmal_decoder_deps="mmal"
2733 h264_nvenc_encoder_deps="nvenc"
2734 h264_omx_encoder_deps="omx"
2735 h264_qsv_decoder_deps="libmfx"
2736 h264_qsv_decoder_select="h264_mp4toannexb_bsf h264_parser qsvdec h264_qsv_hwaccel"
2737 h264_qsv_encoder_deps="libmfx"
2738 h264_qsv_encoder_select="qsvenc"
2739 h264_vaapi_encoder_deps="VAEncPictureParameterBufferH264"
2740 h264_vaapi_encoder_select="vaapi_encode golomb"
2741 h264_vda_decoder_deps="vda"
2742 h264_vda_decoder_select="h264_decoder"
2743 h264_vdpau_decoder_deps="vdpau"
2744 h264_vdpau_decoder_select="h264_decoder"
2745 hevc_cuvid_decoder_deps="cuda cuvid"
2746 hevc_cuvid_decoder_select="hevc_mp4toannexb_bsf"
2747 hevc_mediacodec_decoder_deps="mediacodec"
2748 hevc_mediacodec_decoder_select="hevc_mp4toannexb_bsf hevc_parser"
2749 hevc_nvenc_encoder_deps="nvenc"
2750 hevc_qsv_decoder_deps="libmfx"
2751 hevc_qsv_decoder_select="hevc_mp4toannexb_bsf hevc_parser qsvdec hevc_qsv_hwaccel"
2752 hevc_qsv_encoder_deps="libmfx"
2753 hevc_qsv_encoder_select="hevcparse qsvenc"
2754 hevc_vaapi_encoder_deps="VAEncPictureParameterBufferHEVC"
2755 hevc_vaapi_encoder_select="vaapi_encode golomb"
2756 mjpeg_cuvid_decoder_deps="cuda cuvid"
2757 mjpeg_vaapi_encoder_deps="VAEncPictureParameterBufferJPEG"
2758 mjpeg_vaapi_encoder_select="vaapi_encode jpegtables"
2759 mpeg1_cuvid_decoder_deps="cuda cuvid"
2760 mpeg1_vdpau_decoder_deps="vdpau"
2761 mpeg1_vdpau_decoder_select="mpeg1video_decoder"
2762 mpeg2_crystalhd_decoder_select="crystalhd"
2763 mpeg2_cuvid_decoder_deps="cuda cuvid"
2764 mpeg2_mmal_decoder_deps="mmal"
2765 mpeg2_qsv_decoder_deps="libmfx"
2766 mpeg2_qsv_decoder_select="qsvdec mpeg2_qsv_hwaccel"
2767 mpeg2_qsv_encoder_deps="libmfx"
2768 mpeg2_qsv_encoder_select="qsvenc"
2769 mpeg2_vaapi_encoder_deps="VAEncPictureParameterBufferMPEG2"
2770 mpeg2_vaapi_encoder_select="vaapi_encode"
2771 mpeg4_crystalhd_decoder_select="crystalhd"
2772 mpeg4_cuvid_decoder_deps="cuda cuvid"
2773 mpeg4_mediacodec_decoder_deps="mediacodec"
2774 mpeg4_mmal_decoder_deps="mmal"
2775 mpeg4_omx_encoder_deps="omx"
2776 mpeg4_vdpau_decoder_deps="vdpau"
2777 mpeg4_vdpau_decoder_select="mpeg4_decoder"
2778 mpeg_vdpau_decoder_deps="vdpau"
2779 mpeg_vdpau_decoder_select="mpeg2video_decoder"
2780 msmpeg4_crystalhd_decoder_select="crystalhd"
2781 nvenc_h264_encoder_select="h264_nvenc_encoder"
2782 nvenc_hevc_encoder_select="hevc_nvenc_encoder"
2783 vc1_crystalhd_decoder_select="crystalhd"
2784 vc1_cuvid_decoder_deps="cuda cuvid"
2785 vc1_mmal_decoder_deps="mmal"
2786 vc1_vdpau_decoder_deps="vdpau"
2787 vc1_vdpau_decoder_select="vc1_decoder"
2788 vp8_cuvid_decoder_deps="cuda cuvid"
2789 vp8_mediacodec_decoder_deps="mediacodec"
2790 vp8_qsv_decoder_deps="libmfx"
2791 vp8_qsv_decoder_select="qsvdec vp8_qsv_hwaccel vp8_parser"
2792 vp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8"
2793 vp8_vaapi_encoder_select="vaapi_encode"
2794 vp9_cuvid_decoder_deps="cuda cuvid"
2795 vp9_mediacodec_decoder_deps="mediacodec"
2796 wmv3_crystalhd_decoder_select="crystalhd"
2797 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
2800 h264_parser_select="golomb h264dsp h264parse"
2801 hevc_parser_select="hevcparse"
2802 mpegaudio_parser_select="mpegaudioheader"
2803 mpegvideo_parser_select="mpegvideo"
2804 mpeg4video_parser_select="h263dsp mpegvideo qpeldsp"
2805 vc1_parser_select="vc1dsp"
2808 mjpeg2jpeg_bsf_select="jpegtables"
2810 # external libraries
2811 aac_at_decoder_deps="audiotoolbox"
2812 ac3_at_decoder_deps="audiotoolbox"
2813 ac3_at_decoder_select="ac3_parser"
2814 adpcm_ima_qt_at_decoder_deps="audiotoolbox"
2815 alac_at_decoder_deps="audiotoolbox"
2816 amr_nb_at_decoder_deps="audiotoolbox"
2817 avisynth_deps_any="dlopen LoadLibrary"
2818 avisynth_demuxer_deps="avisynth"
2819 avisynth_demuxer_select="riffdec"
2820 eac3_at_decoder_deps="audiotoolbox"
2821 eac3_at_decoder_select="ac3_parser"
2822 gsm_ms_at_decoder_deps="audiotoolbox"
2823 ilbc_at_decoder_deps="audiotoolbox"
2824 mp1_at_decoder_deps="audiotoolbox"
2825 mp2_at_decoder_deps="audiotoolbox"
2826 mp3_at_decoder_deps="audiotoolbox"
2827 mp1_at_decoder_select="mpegaudioheader"
2828 mp2_at_decoder_select="mpegaudioheader"
2829 mp3_at_decoder_select="mpegaudioheader"
2830 pcm_alaw_at_decoder_deps="audiotoolbox"
2831 pcm_mulaw_at_decoder_deps="audiotoolbox"
2832 qdmc_at_decoder_deps="audiotoolbox"
2833 qdm2_at_decoder_deps="audiotoolbox"
2834 aac_at_encoder_deps="audiotoolbox"
2835 aac_at_encoder_select="audio_frame_queue"
2836 alac_at_encoder_deps="audiotoolbox"
2837 alac_at_encoder_select="audio_frame_queue"
2838 ilbc_at_encoder_deps="audiotoolbox"
2839 ilbc_at_encoder_select="audio_frame_queue"
2840 pcm_alaw_at_encoder_deps="audiotoolbox"
2841 pcm_alaw_at_encoder_select="audio_frame_queue"
2842 pcm_mulaw_at_encoder_deps="audiotoolbox"
2843 pcm_mulaw_at_encoder_select="audio_frame_queue"
2844 chromaprint_muxer_deps="chromaprint"
2845 h264_videotoolbox_encoder_deps="videotoolbox_encoder pthreads"
2846 libcelt_decoder_deps="libcelt"
2847 libfdk_aac_decoder_deps="libfdk_aac"
2848 libfdk_aac_encoder_deps="libfdk_aac"
2849 libfdk_aac_encoder_select="audio_frame_queue"
2850 libgme_demuxer_deps="libgme"
2851 libgsm_decoder_deps="libgsm"
2852 libgsm_encoder_deps="libgsm"
2853 libgsm_ms_decoder_deps="libgsm"
2854 libgsm_ms_encoder_deps="libgsm"
2855 libilbc_decoder_deps="libilbc"
2856 libilbc_encoder_deps="libilbc"
2857 libkvazaar_encoder_deps="libkvazaar"
2858 libmodplug_demuxer_deps="libmodplug"
2859 libmp3lame_encoder_deps="libmp3lame"
2860 libmp3lame_encoder_select="audio_frame_queue mpegaudioheader"
2861 libopencore_amrnb_decoder_deps="libopencore_amrnb"
2862 libopencore_amrnb_encoder_deps="libopencore_amrnb"
2863 libopencore_amrnb_encoder_select="audio_frame_queue"
2864 libopencore_amrwb_decoder_deps="libopencore_amrwb"
2865 libopenh264_decoder_deps="libopenh264"
2866 libopenh264_decoder_select="h264_mp4toannexb_bsf"
2867 libopenh264_encoder_deps="libopenh264"
2868 libopenjpeg_decoder_deps="libopenjpeg"
2869 libopenjpeg_encoder_deps="libopenjpeg"
2870 libopenmpt_demuxer_deps="libopenmpt"
2871 libopus_decoder_deps="libopus"
2872 libopus_encoder_deps="libopus"
2873 libopus_encoder_select="audio_frame_queue"
2874 libschroedinger_decoder_deps="libschroedinger"
2875 libschroedinger_encoder_deps="libschroedinger"
2876 libshine_encoder_deps="libshine"
2877 libshine_encoder_select="audio_frame_queue"
2878 libspeex_decoder_deps="libspeex"
2879 libspeex_encoder_deps="libspeex"
2880 libspeex_encoder_select="audio_frame_queue"
2881 libtheora_encoder_deps="libtheora"
2882 libtwolame_encoder_deps="libtwolame"
2883 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
2884 libvorbis_decoder_deps="libvorbis"
2885 libvorbis_encoder_deps="libvorbis"
2886 libvorbis_encoder_select="audio_frame_queue"
2887 libvpx_vp8_decoder_deps="libvpx"
2888 libvpx_vp8_encoder_deps="libvpx"
2889 libvpx_vp9_decoder_deps="libvpx"
2890 libvpx_vp9_encoder_deps="libvpx"
2891 libwavpack_encoder_deps="libwavpack"
2892 libwavpack_encoder_select="audio_frame_queue"
2893 libwebp_encoder_deps="libwebp"
2894 libwebp_anim_encoder_deps="libwebp"
2895 libx262_encoder_deps="libx262"
2896 libx264_encoder_deps="libx264"
2897 libx264rgb_encoder_deps="libx264 x264_csp_bgr"
2898 libx264rgb_encoder_select="libx264_encoder"
2899 libx265_encoder_deps="libx265"
2900 libxavs_encoder_deps="libxavs"
2901 libxvid_encoder_deps="libxvid"
2902 libzvbi_teletext_decoder_deps="libzvbi"
2903 videotoolbox_deps="VideoToolbox_VideoToolbox_h"
2904 videotoolbox_extralibs="-framework CoreFoundation -framework VideoToolbox -framework CoreMedia -framework CoreVideo"
2905 videotoolbox_encoder_deps="videotoolbox VTCompressionSessionPrepareToEncodeFrames"
2906 videotoolbox_encoder_suggest="vda_framework vt_bt2020"
2907 vt_bt2020_deps="kCVImageBufferColorPrimaries_ITU_R_2020"
2910 ac3_demuxer_select="ac3_parser"
2911 aiff_muxer_select="iso_media"
2912 asf_demuxer_select="riffdec"
2913 asf_o_demuxer_select="riffdec"
2914 asf_muxer_select="riffenc"
2915 asf_stream_muxer_select="asf_muxer"
2916 avi_demuxer_select="iso_media riffdec exif"
2917 avi_muxer_select="riffenc"
2918 caf_demuxer_select="iso_media riffdec"
2919 caf_muxer_select="iso_media"
2920 dash_muxer_select="mp4_muxer"
2921 dirac_demuxer_select="dirac_parser"
2922 dts_demuxer_select="dca_parser"
2923 dtshd_demuxer_select="dca_parser"
2924 dv_demuxer_select="dvprofile"
2925 dv_muxer_select="dvprofile"
2926 dxa_demuxer_select="riffdec"
2927 eac3_demuxer_select="ac3_parser"
2928 f4v_muxer_select="mov_muxer"
2929 fifo_muxer_deps="threads"
2930 flac_demuxer_select="flac_parser"
2931 hds_muxer_select="flv_muxer"
2932 hls_muxer_select="mpegts_muxer"
2933 image2_alias_pix_demuxer_select="image2_demuxer"
2934 image2_brender_pix_demuxer_select="image2_demuxer"
2935 ipod_muxer_select="mov_muxer"
2936 ismv_muxer_select="mov_muxer"
2937 libnut_demuxer_deps="libnut"
2938 libnut_muxer_deps="libnut"
2939 matroska_audio_muxer_select="matroska_muxer"
2940 matroska_demuxer_select="iso_media riffdec"
2941 matroska_demuxer_suggest="bzlib lzo zlib"
2942 matroska_muxer_select="iso_media riffenc"
2943 mmf_muxer_select="riffenc"
2944 mov_demuxer_select="iso_media riffdec"
2945 mov_demuxer_suggest="zlib"
2946 mov_muxer_select="iso_media riffenc rtpenc_chain"
2947 mp3_demuxer_select="mpegaudio_parser"
2948 mp3_muxer_select="mpegaudioheader"
2949 mp4_muxer_select="mov_muxer"
2950 mpegts_demuxer_select="iso_media"
2951 mpegts_muxer_select="adts_muxer latm_muxer"
2952 mpegtsraw_demuxer_select="mpegts_demuxer"
2953 mxf_d10_muxer_select="mxf_muxer"
2954 mxf_opatom_muxer_select="mxf_muxer"
2955 nut_muxer_select="riffenc"
2956 nuv_demuxer_select="riffdec"
2957 oga_muxer_select="ogg_muxer"
2958 ogg_demuxer_select="dirac_parse"
2959 ogv_muxer_select="ogg_muxer"
2960 opus_muxer_select="ogg_muxer"
2961 psp_muxer_select="mov_muxer"
2962 rtp_demuxer_select="sdp_demuxer"
2963 rtp_muxer_select="golomb"
2964 rtpdec_select="asf_demuxer jpegtables mov_demuxer mpegts_demuxer rm_demuxer rtp_protocol srtp"
2965 rtsp_demuxer_select="http_protocol rtpdec"
2966 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2967 sap_demuxer_select="sdp_demuxer"
2968 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
2969 sdp_demuxer_select="rtpdec"
2970 smoothstreaming_muxer_select="ismv_muxer"
2971 spdif_muxer_select="aac_parser"
2972 spx_muxer_select="ogg_muxer"
2973 swf_demuxer_suggest="zlib"
2974 tak_demuxer_select="tak_parser"
2975 tg2_muxer_select="mov_muxer"
2976 tgp_muxer_select="mov_muxer"
2977 vobsub_demuxer_select="mpegps_demuxer"
2978 w64_demuxer_select="wav_demuxer"
2979 w64_muxer_select="wav_muxer"
2980 wav_demuxer_select="riffdec"
2981 wav_muxer_select="riffenc"
2982 webm_muxer_select="iso_media riffenc"
2983 webm_dash_manifest_demuxer_select="matroska_demuxer"
2984 wtv_demuxer_select="mpegts_demuxer riffdec"
2985 wtv_muxer_select="mpegts_muxer riffenc"
2986 xmv_demuxer_select="riffdec"
2987 xwma_demuxer_select="riffdec"
2990 alsa_indev_deps="alsa"
2991 alsa_outdev_deps="alsa"
2992 avfoundation_indev_deps="pthreads"
2993 avfoundation_indev_extralibs="-framework Foundation -framework AVFoundation -framework CoreVideo -framework CoreMedia"
2994 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2995 caca_outdev_deps="libcaca"
2996 decklink_indev_deps="decklink threads"
2997 decklink_indev_extralibs="-lstdc++"
2998 decklink_outdev_deps="decklink threads"
2999 decklink_outdev_extralibs="-lstdc++"
3000 dshow_indev_deps="IBaseFilter"
3001 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid -loleaut32 -lshlwapi"
3002 dv1394_indev_deps="dv1394"
3003 dv1394_indev_select="dv_demuxer"
3004 fbdev_indev_deps="linux_fb_h"
3005 fbdev_outdev_deps="linux_fb_h"
3006 gdigrab_indev_deps="CreateDIBSection"
3007 gdigrab_indev_extralibs="-lgdi32"
3008 gdigrab_indev_select="bmp_decoder"
3009 iec61883_indev_deps="libiec61883"
3010 jack_indev_deps="jack"
3011 jack_indev_deps_any="sem_timedwait dispatch_dispatch_h"
3012 lavfi_indev_deps="avfilter"
3013 libcdio_indev_deps="libcdio"
3014 libdc1394_indev_deps="libdc1394"
3015 libv4l2_indev_deps="libv4l2"
3016 openal_indev_deps="openal"
3017 opengl_outdev_deps="opengl"
3018 oss_indev_deps_any="soundcard_h sys_soundcard_h"
3019 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
3020 pulse_indev_deps="libpulse"
3021 pulse_outdev_deps="libpulse"
3022 qtkit_indev_extralibs="-framework QTKit -framework Foundation -framework QuartzCore"
3023 qtkit_indev_select="qtkit"
3024 sdl2_outdev_deps="sdl2"
3025 sndio_indev_deps="sndio"
3026 sndio_outdev_deps="sndio"
3027 v4l_indev_deps="linux_videodev_h"
3028 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
3029 v4l2_outdev_deps_any="linux_videodev2_h sys_videoio_h"
3030 vfwcap_indev_deps="vfw32 vfwcap_defines"
3031 xcbgrab_indev_deps="libxcb"
3032 xv_outdev_deps="X11_extensions_Xvlib_h XvGetPortAttribute"
3033 xv_outdev_extralibs="-lXv -lX11 -lXext"
3036 async_protocol_deps="threads"
3037 bluray_protocol_deps="libbluray"
3038 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
3039 ffrtmpcrypt_protocol_deps_any="gcrypt gmp openssl"
3040 ffrtmpcrypt_protocol_select="tcp_protocol"
3041 ffrtmphttp_protocol_deps="!librtmp_protocol"
3042 ffrtmphttp_protocol_select="http_protocol"
3043 ftp_protocol_select="tcp_protocol"
3044 gopher_protocol_select="network"
3045 http_protocol_select="tcp_protocol"
3046 httpproxy_protocol_select="tcp_protocol"
3047 https_protocol_select="tls_protocol"
3048 icecast_protocol_select="http_protocol"
3049 librtmp_protocol_deps="librtmp"
3050 librtmpe_protocol_deps="librtmp"
3051 librtmps_protocol_deps="librtmp"
3052 librtmpt_protocol_deps="librtmp"
3053 librtmpte_protocol_deps="librtmp"
3054 libsmbclient_protocol_deps="libsmbclient gplv3"
3055 libssh_protocol_deps="libssh"
3056 mmsh_protocol_select="http_protocol"
3057 mmst_protocol_select="network"
3058 rtmp_protocol_deps="!librtmp_protocol"
3059 rtmp_protocol_select="tcp_protocol"
3060 rtmpe_protocol_select="ffrtmpcrypt_protocol"
3061 rtmps_protocol_deps="!librtmp_protocol"
3062 rtmps_protocol_select="tls_protocol"
3063 rtmpt_protocol_select="ffrtmphttp_protocol"
3064 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
3065 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
3066 rtp_protocol_select="udp_protocol"
3067 sctp_protocol_deps="struct_sctp_event_subscribe struct_msghdr_msg_flags"
3068 sctp_protocol_select="network"
3069 srtp_protocol_select="rtp_protocol srtp"
3070 tcp_protocol_select="network"
3071 tls_gnutls_protocol_deps="gnutls !tls_schannel_protocol !tls_securetransport_protocol"
3072 tls_gnutls_protocol_select="tcp_protocol"
3073 tls_openssl_protocol_deps="openssl !tls_schannel_protocol !tls_securetransport_protocol !tls_gnutls_protocol"
3074 tls_openssl_protocol_select="tcp_protocol"
3075 tls_schannel_protocol_deps="schannel"
3076 tls_schannel_protocol_select="tcp_protocol"
3077 tls_securetransport_protocol_deps="securetransport"
3078 tls_securetransport_protocol_select="tcp_protocol"
3079 tls_protocol_deps_any="tls_schannel_protocol tls_securetransport_protocol tls_gnutls_protocol tls_openssl_protocol"
3080 udp_protocol_select="network"
3081 udplite_protocol_select="network"
3082 unix_protocol_deps="sys_un_h"
3083 unix_protocol_select="network"
3086 afftfilt_filter_deps="avcodec"
3087 afftfilt_filter_select="fft"
3088 afir_filter_deps="avcodec"
3089 afir_filter_select="fft"
3090 amovie_filter_deps="avcodec avformat"
3091 aresample_filter_deps="swresample"
3092 ass_filter_deps="libass"
3093 atempo_filter_deps="avcodec"
3094 atempo_filter_select="rdft"
3095 azmq_filter_deps="libzmq"
3096 blackframe_filter_deps="gpl"
3097 boxblur_filter_deps="gpl"
3098 bs2b_filter_deps="libbs2b"
3099 colormatrix_filter_deps="gpl"
3100 cover_rect_filter_deps="avcodec avformat gpl"
3101 cropdetect_filter_deps="gpl"
3102 deinterlace_qsv_filter_deps="libmfx"
3103 deinterlace_vaapi_filter_deps="vaapi"
3104 delogo_filter_deps="gpl"
3105 deshake_filter_select="pixelutils"
3106 drawtext_filter_deps="libfreetype"
3107 elbg_filter_deps="avcodec"
3108 eq_filter_deps="gpl"
3109 fftfilt_filter_deps="avcodec"
3110 fftfilt_filter_select="rdft"
3111 find_rect_filter_deps="avcodec avformat gpl"
3112 firequalizer_filter_deps="avcodec"
3113 firequalizer_filter_select="rdft"
3114 flite_filter_deps="libflite"
3115 framerate_filter_select="pixelutils"
3116 frei0r_filter_deps="frei0r dlopen"
3117 frei0r_src_filter_deps="frei0r dlopen"
3118 fspp_filter_deps="gpl"
3119 geq_filter_deps="gpl"
3120 histeq_filter_deps="gpl"
3121 hqdn3d_filter_deps="gpl"
3122 interlace_filter_deps="gpl"
3123 kerndeint_filter_deps="gpl"
3124 ladspa_filter_deps="ladspa dlopen"
3125 mcdeint_filter_deps="avcodec gpl"
3126 movie_filter_deps="avcodec avformat"
3127 mpdecimate_filter_deps="gpl"
3128 mpdecimate_filter_select="pixelutils"
3129 mptestsrc_filter_deps="gpl"
3130 negate_filter_deps="lut_filter"
3131 nnedi_filter_deps="gpl"
3132 ocr_filter_deps="libtesseract"
3133 ocv_filter_deps="libopencv"
3134 owdenoise_filter_deps="gpl"
3135 pan_filter_deps="swresample"
3136 perspective_filter_deps="gpl"
3137 phase_filter_deps="gpl"
3138 pp7_filter_deps="gpl"
3139 pp_filter_deps="gpl postproc"
3140 pullup_filter_deps="gpl"
3141 removelogo_filter_deps="avcodec avformat swscale"
3142 repeatfields_filter_deps="gpl"
3143 resample_filter_deps="avresample"
3144 rubberband_filter_deps="librubberband"
3145 sab_filter_deps="gpl swscale"
3146 scale2ref_filter_deps="swscale"
3147 scale_filter_deps="swscale"
3148 scale_qsv_filter_deps="libmfx"
3149 select_filter_select="pixelutils"
3150 showcqt_filter_deps="avcodec avformat swscale"
3151 showcqt_filter_select="fft"
3152 showfreqs_filter_deps="avcodec"
3153 showfreqs_filter_select="fft"
3154 showspectrum_filter_deps="avcodec"
3155 showspectrum_filter_select="fft"
3156 showspectrumpic_filter_deps="avcodec"
3157 showspectrumpic_filter_select="fft"
3158 signature_filter_deps="gpl avcodec avformat"
3159 smartblur_filter_deps="gpl swscale"
3160 sofalizer_filter_deps="netcdf avcodec"
3161 sofalizer_filter_select="fft"
3162 spectrumsynth_filter_deps="avcodec"
3163 spectrumsynth_filter_select="fft"
3164 spp_filter_deps="gpl avcodec"
3165 spp_filter_select="fft idctdsp fdctdsp me_cmp pixblockdsp"
3166 stereo3d_filter_deps="gpl"
3167 subtitles_filter_deps="avformat avcodec libass"
3168 super2xsai_filter_deps="gpl"
3169 pixfmts_super2xsai_test_deps="super2xsai_filter"
3170 tinterlace_filter_deps="gpl"
3171 tinterlace_merge_test_deps="tinterlace_filter"
3172 tinterlace_pad_test_deps="tinterlace_filter"
3173 uspp_filter_deps="gpl avcodec"
3174 vaguedenoiser_filter_deps="gpl"
3175 vidstabdetect_filter_deps="libvidstab"
3176 vidstabtransform_filter_deps="libvidstab"
3177 zmq_filter_deps="libzmq"
3178 zoompan_filter_deps="swscale"
3179 zscale_filter_deps="libzimg"
3180 scale_vaapi_filter_deps="vaapi VAProcPipelineParameterBuffer"
3183 avio_dir_cmd_deps="avformat avutil"
3184 avio_reading_deps="avformat avcodec avutil"
3185 decode_audio_example_deps="avcodec avutil"
3186 decode_video_example_deps="avcodec avutil"
3187 demuxing_decoding_example_deps="avcodec avformat avutil"
3188 encode_audio_example_deps="avcodec avutil"
3189 encode_video_example_deps="avcodec avutil"
3190 extract_mvs_example_deps="avcodec avformat avutil"
3191 filter_audio_example_deps="avfilter avutil"
3192 filtering_audio_example_deps="avfilter avcodec avformat avutil"
3193 filtering_video_example_deps="avfilter avcodec avformat avutil"
3194 http_multiclient_example_deps="avformat avutil fork"
3195 metadata_example_deps="avformat avutil"
3196 muxing_example_deps="avcodec avformat avutil swscale"
3197 qsvdec_example_deps="avcodec avutil libmfx h264_qsv_decoder"
3198 remuxing_example_deps="avcodec avformat avutil"
3199 resampling_audio_example_deps="avutil swresample"
3200 scaling_video_example_deps="avutil swscale"
3201 transcode_aac_example_deps="avcodec avformat swresample"
3202 transcoding_example_deps="avfilter avcodec avformat avutil"
3204 # libraries, in linking order
3205 avcodec_deps="avutil"
3206 avcodec_select="null_bsf"
3207 avdevice_deps="avformat avcodec avutil"
3208 avfilter_deps="avutil"
3209 avformat_deps="avcodec avutil"
3210 avresample_deps="avutil"
3211 postproc_deps="avutil gpl"
3212 swresample_deps="avutil"
3213 swscale_deps="avutil"
3216 ffmpeg_deps="avcodec avfilter avformat swresample"
3217 ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter
3220 ffplay_deps="avcodec avformat swscale swresample sdl2"
3221 ffplay_extralibs='$sdl2_extralibs'
3222 ffplay_select="rdft crop_filter transpose_filter hflip_filter vflip_filter rotate_filter"
3223 ffprobe_deps="avcodec avformat"
3224 ffserver_deps="avformat fork sarestart"
3225 ffserver_select="ffm_muxer rtp_protocol rtsp_demuxer"
3228 podpages_deps="perl"
3229 manpages_deps="perl pod2man"
3230 htmlpages_deps="perl"
3231 htmlpages_deps_any="makeinfo_html texi2html"
3232 txtpages_deps="perl makeinfo"
3233 doc_deps_any="manpages htmlpages podpages txtpages"
3235 # default parameters
3237 logfile="ffbuild/config.log"
3239 # installation paths
3240 prefix_default="/usr/local"
3241 bindir_default='${prefix}/bin'
3242 datadir_default='${prefix}/share/ffmpeg'
3243 docdir_default='${prefix}/share/doc/ffmpeg'
3244 incdir_default='${prefix}/include'
3245 libdir_default='${prefix}/lib'
3246 mandir_default='${prefix}/share/man'
3252 host_cc_default="gcc"
3253 doxygen_default="doxygen"
3255 ln_s_default="ln -s -f"
3258 pkg_config_default=pkg-config
3259 ranlib_default="ranlib"
3260 strip_default="strip"
3261 version_script='--version-script'
3262 yasmexe_default="yasm"
3263 windres_default="windres"
3266 target_os_default=$(tolower $(uname -s))
3267 host_os=$target_os_default
3270 if test "$target_os_default" = aix; then
3271 arch_default=$(uname -p)
3272 strip_default="strip -X32_64"
3274 arch_default=$(uname -m)
3279 # configurable options
3280 enable $PROGRAM_LIST
3281 enable $DOCUMENT_LIST
3282 enable $EXAMPLE_LIST
3283 enable $(filter_out avresample $LIBRARY_LIST)
3289 enable faan faandct faanidct
3290 enable optimizations
3291 enable runtime_cpudetect
3292 enable safe_bitstream_reader
3294 enable swscale_alpha
3295 enable valgrind_backtrace
3297 sws_max_filter_size_default=256
3298 set_default sws_max_filter_size
3301 SHFLAGS='-shared -Wl,-soname,$$(@F)'
3304 FULLNAME='$(NAME)$(BUILDSUF)'
3305 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
3308 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
3309 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
3310 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
3311 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
3312 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
3313 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
3314 VERSION_SCRIPT_POSTPROCESS_CMD="cat"
3338 host_extralibs='-lm'
3339 host_cflags_filter=echo
3340 host_ldflags_filter=echo
3342 target_path='$(CURDIR)'
3344 # since the object filename is not given with the -MM flag, the compiler
3345 # is only able to print the basename, and we must add the path ourselves
3346 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>/dev/null | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(@F),$(@D)/$(@F)," > $(@:.o=.d)'
3350 if test -f configure; then
3353 source_path=$(cd $(dirname "$0"); pwd)
3354 case "$source_path" in
3355 *[[:blank:]]*) die "Out of tree builds are impossible with whitespace in source path." ;;
3357 test -e "$source_path/config.h" &&
3358 die "Out of tree builds are impossible with config.h in source dir."
3365 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
3371 file=$source_path/$3
3372 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
3375 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
3376 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
3377 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
3378 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
3379 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
3380 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
3381 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
3382 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
3383 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
3385 find_things_extern(){
3388 file=$source_path/$3
3389 sed -n "s/^[^#]*extern.*$pattern *ff_\([^ ]*\)_$thing;/\1_$thing/p" "$file"
3392 BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c)
3393 PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c)
3409 for n in $COMPONENT_LIST; do
3410 v=$(toupper ${n%s})_LIST
3412 eval ${n}_if_any="\$$v"
3415 enable $ARCH_EXT_LIST
3418 echo "Unknown option \"$1\"."
3419 echo "See $0 --help for available options."
3423 print_in_columns() {
3424 cols=$(expr $ncols / 24)
3425 cat | tr ' ' '\n' | sort | pr -r "-$cols" -w $ncols -t
3431 echo $* | sed s/$suffix//g | print_in_columns
3443 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
3444 echo "prob ${prob:-0.5}"
3452 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
3453 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
3462 --extra-ldexeflags=*)
3463 add_ldexeflags $optval
3465 --extra-ldlibflags=*)
3466 add_ldlibflags $optval
3469 add_extralibs $optval
3472 disable $INDEV_LIST $OUTDEV_LIST
3475 debuglevel="$optval"
3478 disable $PROGRAM_LIST
3480 --disable-everything)
3481 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
3484 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
3485 disable $LIBRARY_LIST $PROGRAM_LIST doc
3488 --enable-random|--disable-random)
3489 action=${opt%%-random}
3490 do_random ${action#--} $COMPONENT_LIST
3492 --enable-random=*|--disable-random=*)
3493 action=${opt%%-random=*}
3494 do_random ${action#--} $optval
3496 --enable-*=*|--disable-*=*)
3497 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
3498 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
3499 eval list=\$$(toupper $thing)_LIST
3500 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
3501 list=$(filter "$name" $list)
3502 [ "$list" = "" ] && warn "Option $opt did not match anything"
3505 --enable-?*|--disable-?*)
3506 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
3507 if is_in $option $COMPONENT_LIST; then
3508 test $action = disable && action=unset
3509 eval $action \$$(toupper ${option%s})_LIST
3510 elif is_in $option $CMDLINE_SELECT; then
3517 NAME="${opt#--list-}"
3518 is_in $NAME $COMPONENT_LIST || die_unknown $opt
3520 eval show_list $NAME \$$(toupper $NAME)_LIST
3522 --help|-h) show_help
3524 --quiet|-q) quiet=yes
3526 --fatal-warnings) enable fatal_warnings
3529 libfuzzer_path="$optval"
3532 optname="${opt%%=*}"
3533 optname="${optname#--}"
3534 optname=$(echo "$optname" | sed 's/-/_/g')
3535 if is_in $optname $CMDLINE_SET; then
3536 eval $optname='$optval'
3537 elif is_in $optname $CMDLINE_APPEND; then
3538 append $optname "$optval"
3550 # Mark specifically enabled, but normally autodetected libraries as requested.
3551 for lib in $AUTODETECT_LIBS; do
3552 enabled $lib && request $lib
3555 # Enable platform codecs by default.
3556 enable_weak audiotoolbox
3558 # Enable hwaccels by default.
3559 enable_weak d3d11va dxva2 vaapi vda vdpau videotoolbox_hwaccel xvmc
3562 enable_weak cuda cuvid nvenc vda_framework videotoolbox videotoolbox_encoder
3564 disabled logging && logfile=/dev/null
3566 die_license_disabled() {
3567 enabled $1 || { enabled $v && die "$v is $1 and --enable-$1 is not specified."; }
3570 die_license_disabled_gpl() {
3571 enabled $1 || { enabled $v && die "$v is incompatible with the gpl and --enable-$1 is not specified."; }
3574 map "die_license_disabled gpl" $EXTERNAL_LIBRARY_GPL_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
3575 map "die_license_disabled version3" $EXTERNAL_LIBRARY_VERSION3_LIST $EXTERNAL_LIBRARY_GPLV3_LIST
3577 enabled gpl && map "die_license_disabled_gpl nonfree" $EXTERNAL_LIBRARY_NONFREE_LIST
3578 map "die_license_disabled nonfree" $HWACCEL_LIBRARY_NONFREE_LIST
3580 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3582 # Disable all the library-specific components if the library itself
3583 # is disabled, see AVCODEC_LIST and following _LIST variables.
3585 disable_components(){
3586 disabled ${1} && disable $(
3587 eval components="\$$(toupper ${1})_COMPONENTS"
3588 map 'eval echo \${$(toupper ${v%s})_LIST}' $components
3592 map 'disable_components $v' $LIBRARY_LIST
3595 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
3598 test -n "$valgrind" && toolchain="valgrind-memcheck"
3600 enabled ossfuzz && {
3601 add_cflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp -fno-omit-frame-pointer
3602 add_ldflags -fsanitize=address,undefined -fsanitize-coverage=trace-pc-guard,trace-cmp
3605 case "$toolchain" in
3607 cc_default="${toolchain%-asan}"
3608 add_cflags -fsanitize=address
3609 add_ldflags -fsanitize=address
3612 cc_default="${toolchain%-msan}"
3613 add_cflags -fsanitize=memory -fsanitize-memory-track-origins
3614 add_ldflags -fsanitize=memory
3617 cc_default="${toolchain%-tsan}"
3618 add_cflags -fsanitize=thread -fPIE
3619 add_ldflags -fsanitize=thread -pie
3620 case "$toolchain" in
3628 cc_default="${toolchain%-usan}"
3629 add_cflags -fsanitize=undefined
3630 add_ldflags -fsanitize=undefined
3633 target_exec_default="valgrind"
3634 case "$toolchain" in
3636 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"
3639 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"
3644 # Check whether the current MSVC version needs the C99 converter.
3645 # From MSVC 2013 (compiler major version 18) onwards, it does actually
3646 # support enough of C99 to build ffmpeg. Default to the new
3647 # behaviour if the regexp was unable to match anything, since this
3648 # successfully parses the version number of existing supported
3649 # versions that require the converter (MSVC 2010 and 2012).
3650 cl_major_ver=$(cl 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p')
3651 if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
3655 cc_default="c99wrap cl"
3656 cxx_default="c99wrap cl"
3658 ld_default="$source_path/compat/windows/mslink"
3659 nm_default="dumpbin -symbols"
3666 target_os_default="win32"
3667 # Use a relative path for TMPDIR. This makes sure all the
3668 # ffconf temp files are written with a relative path, avoiding
3669 # issues with msys/win32 path conversion for MSVC parameters
3670 # such as -Fo<file> or -out:<file>.
3676 nm_default="dumpbin -symbols"
3678 target_os_default="win32"
3682 add_cflags -fprofile-arcs -ftest-coverage
3683 add_ldflags -fprofile-arcs -ftest-coverage
3686 add_cflags -fprofile-arcs -ftest-coverage
3687 add_ldflags --coverage
3690 add_cppflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2
3691 add_cflags -fno-strict-overflow -fstack-protector-all
3692 add_ldflags -Wl,-z,relro -Wl,-z,now
3694 add_ldexeflags -fPIE -pie
3697 die "Unknown toolchain $toolchain"
3701 test -n "$cross_prefix" && enable cross_compile
3703 if enabled cross_compile; then
3704 test -n "$arch" && test -n "$target_os" ||
3705 die "Must specify target arch (--arch) and OS (--target-os) when cross-compiling"
3708 ar_default="${cross_prefix}${ar_default}"
3709 cc_default="${cross_prefix}${cc_default}"
3710 cxx_default="${cross_prefix}${cxx_default}"
3711 nm_default="${cross_prefix}${nm_default}"
3712 pkg_config_default="${cross_prefix}${pkg_config_default}"
3713 if ${cross_prefix}${ranlib_default} 2>&1 | grep -q "\-D "; then
3714 ranlib_default="${cross_prefix}${ranlib_default} -D"
3716 ranlib_default="${cross_prefix}${ranlib_default}"
3718 strip_default="${cross_prefix}${strip_default}"
3719 windres_default="${cross_prefix}${windres_default}"
3721 sysinclude_default="${sysroot}/usr/include"
3723 set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
3724 target_exec target_os yasmexe
3725 enabled cross_compile || host_cc_default=$cc
3728 pkg_config_fail_message=""
3729 if ! $pkg_config --version >/dev/null 2>&1; then
3730 warn "$pkg_config not found, library detection may fail."
3732 elif is_in -static $cc $LDFLAGS && ! is_in --static $pkg_config $pkg_config_flags; then
3733 pkg_config_fail_message="
3734 Note: When building a static binary, add --pkg-config-flags=\"--static\"."
3737 if test $doxygen != $doxygen_default && \
3738 ! $doxygen --version >/dev/null 2>&1; then
3739 warn "Specified doxygen \"$doxygen\" not found, API documentation will fail to build."
3744 mingw32*|mingw64*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
3748 EXESUF=$(exesuf $target_os)
3749 HOSTEXESUF=$(exesuf $host_os)
3751 # set temporary file name
3752 : ${TMPDIR:=$TEMPDIR}
3756 if [ -n "$tempprefix" ] ; then
3758 echo $tempprefix.${HOSTNAME}.${UID}
3760 elif ! check_cmd mktemp -u XXXXXX; then
3761 # simple replacement for missing mktemp
3762 # NOT SAFE FOR GENERAL USE
3764 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
3769 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
3770 (set -C; exec > $tmp) 2>/dev/null ||
3771 die "Unable to create temporary file in $TMPDIR."
3772 append TMPFILES $tmp
3776 trap 'rm -f -- $TMPFILES' EXIT
3781 tmpfile TMPE $EXESUF
3793 # make sure we can execute files in $TMPDIR
3794 cat > $TMPSH 2>> $logfile <<EOF
3797 chmod +x $TMPSH >> $logfile 2>&1
3798 if ! $TMPSH >> $logfile 2>&1; then
3800 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
3801 variable to another directory and make sure that it is not mounted noexec.
3803 die "Sanity test failed."
3809 # Filter out MSVC cl.exe options from cflags that shouldn't
3810 # be passed to gas-preprocessor
3820 -std=c99) echo -c99 ;;
3821 -mcpu=*) echo -arch ${flag#*=} ;;
3822 -mieee) echo -ieee ;;
3823 -O*|-fast) echo $flag ;;
3824 -fno-math-errno) echo -assume nomath_errno ;;
3826 -Wall) echo -msg_enable level2 ;;
3827 -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
3828 -Wl,*) echo $flag ;;
3838 -Wno-switch) echo -Wno-switch-enum ;;
3839 -Wno-format-zero-length) ;;
3840 -Wdisabled-optimization) ;;
3841 -Wno-pointer-sign) echo -Wno-other ;;
3847 msvc_common_flags(){
3850 # In addition to specifying certain flags under the compiler
3851 # specific filters, they must be specified here as well or else the
3852 # generic catch all at the bottom will print the original flag.
3856 -fomit-frame-pointer) ;;
3860 -fno-signed-zeros) ;;
3864 -lz) echo zlib.lib ;;
3865 -lx264) echo libx264.lib ;;
3867 -l*) echo ${flag#-l}.lib ;;
3868 -LARGEADDRESSAWARE) echo $flag ;;
3869 -L*) echo -libpath:${flag#-L} ;;
3876 msvc_common_flags "$@"
3879 -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
3880 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
3881 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
3883 -wd4273 -wd4554 -wd4701 -wd4703 ;;
3889 msvc_common_flags "$@"
3892 # Despite what Intel's documentation says -Wall, which is supported
3893 # on Windows, does enable remarks so disable them here.
3894 -Wall) echo $flag -Qdiag-disable:remark ;;
3895 -std=c99) echo -Qstd=c99 ;;
3913 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
3914 -fomit-frame-pointer) echo -Mnoframe ;;
3925 case "${flag#*=}" in
3926 native) echo -xtarget=native ;;
3927 v9|niagara) echo -xarch=sparc ;;
3928 ultrasparc) echo -xarch=sparcvis ;;
3929 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
3930 i586|pentium) echo -xchip=pentium ;;
3931 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
3932 pentium3*|c3-2) echo -xtarget=pentium3 ;;
3933 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
3934 pentium4*) echo -xtarget=pentium4 ;;
3935 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
3936 *-sse3) echo -xarch=sse3 ;;
3937 core2) echo -xarch=ssse3 -xchip=core2 ;;
3938 bonnell) echo -xarch=ssse3 ;;
3939 corei7|nehalem) echo -xtarget=nehalem ;;
3940 westmere) echo -xtarget=westmere ;;
3941 silvermont) echo -xarch=sse4_2 ;;
3942 corei7-avx|sandybridge) echo -xtarget=sandybridge ;;
3943 core-avx*|ivybridge|haswell|broadwell|skylake*|knl)
3945 amdfam10|barcelona) echo -xtarget=barcelona ;;
3946 btver1) echo -xarch=amdsse4a ;;
3947 btver2|bdver*|znver*) echo -xarch=avx ;;
3948 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
3949 k8|opteron|athlon64|athlon-fx)
3950 echo -xarch=sse2a ;;
3951 athlon*) echo -xarch=pentium_proa ;;
3954 -std=c99) echo -xc99 ;;
3955 -fomit-frame-pointer) echo -xregs=frameptr ;;
3956 -fPIC) echo -KPIC -xcode=pic32 ;;
3957 -W*,*) echo $flag ;;
3958 -f*-*|-W*|-mimpure-text) ;;
3969 case "${flag#*=}" in
3970 armv7-a|cortex-a*) echo -mv=7a8 ;;
3971 armv7-r|cortex-r*) echo -mv=7r4 ;;
3972 armv7-m|cortex-m*) echo -mv=7m3 ;;
3973 armv6*|arm11*) echo -mv=6 ;;
3974 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
3976 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
3979 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
3980 -mfpu=vfp) echo --float_support=vfpv2 ;;
3981 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
3982 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
3983 -msoft-float) echo --float_support=vfplib ;;
3984 -O[0-3]|-mf=*) echo $flag ;;
3986 -pds=*) echo $flag ;;
3987 -D*|-I*) echo $flag ;;
3988 --gcc|--abi=*) echo $flag ;;
3999 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
4000 unset _ld_o _ldflags _ld_lib _ld_path
4001 unset _depflags _DEPCMD _DEPFLAGS
4004 if $_cc --version 2>&1 | grep -q '^GNU assembler'; then
4005 true # no-op to avoid reading stdin in following checks
4006 elif $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
4008 gcc_extra_ver=$(expr "$($_cc --version 2>/dev/null | head -n1)" : '.*\((.*)\)')
4009 _ident="llvm-gcc $($_cc -dumpversion 2>/dev/null) $gcc_extra_ver"
4010 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4013 elif $_cc -v 2>&1 | grep -qi ^gcc; then
4015 gcc_version=$($_cc --version | head -n1)
4016 gcc_basever=$($_cc -dumpversion)
4017 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
4018 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
4019 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
4020 case $gcc_basever in
4023 *) _depflags='-MMD -MF $(@:.o=.d) -MT $@' ;;
4025 if [ "$first" = true ]; then
4026 case $gcc_basever in
4028 warn "gcc 4.2 is outdated and may miscompile FFmpeg. Please use a newer compiler." ;;
4033 elif $_cc --version 2>/dev/null | grep -q ^icc; then
4035 _ident=$($_cc --version | head -n1)
4040 _flags_filter=icc_flags
4041 elif $_cc -v 2>&1 | grep -q xlc; then
4043 _ident=$($_cc -qversion 2>/dev/null | head -n1)
4045 _cflags_size='-O5 -qcompact'
4046 elif $_cc -V 2>/dev/null | grep -q Compaq; then
4048 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
4050 _cflags_speed='-fast'
4052 _flags_filter=ccc_flags
4053 elif $_cc --vsn 2>/dev/null | grep -Eq "ARM (C/C\+\+ )?Compiler"; then
4054 test -d "$sysroot" || die "No valid sysroot specified."
4056 _ident=$($_cc --vsn | grep -i build | head -n1 | sed 's/.*: //')
4057 armcc_conf="$PWD/armcc.conf"
4058 $_cc --arm_linux_configure \
4059 --arm_linux_config_file="$armcc_conf" \
4060 --configure_sysroot="$sysroot" \
4061 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
4062 die "Error creating armcc configuration file."
4063 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
4064 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
4065 as_default="${cross_prefix}gcc"
4069 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
4071 _ident=$($_cc -version | head -n1 | tr -s ' ')
4072 _flags='--gcc --abi=eabi -me'
4075 _depflags='-ppa -ppd=$(@:.o=.d)'
4076 _cflags_speed='-O3 -mf=5'
4077 _cflags_size='-O3 -mf=2'
4078 _flags_filter=tms470_flags
4079 elif $_cc -v 2>&1 | grep -q clang; then
4081 _ident=$($_cc --version 2>/dev/null | head -n1)
4082 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4085 elif $_cc -V 2>&1 | grep -q Sun; then
4087 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
4088 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
4089 _DEPFLAGS='-xM1 -xc99'
4092 _cflags_size='-O5 -xspace'
4093 _flags_filter=suncc_flags
4094 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
4096 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
4097 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4100 _flags_filter='filter_out -Wdisabled-optimization'
4101 elif $_cc -v 2>&1 | grep -q Open64; then
4103 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
4104 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
4107 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
4108 elif $_cc -V 2>&1 | grep -q Portland; then
4110 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
4111 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
4112 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
4113 _cflags_size="-O2 -Munroll=c:1 $opt_common"
4115 _flags_filter=pgi_flags
4116 elif $_cc 2>&1 | grep -q 'Microsoft.*ARM.*Assembler'; then
4118 _ident=$($_cc | head -n1)
4119 # 4509: "This form of conditional instruction is deprecated"
4120 _flags="-nologo -ignore 4509"
4121 _flags_filter=armasm_flags
4122 elif $_cc 2>&1 | grep -q Intel; then
4124 _ident=$($_cc 2>&1 | head -n1)
4125 _depflags='-QMMD -QMF$(@:.o=.d) -QMT$@'
4126 # Not only is O3 broken on 13.x+ but it is slower on all previous
4127 # versions (tested) as well.
4129 _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff
4130 if $_cc 2>&1 | grep -q Linker; then
4137 _flags_filter=icl_flags
4139 _ld_path='-libpath:'
4140 # -Qdiag-error to make icl error when seeing certain unknown arguments
4141 _flags='-nologo -Qdiag-error:4044,10157'
4142 # -Qvec- -Qsimd- to prevent miscompilation, -GS, fp:precise for consistency
4143 # with MSVC which enables it by default.
4144 _cflags='-Qms0 -Qvec- -Qsimd- -GS -fp:precise'
4146 elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then
4147 # lld can emulate multiple different linkers; in ms link.exe mode,
4148 # the -? parameter gives the help output which contains an identifyable
4149 # string, while it gives an error in other modes.
4151 # The link.exe mode doesn't have a switch for getting the version,
4152 # but we can force it back to gnu mode and get the version from there.
4153 _ident=$($_cc -flavor gnu --version 2>/dev/null)
4155 _flags_filter=msvc_flags
4157 _ld_path='-libpath:'
4158 elif $_cc -nologo- 2>&1 | grep -q Microsoft; then
4160 _ident=$($_cc 2>&1 | head -n1)
4161 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
4162 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
4166 if $_cc -nologo- 2>&1 | grep -q Linker; then
4173 _flags_filter=msvc_flags
4175 _ld_path='-libpath:'
4178 elif $_cc --version 2>/dev/null | grep -q ^cparser; then
4180 _ident=$($_cc --version | head -n1)
4184 _flags_filter=cparser_flags
4187 eval ${pfx}_type=\$_type
4188 eval ${pfx}_ident=\$_ident
4192 eval ${1}_C=\${_cc_c-\${${1}_C}}
4193 eval ${1}_E=\${_cc_e-\${${1}_E}}
4194 eval ${1}_O=\${_cc_o-\${${1}_O}}
4196 if [ -n "$_depflags" ]; then
4197 eval ${1}_DEPFLAGS=\$_depflags
4199 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
4200 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
4201 eval DEP${1}FLAGS=\$_flags
4205 probe_cc cc "$cc" "true"
4206 cflags_filter=$_flags_filter
4207 cflags_speed=$_cflags_speed
4208 cflags_size=$_cflags_size
4209 cflags_noopt=$_cflags_noopt
4210 add_cflags $_flags $_cflags
4211 cc_ldflags=$_ldflags
4215 probe_cc hostcc "$host_cc"
4216 host_cflags_filter=$_flags_filter
4217 add_host_cflags $_flags $_cflags
4220 test -n "$cc_type" && enable $cc_type ||
4221 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
4223 : ${as_default:=$cc}
4224 : ${objcc_default:=$cc}
4225 : ${dep_cc_default:=$cc}
4226 : ${ld_default:=$cc}
4227 : ${host_ld_default:=$host_cc}
4228 set_default ar as objcc dep_cc ld ln_s host_ld windres
4231 asflags_filter=$_flags_filter
4232 add_asflags $_flags $_cflags
4235 probe_cc objcc "$objcc"
4236 objcflags_filter=$_flags_filter
4237 add_objcflags $_flags $_cflags
4241 ldflags_filter=$_flags_filter
4242 add_ldflags $_flags $_ldflags
4243 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
4245 LD_LIB=${_ld_lib-$LD_LIB}
4246 LD_PATH=${_ld_path-$LD_PATH}
4248 probe_cc hostld "$host_ld"
4249 host_ldflags_filter=$_flags_filter
4250 add_host_ldflags $_flags $_ldflags
4251 HOSTLD_O=${_ld_o-$HOSTLD_O}
4253 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
4254 probe_cc depcc "$dep_cc"
4255 CCDEP=${_DEPCMD:-$DEPCMD}
4256 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
4260 if $ar 2>&1 | grep -q Microsoft; then
4263 elif $ar 2>&1 | grep -q 'Texas Instruments'; then
4266 elif $ar 2>&1 | grep -q 'Usage: ar.*-X.*any'; then
4267 arflags='-Xany -r -c'
4269 elif $ar 2>&1 | grep -q "\[D\] "; then
4277 add_cflags $extra_cflags
4278 add_cxxflags $extra_cxxflags
4279 add_objcflags $extra_objcflags
4280 add_asflags $extra_cflags
4282 if test -n "$sysroot"; then
4285 add_cppflags --sysroot="$sysroot"
4286 add_ldflags --sysroot="$sysroot"
4287 # On Darwin --sysroot may be ignored, -isysroot always affects headers and linking
4288 add_cppflags -isysroot "$sysroot"
4289 add_ldflags -isysroot "$sysroot"
4292 add_cppflags -I"$sysinclude"
4293 add_ldflags --sysroot="$sysroot"
4298 if test "$cpu" = host; then
4299 enabled cross_compile &&
4300 die "--cpu=host makes no sense when cross-compiling."
4305 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
4307 s/.*$1=\\([^ ]*\\).*/\\1/
4312 cpu=$(check_native -march || check_native -mcpu)
4316 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
4317 sed -n "/cc1.*-target-cpu /{
4318 s/.*-target-cpu \\([^ ]*\\).*/\\1/
4323 cpu=$(check_native -march)
4327 test "${cpu:-host}" = host &&
4328 die "--cpu=host not supported with compiler $cc"
4331 # Deal with common $arch aliases
4355 "Power Macintosh"|ppc*|powerpc*)
4370 i[3-6]86*|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
4375 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
4378 # Add processor-specific flags
4379 if enabled aarch64; then
4383 cpuflags="-march=$cpu"
4386 cpuflags="-mcpu=$cpu"
4390 elif enabled alpha; then
4392 cpuflags="-mcpu=$cpu"
4394 elif enabled arm; then
4397 check_cpp_condition stddef.h \
4398 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
4403 if check_arm_arch 4; then echo armv4
4404 elif check_arm_arch 4T; then echo armv4t
4405 elif check_arm_arch 5; then echo armv5
4406 elif check_arm_arch 5E; then echo armv5e
4407 elif check_arm_arch 5T; then echo armv5t
4408 elif check_arm_arch 5TE; then echo armv5te
4409 elif check_arm_arch 5TEJ; then echo armv5te
4410 elif check_arm_arch 6; then echo armv6
4411 elif check_arm_arch 6J; then echo armv6j
4412 elif check_arm_arch 6K; then echo armv6k
4413 elif check_arm_arch 6Z; then echo armv6z
4414 elif check_arm_arch 6ZK; then echo armv6zk
4415 elif check_arm_arch 6T2; then echo armv6t2
4416 elif check_arm_arch 7; then echo armv7
4417 elif check_arm_arch 7A 7_A; then echo armv7-a
4418 elif check_arm_arch 7S; then echo armv7-a
4419 elif check_arm_arch 7R 7_R; then echo armv7-r
4420 elif check_arm_arch 7M 7_M; then echo armv7-m
4421 elif check_arm_arch 7EM 7E_M; then echo armv7-m
4422 elif check_arm_arch 8A 8_A; then echo armv8-a
4426 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
4430 cpuflags="-march=$cpu"
4431 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
4434 cpuflags="-mcpu=$cpu"
4436 cortex-a*) subarch=armv7a ;;
4437 cortex-r*) subarch=armv7r ;;
4438 cortex-m*) enable thumb; subarch=armv7m ;;
4439 arm11*) subarch=armv6 ;;
4440 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
4441 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
4442 *) subarch=$(probe_arm_arch) ;;
4448 armv5t*) enable fast_clz ;;
4451 disabled fast_unaligned || enable fast_unaligned
4455 elif enabled avr32; then
4460 cpuflags="-mpart=$cpu"
4464 cpuflags="-march=$cpu"
4468 cpuflags="-mcpu=$cpu"
4472 cpuflags="-march=$cpu"
4476 elif enabled bfin; then
4478 cpuflags="-mcpu=$cpu"
4480 elif enabled mips; then
4482 cpuflags="-march=$cpu"
4484 if [ "$cpu" != "generic" ]; then
4494 24kc|24kf*|24kec|34kc|1004kc|24kef*|34kf*|1004kf*|74kc|74kf)
4505 enable local_aligned_8 local_aligned_16 local_aligned_32
4506 enable simd_align_16
4510 enable fast_unaligned
4511 disable aligned_stack
4517 cpuflags="-march=loongson3a -mhard-float -fno-expensive-optimizations"
4520 cpuflags="-march=loongson2e -mhard-float -fno-expensive-optimizations"
4523 cpuflags="-march=loongson2f -mhard-float -fno-expensive-optimizations"
4528 # Unknown CPU. Disable everything.
4529 warn "unknown CPU. Disabling all MIPS optimizations."
4552 24kef*|34kf*|1004kf*)
4560 check_cflags "-mtune=p5600" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops"
4564 check_cflags "-mtune=i6400 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
4568 check_cflags "-mtune=p6600 -mabi=64" && check_cflags "-msched-weight -mload-store-pairs -funroll-loops" && check_ldflags "-mabi=64"
4572 # We do not disable anything. Is up to the user to disable the unwanted features.
4573 warn 'generic cpu selected'
4576 elif enabled ppc; then
4580 case $(tolower $cpu) in
4581 601|ppc601|powerpc601)
4582 cpuflags="-mcpu=601"
4585 603*|ppc603*|powerpc603*)
4586 cpuflags="-mcpu=603"
4589 604*|ppc604*|powerpc604*)
4590 cpuflags="-mcpu=604"
4593 g3|75*|ppc75*|powerpc75*)
4594 cpuflags="-mcpu=750"
4597 g4|745*|ppc745*|powerpc745*)
4598 cpuflags="-mcpu=7450"
4601 74*|ppc74*|powerpc74*)
4602 cpuflags="-mcpu=7400"
4605 g5|970|ppc970|powerpc970)
4606 cpuflags="-mcpu=970"
4610 cpuflags="-mcpu=$cpu"
4614 cpuflags="-mcpu=$cpu"
4617 cpuflags="-mcpu=cell"
4622 cpuflags="-mcpu=e500mc"
4626 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
4631 cpuflags="-mcpu=8540 -mhard-float"
4637 elif enabled sparc; then
4640 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
4641 cpuflags="-mcpu=$cpu"
4643 ultrasparc*|niagara[234])
4644 cpuflags="-mcpu=$cpu"
4648 elif enabled x86; then
4652 cpuflags="-march=$cpu"
4656 # targets that do NOT support nopl and conditional mov (cmov)
4657 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
4658 cpuflags="-march=$cpu"
4661 # targets that do support nopl and conditional mov (cmov)
4662 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx\
4663 |core*|atom|bonnell|nehalem|westmere|silvermont|sandybridge|ivybridge|haswell|broadwell|skylake*|knl\
4664 |amdfam10|barcelona|b[dt]ver*|znver*)
4665 cpuflags="-march=$cpu"
4669 # targets that do support conditional mov but on which it's slow
4670 pentium4|pentium4m|prescott|nocona)
4671 cpuflags="-march=$cpu"
4679 if [ "$cpu" != generic ]; then
4680 add_cflags $cpuflags
4681 add_asflags $cpuflags
4682 test "$cc_type" = "$ld_type" && add_ldflags $cpuflags
4685 # compiler sanity check
4687 int main(void){ return 0; }
4689 if test "$?" != 0; then
4690 echo "$cc is unable to create an executable file."
4691 if test -z "$cross_prefix" && ! enabled cross_compile ; then
4692 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
4693 echo "Only do this if you know what cross compiling means."
4695 die "C compiler test failed."
4698 add_cppflags -D_ISOC99_SOURCE
4699 add_cxxflags -D__STDC_CONSTANT_MACROS
4700 check_cxxflags -std=c++11 || check_cxxflags -std=c++0x
4702 # some compilers silently accept -std=c11, so we also need to check that the
4703 # version macro is defined properly
4704 if test_cflags_cc -std=c11 ctype.h "__STDC_VERSION__ >= 201112L"; then
4707 check_cflags -std=c99
4710 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
4713 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
4717 add_host_cppflags -D_ISOC99_SOURCE
4718 check_host_cflags -std=c99
4719 check_host_cflags -Wall
4720 check_host_cflags -O3
4726 check_code cc "" "int test[2*($expr) - 1]" &&
4727 subarch=$arch64 || subarch=$arch32
4735 check_64bit mips mips64 '_MIPS_SIM > 1'
4739 check_64bit parisc parisc64 'sizeof(void *) > 4'
4743 check_64bit ppc ppc64 'sizeof(void *) > 4'
4747 check_64bit s390 s390x 'sizeof(void *) > 4'
4751 check_64bit sparc sparc64 'sizeof(void *) > 4'
4755 check_64bit x86_32 x86_64 'sizeof(void *) > 4'
4756 # Treat x32 as x64 for now. Note it also needs spic=$shared
4757 test "$subarch" = "x86_32" && check_cpp_condition stddef.h 'defined(__x86_64__)' &&
4759 if test "$subarch" = "x86_64"; then
4764 check_cc <<EOF && subarch="ppc64"
4765 int test[(int)sizeof(char*) - 7];
4771 enabled spic && enable_weak pic
4777 add_cppflags '-I\$(SRC_PATH)/compat/aix'
4778 enabled shared && add_ldflags -Wl,-brtl
4782 enable section_data_rel_ro
4783 SLIB_INSTALL_NAME='$(SLIBNAME)'
4785 SHFLAGS='-shared -Wl,-soname,$(SLIBNAME)'
4788 prefix_default="/boot/common"
4789 network_extralibs="-lnetwork"
4793 SHFLAGS='-shared -Wl,-h,$$(@F)'
4794 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
4795 network_extralibs="-lsocket -lnsl"
4796 add_cppflags -D__EXTENSIONS__
4797 # When using suncc to build, the Solaris linker will mark
4798 # an executable with each instruction set encountered by
4799 # the Solaris assembler. As our libraries contain their own
4800 # guards for processor-specific code, instead suppress
4801 # generation of the HWCAPS ELF section on Solaris x86 only.
4802 enabled_all suncc x86 &&
4803 echo "hwcap_1 = OVERRIDE;" > mapfile &&
4804 add_ldflags -Wl,-M,mapfile
4805 nm_default='nm -P -g'
4807 VERSION_SCRIPT_POSTPROCESS_CMD='perl $(SRC_PATH)/compat/solaris/make_sunver.pl - $(OBJS)'
4811 oss_indev_extralibs="-lossaudio"
4812 oss_outdev_extralibs="-lossaudio"
4813 enabled gcc || check_ldflags -Wl,-zmuldefs
4818 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
4820 oss_indev_extralibs="-lossaudio"
4821 oss_outdev_extralibs="-lossaudio"
4829 add_extralibs -lpoll -lgnugetopt
4833 enabled ppc && add_asflags -force_cpusubtype_ALL
4834 install_name_dir_default='$(SHLIBDIR)'
4835 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(INSTALL_NAME_DIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
4836 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
4838 add_ldflags -Wl,-dynamic,-search_paths_first
4840 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
4841 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
4843 enabled x86_64 && objformat="macho64"
4844 enabled_any pic shared x86_64 ||
4845 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
4846 check_header dispatch/dispatch.h &&
4847 add_cppflags '-I\$(SRC_PATH)/compat/dispatch_semaphore'
4848 version_script='-exported_symbols_list'
4849 VERSION_SCRIPT_POSTPROCESS_CMD='tr " " "\n" | sed -n /global:/,/local:/p | grep ";" | tr ";" "\n" | sed -E "s/(.+)/_\1/g" | sed -E "s/(.+[^*])$$$$/\1*/"'
4852 die "Native MSYS builds are discouraged, please use the MINGW environment."
4855 if test $target_os = "mingw32ce"; then
4861 if enabled x86_64; then
4862 LIBTARGET="i386:x86-64"
4863 elif enabled arm; then
4866 enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
4867 enabled x86_32 && check_ldflags -Wl,--large-address-aware
4868 shlibdir_default="$bindir_default"
4871 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
4872 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
4873 dlltool="${cross_prefix}dlltool"
4874 if check_cmd lib.exe -list; then
4875 SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe -nologo -machine:$(LIBTARGET) -def:$$(@:$(SLIBSUF)=.def) -out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
4876 if enabled x86_64; then
4879 elif check_cmd $dlltool --version; then
4880 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)'
4882 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
4884 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
4885 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
4886 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'
4890 check_ldflags -Wl,--nxcompat,--dynamicbase
4891 # Lets work around some stupidity in binutils.
4892 # ld will strip relocations from executables even though we need them
4893 # for dynamicbase (ASLR). Using -pie does retain the reloc section
4894 # however ld then forgets what the entry point should be (oops) so we
4895 # have to manually (re)set it.
4896 if enabled x86_32; then
4897 disabled debug && add_ldexeflags -Wl,--pic-executable,-e,_mainCRTStartup
4898 elif enabled x86_64; then
4899 disabled debug && add_ldexeflags -Wl,--pic-executable,-e,mainCRTStartup
4900 check_ldflags -Wl,--high-entropy-va # binutils 2.25
4901 # Set image base >4GB for extra entropy with HEASLR
4902 add_ldexeflags -Wl,--image-base,0x140000000
4903 append SHFLAGS -Wl,--image-base,0x180000000
4908 if enabled shared; then
4909 # Link to the import library instead of the normal static library
4912 # Cannot build both shared and static libs with MSVC or icl.
4915 enabled x86_32 && check_ldflags -LARGEADDRESSAWARE
4916 shlibdir_default="$bindir_default"
4919 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
4920 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
4921 SLIB_CREATE_DEF_CMD='$(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
4922 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
4924 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
4925 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
4926 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
4933 shlibdir_default="$bindir_default"
4936 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
4937 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
4938 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
4940 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
4941 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
4944 enabled shared && ! enabled small && check_cmd $windres --version && enable gnu_windres
4945 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
4947 *-dos|freedos|opendos)
4948 network_extralibs="-lsocket"
4951 add_cppflags -U__STRICT_ANSI__
4955 enable section_data_rel_ro
4959 ranlib="echo ignoring ranlib"
4964 add_cppflags -D_GNU_SOURCE
4965 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
4966 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
4970 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
4971 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(FULLNAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
4972 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(FULLNAME).def; \
4973 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(FULLNAME).def; \
4974 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(FULLNAME).def; \
4975 echo EXPORTS >> $(SUBDIR)$(FULLNAME).def; \
4976 emxexp $(OBJS) >> $(SUBDIR)$(FULLNAME).def'
4977 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.a $(SUBDIR)$(FULLNAME).def; \
4978 emximp -o $(SUBDIR)$(LIBPREF)$(FULLNAME)_dll.lib $(SUBDIR)$(FULLNAME).def;'
4979 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
4981 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(FULLNAME)_dll.a $(LIBPREF)$(FULLNAME)_dll.lib'
4983 enable_weak os2threads
4986 add_cppflags -D_BSD_SOURCE
4991 add_cppflags -D_QNX_SOURCE
4992 network_extralibs="-lsocket"
4997 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
4998 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
4999 add_ldflags -Wl,--target1-abs,--no-undefined \
5000 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
5001 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
5002 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
5003 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
5004 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
5007 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
5014 die "Unknown OS '$target_os'."
5018 # test if creating links works
5019 link_dest=$(mktemp -u $TMPDIR/dest_XXXXXXXX)
5020 link_name=$(mktemp -u $TMPDIR/name_XXXXXXXX)
5022 $ln_s "$link_dest" "$link_name"
5023 touch "$link_dest/test_file"
5024 if [ "$source_path" != "." ] && ([ ! -d src ] || [ -L src ]) && [ -e "$link_name/test_file" ]; then
5025 # create link to source path
5026 [ -e src ] && rm src
5027 $ln_s "$source_path" src
5030 # creating directory links doesn't work
5031 # fall back to using the full source path
5032 source_link="$source_path"
5038 # determine libc flavour
5043 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
5044 if check_${pfx}cpp_condition features.h "defined __UCLIBC__"; then
5045 eval ${pfx}libc_type=uclibc
5046 add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5047 elif check_${pfx}cpp_condition features.h "defined __GLIBC__"; then
5048 eval ${pfx}libc_type=glibc
5049 add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
5050 # MinGW headers can be installed on Cygwin, so check for newlib first.
5051 elif check_${pfx}cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
5052 eval ${pfx}libc_type=newlib
5053 add_${pfx}cppflags -U__STRICT_ANSI__ -D_XOPEN_SOURCE=600
5054 # MinGW64 is backwards compatible with MinGW32, so check for it first.
5055 elif check_${pfx}cpp_condition _mingw.h "defined __MINGW64_VERSION_MAJOR"; then
5056 eval ${pfx}libc_type=mingw64
5057 if check_${pfx}cpp_condition _mingw.h "__MINGW64_VERSION_MAJOR < 3"; then
5058 add_compat msvcrt/snprintf.o
5059 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
5061 add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
5062 eval test \$${pfx_no_}cc_type = "gcc" &&
5063 add_${pfx}cppflags -D__printf__=__gnu_printf__
5064 elif check_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION" ||
5065 check_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then
5066 eval ${pfx}libc_type=mingw32
5067 check_${pfx}cpp_condition _mingw.h "__MINGW32_MAJOR_VERSION > 3 || \
5068 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
5069 die "ERROR: MinGW32 runtime version must be >= 3.15."
5070 add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1
5071 check_${pfx}cpp_condition _mingw.h "defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0502" ||
5072 add_${pfx}cppflags -D_WIN32_WINNT=0x0502
5073 check_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700__" &&
5074 add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700
5075 eval test \$${pfx_no_}cc_type = "gcc" &&
5076 add_${pfx}cppflags -D__printf__=__gnu_printf__
5077 elif check_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
5078 eval ${pfx}libc_type=msvcrt
5079 if check_${pfx}cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14"; then
5080 if [ "$pfx" = host_ ]; then
5081 add_host_cppflags -Dsnprintf=_snprintf
5083 add_compat strtod.o strtod=avpriv_strtod
5084 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
5085 _snprintf=avpriv_snprintf \
5086 vsnprintf=avpriv_vsnprintf
5089 add_${pfx}cppflags -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS
5090 # The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
5091 # 0x601 by default unless something else is set by the user.
5092 # This can easily lead to us detecting functions only present
5093 # in such new versions and producing binaries requiring windows 7.0.
5094 # Therefore explicitly set the default to XP unless the user has
5095 # set something else on the command line.
5096 # Don't do this if WINAPI_FAMILY is set and is set to a non-desktop
5097 # family. For these cases, configure is free to use any functions
5098 # found in the SDK headers by default. (Alternatively, we could force
5099 # _WIN32_WINNT to 0x0602 in that case.)
5100 check_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" ||
5101 { check_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0502; }
5102 #ifdef WINAPI_FAMILY
5103 #include <winapifamily.h>
5104 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
5109 if [ "$pfx" = "" ]; then
5110 check_func strtoll || add_cflags -Dstrtoll=_strtoi64
5111 check_func strtoull || add_cflags -Dstrtoull=_strtoui64
5113 elif check_${pfx}cpp_condition stddef.h "defined __KLIBC__"; then
5114 eval ${pfx}libc_type=klibc
5115 elif check_${pfx}cpp_condition sys/cdefs.h "defined __BIONIC__"; then
5116 eval ${pfx}libc_type=bionic
5117 elif check_${pfx}cpp_condition sys/brand.h "defined LABELED_BRAND_NAME"; then
5118 eval ${pfx}libc_type=solaris
5119 add_${pfx}cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
5121 check_${pfx}cc <<EOF
5123 void *v = localtime_r;
5125 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
5127 void *v = localtime_r;
5133 test -n "$libc_type" && enable libc_$libc_type
5135 test -n "$host_libc_type" && enable host_libc_$host_libc_type
5139 add_compat strtod.o strtod=avpriv_strtod
5143 # hacks for compiler/libc/os combinations
5145 if enabled_all tms470 libc_glibc; then
5146 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
5147 add_cppflags -D__USER_LABEL_PREFIX__=
5148 add_cppflags -D__builtin_memset=memset
5149 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
5150 add_cflags -pds=48 # incompatible redefinition of macro
5153 if enabled_all ccc libc_glibc; then
5154 add_ldflags -Wl,-z,now # calls to libots crash without this
5157 check_compile_assert flt_lim "float.h limits.h" "DBL_MAX == (double)DBL_MAX" ||
5158 add_cppflags '-I\$(SRC_PATH)/compat/float'
5161 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
5164 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" > ffbuild/config.fate
5166 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
5169 : ${shlibdir_default:="$libdir"}
5170 : ${pkgconfigdir_default:="$libdir/pkgconfig"}
5172 set_default $PATHS_LIST
5175 # we need to build at least one lib type
5176 if ! enabled_any static shared; then
5178 At least one library type must be built.
5179 Specify --enable-static to build the static libraries or --enable-shared to
5180 build the shared libraries as well. To only build the shared libraries specify
5181 --disable-static in addition to --enable-shared.
5186 disabled optimizations || enabled ossfuzz || check_cflags -fomit-frame-pointer
5189 disabled pic && return
5192 case "$target_os" in
5202 enabled pic && enable_weak_pic
5204 check_cc <<EOF || die "Symbol mangling check failed."
5207 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
5208 extern_prefix=${sym%%ff_extern*}
5210 check_cc <<EOF && enable_weak inline_asm
5211 void foo(void) { __asm__ volatile ("" ::); }
5215 for restrict_keyword in restrict __restrict__ __restrict; do
5216 check_cc <<EOF && _restrict=$restrict_keyword && break
5217 void foo(char * $restrict_keyword p);
5221 check_cc <<EOF && enable pragma_deprecated
5222 void foo(void) { _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") }
5225 check_cc <<EOF && enable attribute_packed
5226 struct { int x; } __attribute__((packed)) x;
5229 check_cc <<EOF && enable attribute_may_alias
5230 union { int x; } __attribute__((may_alias)) x;
5233 check_cc <<EOF || die "endian test failed"
5234 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
5236 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
5238 if ! enabled ppc64 || enabled bigendian; then
5243 log "check_gas using '$as' as AS"
5244 # :vararg is used on aarch64, arm and ppc altivec
5245 check_as <<EOF || return 1
5246 .macro m n, y:vararg=0
5251 # .altmacro is only used in arm asm
5252 ! enabled arm || check_as <<EOF || return 1
5259 if enabled_any arm aarch64 || enabled_all ppc altivec && enabled asm; then
5261 enabled_any arm aarch64 && nogas=die
5262 enabled_all ppc altivec && [ $target_os_default != aix ] && nogas=warn
5266 arm*) gaspp_as_type=armasm; as_noop=-h ;;
5267 gcc) gaspp_as_type=gas ;;
5268 *) gaspp_as_type=$as_type ;;
5271 [ $target_os = "darwin" ] && gaspp_as_type="apple-$gaspp_as_type"
5273 test "${as#*gas-preprocessor.pl}" != "$as" ||
5274 check_cmd gas-preprocessor.pl -arch $arch -as-type $gaspp_as_type -- ${as:=$cc} $as_noop &&
5275 gas="${gas:=gas-preprocessor.pl} -arch $arch -as-type $gaspp_as_type -- ${as:=$cc}"
5277 if ! check_gas ; then
5280 $nogas "GNU assembler not found, install/update gas-preprocessor"
5283 check_as <<EOF && enable as_func
5289 check_inline_asm inline_asm_labels '"1:\n"'
5291 check_inline_asm inline_asm_nonlocal_labels '"Label:\n"'
5293 if enabled aarch64; then
5294 enabled armv8 && check_insn armv8 'prfm pldl1strm, [x0]'
5295 # internal assembler in clang 3.3 does not support this instruction
5296 enabled neon && check_insn neon 'ext v0.8B, v0.8B, v1.8B, #1'
5297 enabled vfp && check_insn vfp 'fmadd d0, d0, d1, d2'
5299 map 'enabled_any ${v}_external ${v}_inline || disable $v' $ARCH_EXT_LIST_ARM
5301 elif enabled alpha; then
5305 elif enabled arm; then
5307 enabled msvc && check_cpp_condition stddef.h "defined _M_ARMT" && enable thumb
5309 check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
5310 float func(float a, float b){ return a+b; }
5313 enabled thumb && check_cflags -mthumb || check_cflags -marm
5315 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
5317 elif check_cpp_condition stddef.h "defined _M_ARM_FP && _M_ARM_FP >= 30"; then
5319 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__" && [ $target_os != darwin ]; then
5320 case "${cross_prefix:-$cc}" in
5321 *hardfloat*) enable vfp_args; fpabi=vfp ;;
5322 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
5323 __asm__ (".eabi_attribute 28, 1");
5324 int main(void) { return 0; }
5327 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
5330 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
5331 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
5332 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
5333 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
5334 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
5335 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
5336 enabled setend && check_insn setend 'setend be'
5338 [ $target_os = linux ] || [ $target_os = android ] ||
5339 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
5342 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
5344 check_as <<EOF && enable as_dn_directive
5348 check_as <<EOF && enable as_fpu_directive
5352 # llvm's integrated assembler supports .object_arch from llvm 3.5
5353 [ "$objformat" = elf ] && check_as <<EOF && enable as_object_arch
5357 [ $target_os != win32 ] && enabled_all armv6t2 shared !pic && enable_weak_pic
5359 elif enabled mips; then
5361 enabled loongson2 && check_inline_asm loongson2 '"dmult.g $8, $9, $10"'
5362 enabled loongson3 && check_inline_asm loongson3 '"gsldxc1 $f0, 0($2, $3)"'
5363 enabled mmi && check_inline_asm mmi '"punpcklhw $f0, $f0, $f0"'
5365 # Enable minimum ISA based on selected options
5366 if enabled mips64; then
5367 enabled mips64r6 && check_inline_asm_flags mips64r6 '"dlsa $0, $0, $0, 1"' '-mips64r6'
5368 enabled mips64r2 && check_inline_asm_flags mips64r2 '"dext $0, $0, 0, 1"' '-mips64r2'
5369 disabled mips64r6 && disabled mips64r2 && check_inline_asm_flags mips64r1 '"daddi $0, $0, 0"' '-mips64'
5371 enabled mips32r6 && check_inline_asm_flags mips32r6 '"aui $0, $0, 0"' '-mips32r6'
5372 enabled mips32r5 && check_inline_asm_flags mips32r5 '"eretnc"' '-mips32r5'
5373 enabled mips32r2 && check_inline_asm_flags mips32r2 '"ext $0, $0, 0, 1"' '-mips32r2'
5374 disabled mips32r6 && disabled mips32r5 && disabled mips32r2 && check_inline_asm_flags mips32r1 '"addi $0, $0, 0"' '-mips32'
5377 enabled mipsfpu && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f2"' '-mhard-float'
5378 enabled mipsfpu && (enabled mips32r5 || enabled mips32r6 || enabled mips64r6) && check_inline_asm_flags mipsfpu '"cvt.d.l $f0, $f1"' '-mfp64'
5379 enabled mipsfpu && enabled msa && check_inline_asm_flags msa '"addvi.b $w0, $w1, 1"' '-mmsa' && check_header msa.h || disable msa
5380 enabled mipsdsp && check_inline_asm_flags mipsdsp '"addu.qb $t0, $t1, $t2"' '-mdsp'
5381 enabled mipsdspr2 && check_inline_asm_flags mipsdspr2 '"absq_s.qb $t0, $t1"' '-mdspr2'
5383 elif enabled parisc; then
5385 if enabled gcc; then
5386 case $($cc -dumpversion) in
5387 4.[3-9].*) check_cflags -fno-optimize-sibling-calls ;;
5391 elif enabled ppc; then
5393 enable local_aligned_8 local_aligned_16 local_aligned_32
5395 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
5396 check_inline_asm ibm_asm '"add 0, 0, 0"'
5397 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
5398 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
5400 # AltiVec flags: The FSF version of GCC differs from the Apple version
5401 if enabled altivec; then
5402 check_cflags -maltivec -mabi=altivec &&
5403 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
5404 check_cflags -faltivec
5406 # check if our compiler supports Motorola AltiVec C API
5407 check_cc <<EOF || disable altivec
5410 vector signed int v1 = (vector signed int) { 0 };
5411 vector signed int v2 = (vector signed int) { 1 };
5412 v1 = vec_add(v1, v2);
5417 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
5420 if enabled vsx; then
5421 check_cflags -mvsx &&
5422 check_builtin vec_vsx_ld "altivec.h" "__builtin_vec_vsx_ld" || disable vsx
5425 if enabled power8; then
5426 check_cpp_condition "altivec.h" "defined(_ARCH_PWR8)" || disable power8
5429 elif enabled x86; then
5431 check_builtin rdtsc intrin.h "__rdtsc()"
5432 check_builtin mm_empty mmintrin.h "_mm_empty()"
5434 enable local_aligned_8 local_aligned_16 local_aligned_32
5436 # check whether EBP is available on x86
5437 # As 'i' is stored on the stack, this program will crash
5438 # if the base pointer is used to access it because the
5439 # base pointer is cleared in the inline assembly code.
5440 check_exec_crash <<EOF && enable ebp_available
5442 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
5446 # check whether EBX is available on x86
5447 check_inline_asm ebx_available '""::"b"(0)' &&
5448 check_inline_asm ebx_available '"":::"%ebx"'
5450 # check whether xmm clobbers are supported
5451 check_inline_asm xmm_clobbers '"":::"%xmm0"'
5453 check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test, %eax"' ||
5454 check_inline_asm inline_asm_direct_symbol_refs '"movl '$extern_prefix'test(%rip), %eax"'
5456 # check whether binutils is new enough to compile SSSE3/MMXEXT
5457 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
5458 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
5460 if ! disabled_any asm mmx yasm; then
5461 if check_cmd $yasmexe --version; then
5462 enabled x86_64 && yasm_extra="-m amd64"
5463 yasm_debug="-g dwarf2"
5464 elif check_cmd nasm -v; then
5466 yasm_debug="-g -F dwarf"
5467 if enabled x86_64; then
5468 case "$objformat" in
5469 elf) objformat=elf64 ;;
5470 win32) objformat=win64 ;;
5475 YASMFLAGS="-f $objformat $yasm_extra"
5476 enabled pic && append YASMFLAGS "-DPIC"
5477 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
5478 case "$objformat" in
5479 elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
5482 check_yasm "movbe ecx, [5]" && enable yasm ||
5483 die "yasm/nasm not found or too old. Use --disable-yasm for a crippled build."
5484 check_yasm "vextracti128 xmm0, ymm0, 0" || disable avx2_external
5485 check_yasm "vpmacsdd xmm0, xmm1, xmm2, xmm3" || disable xop_external
5486 check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
5487 check_yasm "CPU amdnop" || disable cpunop
5491 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
5498 check_code cc arm_neon.h "int16x8_t test = vdupq_n_s16(0)" && enable intrinsics_neon
5500 check_ldflags -Wl,--as-needed
5501 check_ldflags -Wl,-z,noexecstack
5503 if check_func dlopen && check_func dlsym; then
5505 elif check_func dlopen -ldl && check_func dlsym -ldl; then
5509 avisynth_demuxer_extralibs='$ldl'
5510 cuda_extralibs='$ldl'
5511 decklink_outdev_extralibs="$decklink_outdev_extralibs $ldl"
5512 decklink_indev_extralibs="$decklink_indev_extralibs $ldl"
5513 frei0r_filter_extralibs='$ldl'
5514 frei0r_src_filter_extralibs='$ldl'
5515 ladspa_filter_extralibs='$ldl'
5516 nvenc_extralibs='$ldl'
5517 coreimage_filter_extralibs="-framework QuartzCore -framework AppKit -framework OpenGL"
5518 coreimagesrc_filter_extralibs="-framework QuartzCore -framework AppKit -framework OpenGL"
5520 if ! disabled network; then
5521 check_func getaddrinfo $network_extralibs
5522 check_func inet_aton $network_extralibs
5524 check_type netdb.h "struct addrinfo"
5525 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
5526 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
5527 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
5528 check_type poll.h "struct pollfd"
5529 check_type netinet/sctp.h "struct sctp_event_subscribe"
5530 check_struct "sys/socket.h" "struct msghdr" msg_flags
5531 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
5532 check_type netinet/in.h "struct sockaddr_in6"
5533 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
5534 check_type "sys/types.h sys/socket.h" socklen_t
5536 # Prefer arpa/inet.h over winsock2
5537 if check_header arpa/inet.h ; then
5538 check_func closesocket
5539 elif check_header winsock2.h ; then
5540 check_func_headers winsock2.h closesocket -lws2 &&
5541 network_extralibs="-lws2" ||
5542 { check_func_headers winsock2.h closesocket -lws2_32 &&
5543 network_extralibs="-lws2_32"; } || disable winsock2_h network
5544 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
5546 check_type ws2tcpip.h socklen_t
5547 check_type ws2tcpip.h "struct addrinfo"
5548 check_type ws2tcpip.h "struct group_source_req"
5549 check_type ws2tcpip.h "struct ip_mreq_source"
5550 check_type ws2tcpip.h "struct ipv6_mreq"
5551 check_type winsock2.h "struct pollfd"
5552 check_struct winsock2.h "struct sockaddr" sa_len
5553 check_type ws2tcpip.h "struct sockaddr_in6"
5554 check_type ws2tcpip.h "struct sockaddr_storage"
5560 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
5561 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
5562 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
5563 check_builtin sarestart signal.h "SA_RESTART"
5564 check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" -lpthread
5565 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
5566 check_builtin gmtime_r time.h "time_t *time; struct tm *tm; gmtime_r(time, tm)"
5567 check_builtin localtime_r time.h "time_t *time; struct tm *tm; localtime_r(time, tm)"
5568 check_builtin x264_csp_bgr "stdint.h x264.h" "X264_CSP_BGR"
5570 case "$custom_allocator" in
5572 # jemalloc by default does not use a prefix
5573 require libjemalloc jemalloc/jemalloc.h malloc -ljemalloc
5576 require_pkg_config libtcmalloc gperftools/tcmalloc.h tc_malloc
5581 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
5582 check_func ${malloc_prefix}memalign && enable memalign
5583 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
5586 check_func_headers stdlib.h arc4random
5587 check_func_headers time.h clock_gettime ||
5588 { check_lib clock_gettime time.h clock_gettime -lrt && LIBRT="-lrt"; }
5591 check_func gethrtime
5593 check_func getrusage
5594 check_func gettimeofday
5596 check_func mach_absolute_time
5600 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
5601 check_func_headers time.h nanosleep ||
5602 { check_lib nanosleep time.h nanosleep -lrt && LIBRT="-lrt"; }
5603 check_func sched_getaffinity
5604 check_func setrlimit
5605 check_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE
5606 check_func strerror_r
5611 check_func_headers conio.h kbhit
5612 check_func_headers io.h setmode
5613 check_func_headers lzo/lzo1x.h lzo1x_999_compress
5614 check_func_headers stdlib.h getenv
5615 check_func_headers sys/stat.h lstat
5617 check_func_headers windows.h GetProcessAffinityMask
5618 check_func_headers windows.h GetProcessTimes
5619 check_func_headers windows.h GetSystemTimeAsFileTime
5620 check_func_headers windows.h LoadLibrary
5621 check_func_headers windows.h MapViewOfFile
5622 check_func_headers windows.h PeekNamedPipe
5623 check_func_headers windows.h SetConsoleTextAttribute
5624 check_func_headers windows.h SetConsoleCtrlHandler
5625 check_func_headers windows.h Sleep
5626 check_func_headers windows.h VirtualAlloc
5627 check_struct windows.h "CONDITION_VARIABLE" Ptr
5628 check_func_headers glob.h glob
5630 check_func_headers "X11/Xlib.h X11/extensions/Xvlib.h" XvGetPortAttribute -lXv -lX11 -lXext
5632 check_header AudioToolbox/AudioToolbox.h
5633 check_header d3d11.h
5634 check_header direct.h
5635 check_header dirent.h
5636 check_header dlfcn.h
5638 check_header dxva2api.h -D_WIN32_WINNT=0x0600
5640 check_header libcrystalhd/libcrystalhd_if.h
5641 check_header mach/mach_time.h
5642 check_header malloc.h
5643 check_header net/udplite.h
5645 check_header sys/mman.h
5646 check_header sys/param.h
5647 check_header sys/resource.h
5648 check_header sys/select.h
5649 check_header sys/time.h
5650 check_header sys/un.h
5651 check_header termios.h
5652 check_header unistd.h
5653 check_header valgrind/valgrind.h
5654 check_header VideoDecodeAcceleration/VDADecoder.h
5655 check_header VideoToolbox/VideoToolbox.h
5656 check_func_headers VideoToolbox/VTCompressionSession.h VTCompressionSessionPrepareToEncodeFrames -framework VideoToolbox
5657 enabled videotoolbox && check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferColorPrimaries_ITU_R_2020 -framework CoreVideo
5658 check_header windows.h
5659 check_header X11/extensions/XvMClib.h
5660 check_header asm/types.h
5662 # it seems there are versions of clang in some distros that try to use the
5663 # gcc headers, which explodes for stdatomic
5664 # so we also check that atomics actually work here
5665 check_builtin stdatomic_h stdatomic.h "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0)"
5667 check_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32
5668 check_lib wincrypt "windows.h wincrypt.h" CryptGenRandom -ladvapi32
5669 check_lib psapi "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
5671 check_lib coreservices "CoreServices/CoreServices.h" UTGetOSTypeFromString "-framework CoreServices"
5673 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
5675 check_type "windows.h dxva.h" "DXVA_PicParams_HEVC" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
5676 check_type "windows.h dxva.h" "DXVA_PicParams_VP9" -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -D_CRT_BUILD_DESKTOP_APP=0
5677 check_type "windows.h d3d11.h" "ID3D11VideoDecoder"
5678 check_type "windows.h d3d11.h" "ID3D11VideoContext"
5679 check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
5681 check_type "va/va.h va/va_dec_hevc.h" "VAPictureParameterBufferHEVC"
5682 check_struct "va/va.h" "VADecPictureParameterBufferVP9" bit_depth
5683 check_type "va/va.h va/va_vpp.h" "VAProcPipelineParameterBuffer"
5684 check_type "va/va.h va/va_enc_h264.h" "VAEncPictureParameterBufferH264"
5685 check_type "va/va.h va/va_enc_hevc.h" "VAEncPictureParameterBufferHEVC"
5686 check_type "va/va.h va/va_enc_jpeg.h" "VAEncPictureParameterBufferJPEG"
5687 check_type "va/va.h va/va_enc_mpeg2.h" "VAEncPictureParameterBufferMPEG2"
5688 check_type "va/va.h va/va_enc_vp8.h" "VAEncPictureParameterBufferVP8"
5690 check_type "vdpau/vdpau.h" "VdpPictureInfoHEVC"
5692 check_cpp_condition windows.h "!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)" && enable winrt || disable winrt
5694 if ! disabled w32threads && ! enabled pthreads; then
5695 check_func_headers "windows.h process.h" _beginthreadex &&
5696 enable w32threads || disable w32threads
5697 if ! enabled w32threads && enabled winrt; then
5698 check_func_headers "windows.h" CreateThread &&
5699 enable w32threads || disable w32threads
5703 # check for some common methods of building with pthread support
5704 # do this before the optional library checks as some of them require pthreads
5705 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
5706 if check_lib pthreads pthread.h pthread_join -pthread &&
5707 check_lib pthreads pthread.h pthread_create -pthread; then
5709 elif check_lib pthreads pthread.h pthread_join -pthreads &&
5710 check_lib pthreads pthread.h pthread_create -pthreads; then
5711 add_cflags -pthreads
5712 elif check_lib pthreads pthread.h pthread_join -ldl -pthread &&
5713 check_lib pthreads pthread.h pthread_create -ldl -pthread; then
5714 add_cflags -ldl -pthread
5715 elif check_lib pthreads pthread.h pthread_join -lpthreadGC2 &&
5716 check_lib pthreads pthread.h pthread_create -lpthreadGC2; then
5718 elif check_lib pthreads pthread.h pthread_join -lpthread &&
5719 check_lib pthreads pthread.h pthread_create -lpthread; then
5721 elif check_func pthread_join && check_func pthread_create; then
5724 check_code cc "pthread.h" "static pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER" || disable pthreads
5728 if enabled pthreads; then
5729 check_func pthread_cancel
5733 check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)"
5735 disabled zlib || check_lib zlib zlib.h zlibVersion -lz
5736 disabled bzlib || check_lib bzlib bzlib.h BZ2_bzlibVersion -lbz2
5737 disabled lzma || check_lib lzma lzma.h lzma_version_number -llzma
5739 check_lib libm math.h sin -lm && LIBM="-lm"
5740 disabled crystalhd || check_lib crystalhd "stdint.h libcrystalhd/libcrystalhd_if.h" DtsCrystalHDVersion -lcrystalhd
5748 for func in $MATH_FUNCS; do
5749 eval check_mathfunc $func \${${func}_args:-1} $LIBM
5752 for func in $COMPLEX_FUNCS; do
5753 eval check_complexfunc $func \${${func}_args:-1}
5756 # these are off by default, so fail if requested and not available
5757 enabled avfoundation_indev && { check_header_objcc AVFoundation/AVFoundation.h || disable avfoundation_indev; }
5758 enabled avfoundation_indev && { check_lib avfoundation_indev CoreGraphics/CoreGraphics.h CGGetActiveDisplayList -framework CoreGraphics ||
5759 check_lib avfoundation_indev ApplicationServices/ApplicationServices.h CGGetActiveDisplayList -framework ApplicationServices; }
5760 enabled cuda_sdk && require cuda_sdk cuda.h cuCtxCreate -lcuda
5761 enabled cuvid && { enabled cuda ||
5762 die "ERROR: CUVID requires CUDA"; }
5763 enabled chromaprint && require chromaprint chromaprint.h chromaprint_get_version -lchromaprint
5764 enabled coreimage_filter && { check_header_objcc QuartzCore/CoreImage.h || disable coreimage_filter; }
5765 enabled coreimagesrc_filter && { check_header_objcc QuartzCore/CoreImage.h || disable coreimagesrc_filter; }
5766 enabled decklink && { { check_header DeckLinkAPI.h || die "ERROR: DeckLinkAPI.h header not found"; } &&
5767 { check_cpp_condition DeckLinkAPIVersion.h "BLACKMAGIC_DECKLINK_API_VERSION >= 0x0a060100" || die "ERROR: Decklink API version must be >= 10.6.1."; } }
5768 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
5769 enabled gmp && require gmp gmp.h mpz_export -lgmp
5770 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
5771 enabled jni && { [ $target_os = "android" ] && check_header jni.h && enabled pthreads &&
5772 check_lib jni "dlfcn.h" dlopen -ldl || die "ERROR: jni not found"; }
5773 enabled ladspa && { check_header ladspa.h || die "ERROR: ladspa.h header not found"; }
5774 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
5775 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
5776 enabled libbluray && require_pkg_config libbluray libbluray/bluray.h bd_open
5777 enabled libbs2b && require_pkg_config libbs2b bs2b.h bs2b_open
5778 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
5779 { check_lib libcelt celt/celt.h celt_decoder_create_custom -lcelt0 ||
5780 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
5781 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
5782 enabled libdc1394 && require_pkg_config libdc1394-2 dc1394/dc1394.h dc1394_new
5783 enabled libfdk_aac && { use_pkg_config fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
5784 { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
5785 warn "using libfdk without pkg-config"; } }
5786 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"
5787 enabled libflite && require libflite "flite/flite.h" flite_init $flite_extralibs
5788 enabled fontconfig && enable libfontconfig
5789 enabled libfontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
5790 enabled libfreetype && require_pkg_config freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
5791 enabled libfribidi && require_pkg_config fribidi fribidi.h fribidi_version_info
5792 enabled libgme && require libgme gme/gme.h gme_new_emu -lgme -lstdc++
5793 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
5794 check_lib libgsm "${gsm_hdr}" gsm_create -lgsm && break;
5795 done || die "ERROR: libgsm not found"; }
5796 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
5797 enabled libkvazaar && require_pkg_config "kvazaar >= 0.8.1" kvazaar.h kvz_api_get
5798 # While it may appear that require is being used as a pkg-config
5799 # fallback for libmfx, it is actually being used to detect a different
5800 # installation route altogether. If libmfx is installed via the Intel
5801 # Media SDK or Intel Media Server Studio, these don't come with
5802 # pkg-config support. Instead, users should make sure that the build
5803 # can find the libraries and headers through other means.
5804 enabled libmfx && { use_pkg_config libmfx "mfx/mfxvideo.h" MFXInit ||
5805 { require libmfx "mfx/mfxvideo.h" MFXInit -llibmfx && warn "using libmfx without pkg-config"; } }
5806 enabled libmodplug && require_pkg_config libmodplug libmodplug/modplug.h ModPlug_Load
5807 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
5808 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
5809 enabled libnpp && require libnpp npp.h nppGetLibVersion -lnppi -lnppc
5810 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
5811 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
5812 enabled libopencv && { check_header opencv2/core/core_c.h &&
5813 { use_pkg_config opencv opencv2/core/core_c.h cvCreateImageHeader ||
5814 require opencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } ||
5815 require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader; }
5816 enabled libopenh264 && require_pkg_config openh264 wels/codec_api.h WelsGetCodecVersion
5817 enabled libopenjpeg && { { check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5818 check_lib libopenjpeg openjpeg-2.1/openjpeg.h opj_version -lopenjp2 ||
5819 { check_lib libopenjpeg openjpeg-2.0/openjpeg.h opj_version -lopenjp2 -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5820 { check_lib libopenjpeg openjpeg-1.5/openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5821 { check_lib libopenjpeg openjpeg.h opj_version -lopenjpeg -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } ||
5822 die "ERROR: libopenjpeg not found"; }
5823 enabled libopenmpt && require_pkg_config "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create
5824 enabled libopus && {
5825 enabled libopus_decoder && {
5826 require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
5828 enabled libopus_encoder && {
5829 require_pkg_config opus opus_multistream.h opus_multistream_surround_encoder_create
5832 enabled libpulse && require_pkg_config libpulse pulse/pulseaudio.h pa_context_new
5833 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
5834 enabled librubberband && require_pkg_config "rubberband >= 1.8.1" rubberband/rubberband-c.h rubberband_new
5835 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
5836 enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_buffer
5837 enabled libsmbclient && { use_pkg_config smbclient libsmbclient.h smbc_init ||
5838 require smbclient libsmbclient.h smbc_init -lsmbclient; }
5839 enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy
5840 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr && LIBSOXR="-lsoxr"
5841 enabled libssh && require_pkg_config libssh libssh/sftp.h sftp_init
5842 enabled libspeex && require_pkg_config speex speex/speex.h speex_decoder_init -lspeex
5843 enabled libtesseract && require_pkg_config tesseract tesseract/capi.h TessBaseAPICreate
5844 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
5845 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
5846 { check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
5847 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
5848 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
5849 enabled libvidstab && require_pkg_config "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
5850 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
5851 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
5854 enabled libvpx_vp8_decoder && {
5855 use_pkg_config "vpx >= 0.9.1" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp8_dx ||
5856 check_lib libvpx_vp8_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
5857 die "ERROR: libvpx decoder version must be >=0.9.1";
5859 enabled libvpx_vp8_encoder && {
5860 use_pkg_config "vpx >= 0.9.7" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp8_cx ||
5861 check_lib libvpx_vp8_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VP8E_SET_MAX_INTRA_BITRATE_PCT" -lvpx ||
5862 die "ERROR: libvpx encoder version must be >=0.9.7";
5864 enabled libvpx_vp9_decoder && {
5865 use_pkg_config "vpx >= 1.3.0" "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_vp9_dx ||
5866 check_lib libvpx_vp9_decoder "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx
5868 enabled libvpx_vp9_encoder && {
5869 use_pkg_config "vpx >= 1.3.0" "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_vp9_cx ||
5870 check_lib libvpx_vp9_encoder "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx VP9E_SET_AQ_MODE" -lvpx
5872 if disabled_all libvpx_vp8_decoder libvpx_vp9_decoder libvpx_vp8_encoder libvpx_vp9_encoder; then
5873 die "libvpx enabled but no supported decoders found"
5877 enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack
5878 enabled libwebp && {
5879 enabled libwebp_encoder && require_pkg_config "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
5880 enabled libwebp_anim_encoder && { use_pkg_config "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit || disable libwebp_anim_encoder; } }
5881 enabled libx264 && { use_pkg_config x264 "stdint.h x264.h" x264_encoder_encode ||
5882 { require libx264 "stdint.h x264.h" x264_encoder_encode -lx264 &&
5883 warn "using libx264 without pkg-config"; } } &&
5884 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
5885 die "ERROR: libx264 must be installed and version must be >= 0.118."; } &&
5886 { check_cpp_condition x264.h "X264_MPEG2" &&
5888 enabled libx265 && require_pkg_config x265 x265.h x265_api_get &&
5889 { check_cpp_condition x265.h "X265_BUILD >= 68" ||
5890 die "ERROR: libx265 version must be >= 68."; }
5891 enabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode -lxavs
5892 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
5893 enabled libzimg && require_pkg_config "zimg >= 2.3.0" zimg.h zimg_get_api_version
5894 enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new
5895 enabled libzvbi && require libzvbi libzvbi.h vbi_decoder_new -lzvbi &&
5896 { check_cpp_condition libzvbi.h "VBI_VERSION_MAJOR > 0 || VBI_VERSION_MINOR > 2 || VBI_VERSION_MINOR == 2 && VBI_VERSION_MICRO >= 28" ||
5897 enabled gpl || die "ERROR: libzvbi requires version 0.2.28 or --enable-gpl."; }
5898 enabled mediacodec && { enabled jni || die "ERROR: mediacodec requires --enable-jni"; }
5899 enabled mmal && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
5900 { ! enabled cross_compile &&
5901 add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
5902 add_ldflags -L/opt/vc/lib/ &&
5903 check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host; } ||
5904 die "ERROR: mmal not found" &&
5905 check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
5906 enabled netcdf && require_pkg_config netcdf netcdf.h nc_inq_libvers
5907 enabled openal && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
5908 check_lib openal 'AL/al.h' alGetError "${al_extralibs}" && break; done } ||
5909 die "ERROR: openal not found"; } &&
5910 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
5911 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
5912 enabled opencl && { check_lib opencl OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
5913 check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
5914 die "ERROR: opencl not found"; } &&
5915 { check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
5916 check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
5917 die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
5918 enabled opengl && { check_lib opengl GL/glx.h glXGetProcAddress "-lGL" ||
5919 check_lib opengl windows.h wglGetProcAddress "-lopengl32 -lgdi32" ||
5920 check_lib opengl OpenGL/gl3.h glGetError "-Wl,-framework,OpenGL" ||
5921 check_lib opengl ES2/gl.h glGetError "-isysroot=${sysroot} -Wl,-framework,OpenGLES" ||
5922 die "ERROR: opengl not found."
5924 enabled omx_rpi && { check_header OMX_Core.h ||
5925 { ! enabled cross_compile && add_cflags -isystem/opt/vc/include/IL && check_header OMX_Core.h ; } ||
5926 die "ERROR: OpenMAX IL headers not found"; }
5927 enabled omx && { check_header OMX_Core.h || die "ERROR: OpenMAX IL headers not found"; }
5928 enabled openssl && { use_pkg_config openssl openssl/ssl.h OPENSSL_init_ssl ||
5929 use_pkg_config openssl openssl/ssl.h SSL_library_init ||
5930 check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
5931 check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
5932 check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
5933 die "ERROR: openssl not found"; }
5934 enabled qtkit_indev && { check_header_objcc QTKit/QTKit.h || disable qtkit_indev; }
5936 if enabled gcrypt; then
5937 GCRYPT_CONFIG="${cross_prefix}libgcrypt-config"
5938 if "${GCRYPT_CONFIG}" --version > /dev/null 2>&1; then
5939 gcrypt_cflags=$("${GCRYPT_CONFIG}" --cflags)
5940 gcrypt_extralibs=$("${GCRYPT_CONFIG}" --libs)
5941 check_func_headers gcrypt.h gcry_mpi_new $gcrypt_cflags $gcrypt_extralibs ||
5942 die "ERROR: gcrypt not found"
5943 add_cflags $gcrypt_cflags && add_extralibs $gcrypt_extralibs
5945 require gcrypt gcrypt.h gcry_mpi_new -lgcrypt
5949 disabled sdl && disable sdl2
5950 if ! disabled sdl2; then
5951 SDL2_CONFIG="${cross_prefix}sdl2-config"
5952 if check_pkg_config sdl2 SDL_events.h SDL_PollEvent; then
5953 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
5954 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
5955 check_func SDL_Init $sdl2_extralibs $sdl2_cflags && enable sdl2
5957 if "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
5958 sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
5959 sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
5960 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
5961 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
5962 check_func SDL_Init $sdl2_extralibs $sdl2_cflags && enable sdl2
5965 if test $target_os = "mingw32"; then
5966 sdl2_extralibs="$sdl2_extralibs -mconsole"
5969 enabled sdl2 && enable sdl && add_cflags $sdl2_cflags && add_extralibs $sdl2_extralibs
5971 if enabled decklink; then
5973 mingw32*|mingw64*|win32|win64)
5974 decklink_outdev_extralibs="$decklink_outdev_extralibs -lole32 -loleaut32"
5975 decklink_indev_extralibs="$decklink_indev_extralibs -lole32 -loleaut32"
5980 disabled securetransport || { check_func SecIdentityCreate "-Wl,-framework,CoreFoundation -Wl,-framework,Security" &&
5981 check_lib securetransport "Security/SecureTransport.h Security/Security.h" "SSLCreateContext SecItemImport" "-Wl,-framework,CoreFoundation -Wl,-framework,Security"; }
5983 disabled schannel || { check_func_headers "windows.h security.h" InitializeSecurityContext -DSECURITY_WIN32 -lsecur32 &&
5984 check_cpp_condition winerror.h "defined(SEC_I_CONTEXT_EXPIRED)" && enable schannel && add_extralibs -lsecur32; }
5986 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
5988 && [ 0$(makeinfo --version | grep "texinfo" | sed 's/.*texinfo[^0-9]*\([0-9]*\)\..*/\1/') -ge 5 ] \
5989 && enable makeinfo_html || disable makeinfo_html
5990 disabled makeinfo_html && texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
5991 perl -v > /dev/null 2>&1 && enable perl || disable perl
5992 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
5993 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
5995 check_header linux/fb.h
5996 check_header linux/videodev.h
5997 check_header linux/videodev2.h
5998 check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
6000 check_header sys/videoio.h
6001 check_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
6003 check_lib user32 "windows.h winuser.h" GetShellWindow -luser32
6004 check_lib vfw32 "windows.h vfw.h" capCreateCaptureWindow -lvfw32
6005 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
6006 # w32api 3.12 had it defined wrong
6007 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
6009 check_type "dshow.h" IBaseFilter
6011 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
6012 { check_header dev/bktr/ioctl_meteor.h &&
6013 check_header dev/bktr/ioctl_bt848.h; } ||
6014 { check_header machine/ioctl_meteor.h &&
6015 check_header machine/ioctl_bt848.h; } ||
6016 { check_header dev/video/meteor/ioctl_meteor.h &&
6017 check_header dev/video/bktr/ioctl_bt848.h; } ||
6018 check_header dev/ic/bt8xx.h
6020 if check_struct sys/soundcard.h audio_buf_info bytes; then
6021 enable_safe sys/soundcard.h
6023 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
6024 #include <sys/soundcard.h>
6028 check_header soundcard.h
6030 enabled_any alsa_indev alsa_outdev &&
6031 check_lib alsa alsa/asoundlib.h snd_pcm_htimestamp -lasound
6033 enabled jack_indev && check_lib jack jack/jack.h jack_client_open -ljack &&
6034 check_func jack_port_get_latency_range -ljack
6036 enabled_any sndio_indev sndio_outdev && check_lib sndio sndio.h sio_open -lsndio
6038 if enabled libcdio; then
6039 check_lib libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
6040 check_lib libcdio "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio ||
6041 die "ERROR: No usable libcdio/cdparanoia found"
6044 if ! disabled libxcb; then
6045 check_pkg_config "xcb >= 1.4" xcb/xcb.h xcb_connect || {
6046 enabled libxcb && die "ERROR: libxcb >= 1.4 not found";
6049 if enabled libxcb; then
6050 disabled libxcb_shm || {
6051 check_pkg_config xcb-shm xcb/shm.h xcb_shm_attach || {
6052 enabled libxcb_shm && die "ERROR: libxcb_shm not found";
6053 } && check_header sys/shm.h && enable libxcb_shm; }
6055 disabled libxcb_xfixes || {
6056 check_pkg_config xcb-xfixes xcb/xfixes.h xcb_xfixes_get_cursor_image || {
6057 enabled libxcb_xfixes && die "ERROR: libxcb_xfixes not found";
6058 } && enable libxcb_xfixes; }
6060 disabled libxcb_shape || {
6061 check_pkg_config xcb-shape xcb/shape.h xcb_shape_get_rectangles || {
6062 enabled libxcb_shape && die "ERROR: libxcb_shape not found";
6063 } && enable libxcb_shape; }
6065 add_cflags $xcb_cflags $xcb_shm_cflags $xcb_xfixes_cflags $xcb_shape_cflags
6066 add_extralibs $xcb_extralibs $xcb_shm_extralibs $xcb_xfixes_extralibs $xcb_shape_extralibs
6070 check_func_headers "windows.h" CreateDIBSection "$gdigrab_indev_extralibs"
6072 enabled dxva2api_h &&
6073 check_cc <<EOF && enable dxva2api_cobj
6074 #define _WIN32_WINNT 0x0600
6076 #include <windows.h>
6078 #include <dxva2api.h>
6079 int main(void) { IDirectXVideoDecoder *o = NULL; IDirectXVideoDecoder_Release(o); return 0; }
6083 check_lib dxva2_lib windows.h CoTaskMemFree -lole32
6086 check_lib vaapi va/va.h vaInitialize -lva
6089 check_code cc "va/va.h" "vaCreateSurfaces(0, 0, 0, 0, 0, 0, 0, 0)" ||
6093 check_lib vaapi_drm "va/va.h va/va_drm.h" vaGetDisplayDRM -lva -lva-drm
6096 check_lib vaapi_x11 "va/va.h va/va_x11.h" vaGetDisplay -lva -lva-x11 -lX11
6099 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
6103 check_lib vdpau_x11 "vdpau/vdpau.h vdpau/vdpau_x11.h" vdp_device_create_x11 -lvdpau -lX11
6105 if enabled x86; then
6107 mingw32*|mingw64*|win32|win64|linux|cygwin*)
6110 disable cuda cuvid nvenc
6114 disable cuda cuvid nvenc
6118 check_cc -I$source_path <<EOF || disable nvenc
6119 #include "compat/nvenc/nvEncodeAPI.h"
6120 NV_ENCODE_API_FUNCTION_LIST flist;
6121 void f(void) { struct { const GUID guid; } s[] = { { NV_ENC_PRESET_HQ_GUID } }; }
6122 int main(void) { return 0; }
6125 # Funny iconv installations are not unusual, so check it after all flags have been set
6126 disabled iconv || check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv
6128 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
6130 # add some useful compiler flags if supported
6131 check_cflags -Wdeclaration-after-statement
6133 check_cflags -Wdisabled-optimization
6134 check_cflags -Wpointer-arith
6135 check_cflags -Wredundant-decls
6136 check_cflags -Wwrite-strings
6137 check_cflags -Wtype-limits
6138 check_cflags -Wundef
6139 check_cflags -Wmissing-prototypes
6140 check_cflags -Wno-pointer-to-int-cast
6141 check_cflags -Wstrict-prototypes
6142 check_cflags -Wempty-body
6144 if enabled extra_warnings; then
6145 check_cflags -Wcast-qual
6146 check_cflags -Wextra
6147 check_cflags -Wpedantic
6150 check_disable_warning(){
6151 warning_flag=-W${1#-Wno-}
6152 test_cflags $warning_flag && add_cflags $1
6155 check_disable_warning -Wno-parentheses
6156 check_disable_warning -Wno-switch
6157 check_disable_warning -Wno-format-zero-length
6158 check_disable_warning -Wno-pointer-sign
6159 check_disable_warning -Wno-unused-const-variable
6161 check_disable_warning_headers(){
6162 warning_flag=-W${1#-Wno-}
6163 test_cflags $warning_flag && add_cflags_headers $1
6166 check_disable_warning_headers -Wno-deprecated-declarations
6167 check_disable_warning_headers -Wno-unused-variable
6169 # add some linker flags
6170 check_ldflags -Wl,--warn-common
6171 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
6172 enabled rpath && add_ldexeflags -Wl,-rpath,$libdir
6173 enabled rpath && add_ldlibflags -Wl,-rpath,$libdir
6174 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
6176 # add some strip flags
6177 # -wN '..@*' is more selective than -x, but not available everywhere.
6178 check_stripflags -wN \'..@*\' || check_stripflags -x
6180 enabled neon_clobber_test &&
6181 check_ldflags -Wl,--wrap,avcodec_open2 \
6182 -Wl,--wrap,avcodec_decode_audio4 \
6183 -Wl,--wrap,avcodec_decode_video2 \
6184 -Wl,--wrap,avcodec_decode_subtitle2 \
6185 -Wl,--wrap,avcodec_encode_audio2 \
6186 -Wl,--wrap,avcodec_encode_video2 \
6187 -Wl,--wrap,avcodec_encode_subtitle \
6188 -Wl,--wrap,avcodec_send_packet \
6189 -Wl,--wrap,avcodec_receive_packet \
6190 -Wl,--wrap,avcodec_send_frame \
6191 -Wl,--wrap,avcodec_receive_frame \
6192 -Wl,--wrap,swr_convert \
6193 -Wl,--wrap,avresample_convert ||
6194 disable neon_clobber_test
6196 enabled xmm_clobber_test &&
6197 check_ldflags -Wl,--wrap,avcodec_open2 \
6198 -Wl,--wrap,avcodec_decode_audio4 \
6199 -Wl,--wrap,avcodec_decode_video2 \
6200 -Wl,--wrap,avcodec_decode_subtitle2 \
6201 -Wl,--wrap,avcodec_encode_audio2 \
6202 -Wl,--wrap,avcodec_encode_video2 \
6203 -Wl,--wrap,avcodec_encode_subtitle \
6204 -Wl,--wrap,avcodec_send_packet \
6205 -Wl,--wrap,avcodec_receive_packet \
6206 -Wl,--wrap,avcodec_send_frame \
6207 -Wl,--wrap,avcodec_receive_frame \
6208 -Wl,--wrap,swr_convert \
6209 -Wl,--wrap,avresample_convert \
6210 -Wl,--wrap,sws_scale ||
6211 disable xmm_clobber_test
6213 check_ld "cc" <<EOF && enable proper_dce
6214 extern const int array[512];
6215 static inline int func(void) { return array[0]; }
6216 int main(void) { return 0; }
6219 if enabled proper_dce; then
6220 echo "X { local: *; };" > $TMPV
6221 if test_ldflags -Wl,${version_script},$TMPV; then
6222 append SHFLAGS '-Wl,${version_script},\$(SUBDIR)lib\$(NAME).ver'
6223 check_cc <<EOF && enable symver_asm_label
6224 void ff_foo(void) __asm__ ("av_foo@VERSION");
6225 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
6227 check_cc <<EOF && enable symver_gnu_asm
6228 __asm__(".symver ff_foo,av_foo@VERSION");
6229 void ff_foo(void) {}
6234 if [ -z "$optflags" ]; then
6235 if enabled small; then
6236 optflags=$cflags_size
6237 elif enabled optimizations; then
6238 optflags=$cflags_speed
6240 optflags=$cflags_noopt
6246 enabled lto && check_ldflags "$@"
6250 if enabled lto; then
6251 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
6253 check_ldflags -flto $cpuflags
6254 disable inline_asm_direct_symbol_refs
6257 check_optflags $optflags
6258 check_optflags -fno-math-errno
6259 check_optflags -fno-signed-zeros
6261 enabled ftrapv && check_cflags -ftrapv
6263 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
6268 if enabled icc; then
6269 # Just warnings, no remarks
6271 # -wd: Disable following warnings
6272 # 144, 167, 556: -Wno-pointer-sign
6273 # 188: enumerated type mixed with another type
6274 # 1292: attribute "foo" ignored
6275 # 1419: external declaration in primary source file
6276 # 10006: ignoring unknown option -fno-signed-zeros
6277 # 10148: ignoring unknown option -Wno-parentheses
6278 # 10156: ignoring option '-W'; no argument required
6279 # 13200: No EMMS instruction before call to function
6280 # 13203: No EMMS instruction before return from function
6281 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156,13200,13203
6282 # 11030: Warning unknown option --as-needed
6283 # 10156: ignoring option '-export'; no argument required
6284 check_ldflags -wd10156,11030
6285 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
6286 enable ebp_available
6287 # The test above does not test linking
6288 enabled lto && disable symver_asm_label
6289 if enabled x86_32; then
6290 icc_version=$($cc -dumpversion)
6291 test ${icc_version%%.*} -ge 11 &&
6292 check_cflags -falign-stack=maintain-16-byte ||
6293 disable aligned_stack
6295 elif enabled ccc; then
6296 # disable some annoying warnings
6297 add_cflags -msg_disable bitnotint
6298 add_cflags -msg_disable mixfuncvoid
6299 add_cflags -msg_disable nonstandcast
6300 add_cflags -msg_disable unsupieee
6301 elif enabled gcc; then
6302 check_optflags -fno-tree-vectorize
6303 check_cflags -Werror=format-security
6304 check_cflags -Werror=implicit-function-declaration
6305 check_cflags -Werror=missing-prototypes
6306 check_cflags -Werror=return-type
6307 check_cflags -Werror=vla
6308 check_cflags -Wformat
6309 check_cflags -fdiagnostics-color=auto
6310 enabled extra_warnings || check_disable_warning -Wno-maybe-uninitialized
6311 elif enabled llvm_gcc; then
6312 check_cflags -mllvm -stack-alignment=16
6313 elif enabled clang; then
6314 check_cflags -mllvm -stack-alignment=16
6315 check_cflags -mstack-alignment=16
6316 check_cflags -Qunused-arguments
6317 check_cflags -Werror=implicit-function-declaration
6318 check_cflags -Werror=missing-prototypes
6319 check_cflags -Werror=return-type
6320 elif enabled cparser; then
6321 add_cflags -Wno-missing-variable-declarations
6322 add_cflags -Wno-empty-statement
6323 elif enabled armcc; then
6324 add_cflags -W${armcc_opt},--diag_suppress=4343 # hardfp compat
6325 add_cflags -W${armcc_opt},--diag_suppress=3036 # using . as system include dir
6326 # 2523: use of inline assembly is deprecated
6327 add_cflags -W${armcc_opt},--diag_suppress=2523
6328 add_cflags -W${armcc_opt},--diag_suppress=1207
6329 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
6330 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
6331 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
6332 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
6333 elif enabled tms470; then
6334 add_cflags -pds=824 -pds=837
6336 elif enabled pathscale; then
6337 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
6338 elif enabled_any msvc icl; then
6339 enabled x86_32 && disable aligned_stack
6340 enabled_all x86_32 debug && add_cflags -Oy-
6341 enabled debug && add_ldflags -debug
6342 enable pragma_deprecated
6343 if enabled icl; then
6344 # -Qansi-alias is basically -fstrict-aliasing, but does not work
6345 # (correctly) on icl 13.x.
6346 check_cpp_condition "windows.h" "__ICL < 1300 || __ICL >= 1400" &&
6347 add_cflags -Qansi-alias
6348 # Some inline asm is not compilable in debug
6349 if enabled debug; then
6350 disable ebp_available
6351 disable ebx_available
6354 # msvcrt10 x64 incorrectly enables log2, only msvcrt12 (MSVC 2013) onwards actually has log2.
6355 check_cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION >= 12" || disable log2
6356 # The CRT headers contain __declspec(restrict) in a few places, but if redefining
6357 # restrict, this might break. MSVC 2010 and 2012 fail with __declspec(__restrict)
6358 # (as it ends up if the restrict redefine is done before including stdlib.h), while
6359 # MSVC 2013 and newer can handle it fine.
6360 # If this declspec fails, force including stdlib.h before the restrict redefinition
6361 # happens in config.h.
6362 if [ $_restrict != restrict ]; then
6363 check_cc <<EOF || add_cflags -FIstdlib.h
6364 __declspec($_restrict) void* foo(int);
6367 # the new SSA optimzer in VS2015 U3 is mis-optimizing some parts of the code
6368 # Issue has been fixed in MSVC v19.00.24218.
6369 check_cpp_condition windows.h "_MSC_FULL_VER >= 190024218" ||
6370 check_cflags -d2SSAOptimizer-
6371 # enable utf-8 source processing on VS2015 U2 and newer
6372 check_cpp_condition windows.h "_MSC_FULL_VER >= 190023918" &&
6376 for pfx in "" host_; do
6377 varname=${pfx%_}cc_type
6378 eval "type=\$$varname"
6379 if [ $type = "msvc" ]; then
6380 check_${pfx}cc <<EOF || add_${pfx}cflags -Dinline=__inline
6381 static inline int foo(int a) { return a; }
6388 add_asflags -Qunused-arguments
6394 check_ldflags -Qunused-arguments
6400 enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
6404 enable frame_thread_encoder
6406 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
6408 check_deps $CONFIG_LIST \
6413 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"
6416 if test $target_os = "haiku"; then
6418 disable posix_memalign
6422 # -> enable ${lib}_deps_${dep}
6423 # -> add $dep to ${lib}_deps only once
6427 enabled "${lib}_deps_${dep}" && return 0
6428 enable "${lib}_deps_${dep}"
6429 prepend "${lib}_deps" $dep
6432 # merge deps lib components
6433 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
6438 enabled $comp || continue
6439 eval "dep=\"\$${comp}_deps\""
6446 merge_deps libavfilter $FILTER_LIST
6448 map 'enabled $v && intrinsics=${v#intrinsics_}' $INTRINSICS_LIST
6450 for thread in $THREADS_LIST; do
6451 if enabled $thread; then
6452 test -n "$thread_type" &&
6453 die "ERROR: Only one thread type must be selected." ||
6454 thread_type="$thread"
6458 if disabled stdatomic_h; then
6459 if enabled atomics_gcc; then
6460 add_cppflags '-I\$(SRC_PATH)/compat/atomics/gcc'
6461 elif enabled atomics_win32; then
6462 add_cppflags '-I\$(SRC_PATH)/compat/atomics/win32'
6463 elif enabled atomics_suncc; then
6464 add_cppflags '-I\$(SRC_PATH)/compat/atomics/suncc'
6465 elif enabled pthreads; then
6466 add_compat atomics/pthread/stdatomic.o
6467 add_cppflags '-I\$(SRC_PATH)/compat/atomics/pthread'
6469 enabled threads && die "Threading is enabled, but no atomics are available"
6470 add_cppflags '-I\$(SRC_PATH)/compat/atomics/dummy'
6474 # Check if requested libraries were found.
6475 for lib in $AUTODETECT_LIBS; do
6476 requested $lib && ! enabled $lib && die "ERROR: $lib requested but not found";
6479 enabled zlib && add_cppflags -DZLIB_CONST
6481 # conditional library dependencies, in linking order
6482 enabled afftfilt_filter && prepend avfilter_deps "avcodec"
6483 enabled afir_filter && prepend avfilter_deps "avcodec"
6484 enabled amovie_filter && prepend avfilter_deps "avformat avcodec"
6485 enabled aresample_filter && prepend avfilter_deps "swresample"
6486 enabled atempo_filter && prepend avfilter_deps "avcodec"
6487 enabled cover_rect_filter && prepend avfilter_deps "avformat avcodec"
6488 enabled ebur128_filter && enabled swresample && prepend avfilter_deps "swresample"
6489 enabled elbg_filter && prepend avfilter_deps "avcodec"
6490 enabled fftfilt_filter && prepend avfilter_deps "avcodec"
6491 enabled find_rect_filter && prepend avfilter_deps "avformat avcodec"
6492 enabled firequalizer_filter && prepend avfilter_deps "avcodec"
6493 enabled mcdeint_filter && prepend avfilter_deps "avcodec"
6494 enabled movie_filter && prepend avfilter_deps "avformat avcodec"
6495 enabled pan_filter && prepend avfilter_deps "swresample"
6496 enabled pp_filter && prepend avfilter_deps "postproc"
6497 enabled removelogo_filter && prepend avfilter_deps "avformat avcodec swscale"
6498 enabled resample_filter && prepend avfilter_deps "avresample"
6499 enabled sab_filter && prepend avfilter_deps "swscale"
6500 enabled scale_filter && prepend avfilter_deps "swscale"
6501 enabled scale2ref_filter && prepend avfilter_deps "swscale"
6502 enabled sofalizer_filter && prepend avfilter_deps "avcodec"
6503 enabled showcqt_filter && prepend avfilter_deps "avformat avcodec swscale"
6504 enabled showfreqs_filter && prepend avfilter_deps "avcodec"
6505 enabled showspectrum_filter && prepend avfilter_deps "avcodec"
6506 enabled signature_filter && prepend avfilter_deps "avcodec avformat"
6507 enabled smartblur_filter && prepend avfilter_deps "swscale"
6508 enabled spectrumsynth_filter && prepend avfilter_deps "avcodec"
6509 enabled spp_filter && prepend avfilter_deps "avcodec"
6510 enabled subtitles_filter && prepend avfilter_deps "avformat avcodec"
6511 enabled uspp_filter && prepend avfilter_deps "avcodec"
6512 enabled zoompan_filter && prepend avfilter_deps "swscale"
6514 enabled lavfi_indev && prepend avdevice_deps "avfilter"
6516 enabled opus_decoder && prepend avcodec_deps "swresample"
6520 eval "deps=\$$lib_deps"
6521 append $lib_deps $(map 'eval echo \$${v}_deps' $deps)
6525 #we have to remove gpl from the deps here as some code assumes all lib deps are libs
6526 postproc_deps="$(filter_out 'gpl' $postproc_deps)"
6528 map 'expand_deps $v' $LIBRARY_LIST
6530 license="LGPL version 2.1 or later"
6531 if enabled nonfree; then
6532 license="nonfree and unredistributable"
6533 elif enabled gplv3; then
6534 license="GPL version 3 or later"
6535 elif enabled lgplv3; then
6536 license="LGPL version 3 or later"
6537 elif enabled gpl; then
6538 license="GPL version 2 or later"
6541 if test "$quiet" != "yes"; then
6543 echo "install prefix $prefix"
6544 echo "source path $source_path"
6545 echo "C compiler $cc"
6546 echo "C library $libc_type"
6547 if test "$host_cc" != "$cc"; then
6548 echo "host C compiler $host_cc"
6549 echo "host C library $host_libc_type"
6551 echo "ARCH $arch ($cpu)"
6552 if test "$build_suffix" != ""; then
6553 echo "build suffix $build_suffix"
6555 if test "$progs_suffix" != ""; then
6556 echo "progs suffix $progs_suffix"
6558 if test "$extra_version" != ""; then
6559 echo "version string suffix $extra_version"
6561 echo "big-endian ${bigendian-no}"
6562 echo "runtime cpu detection ${runtime_cpudetect-no}"
6563 if enabled x86; then
6564 echo "${yasmexe} ${yasm-no}"
6565 echo "MMX enabled ${mmx-no}"
6566 echo "MMXEXT enabled ${mmxext-no}"
6567 echo "3DNow! enabled ${amd3dnow-no}"
6568 echo "3DNow! extended enabled ${amd3dnowext-no}"
6569 echo "SSE enabled ${sse-no}"
6570 echo "SSSE3 enabled ${ssse3-no}"
6571 echo "AESNI enabled ${aesni-no}"
6572 echo "AVX enabled ${avx-no}"
6573 echo "XOP enabled ${xop-no}"
6574 echo "FMA3 enabled ${fma3-no}"
6575 echo "FMA4 enabled ${fma4-no}"
6576 echo "i686 features enabled ${i686-no}"
6577 echo "CMOV is fast ${fast_cmov-no}"
6578 echo "EBX available ${ebx_available-no}"
6579 echo "EBP available ${ebp_available-no}"
6581 if enabled aarch64; then
6582 echo "NEON enabled ${neon-no}"
6583 echo "VFP enabled ${vfp-no}"
6585 if enabled arm; then
6586 echo "ARMv5TE enabled ${armv5te-no}"
6587 echo "ARMv6 enabled ${armv6-no}"
6588 echo "ARMv6T2 enabled ${armv6t2-no}"
6589 echo "VFP enabled ${vfp-no}"
6590 echo "NEON enabled ${neon-no}"
6591 echo "THUMB enabled ${thumb-no}"
6593 if enabled mips; then
6594 echo "MIPS FPU enabled ${mipsfpu-no}"
6595 echo "MIPS DSP R1 enabled ${mipsdsp-no}"
6596 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
6597 echo "MIPS MSA enabled ${msa-no}"
6598 echo "LOONGSON MMI enabled ${mmi-no}"
6600 if enabled ppc; then
6601 echo "AltiVec enabled ${altivec-no}"
6602 echo "VSX enabled ${vsx-no}"
6603 echo "POWER8 enabled ${power8-no}"
6604 echo "PPC 4xx optimizations ${ppc4xx-no}"
6605 echo "dcbzl available ${dcbzl-no}"
6607 echo "debug symbols ${debug-no}"
6608 echo "strip symbols ${stripping-no}"
6609 echo "optimize for size ${small-no}"
6610 echo "optimizations ${optimizations-no}"
6611 echo "static ${static-no}"
6612 echo "shared ${shared-no}"
6613 echo "postprocessing support ${postproc-no}"
6614 echo "network support ${network-no}"
6615 echo "threading support ${thread_type-no}"
6616 echo "safe bitstream reader ${safe_bitstream_reader-no}"
6617 echo "texi2html enabled ${texi2html-no}"
6618 echo "perl enabled ${perl-no}"
6619 echo "pod2man enabled ${pod2man-no}"
6620 echo "makeinfo enabled ${makeinfo-no}"
6621 echo "makeinfo supports HTML ${makeinfo_html-no}"
6622 test -n "$random_seed" &&
6623 echo "random seed ${random_seed}"
6626 echo "External libraries:"
6627 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_in_columns
6630 echo "External libraries providing hardware acceleration:"
6631 print_enabled '' $HWACCEL_LIBRARY_LIST | print_in_columns
6635 print_enabled '' $LIBRARY_LIST | print_in_columns
6639 print_enabled '' $PROGRAM_LIST | print_in_columns
6642 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
6643 echo "Enabled ${type}s:"
6644 eval list=\$$(toupper $type)_LIST
6645 print_enabled '_*' $list | print_in_columns
6649 if test -n "$ignore_tests"; then
6650 ignore_tests=$(echo $ignore_tests | tr ',' ' ')
6651 echo "Ignored FATE tests:"
6652 echo $ignore_tests | print_in_columns
6656 echo "License: $license"
6658 echo "Creating configuration files ..."
6660 fi # test "$quiet" != "yes"
6662 test -e Makefile || echo "include $source_path/Makefile" > Makefile
6664 enabled stripping || strip="echo skipping strip"
6666 config_files="$TMPH ffbuild/config.mak doc/config.texi"
6668 cat > ffbuild/config.mak <<EOF
6669 # Automatically generated by configure - do not modify!
6670 ifndef FFMPEG_CONFIG_MAK
6672 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
6674 LIBDIR=\$(DESTDIR)$libdir
6675 SHLIBDIR=\$(DESTDIR)$shlibdir
6676 INCDIR=\$(DESTDIR)$incdir
6677 BINDIR=\$(DESTDIR)$bindir
6678 DATADIR=\$(DESTDIR)$datadir
6679 DOCDIR=\$(DESTDIR)$docdir
6680 MANDIR=\$(DESTDIR)$mandir
6681 PKGCONFIGDIR=\$(DESTDIR)$pkgconfigdir
6682 INSTALL_NAME_DIR=$install_name_dir
6683 SRC_PATH=$source_path
6684 SRC_LINK=$source_link
6685 ifndef MAIN_MAKEFILE
6686 SRC_PATH:=\$(SRC_PATH:.%=..%)
6690 INTRINSICS=$intrinsics
6697 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
6699 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
6712 OBJCFLAGS=$OBJCFLAGS
6732 LDEXEFLAGS=$LDEXEFLAGS
6733 LDLIBFLAGS=$LDLIBFLAGS
6734 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
6735 ASMSTRIPFLAGS=$ASMSTRIPFLAGS
6736 YASMFLAGS=$YASMFLAGS
6737 BUILDSUF=$build_suffix
6738 PROGSSUF=$progs_suffix
6746 EXTRA_VERSION=$extra_version
6749 CCDEP_FLAGS=$CCDEP_FLAGS
6751 ASDEP_FLAGS=$ASDEP_FLAGS
6752 CC_DEPFLAGS=$CC_DEPFLAGS
6753 AS_DEPFLAGS=$AS_DEPFLAGS
6756 HOSTCFLAGS=$host_cflags
6757 HOSTCPPFLAGS=$host_cppflags
6758 HOSTEXESUF=$HOSTEXESUF
6759 HOSTLDFLAGS=$host_ldflags
6760 HOSTEXTRALIBS=$host_extralibs
6762 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
6763 HOSTCCDEP=$HOSTCCDEP
6764 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
6765 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
6769 TARGET_EXEC=$target_exec $target_exec_args
6770 TARGET_PATH=$target_path
6771 TARGET_SAMPLES=${target_samples:-\$(SAMPLES)}
6772 CFLAGS-ffplay=${sdl2_cflags}
6773 CFLAGS_HEADERS=$CFLAGS_HEADERS
6774 ZLIB=$($ldflags_filter -lz)
6775 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
6776 EXTRALIBS=$extralibs
6777 COMPAT_OBJS=$compat_objs
6779 LIBTARGET=${LIBTARGET}
6780 SLIBNAME=${SLIBNAME}
6781 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
6782 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
6783 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
6784 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
6785 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
6786 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
6787 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
6788 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
6789 VERSION_SCRIPT_POSTPROCESS_CMD=${VERSION_SCRIPT_POSTPROCESS_CMD}
6790 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
6791 NOREDZONE_FLAGS=$noredzone_flags
6792 LIBFUZZER_PATH=$libfuzzer_path
6793 IGNORE_TESTS=$ignore_tests
6796 map 'eval echo "${v}_FFLIBS=\$${v}_deps" >> ffbuild/config.mak' $LIBRARY_LIST
6798 print_program_extralibs(){
6799 eval "program_extralibs=\$${1}_extralibs"
6800 eval echo "EXTRALIBS-${1}=${program_extralibs}" >> ffbuild/config.mak
6803 map 'print_program_extralibs $v' $PROGRAM_LIST
6806 /* Automatically generated by configure - do not modify! */
6807 #ifndef FFMPEG_CONFIG_H
6808 #define FFMPEG_CONFIG_H
6809 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
6810 #define FFMPEG_LICENSE "$(c_escape $license)"
6811 #define CONFIG_THIS_YEAR 2017
6812 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
6813 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
6814 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
6815 #define av_restrict $_restrict
6816 #define EXTERN_PREFIX "${extern_prefix}"
6817 #define EXTERN_ASM ${extern_prefix}
6818 #define BUILDSUF "$build_suffix"
6819 #define SLIBSUF "$SLIBSUF"
6820 #define HAVE_MMX2 HAVE_MMXEXT
6821 #define SWS_MAX_FILTER_SIZE $sws_max_filter_size
6824 test -n "$assert_level" &&
6825 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
6827 test -n "$malloc_prefix" &&
6828 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
6830 if enabled yasm; then
6831 append config_files $TMPASM
6835 enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
6841 echo "@c auto-generated by configure - do not modify! " > doc/config.texi
6843 print_config ARCH_ "$config_files" $ARCH_LIST
6844 print_config HAVE_ "$config_files" $HAVE_LIST
6845 print_config CONFIG_ "$config_files" $CONFIG_LIST \
6849 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
6850 echo "endif # FFMPEG_CONFIG_MAK" >> ffbuild/config.mak
6852 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
6853 cp_if_changed $TMPH config.h
6854 touch ffbuild/.config
6856 enabled yasm && cp_if_changed $TMPASM config.asm
6859 /* Generated by ffconf */
6860 #ifndef AVUTIL_AVCONFIG_H
6861 #define AVUTIL_AVCONFIG_H
6864 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
6866 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
6868 cp_if_changed $TMPH libavutil/avconfig.h
6870 # generate the lists of enabled components
6871 print_enabled_components(){
6876 echo "static const $struct_name *$name[] = {" > $TMPH
6878 enabled $c && printf " &ff_%s,\n" $c >> $TMPH
6880 echo " NULL };" >> $TMPH
6881 cp_if_changed $TMPH $file
6884 print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST
6885 print_enabled_components libavformat/protocol_list.c URLProtocol url_protocols $PROTOCOL_LIST
6887 if test -n "$WARNINGS"; then
6888 printf "\n%s%s$WARNINGS%s" "$warn_color" "$bold_color" "$reset_color"
6889 enabled fatal_warnings && exit 1
6892 # Settings for pkg-config files
6894 cat > ffbuild/config.sh <<EOF
6895 # Automatically generated by configure - do not modify!
6897 build_suffix=$build_suffix
6901 rpath=$(enabled rpath && echo "-Wl,-rpath,\${libdir}")
6902 source_path=${source_path}
6906 extralibs_avutil="$LIBRT $LIBM"
6907 extralibs_avcodec="$extralibs"
6908 extralibs_avformat="$extralibs"
6909 extralibs_avdevice="$extralibs"
6910 extralibs_avfilter="$extralibs"
6911 extralibs_avresample="$LIBM"
6912 extralibs_postproc=""
6913 extralibs_swscale="$LIBM"
6914 extralibs_swresample="$LIBM $LIBSOXR"
6917 for lib in $LIBRARY_LIST; do
6918 lib_deps="$(eval echo \$${lib}_deps)"
6919 echo ${lib}_deps=\"$lib_deps\" >> ffbuild/config.sh