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-libquvi enable quvi input via libquvi [no]
219 --enable-librtmp enable RTMP[E] support via librtmp [no]
220 --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
221 --enable-libshine enable fixed-point MP3 encoding via libshine [no]
222 --enable-libsoxr enable Include libsoxr resampling [no]
223 --enable-libspeex enable Speex de/encoding via libspeex [no]
224 --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no]
225 --enable-libtheora enable Theora encoding via libtheora [no]
226 --enable-libtwolame enable MP2 encoding via libtwolame [no]
227 --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no]
228 --enable-libv4l2 enable libv4l2/v4l-utils [no]
229 --enable-libvidstab enable video stabilization using vid.stab [no]
230 --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
231 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
232 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
233 native implementation exists [no]
234 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
235 --enable-libx264 enable H.264 encoding via x264 [no]
236 --enable-libxavs enable AVS encoding via xavs [no]
237 --enable-libxvid enable Xvid encoding via xvidcore,
238 native MPEG-4/Xvid encoder exists [no]
239 --enable-openal enable OpenAL 1.1 capture support [no]
240 --enable-opencl enable OpenCL code
241 --enable-openssl enable openssl [no]
242 --enable-x11grab enable X11 grabbing [no]
243 --enable-zlib enable zlib [autodetect]
245 Advanced options (experts only):
246 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
247 --enable-cross-compile assume a cross-compiler is used
248 --sysroot=PATH root of cross-build tree
249 --sysinclude=PATH location of cross-build system headers
250 --target-os=OS compiler targets OS [$target_os]
251 --target-exec=CMD command to run executables on target
252 --target-path=DIR path to view of build directory on target
253 --toolchain=NAME set tool defaults according to NAME
254 --nm=NM use nm tool NM [$nm_default]
255 --ar=AR use archive tool AR [$ar_default]
256 --as=AS use assembler AS [$as_default]
257 --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
258 --cc=CC use C compiler CC [$cc_default]
259 --cxx=CXX use C compiler CXX [$cxx_default]
260 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
261 --ld=LD use linker LD [$ld_default]
262 --host-cc=HOSTCC use host C compiler HOSTCC
263 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
264 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
265 --host-ld=HOSTLD use host linker HOSTLD
266 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
267 --host-libs=HLIBS use libs HLIBS when linking for host
268 --host-os=OS compiler host OS [$target_os]
269 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
270 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
271 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
272 --extra-libs=ELIBS add ELIBS [$ELIBS]
273 --extra-version=STRING version string suffix []
274 --optflags=OPTFLAGS override optimization-related compiler flags
275 --build-suffix=SUFFIX library name suffix []
276 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
277 --progs-suffix=SUFFIX program name suffix []
278 --arch=ARCH select architecture [$arch]
279 --cpu=CPU select the minimum required CPU (affects
280 instruction selection, may crash on older CPUs)
281 --enable-pic build position-independent code
282 --enable-sram allow use of on-chip SRAM
283 --enable-thumb compile for Thumb instruction set
284 --disable-symver disable symbol versioning
285 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
286 --disable-safe-bitstream-reader
287 disable buffer boundary checking in bitreaders
288 (faster, but may crash)
289 --enable-memalign-hack emulate memalign, interferes with memory debuggers
290 --enable-lto use link-time optimization
292 Optimization options (experts only):
293 --disable-asm disable all assembler optimizations
294 --disable-altivec disable AltiVec optimizations
295 --disable-amd3dnow disable 3DNow! optimizations
296 --disable-amd3dnowext disable 3DNow! extended optimizations
297 --disable-mmx disable MMX optimizations
298 --disable-mmxext disable MMXEXT optimizations
299 --disable-sse disable SSE optimizations
300 --disable-sse2 disable SSE2 optimizations
301 --disable-sse3 disable SSE3 optimizations
302 --disable-ssse3 disable SSSE3 optimizations
303 --disable-sse4 disable SSE4 optimizations
304 --disable-sse42 disable SSE4.2 optimizations
305 --disable-avx disable AVX optimizations
306 --disable-fma4 disable FMA4 optimizations
307 --disable-armv5te disable armv5te optimizations
308 --disable-armv6 disable armv6 optimizations
309 --disable-armv6t2 disable armv6t2 optimizations
310 --disable-vfp disable VFP optimizations
311 --disable-neon disable NEON optimizations
312 --disable-vis disable VIS optimizations
313 --disable-inline-asm disable use of inline assembler
314 --disable-yasm disable use of yasm assembler
315 --disable-mips32r2 disable MIPS32R2 optimizations
316 --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations
317 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
318 --disable-mipsfpu disable floating point MIPS optimizations
319 --disable-fast-unaligned consider unaligned accesses slow
321 Developer options (useful when working on FFmpeg itself):
322 --disable-debug disable debugging symbols
323 --enable-debug=LEVEL set the debug level [$debuglevel]
324 --disable-optimizations disable compiler optimizations
325 --enable-extra-warnings enable more compiler warnings
326 --disable-stripping disable stripping of executables and shared libraries
327 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
328 2 causes a slowdown at runtime.
329 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
330 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
331 leaks and errors, using the specified valgrind binary.
332 Cannot be combined with --target-exec
333 --enable-ftrapv Trap arithmetic overflows
334 --samples=PATH location of test samples for FATE, if not set use
335 \$FATE_SAMPLES at make invocation time.
336 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
337 should be used only for debugging purposes)
338 --enable-random randomly enable/disable components
340 --enable-random=LIST randomly enable/disable specific components or
341 --disable-random=LIST component groups. LIST is a comma-separated list
342 of NAME[:PROB] entries where NAME is a component
343 (group) and PROB the probability associated with
345 --random-seed=VALUE seed value for --enable/disable-random
347 NOTE: Object files are built at the place where configure is launched.
355 echo "$@" >> $logfile
360 pr -n -t $1 >> $logfile
371 WARNINGS="${WARNINGS}WARNING: $*\n"
378 If you think configure made a mistake, make sure you are using the latest
379 version from Git. If the latest version fails, report the problem to the
380 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
382 if disabled logging; then
384 Rerun configure with logging enabled (do not use --disable-logging), and
385 include the log this produces with your report.
389 Include the log file "$logfile" produced by configure as this will help
396 # Avoid locale weirdness, besides we really just want to translate ASCII.
398 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
402 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
406 echo "$*" | sed 's/["\\]/\\\0/g'
410 v=$(echo "$1" | sed "s/'/'\\\\''/g")
411 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
416 echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//'
423 eval "case $v in $pat) echo $v ;; esac"
431 eval "case $v in $pat) ;; *) echo $v ;; esac"
438 for v; do eval $m; done
444 for v; do echo ${v}${suffix}; done
459 eval : \${$var:=$value}
464 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
470 eval $(sanitize_var_name "$var")='$*'
474 eval echo \$$(sanitize_var_name "$1")
479 eval level=\${${pvar}_level:=0}
480 eval ${pvar}_${level}="\$$pvar"
481 eval ${pvar}_level=$(($level+1))
487 eval level=\${${pvar}_level:-0}
488 test $level = 0 && continue
489 eval level=$(($level-1))
490 eval $pvar="\${${pvar}_${level}}"
491 eval ${pvar}_level=$level
492 eval unset ${pvar}_${level}
514 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
520 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
526 enabled $var && continue
527 eval sel="\$${var}_select"
528 eval sgs="\$${var}_suggest"
532 enable_deep_weak $sgs
544 disabled $var && continue
553 test "${1#!}" = "$1" && op== || op=!=
554 eval test "x\$${1#!}" $op "xyes"
558 test "${1#!}" = "$1" && op== || op=!=
559 eval test "x\$${1#!}" $op "xno"
564 enabled $opt || return 1
570 disabled $opt || return 1
576 enabled $opt && return 0
582 disabled $opt && return 0
589 eval : \${$opt:=\$${opt}_default}
597 [ $var = $value ] && return 0
605 enabled ${cfg}_checking && die "Circular dependency for $cfg."
606 disabled ${cfg}_checking && continue
607 enable ${cfg}_checking
610 eval dep_all="\$${cfg}_deps"
611 eval dep_any="\$${cfg}_deps_any"
612 eval dep_sel="\$${cfg}_select"
613 eval dep_sgs="\$${cfg}_suggest"
614 eval dep_ifa="\$${cfg}_if"
615 eval dep_ifn="\$${cfg}_if_any"
617 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
618 do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
619 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
621 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
622 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
623 enabled_all $dep_all || disable $cfg
624 enabled_any $dep_any || disable $cfg
625 disabled_any $dep_sel && disable $cfg
627 if enabled $cfg; then
629 enable_deep_weak $dep_sgs
632 disable ${cfg}_checking
641 for cfg in $allopts; do
642 enabled $cfg || continue
643 eval dep_extralibs="\$${cfg}_extralibs"
644 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
652 map 'eval echo "$v \${$v:-no}"' "$@" |
653 awk "BEGIN { split(\"$files\", files) }
655 c = \"$pfx\" toupper(\$1);
661 if (file ~ /\\.h\$/) {
662 printf(\"#define %s %d\\n\", c, v) >>file;
663 } else if (file ~ /\\.asm\$/) {
664 printf(\"%%define %s %d\\n\", c, v) >>file;
665 } else if (file ~ /\\.mak\$/) {
666 n = -v ? \"\" : \"!\";
667 printf(\"%s%s=yes\\n\", n, c) >>file;
668 } else if (file ~ /\\.texi\$/) {
669 pre = -v ? \"\" : \"@c \";
672 gsub(/_/, \"-\", c2);
673 printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
683 enabled $v && printf "%s\n" ${v%$suf};
690 eval "$var=\"\$$var $*\""
696 eval "$var=\"$* \$$var\""
704 append CFLAGS $($cflags_filter "$@")
708 append CXXFLAGS $($cflags_filter "$@")
712 append ASFLAGS $($asflags_filter "$@")
716 append LDFLAGS $($ldflags_filter "$@")
720 prepend extralibs $($ldflags_filter "$@")
724 append host_cppflags "$@"
728 append host_cflags $($host_cflags_filter "$@")
732 append host_ldflags $($host_ldflags_filter "$@")
736 append compat_objs $1
738 map 'add_cppflags -D$v' "$@"
743 "$@" >> $logfile 2>&1
747 eval printf '%s\\n' $CC_O
751 eval printf '%s\\n' $CC_E
758 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
765 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
772 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
776 eval printf '%s\\n' $AS_O
783 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
787 log check_inline_asm "$@"
792 check_cc "$@" <<EOF && enable $name
793 void foo(void){ __asm__ volatile($code); }
799 check_inline_asm ${1}_inline "\"$2\""
800 echo "$2" | check_as && enable ${1}_external || disable ${1}_external
808 check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
812 eval printf '%s\\n' $LD_O
819 flags=$(filter_out '-l*|*.so' $@)
820 libs=$(filter '-l*|*.so' $@)
821 check_$type $($cflags_filter $flags) || return
822 flags=$($ldflags_filter $flags)
823 libs=$($ldflags_filter $libs)
824 check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
834 for hdr in $headers; do
835 echo "#include <$hdr>"
837 echo "int main(void) { $code; return 0; }"
838 } | check_$check "$@"
842 log check_cppflags "$@"
843 check_cc "$@" <<EOF && append CPPFLAGS "$@"
849 log check_cflags "$@"
850 set -- $($cflags_filter "$@")
851 check_cc "$@" <<EOF && append CFLAGS "$@"
857 log check_cxxflags "$@"
858 set -- $($cflags_filter "$@")
859 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
865 log test_ldflags "$@"
866 check_ld "cc" "$@" <<EOF
867 int main(void){ return 0; }
872 log check_ldflags "$@"
873 test_ldflags "$@" && add_ldflags "$@"
877 log check_header "$@"
881 check_cpp "$@" <<EOF && enable_safe $header
892 check_ld "cc" "$@" <<EOF && enable $func
894 int main(void){ $func(); }
899 log check_mathfunc "$@"
903 test $narg = 2 && args="f, g" || args="f"
905 check_ld "cc" "$@" <<EOF && enable $func
907 float foo(float f, float g) { return $func($args); }
908 int main(void){ return (int) foo; }
912 check_func_headers(){
913 log check_func_headers "$@"
918 for hdr in $headers; do
919 echo "#include <$hdr>"
921 for func in $funcs; do
922 echo "long check_$func(void) { return (long) $func; }"
924 echo "int main(void) { return 0; }"
925 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
928 check_class_headers_cpp(){
929 log check_class_headers_cpp "$@"
934 for hdr in $headers; do
935 echo "#include <$hdr>"
937 echo "int main(void) { "
939 for class in $classes; do
944 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
947 check_cpp_condition(){
948 log check_cpp_condition "$@"
955 #error "unsatisfied condition: $condition"
965 check_header $header && check_func $func "$@" && add_extralibs "$@"
973 check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
977 log check_lib_cpp "$@"
981 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
985 log check_pkg_config "$@"
990 $pkg_config --exists $pkg 2>/dev/null || return
991 pkg_cflags=$($pkg_config --cflags $pkg)
992 pkg_libs=$($pkg_config --libs $pkg)
993 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
994 set_safe ${pkg}_cflags $pkg_cflags &&
995 set_safe ${pkg}_libs $pkg_libs
999 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
1005 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1006 # are safe but may not be available everywhere. Thus we use
1007 # raise(SIGTERM) instead. The check is run in a subshell so we
1008 # can redirect the "Terminated" message from the shell. SIGBUS
1009 # is not defined by standard C so it is used conditionally.
1011 (check_exec "$@") >> $logfile 2>&1 <<EOF
1013 static void sighandler(int sig){
1019 int (*func_ptr)(void) = func;
1021 signal(SIGILL, sighandler);
1022 signal(SIGFPE, sighandler);
1023 signal(SIGSEGV, sighandler);
1025 signal(SIGBUS, sighandler);
1037 disable_safe "$type"
1038 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
1042 log check_struct "$@"
1047 disable_safe "${struct}_${member}"
1048 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1049 enable_safe "${struct}_${member}"
1053 log check_builtin "$@"
1059 check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1067 check_lib $header $func "$@" || die "ERROR: $name not found"
1075 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
1083 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1086 require_pkg_config(){
1088 check_pkg_config "$@" || die "ERROR: $pkg not found"
1089 add_cflags $(get_safe ${pkg}_cflags)
1090 add_extralibs $(get_safe ${pkg}_libs)
1094 eval printf '%s\\n' $HOSTCC_O
1098 log check_host_cc "$@"
1101 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1104 check_host_cppflags(){
1105 log check_host_cppflags "$@"
1106 check_host_cc "$@" <<EOF && append host_cppflags "$@"
1111 check_host_cflags(){
1112 log check_host_cflags "$@"
1113 set -- $($host_cflags_filter "$@")
1114 check_host_cc "$@" <<EOF && append host_cflags "$@"
1122 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
1126 cmp -s "$1" "$2" && echo "$2 is unchanged" && return
1127 mkdir -p "$(dirname $2)"
1131 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1132 # system-dependent things.
1148 EXTERNAL_LIBRARY_LIST="
1242 $EXTERNAL_LIBRARY_LIST
1255 incompatible_fork_abi
1266 safe_bitstream_reader
1361 incompatible_fork_abi
1394 $(add_suffix _external $ARCH_EXT_LIST)
1395 $(add_suffix _inline $ARCH_EXT_LIST)
1415 cdio_paranoia_paranoia_h
1424 dev_bktr_ioctl_bt848_h
1425 dev_bktr_ioctl_meteor_h
1427 dev_video_bktr_ioctl_bt848_h
1428 dev_video_meteor_ioctl_meteor_h
1444 GetProcessAffinityMask
1445 GetProcessMemoryInfo
1447 GetSystemTimeAsFileTime
1458 jack_port_get_latency_range
1468 machine_ioctl_bt848_h
1469 machine_ioctl_meteor_h
1482 openjpeg_1_5_openjpeg_h
1493 SetConsoleTextAttribute
1502 struct_group_source_req
1503 struct_ip_mreq_source
1506 struct_rusage_ru_maxrss
1507 struct_sctp_event_subscribe
1509 struct_sockaddr_sa_len
1510 struct_sockaddr_storage
1511 struct_v4l2_frmivalenum_discrete
1514 sync_val_compare_and_swap
1537 # options emitted with CONFIG_ prefix but not available on the command line
1543 frame_thread_encoder
1639 # code dependency declarations
1641 # architecture extensions
1650 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
1653 mips32r2_deps="mips"
1654 mipsdspr1_deps="mips"
1655 mipsdspr2_deps="mips"
1662 x86_64_suggest="cmov fast_cmov"
1665 amd3dnowext_deps="amd3dnow"
1677 mmx_external_deps="yasm"
1678 mmx_inline_deps="inline_asm"
1679 mmx_suggest="mmx_external mmx_inline"
1681 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do
1682 eval dep=\$${ext}_deps
1683 eval ${ext}_external_deps='"${dep}_external"'
1684 eval ${ext}_inline_deps='"${dep}_inline"'
1685 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
1688 aligned_stack_if_any="ppc x86"
1689 fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1690 fast_clz_if_any="alpha avr32 mips ppc x86"
1691 fast_unaligned_if_any="ppc x86"
1693 inline_asm_deps="!tms470"
1694 need_memalign="altivec neon sse"
1696 symver_if_any="symver_asm_label symver_gnu_asm"
1702 error_resilience_select="dsputil"
1703 frame_thread_encoder_deps="encoders threads"
1704 lpc_select="dsputil"
1707 mpegaudio_select="mpegaudiodsp"
1708 mpegaudiodsp_select="dct"
1709 mpegvideo_select="dsputil h264chroma hpeldsp videodsp"
1710 mpegvideoenc_select="mpegvideo"
1712 # decoders / encoders
1713 aac_decoder_select="mdct sinewin"
1714 aac_encoder_select="audio_frame_queue mdct sinewin"
1715 aac_latm_decoder_select="aac_decoder aac_latm_parser"
1716 ac3_decoder_select="mdct ac3dsp ac3_parser dsputil"
1717 ac3_encoder_select="mdct ac3dsp dsputil"
1718 ac3_fixed_encoder_select="mdct ac3dsp dsputil"
1719 alac_encoder_select="lpc"
1720 als_decoder_select="dsputil"
1721 amrnb_decoder_select="lsp"
1722 amrwb_decoder_select="lsp"
1723 amv_decoder_select="dsputil hpeldsp"
1724 amv_encoder_select="aandcttables"
1725 ape_decoder_select="dsputil"
1726 asv1_decoder_select="dsputil"
1727 asv1_encoder_select="dsputil"
1728 asv2_decoder_select="dsputil"
1729 asv2_encoder_select="dsputil"
1730 atrac1_decoder_select="mdct sinewin"
1731 atrac3_decoder_select="mdct"
1732 bink_decoder_select="dsputil hpeldsp"
1733 binkaudio_dct_decoder_select="mdct rdft dct sinewin"
1734 binkaudio_rdft_decoder_select="mdct rdft sinewin"
1735 cavs_decoder_select="dsputil golomb h264chroma videodsp"
1736 cllc_decoder_select="dsputil"
1737 comfortnoise_encoder_select="lpc"
1738 cook_decoder_select="dsputil mdct sinewin"
1739 cscd_decoder_select="lzo"
1740 cscd_decoder_suggest="zlib"
1741 dca_decoder_select="mdct"
1742 dirac_decoder_select="dsputil dwt golomb videodsp"
1743 dnxhd_decoder_select="dsputil"
1744 dnxhd_encoder_select="aandcttables dsputil mpegvideoenc"
1745 dvvideo_decoder_select="dsputil"
1746 dvvideo_encoder_select="dsputil"
1747 dxa_decoder_select="zlib"
1748 eac3_decoder_select="ac3_decoder"
1749 eac3_encoder_select="ac3_encoder"
1750 eamad_decoder_select="aandcttables dsputil mpegvideo"
1751 eatgq_decoder_select="aandcttables"
1752 eatqi_decoder_select="aandcttables error_resilience mpegvideo"
1753 exr_decoder_select="zlib"
1754 ffv1_decoder_select="dsputil golomb rangecoder"
1755 ffv1_encoder_select="dsputil rangecoder"
1756 ffvhuff_decoder_select="dsputil"
1757 ffvhuff_encoder_select="dsputil huffman"
1758 flac_decoder_select="golomb"
1759 flac_encoder_select="dsputil golomb lpc"
1760 flashsv_decoder_select="zlib"
1761 flashsv_encoder_select="zlib"
1762 flashsv2_encoder_select="zlib"
1763 flashsv2_decoder_select="zlib"
1764 flv_decoder_select="h263_decoder"
1765 flv_encoder_select="h263_encoder"
1766 fourxm_decoder_select="dsputil"
1767 fraps_decoder_select="dsputil huffman"
1768 g729_decoder_select="dsputil"
1769 h261_decoder_select="error_resilience mpegvideo"
1770 h261_encoder_select="aandcttables mpegvideoenc"
1771 h263_decoder_select="error_resilience h263_parser mpegvideo"
1772 h263_encoder_select="aandcttables mpegvideoenc"
1773 h263i_decoder_select="h263_decoder"
1774 h263p_encoder_select="h263_encoder"
1775 h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1776 h264_decoder_suggest="error_resilience"
1777 huffyuv_decoder_select="dsputil"
1778 huffyuv_encoder_select="dsputil huffman"
1779 iac_decoder_select="dsputil fft mdct sinewin"
1780 imc_decoder_select="dsputil fft mdct sinewin"
1781 indeo3_decoder_select="hpeldsp"
1782 interplay_video_decoder_select="hpeldsp"
1783 jpegls_decoder_select="dsputil golomb hpeldsp"
1784 jpegls_encoder_select="golomb"
1785 jv_decoder_select="dsputil"
1786 lagarith_decoder_select="dsputil"
1787 ljpeg_encoder_select="aandcttables mpegvideoenc"
1788 loco_decoder_select="golomb"
1789 mdec_decoder_select="dsputil error_resilience mpegvideo"
1790 mimic_decoder_select="dsputil hpeldsp"
1791 mjpeg_decoder_select="dsputil hpeldsp"
1792 mjpegb_decoder_select="dsputil hpeldsp"
1793 mjpeg_encoder_select="aandcttables dsputil mpegvideoenc"
1794 mlp_decoder_select="dsputil mlp_parser"
1795 motionpixels_decoder_select="dsputil"
1796 mp1_decoder_select="mpegaudio"
1797 mp1float_decoder_select="mpegaudio"
1798 mp2_decoder_select="mpegaudio"
1799 mp2float_decoder_select="mpegaudio"
1800 mp3_decoder_select="mpegaudio"
1801 mp3adu_decoder_select="mpegaudio"
1802 mp3adufloat_decoder_select="mpegaudio"
1803 mp3float_decoder_select="mpegaudio"
1804 mp3on4_decoder_select="mpegaudio"
1805 mp3on4float_decoder_select="mpegaudio"
1806 mpc7_decoder_select="dsputil mpegaudiodsp"
1807 mpc8_decoder_select="dsputil mpegaudiodsp"
1808 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1809 mpeg_xvmc_decoder_select="mpeg2video_decoder"
1810 mpeg1video_decoder_select="error_resilience mpegvideo"
1811 mpeg1video_encoder_select="aandcttables mpegvideoenc"
1812 mpeg2video_decoder_select="error_resilience mpegvideo"
1813 mpeg2video_encoder_select="aandcttables mpegvideoenc"
1814 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1815 mpeg4_encoder_select="h263_encoder"
1816 msmpeg4v1_decoder_select="h263_decoder"
1817 msmpeg4v2_decoder_select="h263_decoder"
1818 msmpeg4v2_encoder_select="h263_encoder"
1819 msmpeg4v3_decoder_select="h263_decoder"
1820 msmpeg4v3_encoder_select="h263_encoder"
1821 mss2_decoder_select="error_resilience vc1_decoder"
1822 mxpeg_decoder_select="dsputil hpeldsp"
1823 nellymoser_decoder_select="mdct sinewin"
1824 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
1825 nuv_decoder_select="dsputil lzo"
1826 png_decoder_select="zlib"
1827 png_encoder_select="dsputil zlib"
1828 prores_decoder_select="dsputil"
1829 prores_encoder_select="dsputil"
1830 qcelp_decoder_select="lsp"
1831 qdm2_decoder_select="mdct rdft mpegaudiodsp"
1832 ra_144_encoder_select="audio_frame_queue lpc"
1833 ralf_decoder_select="golomb"
1834 rtjpeg_decoder_select="dsputil"
1835 rv10_decoder_select="error_resilience h263_decoder"
1836 rv10_encoder_select="h263_encoder"
1837 rv20_decoder_select="error_resilience h263_decoder"
1838 rv20_encoder_select="h263_encoder"
1839 rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1840 rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1841 shorten_decoder_select="golomb"
1842 sipr_decoder_select="lsp"
1843 snow_decoder_select="dsputil dwt h264qpel hpeldsp rangecoder"
1844 snow_encoder_select="aandcttables dsputil dwt h264qpel hpeldsp mpegvideoenc rangecoder"
1845 sonic_decoder_select="golomb"
1846 sonic_encoder_select="golomb"
1847 sonic_ls_encoder_select="golomb"
1848 sp5x_decoder_select="dsputil hpeldsp"
1849 svq1_decoder_select="hpeldsp"
1850 svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc"
1851 svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp"
1852 svq3_decoder_suggest="error_resilience zlib"
1853 tak_decoder_select="dsputil"
1854 theora_decoder_select="vp3_decoder"
1855 tiff_decoder_suggest="zlib"
1856 tiff_encoder_suggest="zlib"
1857 thp_decoder_select="dsputil hpeldsp"
1858 truehd_decoder_select="mlp_parser"
1859 truemotion2_decoder_select="dsputil"
1860 truespeech_decoder_select="dsputil"
1861 tscc_decoder_select="zlib"
1862 twinvq_decoder_select="mdct lsp sinewin"
1863 utvideo_decoder_select="dsputil"
1864 utvideo_encoder_select="dsputil huffman"
1865 vble_decoder_select="dsputil"
1866 vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel"
1867 vc1image_decoder_select="vc1_decoder"
1868 vorbis_decoder_select="mdct"
1869 vorbis_encoder_select="mdct"
1870 vp3_decoder_select="hpeldsp vp3dsp videodsp"
1871 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp"
1872 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp"
1873 vp6a_decoder_select="vp6_decoder"
1874 vp6f_decoder_select="vp6_decoder"
1875 vp8_decoder_select="h264pred videodsp"
1876 wmapro_decoder_select="mdct sinewin"
1877 wmav1_decoder_select="mdct sinewin"
1878 wmav1_encoder_select="mdct sinewin"
1879 wmav2_decoder_select="mdct sinewin"
1880 wmav2_encoder_select="mdct sinewin"
1881 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
1882 wmv1_decoder_select="h263_decoder"
1883 wmv1_encoder_select="h263_encoder"
1884 wmv2_decoder_select="h263_decoder videodsp"
1885 wmv2_encoder_select="h263_encoder"
1886 wmv3_decoder_select="vc1_decoder"
1887 wmv3image_decoder_select="wmv3_decoder"
1888 zerocodec_decoder_select="zlib"
1889 zlib_decoder_select="zlib"
1890 zlib_encoder_select="zlib"
1891 zmbv_decoder_select="zlib"
1892 zmbv_encoder_select="zlib"
1894 # hardware accelerators
1895 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
1896 dxva2_deps="dxva2api_h"
1897 vaapi_deps="va_va_h"
1898 vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
1899 vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
1900 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1902 h263_vaapi_hwaccel_deps="vaapi"
1903 h263_vaapi_hwaccel_select="h263_decoder"
1904 h263_vdpau_hwaccel_deps="vdpau"
1905 h263_vdpau_hwaccel_select="h263_decoder"
1906 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
1907 h264_dxva2_hwaccel_deps="dxva2"
1908 h264_dxva2_hwaccel_select="h264_decoder"
1909 h264_vaapi_hwaccel_deps="vaapi"
1910 h264_vaapi_hwaccel_select="h264_decoder"
1911 h264_vda_decoder_deps="vda"
1912 h264_vda_decoder_select="h264_decoder"
1913 h264_vda_hwaccel_deps="vda"
1914 h264_vda_hwaccel_select="h264_decoder"
1915 h264_vdpau_decoder_deps="vdpau"
1916 h264_vdpau_decoder_select="h264_decoder"
1917 h264_vdpau_hwaccel_deps="vdpau"
1918 h264_vdpau_hwaccel_select="h264_decoder"
1919 mpeg_vdpau_decoder_deps="vdpau"
1920 mpeg_vdpau_decoder_select="mpeg2video_decoder"
1921 mpeg1_vdpau_decoder_deps="vdpau"
1922 mpeg1_vdpau_decoder_select="mpeg1video_decoder"
1923 mpeg1_vdpau_hwaccel_deps="vdpau"
1924 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
1925 mpeg2_crystalhd_decoder_select="crystalhd"
1926 mpeg2_dxva2_hwaccel_deps="dxva2"
1927 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
1928 mpeg2_vaapi_hwaccel_deps="vaapi"
1929 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
1930 mpeg2_vdpau_hwaccel_deps="vdpau"
1931 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
1932 mpeg4_crystalhd_decoder_select="crystalhd"
1933 mpeg4_vaapi_hwaccel_deps="vaapi"
1934 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
1935 mpeg4_vdpau_decoder_deps="vdpau"
1936 mpeg4_vdpau_decoder_select="mpeg4_decoder"
1937 mpeg4_vdpau_hwaccel_deps="vdpau"
1938 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
1939 msmpeg4_crystalhd_decoder_select="crystalhd"
1940 vc1_crystalhd_decoder_select="crystalhd"
1941 vc1_dxva2_hwaccel_deps="dxva2"
1942 vc1_dxva2_hwaccel_select="vc1_decoder"
1943 vc1_vaapi_hwaccel_deps="vaapi"
1944 vc1_vaapi_hwaccel_select="vc1_decoder"
1945 vc1_vdpau_decoder_deps="vdpau"
1946 vc1_vdpau_decoder_select="vc1_decoder"
1947 vc1_vdpau_hwaccel_deps="vdpau"
1948 vc1_vdpau_hwaccel_select="vc1_decoder"
1949 wmv3_crystalhd_decoder_select="crystalhd"
1950 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
1951 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1952 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1953 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
1956 h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1957 mpeg4video_parser_select="error_resilience mpegvideo"
1958 mpegvideo_parser_select="error_resilience mpegvideo"
1959 vc1_parser_select="mpegvideo"
1961 # external libraries
1962 libaacplus_encoder_deps="libaacplus"
1963 libcelt_decoder_deps="libcelt"
1964 libfaac_encoder_deps="libfaac"
1965 libfaac_encoder_select="audio_frame_queue"
1966 libfdk_aac_encoder_deps="libfdk_aac"
1967 libfdk_aac_encoder_select="audio_frame_queue"
1968 libgsm_decoder_deps="libgsm"
1969 libgsm_encoder_deps="libgsm"
1970 libgsm_ms_decoder_deps="libgsm"
1971 libgsm_ms_encoder_deps="libgsm"
1972 libilbc_decoder_deps="libilbc"
1973 libilbc_encoder_deps="libilbc"
1974 libmodplug_demuxer_deps="libmodplug"
1975 libmp3lame_encoder_deps="libmp3lame"
1976 libmp3lame_encoder_select="audio_frame_queue"
1977 libopencore_amrnb_decoder_deps="libopencore_amrnb"
1978 libopencore_amrnb_encoder_deps="libopencore_amrnb"
1979 libopencore_amrnb_encoder_select="audio_frame_queue"
1980 libopencore_amrwb_decoder_deps="libopencore_amrwb"
1981 libopenjpeg_decoder_deps="libopenjpeg"
1982 libopenjpeg_encoder_deps="libopenjpeg"
1983 libopus_decoder_deps="libopus"
1984 libopus_encoder_deps="libopus"
1985 libopus_encoder_select="audio_frame_queue"
1986 libquvi_demuxer_deps="libquvi"
1987 libschroedinger_decoder_deps="libschroedinger"
1988 libschroedinger_encoder_deps="libschroedinger"
1989 libshine_encoder_deps="libshine"
1990 libshine_encoder_select="audio_frame_queue"
1991 libspeex_decoder_deps="libspeex"
1992 libspeex_encoder_deps="libspeex"
1993 libspeex_encoder_select="audio_frame_queue"
1994 libstagefright_h264_decoder_deps="libstagefright_h264"
1995 libtheora_encoder_deps="libtheora"
1996 libtwolame_encoder_deps="libtwolame"
1997 libvo_aacenc_encoder_deps="libvo_aacenc"
1998 libvo_aacenc_encoder_select="audio_frame_queue"
1999 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
2000 libvorbis_decoder_deps="libvorbis"
2001 libvorbis_encoder_deps="libvorbis"
2002 libvorbis_encoder_select="audio_frame_queue"
2003 libvpx_vp8_decoder_deps="libvpx"
2004 libvpx_vp8_encoder_deps="libvpx"
2005 libvpx_vp9_decoder_deps="libvpx"
2006 libvpx_vp9_encoder_deps="libvpx"
2007 libx264_encoder_deps="libx264"
2008 libx264rgb_encoder_deps="libx264"
2009 libxavs_encoder_deps="libxavs"
2010 libxvid_encoder_deps="libxvid"
2011 libutvideo_decoder_deps="libutvideo"
2012 libutvideo_encoder_deps="libutvideo"
2015 ac3_demuxer_select="ac3_parser"
2016 asf_stream_muxer_select="asf_muxer"
2017 avisynth_demuxer_deps="avisynth"
2018 dirac_demuxer_select="dirac_parser"
2019 dts_demuxer_select="dca_parser"
2020 dtshd_demuxer_select="dca_parser"
2021 eac3_demuxer_select="ac3_parser"
2022 f4v_muxer_select="mov_muxer"
2023 flac_demuxer_select="flac_parser"
2024 ipod_muxer_select="mov_muxer"
2025 ismv_muxer_select="mov_muxer"
2026 libnut_demuxer_deps="libnut"
2027 libnut_muxer_deps="libnut"
2028 matroska_audio_muxer_select="matroska_muxer"
2029 matroska_demuxer_suggest="bzlib lzo zlib"
2030 mov_demuxer_suggest="zlib"
2031 mov_muxer_select="rtpenc_chain"
2032 mp3_demuxer_select="mpegaudio_parser"
2033 mp4_muxer_select="mov_muxer"
2034 mpegts_muxer_select="adts_muxer latm_muxer"
2035 mpegtsraw_demuxer_select="mpegts_demuxer"
2036 mxf_d10_muxer_select="mxf_muxer"
2037 ogg_demuxer_select="golomb"
2038 psp_muxer_select="mov_muxer"
2039 rtp_demuxer_select="sdp_demuxer"
2040 rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
2041 rtsp_demuxer_select="http_protocol rtpdec"
2042 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2043 sap_demuxer_select="sdp_demuxer"
2044 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
2045 sdp_demuxer_select="rtpdec"
2046 smoothstreaming_muxer_select="ismv_muxer"
2047 spdif_muxer_select="aac_parser"
2048 tak_demuxer_select="tak_parser"
2049 tg2_muxer_select="mov_muxer"
2050 tgp_muxer_select="mov_muxer"
2051 vobsub_demuxer_select="mpegps_demuxer"
2052 w64_demuxer_deps="wav_demuxer"
2053 w64_muxer_deps="wav_muxer"
2056 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
2057 alsa_outdev_deps="alsa_asoundlib_h"
2058 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2059 caca_outdev_deps="libcaca"
2060 dshow_indev_deps="IBaseFilter"
2061 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
2062 dv1394_indev_deps="dv1394 dv_demuxer"
2063 fbdev_indev_deps="linux_fb_h"
2064 iec61883_indev_deps="libiec61883"
2065 jack_indev_deps="jack_jack_h sem_timedwait"
2066 lavfi_indev_deps="avfilter"
2067 libcdio_indev_deps="libcdio"
2068 libdc1394_indev_deps="libdc1394"
2069 libv4l2_indev_deps="libv4l2"
2070 openal_indev_deps="openal"
2071 oss_indev_deps_any="soundcard_h sys_soundcard_h"
2072 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
2073 pulse_indev_deps="libpulse"
2074 sdl_outdev_deps="sdl"
2075 sndio_indev_deps="sndio_h"
2076 sndio_outdev_deps="sndio_h"
2077 v4l_indev_deps="linux_videodev_h"
2078 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
2079 vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
2080 vfwcap_indev_extralibs="-lavicap32"
2081 x11grab_indev_deps="x11grab"
2084 bluray_protocol_deps="libbluray"
2085 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
2086 ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl"
2087 ffrtmpcrypt_protocol_select="tcp_protocol"
2088 ffrtmphttp_protocol_deps="!librtmp_protocol"
2089 ffrtmphttp_protocol_select="http_protocol"
2090 gopher_protocol_select="network"
2091 httpproxy_protocol_select="tcp_protocol"
2092 http_protocol_select="tcp_protocol"
2093 https_protocol_select="tls_protocol"
2094 librtmp_protocol_deps="librtmp"
2095 librtmpe_protocol_deps="librtmp"
2096 librtmps_protocol_deps="librtmp"
2097 librtmpt_protocol_deps="librtmp"
2098 librtmpte_protocol_deps="librtmp"
2099 mmsh_protocol_select="http_protocol"
2100 mmst_protocol_select="network"
2101 rtmp_protocol_deps="!librtmp_protocol"
2102 rtmp_protocol_select="tcp_protocol"
2103 rtmpe_protocol_select="ffrtmpcrypt_protocol"
2104 rtmps_protocol_deps="!librtmp_protocol"
2105 rtmps_protocol_select="tls_protocol"
2106 rtmpt_protocol_select="ffrtmphttp_protocol"
2107 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
2108 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
2109 rtp_protocol_select="udp_protocol"
2110 sctp_protocol_deps="struct_sctp_event_subscribe"
2111 sctp_protocol_select="network"
2112 srtp_protocol_select="rtp_protocol"
2113 tcp_protocol_select="network"
2114 tls_protocol_deps_any="openssl gnutls"
2115 tls_protocol_select="tcp_protocol"
2116 udp_protocol_select="network"
2119 aconvert_filter_deps="swresample"
2120 amovie_filter_deps="avcodec avformat"
2121 aresample_filter_deps="swresample"
2122 ass_filter_deps="libass"
2123 asyncts_filter_deps="avresample"
2124 atempo_filter_deps="avcodec rdft"
2125 blackframe_filter_deps="gpl"
2126 boxblur_filter_deps="gpl"
2127 colormatrix_filter_deps="gpl"
2128 cropdetect_filter_deps="gpl"
2129 delogo_filter_deps="gpl"
2130 deshake_filter_deps="avcodec"
2131 deshake_filter_select="dsputil"
2132 drawtext_filter_deps="libfreetype"
2133 ebur128_filter_deps="gpl"
2134 flite_filter_deps="libflite"
2135 frei0r_filter_deps="frei0r dlopen"
2136 frei0r_filter_extralibs='$ldl'
2137 frei0r_src_filter_deps="frei0r dlopen"
2138 frei0r_src_filter_extralibs='$ldl'
2139 geq_filter_deps="gpl"
2140 histeq_filter_deps="gpl"
2141 hqdn3d_filter_deps="gpl"
2142 hue_filter_deps="gpl"
2143 interlace_filter_deps="gpl"
2144 kerndeint_filter_deps="gpl"
2145 movie_filter_deps="avcodec avformat"
2146 mp_filter_deps="gpl avcodec swscale inline_asm"
2147 mpdecimate_filter_deps="gpl avcodec"
2148 mptestsrc_filter_deps="gpl"
2149 negate_filter_deps="lut_filter"
2150 noise_filter_deps="gpl"
2151 resample_filter_deps="avresample"
2152 ocv_filter_deps="libopencv"
2153 pan_filter_deps="swresample"
2154 pp_filter_deps="gpl postproc"
2155 removelogo_filter_deps="avcodec avformat swscale"
2156 scale_filter_deps="swscale"
2157 smartblur_filter_deps="gpl swscale"
2158 showspectrum_filter_deps="avcodec rdft"
2159 stereo3d_filter_deps="gpl"
2160 subtitles_filter_deps="avformat avcodec libass"
2161 super2xsai_filter_deps="gpl"
2162 tinterlace_filter_deps="gpl"
2163 vidstabdetect_filter_deps="libvidstab"
2164 vidstabtransform_filter_deps="libvidstab"
2165 yadif_filter_deps="gpl"
2166 pixfmts_super2xsai_test_deps="super2xsai_filter"
2167 tinterlace_merge_test_deps="tinterlace_filter"
2168 tinterlace_pad_test_deps="tinterlace_filter"
2171 avcodec_deps="avutil"
2172 avdevice_deps="avutil avcodec avformat"
2173 avfilter_deps="avutil"
2174 avformat_deps="avutil avcodec"
2175 avresample_deps="avutil"
2176 postproc_deps="avutil gpl"
2177 swscale_deps="avutil"
2180 ffmpeg_deps="avcodec avfilter avformat swscale swresample"
2181 ffmpeg_select="format_filter aformat_filter
2182 setpts_filter null_filter anull_filter"
2183 ffplay_deps="avcodec avformat swscale swresample sdl"
2184 ffplay_select="rdft crop_filter"
2185 ffprobe_deps="avcodec avformat"
2186 ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
2187 ffserver_extralibs='$ldl'
2190 podpages_deps="perl"
2191 manpages_deps="perl pod2man"
2192 htmlpages_deps="texi2html"
2193 txtpages_deps="makeinfo"
2194 doc_deps_any="manpages htmlpages podpages txtpages"
2196 # default parameters
2198 logfile="config.log"
2200 # installation paths
2201 prefix_default="/usr/local"
2202 bindir_default='${prefix}/bin'
2203 datadir_default='${prefix}/share/ffmpeg'
2204 incdir_default='${prefix}/include'
2205 libdir_default='${prefix}/lib'
2206 mandir_default='${prefix}/share/man'
2207 shlibdir_default="$libdir_default"
2213 host_cc_default="gcc"
2219 pkg_config_default=pkg-config
2221 strip_default="strip"
2222 yasmexe_default="yasm"
2227 arch_default=$(uname -m)
2231 target_os_default=$(tolower $(uname -s))
2232 host_os=$target_os_default
2234 # configurable options
2235 enable $PROGRAM_LIST
2236 enable $DOCUMENT_LIST
2237 enable $(filter_out avresample $LIBRARY_LIST)
2243 enable optimizations
2244 enable runtime_cpudetect
2245 enable safe_bitstream_reader
2247 enable swscale_alpha
2249 # By default, enable only those hwaccels that have no external dependencies.
2253 SHFLAGS='-shared -Wl,-soname,$$(@F)'
2254 FFSERVERLDFLAGS=-Wl,-E
2257 FULLNAME='$(NAME)$(BUILDSUF)'
2258 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
2261 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
2262 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
2263 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
2264 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2265 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
2266 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2286 host_cflags='-O3 -g'
2287 host_cppflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600'
2289 host_cflags_filter=echo
2290 host_ldflags_filter=echo
2292 target_path='$(CURDIR)'
2294 # since the object filename is not given with the -MM flag, the compiler
2295 # is only able to print the basename, and we must add the path ourselves
2296 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
2300 if test -f configure; then
2303 source_path=$(cd $(dirname "$0"); pwd)
2304 echo "$source_path" | grep -q '[[:blank:]]' &&
2305 die "Out of tree builds are impossible with whitespace in source path."
2306 test -e "$source_path/config.h" &&
2307 die "Out of tree builds are impossible with config.h in source dir."
2314 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
2320 file=$source_path/$3
2321 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
2324 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
2325 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
2326 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
2327 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
2328 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c)
2329 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
2330 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
2331 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
2332 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
2333 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
2334 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
2350 for n in $COMPONENT_LIST; do
2351 v=$(toupper ${n%s})_LIST
2353 eval ${n}_if_any="\$$v"
2356 enable $ARCH_EXT_LIST
2359 echo "Unknown option \"$1\"."
2360 echo "See $0 --help for available options."
2365 cat | tr ' ' '\n' | sort | pr -r -3 -t
2371 echo $* | sed s/$suffix//g | print_3_columns
2383 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
2384 echo "prob ${prob:-0.5}"
2392 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
2393 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
2403 add_extralibs $optval
2406 disable $INDEV_LIST $OUTDEV_LIST
2409 debuglevel="$optval"
2412 disable $PROGRAM_LIST
2414 --disable-everything)
2415 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2418 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2419 disable $LIBRARY_LIST $PROGRAM_LIST doc
2421 --enable-random|--disable-random)
2422 action=${opt%%-random}
2423 do_random ${action#--} $COMPONENT_LIST
2425 --enable-random=*|--disable-random=*)
2426 action=${opt%%-random=*}
2427 do_random ${action#--} $optval
2429 --enable-*=*|--disable-*=*)
2430 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
2431 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
2432 eval list=\$$(toupper $thing)_LIST
2433 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
2434 list=$(filter "$name" $list)
2435 [ "$list" = "" ] && warn "Option $opt did not match anything"
2438 --enable-?*|--disable-?*)
2439 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
2440 if is_in $option $COMPONENT_LIST; then
2441 test $action = disable && action=unset
2442 eval $action \$$(toupper ${option%s})_LIST
2443 elif is_in $option $CMDLINE_SELECT; then
2450 NAME="${opt#--list-}"
2451 is_in $NAME $COMPONENT_LIST || die_unknown $opt
2453 eval show_list $NAME \$$(toupper $NAME)_LIST
2455 --help|-h) show_help
2457 --fatal-warnings) enable fatal_warnings
2460 optname="${opt%%=*}"
2461 optname="${optname#--}"
2462 optname=$(echo "$optname" | sed 's/-/_/g')
2463 if is_in $optname $CMDLINE_SET; then
2464 eval $optname='$optval'
2465 elif is_in $optname $CMDLINE_APPEND; then
2466 append $optname "$optval"
2474 disabled logging && logfile=/dev/null
2476 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
2479 test -n "$cross_prefix" && enable cross_compile
2481 if enabled cross_compile; then
2482 test -n "$arch" && test -n "$target_os" ||
2483 die "Must specify target arch and OS when cross-compiling"
2486 ar_default="${cross_prefix}${ar_default}"
2487 cc_default="${cross_prefix}${cc_default}"
2488 cxx_default="${cross_prefix}${cxx_default}"
2489 nm_default="${cross_prefix}${nm_default}"
2490 pkg_config_default="${cross_prefix}${pkg_config_default}"
2491 ranlib="${cross_prefix}${ranlib}"
2492 strip_default="${cross_prefix}${strip_default}"
2494 sysinclude_default="${sysroot}/usr/include"
2496 case "$toolchain" in
2499 add_cflags -fsanitize=address
2500 add_ldflags -fsanitize=address
2504 add_cflags -fsanitize=thread -pie
2505 add_ldflags -fsanitize=thread -pie
2508 cc_default="c99wrap cl"
2509 ld_default="c99wrap link"
2510 nm_default="dumpbin -symbols"
2512 target_os_default="win32"
2515 add_cflags -fprofile-arcs -ftest-coverage
2516 add_ldflags -fprofile-arcs -ftest-coverage
2519 die "Unknown toolchain $toolchain"
2523 set_default arch cc cxx pkg_config strip sysinclude target_os yasmexe
2524 enabled cross_compile || host_cc_default=$cc
2527 if ! $pkg_config --version >/dev/null 2>&1; then
2528 warn "$pkg_config not found, library detection may fail."
2534 mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
2538 EXESUF=$(exesuf $target_os)
2539 HOSTEXESUF=$(exesuf $host_os)
2541 # set temporary file name
2542 : ${TMPDIR:=$TEMPDIR}
2546 if ! check_cmd mktemp -u XXXXXX; then
2547 # simple replacement for missing mktemp
2548 # NOT SAFE FOR GENERAL USE
2550 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
2555 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
2556 (set -C; exec > $tmp) 2>/dev/null ||
2557 die "Unable to create temporary file in $TMPDIR."
2558 append TMPFILES $tmp
2562 trap 'rm -f -- $TMPFILES' EXIT
2567 tmpfile TMPE $EXESUF
2578 # make sure we can execute files in $TMPDIR
2579 cat > $TMPSH 2>> $logfile <<EOF
2582 chmod +x $TMPSH >> $logfile 2>&1
2583 if ! $TMPSH >> $logfile 2>&1; then
2585 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
2586 variable to another directory and make sure that it is not mounted noexec.
2588 die "Sanity test failed."
2594 -std=c99) echo -c99 ;;
2595 -mcpu=*) echo -arch ${flag#*=} ;;
2596 -mieee) echo -ieee ;;
2597 -O*|-fast) echo $flag ;;
2598 -fno-math-errno) echo -assume nomath_errno ;;
2600 -Wall) echo -msg_enable level2 ;;
2601 -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
2602 -Wl,*) echo $flag ;;
2612 -fomit-frame-pointer) echo -Oy ;;
2614 -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
2615 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
2616 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
2622 -fno-signed-zeros) ;;
2624 -lz) echo zlib.lib ;;
2625 -lavifil32) echo vfw32.lib ;;
2626 -lavicap32) echo vfw32.lib user32.lib ;;
2627 -l*) echo ${flag#-l}.lib ;;
2636 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
2637 -fomit-frame-pointer) echo -Mnoframe ;;
2648 case "${flag#*=}" in
2649 native) echo -xtarget=native ;;
2650 v9|niagara) echo -xarch=sparc ;;
2651 ultrasparc) echo -xarch=sparcvis ;;
2652 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
2653 i586|pentium) echo -xchip=pentium ;;
2654 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
2655 pentium3*|c3-2) echo -xtarget=pentium3 ;;
2656 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
2657 pentium4*) echo -xtarget=pentium4 ;;
2658 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
2659 *-sse3) echo -xarch=sse3 ;;
2660 core2) echo -xarch=ssse3 -xchip=core2 ;;
2661 corei7) echo -xarch=sse4_2 -xchip=nehalem ;;
2662 corei7-avx) echo -xarch=avx -xchip=sandybridge ;;
2663 amdfam10|barcelona) echo -xtarget=barcelona ;;
2664 bdver*) echo -xarch=avx ;;
2665 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
2666 k8|opteron|athlon64|athlon-fx)
2667 echo -xarch=sse2a ;;
2668 athlon*) echo -xarch=pentium_proa ;;
2671 -std=c99) echo -xc99 ;;
2672 -fomit-frame-pointer) echo -xregs=frameptr ;;
2673 -fPIC) echo -KPIC -xcode=pic32 ;;
2674 -W*,*) echo $flag ;;
2675 -f*-*|-W*|-mimpure-text) ;;
2686 case "${flag#*=}" in
2687 armv7-a|cortex-a*) echo -mv=7a8 ;;
2688 armv7-r|cortex-r*) echo -mv=7r4 ;;
2689 armv7-m|cortex-m*) echo -mv=7m3 ;;
2690 armv6*|arm11*) echo -mv=6 ;;
2691 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
2693 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
2696 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
2697 -mfpu=vfp) echo --float_support=vfpv2 ;;
2698 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
2699 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
2700 -msoft-float) echo --float_support=vfplib ;;
2701 -O[0-3]|-mf=*) echo $flag ;;
2703 -pds=*) echo $flag ;;
2704 -D*|-I*) echo $flag ;;
2705 --gcc|--abi=*) echo $flag ;;
2715 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
2716 unset _ld_o _ldflags _ld_lib _ld_path
2717 unset _depflags _DEPCMD _DEPFLAGS
2720 if $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
2722 gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)')
2723 _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver"
2724 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2727 elif $_cc -v 2>&1 | grep -qi ^gcc; then
2729 gcc_version=$($_cc --version | head -n1)
2730 gcc_basever=$($_cc -dumpversion)
2731 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
2732 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
2733 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
2734 if ! $_cc -dumpversion | grep -q '^2\.'; then
2735 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2739 elif $_cc --version 2>/dev/null | grep -q ^icc; then
2741 _ident=$($_cc --version | head -n1)
2746 elif $_cc -v 2>&1 | grep -q xlc; then
2748 _ident=$($_cc -qversion 2>/dev/null | head -n1)
2750 _cflags_size='-O5 -qcompact'
2751 elif $_cc -V 2>/dev/null | grep -q Compaq; then
2753 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
2755 _cflags_speed='-fast'
2757 _flags_filter=ccc_flags
2758 elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
2759 test -d "$sysroot" || die "No valid sysroot specified."
2761 _ident=$($_cc --vsn | head -n1)
2762 armcc_conf="$PWD/armcc.conf"
2763 $_cc --arm_linux_configure \
2764 --arm_linux_config_file="$armcc_conf" \
2765 --configure_sysroot="$sysroot" \
2766 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
2767 die "Error creating armcc configuration file."
2768 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
2769 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
2770 as_default="${cross_prefix}gcc"
2774 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
2776 _ident=$($_cc -version | head -n1 | tr -s ' ')
2777 _flags='--gcc --abi=eabi -me'
2780 _depflags='-ppa -ppd=$(@:.o=.d)'
2781 _cflags_speed='-O3 -mf=5'
2782 _cflags_size='-O3 -mf=2'
2783 _flags_filter=tms470_flags
2784 elif $_cc -v 2>&1 | grep -q clang; then
2786 _ident=$($_cc --version | head -n1)
2790 elif $_cc -V 2>&1 | grep -q Sun; then
2792 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
2793 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2794 _DEPFLAGS='-xM1 -xc99'
2797 _cflags_size='-O5 -xspace'
2798 _flags_filter=suncc_flags
2799 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
2801 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2802 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2805 _flags_filter='filter_out -Wdisabled-optimization'
2806 elif $_cc -v 2>&1 | grep -q Open64; then
2808 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2809 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2812 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
2813 elif $_cc -V 2>&1 | grep -q Portland; then
2815 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
2816 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
2817 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
2818 _cflags_size="-O2 -Munroll=c:1 $opt_common"
2820 _flags_filter=pgi_flags
2821 elif $_cc 2>&1 | grep -q Microsoft; then
2823 _ident=$($cc 2>&1 | head -n1)
2824 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
2825 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
2828 # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it
2829 if $_cc 2>&1 | grep -q Linker; then
2836 _flags_filter=msvc_flags
2838 _ld_path='-libpath:'
2840 _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64'
2841 if [ $pfx = hostcc ]; then
2842 append _cflags -Dsnprintf=_snprintf
2847 eval ${pfx}_type=\$_type
2848 eval ${pfx}_ident=\$_ident
2852 eval ${1}_C=\${_cc_c-\${${1}_C}}
2853 eval ${1}_E=\${_cc_e-\${${1}_E}}
2854 eval ${1}_O=\${_cc_o-\${${1}_O}}
2856 if [ -n "$_depflags" ]; then
2857 eval ${1}_DEPFLAGS=\$_depflags
2859 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
2860 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
2861 eval DEP${1}FLAGS=\$_flags
2866 cflags_filter=$_flags_filter
2867 cflags_speed=$_cflags_speed
2868 cflags_size=$_cflags_size
2869 cflags_noopt=$_cflags_noopt
2870 add_cflags $_flags $_cflags
2871 cc_ldflags=$_ldflags
2874 probe_cc hostcc "$host_cc"
2875 host_cflags_filter=$_flags_filter
2876 add_host_cflags $_flags $_cflags
2879 test -n "$cc_type" && enable $cc_type ||
2880 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
2882 : ${as_default:=$cc}
2883 : ${dep_cc_default:=$cc}
2884 : ${ld_default:=$cc}
2885 : ${host_ld_default:=$host_cc}
2886 set_default ar as dep_cc ld host_ld
2889 asflags_filter=$_flags_filter
2890 add_asflags $_flags $_cflags
2894 ldflags_filter=$_flags_filter
2895 add_ldflags $_flags $_ldflags
2896 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
2898 LD_LIB=${_ld_lib-$LD_LIB}
2899 LD_PATH=${_ld_path-$LD_PATH}
2901 probe_cc hostld "$host_ld"
2902 host_ldflags_filter=$_flags_filter
2903 add_host_ldflags $_flags $_ldflags
2904 HOSTLD_O=${_ld_o-$HOSTLD_O}
2906 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
2907 probe_cc depcc "$dep_cc"
2908 CCDEP=${_DEPCMD:-$DEPCMD}
2909 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
2913 if $ar 2>&1 | grep -q Microsoft; then
2916 elif $ar 2>&1 | grep -q 'Texas Instruments'; then
2924 add_cflags $extra_cflags
2925 add_cxxflags $extra_cxxflags
2926 add_asflags $extra_cflags
2928 if test -n "$sysroot"; then
2931 add_cppflags --sysroot="$sysroot"
2932 add_ldflags --sysroot="$sysroot"
2935 add_cppflags -I"$sysinclude"
2936 add_ldflags --sysroot="$sysroot"
2941 if test "$cpu" = host; then
2942 enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
2947 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
2949 s/.*$1=\\([^ ]*\\).*/\\1/
2954 cpu=$(check_native -march || check_native -mcpu)
2958 test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
2961 # Deal with common $arch aliases
2975 "Power Macintosh"|ppc*|powerpc*)
2990 i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
2995 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
2998 # Add processor-specific flags
2999 if enabled aarch64; then
3003 cpuflags="-march=$cpu"
3006 cpuflags="-mcpu=$cpu"
3010 elif enabled alpha; then
3012 cpuflags="-mcpu=$cpu"
3014 elif enabled arm; then
3017 check_cpp_condition stddef.h \
3018 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
3023 if check_arm_arch 4; then echo armv4;
3024 elif check_arm_arch 4T; then echo armv4t;
3025 elif check_arm_arch 5; then echo armv5;
3026 elif check_arm_arch 5E; then echo armv5e;
3027 elif check_arm_arch 5T; then echo armv5t;
3028 elif check_arm_arch 5TE; then echo armv5te;
3029 elif check_arm_arch 5TEJ; then echo armv5te;
3030 elif check_arm_arch 6; then echo armv6;
3031 elif check_arm_arch 6J; then echo armv6j;
3032 elif check_arm_arch 6K; then echo armv6k;
3033 elif check_arm_arch 6Z; then echo armv6z;
3034 elif check_arm_arch 6ZK; then echo armv6zk;
3035 elif check_arm_arch 6T2; then echo armv6t2;
3036 elif check_arm_arch 7; then echo armv7;
3037 elif check_arm_arch 7A 7_A; then echo armv7-a;
3038 elif check_arm_arch 7R 7_R; then echo armv7-r;
3039 elif check_arm_arch 7M 7_M; then echo armv7-m;
3040 elif check_arm_arch 7EM 7E_M; then echo armv7-m;
3041 elif check_arm_arch 8A 8_A; then echo armv8-a;
3045 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
3049 cpuflags="-march=$cpu"
3050 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
3053 cpuflags="-mcpu=$cpu"
3055 cortex-a*) subarch=armv7a ;;
3056 cortex-r*) subarch=armv7r ;;
3057 cortex-m*) enable thumb; subarch=armv7m ;;
3058 arm11*) subarch=armv6 ;;
3059 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
3060 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
3061 *) subarch=$(probe_arm_arch) ;;
3067 armv5t*) enable fast_clz ;;
3068 armv[6-8]*) enable fast_clz fast_unaligned ;;
3071 elif enabled avr32; then
3076 cpuflags="-mpart=$cpu"
3080 cpuflags="-march=$cpu"
3084 cpuflags="-mcpu=$cpu"
3088 cpuflags="-march=$cpu"
3092 elif enabled bfin; then
3094 cpuflags="-mcpu=$cpu"
3096 elif enabled mips; then
3098 cpuflags="-march=$cpu"
3114 24kef*|34kf*|1004kf*)
3122 elif enabled ppc; then
3124 case $(tolower $cpu) in
3125 601|ppc601|powerpc601)
3126 cpuflags="-mcpu=601"
3129 603*|ppc603*|powerpc603*)
3130 cpuflags="-mcpu=603"
3133 604*|ppc604*|powerpc604*)
3134 cpuflags="-mcpu=604"
3137 g3|75*|ppc75*|powerpc75*)
3138 cpuflags="-mcpu=750"
3141 g4|745*|ppc745*|powerpc745*)
3142 cpuflags="-mcpu=7450"
3144 74*|ppc74*|powerpc74*)
3145 cpuflags="-mcpu=7400"
3147 g5|970|ppc970|powerpc970)
3148 cpuflags="-mcpu=970"
3151 cpuflags="-mcpu=$cpu"
3154 cpuflags="-mcpu=cell"
3158 cpuflags="-mcpu=e500mc"
3162 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
3166 cpuflags="-mcpu=8540 -mhard-float"
3171 elif enabled sparc; then
3174 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
3175 cpuflags="-mcpu=$cpu"
3178 ultrasparc*|niagara[234])
3179 cpuflags="-mcpu=$cpu"
3183 elif enabled x86; then
3187 cpuflags="-march=$cpu"
3190 # targets that do NOT support conditional mov (cmov)
3191 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
3192 cpuflags="-march=$cpu"
3195 # targets that do support conditional mov (cmov)
3196 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*)
3197 cpuflags="-march=$cpu"
3201 # targets that do support conditional mov but on which it's slow
3202 pentium4|pentium4m|prescott|nocona)
3203 cpuflags="-march=$cpu"
3211 if [ "$cpu" != generic ]; then
3212 add_cflags $cpuflags
3213 add_asflags $cpuflags
3216 # compiler sanity check
3218 int main(void){ return 0; }
3220 if test "$?" != 0; then
3221 echo "$cc is unable to create an executable file."
3222 if test -z "$cross_prefix" && ! enabled cross_compile ; then
3223 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
3224 echo "Only do this if you know what cross compiling means."
3226 die "C compiler test failed."
3229 add_cppflags -D_ISOC99_SOURCE
3230 add_cxxflags -D__STDC_CONSTANT_MACROS
3231 check_cflags -std=c99
3232 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
3235 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
3239 check_host_cflags -std=c99
3240 check_host_cflags -Wall
3246 check_code cc "" "int test[2*($expr) - 1]" &&
3247 subarch=$arch64 || subarch=$arch32
3255 check_64bit mips mips64 '_MIPS_SIM > 1'
3259 check_64bit parisc parisc64 'sizeof(void *) > 4'
3263 check_64bit ppc ppc64 'sizeof(void *) > 4'
3267 check_64bit sparc sparc64 'sizeof(void *) > 4'
3271 check_64bit x86_32 x86_64 'sizeof(void *) > 4'
3272 if test "$subarch" = "x86_64"; then
3277 check_cc <<EOF && subarch="ppc64"
3278 int test[(int)sizeof(char*) - 7];
3284 enabled spic && enable pic
3289 prefix_default="/boot/common"
3290 network_extralibs="-lnetwork"
3295 SHFLAGS='-shared -Wl,-h,$$(@F)'
3296 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
3297 network_extralibs="-lsocket -lnsl"
3298 add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
3299 # When using suncc to build, the Solaris linker will mark
3300 # an executable with each instruction set encountered by
3301 # the Solaris assembler. As our libraries contain their own
3302 # guards for processor-specific code, instead suppress
3303 # generation of the HWCAPS ELF section on Solaris x86 only.
3304 enabled_all suncc x86 && echo "hwcap_1 = OVERRIDE;" > mapfile && add_ldflags -Wl,-M,mapfile
3305 nm_default='nm -P -g'
3309 oss_indev_extralibs="-lossaudio"
3310 oss_outdev_extralibs="-lossaudio"
3311 enabled gcc || check_ldflags -Wl,-zmuldefs
3316 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
3318 oss_indev_extralibs="-lossaudio"
3319 oss_outdev_extralibs="-lossaudio"
3327 add_extralibs -lpoll -lgnugetopt
3331 gas="gas-preprocessor.pl $cc"
3332 enabled ppc && add_asflags -force_cpusubtype_ALL
3333 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
3334 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
3336 add_ldflags -Wl,-dynamic,-search_paths_first
3338 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
3339 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
3340 FFSERVERLDFLAGS=-Wl,-bind_at_load
3342 enabled x86_64 && objformat="macho64"
3343 enabled_any pic shared ||
3344 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
3347 if test $target_os = "mingw32ce"; then
3353 if enabled x86_64; then
3354 LIBTARGET="i386:x86-64"
3355 elif enabled arm; then
3358 shlibdir_default="$bindir_default"
3361 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3362 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3363 dlltool="${cross_prefix}dlltool"
3364 if check_cmd lib.exe -list; then
3365 SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3366 if enabled x86_64; then
3369 elif check_cmd $dlltool --version; then
3370 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)'
3372 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3374 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3375 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3376 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'
3382 if enabled shared; then
3383 # Link to the import library instead of the normal static library
3386 # Cannot build shared and static libraries at the same time with
3390 shlibdir_default="$bindir_default"
3393 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3394 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3395 SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3396 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3398 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3399 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3400 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3407 shlibdir_default="$bindir_default"
3410 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3411 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3412 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3414 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
3415 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
3419 *-dos|freedos|opendos)
3420 network_extralibs="-lsocket"
3423 add_cppflags -U__STRICT_ANSI__
3430 ranlib="echo ignoring ranlib"
3436 add_cppflags -D_GNU_SOURCE
3437 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
3438 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
3443 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3444 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
3445 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
3446 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
3447 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
3448 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
3449 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
3450 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
3451 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
3452 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
3453 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
3455 enable_weak os2threads
3458 add_cppflags -D_BSD_SOURCE
3463 add_cppflags -D_QNX_SOURCE
3464 network_extralibs="-lsocket"
3469 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
3470 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
3471 add_ldflags -Wl,--target1-abs,--no-undefined \
3472 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
3473 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
3474 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
3475 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
3476 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
3479 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
3485 add_cppflags -D_C99_SNPRINTF_EXTENSION \
3486 -D_REENTRANT_SOURCE \
3487 -D_RESEARCH_SOURCE \
3490 add_compat strtod.o strtod=avpriv_strtod
3491 network_extralibs='-lbsd'
3492 exeobjs=compat/plan9/main.o
3499 die "Unknown OS '$target_os'."
3503 # determine libc flavour
3505 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
3506 if check_cpp_condition features.h "defined __UCLIBC__"; then
3508 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3509 elif check_cpp_condition features.h "defined __GLIBC__"; then
3511 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3512 # MinGW headers can be installed on Cygwin, so check for newlib first.
3513 elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
3515 add_cppflags -U__STRICT_ANSI__
3516 elif check_header _mingw.h; then
3518 check_cpp_condition _mingw.h \
3519 "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
3520 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
3521 die "ERROR: MinGW runtime version must be >= 3.15."
3522 add_cppflags -U__STRICT_ANSI__
3523 if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \
3524 __MINGW64_VERSION_MAJOR < 3"; then
3525 add_compat msvcrt/snprintf.o
3526 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
3528 elif check_func_headers stdlib.h _get_doserrno; then
3530 add_compat strtod.o strtod=avpriv_strtod
3531 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
3532 _snprintf=avpriv_snprintf \
3533 vsnprintf=avpriv_vsnprintf
3534 elif check_cpp_condition stddef.h "defined __KLIBC__"; then
3538 test -n "$libc_type" && enable $libc_type
3540 # hacks for compiler/libc/os combinations
3542 if enabled_all tms470 glibc; then
3543 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
3544 add_cppflags -D__USER_LABEL_PREFIX__=
3545 add_cppflags -D__builtin_memset=memset
3546 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
3547 add_cflags -pds=48 # incompatible redefinition of macro
3550 if enabled_all ccc glibc; then
3551 add_ldflags -Wl,-z,now # calls to libots crash without this
3555 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
3558 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate
3560 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
3562 set_default $PATHS_LIST
3565 # we need to build at least one lib type
3566 if ! enabled_any static shared; then
3568 At least one library type must be built.
3569 Specify --enable-static to build the static libraries or --enable-shared to
3570 build the shared libraries as well. To only build the shared libraries specify
3571 --disable-static in addition to --enable-shared.
3576 die_license_disabled() {
3577 enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
3580 die_license_disabled_gpl() {
3581 enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; }
3584 die_license_disabled gpl libcdio
3585 die_license_disabled gpl libutvideo
3586 die_license_disabled gpl libvidstab
3587 die_license_disabled gpl libx264
3588 die_license_disabled gpl libxavs
3589 die_license_disabled gpl libxvid
3590 die_license_disabled gpl x11grab
3592 die_license_disabled nonfree libaacplus
3593 die_license_disabled nonfree libfaac
3594 enabled gpl && die_license_disabled_gpl nonfree libfdk_aac
3595 enabled gpl && die_license_disabled_gpl nonfree openssl
3597 die_license_disabled version3 libopencore_amrnb
3598 die_license_disabled version3 libopencore_amrwb
3599 die_license_disabled version3 libvo_aacenc
3600 die_license_disabled version3 libvo_amrwbenc
3602 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3604 disabled optimizations || check_cflags -fomit-frame-pointer
3613 enabled pic && enable_pic
3615 check_cc <<EOF || die "Symbol mangling check failed."
3618 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
3619 extern_prefix=${sym%%ff_extern*}
3621 check_cc <<EOF && enable_weak inline_asm
3622 void foo(void) { __asm__ volatile ("" ::); }
3626 for restrict_keyword in restrict __restrict__ __restrict; do
3627 check_cc <<EOF && _restrict=$restrict_keyword && break
3628 void foo(char * $restrict_keyword p);
3632 check_cc <<EOF && enable attribute_packed
3633 struct { int x; } __attribute__((packed)) x;
3636 check_cc <<EOF && enable attribute_may_alias
3637 union { int x; } __attribute__((may_alias)) x;
3640 check_cc <<EOF || die "endian test failed"
3641 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
3643 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
3645 if enabled alpha; then
3649 elif enabled arm; then
3651 check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
3652 float func(float a, float b){ return a+b; }
3655 enabled thumb && check_cflags -mthumb || check_cflags -marm
3658 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
3660 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
3661 case "${cross_prefix:-$cc}" in
3662 *hardfloat*) enable vfp_args; fpabi=vfp ;;
3663 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
3664 __asm__ (".eabi_attribute 28, 1");
3665 int main(void) { return 0; }
3668 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
3671 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
3672 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
3673 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
3674 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
3675 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
3676 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
3678 [ $target_os = linux ] ||
3679 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
3682 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
3683 check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
3685 enabled_all armv6t2 shared !pic && enable_pic
3687 elif enabled mips; then
3689 check_inline_asm loongson '"dmult.g $1, $2, $3"'
3690 enabled mips32r2 && add_cflags "-mips32r2" && add_asflags "-mips32r2" &&
3691 check_inline_asm mips32r2 '"rotr $t0, $t1, 1"'
3692 enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" &&
3693 check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"'
3694 enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" &&
3695 check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"'
3696 enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" &&
3697 check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"'
3699 elif enabled parisc; then
3701 if enabled gcc; then
3702 case $($cc -dumpversion) in
3703 4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;;
3707 elif enabled ppc; then
3709 enable local_aligned_8 local_aligned_16
3711 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
3712 check_inline_asm ibm_asm '"add 0, 0, 0"'
3713 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
3714 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
3716 # AltiVec flags: The FSF version of GCC differs from the Apple version
3717 if enabled altivec; then
3719 check_cflags -maltivec -mabi=altivec &&
3720 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
3721 check_cflags -faltivec
3723 # check if our compiler supports Motorola AltiVec C API
3724 check_cc <<EOF || disable altivec
3727 vector signed int v1 = (vector signed int) { 0 };
3728 vector signed int v2 = (vector signed int) { 1 };
3729 v1 = vec_add(v1, v2);
3734 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
3737 elif enabled sparc; then
3739 enabled vis && check_inline_asm vis '"pdist %f0, %f0, %f0"'
3741 elif enabled x86; then
3743 check_builtin rdtsc intrin.h "__rdtsc()"
3744 check_builtin mm_empty mmintrin.h "_mm_empty()"
3746 enable local_aligned_8 local_aligned_16
3748 # check whether EBP is available on x86
3749 # As 'i' is stored on the stack, this program will crash
3750 # if the base pointer is used to access it because the
3751 # base pointer is cleared in the inline assembly code.
3752 check_exec_crash <<EOF && enable ebp_available
3754 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
3758 # check whether EBX is available on x86
3759 check_inline_asm ebx_available '""::"b"(0)' &&
3760 check_inline_asm ebx_available '"":::"%ebx"'
3762 # check whether xmm clobbers are supported
3763 check_inline_asm xmm_clobbers '"":::"%xmm0"'
3765 # check whether binutils is new enough to compile SSSE3/MMXEXT
3766 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
3767 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
3769 if ! disabled_any asm mmx yasm; then
3770 if check_cmd $yasmexe --version; then
3771 enabled x86_64 && yasm_extra="-m amd64"
3772 yasm_debug="-g dwarf2"
3773 elif check_cmd nasm -v; then
3775 yasm_debug="-g -F dwarf"
3776 enabled x86_64 && test "$objformat" = elf && objformat=elf64
3779 YASMFLAGS="-f $objformat $yasm_extra"
3780 enabled pic && append YASMFLAGS "-DPIC"
3781 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
3782 case "$objformat" in
3783 elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
3786 check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
3787 die "yasm not found, use --disable-yasm for a crippled build"
3788 check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx_external
3789 check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
3790 check_yasm "CPU amdnop" && enable cpunop
3794 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
3801 if enabled asm; then
3803 check_as <<EOF && enable gnu_as || \
3804 $nogas "GNU assembler not found, install gas-preprocessor"
3812 check_ldflags -Wl,--as-needed
3814 if check_func dlopen; then
3816 elif check_func dlopen -ldl; then
3820 if ! disabled network; then
3821 check_type "sys/types.h sys/socket.h" socklen_t
3822 check_type netdb.h "struct addrinfo"
3823 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
3824 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
3825 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
3826 check_type netinet/in.h "struct sockaddr_in6"
3827 check_type poll.h "struct pollfd"
3828 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
3829 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
3830 check_type netinet/sctp.h "struct sctp_event_subscribe"
3831 check_func getaddrinfo $network_extralibs
3832 check_func getservbyport $network_extralibs
3833 # Prefer arpa/inet.h over winsock2
3834 if check_header arpa/inet.h ; then
3835 check_func closesocket
3836 elif check_header winsock2.h ; then
3837 check_func_headers winsock2.h closesocket -lws2 &&
3838 network_extralibs="-lws2" ||
3839 { check_func_headers winsock2.h closesocket -lws2_32 &&
3840 network_extralibs="-lws2_32"; }
3841 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
3842 check_type ws2tcpip.h socklen_t
3843 check_type ws2tcpip.h "struct addrinfo"
3844 check_type ws2tcpip.h "struct group_source_req"
3845 check_type ws2tcpip.h "struct ip_mreq_source"
3846 check_type ws2tcpip.h "struct ipv6_mreq"
3847 check_type winsock2.h "struct pollfd"
3848 check_type ws2tcpip.h "struct sockaddr_in6"
3849 check_type ws2tcpip.h "struct sockaddr_storage"
3850 check_struct winsock2.h "struct sockaddr" sa_len
3856 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
3857 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
3860 check_func clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; }
3863 check_func gethrtime
3865 check_func getrusage
3866 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
3867 check_func gettimeofday
3868 check_func inet_aton $network_extralibs
3870 check_func localtime_r
3871 check_func ${malloc_prefix}memalign && enable memalign
3875 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
3876 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
3877 check_func setrlimit
3878 check_func strerror_r
3879 check_func sched_getaffinity
3880 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
3881 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
3882 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
3883 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
3887 check_func_headers conio.h kbhit
3888 check_func_headers windows.h PeekNamedPipe
3889 check_func_headers io.h setmode
3890 check_func_headers lzo/lzo1x.h lzo1x_999_compress
3891 check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
3892 check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
3893 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
3894 check_func_headers windows.h GetProcessAffinityMask
3895 check_func_headers windows.h GetProcessTimes
3896 check_func_headers windows.h GetSystemTimeAsFileTime
3897 check_func_headers windows.h MapViewOfFile
3898 check_func_headers windows.h SetConsoleTextAttribute
3899 check_func_headers windows.h Sleep
3900 check_func_headers windows.h VirtualAlloc
3901 check_func_headers glob.h glob
3903 check_header cl/cl.h
3904 check_header direct.h
3905 check_header dlfcn.h
3907 check_header dxva2api.h -D_WIN32_WINNT=0x0600
3909 check_header libcrystalhd/libcrystalhd_if.h
3910 check_header malloc.h
3912 check_header sys/mman.h
3913 check_header sys/param.h
3914 check_header sys/resource.h
3915 check_header sys/select.h
3916 check_header sys/time.h
3917 check_header termios.h
3918 check_header unistd.h
3919 check_header vdpau/vdpau.h
3920 check_header vdpau/vdpau_x11.h
3921 check_header VideoDecodeAcceleration/VDADecoder.h
3922 check_header windows.h
3923 check_header X11/extensions/XvMClib.h
3924 check_header asm/types.h
3926 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
3927 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
3929 if ! disabled w32threads && ! enabled pthreads; then
3930 check_func_headers "windows.h process.h" _beginthreadex && enable w32threads
3933 # check for some common methods of building with pthread support
3934 # do this before the optional library checks as some of them require pthreads
3935 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
3937 if check_func pthread_create; then
3939 elif check_func pthread_create -pthread; then
3941 add_extralibs -pthread
3942 elif check_func pthread_create -pthreads; then
3943 add_cflags -pthreads
3944 add_extralibs -pthreads
3945 elif check_func pthread_create -lpthreadGC2; then
3946 add_extralibs -lpthreadGC2
3947 elif ! check_lib pthread.h pthread_create -lpthread; then
3952 for thread in $THREADS_LIST; do
3953 if enabled $thread; then
3954 test -n "$thread_type" &&
3955 die "ERROR: Only one thread type must be selected." ||
3956 thread_type="$thread"
3960 if enabled pthreads; then
3961 check_func pthread_cancel
3964 enabled sync_val_compare_and_swap && enable atomics_gcc
3965 enabled machine_rw_barrier && enabled atomic_cas_ptr && enable atomics_suncc
3966 enabled MemoryBarrier && enable atomics_win32
3968 check_lib math.h sin -lm && LIBM="-lm"
3969 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
3970 enabled vaapi && require vaapi va/va.h vaInitialize -lva
3976 for func in $MATH_FUNCS; do
3977 eval check_mathfunc $func \${${func}_args:-1}
3980 # these are off by default, so fail if requested and not available
3981 enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } ||
3982 { check_lib2 "dlfcn.h" dlopen -ldl; } ||
3983 die "ERROR: LoadLibrary/dlopen not found for avisynth"; }
3984 enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
3985 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
3986 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
3987 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
3988 enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
3989 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
3990 enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray
3991 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
3992 { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
3993 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
3994 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
3995 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
3996 enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
3997 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"
3998 enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs
3999 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
4000 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
4001 check_lib "${gsm_hdr}" gsm_create -lgsm && break;
4002 done || die "ERROR: libgsm not found"; }
4003 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
4004 enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
4005 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
4006 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
4007 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
4008 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
4009 enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
4010 enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg ||
4011 check_lib openjpeg.h opj_version -lopenjpeg ||
4012 die "ERROR: libopenjpeg not found"; }
4013 enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
4014 enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new
4015 enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init
4016 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
4017 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
4018 enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_frame
4019 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
4020 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
4021 enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h
4022 media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h
4023 media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static
4024 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
4025 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
4026 { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
4027 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
4028 enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++
4029 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
4030 enabled libvidstab && require_pkg_config vidstab vid.stab/libvidstab.h vsMotionDetectInit
4031 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
4032 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
4033 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
4035 enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
4036 die "ERROR: libvpx decoder version must be >=0.9.1"; }
4037 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 ||
4038 die "ERROR: libvpx encoder version must be >=0.9.7"; }
4039 enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; }
4040 enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } }
4041 enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
4042 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
4043 die "ERROR: libx264 must be installed and version must be >= 0.118."; }
4044 enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
4045 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
4046 enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
4047 check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
4048 die "ERROR: openal not found"; } &&
4049 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
4050 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
4051 enabled opencl && { check_lib2 OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
4052 check_lib2 CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
4053 die "ERROR: opencl not found"; } &&
4054 { check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
4055 check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
4056 die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
4057 enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
4058 check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
4059 check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
4060 die "ERROR: openssl not found"; }
4062 if enabled gnutls; then
4063 { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } ||
4064 { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
4068 if enabled libdc1394; then
4069 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
4070 enable libdc1394_2; } ||
4071 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
4072 enable libdc1394_1; } ||
4073 die "ERROR: No version of libdc1394 found "
4076 SDL_CONFIG="${cross_prefix}sdl-config"
4077 if check_pkg_config sdl SDL_events.h SDL_PollEvent; then
4078 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4079 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4082 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
4083 sdl_cflags=$("${SDL_CONFIG}" --cflags)
4084 sdl_libs=$("${SDL_CONFIG}" --libs)
4085 check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
4086 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4087 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4091 enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
4093 texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
4094 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
4095 perl --version > /dev/null 2>&1 && enable perl || disable perl
4096 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
4097 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
4099 check_header linux/fb.h
4100 check_header linux/videodev.h
4101 check_header linux/videodev2.h
4102 check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
4104 check_header sys/videoio.h
4106 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
4107 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
4108 # w32api 3.12 had it defined wrong
4109 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
4111 check_type "dshow.h" IBaseFilter
4113 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
4114 { check_header dev/bktr/ioctl_meteor.h &&
4115 check_header dev/bktr/ioctl_bt848.h; } ||
4116 { check_header machine/ioctl_meteor.h &&
4117 check_header machine/ioctl_bt848.h; } ||
4118 { check_header dev/video/meteor/ioctl_meteor.h &&
4119 check_header dev/video/bktr/ioctl_bt848.h; } ||
4120 check_header dev/ic/bt8xx.h
4122 check_header sndio.h
4123 if check_struct sys/soundcard.h audio_buf_info bytes; then
4124 enable_safe sys/soundcard.h
4126 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
4127 #include <sys/soundcard.h>
4131 check_header soundcard.h
4133 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
4135 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait &&
4136 check_func jack_port_get_latency_range -ljack
4138 enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
4140 if enabled libcdio; then
4141 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
4145 require X11 X11/Xlib.h XOpenDisplay -lX11 &&
4146 require Xext X11/extensions/XShm.h XShmCreateImage -lXext &&
4147 require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes
4149 if ! disabled vaapi; then
4150 check_lib va/va.h vaInitialize -lva && {
4151 check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
4152 warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
4157 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
4160 # Funny iconv installations are not unusual, so check it after all flags have been set
4161 disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv
4163 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
4164 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"
4166 # add some useful compiler flags if supported
4167 check_cflags -Wdeclaration-after-statement
4169 check_cflags -Wno-parentheses
4170 check_cflags -Wno-switch
4171 check_cflags -Wno-format-zero-length
4172 check_cflags -Wdisabled-optimization
4173 check_cflags -Wpointer-arith
4174 check_cflags -Wredundant-decls
4175 check_cflags -Wno-pointer-sign
4176 check_cflags -Wwrite-strings
4177 check_cflags -Wtype-limits
4178 check_cflags -Wundef
4179 check_cflags -Wmissing-prototypes
4180 check_cflags -Wno-pointer-to-int-cast
4181 check_cflags -Wstrict-prototypes
4182 enabled extra_warnings && check_cflags -Winline
4184 # add some linker flags
4185 check_ldflags -Wl,--warn-common
4186 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
4187 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
4189 enabled xmm_clobber_test &&
4190 check_ldflags -Wl,--wrap,avcodec_open2 \
4191 -Wl,--wrap,avcodec_decode_audio4 \
4192 -Wl,--wrap,avcodec_decode_video2 \
4193 -Wl,--wrap,avcodec_decode_subtitle2 \
4194 -Wl,--wrap,avcodec_encode_audio2 \
4195 -Wl,--wrap,avcodec_encode_video \
4196 -Wl,--wrap,avcodec_encode_subtitle \
4197 -Wl,--wrap,sws_scale ||
4198 disable xmm_clobber_test
4201 if test_ldflags -Wl,--version-script,$TMPV; then
4202 append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
4203 check_cc <<EOF && enable symver_asm_label
4204 void ff_foo(void) __asm__ ("av_foo@VERSION");
4205 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
4207 check_cc <<EOF && enable symver_gnu_asm
4208 __asm__(".symver ff_foo,av_foo@VERSION");
4209 void ff_foo(void) {}
4213 if [ -z "$optflags" ]; then
4214 if enabled small; then
4215 optflags=$cflags_size
4216 elif enabled optimizations; then
4217 optflags=$cflags_speed
4219 optflags=$cflags_noopt
4225 enabled lto && check_ldflags "$@"
4229 if enabled lto; then
4230 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
4232 check_ldflags -flto $cpuflags
4235 check_optflags $optflags
4236 check_optflags -fno-math-errno
4237 check_optflags -fno-signed-zeros
4239 enabled ftrapv && check_cflags -ftrapv
4241 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
4246 if enabled icc; then
4247 # Just warnings, no remarks
4249 # -wd: Disable following warnings
4250 # 144, 167, 556: -Wno-pointer-sign
4251 # 188: enumerated type mixed with another type
4252 # 1292: attribute "foo" ignored
4253 # 1419: external declaration in primary source file
4254 # 10006: ignoring unknown option -fno-signed-zeros
4255 # 10148: ignoring unknown option -Wno-parentheses
4256 # 10156: ignoring option '-W'; no argument required
4257 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156
4258 # 11030: Warning unknown option --as-needed
4259 # 10156: ignoring option '-export'; no argument required
4260 check_ldflags -wd10156,11030
4261 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
4262 enable ebp_available
4263 if enabled x86_32; then
4264 icc_version=$($cc -dumpversion)
4265 test ${icc_version%%.*} -ge 11 &&
4266 check_cflags -falign-stack=maintain-16-byte ||
4267 disable aligned_stack
4269 elif enabled ccc; then
4270 # disable some annoying warnings
4271 add_cflags -msg_disable bitnotint
4272 add_cflags -msg_disable mixfuncvoid
4273 add_cflags -msg_disable nonstandcast
4274 add_cflags -msg_disable unsupieee
4275 elif enabled gcc; then
4276 check_optflags -fno-tree-vectorize
4277 check_cflags -Werror=implicit-function-declaration
4278 check_cflags -Werror=missing-prototypes
4279 check_cflags -Werror=return-type
4280 check_cflags -Werror=vla
4281 elif enabled llvm_gcc; then
4282 check_cflags -mllvm -stack-alignment=16
4283 elif enabled clang; then
4284 check_cflags -mllvm -stack-alignment=16
4285 check_cflags -Qunused-arguments
4286 check_cflags -Werror=implicit-function-declaration
4287 check_cflags -Werror=missing-prototypes
4288 check_cflags -Werror=return-type
4289 elif enabled armcc; then
4290 # 2523: use of inline assembler is deprecated
4291 add_cflags -W${armcc_opt},--diag_suppress=2523
4292 add_cflags -W${armcc_opt},--diag_suppress=1207
4293 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
4294 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
4295 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
4296 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
4297 elif enabled tms470; then
4298 add_cflags -pds=824 -pds=837
4299 elif enabled pathscale; then
4300 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
4301 elif enabled msvc; then
4302 enabled x86_32 && disable aligned_stack
4307 enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
4310 add_cppflags -Dmain=plan9_main
4314 enable frame_thread_encoder
4315 enabled_any $THREADS_LIST && enable threads
4316 enabled_any $ATOMICS_LIST && enable atomics_native
4318 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
4320 check_deps $CONFIG_LIST \
4326 if test $target_os = "haiku"; then
4328 disable posix_memalign
4331 ! enabled_any memalign posix_memalign aligned_malloc &&
4332 enabled_any $need_memalign && enable memalign_hack
4335 # -> enable ${lib}_deps_${dep}
4336 # -> add $dep to ${lib}_deps only once
4340 enabled "${lib}_deps_${dep}" && return 0
4341 enable "${lib}_deps_${dep}"
4342 prepend "${lib}_deps" $dep
4345 # merge deps lib components
4346 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
4351 enabled $comp || continue
4352 eval "dep=\"\$${comp}_deps\""
4359 merge_deps libavfilter $FILTER_LIST
4361 echo "install prefix $prefix"
4362 echo "source path $source_path"
4363 echo "C compiler $cc"
4364 echo "ARCH $arch ($cpu)"
4365 if test "$build_suffix" != ""; then
4366 echo "build suffix $build_suffix"
4368 if test "$progs_suffix" != ""; then
4369 echo "progs suffix $progs_suffix"
4371 if test "$extra_version" != ""; then
4372 echo "version string suffix $extra_version"
4374 echo "big-endian ${bigendian-no}"
4375 echo "runtime cpu detection ${runtime_cpudetect-no}"
4376 if enabled x86; then
4377 echo "${yasmexe} ${yasm-no}"
4378 echo "MMX enabled ${mmx-no}"
4379 echo "MMXEXT enabled ${mmxext-no}"
4380 echo "3DNow! enabled ${amd3dnow-no}"
4381 echo "3DNow! extended enabled ${amd3dnowext-no}"
4382 echo "SSE enabled ${sse-no}"
4383 echo "SSSE3 enabled ${ssse3-no}"
4384 echo "AVX enabled ${avx-no}"
4385 echo "FMA4 enabled ${fma4-no}"
4386 echo "CMOV enabled ${cmov-no}"
4387 echo "CMOV is fast ${fast_cmov-no}"
4388 echo "EBX available ${ebx_available-no}"
4389 echo "EBP available ${ebp_available-no}"
4391 if enabled arm; then
4392 echo "ARMv5TE enabled ${armv5te-no}"
4393 echo "ARMv6 enabled ${armv6-no}"
4394 echo "ARMv6T2 enabled ${armv6t2-no}"
4395 echo "VFP enabled ${vfp-no}"
4396 echo "NEON enabled ${neon-no}"
4397 echo "THUMB enabled ${thumb-no}"
4399 if enabled mips; then
4400 echo "MIPS FPU enabled ${mipsfpu-no}"
4401 echo "MIPS32R2 enabled ${mips32r2-no}"
4402 echo "MIPS DSP R1 enabled ${mipsdspr1-no}"
4403 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
4405 if enabled ppc; then
4406 echo "AltiVec enabled ${altivec-no}"
4407 echo "PPC 4xx optimizations ${ppc4xx-no}"
4408 echo "dcbzl available ${dcbzl-no}"
4410 if enabled sparc; then
4411 echo "VIS enabled ${vis-no}"
4413 echo "debug symbols ${debug-no}"
4414 echo "strip symbols ${stripping-no}"
4415 echo "optimize for size ${small-no}"
4416 echo "optimizations ${optimizations-no}"
4417 echo "static ${static-no}"
4418 echo "shared ${shared-no}"
4419 echo "postprocessing support ${postproc-no}"
4420 echo "new filter support ${avfilter-no}"
4421 echo "network support ${network-no}"
4422 echo "threading support ${thread_type-no}"
4423 echo "safe bitstream reader ${safe_bitstream_reader-no}"
4424 echo "SDL support ${sdl-no}"
4425 echo "opencl enabled ${opencl-no}"
4426 echo "libshine enabled ${libshine-no}"
4427 echo "texi2html enabled ${texi2html-no}"
4428 echo "perl enabled ${perl-no}"
4429 echo "pod2man enabled ${pod2man-no}"
4430 echo "makeinfo enabled ${makeinfo-no}"
4431 test -n "$random_seed" &&
4432 echo "random seed ${random_seed}"
4435 echo "External libraries:"
4436 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
4439 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
4440 echo "Enabled ${type}s:"
4441 eval list=\$$(toupper $type)_LIST
4442 print_enabled '_*' $list | print_3_columns
4446 license="LGPL version 2.1 or later"
4447 if enabled nonfree; then
4448 license="nonfree and unredistributable"
4449 elif enabled gplv3; then
4450 license="GPL version 3 or later"
4451 elif enabled lgplv3; then
4452 license="LGPL version 3 or later"
4453 elif enabled gpl; then
4454 license="GPL version 2 or later"
4457 echo "License: $license"
4459 echo "Creating config.mak, config.h, and doc/config.texi..."
4461 test -e Makefile || $ln_s "$source_path/Makefile" .
4463 enabled stripping || strip="echo skipping strip"
4465 config_files="$TMPH config.mak doc/config.texi"
4467 cat > config.mak <<EOF
4468 # Automatically generated by configure - do not modify!
4469 ifndef FFMPEG_CONFIG_MAK
4471 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
4473 LIBDIR=\$(DESTDIR)$libdir
4474 SHLIBDIR=\$(DESTDIR)$shlibdir
4475 INCDIR=\$(DESTDIR)$incdir
4476 BINDIR=\$(DESTDIR)$bindir
4477 DATADIR=\$(DESTDIR)$datadir
4478 MANDIR=\$(DESTDIR)$mandir
4479 SRC_PATH=$source_path
4480 ifndef MAIN_MAKEFILE
4481 SRC_PATH:=\$(SRC_PATH:.%=..%)
4490 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
4492 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
4518 LDFLAGS-ffserver=$FFSERVERLDFLAGS
4519 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
4520 YASMFLAGS=$YASMFLAGS
4521 BUILDSUF=$build_suffix
4522 PROGSSUF=$progs_suffix
4530 EXTRA_VERSION=$extra_version
4533 CCDEP_FLAGS=$CCDEP_FLAGS
4535 ASDEP_FLAGS=$ASDEP_FLAGS
4536 CC_DEPFLAGS=$CC_DEPFLAGS
4537 AS_DEPFLAGS=$AS_DEPFLAGS
4540 HOSTCFLAGS=$host_cflags
4541 HOSTCPPFLAGS=$host_cppflags
4542 HOSTEXESUF=$HOSTEXESUF
4543 HOSTLDFLAGS=$host_ldflags
4546 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
4547 HOSTCCDEP=$HOSTCCDEP
4548 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
4549 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
4553 TARGET_EXEC=$target_exec
4554 TARGET_PATH=$target_path
4555 LIBS-ffplay=$sdl_libs
4556 CFLAGS-ffplay=$sdl_cflags
4557 ZLIB=$($ldflags_filter -lz)
4558 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
4559 EXTRALIBS=$extralibs
4560 COMPAT_OBJS=$compat_objs
4563 LIBTARGET=${LIBTARGET}
4564 SLIBNAME=${SLIBNAME}
4565 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
4566 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
4567 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
4568 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
4569 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
4570 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
4571 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
4572 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
4573 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
4574 NOREDZONE_FLAGS=$noredzone_flags
4579 name=$(toupper $lcname)
4580 file=$source_path/$lcname/version.h
4581 eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
4582 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
4583 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
4584 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
4585 eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak
4588 map 'get_version $v' $LIBRARY_LIST
4591 /* Automatically generated by configure - do not modify! */
4592 #ifndef FFMPEG_CONFIG_H
4593 #define FFMPEG_CONFIG_H
4594 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
4595 #define FFMPEG_LICENSE "$(c_escape $license)"
4596 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
4597 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
4598 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
4599 #define av_restrict $_restrict
4600 #define EXTERN_PREFIX "${extern_prefix}"
4601 #define EXTERN_ASM ${extern_prefix}
4602 #define SLIBSUF "$SLIBSUF"
4603 #define HAVE_MMX2 HAVE_MMXEXT
4606 test -n "$assert_level" &&
4607 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
4609 test -n "$malloc_prefix" &&
4610 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
4612 if enabled yasm; then
4613 append config_files $TMPASM
4617 if enabled msvc && ! enabled shared; then
4618 echo '#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_strtod")' >> $TMPH
4619 echo '#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_snprintf")' >> $TMPH
4623 echo "@c auto-generated by configure" > doc/config.texi
4625 print_config ARCH_ "$config_files" $ARCH_LIST
4626 print_config HAVE_ "$config_files" $HAVE_LIST
4627 print_config CONFIG_ "$config_files" $CONFIG_LIST \
4631 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
4632 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
4634 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
4635 cp_if_changed $TMPH config.h
4638 enabled yasm && cp_if_changed $TMPASM config.asm
4641 /* Generated by ffconf */
4642 #ifndef AVUTIL_AVCONFIG_H
4643 #define AVUTIL_AVCONFIG_H
4646 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
4648 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
4650 cp_if_changed $TMPH libavutil/avconfig.h
4652 if test -n "$WARNINGS"; then
4653 printf "\n$WARNINGS"
4654 enabled fatal_warnings && exit 1
4657 # build pkg-config files
4659 pkgconfig_generate(){
4661 shortname=${name#lib}${build_suffix}
4666 enabled ${name#lib} || return 0
4668 cat <<EOF > $name/$name${build_suffix}.pc
4670 exec_prefix=\${prefix}
4675 Description: $comment
4677 Requires: $(enabled shared || echo $requires)
4678 Requires.private: $(enabled shared && echo $requires)
4680 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4681 Libs.private: $(enabled shared && echo $libs)
4682 Cflags: -I\${includedir}
4685 mkdir -p doc/examples/pc-uninstalled
4686 includedir=${source_path}
4687 [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
4688 cat <<EOF > doc/examples/pc-uninstalled/$name.pc
4691 libdir=\${pcfiledir}/../../../$name
4692 includedir=${includedir}
4695 Description: $comment
4699 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4700 Cflags: -I\${includedir}
4704 libavfilter_pc_deps="libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4705 enabled libavfilter_deps_avcodec && prepend libavfilter_pc_deps "libavcodec${build_suffix} = $LIBAVCODEC_VERSION,"
4706 enabled libavfilter_deps_avformat && prepend libavfilter_pc_deps "libavformat${build_suffix} = $LIBAVFORMAT_VERSION,"
4707 enabled libavfilter_deps_avresample && prepend libavfilter_pc_deps "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION,"
4708 enabled libavfilter_deps_swscale && prepend libavfilter_pc_deps "libswscale${build_suffix} = $LIBSWSCALE_VERSION,"
4709 enabled libavfilter_deps_swresample && prepend libavfilter_pc_deps "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION,"
4710 enabled libavfilter_deps_postproc && prepend libavfilter_pc_deps "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION,"
4711 libavfilter_pc_deps=${libavfilter_pc_deps%, }
4713 libavdevice_pc_deps="libavformat${build_suffix} = $LIBAVFORMAT_VERSION"
4714 enabled lavfi_indev && prepend libavdevice_pc_deps "libavfilter${build_suffix} = $LIBAVFILTER_VERSION,"
4716 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
4717 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4718 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION"
4719 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$libavdevice_pc_deps"
4720 pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$libavfilter_pc_deps"
4721 pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4722 pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4723 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4724 pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4726 fix_ffmpeg_remote(){
4729 fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq)
4730 if [ "$fixme_remote" != "" ]; then
4732 Outdated domain in git config, the official domain for ffmpeg git is since
4733 November 2011, source.ffmpeg.org, both the old and the new point to the same
4734 repository and server. To update it enter the following commands:
4736 for remote in $fixme_remote; do
4737 echolog "git remote set-url $remote $git_remote_to"
4742 if test -f "$source_path/.git/config"; then
4743 remote_from=git.videolan.org
4744 remote_to=source.ffmpeg.org
4745 fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg
4746 fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg