3 # FFmpeg configure script
5 # Copyright (c) 2000-2002 Fabrice Bellard
6 # Copyright (c) 2005-2008 Diego Biurrun
7 # Copyright (c) 2005-2008 Mans Rullgard
10 # Prevent locale nonsense from breaking basic text processing.
14 # make sure we are running under a compatible shell
15 # try to make this part work with most shells
18 echo "Trying shell $1"
19 type "$1" > /dev/null 2>&1 && exec "$@"
23 (: ${foo%%bar}) 2> /dev/null
26 (: ${foo?}) 2> /dev/null
29 if test "$E1" != 0 || test "$E2" = 0; then
30 echo "Broken shell detected. Trying alternatives."
32 if test "0$FF_CONF_EXEC" -lt 1; then
34 try_exec bash "$0" "$@"
36 if test "0$FF_CONF_EXEC" -lt 2; then
38 try_exec ksh "$0" "$@"
40 if test "0$FF_CONF_EXEC" -lt 3; then
42 try_exec /usr/xpg4/bin/sh "$0" "$@"
44 echo "No compatible shell script interpreter found."
45 echo "This configure script requires a POSIX-compatible shell"
46 echo "such as bash or ksh."
47 echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
48 echo "Instead, install a working POSIX-compatible shell."
49 echo "Disabling this configure test will create a broken FFmpeg."
50 if test "$BASH_VERSION" = '2.04.0(1)-release'; then
51 echo "This bash version ($BASH_VERSION) is broken on your platform."
52 echo "Upgrade to a later version if available."
57 test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH
61 Usage: configure [options]
62 Options: [defaults in brackets after descriptions]
65 --help print this message
66 --list-decoders show all available decoders
67 --list-encoders show all available encoders
68 --list-hwaccels show all available hardware accelerators
69 --list-demuxers show all available demuxers
70 --list-muxers show all available muxers
71 --list-parsers show all available parsers
72 --list-protocols show all available protocols
73 --list-bsfs show all available bitstream filters
74 --list-indevs show all available input devices
75 --list-outdevs show all available output devices
76 --list-filters show all available filters
79 --logfile=FILE log tests and output to FILE [config.log]
80 --disable-logging do not log configure debug information
81 --fatal-warnings fail if any configure warning is generated
82 --prefix=PREFIX install in PREFIX [$prefix]
83 --bindir=DIR install binaries in DIR [PREFIX/bin]
84 --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
85 --libdir=DIR install libs in DIR [PREFIX/lib]
86 --shlibdir=DIR install shared libs in DIR [PREFIX/lib]
87 --incdir=DIR install includes in DIR [PREFIX/include]
88 --mandir=DIR install man page in DIR [PREFIX/share/man]
91 --enable-gpl allow use of GPL code, the resulting libs
92 and binaries will be under GPL [no]
93 --enable-version3 upgrade (L)GPL to version 3 [no]
94 --enable-nonfree allow use of nonfree code, the resulting libs
95 and binaries will be unredistributable [no]
97 Configuration options:
98 --disable-static do not build static libraries [no]
99 --enable-shared build shared libraries [no]
100 --enable-small optimize for size instead of speed
101 --disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary)
102 --enable-gray enable full grayscale support (slower color)
103 --disable-swscale-alpha disable alpha channel support in swscale
104 --disable-all disable building components, libraries and programs
107 --disable-programs do not build command line programs
108 --disable-ffmpeg disable ffmpeg build
109 --disable-ffplay disable ffplay build
110 --disable-ffprobe disable ffprobe build
111 --disable-ffserver disable ffserver build
113 Documentation options:
114 --disable-doc do not build documentation
115 --disable-htmlpages do not build HTML documentation pages
116 --disable-manpages do not build man documentation pages
117 --disable-podpages do not build POD documentation pages
118 --disable-txtpages do not build text documentation pages
121 --disable-avdevice disable libavdevice build
122 --disable-avcodec disable libavcodec build
123 --disable-avformat disable libavformat build
124 --disable-avutil disable libavutil build
125 --disable-swresample disable libswresample build
126 --disable-swscale disable libswscale build
127 --disable-postproc disable libpostproc build
128 --disable-avfilter disable libavfilter build
129 --enable-avresample enable libavresample build [no]
130 --disable-pthreads disable pthreads [auto]
131 --disable-w32threads disable Win32 threads [auto]
132 --disable-os2threads disable OS/2 threads [auto]
133 --disable-network disable network support [no]
134 --disable-dct disable DCT code
135 --disable-dwt disable DWT code
136 --disable-error-resilience disable error resilience code
137 --disable-lsp disable LSP code
138 --disable-lzo disable LZO decoder code
139 --disable-mdct disable MDCT code
140 --disable-rdft disable RDFT code
141 --disable-fft disable FFT code
143 Hardware accelerators:
144 --enable-dxva2 enable DXVA2 code
145 --enable-vaapi enable VAAPI code
146 --enable-vda enable VDA code
147 --enable-vdpau enable VDPAU code
149 Individual component options:
150 --disable-everything disable all components listed below
151 --disable-encoder=NAME disable encoder NAME
152 --enable-encoder=NAME enable encoder NAME
153 --disable-encoders disable all encoders
154 --disable-decoder=NAME disable decoder NAME
155 --enable-decoder=NAME enable decoder NAME
156 --disable-decoders disable all decoders
157 --disable-hwaccel=NAME disable hwaccel NAME
158 --enable-hwaccel=NAME enable hwaccel NAME
159 --disable-hwaccels disable all hwaccels
160 --disable-muxer=NAME disable muxer NAME
161 --enable-muxer=NAME enable muxer NAME
162 --disable-muxers disable all muxers
163 --disable-demuxer=NAME disable demuxer NAME
164 --enable-demuxer=NAME enable demuxer NAME
165 --disable-demuxers disable all demuxers
166 --enable-parser=NAME enable parser NAME
167 --disable-parser=NAME disable parser NAME
168 --disable-parsers disable all parsers
169 --enable-bsf=NAME enable bitstream filter NAME
170 --disable-bsf=NAME disable bitstream filter NAME
171 --disable-bsfs disable all bitstream filters
172 --enable-protocol=NAME enable protocol NAME
173 --disable-protocol=NAME disable protocol NAME
174 --disable-protocols disable all protocols
175 --enable-indev=NAME enable input device NAME
176 --disable-indev=NAME disable input device NAME
177 --disable-indevs disable input devices
178 --enable-outdev=NAME enable output device NAME
179 --disable-outdev=NAME disable output device NAME
180 --disable-outdevs disable output devices
181 --disable-devices disable all devices
182 --enable-filter=NAME enable filter NAME
183 --disable-filter=NAME disable filter NAME
184 --disable-filters disable all filters
186 External library support:
187 --enable-avisynth enable reading of AVISynth script files [no]
188 --enable-bzlib enable bzlib [autodetect]
189 --enable-fontconfig enable fontconfig
190 --enable-frei0r enable frei0r video filtering
191 --enable-gnutls enable gnutls [no]
192 --enable-iconv enable iconv [autodetect]
193 --enable-libaacplus enable AAC+ encoding via libaacplus [no]
194 --enable-libass enable libass subtitles rendering [no]
195 --enable-libbluray enable BluRay reading using libbluray [no]
196 --enable-libcaca enable textual display using libcaca
197 --enable-libcelt enable CELT decoding via libcelt [no]
198 --enable-libcdio enable audio CD grabbing with libcdio
199 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
201 --enable-libfaac enable AAC encoding via libfaac [no]
202 --enable-libfdk-aac enable AAC encoding via libfdk-aac [no]
203 --enable-libflite enable flite (voice synthesis) support via libflite [no]
204 --enable-libfreetype enable libfreetype [no]
205 --enable-libgsm enable GSM de/encoding via libgsm [no]
206 --enable-libiec61883 enable iec61883 via libiec61883 [no]
207 --enable-libilbc enable iLBC de/encoding via libilbc [no]
208 --enable-libmodplug enable ModPlug via libmodplug [no]
209 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
210 --enable-libnut enable NUT (de)muxing via libnut,
211 native (de)muxer exists [no]
212 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
213 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
214 --enable-libopencv enable video filtering via libopencv [no]
215 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
216 --enable-libopus enable Opus decoding via libopus [no]
217 --enable-libpulse enable Pulseaudio input via libpulse [no]
218 --enable-librtmp enable RTMP[E] support via librtmp [no]
219 --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
220 --enable-libsoxr enable Include libsoxr resampling [no]
221 --enable-libspeex enable Speex de/encoding via libspeex [no]
222 --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no]
223 --enable-libtheora enable Theora encoding via libtheora [no]
224 --enable-libtwolame enable MP2 encoding via libtwolame [no]
225 --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no]
226 --enable-libv4l2 enable libv4l2/v4l-utils [no]
227 --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
228 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
229 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
230 native implementation exists [no]
231 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
232 --enable-libx264 enable H.264 encoding via x264 [no]
233 --enable-libxavs enable AVS encoding via xavs [no]
234 --enable-libxvid enable Xvid encoding via xvidcore,
235 native MPEG-4/Xvid encoder exists [no]
236 --enable-openal enable OpenAL 1.1 capture support [no]
237 --enable-opencl enable OpenCL code
238 --enable-openssl enable openssl [no]
239 --enable-x11grab enable X11 grabbing [no]
240 --enable-zlib enable zlib [autodetect]
242 Advanced options (experts only):
243 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
244 --enable-cross-compile assume a cross-compiler is used
245 --sysroot=PATH root of cross-build tree
246 --sysinclude=PATH location of cross-build system headers
247 --target-os=OS compiler targets OS [$target_os]
248 --target-exec=CMD command to run executables on target
249 --target-path=DIR path to view of build directory on target
250 --toolchain=NAME set tool defaults according to NAME
251 --nm=NM use nm tool NM [$nm_default]
252 --ar=AR use archive tool AR [$ar_default]
253 --as=AS use assembler AS [$as_default]
254 --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
255 --cc=CC use C compiler CC [$cc_default]
256 --cxx=CXX use C compiler CXX [$cxx_default]
257 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
258 --ld=LD use linker LD [$ld_default]
259 --host-cc=HOSTCC use host C compiler HOSTCC
260 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
261 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
262 --host-ld=HOSTLD use host linker HOSTLD
263 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
264 --host-libs=HLIBS use libs HLIBS when linking for host
265 --host-os=OS compiler host OS [$target_os]
266 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
267 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
268 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
269 --extra-libs=ELIBS add ELIBS [$ELIBS]
270 --extra-version=STRING version string suffix []
271 --optflags=OPTFLAGS override optimization-related compiler flags
272 --build-suffix=SUFFIX library name suffix []
273 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
274 --progs-suffix=SUFFIX program name suffix []
275 --arch=ARCH select architecture [$arch]
276 --cpu=CPU select the minimum required CPU (affects
277 instruction selection, may crash on older CPUs)
278 --enable-pic build position-independent code
279 --enable-sram allow use of on-chip SRAM
280 --enable-thumb compile for Thumb instruction set
281 --disable-symver disable symbol versioning
282 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
283 --disable-safe-bitstream-reader
284 disable buffer boundary checking in bitreaders
285 (faster, but may crash)
286 --enable-memalign-hack emulate memalign, interferes with memory debuggers
287 --enable-lto use link-time optimization
289 Optimization options (experts only):
290 --disable-asm disable all assembler optimizations
291 --disable-altivec disable AltiVec optimizations
292 --disable-amd3dnow disable 3DNow! optimizations
293 --disable-amd3dnowext disable 3DNow! extended optimizations
294 --disable-mmx disable MMX optimizations
295 --disable-mmxext disable MMXEXT optimizations
296 --disable-sse disable SSE optimizations
297 --disable-sse2 disable SSE2 optimizations
298 --disable-sse3 disable SSE3 optimizations
299 --disable-ssse3 disable SSSE3 optimizations
300 --disable-sse4 disable SSE4 optimizations
301 --disable-sse42 disable SSE4.2 optimizations
302 --disable-avx disable AVX optimizations
303 --disable-fma4 disable FMA4 optimizations
304 --disable-armv5te disable armv5te optimizations
305 --disable-armv6 disable armv6 optimizations
306 --disable-armv6t2 disable armv6t2 optimizations
307 --disable-vfp disable VFP optimizations
308 --disable-neon disable NEON optimizations
309 --disable-vis disable VIS optimizations
310 --disable-inline-asm disable use of inline assembler
311 --disable-yasm disable use of yasm assembler
312 --disable-mips32r2 disable MIPS32R2 optimizations
313 --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations
314 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
315 --disable-mipsfpu disable floating point MIPS optimizations
316 --disable-fast-unaligned consider unaligned accesses slow
318 Developer options (useful when working on FFmpeg itself):
319 --disable-debug disable debugging symbols
320 --enable-debug=LEVEL set the debug level [$debuglevel]
321 --disable-optimizations disable compiler optimizations
322 --enable-extra-warnings enable more compiler warnings
323 --disable-stripping disable stripping of executables and shared libraries
324 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
325 2 causes a slowdown at runtime.
326 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
327 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
328 leaks and errors, using the specified valgrind binary.
329 Cannot be combined with --target-exec
330 --enable-ftrapv Trap arithmetic overflows
331 --samples=PATH location of test samples for FATE, if not set use
332 \$FATE_SAMPLES at make invocation time.
333 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
334 should be used only for debugging purposes)
335 --enable-random randomly enable/disable components
337 --enable-random=LIST randomly enable/disable specific components or
338 --disable-random=LIST component groups. LIST is a comma-separated list
339 of NAME[:PROB] entries where NAME is a component
340 (group) and PROB the probability associated with
342 --random-seed=VALUE seed value for --enable/disable-random
344 NOTE: Object files are built at the place where configure is launched.
352 echo "$@" >> $logfile
357 pr -n -t $1 >> $logfile
368 WARNINGS="${WARNINGS}WARNING: $*\n"
375 If you think configure made a mistake, make sure you are using the latest
376 version from Git. If the latest version fails, report the problem to the
377 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
379 if disabled logging; then
381 Rerun configure with logging enabled (do not use --disable-logging), and
382 include the log this produces with your report.
386 Include the log file "$logfile" produced by configure as this will help
393 # Avoid locale weirdness, besides we really just want to translate ASCII.
395 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
399 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
403 echo "$*" | sed 's/["\\]/\\\0/g'
407 v=$(echo "$1" | sed "s/'/'\\\\''/g")
408 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
413 echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//'
420 eval "case $v in $pat) echo $v ;; esac"
428 eval "case $v in $pat) ;; *) echo $v ;; esac"
435 for v; do eval $m; done
441 for v; do echo ${v}${suffix}; done
456 eval : \${$var:=$value}
461 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
467 eval $(sanitize_var_name "$var")='$*'
471 eval echo \$$(sanitize_var_name "$1")
476 eval level=\${${var}_level:=0}
477 eval ${var}_${level}="\$$var"
478 eval ${var}_level=$(($level+1))
484 eval level=\${${var}_level:-0}
485 test $level = 0 && continue
486 eval level=$(($level-1))
487 eval $var="\${${var}_${level}}"
488 eval ${var}_level=$level
489 eval unset ${var}_${level}
511 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
517 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
523 enabled $var && continue
524 eval sel="\$${var}_select"
525 eval sgs="\$${var}_suggest"
529 enable_deep_weak $sgs
545 test "${1#!}" = "$1" && op== || op=!=
546 eval test "x\$${1#!}" $op "xyes"
550 test "${1#!}" = "$1" && op== || op=!=
551 eval test "x\$${1#!}" $op "xno"
556 enabled $opt || return 1
562 disabled $opt || return 1
568 enabled $opt && return 0
574 disabled $opt && return 0
581 eval : \${$opt:=\$${opt}_default}
589 [ $var = $value ] && return 0
597 enabled ${cfg}_checking && die "Circular dependency for $cfg."
598 disabled ${cfg}_checking && continue
599 enable ${cfg}_checking
602 eval dep_all="\$${cfg}_deps"
603 eval dep_any="\$${cfg}_deps_any"
604 eval dep_sel="\$${cfg}_select"
605 eval dep_sgs="\$${cfg}_suggest"
606 eval dep_ifa="\$${cfg}_if"
607 eval dep_ifn="\$${cfg}_if_any"
609 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
610 do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
611 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
613 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
614 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
615 enabled_all $dep_all || disable $cfg
616 enabled_any $dep_any || disable $cfg
617 disabled_any $dep_sel && disable $cfg
619 if enabled $cfg; then
621 enable_deep_weak $dep_sgs
624 disable ${cfg}_checking
633 for cfg in $allopts; do
634 enabled $cfg || continue
635 eval dep_extralibs="\$${cfg}_extralibs"
636 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
644 map 'eval echo "$v \${$v:-no}"' "$@" |
645 awk "BEGIN { split(\"$files\", files) }
647 c = \"$pfx\" toupper(\$1);
653 if (file ~ /\\.h\$/) {
654 printf(\"#define %s %d\\n\", c, v) >>file;
655 } else if (file ~ /\\.asm\$/) {
656 printf(\"%%define %s %d\\n\", c, v) >>file;
657 } else if (file ~ /\\.mak\$/) {
658 n = -v ? \"\" : \"!\";
659 printf(\"%s%s=yes\\n\", n, c) >>file;
660 } else if (file ~ /\\.texi\$/) {
661 pre = -v ? \"\" : \"@c \";
664 gsub(/_/, \"-\", c2);
665 printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
675 enabled $v && printf "%s\n" ${v%$suf};
682 eval "$var=\"\$$var $*\""
688 eval "$var=\"$* \$$var\""
696 append CFLAGS $($cflags_filter "$@")
700 append CXXFLAGS $($cflags_filter "$@")
704 append ASFLAGS $($asflags_filter "$@")
708 append LDFLAGS $($ldflags_filter "$@")
712 prepend extralibs $($ldflags_filter "$@")
716 append host_cppflags "$@"
720 append host_cflags $($host_cflags_filter "$@")
724 append host_ldflags $($host_ldflags_filter "$@")
728 append compat_objs $1
730 map 'add_cppflags -D$v' "$@"
735 "$@" >> $logfile 2>&1
739 eval printf '%s\\n' $CC_O
743 eval printf '%s\\n' $CC_E
750 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
757 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
764 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
768 eval printf '%s\\n' $AS_O
775 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
779 log check_inline_asm "$@"
784 check_cc "$@" <<EOF && enable $name
785 void foo(void){ __asm__ volatile($code); }
791 check_inline_asm ${1}_inline "\"$2\""
792 echo "$2" | check_as && enable ${1}_external || disable ${1}_external
800 check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
804 eval printf '%s\\n' $LD_O
811 flags=$(filter_out '-l*|*.so' $@)
812 libs=$(filter '-l*|*.so' $@)
813 check_$type $($cflags_filter $flags) || return
814 flags=$($ldflags_filter $flags)
815 libs=$($ldflags_filter $libs)
816 check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
826 for hdr in $headers; do
827 echo "#include <$hdr>"
829 echo "int main(void) { $code; return 0; }"
830 } | check_$check "$@"
834 log check_cppflags "$@"
835 check_cc "$@" <<EOF && append CPPFLAGS "$@"
841 log check_cflags "$@"
842 set -- $($cflags_filter "$@")
843 check_cc "$@" <<EOF && append CFLAGS "$@"
849 log check_cxxflags "$@"
850 set -- $($cflags_filter "$@")
851 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
857 log test_ldflags "$@"
858 check_ld "cc" "$@" <<EOF
859 int main(void){ return 0; }
864 log check_ldflags "$@"
865 test_ldflags "$@" && add_ldflags "$@"
869 log check_header "$@"
873 check_cpp "$@" <<EOF && enable_safe $header
884 check_ld "cc" "$@" <<EOF && enable $func
886 int main(void){ $func(); }
891 log check_mathfunc "$@"
895 test $narg = 2 && args="f, g" || args="f"
897 check_ld "cc" "$@" <<EOF && enable $func
899 float foo(float f, float g) { return $func($args); }
900 int main(void){ return (int) foo; }
904 check_func_headers(){
905 log check_func_headers "$@"
910 for hdr in $headers; do
911 echo "#include <$hdr>"
913 for func in $funcs; do
914 echo "long check_$func(void) { return (long) $func; }"
916 echo "int main(void) { return 0; }"
917 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
920 check_class_headers_cpp(){
921 log check_class_headers_cpp "$@"
926 for hdr in $headers; do
927 echo "#include <$hdr>"
929 echo "int main(void) { "
931 for class in $classes; do
936 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
939 check_cpp_condition(){
940 log check_cpp_condition "$@"
947 #error "unsatisfied condition: $condition"
957 check_header $header && check_func $func "$@" && add_extralibs "$@"
965 check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
969 log check_lib_cpp "$@"
973 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
977 log check_pkg_config "$@"
982 $pkg_config --exists $pkg 2>/dev/null || return
983 pkg_cflags=$($pkg_config --cflags $pkg)
984 pkg_libs=$($pkg_config --libs $pkg)
985 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
986 set_safe ${pkg}_cflags $pkg_cflags &&
987 set_safe ${pkg}_libs $pkg_libs
991 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
997 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
998 # are safe but may not be available everywhere. Thus we use
999 # raise(SIGTERM) instead. The check is run in a subshell so we
1000 # can redirect the "Terminated" message from the shell. SIGBUS
1001 # is not defined by standard C so it is used conditionally.
1003 (check_exec "$@") >> $logfile 2>&1 <<EOF
1005 static void sighandler(int sig){
1011 int (*func_ptr)(void) = func;
1013 signal(SIGILL, sighandler);
1014 signal(SIGFPE, sighandler);
1015 signal(SIGSEGV, sighandler);
1017 signal(SIGBUS, sighandler);
1029 disable_safe "$type"
1030 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
1034 log check_struct "$@"
1039 disable_safe "${struct}_${member}"
1040 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1041 enable_safe "${struct}_${member}"
1045 log check_builtin "$@"
1051 check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1059 check_lib $header $func "$@" || die "ERROR: $name not found"
1067 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
1075 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1078 require_pkg_config(){
1080 check_pkg_config "$@" || die "ERROR: $pkg not found"
1081 add_cflags $(get_safe ${pkg}_cflags)
1082 add_extralibs $(get_safe ${pkg}_libs)
1086 eval printf '%s\\n' $HOSTCC_O
1090 log check_host_cc "$@"
1093 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1096 check_host_cppflags(){
1097 log check_host_cppflags "$@"
1098 check_host_cc "$@" <<EOF && append host_cppflags "$@"
1103 check_host_cflags(){
1104 log check_host_cflags "$@"
1105 set -- $($host_cflags_filter "$@")
1106 check_host_cc "$@" <<EOF && append host_cflags "$@"
1114 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
1118 cmp -s "$1" "$2" && echo "$2 is unchanged" && return
1119 mkdir -p "$(dirname $2)"
1123 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1124 # system-dependent things.
1140 EXTERNAL_LIBRARY_LIST="
1231 $EXTERNAL_LIBRARY_LIST
1244 incompatible_fork_abi
1255 safe_bitstream_reader
1350 incompatible_fork_abi
1383 $(add_suffix _external $ARCH_EXT_LIST)
1384 $(add_suffix _inline $ARCH_EXT_LIST)
1404 cdio_paranoia_paranoia_h
1412 dev_bktr_ioctl_bt848_h
1413 dev_bktr_ioctl_meteor_h
1415 dev_video_bktr_ioctl_bt848_h
1416 dev_video_meteor_ioctl_meteor_h
1432 GetProcessAffinityMask
1433 GetProcessMemoryInfo
1435 GetSystemTimeAsFileTime
1446 jack_port_get_latency_range
1456 machine_ioctl_bt848_h
1457 machine_ioctl_meteor_h
1470 openjpeg_1_5_openjpeg_h
1481 SetConsoleTextAttribute
1490 struct_group_source_req
1491 struct_ip_mreq_source
1494 struct_rusage_ru_maxrss
1495 struct_sctp_event_subscribe
1497 struct_sockaddr_sa_len
1498 struct_sockaddr_storage
1499 struct_v4l2_frmivalenum_discrete
1502 sync_val_compare_and_swap
1525 # options emitted with CONFIG_ prefix but not available on the command line
1531 frame_thread_encoder
1627 # code dependency declarations
1629 # architecture extensions
1638 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
1641 mips32r2_deps="mips"
1642 mipsdspr1_deps="mips"
1643 mipsdspr2_deps="mips"
1650 x86_64_suggest="cmov fast_cmov"
1653 amd3dnowext_deps="amd3dnow"
1665 mmx_external_deps="yasm"
1666 mmx_inline_deps="inline_asm"
1667 mmx_suggest="mmx_external mmx_inline"
1669 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do
1670 eval dep=\$${ext}_deps
1671 eval ${ext}_external_deps='"${dep}_external"'
1672 eval ${ext}_inline_deps='"${dep}_inline"'
1673 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
1676 aligned_stack_if_any="ppc x86"
1677 fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1678 fast_clz_if_any="alpha avr32 mips ppc x86"
1679 fast_unaligned_if_any="ppc x86"
1681 inline_asm_deps="!tms470"
1682 need_memalign="altivec neon sse"
1684 symver_if_any="symver_asm_label symver_gnu_asm"
1690 error_resilience_select="dsputil"
1691 frame_thread_encoder_deps="encoders threads"
1694 mpegaudio_select="mpegaudiodsp"
1695 mpegaudiodsp_select="dct"
1696 mpegvideo_select="dsputil h264chroma hpeldsp videodsp"
1697 mpegvideoenc_select="mpegvideo"
1699 # decoders / encoders
1700 aac_decoder_select="mdct sinewin"
1701 aac_encoder_select="audio_frame_queue mdct sinewin"
1702 aac_latm_decoder_select="aac_decoder aac_latm_parser"
1703 ac3_decoder_select="mdct ac3dsp ac3_parser dsputil"
1704 ac3_encoder_select="mdct ac3dsp dsputil"
1705 ac3_fixed_encoder_select="mdct ac3dsp dsputil"
1706 alac_encoder_select="lpc"
1707 als_decoder_select="dsputil"
1708 amrnb_decoder_select="lsp"
1709 amrwb_decoder_select="lsp"
1710 amv_encoder_select="aandcttables"
1711 ape_decoder_select="dsputil"
1712 asv_decoder_select="dsputil"
1713 atrac1_decoder_select="mdct sinewin"
1714 atrac3_decoder_select="mdct"
1715 bink_decoder_select="dsputil hpeldsp"
1716 binkaudio_dct_decoder_select="mdct rdft dct sinewin"
1717 binkaudio_rdft_decoder_select="mdct rdft sinewin"
1718 cavs_decoder_select="dsputil golomb h264chroma videodsp"
1719 cllc_decoder_select="dsputil"
1720 comfortnoise_encoder_select="lpc"
1721 cook_decoder_select="dsputil mdct sinewin"
1722 cscd_decoder_select="lzo"
1723 cscd_decoder_suggest="zlib"
1724 dca_decoder_select="mdct"
1725 dirac_decoder_select="dsputil dwt golomb videodsp"
1726 dnxhd_decoder_select="dsputil"
1727 dnxhd_encoder_select="aandcttables dsputil mpegvideoenc"
1728 dvvideo_decoder_select="dsputil"
1729 dxa_decoder_select="zlib"
1730 eac3_decoder_select="ac3_decoder"
1731 eac3_encoder_select="ac3_encoder"
1732 eamad_decoder_select="aandcttables dsputil mpegvideo"
1733 eatgq_decoder_select="aandcttables"
1734 eatqi_decoder_select="aandcttables error_resilience mpegvideo"
1735 exr_decoder_select="zlib"
1736 ffv1_decoder_select="dsputil golomb rangecoder"
1737 ffv1_encoder_select="rangecoder"
1738 ffvhuff_encoder_select="huffman"
1739 flac_decoder_select="golomb"
1740 flac_encoder_select="dsputil golomb lpc"
1741 flashsv_decoder_select="zlib"
1742 flashsv_encoder_select="zlib"
1743 flashsv2_encoder_select="zlib"
1744 flashsv2_decoder_select="zlib"
1745 flv_decoder_select="h263_decoder"
1746 flv_encoder_select="h263_encoder"
1747 fourxm_decoder_select="dsputil"
1748 fraps_decoder_select="dsputil huffman"
1749 g729_decoder_select="dsputil"
1750 h261_decoder_select="error_resilience mpegvideo"
1751 h261_encoder_select="aandcttables mpegvideoenc"
1752 h263_decoder_select="error_resilience h263_parser mpegvideo"
1753 h263_encoder_select="aandcttables mpegvideoenc"
1754 h263i_decoder_select="h263_decoder"
1755 h263p_encoder_select="h263_encoder"
1756 h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1757 h264_decoder_suggest="error_resilience"
1758 huffyuv_decoder_select="dsputil"
1759 huffyuv_encoder_select="huffman"
1760 iac_decoder_select="fft mdct sinewin"
1761 imc_decoder_select="dsputil fft mdct sinewin"
1762 indeo3_decoder_select="hpeldsp"
1763 interplay_video_decoder_select="hpeldsp"
1764 jpegls_decoder_select="golomb"
1765 jpegls_encoder_select="golomb"
1766 jv_decoder_select="dsputil"
1767 lagarith_decoder_select="dsputil"
1768 ljpeg_encoder_select="aandcttables mpegvideoenc"
1769 loco_decoder_select="golomb"
1770 mdec_decoder_select="dsputil error_resilience mpegvideo"
1771 mimic_decoder_select="dsputil hpeldsp"
1772 mjpeg_decoder_select="dsputil hpeldsp"
1773 mjpeg_encoder_select="aandcttables dsputil mpegvideoenc"
1774 mlp_decoder_select="dsputil mlp_parser"
1775 motionpixels_decoder_select="dsputil"
1776 mp1_decoder_select="mpegaudio"
1777 mp1float_decoder_select="mpegaudio"
1778 mp2_decoder_select="mpegaudio"
1779 mp2float_decoder_select="mpegaudio"
1780 mp3_decoder_select="mpegaudio"
1781 mp3adu_decoder_select="mpegaudio"
1782 mp3adufloat_decoder_select="mpegaudio"
1783 mp3float_decoder_select="mpegaudio"
1784 mp3on4_decoder_select="mpegaudio"
1785 mp3on4float_decoder_select="mpegaudio"
1786 mpc7_decoder_select="dsputil mpegaudiodsp"
1787 mpc8_decoder_select="dsputil mpegaudiodsp"
1788 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1789 mpeg_xvmc_decoder_select="mpeg2video_decoder"
1790 mpeg1video_decoder_select="error_resilience mpegvideo"
1791 mpeg1video_encoder_select="aandcttables mpegvideoenc"
1792 mpeg2video_decoder_select="error_resilience mpegvideo"
1793 mpeg2video_encoder_select="aandcttables mpegvideoenc"
1794 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1795 mpeg4_encoder_select="h263_encoder"
1796 msmpeg4v1_decoder_select="h263_decoder"
1797 msmpeg4v2_decoder_select="h263_decoder"
1798 msmpeg4v2_encoder_select="h263_encoder"
1799 msmpeg4v3_decoder_select="h263_decoder"
1800 msmpeg4v3_encoder_select="h263_encoder"
1801 mss2_decoder_select="error_resilience vc1_decoder"
1802 nellymoser_decoder_select="mdct sinewin"
1803 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
1804 nuv_decoder_select="dsputil lzo"
1805 png_decoder_select="zlib"
1806 png_encoder_select="dsputil zlib"
1807 prores_decoder_select="dsputil"
1808 qcelp_decoder_select="lsp"
1809 qdm2_decoder_select="mdct rdft mpegaudiodsp"
1810 ra_144_encoder_select="audio_frame_queue lpc"
1811 ralf_decoder_select="golomb"
1812 rtjpeg_decoder_select="dsputil"
1813 rv10_decoder_select="error_resilience h263_decoder"
1814 rv10_encoder_select="h263_encoder"
1815 rv20_decoder_select="error_resilience h263_decoder"
1816 rv20_encoder_select="h263_encoder"
1817 rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1818 rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1819 shorten_decoder_select="golomb"
1820 sipr_decoder_select="lsp"
1821 snow_decoder_select="dsputil dwt h264qpel hpeldsp rangecoder"
1822 snow_encoder_select="aandcttables dsputil dwt h264qpel hpeldsp mpegvideoenc rangecoder"
1823 sonic_decoder_select="golomb"
1824 sonic_encoder_select="golomb"
1825 sonic_ls_encoder_select="golomb"
1826 svq1_decoder_select="hpeldsp"
1827 svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc"
1828 svq3_decoder_select="dsputil golomb h264chroma h264dsp h264pred h264qpel mpegvideo videodsp"
1829 svq3_decoder_suggest="error_resilience zlib"
1830 tak_decoder_select="dsputil"
1831 theora_decoder_select="vp3_decoder"
1832 tiff_decoder_suggest="zlib"
1833 tiff_encoder_suggest="zlib"
1834 truehd_decoder_select="mlp_parser"
1835 truemotion2_decoder_select="dsputil"
1836 tscc_decoder_select="zlib"
1837 twinvq_decoder_select="mdct lsp sinewin"
1838 utvideo_decoder_select="dsputil"
1839 utvideo_encoder_select="huffman"
1840 vble_decoder_select="dsputil"
1841 vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel"
1842 vc1image_decoder_select="vc1_decoder"
1843 vorbis_decoder_select="mdct"
1844 vorbis_encoder_select="mdct"
1845 vp3_decoder_select="hpeldsp vp3dsp videodsp"
1846 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp"
1847 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp"
1848 vp6a_decoder_select="vp6_decoder"
1849 vp6f_decoder_select="vp6_decoder"
1850 vp8_decoder_select="h264pred videodsp"
1851 wmapro_decoder_select="mdct sinewin"
1852 wmav1_decoder_select="mdct sinewin"
1853 wmav1_encoder_select="mdct sinewin"
1854 wmav2_decoder_select="mdct sinewin"
1855 wmav2_encoder_select="mdct sinewin"
1856 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
1857 wmv1_decoder_select="h263_decoder"
1858 wmv1_encoder_select="h263_encoder"
1859 wmv2_decoder_select="h263_decoder videodsp"
1860 wmv2_encoder_select="h263_encoder"
1861 wmv3_decoder_select="vc1_decoder"
1862 wmv3image_decoder_select="wmv3_decoder"
1863 zerocodec_decoder_select="zlib"
1864 zlib_decoder_select="zlib"
1865 zlib_encoder_select="zlib"
1866 zmbv_decoder_select="zlib"
1867 zmbv_encoder_select="zlib"
1869 # hardware accelerators
1870 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
1871 dxva2_deps="dxva2api_h"
1872 vaapi_deps="va_va_h"
1873 vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
1874 vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
1875 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1877 h263_vaapi_hwaccel_deps="vaapi"
1878 h263_vaapi_hwaccel_select="h263_decoder"
1879 h263_vdpau_hwaccel_deps="vdpau"
1880 h263_vdpau_hwaccel_select="h263_decoder"
1881 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
1882 h264_dxva2_hwaccel_deps="dxva2"
1883 h264_dxva2_hwaccel_select="h264_decoder"
1884 h264_vaapi_hwaccel_deps="vaapi"
1885 h264_vaapi_hwaccel_select="h264_decoder"
1886 h264_vda_decoder_deps="vda"
1887 h264_vda_decoder_select="h264_decoder"
1888 h264_vda_hwaccel_deps="vda"
1889 h264_vda_hwaccel_select="h264_decoder"
1890 h264_vdpau_decoder_deps="vdpau"
1891 h264_vdpau_decoder_select="h264_decoder"
1892 h264_vdpau_hwaccel_deps="vdpau"
1893 h264_vdpau_hwaccel_select="h264_decoder"
1894 mpeg_vdpau_decoder_deps="vdpau"
1895 mpeg_vdpau_decoder_select="mpeg2video_decoder"
1896 mpeg1_vdpau_decoder_deps="vdpau"
1897 mpeg1_vdpau_decoder_select="mpeg1video_decoder"
1898 mpeg1_vdpau_hwaccel_deps="vdpau"
1899 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
1900 mpeg2_crystalhd_decoder_select="crystalhd"
1901 mpeg2_dxva2_hwaccel_deps="dxva2"
1902 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
1903 mpeg2_vaapi_hwaccel_deps="vaapi"
1904 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
1905 mpeg2_vdpau_hwaccel_deps="vdpau"
1906 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
1907 mpeg4_crystalhd_decoder_select="crystalhd"
1908 mpeg4_vaapi_hwaccel_deps="vaapi"
1909 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
1910 mpeg4_vdpau_decoder_deps="vdpau"
1911 mpeg4_vdpau_decoder_select="mpeg4_decoder"
1912 mpeg4_vdpau_hwaccel_deps="vdpau"
1913 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
1914 msmpeg4_crystalhd_decoder_select="crystalhd"
1915 vc1_crystalhd_decoder_select="crystalhd"
1916 vc1_dxva2_hwaccel_deps="dxva2"
1917 vc1_dxva2_hwaccel_select="vc1_decoder"
1918 vc1_vaapi_hwaccel_deps="vaapi"
1919 vc1_vaapi_hwaccel_select="vc1_decoder"
1920 vc1_vdpau_decoder_deps="vdpau"
1921 vc1_vdpau_decoder_select="vc1_decoder"
1922 vc1_vdpau_hwaccel_deps="vdpau"
1923 vc1_vdpau_hwaccel_select="vc1_decoder"
1924 wmv3_crystalhd_decoder_select="crystalhd"
1925 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
1926 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1927 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1928 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
1931 h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1932 mpeg4video_parser_select="error_resilience mpegvideo"
1933 mpegvideo_parser_select="error_resilience mpegvideo"
1934 vc1_parser_select="mpegvideo"
1936 # external libraries
1937 libaacplus_encoder_deps="libaacplus"
1938 libcelt_decoder_deps="libcelt"
1939 libfaac_encoder_deps="libfaac"
1940 libfaac_encoder_select="audio_frame_queue"
1941 libfdk_aac_encoder_deps="libfdk_aac"
1942 libfdk_aac_encoder_select="audio_frame_queue"
1943 libgsm_decoder_deps="libgsm"
1944 libgsm_encoder_deps="libgsm"
1945 libgsm_ms_decoder_deps="libgsm"
1946 libgsm_ms_encoder_deps="libgsm"
1947 libilbc_decoder_deps="libilbc"
1948 libilbc_encoder_deps="libilbc"
1949 libmodplug_demuxer_deps="libmodplug"
1950 libmp3lame_encoder_deps="libmp3lame"
1951 libmp3lame_encoder_select="audio_frame_queue"
1952 libopencore_amrnb_decoder_deps="libopencore_amrnb"
1953 libopencore_amrnb_encoder_deps="libopencore_amrnb"
1954 libopencore_amrnb_encoder_select="audio_frame_queue"
1955 libopencore_amrwb_decoder_deps="libopencore_amrwb"
1956 libopenjpeg_decoder_deps="libopenjpeg"
1957 libopenjpeg_encoder_deps="libopenjpeg"
1958 libopus_decoder_deps="libopus"
1959 libopus_encoder_deps="libopus"
1960 libopus_encoder_select="audio_frame_queue"
1961 libschroedinger_decoder_deps="libschroedinger"
1962 libschroedinger_encoder_deps="libschroedinger"
1963 libspeex_decoder_deps="libspeex"
1964 libspeex_encoder_deps="libspeex"
1965 libspeex_encoder_select="audio_frame_queue"
1966 libstagefright_h264_decoder_deps="libstagefright_h264"
1967 libtheora_encoder_deps="libtheora"
1968 libtwolame_encoder_deps="libtwolame"
1969 libvo_aacenc_encoder_deps="libvo_aacenc"
1970 libvo_aacenc_encoder_select="audio_frame_queue"
1971 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
1972 libvorbis_decoder_deps="libvorbis"
1973 libvorbis_encoder_deps="libvorbis"
1974 libvorbis_encoder_select="audio_frame_queue"
1975 libvpx_vp8_decoder_deps="libvpx"
1976 libvpx_vp8_encoder_deps="libvpx"
1977 libvpx_vp9_decoder_deps="libvpx"
1978 libvpx_vp9_encoder_deps="libvpx"
1979 libx264_encoder_deps="libx264"
1980 libx264rgb_encoder_deps="libx264"
1981 libxavs_encoder_deps="libxavs"
1982 libxvid_encoder_deps="libxvid"
1983 libutvideo_decoder_deps="libutvideo"
1984 libutvideo_encoder_deps="libutvideo"
1987 ac3_demuxer_select="ac3_parser"
1988 asf_stream_muxer_select="asf_muxer"
1989 avisynth_demuxer_deps="avisynth"
1990 dirac_demuxer_select="dirac_parser"
1991 dts_demuxer_select="dca_parser"
1992 dtshd_demuxer_select="dca_parser"
1993 eac3_demuxer_select="ac3_parser"
1994 f4v_muxer_select="mov_muxer"
1995 flac_demuxer_select="flac_parser"
1996 ipod_muxer_select="mov_muxer"
1997 ismv_muxer_select="mov_muxer"
1998 libnut_demuxer_deps="libnut"
1999 libnut_muxer_deps="libnut"
2000 matroska_audio_muxer_select="matroska_muxer"
2001 matroska_demuxer_suggest="bzlib lzo zlib"
2002 mov_demuxer_suggest="zlib"
2003 mov_muxer_select="rtpenc_chain"
2004 mp3_demuxer_select="mpegaudio_parser"
2005 mp4_muxer_select="mov_muxer"
2006 mpegts_muxer_select="adts_muxer latm_muxer"
2007 mpegtsraw_demuxer_select="mpegts_demuxer"
2008 mxf_d10_muxer_select="mxf_muxer"
2009 ogg_demuxer_select="golomb"
2010 psp_muxer_select="mov_muxer"
2011 rtp_demuxer_select="sdp_demuxer"
2012 rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
2013 rtsp_demuxer_select="http_protocol rtpdec"
2014 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2015 sap_demuxer_select="sdp_demuxer"
2016 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
2017 sdp_demuxer_select="rtpdec"
2018 smoothstreaming_muxer_select="ismv_muxer"
2019 spdif_muxer_select="aac_parser"
2020 tak_demuxer_select="tak_parser"
2021 tg2_muxer_select="mov_muxer"
2022 tgp_muxer_select="mov_muxer"
2023 vobsub_demuxer_select="mpegps_demuxer"
2024 w64_demuxer_deps="wav_demuxer"
2025 w64_muxer_deps="wav_muxer"
2028 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
2029 alsa_outdev_deps="alsa_asoundlib_h"
2030 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2031 caca_outdev_deps="libcaca"
2032 dshow_indev_deps="IBaseFilter"
2033 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
2034 dv1394_indev_deps="dv1394 dv_demuxer"
2035 fbdev_indev_deps="linux_fb_h"
2036 iec61883_indev_deps="libiec61883"
2037 jack_indev_deps="jack_jack_h sem_timedwait"
2038 lavfi_indev_deps="avfilter"
2039 libcdio_indev_deps="libcdio"
2040 libdc1394_indev_deps="libdc1394"
2041 libv4l2_indev_deps="libv4l2"
2042 openal_indev_deps="openal"
2043 oss_indev_deps_any="soundcard_h sys_soundcard_h"
2044 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
2045 pulse_indev_deps="libpulse"
2046 sdl_outdev_deps="sdl"
2047 sndio_indev_deps="sndio_h"
2048 sndio_outdev_deps="sndio_h"
2049 v4l_indev_deps="linux_videodev_h"
2050 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
2051 vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
2052 vfwcap_indev_extralibs="-lavicap32"
2053 x11grab_indev_deps="x11grab"
2056 bluray_protocol_deps="libbluray"
2057 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
2058 ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl"
2059 ffrtmpcrypt_protocol_select="tcp_protocol"
2060 ffrtmphttp_protocol_deps="!librtmp_protocol"
2061 ffrtmphttp_protocol_select="http_protocol"
2062 gopher_protocol_select="network"
2063 httpproxy_protocol_select="tcp_protocol"
2064 http_protocol_select="tcp_protocol"
2065 https_protocol_select="tls_protocol"
2066 librtmp_protocol_deps="librtmp"
2067 librtmpe_protocol_deps="librtmp"
2068 librtmps_protocol_deps="librtmp"
2069 librtmpt_protocol_deps="librtmp"
2070 librtmpte_protocol_deps="librtmp"
2071 mmsh_protocol_select="http_protocol"
2072 mmst_protocol_select="network"
2073 rtmp_protocol_deps="!librtmp_protocol"
2074 rtmp_protocol_select="tcp_protocol"
2075 rtmpe_protocol_select="ffrtmpcrypt_protocol"
2076 rtmps_protocol_deps="!librtmp_protocol"
2077 rtmps_protocol_select="tls_protocol"
2078 rtmpt_protocol_select="ffrtmphttp_protocol"
2079 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
2080 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
2081 rtp_protocol_select="udp_protocol"
2082 sctp_protocol_deps="struct_sctp_event_subscribe"
2083 sctp_protocol_select="network"
2084 srtp_protocol_select="rtp_protocol"
2085 tcp_protocol_select="network"
2086 tls_protocol_deps_any="openssl gnutls"
2087 tls_protocol_select="tcp_protocol"
2088 udp_protocol_select="network"
2091 aconvert_filter_deps="swresample"
2092 amovie_filter_deps="avcodec avformat"
2093 aresample_filter_deps="swresample"
2094 ass_filter_deps="libass"
2095 asyncts_filter_deps="avresample"
2096 atempo_filter_deps="avcodec rdft"
2097 blackframe_filter_deps="gpl"
2098 boxblur_filter_deps="gpl"
2099 colormatrix_filter_deps="gpl"
2100 cropdetect_filter_deps="gpl"
2101 decimate_filter_deps="gpl avcodec"
2102 delogo_filter_deps="gpl"
2103 deshake_filter_deps="avcodec"
2104 drawtext_filter_deps="libfreetype"
2105 ebur128_filter_deps="gpl"
2106 flite_filter_deps="libflite"
2107 frei0r_filter_deps="frei0r dlopen"
2108 frei0r_filter_extralibs='$ldl'
2109 frei0r_src_filter_deps="frei0r dlopen"
2110 frei0r_src_filter_extralibs='$ldl'
2111 geq_filter_deps="gpl"
2112 histeq_filter_deps="gpl"
2113 hqdn3d_filter_deps="gpl"
2114 hue_filter_deps="gpl"
2115 kerndeint_filter_deps="gpl"
2116 movie_filter_deps="avcodec avformat"
2117 mp_filter_deps="gpl avcodec swscale inline_asm"
2118 mptestsrc_filter_deps="gpl"
2119 negate_filter_deps="lut_filter"
2120 noise_filter_deps="gpl"
2121 resample_filter_deps="avresample"
2122 ocv_filter_deps="libopencv"
2123 pan_filter_deps="swresample"
2124 pp_filter_deps="gpl postproc"
2125 removelogo_filter_deps="avcodec avformat swscale"
2126 scale_filter_deps="swscale"
2127 smartblur_filter_deps="gpl swscale"
2128 showspectrum_filter_deps="avcodec rdft"
2129 stereo3d_filter_deps="gpl"
2130 subtitles_filter_deps="avformat avcodec libass"
2131 super2xsai_filter_deps="gpl"
2132 tinterlace_filter_deps="gpl"
2133 yadif_filter_deps="gpl"
2134 pixfmts_super2xsai_test_deps="super2xsai_filter"
2135 tinterlace_merge_test_deps="tinterlace_filter"
2136 tinterlace_pad_test_deps="tinterlace_filter"
2139 avcodec_deps="avutil"
2140 avdevice_deps="avutil avcodec avformat"
2141 avfilter_deps="avutil"
2142 avformat_deps="avutil avcodec"
2143 avresample_deps="avutil"
2144 postproc_deps="avutil gpl"
2145 swscale_deps="avutil"
2148 ffmpeg_deps="avcodec avfilter avformat swscale swresample"
2149 ffmpeg_select="format_filter aformat_filter
2150 setpts_filter null_filter anull_filter"
2151 ffplay_deps="avcodec avformat swscale swresample sdl"
2152 ffplay_select="rdft crop_filter"
2153 ffprobe_deps="avcodec avformat"
2154 ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
2155 ffserver_extralibs='$ldl'
2158 podpages_deps="perl"
2159 manpages_deps="perl pod2man"
2160 htmlpages_deps="texi2html"
2161 txtpages_deps="makeinfo"
2162 doc_deps_any="manpages htmlpages podpages txtpages"
2164 # default parameters
2166 logfile="config.log"
2168 # installation paths
2169 prefix_default="/usr/local"
2170 bindir_default='${prefix}/bin'
2171 datadir_default='${prefix}/share/ffmpeg'
2172 incdir_default='${prefix}/include'
2173 libdir_default='${prefix}/lib'
2174 mandir_default='${prefix}/share/man'
2175 shlibdir_default="$libdir_default"
2181 host_cc_default="gcc"
2187 pkg_config_default=pkg-config
2189 strip_default="strip"
2190 yasmexe_default="yasm"
2195 arch_default=$(uname -m)
2199 target_os_default=$(tolower $(uname -s))
2200 host_os=$target_os_default
2202 # configurable options
2203 enable $PROGRAM_LIST
2204 enable $DOCUMENT_LIST
2205 enable $(filter_out avresample $LIBRARY_LIST)
2211 enable optimizations
2212 enable runtime_cpudetect
2213 enable safe_bitstream_reader
2215 enable swscale_alpha
2217 # By default, enable only those hwaccels that have no external dependencies.
2221 SHFLAGS='-shared -Wl,-soname,$$(@F)'
2222 FFSERVERLDFLAGS=-Wl,-E
2225 FULLNAME='$(NAME)$(BUILDSUF)'
2226 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
2229 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
2230 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
2231 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
2232 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2233 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
2234 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2254 host_cflags='-O3 -g'
2255 host_cppflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600'
2257 host_cflags_filter=echo
2258 host_ldflags_filter=echo
2260 target_path='$(CURDIR)'
2262 # since the object filename is not given with the -MM flag, the compiler
2263 # is only able to print the basename, and we must add the path ourselves
2264 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
2268 if test -f configure; then
2271 source_path=$(cd $(dirname "$0"); pwd)
2272 echo "$source_path" | grep -q '[[:blank:]]' &&
2273 die "Out of tree builds are impossible with whitespace in source path."
2274 test -e "$source_path/config.h" &&
2275 die "Out of tree builds are impossible with config.h in source dir."
2282 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
2288 file=$source_path/$3
2289 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
2292 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
2293 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
2294 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
2295 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
2296 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c)
2297 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
2298 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
2299 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
2300 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
2301 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
2302 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
2318 for n in $COMPONENT_LIST; do
2319 v=$(toupper ${n%s})_LIST
2321 eval ${n}_if_any="\$$v"
2324 enable $ARCH_EXT_LIST
2327 echo "Unknown option \"$1\"."
2328 echo "See $0 --help for available options."
2333 cat | tr ' ' '\n' | sort | pr -r -3 -t
2339 echo $* | sed s/$suffix//g | print_3_columns
2351 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
2352 echo "prob ${prob:-0.5}"
2360 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
2361 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
2371 add_extralibs $optval
2374 disable $INDEV_LIST $OUTDEV_LIST
2377 debuglevel="$optval"
2380 disable $PROGRAM_LIST
2382 --disable-everything)
2383 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2386 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2387 disable $LIBRARY_LIST $PROGRAM_LIST doc
2389 --enable-random|--disable-random)
2390 action=${opt%%-random}
2391 do_random ${action#--} $COMPONENT_LIST
2393 --enable-random=*|--disable-random=*)
2394 action=${opt%%-random=*}
2395 do_random ${action#--} $optval
2397 --enable-*=*|--disable-*=*)
2398 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
2399 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
2400 eval list=\$$(toupper $thing)_LIST
2401 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
2402 list=$(filter "$name" $list)
2403 [ "$list" = "" ] && warn "Option $opt did not match anything"
2406 --enable-?*|--disable-?*)
2407 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
2408 if is_in $option $COMPONENT_LIST; then
2409 test $action = disable && action=unset
2410 eval $action \$$(toupper ${option%s})_LIST
2411 elif is_in $option $CMDLINE_SELECT; then
2418 NAME="${opt#--list-}"
2419 is_in $NAME $COMPONENT_LIST || die_unknown $opt
2421 eval show_list $NAME \$$(toupper $NAME)_LIST
2423 --help|-h) show_help
2425 --fatal-warnings) enable fatal_warnings
2428 optname="${opt%%=*}"
2429 optname="${optname#--}"
2430 optname=$(echo "$optname" | sed 's/-/_/g')
2431 if is_in $optname $CMDLINE_SET; then
2432 eval $optname='$optval'
2433 elif is_in $optname $CMDLINE_APPEND; then
2434 append $optname "$optval"
2442 disabled logging && logfile=/dev/null
2444 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
2447 test -n "$cross_prefix" && enable cross_compile
2449 if enabled cross_compile; then
2450 test -n "$arch" && test -n "$target_os" ||
2451 die "Must specify target arch and OS when cross-compiling"
2454 ar_default="${cross_prefix}${ar_default}"
2455 cc_default="${cross_prefix}${cc_default}"
2456 cxx_default="${cross_prefix}${cxx_default}"
2457 nm_default="${cross_prefix}${nm_default}"
2458 pkg_config_default="${cross_prefix}${pkg_config_default}"
2459 ranlib="${cross_prefix}${ranlib}"
2460 strip_default="${cross_prefix}${strip_default}"
2462 sysinclude_default="${sysroot}/usr/include"
2464 case "$toolchain" in
2467 add_cflags -fsanitize=address
2468 add_ldflags -fsanitize=address
2472 add_cflags -fsanitize=thread -pie
2473 add_ldflags -fsanitize=thread -pie
2476 cc_default="c99wrap cl"
2477 ld_default="c99wrap link"
2478 nm_default="dumpbin -symbols"
2480 target_os_default="win32"
2483 add_cflags -fprofile-arcs -ftest-coverage
2484 add_ldflags -fprofile-arcs -ftest-coverage
2487 die "Unknown toolchain $toolchain"
2491 set_default arch cc cxx pkg_config strip sysinclude target_os yasmexe
2492 enabled cross_compile || host_cc_default=$cc
2495 if ! $pkg_config --version >/dev/null 2>&1; then
2496 warn "$pkg_config not found, library detection may fail."
2502 mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
2506 EXESUF=$(exesuf $target_os)
2507 HOSTEXESUF=$(exesuf $host_os)
2509 # set temporary file name
2510 : ${TMPDIR:=$TEMPDIR}
2514 if ! check_cmd mktemp -u XXXXXX; then
2515 # simple replacement for missing mktemp
2516 # NOT SAFE FOR GENERAL USE
2518 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
2523 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
2524 (set -C; exec > $tmp) 2>/dev/null ||
2525 die "Unable to create temporary file in $TMPDIR."
2526 append TMPFILES $tmp
2530 trap 'rm -f -- $TMPFILES' EXIT
2535 tmpfile TMPE $EXESUF
2546 # make sure we can execute files in $TMPDIR
2547 cat > $TMPSH 2>> $logfile <<EOF
2550 chmod +x $TMPSH >> $logfile 2>&1
2551 if ! $TMPSH >> $logfile 2>&1; then
2553 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
2554 variable to another directory and make sure that it is not mounted noexec.
2556 die "Sanity test failed."
2562 -std=c99) echo -c99 ;;
2563 -mcpu=*) echo -arch ${flag#*=} ;;
2564 -mieee) echo -ieee ;;
2565 -O*|-fast) echo $flag ;;
2566 -fno-math-errno) echo -assume nomath_errno ;;
2568 -Wall) echo -msg_enable level2 ;;
2569 -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
2570 -Wl,*) echo $flag ;;
2580 -fomit-frame-pointer) echo -Oy ;;
2582 -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
2583 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
2584 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
2590 -fno-signed-zeros) ;;
2592 -lz) echo zlib.lib ;;
2593 -lavifil32) echo vfw32.lib ;;
2594 -lavicap32) echo vfw32.lib user32.lib ;;
2595 -l*) echo ${flag#-l}.lib ;;
2604 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
2605 -fomit-frame-pointer) echo -Mnoframe ;;
2616 case "${flag#*=}" in
2617 native) echo -xtarget=native ;;
2618 v9|niagara) echo -xarch=sparc ;;
2619 ultrasparc) echo -xarch=sparcvis ;;
2620 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
2621 i586|pentium) echo -xchip=pentium ;;
2622 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
2623 pentium3*|c3-2) echo -xtarget=pentium3 ;;
2624 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
2625 pentium4*) echo -xtarget=pentium4 ;;
2626 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
2627 *-sse3) echo -xarch=sse3 ;;
2628 core2) echo -xarch=ssse3 -xchip=core2 ;;
2629 corei7) echo -xarch=sse4_2 -xchip=nehalem ;;
2630 corei7-avx) echo -xarch=avx -xchip=sandybridge ;;
2631 amdfam10|barcelona) echo -xtarget=barcelona ;;
2632 bdver*) echo -xarch=avx ;;
2633 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
2634 k8|opteron|athlon64|athlon-fx)
2635 echo -xarch=sse2a ;;
2636 athlon*) echo -xarch=pentium_proa ;;
2639 -std=c99) echo -xc99 ;;
2640 -fomit-frame-pointer) echo -xregs=frameptr ;;
2641 -fPIC) echo -KPIC -xcode=pic32 ;;
2642 -W*,*) echo $flag ;;
2643 -f*-*|-W*|-mimpure-text) ;;
2654 case "${flag#*=}" in
2655 armv7-a|cortex-a*) echo -mv=7a8 ;;
2656 armv7-r|cortex-r*) echo -mv=7r4 ;;
2657 armv7-m|cortex-m*) echo -mv=7m3 ;;
2658 armv6*|arm11*) echo -mv=6 ;;
2659 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
2661 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
2664 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
2665 -mfpu=vfp) echo --float_support=vfpv2 ;;
2666 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
2667 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
2668 -msoft-float) echo --float_support=vfplib ;;
2669 -O[0-3]|-mf=*) echo $flag ;;
2671 -pds=*) echo $flag ;;
2672 -D*|-I*) echo $flag ;;
2673 --gcc|--abi=*) echo $flag ;;
2683 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
2684 unset _ld_o _ldflags _ld_lib _ld_path
2685 unset _depflags _DEPCMD _DEPFLAGS
2688 if $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
2690 gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)')
2691 _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver"
2692 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2695 elif $_cc -v 2>&1 | grep -qi ^gcc; then
2697 gcc_version=$($_cc --version | head -n1)
2698 gcc_basever=$($_cc -dumpversion)
2699 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
2700 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
2701 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
2702 if ! $_cc -dumpversion | grep -q '^2\.'; then
2703 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2707 elif $_cc --version 2>/dev/null | grep -q ^icc; then
2709 _ident=$($_cc --version | head -n1)
2714 elif $_cc -v 2>&1 | grep -q xlc; then
2716 _ident=$($_cc -qversion 2>/dev/null | head -n1)
2718 _cflags_size='-O5 -qcompact'
2719 elif $_cc -V 2>/dev/null | grep -q Compaq; then
2721 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
2723 _cflags_speed='-fast'
2725 _flags_filter=ccc_flags
2726 elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
2727 test -d "$sysroot" || die "No valid sysroot specified."
2729 _ident=$($_cc --vsn | head -n1)
2730 armcc_conf="$PWD/armcc.conf"
2731 $_cc --arm_linux_configure \
2732 --arm_linux_config_file="$armcc_conf" \
2733 --configure_sysroot="$sysroot" \
2734 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
2735 die "Error creating armcc configuration file."
2736 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
2737 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
2738 as_default="${cross_prefix}gcc"
2742 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
2744 _ident=$($_cc -version | head -n1 | tr -s ' ')
2745 _flags='--gcc --abi=eabi -me'
2748 _depflags='-ppa -ppd=$(@:.o=.d)'
2749 _cflags_speed='-O3 -mf=5'
2750 _cflags_size='-O3 -mf=2'
2751 _flags_filter=tms470_flags
2752 elif $_cc -v 2>&1 | grep -q clang; then
2754 _ident=$($_cc --version | head -n1)
2758 elif $_cc -V 2>&1 | grep -q Sun; then
2760 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
2761 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2762 _DEPFLAGS='-xM1 -xc99'
2765 _cflags_size='-O5 -xspace'
2766 _flags_filter=suncc_flags
2767 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
2769 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2770 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2773 _flags_filter='filter_out -Wdisabled-optimization'
2774 elif $_cc -v 2>&1 | grep -q Open64; then
2776 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2777 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2780 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
2781 elif $_cc -V 2>&1 | grep -q Portland; then
2783 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
2784 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
2785 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
2786 _cflags_size="-O2 -Munroll=c:1 $opt_common"
2788 _flags_filter=pgi_flags
2789 elif $_cc 2>&1 | grep -q Microsoft; then
2791 _ident=$($cc 2>&1 | head -n1)
2792 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
2793 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
2796 # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it
2797 if $_cc 2>&1 | grep -q Linker; then
2804 _flags_filter=msvc_flags
2806 _ld_path='-libpath:'
2808 _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64'
2809 if [ $pfx = hostcc ]; then
2810 append _cflags -Dsnprintf=_snprintf
2815 eval ${pfx}_type=\$_type
2816 eval ${pfx}_ident=\$_ident
2820 eval ${1}_C=\${_cc_c-\${${1}_C}}
2821 eval ${1}_E=\${_cc_e-\${${1}_E}}
2822 eval ${1}_O=\${_cc_o-\${${1}_O}}
2824 if [ -n "$_depflags" ]; then
2825 eval ${1}_DEPFLAGS=\$_depflags
2827 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
2828 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
2829 eval DEP${1}FLAGS=\$_flags
2834 cflags_filter=$_flags_filter
2835 cflags_speed=$_cflags_speed
2836 cflags_size=$_cflags_size
2837 cflags_noopt=$_cflags_noopt
2838 add_cflags $_flags $_cflags
2839 cc_ldflags=$_ldflags
2842 probe_cc hostcc "$host_cc"
2843 host_cflags_filter=$_flags_filter
2844 add_host_cflags $_flags $_cflags
2847 test -n "$cc_type" && enable $cc_type ||
2848 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
2850 : ${as_default:=$cc}
2851 : ${dep_cc_default:=$cc}
2852 : ${ld_default:=$cc}
2853 : ${host_ld_default:=$host_cc}
2854 set_default ar as dep_cc ld host_ld
2857 asflags_filter=$_flags_filter
2858 add_asflags $_flags $_cflags
2862 ldflags_filter=$_flags_filter
2863 add_ldflags $_flags $_ldflags
2864 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
2866 LD_LIB=${_ld_lib-$LD_LIB}
2867 LD_PATH=${_ld_path-$LD_PATH}
2869 probe_cc hostld "$host_ld"
2870 host_ldflags_filter=$_flags_filter
2871 add_host_ldflags $_flags $_ldflags
2872 HOSTLD_O=${_ld_o-$HOSTLD_O}
2874 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
2875 probe_cc depcc "$dep_cc"
2876 CCDEP=${_DEPCMD:-$DEPCMD}
2877 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
2881 if $ar 2>&1 | grep -q Microsoft; then
2884 elif $ar 2>&1 | grep -q 'Texas Instruments'; then
2892 add_cflags $extra_cflags
2893 add_cxxflags $extra_cxxflags
2894 add_asflags $extra_cflags
2896 if test -n "$sysroot"; then
2899 add_cppflags --sysroot="$sysroot"
2900 add_ldflags --sysroot="$sysroot"
2903 add_cppflags -I"$sysinclude"
2904 add_ldflags --sysroot="$sysroot"
2909 if test "$cpu" = host; then
2910 enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
2915 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
2917 s/.*$1=\\([^ ]*\\).*/\\1/
2922 cpu=$(check_native -march || check_native -mcpu)
2926 test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
2929 # Deal with common $arch aliases
2943 "Power Macintosh"|ppc*|powerpc*)
2958 i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
2963 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
2966 # Add processor-specific flags
2967 if enabled aarch64; then
2971 cpuflags="-march=$cpu"
2974 cpuflags="-mcpu=$cpu"
2978 elif enabled alpha; then
2980 cpuflags="-mcpu=$cpu"
2982 elif enabled arm; then
2985 check_cpp_condition stddef.h \
2986 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
2991 if check_arm_arch 4; then echo armv4;
2992 elif check_arm_arch 4T; then echo armv4t;
2993 elif check_arm_arch 5; then echo armv5;
2994 elif check_arm_arch 5E; then echo armv5e;
2995 elif check_arm_arch 5T; then echo armv5t;
2996 elif check_arm_arch 5TE; then echo armv5te;
2997 elif check_arm_arch 5TEJ; then echo armv5te;
2998 elif check_arm_arch 6; then echo armv6;
2999 elif check_arm_arch 6J; then echo armv6j;
3000 elif check_arm_arch 6K; then echo armv6k;
3001 elif check_arm_arch 6Z; then echo armv6z;
3002 elif check_arm_arch 6ZK; then echo armv6zk;
3003 elif check_arm_arch 6T2; then echo armv6t2;
3004 elif check_arm_arch 7; then echo armv7;
3005 elif check_arm_arch 7A 7_A; then echo armv7-a;
3006 elif check_arm_arch 7R 7_R; then echo armv7-r;
3007 elif check_arm_arch 7M 7_M; then echo armv7-m;
3008 elif check_arm_arch 7EM 7E_M; then echo armv7-m;
3009 elif check_arm_arch 8A 8_A; then echo armv8-a;
3013 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
3017 cpuflags="-march=$cpu"
3018 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
3021 cpuflags="-mcpu=$cpu"
3023 cortex-a*) subarch=armv7a ;;
3024 cortex-r*) subarch=armv7r ;;
3025 cortex-m*) enable thumb; subarch=armv7m ;;
3026 arm11*) subarch=armv6 ;;
3027 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
3028 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
3029 *) subarch=$(probe_arm_arch) ;;
3035 armv5t*) enable fast_clz ;;
3036 armv[6-8]*) enable fast_clz fast_unaligned ;;
3039 elif enabled avr32; then
3044 cpuflags="-mpart=$cpu"
3048 cpuflags="-march=$cpu"
3052 cpuflags="-mcpu=$cpu"
3056 cpuflags="-march=$cpu"
3060 elif enabled bfin; then
3062 cpuflags="-mcpu=$cpu"
3064 elif enabled mips; then
3066 cpuflags="-march=$cpu"
3082 24kef*|34kf*|1004kf*)
3090 elif enabled ppc; then
3092 case $(tolower $cpu) in
3093 601|ppc601|powerpc601)
3094 cpuflags="-mcpu=601"
3097 603*|ppc603*|powerpc603*)
3098 cpuflags="-mcpu=603"
3101 604*|ppc604*|powerpc604*)
3102 cpuflags="-mcpu=604"
3105 g3|75*|ppc75*|powerpc75*)
3106 cpuflags="-mcpu=750"
3109 g4|745*|ppc745*|powerpc745*)
3110 cpuflags="-mcpu=7450"
3112 74*|ppc74*|powerpc74*)
3113 cpuflags="-mcpu=7400"
3115 g5|970|ppc970|powerpc970)
3116 cpuflags="-mcpu=970"
3119 cpuflags="-mcpu=$cpu"
3122 cpuflags="-mcpu=cell"
3126 cpuflags="-mcpu=e500mc"
3130 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
3134 cpuflags="-mcpu=8540 -mhard-float"
3139 elif enabled sparc; then
3142 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
3143 cpuflags="-mcpu=$cpu"
3146 ultrasparc*|niagara[234])
3147 cpuflags="-mcpu=$cpu"
3151 elif enabled x86; then
3155 cpuflags="-march=$cpu"
3158 # targets that do NOT support conditional mov (cmov)
3159 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
3160 cpuflags="-march=$cpu"
3163 # targets that do support conditional mov (cmov)
3164 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|corei7*|amdfam10|barcelona|atom|bdver*)
3165 cpuflags="-march=$cpu"
3169 # targets that do support conditional mov but on which it's slow
3170 pentium4|pentium4m|prescott|nocona)
3171 cpuflags="-march=$cpu"
3179 if [ "$cpu" != generic ]; then
3180 add_cflags $cpuflags
3181 add_asflags $cpuflags
3184 # compiler sanity check
3186 int main(void){ return 0; }
3188 if test "$?" != 0; then
3189 echo "$cc is unable to create an executable file."
3190 if test -z "$cross_prefix" && ! enabled cross_compile ; then
3191 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
3192 echo "Only do this if you know what cross compiling means."
3194 die "C compiler test failed."
3197 add_cppflags -D_ISOC99_SOURCE
3198 add_cxxflags -D__STDC_CONSTANT_MACROS
3199 check_cflags -std=c99
3200 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
3203 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
3207 check_host_cflags -std=c99
3208 check_host_cflags -Wall
3214 check_code cc "" "int test[2*($expr) - 1]" &&
3215 subarch=$arch64 || subarch=$arch32
3223 check_64bit mips mips64 '_MIPS_SIM > 1'
3227 check_64bit parisc parisc64 'sizeof(void *) > 4'
3231 check_64bit ppc ppc64 'sizeof(void *) > 4'
3235 check_64bit sparc sparc64 'sizeof(void *) > 4'
3239 check_64bit x86_32 x86_64 'sizeof(void *) > 4'
3240 if test "$subarch" = "x86_64"; then
3245 check_cc <<EOF && subarch="ppc64"
3246 int test[(int)sizeof(char*) - 7];
3252 enabled spic && enable pic
3257 prefix_default="/boot/common"
3258 network_extralibs="-lnetwork"
3263 SHFLAGS='-shared -Wl,-h,$$(@F)'
3264 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
3265 network_extralibs="-lsocket -lnsl"
3266 add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
3267 # When using suncc to build, the Solaris linker will mark
3268 # an executable with each instruction set encountered by
3269 # the Solaris assembler. As our libraries contain their own
3270 # guards for processor-specific code, instead suppress
3271 # generation of the HWCAPS ELF section on Solaris x86 only.
3272 enabled_all suncc x86 && echo "hwcap_1 = OVERRIDE;" > mapfile && add_ldflags -Wl,-M,mapfile
3273 nm_default='nm -P -g'
3277 oss_indev_extralibs="-lossaudio"
3278 oss_outdev_extralibs="-lossaudio"
3279 enabled gcc || check_ldflags -Wl,-zmuldefs
3284 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
3286 oss_indev_extralibs="-lossaudio"
3287 oss_outdev_extralibs="-lossaudio"
3295 add_extralibs -lpoll -lgnugetopt
3299 gas="gas-preprocessor.pl $cc"
3300 enabled ppc && add_asflags -force_cpusubtype_ALL
3301 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
3302 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
3304 add_ldflags -Wl,-dynamic,-search_paths_first
3306 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
3307 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
3308 FFSERVERLDFLAGS=-Wl,-bind_at_load
3310 enabled x86_64 && objformat="macho64"
3311 enabled_any pic shared ||
3312 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
3315 if test $target_os = "mingw32ce"; then
3321 if enabled x86_64; then
3322 LIBTARGET="i386:x86-64"
3323 elif enabled arm; then
3326 shlibdir_default="$bindir_default"
3329 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3330 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3331 dlltool="${cross_prefix}dlltool"
3332 if check_cmd lib.exe -list; then
3333 SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3334 if enabled x86_64; then
3337 elif check_cmd $dlltool --version; then
3338 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)'
3340 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3342 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3343 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3344 SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.orig.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
3350 if enabled shared; then
3351 # Link to the import library instead of the normal static library
3354 # Cannot build shared and static libraries at the same time with
3358 shlibdir_default="$bindir_default"
3361 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3362 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3363 SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3364 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3366 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3367 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3368 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3375 shlibdir_default="$bindir_default"
3378 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3379 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3380 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3382 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
3383 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
3387 *-dos|freedos|opendos)
3388 network_extralibs="-lsocket"
3391 add_cppflags -U__STRICT_ANSI__
3398 ranlib="echo ignoring ranlib"
3404 add_cppflags -D_GNU_SOURCE
3405 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
3406 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
3411 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3412 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
3413 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
3414 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
3415 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
3416 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
3417 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
3418 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
3419 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
3420 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
3421 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
3423 enable_weak os2threads
3426 add_cppflags -D_BSD_SOURCE
3431 add_cppflags -D_QNX_SOURCE
3432 network_extralibs="-lsocket"
3437 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
3438 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
3439 add_ldflags -Wl,--target1-abs,--no-undefined \
3440 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
3441 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
3442 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
3443 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
3444 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
3447 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
3453 add_cppflags -D_C99_SNPRINTF_EXTENSION \
3454 -D_REENTRANT_SOURCE \
3455 -D_RESEARCH_SOURCE \
3458 add_compat strtod.o strtod=avpriv_strtod
3459 network_extralibs='-lbsd'
3460 exeobjs=compat/plan9/main.o
3467 die "Unknown OS '$target_os'."
3471 # determine libc flavour
3473 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
3474 if check_cpp_condition features.h "defined __UCLIBC__"; then
3476 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3477 elif check_cpp_condition features.h "defined __GLIBC__"; then
3479 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3480 # MinGW headers can be installed on Cygwin, so check for newlib first.
3481 elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
3483 add_cppflags -U__STRICT_ANSI__
3484 elif check_header _mingw.h; then
3486 check_cpp_condition _mingw.h \
3487 "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
3488 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
3489 die "ERROR: MinGW runtime version must be >= 3.15."
3490 add_cppflags -U__STRICT_ANSI__
3491 if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \
3492 __MINGW64_VERSION_MAJOR < 3"; then
3493 add_compat msvcrt/snprintf.o
3494 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
3496 elif check_func_headers stdlib.h _get_doserrno; then
3498 add_compat strtod.o strtod=avpriv_strtod
3499 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
3500 _snprintf=avpriv_snprintf \
3501 vsnprintf=avpriv_vsnprintf
3502 elif check_cpp_condition stddef.h "defined __KLIBC__"; then
3506 test -n "$libc_type" && enable $libc_type
3508 # hacks for compiler/libc/os combinations
3510 if enabled_all tms470 glibc; then
3511 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
3512 add_cppflags -D__USER_LABEL_PREFIX__=
3513 add_cppflags -D__builtin_memset=memset
3514 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
3515 add_cflags -pds=48 # incompatible redefinition of macro
3518 if enabled_all ccc glibc; then
3519 add_ldflags -Wl,-z,now # calls to libots crash without this
3523 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
3526 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate
3528 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
3530 set_default $PATHS_LIST
3533 # we need to build at least one lib type
3534 if ! enabled_any static shared; then
3536 At least one library type must be built.
3537 Specify --enable-static to build the static libraries or --enable-shared to
3538 build the shared libraries as well. To only build the shared libraries specify
3539 --disable-static in addition to --enable-shared.
3544 die_license_disabled() {
3545 enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
3548 die_license_disabled_gpl() {
3549 enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; }
3552 die_license_disabled gpl libcdio
3553 die_license_disabled gpl libutvideo
3554 die_license_disabled gpl libx264
3555 die_license_disabled gpl libxavs
3556 die_license_disabled gpl libxvid
3557 die_license_disabled gpl x11grab
3559 die_license_disabled nonfree libaacplus
3560 die_license_disabled nonfree libfaac
3561 enabled gpl && die_license_disabled_gpl nonfree libfdk_aac
3562 enabled gpl && die_license_disabled_gpl nonfree openssl
3564 die_license_disabled version3 libopencore_amrnb
3565 die_license_disabled version3 libopencore_amrwb
3566 die_license_disabled version3 libvo_aacenc
3567 die_license_disabled version3 libvo_amrwbenc
3569 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3571 disabled optimizations || check_cflags -fomit-frame-pointer
3580 enabled pic && enable_pic
3582 check_cc <<EOF || die "Symbol mangling check failed."
3585 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
3586 extern_prefix=${sym%%ff_extern*}
3588 check_cc <<EOF && enable_weak inline_asm
3589 void foo(void) { __asm__ volatile ("" ::); }
3593 for restrict_keyword in restrict __restrict__ __restrict; do
3594 check_cc <<EOF && _restrict=$restrict_keyword && break
3595 void foo(char * $restrict_keyword p);
3599 check_cc <<EOF && enable attribute_packed
3600 struct { int x; } __attribute__((packed)) x;
3603 check_cc <<EOF && enable attribute_may_alias
3604 union { int x; } __attribute__((may_alias)) x;
3607 check_cc <<EOF || die "endian test failed"
3608 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
3610 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
3612 if enabled alpha; then
3616 elif enabled arm; then
3618 check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
3619 float func(float a, float b){ return a+b; }
3622 enabled thumb && check_cflags -mthumb || check_cflags -marm
3625 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
3627 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
3628 case "${cross_prefix:-$cc}" in
3629 *hardfloat*) enable vfp_args; fpabi=vfp ;;
3630 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
3631 __asm__ (".eabi_attribute 28, 1");
3632 int main(void) { return 0; }
3635 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
3638 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
3639 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
3640 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
3641 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
3642 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
3643 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
3645 [ $target_os = linux ] ||
3646 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
3649 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
3650 check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
3652 enabled_all armv6t2 shared !pic && enable_pic
3654 elif enabled mips; then
3656 check_inline_asm loongson '"dmult.g $1, $2, $3"'
3657 enabled mips32r2 && add_cflags "-mips32r2" && add_asflags "-mips32r2" &&
3658 check_inline_asm mips32r2 '"rotr $t0, $t1, 1"'
3659 enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" &&
3660 check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"'
3661 enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" &&
3662 check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"'
3663 enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" &&
3664 check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"'
3666 elif enabled parisc; then
3668 if enabled gcc; then
3669 case $($cc -dumpversion) in
3670 4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;;
3674 elif enabled ppc; then
3676 enable local_aligned_8 local_aligned_16
3678 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
3679 check_inline_asm ibm_asm '"add 0, 0, 0"'
3680 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
3681 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
3683 # AltiVec flags: The FSF version of GCC differs from the Apple version
3684 if enabled altivec; then
3686 check_cflags -maltivec -mabi=altivec &&
3687 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
3688 check_cflags -faltivec
3690 # check if our compiler supports Motorola AltiVec C API
3691 check_cc <<EOF || disable altivec
3694 vector signed int v1 = (vector signed int) { 0 };
3695 vector signed int v2 = (vector signed int) { 1 };
3696 v1 = vec_add(v1, v2);
3701 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
3704 elif enabled sparc; then
3706 enabled vis && check_inline_asm vis '"pdist %f0, %f0, %f0"'
3708 elif enabled x86; then
3710 check_builtin rdtsc intrin.h "__rdtsc()"
3711 check_builtin mm_empty mmintrin.h "_mm_empty()"
3713 enable local_aligned_8 local_aligned_16
3715 # check whether EBP is available on x86
3716 # As 'i' is stored on the stack, this program will crash
3717 # if the base pointer is used to access it because the
3718 # base pointer is cleared in the inline assembly code.
3719 check_exec_crash <<EOF && enable ebp_available
3721 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
3725 # check whether EBX is available on x86
3726 check_inline_asm ebx_available '""::"b"(0)' &&
3727 check_inline_asm ebx_available '"":::"%ebx"'
3729 # check whether xmm clobbers are supported
3730 check_inline_asm xmm_clobbers '"":::"%xmm0"'
3732 # check whether binutils is new enough to compile SSSE3/MMXEXT
3733 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
3734 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
3736 if ! disabled_any asm mmx yasm; then
3737 if check_cmd $yasmexe --version; then
3738 enabled x86_64 && yasm_extra="-m amd64"
3739 yasm_debug="-g dwarf2"
3740 elif check_cmd nasm -v; then
3742 yasm_debug="-g -F dwarf"
3743 enabled x86_64 && test "$objformat" = elf && objformat=elf64
3746 YASMFLAGS="-f $objformat $yasm_extra"
3747 enabled pic && append YASMFLAGS "-DPIC"
3748 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
3749 case "$objformat" in
3750 elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
3753 check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
3754 die "yasm not found, use --disable-yasm for a crippled build"
3755 check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx_external
3756 check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
3757 check_yasm "CPU amdnop" && enable cpunop
3761 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
3768 if enabled asm; then
3770 check_as <<EOF && enable gnu_as || \
3771 $nogas "GNU assembler not found, install gas-preprocessor"
3779 check_ldflags -Wl,--as-needed
3781 if check_func dlopen; then
3783 elif check_func dlopen -ldl; then
3787 if ! disabled network; then
3788 check_type "sys/types.h sys/socket.h" socklen_t
3789 check_type netdb.h "struct addrinfo"
3790 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
3791 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
3792 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
3793 check_type netinet/in.h "struct sockaddr_in6"
3794 check_type poll.h "struct pollfd"
3795 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
3796 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
3797 check_type netinet/sctp.h "struct sctp_event_subscribe"
3798 check_func getaddrinfo $network_extralibs
3799 check_func getservbyport $network_extralibs
3800 # Prefer arpa/inet.h over winsock2
3801 if check_header arpa/inet.h ; then
3802 check_func closesocket
3803 elif check_header winsock2.h ; then
3804 check_func_headers winsock2.h closesocket -lws2 &&
3805 network_extralibs="-lws2" ||
3806 { check_func_headers winsock2.h closesocket -lws2_32 &&
3807 network_extralibs="-lws2_32"; }
3808 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
3809 check_type ws2tcpip.h socklen_t
3810 check_type ws2tcpip.h "struct addrinfo"
3811 check_type ws2tcpip.h "struct group_source_req"
3812 check_type ws2tcpip.h "struct ip_mreq_source"
3813 check_type ws2tcpip.h "struct ipv6_mreq"
3814 check_type winsock2.h "struct pollfd"
3815 check_type ws2tcpip.h "struct sockaddr_in6"
3816 check_type ws2tcpip.h "struct sockaddr_storage"
3817 check_struct winsock2.h "struct sockaddr" sa_len
3823 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
3824 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
3827 check_func clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; }
3830 check_func gethrtime
3832 check_func getrusage
3833 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
3834 check_func gettimeofday
3835 check_func inet_aton $network_extralibs
3837 check_func localtime_r
3838 check_func ${malloc_prefix}memalign && enable memalign
3842 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
3843 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
3844 check_func setrlimit
3845 check_func strerror_r
3846 check_func sched_getaffinity
3847 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
3848 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
3849 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
3850 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
3854 check_func_headers conio.h kbhit
3855 check_func_headers windows.h PeekNamedPipe
3856 check_func_headers io.h setmode
3857 check_func_headers lzo/lzo1x.h lzo1x_999_compress
3858 check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
3859 check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
3860 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
3861 check_func_headers windows.h GetProcessAffinityMask
3862 check_func_headers windows.h GetProcessTimes
3863 check_func_headers windows.h GetSystemTimeAsFileTime
3864 check_func_headers windows.h MapViewOfFile
3865 check_func_headers windows.h SetConsoleTextAttribute
3866 check_func_headers windows.h Sleep
3867 check_func_headers windows.h VirtualAlloc
3868 check_func_headers glob.h glob
3870 check_header direct.h
3871 check_header dlfcn.h
3873 check_header dxva2api.h -D_WIN32_WINNT=0x0600
3875 check_header libcrystalhd/libcrystalhd_if.h
3876 check_header malloc.h
3878 check_header sys/mman.h
3879 check_header sys/param.h
3880 check_header sys/resource.h
3881 check_header sys/select.h
3882 check_header sys/time.h
3883 check_header termios.h
3884 check_header unistd.h
3885 check_header vdpau/vdpau.h
3886 check_header vdpau/vdpau_x11.h
3887 check_header VideoDecodeAcceleration/VDADecoder.h
3888 check_header windows.h
3889 check_header X11/extensions/XvMClib.h
3890 check_header asm/types.h
3892 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
3893 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
3895 if ! disabled w32threads && ! enabled pthreads; then
3896 check_func_headers "windows.h process.h" _beginthreadex && enable w32threads
3899 # check for some common methods of building with pthread support
3900 # do this before the optional library checks as some of them require pthreads
3901 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
3903 if check_func pthread_create; then
3905 elif check_func pthread_create -pthread; then
3907 add_extralibs -pthread
3908 elif check_func pthread_create -pthreads; then
3909 add_cflags -pthreads
3910 add_extralibs -pthreads
3911 elif check_func pthread_create -lpthreadGC2; then
3912 add_extralibs -lpthreadGC2
3913 elif ! check_lib pthread.h pthread_create -lpthread; then
3918 for thread in $THREADS_LIST; do
3919 if enabled $thread; then
3920 test -n "$thread_type" &&
3921 die "ERROR: Only one thread type must be selected." ||
3922 thread_type="$thread"
3926 if enabled pthreads; then
3927 check_func pthread_cancel
3930 enabled sync_val_compare_and_swap && enable atomics_gcc
3931 enabled machine_rw_barrier && enabled atomic_cas_ptr && enable atomics_suncc
3932 enabled MemoryBarrier && enable atomics_win32
3934 check_lib math.h sin -lm && LIBM="-lm"
3935 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
3936 enabled vaapi && require vaapi va/va.h vaInitialize -lva
3942 for func in $MATH_FUNCS; do
3943 eval check_mathfunc $func \${${func}_args:-1}
3946 # these are off by default, so fail if requested and not available
3947 enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } ||
3948 { check_lib2 "dlfcn.h" dlopen -ldl; } ||
3949 die "ERROR: LoadLibrary/dlopen not found for avisynth"; }
3950 enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
3951 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
3952 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
3953 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
3954 enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
3955 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
3956 enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray
3957 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
3958 { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
3959 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
3960 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
3961 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
3962 enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
3963 flite_libs="-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"
3964 enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs
3965 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
3966 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
3967 check_lib "${gsm_hdr}" gsm_create -lgsm && break;
3968 done || die "ERROR: libgsm not found"; }
3969 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
3970 enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
3971 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
3972 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
3973 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
3974 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
3975 enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
3976 enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg ||
3977 check_lib openjpeg.h opj_version -lopenjpeg ||
3978 die "ERROR: libopenjpeg not found"; }
3979 enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
3980 enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new
3981 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
3982 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
3983 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
3984 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
3985 enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h
3986 media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h
3987 media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static
3988 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
3989 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
3990 { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
3991 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
3992 enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++
3993 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
3994 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
3995 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
3996 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
3998 enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
3999 die "ERROR: libvpx decoder version must be >=0.9.1"; }
4000 enabled libvpx_vp8_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VP8E_SET_MAX_INTRA_BITRATE_PCT" -lvpx ||
4001 die "ERROR: libvpx encoder version must be >=0.9.7"; }
4002 enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; }
4003 enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } }
4004 enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
4005 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
4006 die "ERROR: libx264 must be installed and version must be >= 0.118."; }
4007 enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
4008 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
4009 enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
4010 check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
4011 die "ERROR: openal not found"; } &&
4012 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
4013 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
4014 enabled opencl && require2 opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL
4015 enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
4016 check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
4017 check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
4018 die "ERROR: openssl not found"; }
4020 if enabled gnutls; then
4021 { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } ||
4022 { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
4026 if enabled libdc1394; then
4027 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
4028 enable libdc1394_2; } ||
4029 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
4030 enable libdc1394_1; } ||
4031 die "ERROR: No version of libdc1394 found "
4034 SDL_CONFIG="${cross_prefix}sdl-config"
4035 if check_pkg_config sdl SDL_events.h SDL_PollEvent; then
4036 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4037 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4040 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
4041 sdl_cflags=$("${SDL_CONFIG}" --cflags)
4042 sdl_libs=$("${SDL_CONFIG}" --libs)
4043 check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
4044 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4045 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4049 enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
4051 texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
4052 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
4053 perl --version > /dev/null 2>&1 && enable perl || disable perl
4054 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
4055 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
4057 check_header linux/fb.h
4058 check_header linux/videodev.h
4059 check_header linux/videodev2.h
4060 check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
4062 check_header sys/videoio.h
4064 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
4065 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
4066 # w32api 3.12 had it defined wrong
4067 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
4069 check_type "dshow.h" IBaseFilter
4071 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
4072 { check_header dev/bktr/ioctl_meteor.h &&
4073 check_header dev/bktr/ioctl_bt848.h; } ||
4074 { check_header machine/ioctl_meteor.h &&
4075 check_header machine/ioctl_bt848.h; } ||
4076 { check_header dev/video/meteor/ioctl_meteor.h &&
4077 check_header dev/video/bktr/ioctl_bt848.h; } ||
4078 check_header dev/ic/bt8xx.h
4080 check_header sndio.h
4081 if check_struct sys/soundcard.h audio_buf_info bytes; then
4082 enable_safe sys/soundcard.h
4084 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
4085 #include <sys/soundcard.h>
4089 check_header soundcard.h
4091 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
4093 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait &&
4094 check_func jack_port_get_latency_range -ljack
4096 enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
4098 if enabled libcdio; then
4099 check_lib2 "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio || check_lib2 "cdio/paranoia/cdda.h cdio/paranoia/paranoia.h" cdio_cddap_open -lcdio_paranoia -lcdio_cdda -lcdio
4103 require X11 X11/Xlib.h XOpenDisplay -lX11 &&
4104 require Xext X11/extensions/XShm.h XShmCreateImage -lXext &&
4105 require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes
4107 if ! disabled vaapi; then
4108 check_lib va/va.h vaInitialize -lva && {
4109 check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
4110 warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
4115 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
4118 # Funny iconv installations are not unusual, so check it after all flags have been set
4119 disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv
4121 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
4122 test -n "$valgrind" && target_exec="$valgrind --error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp"
4124 # add some useful compiler flags if supported
4125 check_cflags -Wdeclaration-after-statement
4127 check_cflags -Wno-parentheses
4128 check_cflags -Wno-switch
4129 check_cflags -Wno-format-zero-length
4130 check_cflags -Wdisabled-optimization
4131 check_cflags -Wpointer-arith
4132 check_cflags -Wredundant-decls
4133 check_cflags -Wno-pointer-sign
4134 check_cflags -Wwrite-strings
4135 check_cflags -Wtype-limits
4136 check_cflags -Wundef
4137 check_cflags -Wmissing-prototypes
4138 check_cflags -Wno-pointer-to-int-cast
4139 check_cflags -Wstrict-prototypes
4140 enabled extra_warnings && check_cflags -Winline
4142 # add some linker flags
4143 check_ldflags -Wl,--warn-common
4144 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
4145 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
4147 enabled xmm_clobber_test &&
4148 check_ldflags -Wl,--wrap,avcodec_open2 \
4149 -Wl,--wrap,avcodec_decode_audio4 \
4150 -Wl,--wrap,avcodec_decode_video2 \
4151 -Wl,--wrap,avcodec_decode_subtitle2 \
4152 -Wl,--wrap,avcodec_encode_audio2 \
4153 -Wl,--wrap,avcodec_encode_video \
4154 -Wl,--wrap,avcodec_encode_subtitle \
4155 -Wl,--wrap,sws_scale ||
4156 disable xmm_clobber_test
4159 if test_ldflags -Wl,--version-script,$TMPV; then
4160 append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
4161 check_cc <<EOF && enable symver_asm_label
4162 void ff_foo(void) __asm__ ("av_foo@VERSION");
4163 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
4165 check_cc <<EOF && enable symver_gnu_asm
4166 __asm__(".symver ff_foo,av_foo@VERSION");
4167 void ff_foo(void) {}
4171 if [ -z "$optflags" ]; then
4172 if enabled small; then
4173 optflags=$cflags_size
4174 elif enabled optimizations; then
4175 optflags=$cflags_speed
4177 optflags=$cflags_noopt
4183 enabled lto && check_ldflags "$@"
4187 if enabled lto; then
4188 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
4190 check_ldflags -flto $cpuflags
4193 check_optflags $optflags
4194 check_optflags -fno-math-errno
4195 check_optflags -fno-signed-zeros
4197 enabled ftrapv && check_cflags -ftrapv
4199 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
4204 if enabled icc; then
4205 # Just warnings, no remarks
4207 # -wd: Disable following warnings
4208 # 144, 167, 556: -Wno-pointer-sign
4209 # 188: enumerated type mixed with another type
4210 # 1292: attribute "foo" ignored
4211 # 1419: external declaration in primary source file
4212 # 10006: ignoring unknown option -fno-signed-zeros
4213 # 10148: ignoring unknown option -Wno-parentheses
4214 # 10156: ignoring option '-W'; no argument required
4215 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156
4216 # 11030: Warning unknown option --as-needed
4217 # 10156: ignoring option '-export'; no argument required
4218 check_ldflags -wd10156,11030
4219 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
4220 enable ebp_available
4221 if enabled x86_32; then
4222 icc_version=$($cc -dumpversion)
4223 test ${icc_version%%.*} -ge 11 &&
4224 check_cflags -falign-stack=maintain-16-byte ||
4225 disable aligned_stack
4227 elif enabled ccc; then
4228 # disable some annoying warnings
4229 add_cflags -msg_disable bitnotint
4230 add_cflags -msg_disable mixfuncvoid
4231 add_cflags -msg_disable nonstandcast
4232 add_cflags -msg_disable unsupieee
4233 elif enabled gcc; then
4234 check_optflags -fno-tree-vectorize
4235 check_cflags -Werror=implicit-function-declaration
4236 check_cflags -Werror=missing-prototypes
4237 check_cflags -Werror=return-type
4238 check_cflags -Werror=vla
4239 elif enabled llvm_gcc; then
4240 check_cflags -mllvm -stack-alignment=16
4241 elif enabled clang; then
4242 check_cflags -mllvm -stack-alignment=16
4243 check_cflags -Qunused-arguments
4244 check_cflags -Werror=implicit-function-declaration
4245 check_cflags -Werror=missing-prototypes
4246 check_cflags -Werror=return-type
4247 elif enabled armcc; then
4248 # 2523: use of inline assembler is deprecated
4249 add_cflags -W${armcc_opt},--diag_suppress=2523
4250 add_cflags -W${armcc_opt},--diag_suppress=1207
4251 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
4252 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
4253 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
4254 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
4255 elif enabled tms470; then
4256 add_cflags -pds=824 -pds=837
4257 elif enabled pathscale; then
4258 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
4259 elif enabled msvc; then
4260 enabled x86_32 && disable aligned_stack
4265 enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
4268 add_cppflags -Dmain=plan9_main
4272 enable frame_thread_encoder
4273 enabled_any $THREADS_LIST && enable threads
4274 enabled_any $ATOMICS_LIST && enable atomics_native
4276 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
4278 check_deps $CONFIG_LIST \
4284 if test $target_os = "haiku"; then
4286 disable posix_memalign
4289 ! enabled_any memalign posix_memalign aligned_malloc &&
4290 enabled_any $need_memalign && enable memalign_hack
4293 # -> enable ${lib}_deps_${dep}
4294 # -> add $dep to ${lib}_deps only once
4298 enabled "${lib}_deps_${dep}" && return 0
4299 enable "${lib}_deps_${dep}"
4300 prepend "${lib}_deps" $dep
4303 # merge deps lib components
4304 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
4309 enabled $comp || continue
4310 eval "dep=\"\$${comp}_deps\""
4317 merge_deps libavfilter $FILTER_LIST
4319 echo "install prefix $prefix"
4320 echo "source path $source_path"
4321 echo "C compiler $cc"
4322 echo "ARCH $arch ($cpu)"
4323 if test "$build_suffix" != ""; then
4324 echo "build suffix $build_suffix"
4326 if test "$progs_suffix" != ""; then
4327 echo "progs suffix $progs_suffix"
4329 if test "$extra_version" != ""; then
4330 echo "version string suffix $extra_version"
4332 echo "big-endian ${bigendian-no}"
4333 echo "runtime cpu detection ${runtime_cpudetect-no}"
4334 if enabled x86; then
4335 echo "${yasmexe} ${yasm-no}"
4336 echo "MMX enabled ${mmx-no}"
4337 echo "MMXEXT enabled ${mmxext-no}"
4338 echo "3DNow! enabled ${amd3dnow-no}"
4339 echo "3DNow! extended enabled ${amd3dnowext-no}"
4340 echo "SSE enabled ${sse-no}"
4341 echo "SSSE3 enabled ${ssse3-no}"
4342 echo "AVX enabled ${avx-no}"
4343 echo "FMA4 enabled ${fma4-no}"
4344 echo "CMOV enabled ${cmov-no}"
4345 echo "CMOV is fast ${fast_cmov-no}"
4346 echo "EBX available ${ebx_available-no}"
4347 echo "EBP available ${ebp_available-no}"
4349 if enabled arm; then
4350 echo "ARMv5TE enabled ${armv5te-no}"
4351 echo "ARMv6 enabled ${armv6-no}"
4352 echo "ARMv6T2 enabled ${armv6t2-no}"
4353 echo "VFP enabled ${vfp-no}"
4354 echo "NEON enabled ${neon-no}"
4355 echo "THUMB enabled ${thumb-no}"
4357 if enabled mips; then
4358 echo "MIPS FPU enabled ${mipsfpu-no}"
4359 echo "MIPS32R2 enabled ${mips32r2-no}"
4360 echo "MIPS DSP R1 enabled ${mipsdspr1-no}"
4361 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
4363 if enabled ppc; then
4364 echo "AltiVec enabled ${altivec-no}"
4365 echo "PPC 4xx optimizations ${ppc4xx-no}"
4366 echo "dcbzl available ${dcbzl-no}"
4368 if enabled sparc; then
4369 echo "VIS enabled ${vis-no}"
4371 echo "debug symbols ${debug-no}"
4372 echo "strip symbols ${stripping-no}"
4373 echo "optimize for size ${small-no}"
4374 echo "optimizations ${optimizations-no}"
4375 echo "static ${static-no}"
4376 echo "shared ${shared-no}"
4377 echo "postprocessing support ${postproc-no}"
4378 echo "new filter support ${avfilter-no}"
4379 echo "network support ${network-no}"
4380 echo "threading support ${thread_type-no}"
4381 echo "safe bitstream reader ${safe_bitstream_reader-no}"
4382 echo "SDL support ${sdl-no}"
4383 echo "opencl enabled ${opencl-no}"
4384 echo "texi2html enabled ${texi2html-no}"
4385 echo "perl enabled ${perl-no}"
4386 echo "pod2man enabled ${pod2man-no}"
4387 echo "makeinfo enabled ${makeinfo-no}"
4388 test -n "$random_seed" &&
4389 echo "random seed ${random_seed}"
4392 echo "External libraries:"
4393 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
4396 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
4397 echo "Enabled ${type}s:"
4398 eval list=\$$(toupper $type)_LIST
4399 print_enabled '_*' $list | print_3_columns
4403 license="LGPL version 2.1 or later"
4404 if enabled nonfree; then
4405 license="nonfree and unredistributable"
4406 elif enabled gplv3; then
4407 license="GPL version 3 or later"
4408 elif enabled lgplv3; then
4409 license="LGPL version 3 or later"
4410 elif enabled gpl; then
4411 license="GPL version 2 or later"
4414 echo "License: $license"
4416 echo "Creating config.mak, config.h, and doc/config.texi..."
4418 test -e Makefile || $ln_s "$source_path/Makefile" .
4420 enabled stripping || strip="echo skipping strip"
4422 config_files="$TMPH config.mak doc/config.texi"
4424 cat > config.mak <<EOF
4425 # Automatically generated by configure - do not modify!
4426 ifndef FFMPEG_CONFIG_MAK
4428 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
4430 LIBDIR=\$(DESTDIR)$libdir
4431 SHLIBDIR=\$(DESTDIR)$shlibdir
4432 INCDIR=\$(DESTDIR)$incdir
4433 BINDIR=\$(DESTDIR)$bindir
4434 DATADIR=\$(DESTDIR)$datadir
4435 MANDIR=\$(DESTDIR)$mandir
4436 SRC_PATH=$source_path
4437 ifndef MAIN_MAKEFILE
4438 SRC_PATH:=\$(SRC_PATH:.%=..%)
4447 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
4449 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
4475 LDFLAGS-ffserver=$FFSERVERLDFLAGS
4476 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
4477 YASMFLAGS=$YASMFLAGS
4478 BUILDSUF=$build_suffix
4479 PROGSSUF=$progs_suffix
4487 EXTRA_VERSION=$extra_version
4490 CCDEP_FLAGS=$CCDEP_FLAGS
4492 ASDEP_FLAGS=$ASDEP_FLAGS
4493 CC_DEPFLAGS=$CC_DEPFLAGS
4494 AS_DEPFLAGS=$AS_DEPFLAGS
4497 HOSTCFLAGS=$host_cflags
4498 HOSTCPPFLAGS=$host_cppflags
4499 HOSTEXESUF=$HOSTEXESUF
4500 HOSTLDFLAGS=$host_ldflags
4503 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
4504 HOSTCCDEP=$HOSTCCDEP
4505 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
4506 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
4510 TARGET_EXEC=$target_exec
4511 TARGET_PATH=$target_path
4512 LIBS-ffplay=$sdl_libs
4513 CFLAGS-ffplay=$sdl_cflags
4514 ZLIB=$($ldflags_filter -lz)
4515 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
4516 EXTRALIBS=$extralibs
4517 COMPAT_OBJS=$compat_objs
4520 LIBTARGET=${LIBTARGET}
4521 SLIBNAME=${SLIBNAME}
4522 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
4523 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
4524 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
4525 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
4526 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
4527 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
4528 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
4529 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
4530 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
4531 NOREDZONE_FLAGS=$noredzone_flags
4536 name=$(toupper $lcname)
4537 file=$source_path/$lcname/version.h
4538 eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
4539 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
4540 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
4541 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
4542 eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak
4545 map 'get_version $v' $LIBRARY_LIST
4548 /* Automatically generated by configure - do not modify! */
4549 #ifndef FFMPEG_CONFIG_H
4550 #define FFMPEG_CONFIG_H
4551 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
4552 #define FFMPEG_LICENSE "$(c_escape $license)"
4553 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
4554 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
4555 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
4556 #define av_restrict $_restrict
4557 #define EXTERN_PREFIX "${extern_prefix}"
4558 #define EXTERN_ASM ${extern_prefix}
4559 #define SLIBSUF "$SLIBSUF"
4560 #define HAVE_MMX2 HAVE_MMXEXT
4563 test -n "$assert_level" &&
4564 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
4566 test -n "$malloc_prefix" &&
4567 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
4569 if enabled yasm; then
4570 append config_files $TMPASM
4575 echo "@c auto-generated by configure" > doc/config.texi
4577 print_config ARCH_ "$config_files" $ARCH_LIST
4578 print_config HAVE_ "$config_files" $HAVE_LIST
4579 print_config CONFIG_ "$config_files" $CONFIG_LIST \
4583 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
4584 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
4586 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
4587 cp_if_changed $TMPH config.h
4590 enabled yasm && cp_if_changed $TMPASM config.asm
4593 /* Generated by ffconf */
4594 #ifndef AVUTIL_AVCONFIG_H
4595 #define AVUTIL_AVCONFIG_H
4598 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
4600 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
4602 cp_if_changed $TMPH libavutil/avconfig.h
4604 if test -n "$WARNINGS"; then
4605 printf "\n$WARNINGS"
4606 enabled fatal_warnings && exit 1
4609 # build pkg-config files
4611 pkgconfig_generate(){
4613 shortname=${name#lib}${build_suffix}
4618 enabled ${name#lib} || return 0
4620 cat <<EOF > $name/$name${build_suffix}.pc
4622 exec_prefix=\${prefix}
4627 Description: $comment
4629 Requires: $(enabled shared || echo $requires)
4630 Requires.private: $(enabled shared && echo $requires)
4632 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4633 Libs.private: $(enabled shared && echo $libs)
4634 Cflags: -I\${includedir}
4637 mkdir -p doc/examples/pc-uninstalled
4638 includedir=${source_path}
4639 [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
4640 cat <<EOF > doc/examples/pc-uninstalled/$name.pc
4643 libdir=\${pcfiledir}/../../../$name
4644 includedir=${includedir}
4647 Description: $comment
4651 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4652 Cflags: -I\${includedir}
4656 libavfilter_pc_deps="libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4657 enabled libavfilter_deps_avcodec && prepend libavfilter_pc_deps "libavcodec${build_suffix} = $LIBAVCODEC_VERSION,"
4658 enabled libavfilter_deps_avformat && prepend libavfilter_pc_deps "libavformat${build_suffix} = $LIBAVFORMAT_VERSION,"
4659 enabled libavfilter_deps_avresample && prepend libavfilter_pc_deps "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION,"
4660 enabled libavfilter_deps_swscale && prepend libavfilter_pc_deps "libswscale${build_suffix} = $LIBSWSCALE_VERSION,"
4661 enabled libavfilter_deps_swresample && prepend libavfilter_pc_deps "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION,"
4662 enabled libavfilter_deps_postproc && prepend libavfilter_pc_deps "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION,"
4663 libavfilter_pc_deps=${libavfilter_pc_deps%, }
4665 libavdevice_pc_deps="libavformat${build_suffix} = $LIBAVFORMAT_VERSION"
4666 enabled lavfi_indev && prepend libavdevice_pc_deps "libavfilter${build_suffix} = $LIBAVFILTER_VERSION,"
4668 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
4669 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4670 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION"
4671 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$libavdevice_pc_deps"
4672 pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$libavfilter_pc_deps"
4673 pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4674 pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4675 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4676 pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4678 fix_ffmpeg_remote(){
4681 fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq)
4682 if [ "$fixme_remote" != "" ]; then
4684 Outdated domain in git config, the official domain for ffmpeg git is since
4685 November 2011, source.ffmpeg.org, both the old and the new point to the same
4686 repository and server. To update it enter the following commands:
4688 for remote in $fixme_remote; do
4689 echolog "git remote set-url $remote $git_remote_to"
4694 if test -f "$source_path/.git/config"; then
4695 remote_from=git.videolan.org
4696 remote_to=source.ffmpeg.org
4697 fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg
4698 fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg