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 --disable-dxva2 disable DXVA2 code [autodetect]
145 --enable-vaapi enable VAAPI code
146 --enable-vda enable VDA code
147 --disable-vdpau disable VDPAU code [autodetect]
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 --disable-bzlib disable bzlib [autodetect]
189 --enable-fontconfig enable fontconfig
190 --enable-frei0r enable frei0r video filtering
191 --enable-gnutls enable gnutls [no]
192 --disable-iconv disable 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 --disable-zlib disable 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
1423 dev_bktr_ioctl_bt848_h
1424 dev_bktr_ioctl_meteor_h
1426 dev_video_bktr_ioctl_bt848_h
1427 dev_video_meteor_ioctl_meteor_h
1443 GetProcessAffinityMask
1444 GetProcessMemoryInfo
1446 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="fast_cmov i686"
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="aformat_filter anull_filter atrim_filter format_filter
2183 setpts_filter trim_filter"
2184 ffplay_deps="avcodec avformat swscale swresample sdl"
2185 ffplay_select="rdft crop_filter"
2186 ffprobe_deps="avcodec avformat"
2187 ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
2188 ffserver_extralibs='$ldl'
2191 podpages_deps="perl"
2192 manpages_deps="perl pod2man"
2193 htmlpages_deps="texi2html"
2194 txtpages_deps="makeinfo"
2195 doc_deps_any="manpages htmlpages podpages txtpages"
2197 # default parameters
2199 logfile="config.log"
2201 # installation paths
2202 prefix_default="/usr/local"
2203 bindir_default='${prefix}/bin'
2204 datadir_default='${prefix}/share/ffmpeg'
2205 incdir_default='${prefix}/include'
2206 libdir_default='${prefix}/lib'
2207 mandir_default='${prefix}/share/man'
2208 shlibdir_default="$libdir_default"
2214 host_cc_default="gcc"
2220 pkg_config_default=pkg-config
2222 strip_default="strip"
2223 yasmexe_default="yasm"
2228 arch_default=$(uname -m)
2232 target_os_default=$(tolower $(uname -s))
2233 host_os=$target_os_default
2235 # configurable options
2236 enable $PROGRAM_LIST
2237 enable $DOCUMENT_LIST
2238 enable $(filter_out avresample $LIBRARY_LIST)
2244 enable optimizations
2245 enable runtime_cpudetect
2246 enable safe_bitstream_reader
2248 enable swscale_alpha
2250 # By default, enable only those hwaccels that have no external dependencies.
2254 SHFLAGS='-shared -Wl,-soname,$$(@F)'
2255 FFSERVERLDFLAGS=-Wl,-E
2258 FULLNAME='$(NAME)$(BUILDSUF)'
2259 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
2262 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
2263 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
2264 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
2265 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2266 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
2267 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2287 host_cflags='-O3 -g'
2288 host_cppflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600'
2290 host_cflags_filter=echo
2291 host_ldflags_filter=echo
2293 target_path='$(CURDIR)'
2295 # since the object filename is not given with the -MM flag, the compiler
2296 # is only able to print the basename, and we must add the path ourselves
2297 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
2301 if test -f configure; then
2304 source_path=$(cd $(dirname "$0"); pwd)
2305 echo "$source_path" | grep -q '[[:blank:]]' &&
2306 die "Out of tree builds are impossible with whitespace in source path."
2307 test -e "$source_path/config.h" &&
2308 die "Out of tree builds are impossible with config.h in source dir."
2315 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
2321 file=$source_path/$3
2322 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
2325 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
2326 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
2327 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
2328 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
2329 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c)
2330 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
2331 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
2332 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
2333 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
2334 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
2335 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
2351 for n in $COMPONENT_LIST; do
2352 v=$(toupper ${n%s})_LIST
2354 eval ${n}_if_any="\$$v"
2357 enable $ARCH_EXT_LIST
2360 echo "Unknown option \"$1\"."
2361 echo "See $0 --help for available options."
2366 cat | tr ' ' '\n' | sort | pr -r -3 -t
2372 echo $* | sed s/$suffix//g | print_3_columns
2384 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
2385 echo "prob ${prob:-0.5}"
2393 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
2394 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
2404 add_extralibs $optval
2407 disable $INDEV_LIST $OUTDEV_LIST
2410 debuglevel="$optval"
2413 disable $PROGRAM_LIST
2415 --disable-everything)
2416 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2419 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2420 disable $LIBRARY_LIST $PROGRAM_LIST doc
2422 --enable-random|--disable-random)
2423 action=${opt%%-random}
2424 do_random ${action#--} $COMPONENT_LIST
2426 --enable-random=*|--disable-random=*)
2427 action=${opt%%-random=*}
2428 do_random ${action#--} $optval
2430 --enable-*=*|--disable-*=*)
2431 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
2432 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
2433 eval list=\$$(toupper $thing)_LIST
2434 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
2435 list=$(filter "$name" $list)
2436 [ "$list" = "" ] && warn "Option $opt did not match anything"
2439 --enable-?*|--disable-?*)
2440 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
2441 if is_in $option $COMPONENT_LIST; then
2442 test $action = disable && action=unset
2443 eval $action \$$(toupper ${option%s})_LIST
2444 elif is_in $option $CMDLINE_SELECT; then
2451 NAME="${opt#--list-}"
2452 is_in $NAME $COMPONENT_LIST || die_unknown $opt
2454 eval show_list $NAME \$$(toupper $NAME)_LIST
2456 --help|-h) show_help
2458 --fatal-warnings) enable fatal_warnings
2461 optname="${opt%%=*}"
2462 optname="${optname#--}"
2463 optname=$(echo "$optname" | sed 's/-/_/g')
2464 if is_in $optname $CMDLINE_SET; then
2465 eval $optname='$optval'
2466 elif is_in $optname $CMDLINE_APPEND; then
2467 append $optname "$optval"
2475 disabled logging && logfile=/dev/null
2477 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
2480 test -n "$cross_prefix" && enable cross_compile
2482 if enabled cross_compile; then
2483 test -n "$arch" && test -n "$target_os" ||
2484 die "Must specify target arch and OS when cross-compiling"
2487 ar_default="${cross_prefix}${ar_default}"
2488 cc_default="${cross_prefix}${cc_default}"
2489 cxx_default="${cross_prefix}${cxx_default}"
2490 nm_default="${cross_prefix}${nm_default}"
2491 pkg_config_default="${cross_prefix}${pkg_config_default}"
2492 ranlib="${cross_prefix}${ranlib}"
2493 strip_default="${cross_prefix}${strip_default}"
2495 sysinclude_default="${sysroot}/usr/include"
2497 test -n "$valgrind" && toolchain="valgrind-memcheck"
2499 case "$toolchain" in
2502 add_cflags -fsanitize=address
2503 add_ldflags -fsanitize=address
2507 add_cflags -fsanitize=thread -pie
2508 add_ldflags -fsanitize=thread -pie
2511 target_exec_default=${valgrind:-"valgrind"}
2512 target_exec_args="--error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp"
2515 cc_default="c99wrap cl"
2516 ld_default="c99wrap link"
2517 nm_default="dumpbin -symbols"
2519 target_os_default="win32"
2522 add_cflags -fprofile-arcs -ftest-coverage
2523 add_ldflags -fprofile-arcs -ftest-coverage
2526 die "Unknown toolchain $toolchain"
2530 set_default arch cc cxx pkg_config strip sysinclude target_exec target_os yasmexe
2531 enabled cross_compile || host_cc_default=$cc
2534 if ! $pkg_config --version >/dev/null 2>&1; then
2535 warn "$pkg_config not found, library detection may fail."
2541 mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
2545 EXESUF=$(exesuf $target_os)
2546 HOSTEXESUF=$(exesuf $host_os)
2548 # set temporary file name
2549 : ${TMPDIR:=$TEMPDIR}
2553 if ! check_cmd mktemp -u XXXXXX; then
2554 # simple replacement for missing mktemp
2555 # NOT SAFE FOR GENERAL USE
2557 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
2562 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
2563 (set -C; exec > $tmp) 2>/dev/null ||
2564 die "Unable to create temporary file in $TMPDIR."
2565 append TMPFILES $tmp
2569 trap 'rm -f -- $TMPFILES' EXIT
2574 tmpfile TMPE $EXESUF
2585 # make sure we can execute files in $TMPDIR
2586 cat > $TMPSH 2>> $logfile <<EOF
2589 chmod +x $TMPSH >> $logfile 2>&1
2590 if ! $TMPSH >> $logfile 2>&1; then
2592 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
2593 variable to another directory and make sure that it is not mounted noexec.
2595 die "Sanity test failed."
2601 -std=c99) echo -c99 ;;
2602 -mcpu=*) echo -arch ${flag#*=} ;;
2603 -mieee) echo -ieee ;;
2604 -O*|-fast) echo $flag ;;
2605 -fno-math-errno) echo -assume nomath_errno ;;
2607 -Wall) echo -msg_enable level2 ;;
2608 -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
2609 -Wl,*) echo $flag ;;
2619 -fomit-frame-pointer) echo -Oy ;;
2621 -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
2622 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
2623 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
2629 -fno-signed-zeros) ;;
2631 -lz) echo zlib.lib ;;
2632 -lavifil32) echo vfw32.lib ;;
2633 -lavicap32) echo vfw32.lib user32.lib ;;
2634 -l*) echo ${flag#-l}.lib ;;
2643 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
2644 -fomit-frame-pointer) echo -Mnoframe ;;
2655 case "${flag#*=}" in
2656 native) echo -xtarget=native ;;
2657 v9|niagara) echo -xarch=sparc ;;
2658 ultrasparc) echo -xarch=sparcvis ;;
2659 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
2660 i586|pentium) echo -xchip=pentium ;;
2661 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
2662 pentium3*|c3-2) echo -xtarget=pentium3 ;;
2663 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
2664 pentium4*) echo -xtarget=pentium4 ;;
2665 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
2666 *-sse3) echo -xarch=sse3 ;;
2667 core2) echo -xarch=ssse3 -xchip=core2 ;;
2668 corei7) echo -xarch=sse4_2 -xchip=nehalem ;;
2669 corei7-avx) echo -xarch=avx -xchip=sandybridge ;;
2670 amdfam10|barcelona) echo -xtarget=barcelona ;;
2671 bdver*) echo -xarch=avx ;;
2672 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
2673 k8|opteron|athlon64|athlon-fx)
2674 echo -xarch=sse2a ;;
2675 athlon*) echo -xarch=pentium_proa ;;
2678 -std=c99) echo -xc99 ;;
2679 -fomit-frame-pointer) echo -xregs=frameptr ;;
2680 -fPIC) echo -KPIC -xcode=pic32 ;;
2681 -W*,*) echo $flag ;;
2682 -f*-*|-W*|-mimpure-text) ;;
2693 case "${flag#*=}" in
2694 armv7-a|cortex-a*) echo -mv=7a8 ;;
2695 armv7-r|cortex-r*) echo -mv=7r4 ;;
2696 armv7-m|cortex-m*) echo -mv=7m3 ;;
2697 armv6*|arm11*) echo -mv=6 ;;
2698 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
2700 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
2703 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
2704 -mfpu=vfp) echo --float_support=vfpv2 ;;
2705 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
2706 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
2707 -msoft-float) echo --float_support=vfplib ;;
2708 -O[0-3]|-mf=*) echo $flag ;;
2710 -pds=*) echo $flag ;;
2711 -D*|-I*) echo $flag ;;
2712 --gcc|--abi=*) echo $flag ;;
2722 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
2723 unset _ld_o _ldflags _ld_lib _ld_path
2724 unset _depflags _DEPCMD _DEPFLAGS
2727 if $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
2729 gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)')
2730 _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver"
2731 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2734 elif $_cc -v 2>&1 | grep -qi ^gcc; then
2736 gcc_version=$($_cc --version | head -n1)
2737 gcc_basever=$($_cc -dumpversion)
2738 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
2739 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
2740 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
2741 if ! $_cc -dumpversion | grep -q '^2\.'; then
2742 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2746 elif $_cc --version 2>/dev/null | grep -q ^icc; then
2748 _ident=$($_cc --version | head -n1)
2753 elif $_cc -v 2>&1 | grep -q xlc; then
2755 _ident=$($_cc -qversion 2>/dev/null | head -n1)
2757 _cflags_size='-O5 -qcompact'
2758 elif $_cc -V 2>/dev/null | grep -q Compaq; then
2760 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
2762 _cflags_speed='-fast'
2764 _flags_filter=ccc_flags
2765 elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
2766 test -d "$sysroot" || die "No valid sysroot specified."
2768 _ident=$($_cc --vsn | head -n1)
2769 armcc_conf="$PWD/armcc.conf"
2770 $_cc --arm_linux_configure \
2771 --arm_linux_config_file="$armcc_conf" \
2772 --configure_sysroot="$sysroot" \
2773 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
2774 die "Error creating armcc configuration file."
2775 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
2776 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
2777 as_default="${cross_prefix}gcc"
2781 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
2783 _ident=$($_cc -version | head -n1 | tr -s ' ')
2784 _flags='--gcc --abi=eabi -me'
2787 _depflags='-ppa -ppd=$(@:.o=.d)'
2788 _cflags_speed='-O3 -mf=5'
2789 _cflags_size='-O3 -mf=2'
2790 _flags_filter=tms470_flags
2791 elif $_cc -v 2>&1 | grep -q clang; then
2793 _ident=$($_cc --version | head -n1)
2797 elif $_cc -V 2>&1 | grep -q Sun; then
2799 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
2800 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2801 _DEPFLAGS='-xM1 -xc99'
2804 _cflags_size='-O5 -xspace'
2805 _flags_filter=suncc_flags
2806 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; 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'
2813 elif $_cc -v 2>&1 | grep -q Open64; then
2815 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2816 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2819 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
2820 elif $_cc -V 2>&1 | grep -q Portland; then
2822 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
2823 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
2824 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
2825 _cflags_size="-O2 -Munroll=c:1 $opt_common"
2827 _flags_filter=pgi_flags
2828 elif $_cc 2>&1 | grep -q Microsoft; then
2830 _ident=$($cc 2>&1 | head -n1)
2831 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
2832 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
2835 # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it
2836 if $_cc 2>&1 | grep -q Linker; then
2843 _flags_filter=msvc_flags
2845 _ld_path='-libpath:'
2847 _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64'
2848 if [ $pfx = hostcc ]; then
2849 append _cflags -Dsnprintf=_snprintf
2854 eval ${pfx}_type=\$_type
2855 eval ${pfx}_ident=\$_ident
2859 eval ${1}_C=\${_cc_c-\${${1}_C}}
2860 eval ${1}_E=\${_cc_e-\${${1}_E}}
2861 eval ${1}_O=\${_cc_o-\${${1}_O}}
2863 if [ -n "$_depflags" ]; then
2864 eval ${1}_DEPFLAGS=\$_depflags
2866 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
2867 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
2868 eval DEP${1}FLAGS=\$_flags
2873 cflags_filter=$_flags_filter
2874 cflags_speed=$_cflags_speed
2875 cflags_size=$_cflags_size
2876 cflags_noopt=$_cflags_noopt
2877 add_cflags $_flags $_cflags
2878 cc_ldflags=$_ldflags
2881 probe_cc hostcc "$host_cc"
2882 host_cflags_filter=$_flags_filter
2883 add_host_cflags $_flags $_cflags
2886 test -n "$cc_type" && enable $cc_type ||
2887 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
2889 : ${as_default:=$cc}
2890 : ${dep_cc_default:=$cc}
2891 : ${ld_default:=$cc}
2892 : ${host_ld_default:=$host_cc}
2893 set_default ar as dep_cc ld host_ld
2896 asflags_filter=$_flags_filter
2897 add_asflags $_flags $_cflags
2901 ldflags_filter=$_flags_filter
2902 add_ldflags $_flags $_ldflags
2903 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
2905 LD_LIB=${_ld_lib-$LD_LIB}
2906 LD_PATH=${_ld_path-$LD_PATH}
2908 probe_cc hostld "$host_ld"
2909 host_ldflags_filter=$_flags_filter
2910 add_host_ldflags $_flags $_ldflags
2911 HOSTLD_O=${_ld_o-$HOSTLD_O}
2913 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
2914 probe_cc depcc "$dep_cc"
2915 CCDEP=${_DEPCMD:-$DEPCMD}
2916 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
2920 if $ar 2>&1 | grep -q Microsoft; then
2923 elif $ar 2>&1 | grep -q 'Texas Instruments'; then
2931 add_cflags $extra_cflags
2932 add_cxxflags $extra_cxxflags
2933 add_asflags $extra_cflags
2935 if test -n "$sysroot"; then
2938 add_cppflags --sysroot="$sysroot"
2939 add_ldflags --sysroot="$sysroot"
2942 add_cppflags -I"$sysinclude"
2943 add_ldflags --sysroot="$sysroot"
2948 if test "$cpu" = host; then
2949 enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
2954 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
2956 s/.*$1=\\([^ ]*\\).*/\\1/
2961 cpu=$(check_native -march || check_native -mcpu)
2965 test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
2968 # Deal with common $arch aliases
2982 "Power Macintosh"|ppc*|powerpc*)
2997 i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
3002 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
3005 # Add processor-specific flags
3006 if enabled aarch64; then
3010 cpuflags="-march=$cpu"
3013 cpuflags="-mcpu=$cpu"
3017 elif enabled alpha; then
3019 cpuflags="-mcpu=$cpu"
3021 elif enabled arm; then
3024 check_cpp_condition stddef.h \
3025 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
3030 if check_arm_arch 4; then echo armv4;
3031 elif check_arm_arch 4T; then echo armv4t;
3032 elif check_arm_arch 5; then echo armv5;
3033 elif check_arm_arch 5E; then echo armv5e;
3034 elif check_arm_arch 5T; then echo armv5t;
3035 elif check_arm_arch 5TE; then echo armv5te;
3036 elif check_arm_arch 5TEJ; then echo armv5te;
3037 elif check_arm_arch 6; then echo armv6;
3038 elif check_arm_arch 6J; then echo armv6j;
3039 elif check_arm_arch 6K; then echo armv6k;
3040 elif check_arm_arch 6Z; then echo armv6z;
3041 elif check_arm_arch 6ZK; then echo armv6zk;
3042 elif check_arm_arch 6T2; then echo armv6t2;
3043 elif check_arm_arch 7; then echo armv7;
3044 elif check_arm_arch 7A 7_A; then echo armv7-a;
3045 elif check_arm_arch 7R 7_R; then echo armv7-r;
3046 elif check_arm_arch 7M 7_M; then echo armv7-m;
3047 elif check_arm_arch 7EM 7E_M; then echo armv7-m;
3048 elif check_arm_arch 8A 8_A; then echo armv8-a;
3052 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
3056 cpuflags="-march=$cpu"
3057 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
3060 cpuflags="-mcpu=$cpu"
3062 cortex-a*) subarch=armv7a ;;
3063 cortex-r*) subarch=armv7r ;;
3064 cortex-m*) enable thumb; subarch=armv7m ;;
3065 arm11*) subarch=armv6 ;;
3066 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
3067 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
3068 *) subarch=$(probe_arm_arch) ;;
3074 armv5t*) enable fast_clz ;;
3075 armv[6-8]*) enable fast_clz fast_unaligned ;;
3078 elif enabled avr32; then
3083 cpuflags="-mpart=$cpu"
3087 cpuflags="-march=$cpu"
3091 cpuflags="-mcpu=$cpu"
3095 cpuflags="-march=$cpu"
3099 elif enabled bfin; then
3101 cpuflags="-mcpu=$cpu"
3103 elif enabled mips; then
3105 cpuflags="-march=$cpu"
3121 24kef*|34kf*|1004kf*)
3129 elif enabled ppc; then
3131 case $(tolower $cpu) in
3132 601|ppc601|powerpc601)
3133 cpuflags="-mcpu=601"
3136 603*|ppc603*|powerpc603*)
3137 cpuflags="-mcpu=603"
3140 604*|ppc604*|powerpc604*)
3141 cpuflags="-mcpu=604"
3144 g3|75*|ppc75*|powerpc75*)
3145 cpuflags="-mcpu=750"
3148 g4|745*|ppc745*|powerpc745*)
3149 cpuflags="-mcpu=7450"
3151 74*|ppc74*|powerpc74*)
3152 cpuflags="-mcpu=7400"
3154 g5|970|ppc970|powerpc970)
3155 cpuflags="-mcpu=970"
3158 cpuflags="-mcpu=$cpu"
3161 cpuflags="-mcpu=cell"
3165 cpuflags="-mcpu=e500mc"
3169 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
3173 cpuflags="-mcpu=8540 -mhard-float"
3178 elif enabled sparc; then
3181 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
3182 cpuflags="-mcpu=$cpu"
3185 ultrasparc*|niagara[234])
3186 cpuflags="-mcpu=$cpu"
3190 elif enabled x86; then
3194 cpuflags="-march=$cpu"
3197 # targets that do NOT support nopl and conditional mov (cmov)
3198 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
3199 cpuflags="-march=$cpu"
3202 # targets that do support nopl and conditional mov (cmov)
3203 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*)
3204 cpuflags="-march=$cpu"
3208 # targets that do support conditional mov but on which it's slow
3209 pentium4|pentium4m|prescott|nocona)
3210 cpuflags="-march=$cpu"
3218 if [ "$cpu" != generic ]; then
3219 add_cflags $cpuflags
3220 add_asflags $cpuflags
3223 # compiler sanity check
3225 int main(void){ return 0; }
3227 if test "$?" != 0; then
3228 echo "$cc is unable to create an executable file."
3229 if test -z "$cross_prefix" && ! enabled cross_compile ; then
3230 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
3231 echo "Only do this if you know what cross compiling means."
3233 die "C compiler test failed."
3236 add_cppflags -D_ISOC99_SOURCE
3237 add_cxxflags -D__STDC_CONSTANT_MACROS
3238 check_cflags -std=c99
3239 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
3242 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
3246 check_host_cflags -std=c99
3247 check_host_cflags -Wall
3253 check_code cc "" "int test[2*($expr) - 1]" &&
3254 subarch=$arch64 || subarch=$arch32
3262 check_64bit mips mips64 '_MIPS_SIM > 1'
3266 check_64bit parisc parisc64 'sizeof(void *) > 4'
3270 check_64bit ppc ppc64 'sizeof(void *) > 4'
3274 check_64bit sparc sparc64 'sizeof(void *) > 4'
3278 check_64bit x86_32 x86_64 'sizeof(void *) > 4'
3279 if test "$subarch" = "x86_64"; then
3284 check_cc <<EOF && subarch="ppc64"
3285 int test[(int)sizeof(char*) - 7];
3291 enabled spic && enable_weak pic
3296 prefix_default="/boot/common"
3297 network_extralibs="-lnetwork"
3302 SHFLAGS='-shared -Wl,-h,$$(@F)'
3303 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
3304 network_extralibs="-lsocket -lnsl"
3305 add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
3306 # When using suncc to build, the Solaris linker will mark
3307 # an executable with each instruction set encountered by
3308 # the Solaris assembler. As our libraries contain their own
3309 # guards for processor-specific code, instead suppress
3310 # generation of the HWCAPS ELF section on Solaris x86 only.
3311 enabled_all suncc x86 && echo "hwcap_1 = OVERRIDE;" > mapfile && add_ldflags -Wl,-M,mapfile
3312 nm_default='nm -P -g'
3316 oss_indev_extralibs="-lossaudio"
3317 oss_outdev_extralibs="-lossaudio"
3318 enabled gcc || check_ldflags -Wl,-zmuldefs
3323 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
3325 oss_indev_extralibs="-lossaudio"
3326 oss_outdev_extralibs="-lossaudio"
3334 add_extralibs -lpoll -lgnugetopt
3338 gas="gas-preprocessor.pl $cc"
3339 enabled ppc && add_asflags -force_cpusubtype_ALL
3340 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
3341 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
3343 add_ldflags -Wl,-dynamic,-search_paths_first
3345 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
3346 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
3347 FFSERVERLDFLAGS=-Wl,-bind_at_load
3349 enabled x86_64 && objformat="macho64"
3350 enabled_any pic shared ||
3351 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
3354 if test $target_os = "mingw32ce"; then
3360 if enabled x86_64; then
3361 LIBTARGET="i386:x86-64"
3362 elif enabled arm; then
3365 shlibdir_default="$bindir_default"
3368 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3369 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3370 dlltool="${cross_prefix}dlltool"
3371 if check_cmd lib.exe -list; then
3372 SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3373 if enabled x86_64; then
3376 elif check_cmd $dlltool --version; then
3377 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)'
3379 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3381 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3382 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3383 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'
3390 if enabled shared; then
3391 # Link to the import library instead of the normal static library
3394 # Cannot build shared and static libraries at the same time with
3398 shlibdir_default="$bindir_default"
3401 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3402 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3403 SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3404 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3406 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3407 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3408 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3416 shlibdir_default="$bindir_default"
3419 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3420 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3421 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3423 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
3424 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
3428 *-dos|freedos|opendos)
3429 network_extralibs="-lsocket"
3432 add_cppflags -U__STRICT_ANSI__
3439 ranlib="echo ignoring ranlib"
3445 add_cppflags -D_GNU_SOURCE
3446 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
3447 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
3452 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3453 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
3454 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
3455 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
3456 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
3457 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
3458 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
3459 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
3460 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
3461 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
3462 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
3464 enable_weak os2threads
3467 add_cppflags -D_BSD_SOURCE
3472 add_cppflags -D_QNX_SOURCE
3473 network_extralibs="-lsocket"
3478 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
3479 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
3480 add_ldflags -Wl,--target1-abs,--no-undefined \
3481 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
3482 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
3483 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
3484 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
3485 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
3488 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
3494 add_cppflags -D_C99_SNPRINTF_EXTENSION \
3495 -D_REENTRANT_SOURCE \
3496 -D_RESEARCH_SOURCE \
3499 add_compat strtod.o strtod=avpriv_strtod
3500 network_extralibs='-lbsd'
3501 exeobjs=compat/plan9/main.o
3508 die "Unknown OS '$target_os'."
3512 # determine libc flavour
3514 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
3515 if check_cpp_condition features.h "defined __UCLIBC__"; then
3517 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3518 elif check_cpp_condition features.h "defined __GLIBC__"; then
3520 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3521 # MinGW headers can be installed on Cygwin, so check for newlib first.
3522 elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
3524 add_cppflags -U__STRICT_ANSI__
3525 elif check_header _mingw.h; then
3527 check_cpp_condition _mingw.h \
3528 "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
3529 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
3530 die "ERROR: MinGW runtime version must be >= 3.15."
3531 add_cppflags -U__STRICT_ANSI__
3532 if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \
3533 __MINGW64_VERSION_MAJOR < 3"; then
3534 add_compat msvcrt/snprintf.o
3535 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
3537 elif check_func_headers stdlib.h _get_doserrno; then
3539 add_compat strtod.o strtod=avpriv_strtod
3540 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
3541 _snprintf=avpriv_snprintf \
3542 vsnprintf=avpriv_vsnprintf
3543 elif check_cpp_condition stddef.h "defined __KLIBC__"; then
3547 test -n "$libc_type" && enable $libc_type
3549 # hacks for compiler/libc/os combinations
3551 if enabled_all tms470 glibc; then
3552 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
3553 add_cppflags -D__USER_LABEL_PREFIX__=
3554 add_cppflags -D__builtin_memset=memset
3555 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
3556 add_cflags -pds=48 # incompatible redefinition of macro
3559 if enabled_all ccc glibc; then
3560 add_ldflags -Wl,-z,now # calls to libots crash without this
3564 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
3567 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate
3569 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
3571 set_default $PATHS_LIST
3574 # we need to build at least one lib type
3575 if ! enabled_any static shared; then
3577 At least one library type must be built.
3578 Specify --enable-static to build the static libraries or --enable-shared to
3579 build the shared libraries as well. To only build the shared libraries specify
3580 --disable-static in addition to --enable-shared.
3585 die_license_disabled() {
3586 enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
3589 die_license_disabled_gpl() {
3590 enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; }
3593 die_license_disabled gpl libcdio
3594 die_license_disabled gpl libutvideo
3595 die_license_disabled gpl libvidstab
3596 die_license_disabled gpl libx264
3597 die_license_disabled gpl libxavs
3598 die_license_disabled gpl libxvid
3599 die_license_disabled gpl x11grab
3601 die_license_disabled nonfree libaacplus
3602 die_license_disabled nonfree libfaac
3603 enabled gpl && die_license_disabled_gpl nonfree libfdk_aac
3604 enabled gpl && die_license_disabled_gpl nonfree openssl
3606 die_license_disabled version3 libopencore_amrnb
3607 die_license_disabled version3 libopencore_amrwb
3608 die_license_disabled version3 libvo_aacenc
3609 die_license_disabled version3 libvo_amrwbenc
3611 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3613 disabled optimizations || check_cflags -fomit-frame-pointer
3616 disabled pic && return
3623 enabled pic && enable_weak_pic
3625 check_cc <<EOF || die "Symbol mangling check failed."
3628 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
3629 extern_prefix=${sym%%ff_extern*}
3631 check_cc <<EOF && enable_weak inline_asm
3632 void foo(void) { __asm__ volatile ("" ::); }
3636 for restrict_keyword in restrict __restrict__ __restrict; do
3637 check_cc <<EOF && _restrict=$restrict_keyword && break
3638 void foo(char * $restrict_keyword p);
3642 check_cc <<EOF && enable attribute_packed
3643 struct { int x; } __attribute__((packed)) x;
3646 check_cc <<EOF && enable attribute_may_alias
3647 union { int x; } __attribute__((may_alias)) x;
3650 check_cc <<EOF || die "endian test failed"
3651 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
3653 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
3655 if enabled alpha; then
3659 elif enabled arm; then
3661 check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
3662 float func(float a, float b){ return a+b; }
3665 enabled thumb && check_cflags -mthumb || check_cflags -marm
3668 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
3670 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
3671 case "${cross_prefix:-$cc}" in
3672 *hardfloat*) enable vfp_args; fpabi=vfp ;;
3673 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
3674 __asm__ (".eabi_attribute 28, 1");
3675 int main(void) { return 0; }
3678 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
3681 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
3682 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
3683 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
3684 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
3685 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
3686 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
3688 [ $target_os = linux ] ||
3689 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
3692 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
3693 check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
3695 enabled_all armv6t2 shared !pic && enable_weak_pic
3697 elif enabled mips; then
3699 check_inline_asm loongson '"dmult.g $1, $2, $3"'
3700 enabled mips32r2 && add_cflags "-mips32r2" && add_asflags "-mips32r2" &&
3701 check_inline_asm mips32r2 '"rotr $t0, $t1, 1"'
3702 enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" &&
3703 check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"'
3704 enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" &&
3705 check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"'
3706 enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" &&
3707 check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"'
3709 elif enabled parisc; then
3711 if enabled gcc; then
3712 case $($cc -dumpversion) in
3713 4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;;
3717 elif enabled ppc; then
3719 enable local_aligned_8 local_aligned_16
3721 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
3722 check_inline_asm ibm_asm '"add 0, 0, 0"'
3723 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
3724 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
3726 # AltiVec flags: The FSF version of GCC differs from the Apple version
3727 if enabled altivec; then
3729 check_cflags -maltivec -mabi=altivec &&
3730 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
3731 check_cflags -faltivec
3733 # check if our compiler supports Motorola AltiVec C API
3734 check_cc <<EOF || disable altivec
3737 vector signed int v1 = (vector signed int) { 0 };
3738 vector signed int v2 = (vector signed int) { 1 };
3739 v1 = vec_add(v1, v2);
3744 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
3747 elif enabled sparc; then
3749 enabled vis && check_inline_asm vis '"pdist %f0, %f0, %f0"'
3751 elif enabled x86; then
3753 check_builtin rdtsc intrin.h "__rdtsc()"
3754 check_builtin mm_empty mmintrin.h "_mm_empty()"
3756 enable local_aligned_8 local_aligned_16
3758 # check whether EBP is available on x86
3759 # As 'i' is stored on the stack, this program will crash
3760 # if the base pointer is used to access it because the
3761 # base pointer is cleared in the inline assembly code.
3762 check_exec_crash <<EOF && enable ebp_available
3764 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
3768 # check whether EBX is available on x86
3769 check_inline_asm ebx_available '""::"b"(0)' &&
3770 check_inline_asm ebx_available '"":::"%ebx"'
3772 # check whether xmm clobbers are supported
3773 check_inline_asm xmm_clobbers '"":::"%xmm0"'
3775 # check whether binutils is new enough to compile SSSE3/MMXEXT
3776 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
3777 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
3779 if ! disabled_any asm mmx yasm; then
3780 if check_cmd $yasmexe --version; then
3781 enabled x86_64 && yasm_extra="-m amd64"
3782 yasm_debug="-g dwarf2"
3783 elif check_cmd nasm -v; then
3785 yasm_debug="-g -F dwarf"
3786 enabled x86_64 && test "$objformat" = elf && objformat=elf64
3789 YASMFLAGS="-f $objformat $yasm_extra"
3790 enabled pic && append YASMFLAGS "-DPIC"
3791 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
3792 case "$objformat" in
3793 elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
3796 check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
3797 die "yasm not found, use --disable-yasm for a crippled build"
3798 check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx_external
3799 check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
3800 check_yasm "CPU amdnop" && enabled i686 && enable cpunop
3804 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
3811 if enabled asm; then
3813 check_as <<EOF && enable gnu_as || \
3814 $nogas "GNU assembler not found, install gas-preprocessor"
3822 check_ldflags -Wl,--as-needed
3824 if check_func dlopen; then
3826 elif check_func dlopen -ldl; then
3830 if ! disabled network; then
3831 check_type "sys/types.h sys/socket.h" socklen_t
3832 check_type netdb.h "struct addrinfo"
3833 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
3834 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
3835 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
3836 check_type netinet/in.h "struct sockaddr_in6"
3837 check_type poll.h "struct pollfd"
3838 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
3839 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
3840 check_type netinet/sctp.h "struct sctp_event_subscribe"
3841 check_func getaddrinfo $network_extralibs
3842 check_func getservbyport $network_extralibs
3843 # Prefer arpa/inet.h over winsock2
3844 if check_header arpa/inet.h ; then
3845 check_func closesocket
3846 elif check_header winsock2.h ; then
3847 check_func_headers winsock2.h closesocket -lws2 &&
3848 network_extralibs="-lws2" ||
3849 { check_func_headers winsock2.h closesocket -lws2_32 &&
3850 network_extralibs="-lws2_32"; }
3851 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
3852 check_type ws2tcpip.h socklen_t
3853 check_type ws2tcpip.h "struct addrinfo"
3854 check_type ws2tcpip.h "struct group_source_req"
3855 check_type ws2tcpip.h "struct ip_mreq_source"
3856 check_type ws2tcpip.h "struct ipv6_mreq"
3857 check_type winsock2.h "struct pollfd"
3858 check_type ws2tcpip.h "struct sockaddr_in6"
3859 check_type ws2tcpip.h "struct sockaddr_storage"
3860 check_struct winsock2.h "struct sockaddr" sa_len
3866 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
3867 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
3870 check_func clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; }
3873 check_func_headers stdlib.h getenv
3874 check_func gethrtime
3876 check_func getrusage
3877 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
3878 check_func gettimeofday
3879 check_func inet_aton $network_extralibs
3881 check_func localtime_r
3882 check_func ${malloc_prefix}memalign && enable memalign
3886 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
3887 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
3888 check_func setrlimit
3889 check_func strerror_r
3890 check_func sched_getaffinity
3891 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
3892 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
3893 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
3894 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
3898 check_func_headers conio.h kbhit
3899 check_func_headers windows.h PeekNamedPipe
3900 check_func_headers io.h setmode
3901 check_func_headers lzo/lzo1x.h lzo1x_999_compress
3902 check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
3903 check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
3904 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
3905 check_func_headers windows.h GetProcessAffinityMask
3906 check_func_headers windows.h GetProcessTimes
3907 check_func_headers windows.h GetSystemTimeAsFileTime
3908 check_func_headers windows.h MapViewOfFile
3909 check_func_headers windows.h SetConsoleTextAttribute
3910 check_func_headers windows.h Sleep
3911 check_func_headers windows.h VirtualAlloc
3912 check_func_headers glob.h glob
3914 check_header cl/cl.h
3915 check_header direct.h
3916 check_header dlfcn.h
3918 check_header dxva2api.h -D_WIN32_WINNT=0x0600
3920 check_header libcrystalhd/libcrystalhd_if.h
3921 check_header malloc.h
3923 check_header sys/mman.h
3924 check_header sys/param.h
3925 check_header sys/resource.h
3926 check_header sys/select.h
3927 check_header sys/time.h
3928 check_header termios.h
3929 check_header unistd.h
3930 check_header vdpau/vdpau.h
3931 check_header vdpau/vdpau_x11.h
3932 check_header VideoDecodeAcceleration/VDADecoder.h
3933 check_header windows.h
3934 check_header X11/extensions/XvMClib.h
3935 check_header asm/types.h
3937 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
3938 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
3940 if ! disabled w32threads && ! enabled pthreads; then
3941 check_func_headers "windows.h process.h" _beginthreadex && enable w32threads
3944 # check for some common methods of building with pthread support
3945 # do this before the optional library checks as some of them require pthreads
3946 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
3948 if check_func pthread_create; then
3950 elif check_func pthread_create -pthread; then
3952 add_extralibs -pthread
3953 elif check_func pthread_create -pthreads; then
3954 add_cflags -pthreads
3955 add_extralibs -pthreads
3956 elif check_func pthread_create -lpthreadGC2; then
3957 add_extralibs -lpthreadGC2
3958 elif ! check_lib pthread.h pthread_create -lpthread; then
3963 for thread in $THREADS_LIST; do
3964 if enabled $thread; then
3965 test -n "$thread_type" &&
3966 die "ERROR: Only one thread type must be selected." ||
3967 thread_type="$thread"
3971 if enabled pthreads; then
3972 check_func pthread_cancel
3975 enabled sync_val_compare_and_swap && enable atomics_gcc
3976 enabled machine_rw_barrier && enabled atomic_cas_ptr && enable atomics_suncc
3977 enabled MemoryBarrier && enable atomics_win32
3979 check_lib math.h sin -lm && LIBM="-lm"
3980 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
3981 enabled vaapi && require vaapi va/va.h vaInitialize -lva
3987 for func in $MATH_FUNCS; do
3988 eval check_mathfunc $func \${${func}_args:-1}
3991 # these are off by default, so fail if requested and not available
3992 enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } ||
3993 { check_lib2 "dlfcn.h" dlopen -ldl; } ||
3994 die "ERROR: LoadLibrary/dlopen not found for avisynth"; }
3995 enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
3996 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
3997 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
3998 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
3999 enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
4000 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
4001 enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray
4002 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
4003 { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
4004 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
4005 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
4006 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
4007 enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
4008 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"
4009 enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs
4010 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
4011 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
4012 check_lib "${gsm_hdr}" gsm_create -lgsm && break;
4013 done || die "ERROR: libgsm not found"; }
4014 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
4015 enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
4016 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
4017 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
4018 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
4019 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
4020 enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
4021 enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg ||
4022 check_lib openjpeg.h opj_version -lopenjpeg ||
4023 die "ERROR: libopenjpeg not found"; }
4024 enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
4025 enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new
4026 enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init
4027 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
4028 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
4029 enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_frame
4030 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
4031 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
4032 enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h
4033 media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h
4034 media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static
4035 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
4036 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
4037 { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
4038 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
4039 enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++
4040 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
4041 enabled libvidstab && require_pkg_config vidstab vid.stab/libvidstab.h vsMotionDetectInit
4042 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
4043 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
4044 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
4046 enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
4047 die "ERROR: libvpx decoder version must be >=0.9.1"; }
4048 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 ||
4049 die "ERROR: libvpx encoder version must be >=0.9.7"; }
4050 enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; }
4051 enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } }
4052 enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
4053 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
4054 die "ERROR: libx264 must be installed and version must be >= 0.118."; }
4055 enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
4056 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
4057 enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
4058 check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
4059 die "ERROR: openal not found"; } &&
4060 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
4061 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
4062 enabled opencl && { check_lib2 OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
4063 check_lib2 CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
4064 die "ERROR: opencl not found"; } &&
4065 { check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
4066 check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
4067 die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
4068 enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
4069 check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
4070 check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
4071 die "ERROR: openssl not found"; }
4073 if enabled gnutls; then
4074 { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } ||
4075 { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
4079 if enabled libdc1394; then
4080 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
4081 enable libdc1394_2; } ||
4082 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
4083 enable libdc1394_1; } ||
4084 die "ERROR: No version of libdc1394 found "
4087 SDL_CONFIG="${cross_prefix}sdl-config"
4088 if check_pkg_config sdl SDL_events.h SDL_PollEvent; then
4089 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4090 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4093 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
4094 sdl_cflags=$("${SDL_CONFIG}" --cflags)
4095 sdl_libs=$("${SDL_CONFIG}" --libs)
4096 check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
4097 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4098 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4102 enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
4104 texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
4105 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
4106 perl --version > /dev/null 2>&1 && enable perl || disable perl
4107 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
4108 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
4110 check_header linux/fb.h
4111 check_header linux/videodev.h
4112 check_header linux/videodev2.h
4113 check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
4115 check_header sys/videoio.h
4117 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
4118 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
4119 # w32api 3.12 had it defined wrong
4120 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
4122 check_type "dshow.h" IBaseFilter
4124 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
4125 { check_header dev/bktr/ioctl_meteor.h &&
4126 check_header dev/bktr/ioctl_bt848.h; } ||
4127 { check_header machine/ioctl_meteor.h &&
4128 check_header machine/ioctl_bt848.h; } ||
4129 { check_header dev/video/meteor/ioctl_meteor.h &&
4130 check_header dev/video/bktr/ioctl_bt848.h; } ||
4131 check_header dev/ic/bt8xx.h
4133 check_header sndio.h
4134 if check_struct sys/soundcard.h audio_buf_info bytes; then
4135 enable_safe sys/soundcard.h
4137 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
4138 #include <sys/soundcard.h>
4142 check_header soundcard.h
4144 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
4146 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait &&
4147 check_func jack_port_get_latency_range -ljack
4149 enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
4151 if enabled libcdio; then
4152 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
4156 require X11 X11/Xlib.h XOpenDisplay -lX11 &&
4157 require Xext X11/extensions/XShm.h XShmCreateImage -lXext &&
4158 require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes
4160 if ! disabled vaapi; then
4161 check_lib va/va.h vaInitialize -lva && {
4162 check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
4163 warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
4168 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
4171 # Funny iconv installations are not unusual, so check it after all flags have been set
4172 disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv
4174 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
4176 # add some useful compiler flags if supported
4177 check_cflags -Wdeclaration-after-statement
4179 check_cflags -Wno-parentheses
4180 check_cflags -Wno-switch
4181 check_cflags -Wno-format-zero-length
4182 check_cflags -Wdisabled-optimization
4183 check_cflags -Wpointer-arith
4184 check_cflags -Wredundant-decls
4185 check_cflags -Wno-pointer-sign
4186 check_cflags -Wwrite-strings
4187 check_cflags -Wtype-limits
4188 check_cflags -Wundef
4189 check_cflags -Wmissing-prototypes
4190 check_cflags -Wno-pointer-to-int-cast
4191 check_cflags -Wstrict-prototypes
4192 enabled extra_warnings && check_cflags -Winline
4194 # add some linker flags
4195 check_ldflags -Wl,--warn-common
4196 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
4197 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
4199 enabled xmm_clobber_test &&
4200 check_ldflags -Wl,--wrap,avcodec_open2 \
4201 -Wl,--wrap,avcodec_decode_audio4 \
4202 -Wl,--wrap,avcodec_decode_video2 \
4203 -Wl,--wrap,avcodec_decode_subtitle2 \
4204 -Wl,--wrap,avcodec_encode_audio2 \
4205 -Wl,--wrap,avcodec_encode_video \
4206 -Wl,--wrap,avcodec_encode_subtitle \
4207 -Wl,--wrap,sws_scale ||
4208 disable xmm_clobber_test
4211 if test_ldflags -Wl,--version-script,$TMPV; then
4212 append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
4213 check_cc <<EOF && enable symver_asm_label
4214 void ff_foo(void) __asm__ ("av_foo@VERSION");
4215 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
4217 check_cc <<EOF && enable symver_gnu_asm
4218 __asm__(".symver ff_foo,av_foo@VERSION");
4219 void ff_foo(void) {}
4223 if [ -z "$optflags" ]; then
4224 if enabled small; then
4225 optflags=$cflags_size
4226 elif enabled optimizations; then
4227 optflags=$cflags_speed
4229 optflags=$cflags_noopt
4235 enabled lto && check_ldflags "$@"
4239 if enabled lto; then
4240 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
4242 check_ldflags -flto $cpuflags
4245 check_optflags $optflags
4246 check_optflags -fno-math-errno
4247 check_optflags -fno-signed-zeros
4249 enabled ftrapv && check_cflags -ftrapv
4251 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
4256 if enabled icc; then
4257 # Just warnings, no remarks
4259 # -wd: Disable following warnings
4260 # 144, 167, 556: -Wno-pointer-sign
4261 # 188: enumerated type mixed with another type
4262 # 1292: attribute "foo" ignored
4263 # 1419: external declaration in primary source file
4264 # 10006: ignoring unknown option -fno-signed-zeros
4265 # 10148: ignoring unknown option -Wno-parentheses
4266 # 10156: ignoring option '-W'; no argument required
4267 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156
4268 # 11030: Warning unknown option --as-needed
4269 # 10156: ignoring option '-export'; no argument required
4270 check_ldflags -wd10156,11030
4271 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
4272 enable ebp_available
4273 if enabled x86_32; then
4274 icc_version=$($cc -dumpversion)
4275 test ${icc_version%%.*} -ge 11 &&
4276 check_cflags -falign-stack=maintain-16-byte ||
4277 disable aligned_stack
4279 elif enabled ccc; then
4280 # disable some annoying warnings
4281 add_cflags -msg_disable bitnotint
4282 add_cflags -msg_disable mixfuncvoid
4283 add_cflags -msg_disable nonstandcast
4284 add_cflags -msg_disable unsupieee
4285 elif enabled gcc; then
4286 check_optflags -fno-tree-vectorize
4287 check_cflags -Werror=implicit-function-declaration
4288 check_cflags -Werror=missing-prototypes
4289 check_cflags -Werror=return-type
4290 check_cflags -Werror=vla
4291 elif enabled llvm_gcc; then
4292 check_cflags -mllvm -stack-alignment=16
4293 elif enabled clang; then
4294 check_cflags -mllvm -stack-alignment=16
4295 check_cflags -Qunused-arguments
4296 check_cflags -Werror=implicit-function-declaration
4297 check_cflags -Werror=missing-prototypes
4298 check_cflags -Werror=return-type
4299 elif enabled armcc; then
4300 # 2523: use of inline assembler is deprecated
4301 add_cflags -W${armcc_opt},--diag_suppress=2523
4302 add_cflags -W${armcc_opt},--diag_suppress=1207
4303 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
4304 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
4305 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
4306 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
4307 elif enabled tms470; then
4308 add_cflags -pds=824 -pds=837
4309 elif enabled pathscale; then
4310 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
4311 elif enabled msvc; then
4312 enabled x86_32 && disable aligned_stack
4317 enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
4320 add_cppflags -Dmain=plan9_main
4324 enable frame_thread_encoder
4325 enabled_any $THREADS_LIST && enable threads
4326 enabled_any $ATOMICS_LIST && enable atomics_native
4328 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
4330 check_deps $CONFIG_LIST \
4336 if test $target_os = "haiku"; then
4338 disable posix_memalign
4341 ! enabled_any memalign posix_memalign aligned_malloc &&
4342 enabled_any $need_memalign && enable memalign_hack
4345 # -> enable ${lib}_deps_${dep}
4346 # -> add $dep to ${lib}_deps only once
4350 enabled "${lib}_deps_${dep}" && return 0
4351 enable "${lib}_deps_${dep}"
4352 prepend "${lib}_deps" $dep
4355 # merge deps lib components
4356 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
4361 enabled $comp || continue
4362 eval "dep=\"\$${comp}_deps\""
4369 merge_deps libavfilter $FILTER_LIST
4371 echo "install prefix $prefix"
4372 echo "source path $source_path"
4373 echo "C compiler $cc"
4374 echo "ARCH $arch ($cpu)"
4375 if test "$build_suffix" != ""; then
4376 echo "build suffix $build_suffix"
4378 if test "$progs_suffix" != ""; then
4379 echo "progs suffix $progs_suffix"
4381 if test "$extra_version" != ""; then
4382 echo "version string suffix $extra_version"
4384 echo "big-endian ${bigendian-no}"
4385 echo "runtime cpu detection ${runtime_cpudetect-no}"
4386 if enabled x86; then
4387 echo "${yasmexe} ${yasm-no}"
4388 echo "MMX enabled ${mmx-no}"
4389 echo "MMXEXT enabled ${mmxext-no}"
4390 echo "3DNow! enabled ${amd3dnow-no}"
4391 echo "3DNow! extended enabled ${amd3dnowext-no}"
4392 echo "SSE enabled ${sse-no}"
4393 echo "SSSE3 enabled ${ssse3-no}"
4394 echo "AVX enabled ${avx-no}"
4395 echo "FMA4 enabled ${fma4-no}"
4396 echo "i686 features enabled ${i686-no}"
4397 echo "CMOV is fast ${fast_cmov-no}"
4398 echo "EBX available ${ebx_available-no}"
4399 echo "EBP available ${ebp_available-no}"
4401 if enabled arm; then
4402 echo "ARMv5TE enabled ${armv5te-no}"
4403 echo "ARMv6 enabled ${armv6-no}"
4404 echo "ARMv6T2 enabled ${armv6t2-no}"
4405 echo "VFP enabled ${vfp-no}"
4406 echo "NEON enabled ${neon-no}"
4407 echo "THUMB enabled ${thumb-no}"
4409 if enabled mips; then
4410 echo "MIPS FPU enabled ${mipsfpu-no}"
4411 echo "MIPS32R2 enabled ${mips32r2-no}"
4412 echo "MIPS DSP R1 enabled ${mipsdspr1-no}"
4413 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
4415 if enabled ppc; then
4416 echo "AltiVec enabled ${altivec-no}"
4417 echo "PPC 4xx optimizations ${ppc4xx-no}"
4418 echo "dcbzl available ${dcbzl-no}"
4420 if enabled sparc; then
4421 echo "VIS enabled ${vis-no}"
4423 echo "debug symbols ${debug-no}"
4424 echo "strip symbols ${stripping-no}"
4425 echo "optimize for size ${small-no}"
4426 echo "optimizations ${optimizations-no}"
4427 echo "static ${static-no}"
4428 echo "shared ${shared-no}"
4429 echo "postprocessing support ${postproc-no}"
4430 echo "new filter support ${avfilter-no}"
4431 echo "network support ${network-no}"
4432 echo "threading support ${thread_type-no}"
4433 echo "safe bitstream reader ${safe_bitstream_reader-no}"
4434 echo "SDL support ${sdl-no}"
4435 echo "opencl enabled ${opencl-no}"
4436 echo "libshine enabled ${libshine-no}"
4437 echo "texi2html enabled ${texi2html-no}"
4438 echo "perl enabled ${perl-no}"
4439 echo "pod2man enabled ${pod2man-no}"
4440 echo "makeinfo enabled ${makeinfo-no}"
4441 test -n "$random_seed" &&
4442 echo "random seed ${random_seed}"
4445 echo "External libraries:"
4446 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
4449 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
4450 echo "Enabled ${type}s:"
4451 eval list=\$$(toupper $type)_LIST
4452 print_enabled '_*' $list | print_3_columns
4456 license="LGPL version 2.1 or later"
4457 if enabled nonfree; then
4458 license="nonfree and unredistributable"
4459 elif enabled gplv3; then
4460 license="GPL version 3 or later"
4461 elif enabled lgplv3; then
4462 license="LGPL version 3 or later"
4463 elif enabled gpl; then
4464 license="GPL version 2 or later"
4467 echo "License: $license"
4469 echo "Creating config.mak, config.h, and doc/config.texi..."
4471 test -e Makefile || $ln_s "$source_path/Makefile" .
4473 enabled stripping || strip="echo skipping strip"
4475 config_files="$TMPH config.mak doc/config.texi"
4477 cat > config.mak <<EOF
4478 # Automatically generated by configure - do not modify!
4479 ifndef FFMPEG_CONFIG_MAK
4481 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
4483 LIBDIR=\$(DESTDIR)$libdir
4484 SHLIBDIR=\$(DESTDIR)$shlibdir
4485 INCDIR=\$(DESTDIR)$incdir
4486 BINDIR=\$(DESTDIR)$bindir
4487 DATADIR=\$(DESTDIR)$datadir
4488 MANDIR=\$(DESTDIR)$mandir
4489 SRC_PATH=$source_path
4490 ifndef MAIN_MAKEFILE
4491 SRC_PATH:=\$(SRC_PATH:.%=..%)
4500 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
4502 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
4528 LDFLAGS-ffserver=$FFSERVERLDFLAGS
4529 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
4530 YASMFLAGS=$YASMFLAGS
4531 BUILDSUF=$build_suffix
4532 PROGSSUF=$progs_suffix
4540 EXTRA_VERSION=$extra_version
4543 CCDEP_FLAGS=$CCDEP_FLAGS
4545 ASDEP_FLAGS=$ASDEP_FLAGS
4546 CC_DEPFLAGS=$CC_DEPFLAGS
4547 AS_DEPFLAGS=$AS_DEPFLAGS
4550 HOSTCFLAGS=$host_cflags
4551 HOSTCPPFLAGS=$host_cppflags
4552 HOSTEXESUF=$HOSTEXESUF
4553 HOSTLDFLAGS=$host_ldflags
4556 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
4557 HOSTCCDEP=$HOSTCCDEP
4558 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
4559 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
4563 TARGET_EXEC=$target_exec $target_exec_args
4564 TARGET_PATH=$target_path
4565 LIBS-ffplay=$sdl_libs
4566 CFLAGS-ffplay=$sdl_cflags
4567 ZLIB=$($ldflags_filter -lz)
4568 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
4569 EXTRALIBS=$extralibs
4570 COMPAT_OBJS=$compat_objs
4573 LIBTARGET=${LIBTARGET}
4574 SLIBNAME=${SLIBNAME}
4575 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
4576 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
4577 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
4578 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
4579 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
4580 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
4581 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
4582 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
4583 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
4584 NOREDZONE_FLAGS=$noredzone_flags
4589 name=$(toupper $lcname)
4590 file=$source_path/$lcname/version.h
4591 eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
4592 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
4593 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
4594 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
4595 eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak
4598 map 'get_version $v' $LIBRARY_LIST
4601 /* Automatically generated by configure - do not modify! */
4602 #ifndef FFMPEG_CONFIG_H
4603 #define FFMPEG_CONFIG_H
4604 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
4605 #define FFMPEG_LICENSE "$(c_escape $license)"
4606 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
4607 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
4608 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
4609 #define av_restrict $_restrict
4610 #define EXTERN_PREFIX "${extern_prefix}"
4611 #define EXTERN_ASM ${extern_prefix}
4612 #define SLIBSUF "$SLIBSUF"
4613 #define HAVE_MMX2 HAVE_MMXEXT
4616 test -n "$assert_level" &&
4617 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
4619 test -n "$malloc_prefix" &&
4620 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
4622 if enabled yasm; then
4623 append config_files $TMPASM
4627 enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
4631 echo "@c auto-generated by configure" > doc/config.texi
4633 print_config ARCH_ "$config_files" $ARCH_LIST
4634 print_config HAVE_ "$config_files" $HAVE_LIST
4635 print_config CONFIG_ "$config_files" $CONFIG_LIST \
4639 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
4640 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
4642 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
4643 cp_if_changed $TMPH config.h
4646 enabled yasm && cp_if_changed $TMPASM config.asm
4649 /* Generated by ffconf */
4650 #ifndef AVUTIL_AVCONFIG_H
4651 #define AVUTIL_AVCONFIG_H
4654 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
4656 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
4658 cp_if_changed $TMPH libavutil/avconfig.h
4660 if test -n "$WARNINGS"; then
4661 printf "\n$WARNINGS"
4662 enabled fatal_warnings && exit 1
4665 # build pkg-config files
4667 pkgconfig_generate(){
4669 shortname=${name#lib}${build_suffix}
4674 enabled ${name#lib} || return 0
4676 cat <<EOF > $name/$name${build_suffix}.pc
4678 exec_prefix=\${prefix}
4683 Description: $comment
4685 Requires: $(enabled shared || echo $requires)
4686 Requires.private: $(enabled shared && echo $requires)
4688 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4689 Libs.private: $(enabled shared && echo $libs)
4690 Cflags: -I\${includedir}
4693 mkdir -p doc/examples/pc-uninstalled
4694 includedir=${source_path}
4695 [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
4696 cat <<EOF > doc/examples/pc-uninstalled/$name.pc
4699 libdir=\${pcfiledir}/../../../$name
4700 includedir=${includedir}
4703 Description: $comment
4707 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4708 Cflags: -I\${includedir}
4712 lavfi_libs="libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4713 enabled libavfilter_deps_avcodec && prepend lavfi_libs "libavcodec${build_suffix} = $LIBAVCODEC_VERSION,"
4714 enabled libavfilter_deps_avformat && prepend lavfi_libs "libavformat${build_suffix} = $LIBAVFORMAT_VERSION,"
4715 enabled libavfilter_deps_avresample && prepend lavfi_libs "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION,"
4716 enabled libavfilter_deps_swscale && prepend lavfi_libs "libswscale${build_suffix} = $LIBSWSCALE_VERSION,"
4717 enabled libavfilter_deps_swresample && prepend lavfi_libs "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION,"
4718 enabled libavfilter_deps_postproc && prepend lavfi_libs "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION,"
4719 lavfi_libs=${lavfi_libs%, }
4721 lavd_libs="libavformat${build_suffix} = $LIBAVFORMAT_VERSION"
4722 enabled lavfi_indev && prepend lavd_libs "libavfilter${build_suffix} = $LIBAVFILTER_VERSION,"
4724 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
4725 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4726 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION"
4727 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$lavd_libs"
4728 pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs"
4729 pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4730 pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4731 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4732 pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4734 fix_ffmpeg_remote(){
4737 fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq)
4738 if [ "$fixme_remote" != "" ]; then
4740 Outdated domain in git config, the official domain for ffmpeg git is since
4741 November 2011, source.ffmpeg.org, both the old and the new point to the same
4742 repository and server. To update it enter the following commands:
4744 for remote in $fixme_remote; do
4745 echolog "git remote set-url $remote $git_remote_to"
4750 if test -f "$source_path/.git/config"; then
4751 remote_from=git.videolan.org
4752 remote_to=source.ffmpeg.org
4753 fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg
4754 fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg