3 # FFmpeg configure script
5 # Copyright (c) 2000-2002 Fabrice Bellard
6 # Copyright (c) 2005-2008 Diego Biurrun
7 # Copyright (c) 2005-2008 Mans Rullgard
10 # Prevent locale nonsense from breaking basic text processing.
14 # make sure we are running under a compatible shell
15 # try to make this part work with most shells
18 echo "Trying shell $1"
19 type "$1" > /dev/null 2>&1 && exec "$@"
23 (: ${foo%%bar}) 2> /dev/null
26 (: ${foo?}) 2> /dev/null
29 if test "$E1" != 0 || test "$E2" = 0; then
30 echo "Broken shell detected. Trying alternatives."
32 if test "0$FF_CONF_EXEC" -lt 1; then
34 try_exec bash "$0" "$@"
36 if test "0$FF_CONF_EXEC" -lt 2; then
38 try_exec ksh "$0" "$@"
40 if test "0$FF_CONF_EXEC" -lt 3; then
42 try_exec /usr/xpg4/bin/sh "$0" "$@"
44 echo "No compatible shell script interpreter found."
45 echo "This configure script requires a POSIX-compatible shell"
46 echo "such as bash or ksh."
47 echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
48 echo "Instead, install a working POSIX-compatible shell."
49 echo "Disabling this configure test will create a broken FFmpeg."
50 if test "$BASH_VERSION" = '2.04.0(1)-release'; then
51 echo "This bash version ($BASH_VERSION) is broken on your platform."
52 echo "Upgrade to a later version if available."
57 test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH
61 Usage: configure [options]
62 Options: [defaults in brackets after descriptions]
65 --help print this message
66 --list-decoders show all available decoders
67 --list-encoders show all available encoders
68 --list-hwaccels show all available hardware accelerators
69 --list-demuxers show all available demuxers
70 --list-muxers show all available muxers
71 --list-parsers show all available parsers
72 --list-protocols show all available protocols
73 --list-bsfs show all available bitstream filters
74 --list-indevs show all available input devices
75 --list-outdevs show all available output devices
76 --list-filters show all available filters
79 --logfile=FILE log tests and output to FILE [config.log]
80 --disable-logging do not log configure debug information
81 --fatal-warnings fail if any configure warning is generated
82 --prefix=PREFIX install in PREFIX [$prefix]
83 --bindir=DIR install binaries in DIR [PREFIX/bin]
84 --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
85 --libdir=DIR install libs in DIR [PREFIX/lib]
86 --shlibdir=DIR install shared libs in DIR [PREFIX/lib]
87 --incdir=DIR install includes in DIR [PREFIX/include]
88 --mandir=DIR install man page in DIR [PREFIX/share/man]
91 --enable-gpl allow use of GPL code, the resulting libs
92 and binaries will be under GPL [no]
93 --enable-version3 upgrade (L)GPL to version 3 [no]
94 --enable-nonfree allow use of nonfree code, the resulting libs
95 and binaries will be unredistributable [no]
97 Configuration options:
98 --disable-static do not build static libraries [no]
99 --enable-shared build shared libraries [no]
100 --enable-small optimize for size instead of speed
101 --disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary)
102 --enable-gray enable full grayscale support (slower color)
103 --disable-swscale-alpha disable alpha channel support in swscale
104 --disable-all disable building components, libraries and programs
107 --disable-programs do not build command line programs
108 --disable-ffmpeg disable ffmpeg build
109 --disable-ffplay disable ffplay build
110 --disable-ffprobe disable ffprobe build
111 --disable-ffserver disable ffserver build
113 Documentation options:
114 --disable-doc do not build documentation
115 --disable-htmlpages do not build HTML documentation pages
116 --disable-manpages do not build man documentation pages
117 --disable-podpages do not build POD documentation pages
118 --disable-txtpages do not build text documentation pages
121 --disable-avdevice disable libavdevice build
122 --disable-avcodec disable libavcodec build
123 --disable-avformat disable libavformat build
124 --disable-avutil disable libavutil build
125 --disable-swresample disable libswresample build
126 --disable-swscale disable libswscale build
127 --disable-postproc disable libpostproc build
128 --disable-avfilter disable libavfilter build
129 --enable-avresample enable libavresample build [no]
130 --disable-pthreads disable pthreads [auto]
131 --disable-w32threads disable Win32 threads [auto]
132 --disable-os2threads disable OS/2 threads [auto]
133 --disable-network disable network support [no]
134 --disable-dct disable DCT code
135 --disable-dwt disable DWT code
136 --disable-error-resilience disable error resilience code
137 --disable-lsp disable LSP code
138 --disable-lzo disable LZO decoder code
139 --disable-mdct disable MDCT code
140 --disable-rdft disable RDFT code
141 --disable-fft disable FFT code
143 Hardware accelerators:
144 --enable-dxva2 enable DXVA2 code
145 --enable-vaapi enable VAAPI code
146 --enable-vda enable VDA code
147 --enable-vdpau enable VDPAU code
149 Individual component options:
150 --disable-everything disable all components listed below
151 --disable-encoder=NAME disable encoder NAME
152 --enable-encoder=NAME enable encoder NAME
153 --disable-encoders disable all encoders
154 --disable-decoder=NAME disable decoder NAME
155 --enable-decoder=NAME enable decoder NAME
156 --disable-decoders disable all decoders
157 --disable-hwaccel=NAME disable hwaccel NAME
158 --enable-hwaccel=NAME enable hwaccel NAME
159 --disable-hwaccels disable all hwaccels
160 --disable-muxer=NAME disable muxer NAME
161 --enable-muxer=NAME enable muxer NAME
162 --disable-muxers disable all muxers
163 --disable-demuxer=NAME disable demuxer NAME
164 --enable-demuxer=NAME enable demuxer NAME
165 --disable-demuxers disable all demuxers
166 --enable-parser=NAME enable parser NAME
167 --disable-parser=NAME disable parser NAME
168 --disable-parsers disable all parsers
169 --enable-bsf=NAME enable bitstream filter NAME
170 --disable-bsf=NAME disable bitstream filter NAME
171 --disable-bsfs disable all bitstream filters
172 --enable-protocol=NAME enable protocol NAME
173 --disable-protocol=NAME disable protocol NAME
174 --disable-protocols disable all protocols
175 --enable-indev=NAME enable input device NAME
176 --disable-indev=NAME disable input device NAME
177 --disable-indevs disable input devices
178 --enable-outdev=NAME enable output device NAME
179 --disable-outdev=NAME disable output device NAME
180 --disable-outdevs disable output devices
181 --disable-devices disable all devices
182 --enable-filter=NAME enable filter NAME
183 --disable-filter=NAME disable filter NAME
184 --disable-filters disable all filters
186 External library support:
187 --enable-avisynth enable reading of AVISynth script files [no]
188 --enable-bzlib enable bzlib [autodetect]
189 --enable-fontconfig enable fontconfig
190 --enable-frei0r enable frei0r video filtering
191 --enable-gnutls enable gnutls [no]
192 --enable-iconv enable iconv [autodetect]
193 --enable-libaacplus enable AAC+ encoding via libaacplus [no]
194 --enable-libass enable libass subtitles rendering [no]
195 --enable-libbluray enable BluRay reading using libbluray [no]
196 --enable-libcaca enable textual display using libcaca
197 --enable-libcelt enable CELT decoding via libcelt [no]
198 --enable-libcdio enable audio CD grabbing with libcdio
199 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
201 --enable-libfaac enable AAC encoding via libfaac [no]
202 --enable-libfdk-aac enable AAC encoding via libfdk-aac [no]
203 --enable-libflite enable flite (voice synthesis) support via libflite [no]
204 --enable-libfreetype enable libfreetype [no]
205 --enable-libgsm enable GSM de/encoding via libgsm [no]
206 --enable-libiec61883 enable iec61883 via libiec61883 [no]
207 --enable-libilbc enable iLBC de/encoding via libilbc [no]
208 --enable-libmodplug enable ModPlug via libmodplug [no]
209 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
210 --enable-libnut enable NUT (de)muxing via libnut,
211 native (de)muxer exists [no]
212 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
213 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
214 --enable-libopencv enable video filtering via libopencv [no]
215 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
216 --enable-libopus enable Opus decoding via libopus [no]
217 --enable-libpulse enable Pulseaudio input via libpulse [no]
218 --enable-libquvi enable quvi input via libquvi [no]
219 --enable-librtmp enable RTMP[E] support via librtmp [no]
220 --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
221 --enable-libshine enable fixed-point MP3 encoding via libshine [no]
222 --enable-libsoxr enable Include libsoxr resampling [no]
223 --enable-libspeex enable Speex de/encoding via libspeex [no]
224 --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no]
225 --enable-libtheora enable Theora encoding via libtheora [no]
226 --enable-libtwolame enable MP2 encoding via libtwolame [no]
227 --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no]
228 --enable-libv4l2 enable libv4l2/v4l-utils [no]
229 --enable-libvidstab enable video stabilization using vid.stab [no]
230 --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
231 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
232 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
233 native implementation exists [no]
234 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
235 --enable-libx264 enable H.264 encoding via x264 [no]
236 --enable-libxavs enable AVS encoding via xavs [no]
237 --enable-libxvid enable Xvid encoding via xvidcore,
238 native MPEG-4/Xvid encoder exists [no]
239 --enable-openal enable OpenAL 1.1 capture support [no]
240 --enable-opencl enable OpenCL code
241 --enable-openssl enable openssl [no]
242 --enable-x11grab enable X11 grabbing [no]
243 --enable-zlib enable zlib [autodetect]
245 Advanced options (experts only):
246 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
247 --enable-cross-compile assume a cross-compiler is used
248 --sysroot=PATH root of cross-build tree
249 --sysinclude=PATH location of cross-build system headers
250 --target-os=OS compiler targets OS [$target_os]
251 --target-exec=CMD command to run executables on target
252 --target-path=DIR path to view of build directory on target
253 --toolchain=NAME set tool defaults according to NAME
254 --nm=NM use nm tool NM [$nm_default]
255 --ar=AR use archive tool AR [$ar_default]
256 --as=AS use assembler AS [$as_default]
257 --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
258 --cc=CC use C compiler CC [$cc_default]
259 --cxx=CXX use C compiler CXX [$cxx_default]
260 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
261 --ld=LD use linker LD [$ld_default]
262 --host-cc=HOSTCC use host C compiler HOSTCC
263 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
264 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
265 --host-ld=HOSTLD use host linker HOSTLD
266 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
267 --host-libs=HLIBS use libs HLIBS when linking for host
268 --host-os=OS compiler host OS [$target_os]
269 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
270 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
271 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
272 --extra-libs=ELIBS add ELIBS [$ELIBS]
273 --extra-version=STRING version string suffix []
274 --optflags=OPTFLAGS override optimization-related compiler flags
275 --build-suffix=SUFFIX library name suffix []
276 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
277 --progs-suffix=SUFFIX program name suffix []
278 --arch=ARCH select architecture [$arch]
279 --cpu=CPU select the minimum required CPU (affects
280 instruction selection, may crash on older CPUs)
281 --enable-pic build position-independent code
282 --enable-sram allow use of on-chip SRAM
283 --enable-thumb compile for Thumb instruction set
284 --disable-symver disable symbol versioning
285 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
286 --disable-safe-bitstream-reader
287 disable buffer boundary checking in bitreaders
288 (faster, but may crash)
289 --enable-memalign-hack emulate memalign, interferes with memory debuggers
290 --enable-lto use link-time optimization
292 Optimization options (experts only):
293 --disable-asm disable all assembler optimizations
294 --disable-altivec disable AltiVec optimizations
295 --disable-amd3dnow disable 3DNow! optimizations
296 --disable-amd3dnowext disable 3DNow! extended optimizations
297 --disable-mmx disable MMX optimizations
298 --disable-mmxext disable MMXEXT optimizations
299 --disable-sse disable SSE optimizations
300 --disable-sse2 disable SSE2 optimizations
301 --disable-sse3 disable SSE3 optimizations
302 --disable-ssse3 disable SSSE3 optimizations
303 --disable-sse4 disable SSE4 optimizations
304 --disable-sse42 disable SSE4.2 optimizations
305 --disable-avx disable AVX optimizations
306 --disable-fma4 disable FMA4 optimizations
307 --disable-armv5te disable armv5te optimizations
308 --disable-armv6 disable armv6 optimizations
309 --disable-armv6t2 disable armv6t2 optimizations
310 --disable-vfp disable VFP optimizations
311 --disable-neon disable NEON optimizations
312 --disable-vis disable VIS optimizations
313 --disable-inline-asm disable use of inline assembler
314 --disable-yasm disable use of yasm assembler
315 --disable-mips32r2 disable MIPS32R2 optimizations
316 --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations
317 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
318 --disable-mipsfpu disable floating point MIPS optimizations
319 --disable-fast-unaligned consider unaligned accesses slow
321 Developer options (useful when working on FFmpeg itself):
322 --disable-debug disable debugging symbols
323 --enable-debug=LEVEL set the debug level [$debuglevel]
324 --disable-optimizations disable compiler optimizations
325 --enable-extra-warnings enable more compiler warnings
326 --disable-stripping disable stripping of executables and shared libraries
327 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
328 2 causes a slowdown at runtime.
329 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
330 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
331 leaks and errors, using the specified valgrind binary.
332 Cannot be combined with --target-exec
333 --enable-ftrapv Trap arithmetic overflows
334 --samples=PATH location of test samples for FATE, if not set use
335 \$FATE_SAMPLES at make invocation time.
336 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
337 should be used only for debugging purposes)
338 --enable-random randomly enable/disable components
340 --enable-random=LIST randomly enable/disable specific components or
341 --disable-random=LIST component groups. LIST is a comma-separated list
342 of NAME[:PROB] entries where NAME is a component
343 (group) and PROB the probability associated with
345 --random-seed=VALUE seed value for --enable/disable-random
347 NOTE: Object files are built at the place where configure is launched.
355 echo "$@" >> $logfile
360 pr -n -t $1 >> $logfile
371 WARNINGS="${WARNINGS}WARNING: $*\n"
378 If you think configure made a mistake, make sure you are using the latest
379 version from Git. If the latest version fails, report the problem to the
380 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
382 if disabled logging; then
384 Rerun configure with logging enabled (do not use --disable-logging), and
385 include the log this produces with your report.
389 Include the log file "$logfile" produced by configure as this will help
396 # Avoid locale weirdness, besides we really just want to translate ASCII.
398 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
402 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
406 echo "$*" | sed 's/["\\]/\\\0/g'
410 v=$(echo "$1" | sed "s/'/'\\\\''/g")
411 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
416 echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//'
423 eval "case $v in $pat) echo $v ;; esac"
431 eval "case $v in $pat) ;; *) echo $v ;; esac"
438 for v; do eval $m; done
444 for v; do echo ${v}${suffix}; done
459 eval : \${$var:=$value}
464 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
470 eval $(sanitize_var_name "$var")='$*'
474 eval echo \$$(sanitize_var_name "$1")
479 eval level=\${${pvar}_level:=0}
480 eval ${pvar}_${level}="\$$pvar"
481 eval ${pvar}_level=$(($level+1))
487 eval level=\${${pvar}_level:-0}
488 test $level = 0 && continue
489 eval level=$(($level-1))
490 eval $pvar="\${${pvar}_${level}}"
491 eval ${pvar}_level=$level
492 eval unset ${pvar}_${level}
514 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
520 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
526 enabled $var && continue
527 eval sel="\$${var}_select"
528 eval sgs="\$${var}_suggest"
532 enable_deep_weak $sgs
544 disabled $var && continue
553 test "${1#!}" = "$1" && op== || op=!=
554 eval test "x\$${1#!}" $op "xyes"
558 test "${1#!}" = "$1" && op== || op=!=
559 eval test "x\$${1#!}" $op "xno"
564 enabled $opt || return 1
570 disabled $opt || return 1
576 enabled $opt && return 0
582 disabled $opt && return 0
589 eval : \${$opt:=\$${opt}_default}
597 [ $var = $value ] && return 0
605 enabled ${cfg}_checking && die "Circular dependency for $cfg."
606 disabled ${cfg}_checking && continue
607 enable ${cfg}_checking
610 eval dep_all="\$${cfg}_deps"
611 eval dep_any="\$${cfg}_deps_any"
612 eval dep_sel="\$${cfg}_select"
613 eval dep_sgs="\$${cfg}_suggest"
614 eval dep_ifa="\$${cfg}_if"
615 eval dep_ifn="\$${cfg}_if_any"
617 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
618 do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
619 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
621 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
622 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
623 enabled_all $dep_all || disable $cfg
624 enabled_any $dep_any || disable $cfg
625 disabled_any $dep_sel && disable $cfg
627 if enabled $cfg; then
629 enable_deep_weak $dep_sgs
632 disable ${cfg}_checking
641 for cfg in $allopts; do
642 enabled $cfg || continue
643 eval dep_extralibs="\$${cfg}_extralibs"
644 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
652 map 'eval echo "$v \${$v:-no}"' "$@" |
653 awk "BEGIN { split(\"$files\", files) }
655 c = \"$pfx\" toupper(\$1);
661 if (file ~ /\\.h\$/) {
662 printf(\"#define %s %d\\n\", c, v) >>file;
663 } else if (file ~ /\\.asm\$/) {
664 printf(\"%%define %s %d\\n\", c, v) >>file;
665 } else if (file ~ /\\.mak\$/) {
666 n = -v ? \"\" : \"!\";
667 printf(\"%s%s=yes\\n\", n, c) >>file;
668 } else if (file ~ /\\.texi\$/) {
669 pre = -v ? \"\" : \"@c \";
672 gsub(/_/, \"-\", c2);
673 printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
683 enabled $v && printf "%s\n" ${v%$suf};
690 eval "$var=\"\$$var $*\""
696 eval "$var=\"$* \$$var\""
704 append CFLAGS $($cflags_filter "$@")
708 append CXXFLAGS $($cflags_filter "$@")
712 append ASFLAGS $($asflags_filter "$@")
716 append LDFLAGS $($ldflags_filter "$@")
720 prepend extralibs $($ldflags_filter "$@")
724 append host_cppflags "$@"
728 append host_cflags $($host_cflags_filter "$@")
732 append host_ldflags $($host_ldflags_filter "$@")
736 append compat_objs $1
738 map 'add_cppflags -D$v' "$@"
743 "$@" >> $logfile 2>&1
747 eval printf '%s\\n' $CC_O
751 eval printf '%s\\n' $CC_E
758 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
765 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
772 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
776 eval printf '%s\\n' $AS_O
783 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
787 log check_inline_asm "$@"
792 check_cc "$@" <<EOF && enable $name
793 void foo(void){ __asm__ volatile($code); }
799 check_inline_asm ${1}_inline "\"$2\""
800 echo "$2" | check_as && enable ${1}_external || disable ${1}_external
808 check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
812 eval printf '%s\\n' $LD_O
819 flags=$(filter_out '-l*|*.so' $@)
820 libs=$(filter '-l*|*.so' $@)
821 check_$type $($cflags_filter $flags) || return
822 flags=$($ldflags_filter $flags)
823 libs=$($ldflags_filter $libs)
824 check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
834 for hdr in $headers; do
835 echo "#include <$hdr>"
837 echo "int main(void) { $code; return 0; }"
838 } | check_$check "$@"
842 log check_cppflags "$@"
843 check_cc "$@" <<EOF && append CPPFLAGS "$@"
849 log check_cflags "$@"
850 set -- $($cflags_filter "$@")
851 check_cc "$@" <<EOF && append CFLAGS "$@"
857 log check_cxxflags "$@"
858 set -- $($cflags_filter "$@")
859 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
865 log test_ldflags "$@"
866 check_ld "cc" "$@" <<EOF
867 int main(void){ return 0; }
872 log check_ldflags "$@"
873 test_ldflags "$@" && add_ldflags "$@"
877 log check_header "$@"
881 check_cpp "$@" <<EOF && enable_safe $header
892 check_ld "cc" "$@" <<EOF && enable $func
894 int main(void){ $func(); }
899 log check_mathfunc "$@"
903 test $narg = 2 && args="f, g" || args="f"
905 check_ld "cc" "$@" <<EOF && enable $func
907 float foo(float f, float g) { return $func($args); }
908 int main(void){ return (int) foo; }
912 check_func_headers(){
913 log check_func_headers "$@"
918 for hdr in $headers; do
919 echo "#include <$hdr>"
921 for func in $funcs; do
922 echo "long check_$func(void) { return (long) $func; }"
924 echo "int main(void) { return 0; }"
925 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
928 check_class_headers_cpp(){
929 log check_class_headers_cpp "$@"
934 for hdr in $headers; do
935 echo "#include <$hdr>"
937 echo "int main(void) { "
939 for class in $classes; do
944 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
947 check_cpp_condition(){
948 log check_cpp_condition "$@"
955 #error "unsatisfied condition: $condition"
965 check_header $header && check_func $func "$@" && add_extralibs "$@"
973 check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
977 log check_lib_cpp "$@"
981 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
985 log check_pkg_config "$@"
990 $pkg_config --exists $pkg 2>/dev/null || return
991 pkg_cflags=$($pkg_config --cflags $pkg)
992 pkg_libs=$($pkg_config --libs $pkg)
993 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
994 set_safe ${pkg}_cflags $pkg_cflags &&
995 set_safe ${pkg}_libs $pkg_libs
999 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
1005 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1006 # are safe but may not be available everywhere. Thus we use
1007 # raise(SIGTERM) instead. The check is run in a subshell so we
1008 # can redirect the "Terminated" message from the shell. SIGBUS
1009 # is not defined by standard C so it is used conditionally.
1011 (check_exec "$@") >> $logfile 2>&1 <<EOF
1013 static void sighandler(int sig){
1019 int (*func_ptr)(void) = func;
1021 signal(SIGILL, sighandler);
1022 signal(SIGFPE, sighandler);
1023 signal(SIGSEGV, sighandler);
1025 signal(SIGBUS, sighandler);
1037 disable_safe "$type"
1038 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
1042 log check_struct "$@"
1047 disable_safe "${struct}_${member}"
1048 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1049 enable_safe "${struct}_${member}"
1053 log check_builtin "$@"
1059 check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1067 check_lib $header $func "$@" || die "ERROR: $name not found"
1075 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
1083 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1086 require_pkg_config(){
1088 check_pkg_config "$@" || die "ERROR: $pkg not found"
1089 add_cflags $(get_safe ${pkg}_cflags)
1090 add_extralibs $(get_safe ${pkg}_libs)
1094 eval printf '%s\\n' $HOSTCC_O
1098 log check_host_cc "$@"
1101 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1104 check_host_cppflags(){
1105 log check_host_cppflags "$@"
1106 check_host_cc "$@" <<EOF && append host_cppflags "$@"
1111 check_host_cflags(){
1112 log check_host_cflags "$@"
1113 set -- $($host_cflags_filter "$@")
1114 check_host_cc "$@" <<EOF && append host_cflags "$@"
1122 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
1126 cmp -s "$1" "$2" && echo "$2 is unchanged" && return
1127 mkdir -p "$(dirname $2)"
1131 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1132 # system-dependent things.
1148 EXTERNAL_LIBRARY_LIST="
1242 $EXTERNAL_LIBRARY_LIST
1255 incompatible_fork_abi
1266 safe_bitstream_reader
1361 incompatible_fork_abi
1394 $(add_suffix _external $ARCH_EXT_LIST)
1395 $(add_suffix _inline $ARCH_EXT_LIST)
1415 cdio_paranoia_paranoia_h
1424 dev_bktr_ioctl_bt848_h
1425 dev_bktr_ioctl_meteor_h
1427 dev_video_bktr_ioctl_bt848_h
1428 dev_video_meteor_ioctl_meteor_h
1444 GetProcessAffinityMask
1445 GetProcessMemoryInfo
1447 GetSystemTimeAsFileTime
1458 jack_port_get_latency_range
1468 machine_ioctl_bt848_h
1469 machine_ioctl_meteor_h
1482 openjpeg_1_5_openjpeg_h
1493 SetConsoleTextAttribute
1502 struct_group_source_req
1503 struct_ip_mreq_source
1506 struct_rusage_ru_maxrss
1507 struct_sctp_event_subscribe
1509 struct_sockaddr_sa_len
1510 struct_sockaddr_storage
1511 struct_v4l2_frmivalenum_discrete
1514 sync_val_compare_and_swap
1537 # options emitted with CONFIG_ prefix but not available on the command line
1543 frame_thread_encoder
1639 # code dependency declarations
1641 # architecture extensions
1650 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
1653 mips32r2_deps="mips"
1654 mipsdspr1_deps="mips"
1655 mipsdspr2_deps="mips"
1662 x86_64_suggest="cmov fast_cmov"
1665 amd3dnowext_deps="amd3dnow"
1677 mmx_external_deps="yasm"
1678 mmx_inline_deps="inline_asm"
1679 mmx_suggest="mmx_external mmx_inline"
1681 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do
1682 eval dep=\$${ext}_deps
1683 eval ${ext}_external_deps='"${dep}_external"'
1684 eval ${ext}_inline_deps='"${dep}_inline"'
1685 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
1688 aligned_stack_if_any="ppc x86"
1689 fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1690 fast_clz_if_any="alpha avr32 mips ppc x86"
1691 fast_unaligned_if_any="ppc x86"
1693 inline_asm_deps="!tms470"
1694 need_memalign="altivec neon sse"
1696 symver_if_any="symver_asm_label symver_gnu_asm"
1702 error_resilience_select="dsputil"
1703 frame_thread_encoder_deps="encoders threads"
1704 lpc_select="dsputil"
1707 mpegaudio_select="mpegaudiodsp"
1708 mpegaudiodsp_select="dct"
1709 mpegvideo_select="dsputil h264chroma hpeldsp videodsp"
1710 mpegvideoenc_select="mpegvideo"
1712 # decoders / encoders
1713 aac_decoder_select="mdct sinewin"
1714 aac_encoder_select="audio_frame_queue mdct sinewin"
1715 aac_latm_decoder_select="aac_decoder aac_latm_parser"
1716 ac3_decoder_select="mdct ac3dsp ac3_parser dsputil"
1717 ac3_encoder_select="mdct ac3dsp dsputil"
1718 ac3_fixed_encoder_select="mdct ac3dsp dsputil"
1719 alac_encoder_select="lpc"
1720 als_decoder_select="dsputil"
1721 amrnb_decoder_select="lsp"
1722 amrwb_decoder_select="lsp"
1723 amv_decoder_select="dsputil hpeldsp"
1724 amv_encoder_select="aandcttables"
1725 ape_decoder_select="dsputil"
1726 asv1_decoder_select="dsputil"
1727 asv1_encoder_select="dsputil"
1728 asv2_decoder_select="dsputil"
1729 asv2_encoder_select="dsputil"
1730 atrac1_decoder_select="mdct sinewin"
1731 atrac3_decoder_select="mdct"
1732 bink_decoder_select="dsputil hpeldsp"
1733 binkaudio_dct_decoder_select="mdct rdft dct sinewin"
1734 binkaudio_rdft_decoder_select="mdct rdft sinewin"
1735 cavs_decoder_select="dsputil golomb h264chroma videodsp"
1736 cllc_decoder_select="dsputil"
1737 comfortnoise_encoder_select="lpc"
1738 cook_decoder_select="dsputil mdct sinewin"
1739 cscd_decoder_select="lzo"
1740 cscd_decoder_suggest="zlib"
1741 dca_decoder_select="mdct"
1742 dirac_decoder_select="dsputil dwt golomb videodsp"
1743 dnxhd_decoder_select="dsputil"
1744 dnxhd_encoder_select="aandcttables dsputil mpegvideoenc"
1745 dvvideo_decoder_select="dsputil"
1746 dvvideo_encoder_select="dsputil"
1747 dxa_decoder_select="zlib"
1748 eac3_decoder_select="ac3_decoder"
1749 eac3_encoder_select="ac3_encoder"
1750 eamad_decoder_select="aandcttables dsputil mpegvideo"
1751 eatgq_decoder_select="aandcttables"
1752 eatqi_decoder_select="aandcttables error_resilience mpegvideo"
1753 exr_decoder_select="zlib"
1754 ffv1_decoder_select="dsputil golomb rangecoder"
1755 ffv1_encoder_select="dsputil rangecoder"
1756 ffvhuff_decoder_select="dsputil"
1757 ffvhuff_encoder_select="dsputil huffman"
1758 flac_decoder_select="golomb"
1759 flac_encoder_select="dsputil golomb lpc"
1760 flashsv_decoder_select="zlib"
1761 flashsv_encoder_select="zlib"
1762 flashsv2_encoder_select="zlib"
1763 flashsv2_decoder_select="zlib"
1764 flv_decoder_select="h263_decoder"
1765 flv_encoder_select="h263_encoder"
1766 fourxm_decoder_select="dsputil"
1767 fraps_decoder_select="dsputil huffman"
1768 g729_decoder_select="dsputil"
1769 h261_decoder_select="error_resilience mpegvideo"
1770 h261_encoder_select="aandcttables mpegvideoenc"
1771 h263_decoder_select="error_resilience h263_parser mpegvideo"
1772 h263_encoder_select="aandcttables mpegvideoenc"
1773 h263i_decoder_select="h263_decoder"
1774 h263p_encoder_select="h263_encoder"
1775 h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1776 h264_decoder_suggest="error_resilience"
1777 huffyuv_decoder_select="dsputil"
1778 huffyuv_encoder_select="dsputil huffman"
1779 iac_decoder_select="dsputil fft mdct sinewin"
1780 imc_decoder_select="dsputil fft mdct sinewin"
1781 indeo3_decoder_select="hpeldsp"
1782 interplay_video_decoder_select="hpeldsp"
1783 jpegls_decoder_select="dsputil golomb hpeldsp"
1784 jpegls_encoder_select="golomb"
1785 jv_decoder_select="dsputil"
1786 lagarith_decoder_select="dsputil"
1787 ljpeg_encoder_select="aandcttables mpegvideoenc"
1788 loco_decoder_select="golomb"
1789 mdec_decoder_select="dsputil error_resilience mpegvideo"
1790 mimic_decoder_select="dsputil hpeldsp"
1791 mjpeg_decoder_select="dsputil hpeldsp"
1792 mjpegb_decoder_select="dsputil hpeldsp"
1793 mjpeg_encoder_select="aandcttables dsputil mpegvideoenc"
1794 mlp_decoder_select="dsputil mlp_parser"
1795 motionpixels_decoder_select="dsputil"
1796 mp1_decoder_select="mpegaudio"
1797 mp1float_decoder_select="mpegaudio"
1798 mp2_decoder_select="mpegaudio"
1799 mp2float_decoder_select="mpegaudio"
1800 mp3_decoder_select="mpegaudio"
1801 mp3adu_decoder_select="mpegaudio"
1802 mp3adufloat_decoder_select="mpegaudio"
1803 mp3float_decoder_select="mpegaudio"
1804 mp3on4_decoder_select="mpegaudio"
1805 mp3on4float_decoder_select="mpegaudio"
1806 mpc7_decoder_select="dsputil mpegaudiodsp"
1807 mpc8_decoder_select="dsputil mpegaudiodsp"
1808 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1809 mpeg_xvmc_decoder_select="mpeg2video_decoder"
1810 mpeg1video_decoder_select="error_resilience mpegvideo"
1811 mpeg1video_encoder_select="aandcttables mpegvideoenc"
1812 mpeg2video_decoder_select="error_resilience mpegvideo"
1813 mpeg2video_encoder_select="aandcttables mpegvideoenc"
1814 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1815 mpeg4_encoder_select="h263_encoder"
1816 msmpeg4v1_decoder_select="h263_decoder"
1817 msmpeg4v2_decoder_select="h263_decoder"
1818 msmpeg4v2_encoder_select="h263_encoder"
1819 msmpeg4v3_decoder_select="h263_decoder"
1820 msmpeg4v3_encoder_select="h263_encoder"
1821 mss2_decoder_select="error_resilience vc1_decoder"
1822 mxpeg_decoder_select="dsputil hpeldsp"
1823 nellymoser_decoder_select="mdct sinewin"
1824 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
1825 nuv_decoder_select="dsputil lzo"
1826 png_decoder_select="zlib"
1827 png_encoder_select="dsputil zlib"
1828 prores_decoder_select="dsputil"
1829 prores_encoder_select="dsputil"
1830 qcelp_decoder_select="lsp"
1831 qdm2_decoder_select="mdct rdft mpegaudiodsp"
1832 ra_144_encoder_select="audio_frame_queue lpc"
1833 ralf_decoder_select="golomb"
1834 rtjpeg_decoder_select="dsputil"
1835 rv10_decoder_select="error_resilience h263_decoder"
1836 rv10_encoder_select="h263_encoder"
1837 rv20_decoder_select="error_resilience h263_decoder"
1838 rv20_encoder_select="h263_encoder"
1839 rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1840 rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1841 shorten_decoder_select="golomb"
1842 sipr_decoder_select="lsp"
1843 snow_decoder_select="dsputil dwt h264qpel hpeldsp rangecoder"
1844 snow_encoder_select="aandcttables dsputil dwt h264qpel hpeldsp mpegvideoenc rangecoder"
1845 sonic_decoder_select="golomb"
1846 sonic_encoder_select="golomb"
1847 sonic_ls_encoder_select="golomb"
1848 sp5x_decoder_select="dsputil hpeldsp"
1849 svq1_decoder_select="hpeldsp"
1850 svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc"
1851 svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp"
1852 svq3_decoder_suggest="error_resilience zlib"
1853 tak_decoder_select="dsputil"
1854 theora_decoder_select="vp3_decoder"
1855 tiff_decoder_suggest="zlib"
1856 tiff_encoder_suggest="zlib"
1857 thp_decoder_select="dsputil hpeldsp"
1858 truehd_decoder_select="mlp_parser"
1859 truemotion2_decoder_select="dsputil"
1860 truespeech_decoder_select="dsputil"
1861 tscc_decoder_select="zlib"
1862 twinvq_decoder_select="mdct lsp sinewin"
1863 utvideo_decoder_select="dsputil"
1864 utvideo_encoder_select="dsputil huffman"
1865 vble_decoder_select="dsputil"
1866 vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel"
1867 vc1image_decoder_select="vc1_decoder"
1868 vorbis_decoder_select="mdct"
1869 vorbis_encoder_select="mdct"
1870 vp3_decoder_select="hpeldsp vp3dsp videodsp"
1871 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp"
1872 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp"
1873 vp6a_decoder_select="vp6_decoder"
1874 vp6f_decoder_select="vp6_decoder"
1875 vp8_decoder_select="h264pred videodsp"
1876 wmapro_decoder_select="mdct sinewin"
1877 wmav1_decoder_select="mdct sinewin"
1878 wmav1_encoder_select="mdct sinewin"
1879 wmav2_decoder_select="mdct sinewin"
1880 wmav2_encoder_select="mdct sinewin"
1881 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
1882 wmv1_decoder_select="h263_decoder"
1883 wmv1_encoder_select="h263_encoder"
1884 wmv2_decoder_select="h263_decoder videodsp"
1885 wmv2_encoder_select="h263_encoder"
1886 wmv3_decoder_select="vc1_decoder"
1887 wmv3image_decoder_select="wmv3_decoder"
1888 zerocodec_decoder_select="zlib"
1889 zlib_decoder_select="zlib"
1890 zlib_encoder_select="zlib"
1891 zmbv_decoder_select="zlib"
1892 zmbv_encoder_select="zlib"
1894 # hardware accelerators
1895 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
1896 dxva2_deps="dxva2api_h"
1897 vaapi_deps="va_va_h"
1898 vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
1899 vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
1900 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1902 h263_vaapi_hwaccel_deps="vaapi"
1903 h263_vaapi_hwaccel_select="h263_decoder"
1904 h263_vdpau_hwaccel_deps="vdpau"
1905 h263_vdpau_hwaccel_select="h263_decoder"
1906 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
1907 h264_dxva2_hwaccel_deps="dxva2"
1908 h264_dxva2_hwaccel_select="h264_decoder"
1909 h264_vaapi_hwaccel_deps="vaapi"
1910 h264_vaapi_hwaccel_select="h264_decoder"
1911 h264_vda_decoder_deps="vda"
1912 h264_vda_decoder_select="h264_decoder"
1913 h264_vda_hwaccel_deps="vda"
1914 h264_vda_hwaccel_select="h264_decoder"
1915 h264_vdpau_decoder_deps="vdpau"
1916 h264_vdpau_decoder_select="h264_decoder"
1917 h264_vdpau_hwaccel_deps="vdpau"
1918 h264_vdpau_hwaccel_select="h264_decoder"
1919 mpeg_vdpau_decoder_deps="vdpau"
1920 mpeg_vdpau_decoder_select="mpeg2video_decoder"
1921 mpeg1_vdpau_decoder_deps="vdpau"
1922 mpeg1_vdpau_decoder_select="mpeg1video_decoder"
1923 mpeg1_vdpau_hwaccel_deps="vdpau"
1924 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
1925 mpeg2_crystalhd_decoder_select="crystalhd"
1926 mpeg2_dxva2_hwaccel_deps="dxva2"
1927 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
1928 mpeg2_vaapi_hwaccel_deps="vaapi"
1929 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
1930 mpeg2_vdpau_hwaccel_deps="vdpau"
1931 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
1932 mpeg4_crystalhd_decoder_select="crystalhd"
1933 mpeg4_vaapi_hwaccel_deps="vaapi"
1934 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
1935 mpeg4_vdpau_decoder_deps="vdpau"
1936 mpeg4_vdpau_decoder_select="mpeg4_decoder"
1937 mpeg4_vdpau_hwaccel_deps="vdpau"
1938 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
1939 msmpeg4_crystalhd_decoder_select="crystalhd"
1940 vc1_crystalhd_decoder_select="crystalhd"
1941 vc1_dxva2_hwaccel_deps="dxva2"
1942 vc1_dxva2_hwaccel_select="vc1_decoder"
1943 vc1_vaapi_hwaccel_deps="vaapi"
1944 vc1_vaapi_hwaccel_select="vc1_decoder"
1945 vc1_vdpau_decoder_deps="vdpau"
1946 vc1_vdpau_decoder_select="vc1_decoder"
1947 vc1_vdpau_hwaccel_deps="vdpau"
1948 vc1_vdpau_hwaccel_select="vc1_decoder"
1949 wmv3_crystalhd_decoder_select="crystalhd"
1950 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
1951 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1952 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1953 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
1956 h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1957 mpeg4video_parser_select="error_resilience mpegvideo"
1958 mpegvideo_parser_select="error_resilience mpegvideo"
1959 vc1_parser_select="mpegvideo"
1961 # external libraries
1962 libaacplus_encoder_deps="libaacplus"
1963 libcelt_decoder_deps="libcelt"
1964 libfaac_encoder_deps="libfaac"
1965 libfaac_encoder_select="audio_frame_queue"
1966 libfdk_aac_encoder_deps="libfdk_aac"
1967 libfdk_aac_encoder_select="audio_frame_queue"
1968 libgsm_decoder_deps="libgsm"
1969 libgsm_encoder_deps="libgsm"
1970 libgsm_ms_decoder_deps="libgsm"
1971 libgsm_ms_encoder_deps="libgsm"
1972 libilbc_decoder_deps="libilbc"
1973 libilbc_encoder_deps="libilbc"
1974 libmodplug_demuxer_deps="libmodplug"
1975 libmp3lame_encoder_deps="libmp3lame"
1976 libmp3lame_encoder_select="audio_frame_queue"
1977 libopencore_amrnb_decoder_deps="libopencore_amrnb"
1978 libopencore_amrnb_encoder_deps="libopencore_amrnb"
1979 libopencore_amrnb_encoder_select="audio_frame_queue"
1980 libopencore_amrwb_decoder_deps="libopencore_amrwb"
1981 libopenjpeg_decoder_deps="libopenjpeg"
1982 libopenjpeg_encoder_deps="libopenjpeg"
1983 libopus_decoder_deps="libopus"
1984 libopus_encoder_deps="libopus"
1985 libopus_encoder_select="audio_frame_queue"
1986 libquvi_demuxer_deps="libquvi"
1987 libschroedinger_decoder_deps="libschroedinger"
1988 libschroedinger_encoder_deps="libschroedinger"
1989 libshine_encoder_deps="libshine"
1990 libshine_encoder_select="audio_frame_queue"
1991 libspeex_decoder_deps="libspeex"
1992 libspeex_encoder_deps="libspeex"
1993 libspeex_encoder_select="audio_frame_queue"
1994 libstagefright_h264_decoder_deps="libstagefright_h264"
1995 libtheora_encoder_deps="libtheora"
1996 libtwolame_encoder_deps="libtwolame"
1997 libvo_aacenc_encoder_deps="libvo_aacenc"
1998 libvo_aacenc_encoder_select="audio_frame_queue"
1999 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
2000 libvorbis_decoder_deps="libvorbis"
2001 libvorbis_encoder_deps="libvorbis"
2002 libvorbis_encoder_select="audio_frame_queue"
2003 libvpx_vp8_decoder_deps="libvpx"
2004 libvpx_vp8_encoder_deps="libvpx"
2005 libvpx_vp9_decoder_deps="libvpx"
2006 libvpx_vp9_encoder_deps="libvpx"
2007 libx264_encoder_deps="libx264"
2008 libx264rgb_encoder_deps="libx264"
2009 libxavs_encoder_deps="libxavs"
2010 libxvid_encoder_deps="libxvid"
2011 libutvideo_decoder_deps="libutvideo"
2012 libutvideo_encoder_deps="libutvideo"
2015 ac3_demuxer_select="ac3_parser"
2016 asf_stream_muxer_select="asf_muxer"
2017 avisynth_demuxer_deps="avisynth"
2018 dirac_demuxer_select="dirac_parser"
2019 dts_demuxer_select="dca_parser"
2020 dtshd_demuxer_select="dca_parser"
2021 eac3_demuxer_select="ac3_parser"
2022 f4v_muxer_select="mov_muxer"
2023 flac_demuxer_select="flac_parser"
2024 ipod_muxer_select="mov_muxer"
2025 ismv_muxer_select="mov_muxer"
2026 libnut_demuxer_deps="libnut"
2027 libnut_muxer_deps="libnut"
2028 matroska_audio_muxer_select="matroska_muxer"
2029 matroska_demuxer_suggest="bzlib lzo zlib"
2030 mov_demuxer_suggest="zlib"
2031 mov_muxer_select="rtpenc_chain"
2032 mp3_demuxer_select="mpegaudio_parser"
2033 mp4_muxer_select="mov_muxer"
2034 mpegts_muxer_select="adts_muxer latm_muxer"
2035 mpegtsraw_demuxer_select="mpegts_demuxer"
2036 mxf_d10_muxer_select="mxf_muxer"
2037 ogg_demuxer_select="golomb"
2038 psp_muxer_select="mov_muxer"
2039 rtp_demuxer_select="sdp_demuxer"
2040 rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
2041 rtsp_demuxer_select="http_protocol rtpdec"
2042 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2043 sap_demuxer_select="sdp_demuxer"
2044 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
2045 sdp_demuxer_select="rtpdec"
2046 smoothstreaming_muxer_select="ismv_muxer"
2047 spdif_muxer_select="aac_parser"
2048 tak_demuxer_select="tak_parser"
2049 tg2_muxer_select="mov_muxer"
2050 tgp_muxer_select="mov_muxer"
2051 vobsub_demuxer_select="mpegps_demuxer"
2052 w64_demuxer_deps="wav_demuxer"
2053 w64_muxer_deps="wav_muxer"
2056 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
2057 alsa_outdev_deps="alsa_asoundlib_h"
2058 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2059 caca_outdev_deps="libcaca"
2060 dshow_indev_deps="IBaseFilter"
2061 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
2062 dv1394_indev_deps="dv1394 dv_demuxer"
2063 fbdev_indev_deps="linux_fb_h"
2064 iec61883_indev_deps="libiec61883"
2065 jack_indev_deps="jack_jack_h sem_timedwait"
2066 lavfi_indev_deps="avfilter"
2067 libcdio_indev_deps="libcdio"
2068 libdc1394_indev_deps="libdc1394"
2069 libv4l2_indev_deps="libv4l2"
2070 openal_indev_deps="openal"
2071 oss_indev_deps_any="soundcard_h sys_soundcard_h"
2072 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
2073 pulse_indev_deps="libpulse"
2074 sdl_outdev_deps="sdl"
2075 sndio_indev_deps="sndio_h"
2076 sndio_outdev_deps="sndio_h"
2077 v4l_indev_deps="linux_videodev_h"
2078 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
2079 vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
2080 vfwcap_indev_extralibs="-lavicap32"
2081 x11grab_indev_deps="x11grab"
2084 bluray_protocol_deps="libbluray"
2085 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
2086 ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl"
2087 ffrtmpcrypt_protocol_select="tcp_protocol"
2088 ffrtmphttp_protocol_deps="!librtmp_protocol"
2089 ffrtmphttp_protocol_select="http_protocol"
2090 gopher_protocol_select="network"
2091 httpproxy_protocol_select="tcp_protocol"
2092 http_protocol_select="tcp_protocol"
2093 https_protocol_select="tls_protocol"
2094 librtmp_protocol_deps="librtmp"
2095 librtmpe_protocol_deps="librtmp"
2096 librtmps_protocol_deps="librtmp"
2097 librtmpt_protocol_deps="librtmp"
2098 librtmpte_protocol_deps="librtmp"
2099 mmsh_protocol_select="http_protocol"
2100 mmst_protocol_select="network"
2101 rtmp_protocol_deps="!librtmp_protocol"
2102 rtmp_protocol_select="tcp_protocol"
2103 rtmpe_protocol_select="ffrtmpcrypt_protocol"
2104 rtmps_protocol_deps="!librtmp_protocol"
2105 rtmps_protocol_select="tls_protocol"
2106 rtmpt_protocol_select="ffrtmphttp_protocol"
2107 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
2108 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
2109 rtp_protocol_select="udp_protocol"
2110 sctp_protocol_deps="struct_sctp_event_subscribe"
2111 sctp_protocol_select="network"
2112 srtp_protocol_select="rtp_protocol"
2113 tcp_protocol_select="network"
2114 tls_protocol_deps_any="openssl gnutls"
2115 tls_protocol_select="tcp_protocol"
2116 udp_protocol_select="network"
2119 aconvert_filter_deps="swresample"
2120 amovie_filter_deps="avcodec avformat"
2121 aresample_filter_deps="swresample"
2122 ass_filter_deps="libass"
2123 asyncts_filter_deps="avresample"
2124 atempo_filter_deps="avcodec rdft"
2125 blackframe_filter_deps="gpl"
2126 boxblur_filter_deps="gpl"
2127 colormatrix_filter_deps="gpl"
2128 cropdetect_filter_deps="gpl"
2129 delogo_filter_deps="gpl"
2130 deshake_filter_deps="avcodec"
2131 deshake_filter_select="dsputil"
2132 drawtext_filter_deps="libfreetype"
2133 ebur128_filter_deps="gpl"
2134 flite_filter_deps="libflite"
2135 frei0r_filter_deps="frei0r dlopen"
2136 frei0r_filter_extralibs='$ldl'
2137 frei0r_src_filter_deps="frei0r dlopen"
2138 frei0r_src_filter_extralibs='$ldl'
2139 geq_filter_deps="gpl"
2140 histeq_filter_deps="gpl"
2141 hqdn3d_filter_deps="gpl"
2142 hue_filter_deps="gpl"
2143 interlace_filter_deps="gpl"
2144 kerndeint_filter_deps="gpl"
2145 movie_filter_deps="avcodec avformat"
2146 mp_filter_deps="gpl avcodec swscale inline_asm"
2147 mpdecimate_filter_deps="gpl avcodec"
2148 mptestsrc_filter_deps="gpl"
2149 negate_filter_deps="lut_filter"
2150 noise_filter_deps="gpl"
2151 resample_filter_deps="avresample"
2152 ocv_filter_deps="libopencv"
2153 pan_filter_deps="swresample"
2154 pp_filter_deps="gpl postproc"
2155 removelogo_filter_deps="avcodec avformat swscale"
2156 scale_filter_deps="swscale"
2157 smartblur_filter_deps="gpl swscale"
2158 showspectrum_filter_deps="avcodec rdft"
2159 stereo3d_filter_deps="gpl"
2160 subtitles_filter_deps="avformat avcodec libass"
2161 super2xsai_filter_deps="gpl"
2162 tinterlace_filter_deps="gpl"
2163 vidstabdetect_filter_deps="libvidstab"
2164 vidstabtransform_filter_deps="libvidstab"
2165 yadif_filter_deps="gpl"
2166 pixfmts_super2xsai_test_deps="super2xsai_filter"
2167 tinterlace_merge_test_deps="tinterlace_filter"
2168 tinterlace_pad_test_deps="tinterlace_filter"
2171 avcodec_deps="avutil"
2172 avdevice_deps="avutil avcodec avformat"
2173 avfilter_deps="avutil"
2174 avformat_deps="avutil avcodec"
2175 avresample_deps="avutil"
2176 postproc_deps="avutil gpl"
2177 swscale_deps="avutil"
2180 ffmpeg_deps="avcodec avfilter avformat swscale swresample"
2181 ffmpeg_select="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 conditional mov (cmov)
3198 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
3199 cpuflags="-march=$cpu"
3202 # targets that do support 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 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'
3389 if enabled shared; then
3390 # Link to the import library instead of the normal static library
3393 # Cannot build shared and static libraries at the same time with
3397 shlibdir_default="$bindir_default"
3400 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3401 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3402 SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3403 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3405 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3406 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3407 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3414 shlibdir_default="$bindir_default"
3417 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3418 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3419 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3421 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
3422 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
3426 *-dos|freedos|opendos)
3427 network_extralibs="-lsocket"
3430 add_cppflags -U__STRICT_ANSI__
3437 ranlib="echo ignoring ranlib"
3443 add_cppflags -D_GNU_SOURCE
3444 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
3445 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
3450 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3451 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
3452 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
3453 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
3454 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
3455 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
3456 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
3457 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
3458 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
3459 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
3460 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
3462 enable_weak os2threads
3465 add_cppflags -D_BSD_SOURCE
3470 add_cppflags -D_QNX_SOURCE
3471 network_extralibs="-lsocket"
3476 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
3477 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
3478 add_ldflags -Wl,--target1-abs,--no-undefined \
3479 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
3480 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
3481 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
3482 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
3483 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
3486 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
3492 add_cppflags -D_C99_SNPRINTF_EXTENSION \
3493 -D_REENTRANT_SOURCE \
3494 -D_RESEARCH_SOURCE \
3497 add_compat strtod.o strtod=avpriv_strtod
3498 network_extralibs='-lbsd'
3499 exeobjs=compat/plan9/main.o
3506 die "Unknown OS '$target_os'."
3510 # determine libc flavour
3512 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
3513 if check_cpp_condition features.h "defined __UCLIBC__"; then
3515 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3516 elif check_cpp_condition features.h "defined __GLIBC__"; then
3518 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3519 # MinGW headers can be installed on Cygwin, so check for newlib first.
3520 elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
3522 add_cppflags -U__STRICT_ANSI__
3523 elif check_header _mingw.h; then
3525 check_cpp_condition _mingw.h \
3526 "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
3527 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
3528 die "ERROR: MinGW runtime version must be >= 3.15."
3529 add_cppflags -U__STRICT_ANSI__
3530 if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \
3531 __MINGW64_VERSION_MAJOR < 3"; then
3532 add_compat msvcrt/snprintf.o
3533 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
3535 elif check_func_headers stdlib.h _get_doserrno; then
3537 add_compat strtod.o strtod=avpriv_strtod
3538 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
3539 _snprintf=avpriv_snprintf \
3540 vsnprintf=avpriv_vsnprintf
3541 elif check_cpp_condition stddef.h "defined __KLIBC__"; then
3545 test -n "$libc_type" && enable $libc_type
3547 # hacks for compiler/libc/os combinations
3549 if enabled_all tms470 glibc; then
3550 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
3551 add_cppflags -D__USER_LABEL_PREFIX__=
3552 add_cppflags -D__builtin_memset=memset
3553 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
3554 add_cflags -pds=48 # incompatible redefinition of macro
3557 if enabled_all ccc glibc; then
3558 add_ldflags -Wl,-z,now # calls to libots crash without this
3562 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
3565 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate
3567 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
3569 set_default $PATHS_LIST
3572 # we need to build at least one lib type
3573 if ! enabled_any static shared; then
3575 At least one library type must be built.
3576 Specify --enable-static to build the static libraries or --enable-shared to
3577 build the shared libraries as well. To only build the shared libraries specify
3578 --disable-static in addition to --enable-shared.
3583 die_license_disabled() {
3584 enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
3587 die_license_disabled_gpl() {
3588 enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; }
3591 die_license_disabled gpl libcdio
3592 die_license_disabled gpl libutvideo
3593 die_license_disabled gpl libvidstab
3594 die_license_disabled gpl libx264
3595 die_license_disabled gpl libxavs
3596 die_license_disabled gpl libxvid
3597 die_license_disabled gpl x11grab
3599 die_license_disabled nonfree libaacplus
3600 die_license_disabled nonfree libfaac
3601 enabled gpl && die_license_disabled_gpl nonfree libfdk_aac
3602 enabled gpl && die_license_disabled_gpl nonfree openssl
3604 die_license_disabled version3 libopencore_amrnb
3605 die_license_disabled version3 libopencore_amrwb
3606 die_license_disabled version3 libvo_aacenc
3607 die_license_disabled version3 libvo_amrwbenc
3609 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3611 disabled optimizations || check_cflags -fomit-frame-pointer
3620 enabled pic && enable_pic
3622 check_cc <<EOF || die "Symbol mangling check failed."
3625 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
3626 extern_prefix=${sym%%ff_extern*}
3628 check_cc <<EOF && enable_weak inline_asm
3629 void foo(void) { __asm__ volatile ("" ::); }
3633 for restrict_keyword in restrict __restrict__ __restrict; do
3634 check_cc <<EOF && _restrict=$restrict_keyword && break
3635 void foo(char * $restrict_keyword p);
3639 check_cc <<EOF && enable attribute_packed
3640 struct { int x; } __attribute__((packed)) x;
3643 check_cc <<EOF && enable attribute_may_alias
3644 union { int x; } __attribute__((may_alias)) x;
3647 check_cc <<EOF || die "endian test failed"
3648 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
3650 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
3652 if enabled alpha; then
3656 elif enabled arm; then
3658 check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
3659 float func(float a, float b){ return a+b; }
3662 enabled thumb && check_cflags -mthumb || check_cflags -marm
3665 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
3667 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
3668 case "${cross_prefix:-$cc}" in
3669 *hardfloat*) enable vfp_args; fpabi=vfp ;;
3670 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
3671 __asm__ (".eabi_attribute 28, 1");
3672 int main(void) { return 0; }
3675 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
3678 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
3679 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
3680 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
3681 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
3682 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
3683 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
3685 [ $target_os = linux ] ||
3686 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
3689 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
3690 check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
3692 enabled_all armv6t2 shared !pic && enable_pic
3694 elif enabled mips; then
3696 check_inline_asm loongson '"dmult.g $1, $2, $3"'
3697 enabled mips32r2 && add_cflags "-mips32r2" && add_asflags "-mips32r2" &&
3698 check_inline_asm mips32r2 '"rotr $t0, $t1, 1"'
3699 enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" &&
3700 check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"'
3701 enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" &&
3702 check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"'
3703 enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" &&
3704 check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"'
3706 elif enabled parisc; then
3708 if enabled gcc; then
3709 case $($cc -dumpversion) in
3710 4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;;
3714 elif enabled ppc; then
3716 enable local_aligned_8 local_aligned_16
3718 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
3719 check_inline_asm ibm_asm '"add 0, 0, 0"'
3720 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
3721 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
3723 # AltiVec flags: The FSF version of GCC differs from the Apple version
3724 if enabled altivec; then
3726 check_cflags -maltivec -mabi=altivec &&
3727 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
3728 check_cflags -faltivec
3730 # check if our compiler supports Motorola AltiVec C API
3731 check_cc <<EOF || disable altivec
3734 vector signed int v1 = (vector signed int) { 0 };
3735 vector signed int v2 = (vector signed int) { 1 };
3736 v1 = vec_add(v1, v2);
3741 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
3744 elif enabled sparc; then
3746 enabled vis && check_inline_asm vis '"pdist %f0, %f0, %f0"'
3748 elif enabled x86; then
3750 check_builtin rdtsc intrin.h "__rdtsc()"
3751 check_builtin mm_empty mmintrin.h "_mm_empty()"
3753 enable local_aligned_8 local_aligned_16
3755 # check whether EBP is available on x86
3756 # As 'i' is stored on the stack, this program will crash
3757 # if the base pointer is used to access it because the
3758 # base pointer is cleared in the inline assembly code.
3759 check_exec_crash <<EOF && enable ebp_available
3761 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
3765 # check whether EBX is available on x86
3766 check_inline_asm ebx_available '""::"b"(0)' &&
3767 check_inline_asm ebx_available '"":::"%ebx"'
3769 # check whether xmm clobbers are supported
3770 check_inline_asm xmm_clobbers '"":::"%xmm0"'
3772 # check whether binutils is new enough to compile SSSE3/MMXEXT
3773 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
3774 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
3776 if ! disabled_any asm mmx yasm; then
3777 if check_cmd $yasmexe --version; then
3778 enabled x86_64 && yasm_extra="-m amd64"
3779 yasm_debug="-g dwarf2"
3780 elif check_cmd nasm -v; then
3782 yasm_debug="-g -F dwarf"
3783 enabled x86_64 && test "$objformat" = elf && objformat=elf64
3786 YASMFLAGS="-f $objformat $yasm_extra"
3787 enabled pic && append YASMFLAGS "-DPIC"
3788 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
3789 case "$objformat" in
3790 elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
3793 check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
3794 die "yasm not found, use --disable-yasm for a crippled build"
3795 check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx_external
3796 check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
3797 check_yasm "CPU amdnop" && enable cpunop
3801 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
3808 if enabled asm; then
3810 check_as <<EOF && enable gnu_as || \
3811 $nogas "GNU assembler not found, install gas-preprocessor"
3819 check_ldflags -Wl,--as-needed
3821 if check_func dlopen; then
3823 elif check_func dlopen -ldl; then
3827 if ! disabled network; then
3828 check_type "sys/types.h sys/socket.h" socklen_t
3829 check_type netdb.h "struct addrinfo"
3830 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
3831 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
3832 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
3833 check_type netinet/in.h "struct sockaddr_in6"
3834 check_type poll.h "struct pollfd"
3835 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
3836 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
3837 check_type netinet/sctp.h "struct sctp_event_subscribe"
3838 check_func getaddrinfo $network_extralibs
3839 check_func getservbyport $network_extralibs
3840 # Prefer arpa/inet.h over winsock2
3841 if check_header arpa/inet.h ; then
3842 check_func closesocket
3843 elif check_header winsock2.h ; then
3844 check_func_headers winsock2.h closesocket -lws2 &&
3845 network_extralibs="-lws2" ||
3846 { check_func_headers winsock2.h closesocket -lws2_32 &&
3847 network_extralibs="-lws2_32"; }
3848 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
3849 check_type ws2tcpip.h socklen_t
3850 check_type ws2tcpip.h "struct addrinfo"
3851 check_type ws2tcpip.h "struct group_source_req"
3852 check_type ws2tcpip.h "struct ip_mreq_source"
3853 check_type ws2tcpip.h "struct ipv6_mreq"
3854 check_type winsock2.h "struct pollfd"
3855 check_type ws2tcpip.h "struct sockaddr_in6"
3856 check_type ws2tcpip.h "struct sockaddr_storage"
3857 check_struct winsock2.h "struct sockaddr" sa_len
3863 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
3864 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
3867 check_func clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; }
3870 check_func_headers stdlib.h getenv
3871 check_func gethrtime
3873 check_func getrusage
3874 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
3875 check_func gettimeofday
3876 check_func inet_aton $network_extralibs
3878 check_func localtime_r
3879 check_func ${malloc_prefix}memalign && enable memalign
3883 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
3884 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
3885 check_func setrlimit
3886 check_func strerror_r
3887 check_func sched_getaffinity
3888 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
3889 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
3890 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
3891 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
3895 check_func_headers conio.h kbhit
3896 check_func_headers windows.h PeekNamedPipe
3897 check_func_headers io.h setmode
3898 check_func_headers lzo/lzo1x.h lzo1x_999_compress
3899 check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
3900 check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
3901 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
3902 check_func_headers windows.h GetProcessAffinityMask
3903 check_func_headers windows.h GetProcessTimes
3904 check_func_headers windows.h GetSystemTimeAsFileTime
3905 check_func_headers windows.h MapViewOfFile
3906 check_func_headers windows.h SetConsoleTextAttribute
3907 check_func_headers windows.h Sleep
3908 check_func_headers windows.h VirtualAlloc
3909 check_func_headers glob.h glob
3911 check_header cl/cl.h
3912 check_header direct.h
3913 check_header dlfcn.h
3915 check_header dxva2api.h -D_WIN32_WINNT=0x0600
3917 check_header libcrystalhd/libcrystalhd_if.h
3918 check_header malloc.h
3920 check_header sys/mman.h
3921 check_header sys/param.h
3922 check_header sys/resource.h
3923 check_header sys/select.h
3924 check_header sys/time.h
3925 check_header termios.h
3926 check_header unistd.h
3927 check_header vdpau/vdpau.h
3928 check_header vdpau/vdpau_x11.h
3929 check_header VideoDecodeAcceleration/VDADecoder.h
3930 check_header windows.h
3931 check_header X11/extensions/XvMClib.h
3932 check_header asm/types.h
3934 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
3935 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
3937 if ! disabled w32threads && ! enabled pthreads; then
3938 check_func_headers "windows.h process.h" _beginthreadex && enable w32threads
3941 # check for some common methods of building with pthread support
3942 # do this before the optional library checks as some of them require pthreads
3943 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
3945 if check_func pthread_create; then
3947 elif check_func pthread_create -pthread; then
3949 add_extralibs -pthread
3950 elif check_func pthread_create -pthreads; then
3951 add_cflags -pthreads
3952 add_extralibs -pthreads
3953 elif check_func pthread_create -lpthreadGC2; then
3954 add_extralibs -lpthreadGC2
3955 elif ! check_lib pthread.h pthread_create -lpthread; then
3960 for thread in $THREADS_LIST; do
3961 if enabled $thread; then
3962 test -n "$thread_type" &&
3963 die "ERROR: Only one thread type must be selected." ||
3964 thread_type="$thread"
3968 if enabled pthreads; then
3969 check_func pthread_cancel
3972 enabled sync_val_compare_and_swap && enable atomics_gcc
3973 enabled machine_rw_barrier && enabled atomic_cas_ptr && enable atomics_suncc
3974 enabled MemoryBarrier && enable atomics_win32
3976 check_lib math.h sin -lm && LIBM="-lm"
3977 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
3978 enabled vaapi && require vaapi va/va.h vaInitialize -lva
3984 for func in $MATH_FUNCS; do
3985 eval check_mathfunc $func \${${func}_args:-1}
3988 # these are off by default, so fail if requested and not available
3989 enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } ||
3990 { check_lib2 "dlfcn.h" dlopen -ldl; } ||
3991 die "ERROR: LoadLibrary/dlopen not found for avisynth"; }
3992 enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
3993 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
3994 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
3995 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
3996 enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
3997 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
3998 enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray
3999 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
4000 { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
4001 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
4002 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
4003 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
4004 enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
4005 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"
4006 enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs
4007 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
4008 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
4009 check_lib "${gsm_hdr}" gsm_create -lgsm && break;
4010 done || die "ERROR: libgsm not found"; }
4011 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
4012 enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
4013 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
4014 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
4015 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
4016 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
4017 enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
4018 enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg ||
4019 check_lib openjpeg.h opj_version -lopenjpeg ||
4020 die "ERROR: libopenjpeg not found"; }
4021 enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
4022 enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new
4023 enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init
4024 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
4025 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
4026 enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_frame
4027 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
4028 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
4029 enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h
4030 media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h
4031 media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static
4032 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
4033 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
4034 { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
4035 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
4036 enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++
4037 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
4038 enabled libvidstab && require_pkg_config vidstab vid.stab/libvidstab.h vsMotionDetectInit
4039 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
4040 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
4041 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
4043 enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
4044 die "ERROR: libvpx decoder version must be >=0.9.1"; }
4045 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 ||
4046 die "ERROR: libvpx encoder version must be >=0.9.7"; }
4047 enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; }
4048 enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } }
4049 enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
4050 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
4051 die "ERROR: libx264 must be installed and version must be >= 0.118."; }
4052 enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
4053 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
4054 enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
4055 check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
4056 die "ERROR: openal not found"; } &&
4057 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
4058 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
4059 enabled opencl && { check_lib2 OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
4060 check_lib2 CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
4061 die "ERROR: opencl not found"; } &&
4062 { check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
4063 check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
4064 die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
4065 enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
4066 check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
4067 check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
4068 die "ERROR: openssl not found"; }
4070 if enabled gnutls; then
4071 { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } ||
4072 { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
4076 if enabled libdc1394; then
4077 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
4078 enable libdc1394_2; } ||
4079 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
4080 enable libdc1394_1; } ||
4081 die "ERROR: No version of libdc1394 found "
4084 SDL_CONFIG="${cross_prefix}sdl-config"
4085 if check_pkg_config sdl SDL_events.h SDL_PollEvent; then
4086 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4087 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4090 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
4091 sdl_cflags=$("${SDL_CONFIG}" --cflags)
4092 sdl_libs=$("${SDL_CONFIG}" --libs)
4093 check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
4094 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4095 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4099 enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
4101 texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
4102 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
4103 perl --version > /dev/null 2>&1 && enable perl || disable perl
4104 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
4105 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
4107 check_header linux/fb.h
4108 check_header linux/videodev.h
4109 check_header linux/videodev2.h
4110 check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
4112 check_header sys/videoio.h
4114 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
4115 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
4116 # w32api 3.12 had it defined wrong
4117 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
4119 check_type "dshow.h" IBaseFilter
4121 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
4122 { check_header dev/bktr/ioctl_meteor.h &&
4123 check_header dev/bktr/ioctl_bt848.h; } ||
4124 { check_header machine/ioctl_meteor.h &&
4125 check_header machine/ioctl_bt848.h; } ||
4126 { check_header dev/video/meteor/ioctl_meteor.h &&
4127 check_header dev/video/bktr/ioctl_bt848.h; } ||
4128 check_header dev/ic/bt8xx.h
4130 check_header sndio.h
4131 if check_struct sys/soundcard.h audio_buf_info bytes; then
4132 enable_safe sys/soundcard.h
4134 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
4135 #include <sys/soundcard.h>
4139 check_header soundcard.h
4141 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
4143 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait &&
4144 check_func jack_port_get_latency_range -ljack
4146 enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
4148 if enabled libcdio; then
4149 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
4153 require X11 X11/Xlib.h XOpenDisplay -lX11 &&
4154 require Xext X11/extensions/XShm.h XShmCreateImage -lXext &&
4155 require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes
4157 if ! disabled vaapi; then
4158 check_lib va/va.h vaInitialize -lva && {
4159 check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
4160 warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
4165 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
4168 # Funny iconv installations are not unusual, so check it after all flags have been set
4169 disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv
4171 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
4173 # add some useful compiler flags if supported
4174 check_cflags -Wdeclaration-after-statement
4176 check_cflags -Wno-parentheses
4177 check_cflags -Wno-switch
4178 check_cflags -Wno-format-zero-length
4179 check_cflags -Wdisabled-optimization
4180 check_cflags -Wpointer-arith
4181 check_cflags -Wredundant-decls
4182 check_cflags -Wno-pointer-sign
4183 check_cflags -Wwrite-strings
4184 check_cflags -Wtype-limits
4185 check_cflags -Wundef
4186 check_cflags -Wmissing-prototypes
4187 check_cflags -Wno-pointer-to-int-cast
4188 check_cflags -Wstrict-prototypes
4189 enabled extra_warnings && check_cflags -Winline
4191 # add some linker flags
4192 check_ldflags -Wl,--warn-common
4193 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
4194 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
4196 enabled xmm_clobber_test &&
4197 check_ldflags -Wl,--wrap,avcodec_open2 \
4198 -Wl,--wrap,avcodec_decode_audio4 \
4199 -Wl,--wrap,avcodec_decode_video2 \
4200 -Wl,--wrap,avcodec_decode_subtitle2 \
4201 -Wl,--wrap,avcodec_encode_audio2 \
4202 -Wl,--wrap,avcodec_encode_video \
4203 -Wl,--wrap,avcodec_encode_subtitle \
4204 -Wl,--wrap,sws_scale ||
4205 disable xmm_clobber_test
4208 if test_ldflags -Wl,--version-script,$TMPV; then
4209 append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
4210 check_cc <<EOF && enable symver_asm_label
4211 void ff_foo(void) __asm__ ("av_foo@VERSION");
4212 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
4214 check_cc <<EOF && enable symver_gnu_asm
4215 __asm__(".symver ff_foo,av_foo@VERSION");
4216 void ff_foo(void) {}
4220 if [ -z "$optflags" ]; then
4221 if enabled small; then
4222 optflags=$cflags_size
4223 elif enabled optimizations; then
4224 optflags=$cflags_speed
4226 optflags=$cflags_noopt
4232 enabled lto && check_ldflags "$@"
4236 if enabled lto; then
4237 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
4239 check_ldflags -flto $cpuflags
4242 check_optflags $optflags
4243 check_optflags -fno-math-errno
4244 check_optflags -fno-signed-zeros
4246 enabled ftrapv && check_cflags -ftrapv
4248 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
4253 if enabled icc; then
4254 # Just warnings, no remarks
4256 # -wd: Disable following warnings
4257 # 144, 167, 556: -Wno-pointer-sign
4258 # 188: enumerated type mixed with another type
4259 # 1292: attribute "foo" ignored
4260 # 1419: external declaration in primary source file
4261 # 10006: ignoring unknown option -fno-signed-zeros
4262 # 10148: ignoring unknown option -Wno-parentheses
4263 # 10156: ignoring option '-W'; no argument required
4264 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156
4265 # 11030: Warning unknown option --as-needed
4266 # 10156: ignoring option '-export'; no argument required
4267 check_ldflags -wd10156,11030
4268 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
4269 enable ebp_available
4270 if enabled x86_32; then
4271 icc_version=$($cc -dumpversion)
4272 test ${icc_version%%.*} -ge 11 &&
4273 check_cflags -falign-stack=maintain-16-byte ||
4274 disable aligned_stack
4276 elif enabled ccc; then
4277 # disable some annoying warnings
4278 add_cflags -msg_disable bitnotint
4279 add_cflags -msg_disable mixfuncvoid
4280 add_cflags -msg_disable nonstandcast
4281 add_cflags -msg_disable unsupieee
4282 elif enabled gcc; then
4283 check_optflags -fno-tree-vectorize
4284 check_cflags -Werror=implicit-function-declaration
4285 check_cflags -Werror=missing-prototypes
4286 check_cflags -Werror=return-type
4287 check_cflags -Werror=vla
4288 elif enabled llvm_gcc; then
4289 check_cflags -mllvm -stack-alignment=16
4290 elif enabled clang; then
4291 check_cflags -mllvm -stack-alignment=16
4292 check_cflags -Qunused-arguments
4293 check_cflags -Werror=implicit-function-declaration
4294 check_cflags -Werror=missing-prototypes
4295 check_cflags -Werror=return-type
4296 elif enabled armcc; then
4297 # 2523: use of inline assembler is deprecated
4298 add_cflags -W${armcc_opt},--diag_suppress=2523
4299 add_cflags -W${armcc_opt},--diag_suppress=1207
4300 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
4301 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
4302 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
4303 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
4304 elif enabled tms470; then
4305 add_cflags -pds=824 -pds=837
4306 elif enabled pathscale; then
4307 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
4308 elif enabled msvc; then
4309 enabled x86_32 && disable aligned_stack
4314 enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
4317 add_cppflags -Dmain=plan9_main
4321 enable frame_thread_encoder
4322 enabled_any $THREADS_LIST && enable threads
4323 enabled_any $ATOMICS_LIST && enable atomics_native
4325 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
4327 check_deps $CONFIG_LIST \
4333 if test $target_os = "haiku"; then
4335 disable posix_memalign
4338 ! enabled_any memalign posix_memalign aligned_malloc &&
4339 enabled_any $need_memalign && enable memalign_hack
4342 # -> enable ${lib}_deps_${dep}
4343 # -> add $dep to ${lib}_deps only once
4347 enabled "${lib}_deps_${dep}" && return 0
4348 enable "${lib}_deps_${dep}"
4349 prepend "${lib}_deps" $dep
4352 # merge deps lib components
4353 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
4358 enabled $comp || continue
4359 eval "dep=\"\$${comp}_deps\""
4366 merge_deps libavfilter $FILTER_LIST
4368 echo "install prefix $prefix"
4369 echo "source path $source_path"
4370 echo "C compiler $cc"
4371 echo "ARCH $arch ($cpu)"
4372 if test "$build_suffix" != ""; then
4373 echo "build suffix $build_suffix"
4375 if test "$progs_suffix" != ""; then
4376 echo "progs suffix $progs_suffix"
4378 if test "$extra_version" != ""; then
4379 echo "version string suffix $extra_version"
4381 echo "big-endian ${bigendian-no}"
4382 echo "runtime cpu detection ${runtime_cpudetect-no}"
4383 if enabled x86; then
4384 echo "${yasmexe} ${yasm-no}"
4385 echo "MMX enabled ${mmx-no}"
4386 echo "MMXEXT enabled ${mmxext-no}"
4387 echo "3DNow! enabled ${amd3dnow-no}"
4388 echo "3DNow! extended enabled ${amd3dnowext-no}"
4389 echo "SSE enabled ${sse-no}"
4390 echo "SSSE3 enabled ${ssse3-no}"
4391 echo "AVX enabled ${avx-no}"
4392 echo "FMA4 enabled ${fma4-no}"
4393 echo "CMOV enabled ${cmov-no}"
4394 echo "CMOV is fast ${fast_cmov-no}"
4395 echo "EBX available ${ebx_available-no}"
4396 echo "EBP available ${ebp_available-no}"
4398 if enabled arm; then
4399 echo "ARMv5TE enabled ${armv5te-no}"
4400 echo "ARMv6 enabled ${armv6-no}"
4401 echo "ARMv6T2 enabled ${armv6t2-no}"
4402 echo "VFP enabled ${vfp-no}"
4403 echo "NEON enabled ${neon-no}"
4404 echo "THUMB enabled ${thumb-no}"
4406 if enabled mips; then
4407 echo "MIPS FPU enabled ${mipsfpu-no}"
4408 echo "MIPS32R2 enabled ${mips32r2-no}"
4409 echo "MIPS DSP R1 enabled ${mipsdspr1-no}"
4410 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
4412 if enabled ppc; then
4413 echo "AltiVec enabled ${altivec-no}"
4414 echo "PPC 4xx optimizations ${ppc4xx-no}"
4415 echo "dcbzl available ${dcbzl-no}"
4417 if enabled sparc; then
4418 echo "VIS enabled ${vis-no}"
4420 echo "debug symbols ${debug-no}"
4421 echo "strip symbols ${stripping-no}"
4422 echo "optimize for size ${small-no}"
4423 echo "optimizations ${optimizations-no}"
4424 echo "static ${static-no}"
4425 echo "shared ${shared-no}"
4426 echo "postprocessing support ${postproc-no}"
4427 echo "new filter support ${avfilter-no}"
4428 echo "network support ${network-no}"
4429 echo "threading support ${thread_type-no}"
4430 echo "safe bitstream reader ${safe_bitstream_reader-no}"
4431 echo "SDL support ${sdl-no}"
4432 echo "opencl enabled ${opencl-no}"
4433 echo "libshine enabled ${libshine-no}"
4434 echo "texi2html enabled ${texi2html-no}"
4435 echo "perl enabled ${perl-no}"
4436 echo "pod2man enabled ${pod2man-no}"
4437 echo "makeinfo enabled ${makeinfo-no}"
4438 test -n "$random_seed" &&
4439 echo "random seed ${random_seed}"
4442 echo "External libraries:"
4443 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
4446 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
4447 echo "Enabled ${type}s:"
4448 eval list=\$$(toupper $type)_LIST
4449 print_enabled '_*' $list | print_3_columns
4453 license="LGPL version 2.1 or later"
4454 if enabled nonfree; then
4455 license="nonfree and unredistributable"
4456 elif enabled gplv3; then
4457 license="GPL version 3 or later"
4458 elif enabled lgplv3; then
4459 license="LGPL version 3 or later"
4460 elif enabled gpl; then
4461 license="GPL version 2 or later"
4464 echo "License: $license"
4466 echo "Creating config.mak, config.h, and doc/config.texi..."
4468 test -e Makefile || $ln_s "$source_path/Makefile" .
4470 enabled stripping || strip="echo skipping strip"
4472 config_files="$TMPH config.mak doc/config.texi"
4474 cat > config.mak <<EOF
4475 # Automatically generated by configure - do not modify!
4476 ifndef FFMPEG_CONFIG_MAK
4478 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
4480 LIBDIR=\$(DESTDIR)$libdir
4481 SHLIBDIR=\$(DESTDIR)$shlibdir
4482 INCDIR=\$(DESTDIR)$incdir
4483 BINDIR=\$(DESTDIR)$bindir
4484 DATADIR=\$(DESTDIR)$datadir
4485 MANDIR=\$(DESTDIR)$mandir
4486 SRC_PATH=$source_path
4487 ifndef MAIN_MAKEFILE
4488 SRC_PATH:=\$(SRC_PATH:.%=..%)
4497 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
4499 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
4525 LDFLAGS-ffserver=$FFSERVERLDFLAGS
4526 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
4527 YASMFLAGS=$YASMFLAGS
4528 BUILDSUF=$build_suffix
4529 PROGSSUF=$progs_suffix
4537 EXTRA_VERSION=$extra_version
4540 CCDEP_FLAGS=$CCDEP_FLAGS
4542 ASDEP_FLAGS=$ASDEP_FLAGS
4543 CC_DEPFLAGS=$CC_DEPFLAGS
4544 AS_DEPFLAGS=$AS_DEPFLAGS
4547 HOSTCFLAGS=$host_cflags
4548 HOSTCPPFLAGS=$host_cppflags
4549 HOSTEXESUF=$HOSTEXESUF
4550 HOSTLDFLAGS=$host_ldflags
4553 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
4554 HOSTCCDEP=$HOSTCCDEP
4555 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
4556 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
4560 TARGET_EXEC=$target_exec $target_exec_args
4561 TARGET_PATH=$target_path
4562 LIBS-ffplay=$sdl_libs
4563 CFLAGS-ffplay=$sdl_cflags
4564 ZLIB=$($ldflags_filter -lz)
4565 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
4566 EXTRALIBS=$extralibs
4567 COMPAT_OBJS=$compat_objs
4570 LIBTARGET=${LIBTARGET}
4571 SLIBNAME=${SLIBNAME}
4572 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
4573 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
4574 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
4575 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
4576 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
4577 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
4578 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
4579 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
4580 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
4581 NOREDZONE_FLAGS=$noredzone_flags
4586 name=$(toupper $lcname)
4587 file=$source_path/$lcname/version.h
4588 eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
4589 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
4590 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
4591 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
4592 eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak
4595 map 'get_version $v' $LIBRARY_LIST
4598 /* Automatically generated by configure - do not modify! */
4599 #ifndef FFMPEG_CONFIG_H
4600 #define FFMPEG_CONFIG_H
4601 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
4602 #define FFMPEG_LICENSE "$(c_escape $license)"
4603 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
4604 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
4605 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
4606 #define av_restrict $_restrict
4607 #define EXTERN_PREFIX "${extern_prefix}"
4608 #define EXTERN_ASM ${extern_prefix}
4609 #define SLIBSUF "$SLIBSUF"
4610 #define HAVE_MMX2 HAVE_MMXEXT
4613 test -n "$assert_level" &&
4614 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
4616 test -n "$malloc_prefix" &&
4617 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
4619 if enabled yasm; then
4620 append config_files $TMPASM
4624 enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
4626 if enabled msvc && ! enabled shared; then
4627 echo '#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_strtod")' >> $TMPH
4628 echo '#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_snprintf")' >> $TMPH
4632 echo "@c auto-generated by configure" > doc/config.texi
4634 print_config ARCH_ "$config_files" $ARCH_LIST
4635 print_config HAVE_ "$config_files" $HAVE_LIST
4636 print_config CONFIG_ "$config_files" $CONFIG_LIST \
4640 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
4641 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
4643 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
4644 cp_if_changed $TMPH config.h
4647 enabled yasm && cp_if_changed $TMPASM config.asm
4650 /* Generated by ffconf */
4651 #ifndef AVUTIL_AVCONFIG_H
4652 #define AVUTIL_AVCONFIG_H
4655 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
4657 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
4659 cp_if_changed $TMPH libavutil/avconfig.h
4661 if test -n "$WARNINGS"; then
4662 printf "\n$WARNINGS"
4663 enabled fatal_warnings && exit 1
4666 # build pkg-config files
4668 pkgconfig_generate(){
4670 shortname=${name#lib}${build_suffix}
4675 enabled ${name#lib} || return 0
4677 cat <<EOF > $name/$name${build_suffix}.pc
4679 exec_prefix=\${prefix}
4684 Description: $comment
4686 Requires: $(enabled shared || echo $requires)
4687 Requires.private: $(enabled shared && echo $requires)
4689 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4690 Libs.private: $(enabled shared && echo $libs)
4691 Cflags: -I\${includedir}
4694 mkdir -p doc/examples/pc-uninstalled
4695 includedir=${source_path}
4696 [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
4697 cat <<EOF > doc/examples/pc-uninstalled/$name.pc
4700 libdir=\${pcfiledir}/../../../$name
4701 includedir=${includedir}
4704 Description: $comment
4708 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4709 Cflags: -I\${includedir}
4713 lavfi_libs="libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4714 enabled libavfilter_deps_avcodec && prepend lavfi_libs "libavcodec${build_suffix} = $LIBAVCODEC_VERSION,"
4715 enabled libavfilter_deps_avformat && prepend lavfi_libs "libavformat${build_suffix} = $LIBAVFORMAT_VERSION,"
4716 enabled libavfilter_deps_avresample && prepend lavfi_libs "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION,"
4717 enabled libavfilter_deps_swscale && prepend lavfi_libs "libswscale${build_suffix} = $LIBSWSCALE_VERSION,"
4718 enabled libavfilter_deps_swresample && prepend lavfi_libs "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION,"
4719 enabled libavfilter_deps_postproc && prepend lavfi_libs "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION,"
4720 lavfi_libs=${lavfi_libs%, }
4722 lavd_libs="libavformat${build_suffix} = $LIBAVFORMAT_VERSION"
4723 enabled lavfi_indev && prepend lavd_libs "libavfilter${build_suffix} = $LIBAVFILTER_VERSION,"
4725 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
4726 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4727 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION"
4728 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$lavd_libs"
4729 pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs"
4730 pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4731 pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4732 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4733 pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4735 fix_ffmpeg_remote(){
4738 fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq)
4739 if [ "$fixme_remote" != "" ]; then
4741 Outdated domain in git config, the official domain for ffmpeg git is since
4742 November 2011, source.ffmpeg.org, both the old and the new point to the same
4743 repository and server. To update it enter the following commands:
4745 for remote in $fixme_remote; do
4746 echolog "git remote set-url $remote $git_remote_to"
4751 if test -f "$source_path/.git/config"; then
4752 remote_from=git.videolan.org
4753 remote_to=source.ffmpeg.org
4754 fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg
4755 fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg