3 # FFmpeg configure script
5 # Copyright (c) 2000-2002 Fabrice Bellard
6 # Copyright (c) 2005-2008 Diego Biurrun
7 # Copyright (c) 2005-2008 Mans Rullgard
10 # Prevent locale nonsense from breaking basic text processing.
14 # make sure we are running under a compatible shell
15 # try to make this part work with most shells
18 echo "Trying shell $1"
19 type "$1" > /dev/null 2>&1 && exec "$@"
23 (: ${foo%%bar}) 2> /dev/null
26 (: ${foo?}) 2> /dev/null
29 if test "$E1" != 0 || test "$E2" = 0; then
30 echo "Broken shell detected. Trying alternatives."
32 if test "0$FF_CONF_EXEC" -lt 1; then
34 try_exec bash "$0" "$@"
36 if test "0$FF_CONF_EXEC" -lt 2; then
38 try_exec ksh "$0" "$@"
40 if test "0$FF_CONF_EXEC" -lt 3; then
42 try_exec /usr/xpg4/bin/sh "$0" "$@"
44 echo "No compatible shell script interpreter found."
45 echo "This configure script requires a POSIX-compatible shell"
46 echo "such as bash or ksh."
47 echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
48 echo "Instead, install a working POSIX-compatible shell."
49 echo "Disabling this configure test will create a broken FFmpeg."
50 if test "$BASH_VERSION" = '2.04.0(1)-release'; then
51 echo "This bash version ($BASH_VERSION) is broken on your platform."
52 echo "Upgrade to a later version if available."
57 test -d /usr/xpg4/bin && PATH=/usr/xpg4/bin:$PATH
61 Usage: configure [options]
62 Options: [defaults in brackets after descriptions]
65 --help print this message
66 --list-decoders show all available decoders
67 --list-encoders show all available encoders
68 --list-hwaccels show all available hardware accelerators
69 --list-demuxers show all available demuxers
70 --list-muxers show all available muxers
71 --list-parsers show all available parsers
72 --list-protocols show all available protocols
73 --list-bsfs show all available bitstream filters
74 --list-indevs show all available input devices
75 --list-outdevs show all available output devices
76 --list-filters show all available filters
79 --logfile=FILE log tests and output to FILE [config.log]
80 --disable-logging do not log configure debug information
81 --fatal-warnings fail if any configure warning is generated
82 --prefix=PREFIX install in PREFIX [$prefix]
83 --bindir=DIR install binaries in DIR [PREFIX/bin]
84 --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
85 --libdir=DIR install libs in DIR [PREFIX/lib]
86 --shlibdir=DIR install shared libs in DIR [PREFIX/lib]
87 --incdir=DIR install includes in DIR [PREFIX/include]
88 --mandir=DIR install man page in DIR [PREFIX/share/man]
91 --enable-gpl allow use of GPL code, the resulting libs
92 and binaries will be under GPL [no]
93 --enable-version3 upgrade (L)GPL to version 3 [no]
94 --enable-nonfree allow use of nonfree code, the resulting libs
95 and binaries will be unredistributable [no]
97 Configuration options:
98 --disable-static do not build static libraries [no]
99 --enable-shared build shared libraries [no]
100 --enable-small optimize for size instead of speed
101 --disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary)
102 --enable-gray enable full grayscale support (slower color)
103 --disable-swscale-alpha disable alpha channel support in swscale
104 --disable-all disable building components, libraries and programs
107 --disable-programs do not build command line programs
108 --disable-ffmpeg disable ffmpeg build
109 --disable-ffplay disable ffplay build
110 --disable-ffprobe disable ffprobe build
111 --disable-ffserver disable ffserver build
113 Documentation options:
114 --disable-doc do not build documentation
115 --disable-htmlpages do not build HTML documentation pages
116 --disable-manpages do not build man documentation pages
117 --disable-podpages do not build POD documentation pages
118 --disable-txtpages do not build text documentation pages
121 --disable-avdevice disable libavdevice build
122 --disable-avcodec disable libavcodec build
123 --disable-avformat disable libavformat build
124 --disable-avutil disable libavutil build
125 --disable-swresample disable libswresample build
126 --disable-swscale disable libswscale build
127 --disable-postproc disable libpostproc build
128 --disable-avfilter disable libavfilter build
129 --enable-avresample enable libavresample build [no]
130 --disable-pthreads disable pthreads [auto]
131 --disable-w32threads disable Win32 threads [auto]
132 --disable-os2threads disable OS/2 threads [auto]
133 --disable-network disable network support [no]
134 --disable-dct disable DCT code
135 --disable-dwt disable DWT code
136 --disable-error-resilience disable error resilience code
137 --disable-lsp disable LSP code
138 --disable-lzo disable LZO decoder code
139 --disable-mdct disable MDCT code
140 --disable-rdft disable RDFT code
141 --disable-fft disable FFT code
143 Hardware accelerators:
144 --disable-dxva2 disable DXVA2 code [autodetect]
145 --enable-vaapi enable VAAPI code
146 --enable-vda enable VDA code
147 --disable-vdpau disable VDPAU code [autodetect]
149 Individual component options:
150 --disable-everything disable all components listed below
151 --disable-encoder=NAME disable encoder NAME
152 --enable-encoder=NAME enable encoder NAME
153 --disable-encoders disable all encoders
154 --disable-decoder=NAME disable decoder NAME
155 --enable-decoder=NAME enable decoder NAME
156 --disable-decoders disable all decoders
157 --disable-hwaccel=NAME disable hwaccel NAME
158 --enable-hwaccel=NAME enable hwaccel NAME
159 --disable-hwaccels disable all hwaccels
160 --disable-muxer=NAME disable muxer NAME
161 --enable-muxer=NAME enable muxer NAME
162 --disable-muxers disable all muxers
163 --disable-demuxer=NAME disable demuxer NAME
164 --enable-demuxer=NAME enable demuxer NAME
165 --disable-demuxers disable all demuxers
166 --enable-parser=NAME enable parser NAME
167 --disable-parser=NAME disable parser NAME
168 --disable-parsers disable all parsers
169 --enable-bsf=NAME enable bitstream filter NAME
170 --disable-bsf=NAME disable bitstream filter NAME
171 --disable-bsfs disable all bitstream filters
172 --enable-protocol=NAME enable protocol NAME
173 --disable-protocol=NAME disable protocol NAME
174 --disable-protocols disable all protocols
175 --enable-indev=NAME enable input device NAME
176 --disable-indev=NAME disable input device NAME
177 --disable-indevs disable input devices
178 --enable-outdev=NAME enable output device NAME
179 --disable-outdev=NAME disable output device NAME
180 --disable-outdevs disable output devices
181 --disable-devices disable all devices
182 --enable-filter=NAME enable filter NAME
183 --disable-filter=NAME disable filter NAME
184 --disable-filters disable all filters
186 External library support:
187 --enable-avisynth enable reading of AVISynth script files [no]
188 --disable-bzlib disable bzlib [autodetect]
189 --enable-fontconfig enable fontconfig
190 --enable-frei0r enable frei0r video filtering
191 --enable-gnutls enable gnutls [no]
192 --disable-iconv disable iconv [autodetect]
193 --enable-libaacplus enable AAC+ encoding via libaacplus [no]
194 --enable-libass enable libass subtitles rendering [no]
195 --enable-libbluray enable BluRay reading using libbluray [no]
196 --enable-libcaca enable textual display using libcaca
197 --enable-libcelt enable CELT decoding via libcelt [no]
198 --enable-libcdio enable audio CD grabbing with libcdio
199 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
201 --enable-libfaac enable AAC encoding via libfaac [no]
202 --enable-libfdk-aac enable AAC encoding via libfdk-aac [no]
203 --enable-libflite enable flite (voice synthesis) support via libflite [no]
204 --enable-libfreetype enable libfreetype [no]
205 --enable-libgsm enable GSM de/encoding via libgsm [no]
206 --enable-libiec61883 enable iec61883 via libiec61883 [no]
207 --enable-libilbc enable iLBC de/encoding via libilbc [no]
208 --enable-libmodplug enable ModPlug via libmodplug [no]
209 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
210 --enable-libnut enable NUT (de)muxing via libnut,
211 native (de)muxer exists [no]
212 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
213 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
214 --enable-libopencv enable video filtering via libopencv [no]
215 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
216 --enable-libopus enable Opus decoding via libopus [no]
217 --enable-libpulse enable Pulseaudio input via libpulse [no]
218 --enable-libquvi enable quvi input via libquvi [no]
219 --enable-librtmp enable RTMP[E] support via librtmp [no]
220 --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
221 --enable-libshine enable fixed-point MP3 encoding via libshine [no]
222 --enable-libsoxr enable Include libsoxr resampling [no]
223 --enable-libspeex enable Speex de/encoding via libspeex [no]
224 --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no]
225 --enable-libtheora enable Theora encoding via libtheora [no]
226 --enable-libtwolame enable MP2 encoding via libtwolame [no]
227 --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no]
228 --enable-libv4l2 enable libv4l2/v4l-utils [no]
229 --enable-libvidstab enable video stabilization using vid.stab [no]
230 --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
231 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
232 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
233 native implementation exists [no]
234 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
235 --enable-libx264 enable H.264 encoding via x264 [no]
236 --enable-libxavs enable AVS encoding via xavs [no]
237 --enable-libxvid enable Xvid encoding via xvidcore,
238 native MPEG-4/Xvid encoder exists [no]
239 --enable-libzmq enable message passing via libzmq [no]
240 --enable-openal enable OpenAL 1.1 capture support [no]
241 --enable-opencl enable OpenCL code
242 --enable-openssl enable openssl [no]
243 --enable-x11grab enable X11 grabbing [no]
244 --disable-zlib disable zlib [autodetect]
246 Advanced options (experts only):
247 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
248 --enable-cross-compile assume a cross-compiler is used
249 --sysroot=PATH root of cross-build tree
250 --sysinclude=PATH location of cross-build system headers
251 --target-os=OS compiler targets OS [$target_os]
252 --target-exec=CMD command to run executables on target
253 --target-path=DIR path to view of build directory on target
254 --toolchain=NAME set tool defaults according to NAME
255 --nm=NM use nm tool NM [$nm_default]
256 --ar=AR use archive tool AR [$ar_default]
257 --as=AS use assembler AS [$as_default]
258 --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
259 --cc=CC use C compiler CC [$cc_default]
260 --cxx=CXX use C compiler CXX [$cxx_default]
261 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
262 --ld=LD use linker LD [$ld_default]
263 --host-cc=HOSTCC use host C compiler HOSTCC
264 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
265 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
266 --host-ld=HOSTLD use host linker HOSTLD
267 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
268 --host-libs=HLIBS use libs HLIBS when linking for host
269 --host-os=OS compiler host OS [$target_os]
270 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
271 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
272 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
273 --extra-libs=ELIBS add ELIBS [$ELIBS]
274 --extra-version=STRING version string suffix []
275 --optflags=OPTFLAGS override optimization-related compiler flags
276 --build-suffix=SUFFIX library name suffix []
277 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
278 --progs-suffix=SUFFIX program name suffix []
279 --arch=ARCH select architecture [$arch]
280 --cpu=CPU select the minimum required CPU (affects
281 instruction selection, may crash on older CPUs)
282 --enable-pic build position-independent code
283 --enable-sram allow use of on-chip SRAM
284 --enable-thumb compile for Thumb instruction set
285 --disable-symver disable symbol versioning
286 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
287 --disable-safe-bitstream-reader
288 disable buffer boundary checking in bitreaders
289 (faster, but may crash)
290 --enable-memalign-hack emulate memalign, interferes with memory debuggers
291 --enable-lto use link-time optimization
293 Optimization options (experts only):
294 --disable-asm disable all assembler optimizations
295 --disable-altivec disable AltiVec optimizations
296 --disable-amd3dnow disable 3DNow! optimizations
297 --disable-amd3dnowext disable 3DNow! extended optimizations
298 --disable-mmx disable MMX optimizations
299 --disable-mmxext disable MMXEXT optimizations
300 --disable-sse disable SSE optimizations
301 --disable-sse2 disable SSE2 optimizations
302 --disable-sse3 disable SSE3 optimizations
303 --disable-ssse3 disable SSSE3 optimizations
304 --disable-sse4 disable SSE4 optimizations
305 --disable-sse42 disable SSE4.2 optimizations
306 --disable-avx disable AVX optimizations
307 --disable-fma4 disable FMA4 optimizations
308 --disable-armv5te disable armv5te optimizations
309 --disable-armv6 disable armv6 optimizations
310 --disable-armv6t2 disable armv6t2 optimizations
311 --disable-vfp disable VFP optimizations
312 --disable-neon disable NEON optimizations
313 --disable-vis disable VIS optimizations
314 --disable-inline-asm disable use of inline assembler
315 --disable-yasm disable use of yasm assembler
316 --disable-mips32r2 disable MIPS32R2 optimizations
317 --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations
318 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
319 --disable-mipsfpu disable floating point MIPS optimizations
320 --disable-fast-unaligned consider unaligned accesses slow
322 Developer options (useful when working on FFmpeg itself):
323 --disable-debug disable debugging symbols
324 --enable-debug=LEVEL set the debug level [$debuglevel]
325 --disable-optimizations disable compiler optimizations
326 --enable-extra-warnings enable more compiler warnings
327 --disable-stripping disable stripping of executables and shared libraries
328 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
329 2 causes a slowdown at runtime.
330 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
331 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
332 leaks and errors, using the specified valgrind binary.
333 Cannot be combined with --target-exec
334 --enable-ftrapv Trap arithmetic overflows
335 --samples=PATH location of test samples for FATE, if not set use
336 \$FATE_SAMPLES at make invocation time.
337 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
338 should be used only for debugging purposes)
339 --enable-random randomly enable/disable components
341 --enable-random=LIST randomly enable/disable specific components or
342 --disable-random=LIST component groups. LIST is a comma-separated list
343 of NAME[:PROB] entries where NAME is a component
344 (group) and PROB the probability associated with
346 --random-seed=VALUE seed value for --enable/disable-random
348 NOTE: Object files are built at the place where configure is launched.
356 echo "$@" >> $logfile
361 pr -n -t $1 >> $logfile
372 WARNINGS="${WARNINGS}WARNING: $*\n"
379 If you think configure made a mistake, make sure you are using the latest
380 version from Git. If the latest version fails, report the problem to the
381 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
383 if disabled logging; then
385 Rerun configure with logging enabled (do not use --disable-logging), and
386 include the log this produces with your report.
390 Include the log file "$logfile" produced by configure as this will help
397 # Avoid locale weirdness, besides we really just want to translate ASCII.
399 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
403 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
407 echo "$*" | sed 's/["\\]/\\\0/g'
411 v=$(echo "$1" | sed "s/'/'\\\\''/g")
412 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
417 echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//'
424 eval "case $v in $pat) echo $v ;; esac"
432 eval "case $v in $pat) ;; *) echo $v ;; esac"
439 for v; do eval $m; done
445 for v; do echo ${v}${suffix}; done
460 eval : \${$var:=$value}
465 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
471 eval $(sanitize_var_name "$var")='$*'
475 eval echo \$$(sanitize_var_name "$1")
480 eval level=\${${pvar}_level:=0}
481 eval ${pvar}_${level}="\$$pvar"
482 eval ${pvar}_level=$(($level+1))
488 eval level=\${${pvar}_level:-0}
489 test $level = 0 && continue
490 eval level=$(($level-1))
491 eval $pvar="\${${pvar}_${level}}"
492 eval ${pvar}_level=$level
493 eval unset ${pvar}_${level}
515 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
521 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
527 enabled $var && continue
528 eval sel="\$${var}_select"
529 eval sgs="\$${var}_suggest"
533 enable_deep_weak $sgs
545 disabled $var && continue
554 test "${1#!}" = "$1" && op== || op=!=
555 eval test "x\$${1#!}" $op "xyes"
559 test "${1#!}" = "$1" && op== || op=!=
560 eval test "x\$${1#!}" $op "xno"
565 enabled $opt || return 1
571 disabled $opt || return 1
577 enabled $opt && return 0
583 disabled $opt && return 0
590 eval : \${$opt:=\$${opt}_default}
598 [ $var = $value ] && return 0
606 enabled ${cfg}_checking && die "Circular dependency for $cfg."
607 disabled ${cfg}_checking && continue
608 enable ${cfg}_checking
611 eval dep_all="\$${cfg}_deps"
612 eval dep_any="\$${cfg}_deps_any"
613 eval dep_sel="\$${cfg}_select"
614 eval dep_sgs="\$${cfg}_suggest"
615 eval dep_ifa="\$${cfg}_if"
616 eval dep_ifn="\$${cfg}_if_any"
618 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
619 do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
620 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
622 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
623 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
624 enabled_all $dep_all || disable $cfg
625 enabled_any $dep_any || disable $cfg
626 disabled_any $dep_sel && disable $cfg
628 if enabled $cfg; then
630 enable_deep_weak $dep_sgs
633 disable ${cfg}_checking
642 for cfg in $allopts; do
643 enabled $cfg || continue
644 eval dep_extralibs="\$${cfg}_extralibs"
645 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
653 map 'eval echo "$v \${$v:-no}"' "$@" |
654 awk "BEGIN { split(\"$files\", files) }
656 c = \"$pfx\" toupper(\$1);
662 if (file ~ /\\.h\$/) {
663 printf(\"#define %s %d\\n\", c, v) >>file;
664 } else if (file ~ /\\.asm\$/) {
665 printf(\"%%define %s %d\\n\", c, v) >>file;
666 } else if (file ~ /\\.mak\$/) {
667 n = -v ? \"\" : \"!\";
668 printf(\"%s%s=yes\\n\", n, c) >>file;
669 } else if (file ~ /\\.texi\$/) {
670 pre = -v ? \"\" : \"@c \";
673 gsub(/_/, \"-\", c2);
674 printf(\"%s@set %s %s\\n\", pre, c2, yesno) >>file;
684 enabled $v && printf "%s\n" ${v%$suf};
691 eval "$var=\"\$$var $*\""
697 eval "$var=\"$* \$$var\""
705 append CFLAGS $($cflags_filter "$@")
709 append CXXFLAGS $($cflags_filter "$@")
713 append ASFLAGS $($asflags_filter "$@")
717 append LDFLAGS $($ldflags_filter "$@")
721 prepend extralibs $($ldflags_filter "$@")
725 append host_cppflags "$@"
729 append host_cflags $($host_cflags_filter "$@")
733 append host_ldflags $($host_ldflags_filter "$@")
737 append compat_objs $1
739 map 'add_cppflags -D$v' "$@"
744 "$@" >> $logfile 2>&1
748 eval printf '%s\\n' $CC_O
752 eval printf '%s\\n' $CC_E
759 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
766 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
773 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
777 eval printf '%s\\n' $AS_O
784 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
788 log check_inline_asm "$@"
793 check_cc "$@" <<EOF && enable $name
794 void foo(void){ __asm__ volatile($code); }
800 check_inline_asm ${1}_inline "\"$2\""
801 echo "$2" | check_as && enable ${1}_external || disable ${1}_external
809 check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
813 eval printf '%s\\n' $LD_O
820 flags=$(filter_out '-l*|*.so' $@)
821 libs=$(filter '-l*|*.so' $@)
822 check_$type $($cflags_filter $flags) || return
823 flags=$($ldflags_filter $flags)
824 libs=$($ldflags_filter $libs)
825 check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
835 for hdr in $headers; do
836 echo "#include <$hdr>"
838 echo "int main(void) { $code; return 0; }"
839 } | check_$check "$@"
843 log check_cppflags "$@"
844 check_cc "$@" <<EOF && append CPPFLAGS "$@"
850 log check_cflags "$@"
851 set -- $($cflags_filter "$@")
852 check_cc "$@" <<EOF && append CFLAGS "$@"
858 log check_cxxflags "$@"
859 set -- $($cflags_filter "$@")
860 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
866 log test_ldflags "$@"
867 check_ld "cc" "$@" <<EOF
868 int main(void){ return 0; }
873 log check_ldflags "$@"
874 test_ldflags "$@" && add_ldflags "$@"
878 log check_header "$@"
882 check_cpp "$@" <<EOF && enable_safe $header
893 check_ld "cc" "$@" <<EOF && enable $func
895 int main(void){ $func(); }
900 log check_mathfunc "$@"
904 test $narg = 2 && args="f, g" || args="f"
906 check_ld "cc" "$@" <<EOF && enable $func
908 float foo(float f, float g) { return $func($args); }
909 int main(void){ return (int) foo; }
913 check_func_headers(){
914 log check_func_headers "$@"
919 for hdr in $headers; do
920 echo "#include <$hdr>"
922 for func in $funcs; do
923 echo "long check_$func(void) { return (long) $func; }"
925 echo "int main(void) { return 0; }"
926 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
929 check_class_headers_cpp(){
930 log check_class_headers_cpp "$@"
935 for hdr in $headers; do
936 echo "#include <$hdr>"
938 echo "int main(void) { "
940 for class in $classes; do
945 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
948 check_cpp_condition(){
949 log check_cpp_condition "$@"
956 #error "unsatisfied condition: $condition"
966 check_header $header && check_func $func "$@" && add_extralibs "$@"
974 check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
978 log check_lib_cpp "$@"
982 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
986 log check_pkg_config "$@"
991 $pkg_config --exists $pkg 2>/dev/null || return
992 pkg_cflags=$($pkg_config --cflags $pkg)
993 pkg_libs=$($pkg_config --libs $pkg)
994 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
995 set_safe ${pkg}_cflags $pkg_cflags &&
996 set_safe ${pkg}_libs $pkg_libs
1000 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
1006 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
1007 # are safe but may not be available everywhere. Thus we use
1008 # raise(SIGTERM) instead. The check is run in a subshell so we
1009 # can redirect the "Terminated" message from the shell. SIGBUS
1010 # is not defined by standard C so it is used conditionally.
1012 (check_exec "$@") >> $logfile 2>&1 <<EOF
1014 static void sighandler(int sig){
1020 int (*func_ptr)(void) = func;
1022 signal(SIGILL, sighandler);
1023 signal(SIGFPE, sighandler);
1024 signal(SIGSEGV, sighandler);
1026 signal(SIGBUS, sighandler);
1038 disable_safe "$type"
1039 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
1043 log check_struct "$@"
1048 disable_safe "${struct}_${member}"
1049 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1050 enable_safe "${struct}_${member}"
1054 log check_builtin "$@"
1060 check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1068 check_lib $header $func "$@" || die "ERROR: $name not found"
1076 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
1084 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1087 require_pkg_config(){
1089 check_pkg_config "$@" || die "ERROR: $pkg not found"
1090 add_cflags $(get_safe ${pkg}_cflags)
1091 add_extralibs $(get_safe ${pkg}_libs)
1095 eval printf '%s\\n' $HOSTCC_O
1099 log check_host_cc "$@"
1102 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1105 check_host_cppflags(){
1106 log check_host_cppflags "$@"
1107 check_host_cc "$@" <<EOF && append host_cppflags "$@"
1112 check_host_cflags(){
1113 log check_host_cflags "$@"
1114 set -- $($host_cflags_filter "$@")
1115 check_host_cc "$@" <<EOF && append host_cflags "$@"
1123 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
1127 cmp -s "$1" "$2" && echo "$2 is unchanged" && return
1128 mkdir -p "$(dirname $2)"
1132 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1133 # system-dependent things.
1149 EXTERNAL_LIBRARY_LIST="
1244 $EXTERNAL_LIBRARY_LIST
1257 incompatible_fork_abi
1268 safe_bitstream_reader
1363 incompatible_fork_abi
1396 $(add_suffix _external $ARCH_EXT_LIST)
1397 $(add_suffix _inline $ARCH_EXT_LIST)
1417 cdio_paranoia_paranoia_h
1425 dev_bktr_ioctl_bt848_h
1426 dev_bktr_ioctl_meteor_h
1428 dev_video_bktr_ioctl_bt848_h
1429 dev_video_meteor_ioctl_meteor_h
1445 GetProcessAffinityMask
1446 GetProcessMemoryInfo
1448 GetSystemTimeAsFileTime
1460 jack_port_get_latency_range
1470 machine_ioctl_bt848_h
1471 machine_ioctl_meteor_h
1484 openjpeg_1_5_openjpeg_h
1495 SetConsoleTextAttribute
1504 struct_group_source_req
1505 struct_ip_mreq_source
1508 struct_rusage_ru_maxrss
1509 struct_sctp_event_subscribe
1511 struct_sockaddr_sa_len
1512 struct_sockaddr_storage
1513 struct_v4l2_frmivalenum_discrete
1516 sync_val_compare_and_swap
1539 # options emitted with CONFIG_ prefix but not available on the command line
1545 frame_thread_encoder
1641 # code dependency declarations
1643 # architecture extensions
1652 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
1655 mips32r2_deps="mips"
1656 mipsdspr1_deps="mips"
1657 mipsdspr2_deps="mips"
1664 x86_64_suggest="fast_cmov i686"
1667 amd3dnowext_deps="amd3dnow"
1679 mmx_external_deps="yasm"
1680 mmx_inline_deps="inline_asm"
1681 mmx_suggest="mmx_external mmx_inline"
1683 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do
1684 eval dep=\$${ext}_deps
1685 eval ${ext}_external_deps='"${dep}_external"'
1686 eval ${ext}_inline_deps='"${dep}_inline"'
1687 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
1690 aligned_stack_if_any="ppc x86"
1691 fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1692 fast_clz_if_any="alpha avr32 mips ppc x86"
1693 fast_unaligned_if_any="ppc x86"
1695 inline_asm_deps="!tms470"
1696 need_memalign="altivec neon sse"
1698 symver_if_any="symver_asm_label symver_gnu_asm"
1704 error_resilience_select="dsputil"
1705 frame_thread_encoder_deps="encoders threads"
1706 lpc_select="dsputil"
1709 mpegaudio_select="mpegaudiodsp"
1710 mpegaudiodsp_select="dct"
1711 mpegvideo_select="dsputil h264chroma hpeldsp videodsp"
1712 mpegvideoenc_select="mpegvideo"
1714 # decoders / encoders
1715 aac_decoder_select="mdct sinewin"
1716 aac_encoder_select="audio_frame_queue mdct sinewin"
1717 aac_latm_decoder_select="aac_decoder aac_latm_parser"
1718 ac3_decoder_select="mdct ac3dsp ac3_parser dsputil"
1719 ac3_encoder_select="mdct ac3dsp dsputil"
1720 ac3_fixed_encoder_select="mdct ac3dsp dsputil"
1721 alac_encoder_select="lpc"
1722 als_decoder_select="dsputil"
1723 amrnb_decoder_select="lsp"
1724 amrwb_decoder_select="lsp"
1725 amv_decoder_select="dsputil hpeldsp"
1726 amv_encoder_select="aandcttables"
1727 ape_decoder_select="dsputil"
1728 asv1_decoder_select="dsputil"
1729 asv1_encoder_select="dsputil"
1730 asv2_decoder_select="dsputil"
1731 asv2_encoder_select="dsputil"
1732 atrac1_decoder_select="mdct sinewin"
1733 atrac3_decoder_select="mdct"
1734 bink_decoder_select="dsputil hpeldsp"
1735 binkaudio_dct_decoder_select="mdct rdft dct sinewin"
1736 binkaudio_rdft_decoder_select="mdct rdft sinewin"
1737 cavs_decoder_select="dsputil golomb h264chroma videodsp"
1738 cllc_decoder_select="dsputil"
1739 comfortnoise_encoder_select="lpc"
1740 cook_decoder_select="dsputil mdct sinewin"
1741 cscd_decoder_select="lzo"
1742 cscd_decoder_suggest="zlib"
1743 dca_decoder_select="mdct"
1744 dirac_decoder_select="dsputil dwt golomb videodsp"
1745 dnxhd_decoder_select="dsputil"
1746 dnxhd_encoder_select="aandcttables dsputil mpegvideoenc"
1747 dvvideo_decoder_select="dsputil"
1748 dvvideo_encoder_select="dsputil"
1749 dxa_decoder_select="zlib"
1750 eac3_decoder_select="ac3_decoder"
1751 eac3_encoder_select="ac3_encoder"
1752 eamad_decoder_select="aandcttables dsputil mpegvideo"
1753 eatgq_decoder_select="aandcttables"
1754 eatqi_decoder_select="aandcttables error_resilience mpegvideo"
1755 exr_decoder_select="zlib"
1756 ffv1_decoder_select="dsputil golomb rangecoder"
1757 ffv1_encoder_select="dsputil rangecoder"
1758 ffvhuff_decoder_select="dsputil"
1759 ffvhuff_encoder_select="dsputil huffman"
1760 flac_decoder_select="golomb"
1761 flac_encoder_select="dsputil golomb lpc"
1762 flashsv_decoder_select="zlib"
1763 flashsv_encoder_select="zlib"
1764 flashsv2_encoder_select="zlib"
1765 flashsv2_decoder_select="zlib"
1766 flv_decoder_select="h263_decoder"
1767 flv_encoder_select="h263_encoder"
1768 fourxm_decoder_select="dsputil"
1769 fraps_decoder_select="dsputil huffman"
1770 g729_decoder_select="dsputil"
1771 h261_decoder_select="error_resilience mpegvideo"
1772 h261_encoder_select="aandcttables mpegvideoenc"
1773 h263_decoder_select="error_resilience h263_parser mpegvideo"
1774 h263_encoder_select="aandcttables mpegvideoenc"
1775 h263i_decoder_select="h263_decoder"
1776 h263p_encoder_select="h263_encoder"
1777 h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1778 h264_decoder_suggest="error_resilience"
1779 huffyuv_decoder_select="dsputil"
1780 huffyuv_encoder_select="dsputil huffman"
1781 iac_decoder_select="dsputil fft mdct sinewin"
1782 imc_decoder_select="dsputil fft mdct sinewin"
1783 indeo3_decoder_select="hpeldsp"
1784 interplay_video_decoder_select="hpeldsp"
1785 jpegls_decoder_select="dsputil golomb hpeldsp"
1786 jpegls_encoder_select="golomb"
1787 jv_decoder_select="dsputil"
1788 lagarith_decoder_select="dsputil"
1789 ljpeg_encoder_select="aandcttables mpegvideoenc"
1790 loco_decoder_select="golomb"
1791 mdec_decoder_select="dsputil error_resilience mpegvideo"
1792 mimic_decoder_select="dsputil hpeldsp"
1793 mjpeg_decoder_select="dsputil hpeldsp"
1794 mjpegb_decoder_select="dsputil hpeldsp"
1795 mjpeg_encoder_select="aandcttables dsputil mpegvideoenc"
1796 mlp_decoder_select="dsputil mlp_parser"
1797 motionpixels_decoder_select="dsputil"
1798 mp1_decoder_select="mpegaudio"
1799 mp1float_decoder_select="mpegaudio"
1800 mp2_decoder_select="mpegaudio"
1801 mp2float_decoder_select="mpegaudio"
1802 mp3_decoder_select="mpegaudio"
1803 mp3adu_decoder_select="mpegaudio"
1804 mp3adufloat_decoder_select="mpegaudio"
1805 mp3float_decoder_select="mpegaudio"
1806 mp3on4_decoder_select="mpegaudio"
1807 mp3on4float_decoder_select="mpegaudio"
1808 mpc7_decoder_select="dsputil mpegaudiodsp"
1809 mpc8_decoder_select="dsputil mpegaudiodsp"
1810 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1811 mpeg_xvmc_decoder_select="mpeg2video_decoder"
1812 mpeg1video_decoder_select="error_resilience mpegvideo"
1813 mpeg1video_encoder_select="aandcttables mpegvideoenc"
1814 mpeg2video_decoder_select="error_resilience mpegvideo"
1815 mpeg2video_encoder_select="aandcttables mpegvideoenc"
1816 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1817 mpeg4_encoder_select="h263_encoder"
1818 msmpeg4v1_decoder_select="h263_decoder"
1819 msmpeg4v2_decoder_select="h263_decoder"
1820 msmpeg4v2_encoder_select="h263_encoder"
1821 msmpeg4v3_decoder_select="h263_decoder"
1822 msmpeg4v3_encoder_select="h263_encoder"
1823 mss2_decoder_select="error_resilience vc1_decoder"
1824 mxpeg_decoder_select="dsputil hpeldsp"
1825 nellymoser_decoder_select="mdct sinewin"
1826 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
1827 nuv_decoder_select="dsputil lzo"
1828 png_decoder_select="zlib"
1829 png_encoder_select="dsputil zlib"
1830 prores_decoder_select="dsputil"
1831 prores_encoder_select="dsputil"
1832 qcelp_decoder_select="lsp"
1833 qdm2_decoder_select="mdct rdft mpegaudiodsp"
1834 ra_144_encoder_select="audio_frame_queue lpc"
1835 ralf_decoder_select="golomb"
1836 rtjpeg_decoder_select="dsputil"
1837 rv10_decoder_select="error_resilience h263_decoder"
1838 rv10_encoder_select="h263_encoder"
1839 rv20_decoder_select="error_resilience h263_decoder"
1840 rv20_encoder_select="h263_encoder"
1841 rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1842 rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1843 shorten_decoder_select="golomb"
1844 sipr_decoder_select="lsp"
1845 snow_decoder_select="dsputil dwt h264qpel hpeldsp rangecoder"
1846 snow_encoder_select="aandcttables dsputil dwt h264qpel hpeldsp mpegvideoenc rangecoder"
1847 sonic_decoder_select="golomb"
1848 sonic_encoder_select="golomb"
1849 sonic_ls_encoder_select="golomb"
1850 sp5x_decoder_select="dsputil hpeldsp"
1851 svq1_decoder_select="hpeldsp"
1852 svq1_encoder_select="aandcttables dsputil hpeldsp mpegvideoenc"
1853 svq3_decoder_select="golomb h264chroma h264dsp h264pred h264qpel hpeldsp mpegvideo videodsp"
1854 svq3_decoder_suggest="error_resilience zlib"
1855 tak_decoder_select="dsputil"
1856 theora_decoder_select="vp3_decoder"
1857 tiff_decoder_suggest="zlib"
1858 tiff_encoder_suggest="zlib"
1859 thp_decoder_select="dsputil hpeldsp"
1860 truehd_decoder_select="mlp_parser"
1861 truemotion2_decoder_select="dsputil"
1862 truespeech_decoder_select="dsputil"
1863 tscc_decoder_select="zlib"
1864 twinvq_decoder_select="mdct lsp sinewin"
1865 utvideo_decoder_select="dsputil"
1866 utvideo_encoder_select="dsputil huffman"
1867 vble_decoder_select="dsputil"
1868 vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel"
1869 vc1image_decoder_select="vc1_decoder"
1870 vorbis_decoder_select="mdct"
1871 vorbis_encoder_select="mdct"
1872 vp3_decoder_select="hpeldsp vp3dsp videodsp"
1873 vp5_decoder_select="h264chroma hpeldsp videodsp vp3dsp"
1874 vp6_decoder_select="h264chroma hpeldsp huffman videodsp vp3dsp"
1875 vp6a_decoder_select="vp6_decoder"
1876 vp6f_decoder_select="vp6_decoder"
1877 vp8_decoder_select="h264pred videodsp"
1878 wmapro_decoder_select="mdct sinewin"
1879 wmav1_decoder_select="mdct sinewin"
1880 wmav1_encoder_select="mdct sinewin"
1881 wmav2_decoder_select="mdct sinewin"
1882 wmav2_encoder_select="mdct sinewin"
1883 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
1884 wmv1_decoder_select="h263_decoder"
1885 wmv1_encoder_select="h263_encoder"
1886 wmv2_decoder_select="h263_decoder videodsp"
1887 wmv2_encoder_select="h263_encoder"
1888 wmv3_decoder_select="vc1_decoder"
1889 wmv3image_decoder_select="wmv3_decoder"
1890 zerocodec_decoder_select="zlib"
1891 zlib_decoder_select="zlib"
1892 zlib_encoder_select="zlib"
1893 zmbv_decoder_select="zlib"
1894 zmbv_encoder_select="zlib"
1896 # hardware accelerators
1897 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
1898 dxva2_deps="dxva2api_h"
1899 vaapi_deps="va_va_h"
1900 vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
1901 vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
1902 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1904 h263_vaapi_hwaccel_deps="vaapi"
1905 h263_vaapi_hwaccel_select="h263_decoder"
1906 h263_vdpau_hwaccel_deps="vdpau"
1907 h263_vdpau_hwaccel_select="h263_decoder"
1908 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
1909 h264_dxva2_hwaccel_deps="dxva2"
1910 h264_dxva2_hwaccel_select="h264_decoder"
1911 h264_vaapi_hwaccel_deps="vaapi"
1912 h264_vaapi_hwaccel_select="h264_decoder"
1913 h264_vda_decoder_deps="vda"
1914 h264_vda_decoder_select="h264_decoder"
1915 h264_vda_hwaccel_deps="vda"
1916 h264_vda_hwaccel_select="h264_decoder"
1917 h264_vdpau_decoder_deps="vdpau"
1918 h264_vdpau_decoder_select="h264_decoder"
1919 h264_vdpau_hwaccel_deps="vdpau"
1920 h264_vdpau_hwaccel_select="h264_decoder"
1921 mpeg_vdpau_decoder_deps="vdpau"
1922 mpeg_vdpau_decoder_select="mpeg2video_decoder"
1923 mpeg1_vdpau_decoder_deps="vdpau"
1924 mpeg1_vdpau_decoder_select="mpeg1video_decoder"
1925 mpeg1_vdpau_hwaccel_deps="vdpau"
1926 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
1927 mpeg2_crystalhd_decoder_select="crystalhd"
1928 mpeg2_dxva2_hwaccel_deps="dxva2"
1929 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
1930 mpeg2_vaapi_hwaccel_deps="vaapi"
1931 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
1932 mpeg2_vdpau_hwaccel_deps="vdpau"
1933 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
1934 mpeg4_crystalhd_decoder_select="crystalhd"
1935 mpeg4_vaapi_hwaccel_deps="vaapi"
1936 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
1937 mpeg4_vdpau_decoder_deps="vdpau"
1938 mpeg4_vdpau_decoder_select="mpeg4_decoder"
1939 mpeg4_vdpau_hwaccel_deps="vdpau"
1940 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
1941 msmpeg4_crystalhd_decoder_select="crystalhd"
1942 vc1_crystalhd_decoder_select="crystalhd"
1943 vc1_dxva2_hwaccel_deps="dxva2"
1944 vc1_dxva2_hwaccel_select="vc1_decoder"
1945 vc1_vaapi_hwaccel_deps="vaapi"
1946 vc1_vaapi_hwaccel_select="vc1_decoder"
1947 vc1_vdpau_decoder_deps="vdpau"
1948 vc1_vdpau_decoder_select="vc1_decoder"
1949 vc1_vdpau_hwaccel_deps="vdpau"
1950 vc1_vdpau_hwaccel_select="vc1_decoder"
1951 wmv3_crystalhd_decoder_select="crystalhd"
1952 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
1953 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1954 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1955 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
1958 h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1959 mpeg4video_parser_select="error_resilience mpegvideo"
1960 mpegvideo_parser_select="error_resilience mpegvideo"
1961 vc1_parser_select="mpegvideo"
1963 # external libraries
1964 libaacplus_encoder_deps="libaacplus"
1965 libcelt_decoder_deps="libcelt"
1966 libfaac_encoder_deps="libfaac"
1967 libfaac_encoder_select="audio_frame_queue"
1968 libfdk_aac_encoder_deps="libfdk_aac"
1969 libfdk_aac_encoder_select="audio_frame_queue"
1970 libgsm_decoder_deps="libgsm"
1971 libgsm_encoder_deps="libgsm"
1972 libgsm_ms_decoder_deps="libgsm"
1973 libgsm_ms_encoder_deps="libgsm"
1974 libilbc_decoder_deps="libilbc"
1975 libilbc_encoder_deps="libilbc"
1976 libmodplug_demuxer_deps="libmodplug"
1977 libmp3lame_encoder_deps="libmp3lame"
1978 libmp3lame_encoder_select="audio_frame_queue"
1979 libopencore_amrnb_decoder_deps="libopencore_amrnb"
1980 libopencore_amrnb_encoder_deps="libopencore_amrnb"
1981 libopencore_amrnb_encoder_select="audio_frame_queue"
1982 libopencore_amrwb_decoder_deps="libopencore_amrwb"
1983 libopenjpeg_decoder_deps="libopenjpeg"
1984 libopenjpeg_encoder_deps="libopenjpeg"
1985 libopus_decoder_deps="libopus"
1986 libopus_encoder_deps="libopus"
1987 libopus_encoder_select="audio_frame_queue"
1988 libquvi_demuxer_deps="libquvi"
1989 libschroedinger_decoder_deps="libschroedinger"
1990 libschroedinger_encoder_deps="libschroedinger"
1991 libshine_encoder_deps="libshine"
1992 libshine_encoder_select="audio_frame_queue"
1993 libspeex_decoder_deps="libspeex"
1994 libspeex_encoder_deps="libspeex"
1995 libspeex_encoder_select="audio_frame_queue"
1996 libstagefright_h264_decoder_deps="libstagefright_h264"
1997 libtheora_encoder_deps="libtheora"
1998 libtwolame_encoder_deps="libtwolame"
1999 libvo_aacenc_encoder_deps="libvo_aacenc"
2000 libvo_aacenc_encoder_select="audio_frame_queue"
2001 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
2002 libvorbis_decoder_deps="libvorbis"
2003 libvorbis_encoder_deps="libvorbis"
2004 libvorbis_encoder_select="audio_frame_queue"
2005 libvpx_vp8_decoder_deps="libvpx"
2006 libvpx_vp8_encoder_deps="libvpx"
2007 libvpx_vp9_decoder_deps="libvpx"
2008 libvpx_vp9_encoder_deps="libvpx"
2009 libx264_encoder_deps="libx264"
2010 libx264rgb_encoder_deps="libx264"
2011 libxavs_encoder_deps="libxavs"
2012 libxvid_encoder_deps="libxvid"
2013 libutvideo_decoder_deps="libutvideo"
2014 libutvideo_encoder_deps="libutvideo"
2017 ac3_demuxer_select="ac3_parser"
2018 asf_stream_muxer_select="asf_muxer"
2019 avisynth_demuxer_deps="avisynth"
2020 dirac_demuxer_select="dirac_parser"
2021 dts_demuxer_select="dca_parser"
2022 dtshd_demuxer_select="dca_parser"
2023 eac3_demuxer_select="ac3_parser"
2024 f4v_muxer_select="mov_muxer"
2025 flac_demuxer_select="flac_parser"
2026 ipod_muxer_select="mov_muxer"
2027 ismv_muxer_select="mov_muxer"
2028 libnut_demuxer_deps="libnut"
2029 libnut_muxer_deps="libnut"
2030 matroska_audio_muxer_select="matroska_muxer"
2031 matroska_demuxer_suggest="bzlib lzo zlib"
2032 mov_demuxer_suggest="zlib"
2033 mov_muxer_select="rtpenc_chain"
2034 mp3_demuxer_select="mpegaudio_parser"
2035 mp4_muxer_select="mov_muxer"
2036 mpegts_muxer_select="adts_muxer latm_muxer"
2037 mpegtsraw_demuxer_select="mpegts_demuxer"
2038 mxf_d10_muxer_select="mxf_muxer"
2039 ogg_demuxer_select="golomb"
2040 psp_muxer_select="mov_muxer"
2041 rtp_demuxer_select="sdp_demuxer"
2042 rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
2043 rtsp_demuxer_select="http_protocol rtpdec"
2044 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
2045 sap_demuxer_select="sdp_demuxer"
2046 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
2047 sdp_demuxer_select="rtpdec"
2048 smoothstreaming_muxer_select="ismv_muxer"
2049 spdif_muxer_select="aac_parser"
2050 tak_demuxer_select="tak_parser"
2051 tg2_muxer_select="mov_muxer"
2052 tgp_muxer_select="mov_muxer"
2053 vobsub_demuxer_select="mpegps_demuxer"
2054 w64_demuxer_deps="wav_demuxer"
2055 w64_muxer_deps="wav_muxer"
2058 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
2059 alsa_outdev_deps="alsa_asoundlib_h"
2060 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2061 caca_outdev_deps="libcaca"
2062 dshow_indev_deps="IBaseFilter"
2063 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
2064 dv1394_indev_deps="dv1394 dv_demuxer"
2065 fbdev_indev_deps="linux_fb_h"
2066 iec61883_indev_deps="libiec61883"
2067 jack_indev_deps="jack_jack_h sem_timedwait"
2068 lavfi_indev_deps="avfilter"
2069 libcdio_indev_deps="libcdio"
2070 libdc1394_indev_deps="libdc1394"
2071 libv4l2_indev_deps="libv4l2"
2072 openal_indev_deps="openal"
2073 oss_indev_deps_any="soundcard_h sys_soundcard_h"
2074 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
2075 pulse_indev_deps="libpulse"
2076 sdl_outdev_deps="sdl"
2077 sndio_indev_deps="sndio_h"
2078 sndio_outdev_deps="sndio_h"
2079 v4l_indev_deps="linux_videodev_h"
2080 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
2081 vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
2082 vfwcap_indev_extralibs="-lavicap32"
2083 x11grab_indev_deps="x11grab"
2086 bluray_protocol_deps="libbluray"
2087 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
2088 ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl"
2089 ffrtmpcrypt_protocol_select="tcp_protocol"
2090 ffrtmphttp_protocol_deps="!librtmp_protocol"
2091 ffrtmphttp_protocol_select="http_protocol"
2092 gopher_protocol_select="network"
2093 httpproxy_protocol_select="tcp_protocol"
2094 http_protocol_select="tcp_protocol"
2095 https_protocol_select="tls_protocol"
2096 librtmp_protocol_deps="librtmp"
2097 librtmpe_protocol_deps="librtmp"
2098 librtmps_protocol_deps="librtmp"
2099 librtmpt_protocol_deps="librtmp"
2100 librtmpte_protocol_deps="librtmp"
2101 mmsh_protocol_select="http_protocol"
2102 mmst_protocol_select="network"
2103 rtmp_protocol_deps="!librtmp_protocol"
2104 rtmp_protocol_select="tcp_protocol"
2105 rtmpe_protocol_select="ffrtmpcrypt_protocol"
2106 rtmps_protocol_deps="!librtmp_protocol"
2107 rtmps_protocol_select="tls_protocol"
2108 rtmpt_protocol_select="ffrtmphttp_protocol"
2109 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
2110 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
2111 rtp_protocol_select="udp_protocol"
2112 sctp_protocol_deps="struct_sctp_event_subscribe"
2113 sctp_protocol_select="network"
2114 srtp_protocol_select="rtp_protocol"
2115 tcp_protocol_select="network"
2116 tls_protocol_deps_any="openssl gnutls"
2117 tls_protocol_select="tcp_protocol"
2118 udp_protocol_select="network"
2121 aconvert_filter_deps="swresample"
2122 amovie_filter_deps="avcodec avformat"
2123 aresample_filter_deps="swresample"
2124 ass_filter_deps="libass"
2125 asyncts_filter_deps="avresample"
2126 atempo_filter_deps="avcodec rdft"
2127 azmq_filter_deps="libzmq"
2128 blackframe_filter_deps="gpl"
2129 boxblur_filter_deps="gpl"
2130 colormatrix_filter_deps="gpl"
2131 cropdetect_filter_deps="gpl"
2132 dctdnoiz_filter_deps="avcodec"
2133 delogo_filter_deps="gpl"
2134 deshake_filter_deps="avcodec"
2135 deshake_filter_select="dsputil"
2136 drawtext_filter_deps="libfreetype"
2137 ebur128_filter_deps="gpl"
2138 flite_filter_deps="libflite"
2139 frei0r_filter_deps="frei0r dlopen"
2140 frei0r_filter_extralibs='$ldl'
2141 frei0r_src_filter_deps="frei0r dlopen"
2142 frei0r_src_filter_extralibs='$ldl'
2143 geq_filter_deps="gpl"
2144 histeq_filter_deps="gpl"
2145 hqdn3d_filter_deps="gpl"
2146 hue_filter_deps="gpl"
2147 interlace_filter_deps="gpl"
2148 kerndeint_filter_deps="gpl"
2149 movie_filter_deps="avcodec avformat"
2150 mp_filter_deps="gpl avcodec swscale inline_asm"
2151 mpdecimate_filter_deps="gpl avcodec"
2152 mptestsrc_filter_deps="gpl"
2153 negate_filter_deps="lut_filter"
2154 noise_filter_deps="gpl"
2155 resample_filter_deps="avresample"
2156 ocv_filter_deps="libopencv"
2157 owdenoise_filter_deps="gpl"
2158 pan_filter_deps="swresample"
2159 pp_filter_deps="gpl postproc"
2160 removelogo_filter_deps="avcodec avformat swscale"
2161 scale_filter_deps="swscale"
2162 smartblur_filter_deps="gpl swscale"
2163 showspectrum_filter_deps="avcodec rdft"
2164 stereo3d_filter_deps="gpl"
2165 subtitles_filter_deps="avformat avcodec libass"
2166 super2xsai_filter_deps="gpl"
2167 tinterlace_filter_deps="gpl"
2168 vidstabdetect_filter_deps="libvidstab"
2169 vidstabtransform_filter_deps="libvidstab"
2170 yadif_filter_deps="gpl"
2171 pixfmts_super2xsai_test_deps="super2xsai_filter"
2172 tinterlace_merge_test_deps="tinterlace_filter"
2173 tinterlace_pad_test_deps="tinterlace_filter"
2174 zmq_filter_deps="libzmq"
2177 avcodec_deps="avutil"
2178 avdevice_deps="avutil avcodec avformat"
2179 avfilter_deps="avutil"
2180 avformat_deps="avutil avcodec"
2181 avresample_deps="avutil"
2182 postproc_deps="avutil gpl"
2183 swscale_deps="avutil"
2186 ffmpeg_deps="avcodec avfilter avformat swscale swresample"
2187 ffmpeg_select="aformat_filter anull_filter atrim_filter format_filter
2189 setpts_filter trim_filter"
2190 ffplay_deps="avcodec avformat swscale swresample sdl"
2191 ffplay_select="rdft crop_filter"
2192 ffprobe_deps="avcodec avformat"
2193 ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
2194 ffserver_extralibs='$ldl'
2197 podpages_deps="perl"
2198 manpages_deps="perl pod2man"
2199 htmlpages_deps="texi2html"
2200 txtpages_deps="makeinfo"
2201 doc_deps_any="manpages htmlpages podpages txtpages"
2203 # default parameters
2205 logfile="config.log"
2207 # installation paths
2208 prefix_default="/usr/local"
2209 bindir_default='${prefix}/bin'
2210 datadir_default='${prefix}/share/ffmpeg'
2211 incdir_default='${prefix}/include'
2212 libdir_default='${prefix}/lib'
2213 mandir_default='${prefix}/share/man'
2214 shlibdir_default="$libdir_default"
2220 host_cc_default="gcc"
2226 pkg_config_default=pkg-config
2228 strip_default="strip"
2229 yasmexe_default="yasm"
2234 arch_default=$(uname -m)
2238 target_os_default=$(tolower $(uname -s))
2239 host_os=$target_os_default
2241 # configurable options
2242 enable $PROGRAM_LIST
2243 enable $DOCUMENT_LIST
2244 enable $(filter_out avresample $LIBRARY_LIST)
2250 enable optimizations
2251 enable runtime_cpudetect
2252 enable safe_bitstream_reader
2254 enable swscale_alpha
2256 # By default, enable only those hwaccels that have no external dependencies.
2260 SHFLAGS='-shared -Wl,-soname,$$(@F)'
2261 FFSERVERLDFLAGS=-Wl,-E
2264 FULLNAME='$(NAME)$(BUILDSUF)'
2265 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
2268 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
2269 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
2270 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
2271 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2272 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
2273 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2293 host_cflags='-O3 -g'
2294 host_cppflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600'
2296 host_cflags_filter=echo
2297 host_ldflags_filter=echo
2299 target_path='$(CURDIR)'
2301 # since the object filename is not given with the -MM flag, the compiler
2302 # is only able to print the basename, and we must add the path ourselves
2303 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
2307 if test -f configure; then
2310 source_path=$(cd $(dirname "$0"); pwd)
2311 echo "$source_path" | grep -q '[[:blank:]]' &&
2312 die "Out of tree builds are impossible with whitespace in source path."
2313 test -e "$source_path/config.h" &&
2314 die "Out of tree builds are impossible with config.h in source dir."
2321 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
2327 file=$source_path/$3
2328 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
2331 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
2332 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
2333 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
2334 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
2335 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c)
2336 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
2337 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
2338 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
2339 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
2340 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
2341 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
2357 for n in $COMPONENT_LIST; do
2358 v=$(toupper ${n%s})_LIST
2360 eval ${n}_if_any="\$$v"
2363 enable $ARCH_EXT_LIST
2366 echo "Unknown option \"$1\"."
2367 echo "See $0 --help for available options."
2372 cat | tr ' ' '\n' | sort | pr -r -3 -t
2378 echo $* | sed s/$suffix//g | print_3_columns
2390 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
2391 echo "prob ${prob:-0.5}"
2399 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
2400 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
2410 add_extralibs $optval
2413 disable $INDEV_LIST $OUTDEV_LIST
2416 debuglevel="$optval"
2419 disable $PROGRAM_LIST
2421 --disable-everything)
2422 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2425 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2426 disable $LIBRARY_LIST $PROGRAM_LIST doc
2428 --enable-random|--disable-random)
2429 action=${opt%%-random}
2430 do_random ${action#--} $COMPONENT_LIST
2432 --enable-random=*|--disable-random=*)
2433 action=${opt%%-random=*}
2434 do_random ${action#--} $optval
2436 --enable-*=*|--disable-*=*)
2437 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
2438 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
2439 eval list=\$$(toupper $thing)_LIST
2440 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
2441 list=$(filter "$name" $list)
2442 [ "$list" = "" ] && warn "Option $opt did not match anything"
2445 --enable-?*|--disable-?*)
2446 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
2447 if is_in $option $COMPONENT_LIST; then
2448 test $action = disable && action=unset
2449 eval $action \$$(toupper ${option%s})_LIST
2450 elif is_in $option $CMDLINE_SELECT; then
2457 NAME="${opt#--list-}"
2458 is_in $NAME $COMPONENT_LIST || die_unknown $opt
2460 eval show_list $NAME \$$(toupper $NAME)_LIST
2462 --help|-h) show_help
2464 --fatal-warnings) enable fatal_warnings
2467 optname="${opt%%=*}"
2468 optname="${optname#--}"
2469 optname=$(echo "$optname" | sed 's/-/_/g')
2470 if is_in $optname $CMDLINE_SET; then
2471 eval $optname='$optval'
2472 elif is_in $optname $CMDLINE_APPEND; then
2473 append $optname "$optval"
2481 disabled logging && logfile=/dev/null
2483 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
2486 test -n "$cross_prefix" && enable cross_compile
2488 if enabled cross_compile; then
2489 test -n "$arch" && test -n "$target_os" ||
2490 die "Must specify target arch and OS when cross-compiling"
2493 ar_default="${cross_prefix}${ar_default}"
2494 cc_default="${cross_prefix}${cc_default}"
2495 cxx_default="${cross_prefix}${cxx_default}"
2496 nm_default="${cross_prefix}${nm_default}"
2497 pkg_config_default="${cross_prefix}${pkg_config_default}"
2498 ranlib="${cross_prefix}${ranlib}"
2499 strip_default="${cross_prefix}${strip_default}"
2501 sysinclude_default="${sysroot}/usr/include"
2503 test -n "$valgrind" && toolchain="valgrind-memcheck"
2505 case "$toolchain" in
2508 add_cflags -fsanitize=address
2509 add_ldflags -fsanitize=address
2513 add_cflags -fsanitize=thread -pie
2514 add_ldflags -fsanitize=thread -pie
2517 target_exec_default=${valgrind:-"valgrind"}
2518 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"
2521 cc_default="c99wrap cl"
2522 ld_default="c99wrap link"
2523 nm_default="dumpbin -symbols"
2525 target_os_default="win32"
2528 add_cflags -fprofile-arcs -ftest-coverage
2529 add_ldflags -fprofile-arcs -ftest-coverage
2532 die "Unknown toolchain $toolchain"
2536 set_default arch cc cxx pkg_config strip sysinclude target_exec target_os yasmexe
2537 enabled cross_compile || host_cc_default=$cc
2540 if ! $pkg_config --version >/dev/null 2>&1; then
2541 warn "$pkg_config not found, library detection may fail."
2547 mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
2551 EXESUF=$(exesuf $target_os)
2552 HOSTEXESUF=$(exesuf $host_os)
2554 # set temporary file name
2555 : ${TMPDIR:=$TEMPDIR}
2559 if ! check_cmd mktemp -u XXXXXX; then
2560 # simple replacement for missing mktemp
2561 # NOT SAFE FOR GENERAL USE
2563 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
2568 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
2569 (set -C; exec > $tmp) 2>/dev/null ||
2570 die "Unable to create temporary file in $TMPDIR."
2571 append TMPFILES $tmp
2575 trap 'rm -f -- $TMPFILES' EXIT
2580 tmpfile TMPE $EXESUF
2591 # make sure we can execute files in $TMPDIR
2592 cat > $TMPSH 2>> $logfile <<EOF
2595 chmod +x $TMPSH >> $logfile 2>&1
2596 if ! $TMPSH >> $logfile 2>&1; then
2598 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
2599 variable to another directory and make sure that it is not mounted noexec.
2601 die "Sanity test failed."
2607 -std=c99) echo -c99 ;;
2608 -mcpu=*) echo -arch ${flag#*=} ;;
2609 -mieee) echo -ieee ;;
2610 -O*|-fast) echo $flag ;;
2611 -fno-math-errno) echo -assume nomath_errno ;;
2613 -Wall) echo -msg_enable level2 ;;
2614 -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
2615 -Wl,*) echo $flag ;;
2625 -fomit-frame-pointer) echo -Oy ;;
2627 -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
2628 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
2629 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
2635 -fno-signed-zeros) ;;
2637 -lz) echo zlib.lib ;;
2638 -lavifil32) echo vfw32.lib ;;
2639 -lavicap32) echo vfw32.lib user32.lib ;;
2640 -l*) echo ${flag#-l}.lib ;;
2649 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
2650 -fomit-frame-pointer) echo -Mnoframe ;;
2661 case "${flag#*=}" in
2662 native) echo -xtarget=native ;;
2663 v9|niagara) echo -xarch=sparc ;;
2664 ultrasparc) echo -xarch=sparcvis ;;
2665 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
2666 i586|pentium) echo -xchip=pentium ;;
2667 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
2668 pentium3*|c3-2) echo -xtarget=pentium3 ;;
2669 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
2670 pentium4*) echo -xtarget=pentium4 ;;
2671 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
2672 *-sse3) echo -xarch=sse3 ;;
2673 core2) echo -xarch=ssse3 -xchip=core2 ;;
2674 corei7) echo -xarch=sse4_2 -xchip=nehalem ;;
2675 corei7-avx) echo -xarch=avx -xchip=sandybridge ;;
2676 amdfam10|barcelona) echo -xtarget=barcelona ;;
2677 bdver*) echo -xarch=avx ;;
2678 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
2679 k8|opteron|athlon64|athlon-fx)
2680 echo -xarch=sse2a ;;
2681 athlon*) echo -xarch=pentium_proa ;;
2684 -std=c99) echo -xc99 ;;
2685 -fomit-frame-pointer) echo -xregs=frameptr ;;
2686 -fPIC) echo -KPIC -xcode=pic32 ;;
2687 -W*,*) echo $flag ;;
2688 -f*-*|-W*|-mimpure-text) ;;
2699 case "${flag#*=}" in
2700 armv7-a|cortex-a*) echo -mv=7a8 ;;
2701 armv7-r|cortex-r*) echo -mv=7r4 ;;
2702 armv7-m|cortex-m*) echo -mv=7m3 ;;
2703 armv6*|arm11*) echo -mv=6 ;;
2704 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
2706 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
2709 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
2710 -mfpu=vfp) echo --float_support=vfpv2 ;;
2711 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
2712 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
2713 -msoft-float) echo --float_support=vfplib ;;
2714 -O[0-3]|-mf=*) echo $flag ;;
2716 -pds=*) echo $flag ;;
2717 -D*|-I*) echo $flag ;;
2718 --gcc|--abi=*) echo $flag ;;
2728 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
2729 unset _ld_o _ldflags _ld_lib _ld_path
2730 unset _depflags _DEPCMD _DEPFLAGS
2733 if $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
2735 gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)')
2736 _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver"
2737 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2740 elif $_cc -v 2>&1 | grep -qi ^gcc; then
2742 gcc_version=$($_cc --version | head -n1)
2743 gcc_basever=$($_cc -dumpversion)
2744 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
2745 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
2746 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
2747 if ! $_cc -dumpversion | grep -q '^2\.'; then
2748 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2752 elif $_cc --version 2>/dev/null | grep -q ^icc; then
2754 _ident=$($_cc --version | head -n1)
2759 elif $_cc -v 2>&1 | grep -q xlc; then
2761 _ident=$($_cc -qversion 2>/dev/null | head -n1)
2763 _cflags_size='-O5 -qcompact'
2764 elif $_cc -V 2>/dev/null | grep -q Compaq; then
2766 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
2768 _cflags_speed='-fast'
2770 _flags_filter=ccc_flags
2771 elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
2772 test -d "$sysroot" || die "No valid sysroot specified."
2774 _ident=$($_cc --vsn | head -n1)
2775 armcc_conf="$PWD/armcc.conf"
2776 $_cc --arm_linux_configure \
2777 --arm_linux_config_file="$armcc_conf" \
2778 --configure_sysroot="$sysroot" \
2779 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
2780 die "Error creating armcc configuration file."
2781 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
2782 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
2783 as_default="${cross_prefix}gcc"
2787 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
2789 _ident=$($_cc -version | head -n1 | tr -s ' ')
2790 _flags='--gcc --abi=eabi -me'
2793 _depflags='-ppa -ppd=$(@:.o=.d)'
2794 _cflags_speed='-O3 -mf=5'
2795 _cflags_size='-O3 -mf=2'
2796 _flags_filter=tms470_flags
2797 elif $_cc -v 2>&1 | grep -q clang; then
2799 _ident=$($_cc --version | head -n1)
2803 elif $_cc -V 2>&1 | grep -q Sun; then
2805 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
2806 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2807 _DEPFLAGS='-xM1 -xc99'
2810 _cflags_size='-O5 -xspace'
2811 _flags_filter=suncc_flags
2812 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
2814 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2815 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2818 _flags_filter='filter_out -Wdisabled-optimization'
2819 elif $_cc -v 2>&1 | grep -q Open64; then
2821 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2822 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2825 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
2826 elif $_cc -V 2>&1 | grep -q Portland; then
2828 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
2829 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
2830 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
2831 _cflags_size="-O2 -Munroll=c:1 $opt_common"
2833 _flags_filter=pgi_flags
2834 elif $_cc 2>&1 | grep -q Microsoft; then
2836 _ident=$($cc 2>&1 | head -n1)
2837 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
2838 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
2841 # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it
2842 if $_cc 2>&1 | grep -q Linker; then
2849 _flags_filter=msvc_flags
2851 _ld_path='-libpath:'
2853 _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64'
2854 if [ $pfx = hostcc ]; then
2855 append _cflags -Dsnprintf=_snprintf
2860 eval ${pfx}_type=\$_type
2861 eval ${pfx}_ident=\$_ident
2865 eval ${1}_C=\${_cc_c-\${${1}_C}}
2866 eval ${1}_E=\${_cc_e-\${${1}_E}}
2867 eval ${1}_O=\${_cc_o-\${${1}_O}}
2869 if [ -n "$_depflags" ]; then
2870 eval ${1}_DEPFLAGS=\$_depflags
2872 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
2873 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
2874 eval DEP${1}FLAGS=\$_flags
2879 cflags_filter=$_flags_filter
2880 cflags_speed=$_cflags_speed
2881 cflags_size=$_cflags_size
2882 cflags_noopt=$_cflags_noopt
2883 add_cflags $_flags $_cflags
2884 cc_ldflags=$_ldflags
2887 probe_cc hostcc "$host_cc"
2888 host_cflags_filter=$_flags_filter
2889 add_host_cflags $_flags $_cflags
2892 test -n "$cc_type" && enable $cc_type ||
2893 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
2895 : ${as_default:=$cc}
2896 : ${dep_cc_default:=$cc}
2897 : ${ld_default:=$cc}
2898 : ${host_ld_default:=$host_cc}
2899 set_default ar as dep_cc ld host_ld
2902 asflags_filter=$_flags_filter
2903 add_asflags $_flags $_cflags
2907 ldflags_filter=$_flags_filter
2908 add_ldflags $_flags $_ldflags
2909 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
2911 LD_LIB=${_ld_lib-$LD_LIB}
2912 LD_PATH=${_ld_path-$LD_PATH}
2914 probe_cc hostld "$host_ld"
2915 host_ldflags_filter=$_flags_filter
2916 add_host_ldflags $_flags $_ldflags
2917 HOSTLD_O=${_ld_o-$HOSTLD_O}
2919 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
2920 probe_cc depcc "$dep_cc"
2921 CCDEP=${_DEPCMD:-$DEPCMD}
2922 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
2926 if $ar 2>&1 | grep -q Microsoft; then
2929 elif $ar 2>&1 | grep -q 'Texas Instruments'; then
2937 add_cflags $extra_cflags
2938 add_cxxflags $extra_cxxflags
2939 add_asflags $extra_cflags
2941 if test -n "$sysroot"; then
2944 add_cppflags --sysroot="$sysroot"
2945 add_ldflags --sysroot="$sysroot"
2948 add_cppflags -I"$sysinclude"
2949 add_ldflags --sysroot="$sysroot"
2954 if test "$cpu" = host; then
2955 enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
2960 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
2962 s/.*$1=\\([^ ]*\\).*/\\1/
2967 cpu=$(check_native -march || check_native -mcpu)
2971 test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
2974 # Deal with common $arch aliases
2988 "Power Macintosh"|ppc*|powerpc*)
3003 i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
3008 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
3011 # Add processor-specific flags
3012 if enabled aarch64; then
3016 cpuflags="-march=$cpu"
3019 cpuflags="-mcpu=$cpu"
3023 elif enabled alpha; then
3025 cpuflags="-mcpu=$cpu"
3027 elif enabled arm; then
3030 check_cpp_condition stddef.h \
3031 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
3036 if check_arm_arch 4; then echo armv4;
3037 elif check_arm_arch 4T; then echo armv4t;
3038 elif check_arm_arch 5; then echo armv5;
3039 elif check_arm_arch 5E; then echo armv5e;
3040 elif check_arm_arch 5T; then echo armv5t;
3041 elif check_arm_arch 5TE; then echo armv5te;
3042 elif check_arm_arch 5TEJ; then echo armv5te;
3043 elif check_arm_arch 6; then echo armv6;
3044 elif check_arm_arch 6J; then echo armv6j;
3045 elif check_arm_arch 6K; then echo armv6k;
3046 elif check_arm_arch 6Z; then echo armv6z;
3047 elif check_arm_arch 6ZK; then echo armv6zk;
3048 elif check_arm_arch 6T2; then echo armv6t2;
3049 elif check_arm_arch 7; then echo armv7;
3050 elif check_arm_arch 7A 7_A; then echo armv7-a;
3051 elif check_arm_arch 7R 7_R; then echo armv7-r;
3052 elif check_arm_arch 7M 7_M; then echo armv7-m;
3053 elif check_arm_arch 7EM 7E_M; then echo armv7-m;
3054 elif check_arm_arch 8A 8_A; then echo armv8-a;
3058 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
3062 cpuflags="-march=$cpu"
3063 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
3066 cpuflags="-mcpu=$cpu"
3068 cortex-a*) subarch=armv7a ;;
3069 cortex-r*) subarch=armv7r ;;
3070 cortex-m*) enable thumb; subarch=armv7m ;;
3071 arm11*) subarch=armv6 ;;
3072 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
3073 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
3074 *) subarch=$(probe_arm_arch) ;;
3080 armv5t*) enable fast_clz ;;
3081 armv[6-8]*) enable fast_clz fast_unaligned ;;
3084 elif enabled avr32; then
3089 cpuflags="-mpart=$cpu"
3093 cpuflags="-march=$cpu"
3097 cpuflags="-mcpu=$cpu"
3101 cpuflags="-march=$cpu"
3105 elif enabled bfin; then
3107 cpuflags="-mcpu=$cpu"
3109 elif enabled mips; then
3111 cpuflags="-march=$cpu"
3127 24kef*|34kf*|1004kf*)
3135 elif enabled ppc; then
3137 case $(tolower $cpu) in
3138 601|ppc601|powerpc601)
3139 cpuflags="-mcpu=601"
3142 603*|ppc603*|powerpc603*)
3143 cpuflags="-mcpu=603"
3146 604*|ppc604*|powerpc604*)
3147 cpuflags="-mcpu=604"
3150 g3|75*|ppc75*|powerpc75*)
3151 cpuflags="-mcpu=750"
3154 g4|745*|ppc745*|powerpc745*)
3155 cpuflags="-mcpu=7450"
3157 74*|ppc74*|powerpc74*)
3158 cpuflags="-mcpu=7400"
3160 g5|970|ppc970|powerpc970)
3161 cpuflags="-mcpu=970"
3164 cpuflags="-mcpu=$cpu"
3167 cpuflags="-mcpu=cell"
3171 cpuflags="-mcpu=e500mc"
3175 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
3179 cpuflags="-mcpu=8540 -mhard-float"
3184 elif enabled sparc; then
3187 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
3188 cpuflags="-mcpu=$cpu"
3191 ultrasparc*|niagara[234])
3192 cpuflags="-mcpu=$cpu"
3196 elif enabled x86; then
3200 cpuflags="-march=$cpu"
3203 # targets that do NOT support nopl and conditional mov (cmov)
3204 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
3205 cpuflags="-march=$cpu"
3208 # targets that do support nopl and conditional mov (cmov)
3209 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*)
3210 cpuflags="-march=$cpu"
3214 # targets that do support conditional mov but on which it's slow
3215 pentium4|pentium4m|prescott|nocona)
3216 cpuflags="-march=$cpu"
3224 if [ "$cpu" != generic ]; then
3225 add_cflags $cpuflags
3226 add_asflags $cpuflags
3229 # compiler sanity check
3231 int main(void){ return 0; }
3233 if test "$?" != 0; then
3234 echo "$cc is unable to create an executable file."
3235 if test -z "$cross_prefix" && ! enabled cross_compile ; then
3236 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
3237 echo "Only do this if you know what cross compiling means."
3239 die "C compiler test failed."
3242 add_cppflags -D_ISOC99_SOURCE
3243 add_cxxflags -D__STDC_CONSTANT_MACROS
3244 check_cflags -std=c99
3245 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
3248 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
3252 check_host_cflags -std=c99
3253 check_host_cflags -Wall
3259 check_code cc "" "int test[2*($expr) - 1]" &&
3260 subarch=$arch64 || subarch=$arch32
3268 check_64bit mips mips64 '_MIPS_SIM > 1'
3272 check_64bit parisc parisc64 'sizeof(void *) > 4'
3276 check_64bit ppc ppc64 'sizeof(void *) > 4'
3280 check_64bit sparc sparc64 'sizeof(void *) > 4'
3284 check_64bit x86_32 x86_64 'sizeof(void *) > 4'
3285 if test "$subarch" = "x86_64"; then
3290 check_cc <<EOF && subarch="ppc64"
3291 int test[(int)sizeof(char*) - 7];
3297 enabled spic && enable_weak pic
3302 prefix_default="/boot/common"
3303 network_extralibs="-lnetwork"
3308 SHFLAGS='-shared -Wl,-h,$$(@F)'
3309 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
3310 network_extralibs="-lsocket -lnsl"
3311 add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
3312 # When using suncc to build, the Solaris linker will mark
3313 # an executable with each instruction set encountered by
3314 # the Solaris assembler. As our libraries contain their own
3315 # guards for processor-specific code, instead suppress
3316 # generation of the HWCAPS ELF section on Solaris x86 only.
3317 enabled_all suncc x86 && echo "hwcap_1 = OVERRIDE;" > mapfile && add_ldflags -Wl,-M,mapfile
3318 nm_default='nm -P -g'
3322 oss_indev_extralibs="-lossaudio"
3323 oss_outdev_extralibs="-lossaudio"
3324 enabled gcc || check_ldflags -Wl,-zmuldefs
3329 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
3331 oss_indev_extralibs="-lossaudio"
3332 oss_outdev_extralibs="-lossaudio"
3340 add_extralibs -lpoll -lgnugetopt
3344 gas="gas-preprocessor.pl $cc"
3345 enabled ppc && add_asflags -force_cpusubtype_ALL
3346 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
3347 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
3349 add_ldflags -Wl,-dynamic,-search_paths_first
3351 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
3352 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
3353 FFSERVERLDFLAGS=-Wl,-bind_at_load
3355 enabled x86_64 && objformat="macho64"
3356 enabled_any pic shared ||
3357 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
3360 if test $target_os = "mingw32ce"; then
3366 if enabled x86_64; then
3367 LIBTARGET="i386:x86-64"
3368 elif enabled arm; then
3371 check_ldflags -Wl,--nxcompat
3372 check_ldflags -Wl,--dynamicbase
3373 shlibdir_default="$bindir_default"
3376 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3377 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3378 dlltool="${cross_prefix}dlltool"
3379 if check_cmd lib.exe -list; then
3380 SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3381 if enabled x86_64; then
3384 elif check_cmd $dlltool --version; then
3385 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)'
3387 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3389 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3390 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3391 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'
3398 if enabled shared; then
3399 # Link to the import library instead of the normal static library
3402 # Cannot build shared and static libraries at the same time with
3406 shlibdir_default="$bindir_default"
3409 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3410 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3411 SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3412 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3414 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3415 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3416 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3424 shlibdir_default="$bindir_default"
3427 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3428 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3429 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3431 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
3432 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
3437 *-dos|freedos|opendos)
3438 network_extralibs="-lsocket"
3441 add_cppflags -U__STRICT_ANSI__
3448 ranlib="echo ignoring ranlib"
3454 add_cppflags -D_GNU_SOURCE
3455 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
3456 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
3461 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3462 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
3463 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
3464 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
3465 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
3466 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
3467 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
3468 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
3469 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
3470 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
3471 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
3473 enable_weak os2threads
3476 add_cppflags -D_BSD_SOURCE
3481 add_cppflags -D_QNX_SOURCE
3482 network_extralibs="-lsocket"
3487 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
3488 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
3489 add_ldflags -Wl,--target1-abs,--no-undefined \
3490 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
3491 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
3492 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
3493 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
3494 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
3497 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
3503 add_cppflags -D_C99_SNPRINTF_EXTENSION \
3504 -D_REENTRANT_SOURCE \
3505 -D_RESEARCH_SOURCE \
3508 add_compat strtod.o strtod=avpriv_strtod
3509 network_extralibs='-lbsd'
3510 exeobjs=compat/plan9/main.o
3517 die "Unknown OS '$target_os'."
3521 # determine libc flavour
3523 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
3524 if check_cpp_condition features.h "defined __UCLIBC__"; then
3526 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3527 elif check_cpp_condition features.h "defined __GLIBC__"; then
3529 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3530 # MinGW headers can be installed on Cygwin, so check for newlib first.
3531 elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
3533 add_cppflags -U__STRICT_ANSI__
3534 elif check_header _mingw.h; then
3536 check_cpp_condition _mingw.h \
3537 "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
3538 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
3539 die "ERROR: MinGW runtime version must be >= 3.15."
3540 add_cppflags -U__STRICT_ANSI__
3541 if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \
3542 __MINGW64_VERSION_MAJOR < 3"; then
3543 add_compat msvcrt/snprintf.o
3544 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
3546 elif check_func_headers stdlib.h _get_doserrno; then
3548 add_compat strtod.o strtod=avpriv_strtod
3549 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
3550 _snprintf=avpriv_snprintf \
3551 vsnprintf=avpriv_vsnprintf
3552 elif check_cpp_condition stddef.h "defined __KLIBC__"; then
3556 test -n "$libc_type" && enable $libc_type
3558 # hacks for compiler/libc/os combinations
3560 if enabled_all tms470 glibc; then
3561 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
3562 add_cppflags -D__USER_LABEL_PREFIX__=
3563 add_cppflags -D__builtin_memset=memset
3564 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
3565 add_cflags -pds=48 # incompatible redefinition of macro
3568 if enabled_all ccc glibc; then
3569 add_ldflags -Wl,-z,now # calls to libots crash without this
3573 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
3576 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate
3578 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable_weak pic
3580 set_default $PATHS_LIST
3583 # we need to build at least one lib type
3584 if ! enabled_any static shared; then
3586 At least one library type must be built.
3587 Specify --enable-static to build the static libraries or --enable-shared to
3588 build the shared libraries as well. To only build the shared libraries specify
3589 --disable-static in addition to --enable-shared.
3594 die_license_disabled() {
3595 enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
3598 die_license_disabled_gpl() {
3599 enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; }
3602 die_license_disabled gpl libcdio
3603 die_license_disabled gpl libutvideo
3604 die_license_disabled gpl libvidstab
3605 die_license_disabled gpl libx264
3606 die_license_disabled gpl libxavs
3607 die_license_disabled gpl libxvid
3608 die_license_disabled gpl x11grab
3610 die_license_disabled nonfree libaacplus
3611 die_license_disabled nonfree libfaac
3612 enabled gpl && die_license_disabled_gpl nonfree libfdk_aac
3613 enabled gpl && die_license_disabled_gpl nonfree openssl
3615 die_license_disabled version3 libopencore_amrnb
3616 die_license_disabled version3 libopencore_amrwb
3617 die_license_disabled version3 libvo_aacenc
3618 die_license_disabled version3 libvo_amrwbenc
3620 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3622 disabled optimizations || check_cflags -fomit-frame-pointer
3625 disabled pic && return
3632 enabled pic && enable_weak_pic
3634 check_cc <<EOF || die "Symbol mangling check failed."
3637 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
3638 extern_prefix=${sym%%ff_extern*}
3640 check_cc <<EOF && enable_weak inline_asm
3641 void foo(void) { __asm__ volatile ("" ::); }
3645 for restrict_keyword in restrict __restrict__ __restrict; do
3646 check_cc <<EOF && _restrict=$restrict_keyword && break
3647 void foo(char * $restrict_keyword p);
3651 check_cc <<EOF && enable attribute_packed
3652 struct { int x; } __attribute__((packed)) x;
3655 check_cc <<EOF && enable attribute_may_alias
3656 union { int x; } __attribute__((may_alias)) x;
3659 check_cc <<EOF || die "endian test failed"
3660 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
3662 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
3664 if enabled alpha; then
3668 elif enabled arm; then
3670 check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
3671 float func(float a, float b){ return a+b; }
3674 enabled thumb && check_cflags -mthumb || check_cflags -marm
3677 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
3679 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
3680 case "${cross_prefix:-$cc}" in
3681 *hardfloat*) enable vfp_args; fpabi=vfp ;;
3682 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
3683 __asm__ (".eabi_attribute 28, 1");
3684 int main(void) { return 0; }
3687 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
3690 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
3691 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
3692 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
3693 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
3694 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
3695 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
3697 [ $target_os = linux ] ||
3698 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
3701 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
3702 check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
3704 enabled_all armv6t2 shared !pic && enable_weak_pic
3706 elif enabled mips; then
3708 check_inline_asm loongson '"dmult.g $1, $2, $3"'
3709 enabled mips32r2 && add_cflags "-mips32r2" && add_asflags "-mips32r2" &&
3710 check_inline_asm mips32r2 '"rotr $t0, $t1, 1"'
3711 enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" &&
3712 check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"'
3713 enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" &&
3714 check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"'
3715 enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" &&
3716 check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"'
3718 elif enabled parisc; then
3720 if enabled gcc; then
3721 case $($cc -dumpversion) in
3722 4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;;
3726 elif enabled ppc; then
3728 enable local_aligned_8 local_aligned_16
3730 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
3731 check_inline_asm ibm_asm '"add 0, 0, 0"'
3732 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
3733 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
3735 # AltiVec flags: The FSF version of GCC differs from the Apple version
3736 if enabled altivec; then
3738 check_cflags -maltivec -mabi=altivec &&
3739 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
3740 check_cflags -faltivec
3742 # check if our compiler supports Motorola AltiVec C API
3743 check_cc <<EOF || disable altivec
3746 vector signed int v1 = (vector signed int) { 0 };
3747 vector signed int v2 = (vector signed int) { 1 };
3748 v1 = vec_add(v1, v2);
3753 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
3756 elif enabled sparc; then
3758 enabled vis && check_inline_asm vis '"pdist %f0, %f0, %f0"'
3760 elif enabled x86; then
3762 check_builtin rdtsc intrin.h "__rdtsc()"
3763 check_builtin mm_empty mmintrin.h "_mm_empty()"
3765 enable local_aligned_8 local_aligned_16
3767 # check whether EBP is available on x86
3768 # As 'i' is stored on the stack, this program will crash
3769 # if the base pointer is used to access it because the
3770 # base pointer is cleared in the inline assembly code.
3771 check_exec_crash <<EOF && enable ebp_available
3773 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
3777 # check whether EBX is available on x86
3778 check_inline_asm ebx_available '""::"b"(0)' &&
3779 check_inline_asm ebx_available '"":::"%ebx"'
3781 # check whether xmm clobbers are supported
3782 check_inline_asm xmm_clobbers '"":::"%xmm0"'
3784 # check whether binutils is new enough to compile SSSE3/MMXEXT
3785 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
3786 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
3788 if ! disabled_any asm mmx yasm; then
3789 if check_cmd $yasmexe --version; then
3790 enabled x86_64 && yasm_extra="-m amd64"
3791 yasm_debug="-g dwarf2"
3792 elif check_cmd nasm -v; then
3794 yasm_debug="-g -F dwarf"
3795 enabled x86_64 && test "$objformat" = elf && objformat=elf64
3798 YASMFLAGS="-f $objformat $yasm_extra"
3799 enabled pic && append YASMFLAGS "-DPIC"
3800 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
3801 case "$objformat" in
3802 elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
3805 check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
3806 die "yasm not found, use --disable-yasm for a crippled build"
3807 check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx_external
3808 check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
3809 check_yasm "CPU amdnop" && enabled i686 && enable cpunop
3813 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
3820 if enabled asm; then
3822 check_as <<EOF && enable gnu_as || \
3823 $nogas "GNU assembler not found, install gas-preprocessor"
3831 check_ldflags -Wl,--as-needed
3833 if check_func dlopen; then
3835 elif check_func dlopen -ldl; then
3839 if ! disabled network; then
3840 check_type "sys/types.h sys/socket.h" socklen_t
3841 check_type netdb.h "struct addrinfo"
3842 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
3843 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
3844 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
3845 check_type netinet/in.h "struct sockaddr_in6"
3846 check_type poll.h "struct pollfd"
3847 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
3848 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
3849 check_type netinet/sctp.h "struct sctp_event_subscribe"
3850 check_func getaddrinfo $network_extralibs
3851 check_func getservbyport $network_extralibs
3852 # Prefer arpa/inet.h over winsock2
3853 if check_header arpa/inet.h ; then
3854 check_func closesocket
3855 elif check_header winsock2.h ; then
3856 check_func_headers winsock2.h closesocket -lws2 &&
3857 network_extralibs="-lws2" ||
3858 { check_func_headers winsock2.h closesocket -lws2_32 &&
3859 network_extralibs="-lws2_32"; }
3860 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
3861 check_type ws2tcpip.h socklen_t
3862 check_type ws2tcpip.h "struct addrinfo"
3863 check_type ws2tcpip.h "struct group_source_req"
3864 check_type ws2tcpip.h "struct ip_mreq_source"
3865 check_type ws2tcpip.h "struct ipv6_mreq"
3866 check_type winsock2.h "struct pollfd"
3867 check_type ws2tcpip.h "struct sockaddr_in6"
3868 check_type ws2tcpip.h "struct sockaddr_storage"
3869 check_struct winsock2.h "struct sockaddr" sa_len
3875 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
3876 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
3879 check_func clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; }
3882 check_func_headers stdlib.h getenv
3883 check_func gethrtime
3885 check_func getrusage
3886 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
3887 check_func gettimeofday
3888 check_func inet_aton $network_extralibs
3890 check_func localtime_r
3891 check_func ${malloc_prefix}memalign && enable memalign
3895 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
3896 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
3897 check_func setrlimit
3898 check_func strerror_r
3899 check_func sched_getaffinity
3900 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
3901 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
3902 check_builtin atomic_cas_ptr atomic.h "void **ptr; void *oldval, *newval; atomic_cas_ptr(ptr, oldval, newval)"
3903 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
3907 check_func_headers conio.h kbhit
3908 check_func_headers windows.h PeekNamedPipe
3909 check_func_headers io.h setmode
3910 check_func_headers lzo/lzo1x.h lzo1x_999_compress
3911 check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
3912 check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
3913 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
3914 check_func_headers windows.h GetProcessAffinityMask
3915 check_func_headers windows.h GetProcessTimes
3916 check_func_headers windows.h GetSystemTimeAsFileTime
3917 check_func_headers windows.h MapViewOfFile
3918 check_func_headers windows.h SetConsoleTextAttribute
3919 check_func_headers windows.h Sleep
3920 check_func_headers windows.h VirtualAlloc
3921 check_func_headers glob.h glob
3923 check_header cl/cl.h
3924 check_header direct.h
3925 check_header dlfcn.h
3927 check_header dxva2api.h -D_WIN32_WINNT=0x0600
3929 check_header libcrystalhd/libcrystalhd_if.h
3930 check_header malloc.h
3932 check_header sys/mman.h
3933 check_header sys/param.h
3934 check_header sys/resource.h
3935 check_header sys/select.h
3936 check_header sys/time.h
3937 check_header termios.h
3938 check_header unistd.h
3939 check_header vdpau/vdpau.h
3940 check_header vdpau/vdpau_x11.h
3941 check_header VideoDecodeAcceleration/VDADecoder.h
3942 check_header windows.h
3943 check_header X11/extensions/XvMClib.h
3944 check_header asm/types.h
3946 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
3947 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
3949 if ! disabled w32threads && ! enabled pthreads; then
3950 check_func_headers "windows.h process.h" _beginthreadex && enable w32threads
3953 # check for some common methods of building with pthread support
3954 # do this before the optional library checks as some of them require pthreads
3955 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
3957 if check_func pthread_create; then
3959 elif check_func pthread_create -pthread; then
3961 add_extralibs -pthread
3962 elif check_func pthread_create -pthreads; then
3963 add_cflags -pthreads
3964 add_extralibs -pthreads
3965 elif check_func pthread_create -lpthreadGC2; then
3966 add_extralibs -lpthreadGC2
3967 elif ! check_lib pthread.h pthread_create -lpthread; then
3972 for thread in $THREADS_LIST; do
3973 if enabled $thread; then
3974 test -n "$thread_type" &&
3975 die "ERROR: Only one thread type must be selected." ||
3976 thread_type="$thread"
3980 if enabled pthreads; then
3981 check_func pthread_cancel
3984 enabled sync_val_compare_and_swap && enable atomics_gcc
3985 enabled machine_rw_barrier && enabled atomic_cas_ptr && enable atomics_suncc
3986 enabled MemoryBarrier && enable atomics_win32
3988 check_lib math.h sin -lm && LIBM="-lm"
3989 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
3990 enabled vaapi && require vaapi va/va.h vaInitialize -lva
3996 for func in $MATH_FUNCS; do
3997 eval check_mathfunc $func \${${func}_args:-1}
4000 # these are off by default, so fail if requested and not available
4001 enabled avisynth && { { check_lib2 "windows.h" LoadLibrary; } ||
4002 { check_lib2 "dlfcn.h" dlopen -ldl; } ||
4003 die "ERROR: LoadLibrary/dlopen not found for avisynth"; }
4004 enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
4005 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
4006 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
4007 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
4008 enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
4009 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
4010 enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray
4011 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
4012 { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
4013 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
4014 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
4015 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
4016 enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
4017 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"
4018 enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs
4019 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
4020 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
4021 check_lib "${gsm_hdr}" gsm_create -lgsm && break;
4022 done || die "ERROR: libgsm not found"; }
4023 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
4024 enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
4025 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
4026 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
4027 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
4028 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
4029 enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
4030 enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg ||
4031 check_lib openjpeg.h opj_version -lopenjpeg ||
4032 die "ERROR: libopenjpeg not found"; }
4033 enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
4034 enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new
4035 enabled libquvi && require_pkg_config libquvi quvi/quvi.h quvi_init
4036 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
4037 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
4038 enabled libshine && require_pkg_config shine shine/layer3.h shine_encode_frame
4039 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
4040 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
4041 enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h
4042 media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h
4043 media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static
4044 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
4045 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
4046 { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
4047 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
4048 enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++
4049 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
4050 enabled libvidstab && require_pkg_config vidstab vid.stab/libvidstab.h vsMotionDetectInit
4051 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
4052 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
4053 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
4055 enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
4056 die "ERROR: libvpx decoder version must be >=0.9.1"; }
4057 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 ||
4058 die "ERROR: libvpx encoder version must be >=0.9.7"; }
4059 enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; }
4060 enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } }
4061 enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
4062 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
4063 die "ERROR: libx264 must be installed and version must be >= 0.118."; }
4064 enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
4065 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
4066 enabled libzmq && require_pkg_config libzmq zmq.h zmq_ctx_new
4067 enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
4068 check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
4069 die "ERROR: openal not found"; } &&
4070 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
4071 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
4072 enabled opencl && { check_lib2 OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
4073 check_lib2 CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
4074 die "ERROR: opencl not found"; } &&
4075 { check_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
4076 check_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
4077 die "ERROR: opencl must be installed and version must be 1.2 or compatible"; }
4078 enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
4079 check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
4080 check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
4081 die "ERROR: openssl not found"; }
4083 if enabled gnutls; then
4084 { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } ||
4085 { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
4089 if enabled libdc1394; then
4090 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
4091 enable libdc1394_2; } ||
4092 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
4093 enable libdc1394_1; } ||
4094 die "ERROR: No version of libdc1394 found "
4097 SDL_CONFIG="${cross_prefix}sdl-config"
4098 if check_pkg_config sdl SDL_events.h SDL_PollEvent; then
4099 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4100 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4103 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
4104 sdl_cflags=$("${SDL_CONFIG}" --cflags)
4105 sdl_libs=$("${SDL_CONFIG}" --libs)
4106 check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
4107 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4108 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" $sdl_cflags &&
4112 enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
4114 texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
4115 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
4116 perl --version > /dev/null 2>&1 && enable perl || disable perl
4117 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
4118 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
4120 check_header linux/fb.h
4121 check_header linux/videodev.h
4122 check_header linux/videodev2.h
4123 check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
4125 check_header sys/videoio.h
4127 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
4128 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
4129 # w32api 3.12 had it defined wrong
4130 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
4132 check_type "dshow.h" IBaseFilter
4134 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
4135 { check_header dev/bktr/ioctl_meteor.h &&
4136 check_header dev/bktr/ioctl_bt848.h; } ||
4137 { check_header machine/ioctl_meteor.h &&
4138 check_header machine/ioctl_bt848.h; } ||
4139 { check_header dev/video/meteor/ioctl_meteor.h &&
4140 check_header dev/video/bktr/ioctl_bt848.h; } ||
4141 check_header dev/ic/bt8xx.h
4143 check_header sndio.h
4144 if check_struct sys/soundcard.h audio_buf_info bytes; then
4145 enable_safe sys/soundcard.h
4147 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
4148 #include <sys/soundcard.h>
4152 check_header soundcard.h
4154 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
4156 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait &&
4157 check_func jack_port_get_latency_range -ljack
4159 enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
4161 if enabled libcdio; then
4162 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
4166 require X11 X11/Xlib.h XOpenDisplay -lX11 &&
4167 require Xext X11/extensions/XShm.h XShmCreateImage -lXext &&
4168 require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes
4170 if ! disabled vaapi; then
4171 check_lib va/va.h vaInitialize -lva && {
4172 check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
4173 warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
4178 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
4181 # Funny iconv installations are not unusual, so check it after all flags have been set
4182 disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv
4184 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
4186 # add some useful compiler flags if supported
4187 check_cflags -Wdeclaration-after-statement
4189 check_cflags -Wno-parentheses
4190 check_cflags -Wno-switch
4191 check_cflags -Wno-format-zero-length
4192 check_cflags -Wdisabled-optimization
4193 check_cflags -Wpointer-arith
4194 check_cflags -Wredundant-decls
4195 check_cflags -Wno-pointer-sign
4196 check_cflags -Wwrite-strings
4197 check_cflags -Wtype-limits
4198 check_cflags -Wundef
4199 check_cflags -Wmissing-prototypes
4200 check_cflags -Wno-pointer-to-int-cast
4201 check_cflags -Wstrict-prototypes
4202 enabled extra_warnings && check_cflags -Winline
4204 # add some linker flags
4205 check_ldflags -Wl,--warn-common
4206 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
4207 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
4209 enabled xmm_clobber_test &&
4210 check_ldflags -Wl,--wrap,avcodec_open2 \
4211 -Wl,--wrap,avcodec_decode_audio4 \
4212 -Wl,--wrap,avcodec_decode_video2 \
4213 -Wl,--wrap,avcodec_decode_subtitle2 \
4214 -Wl,--wrap,avcodec_encode_audio2 \
4215 -Wl,--wrap,avcodec_encode_video \
4216 -Wl,--wrap,avcodec_encode_subtitle \
4217 -Wl,--wrap,sws_scale ||
4218 disable xmm_clobber_test
4221 if test_ldflags -Wl,--version-script,$TMPV; then
4222 append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
4223 check_cc <<EOF && enable symver_asm_label
4224 void ff_foo(void) __asm__ ("av_foo@VERSION");
4225 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
4227 check_cc <<EOF && enable symver_gnu_asm
4228 __asm__(".symver ff_foo,av_foo@VERSION");
4229 void ff_foo(void) {}
4233 if [ -z "$optflags" ]; then
4234 if enabled small; then
4235 optflags=$cflags_size
4236 elif enabled optimizations; then
4237 optflags=$cflags_speed
4239 optflags=$cflags_noopt
4245 enabled lto && check_ldflags "$@"
4249 if enabled lto; then
4250 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
4252 check_ldflags -flto $cpuflags
4255 check_optflags $optflags
4256 check_optflags -fno-math-errno
4257 check_optflags -fno-signed-zeros
4259 enabled ftrapv && check_cflags -ftrapv
4261 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
4266 if enabled icc; then
4267 # Just warnings, no remarks
4269 # -wd: Disable following warnings
4270 # 144, 167, 556: -Wno-pointer-sign
4271 # 188: enumerated type mixed with another type
4272 # 1292: attribute "foo" ignored
4273 # 1419: external declaration in primary source file
4274 # 10006: ignoring unknown option -fno-signed-zeros
4275 # 10148: ignoring unknown option -Wno-parentheses
4276 # 10156: ignoring option '-W'; no argument required
4277 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156
4278 # 11030: Warning unknown option --as-needed
4279 # 10156: ignoring option '-export'; no argument required
4280 check_ldflags -wd10156,11030
4281 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
4282 enable ebp_available
4283 if enabled x86_32; then
4284 icc_version=$($cc -dumpversion)
4285 test ${icc_version%%.*} -ge 11 &&
4286 check_cflags -falign-stack=maintain-16-byte ||
4287 disable aligned_stack
4289 elif enabled ccc; then
4290 # disable some annoying warnings
4291 add_cflags -msg_disable bitnotint
4292 add_cflags -msg_disable mixfuncvoid
4293 add_cflags -msg_disable nonstandcast
4294 add_cflags -msg_disable unsupieee
4295 elif enabled gcc; then
4296 check_optflags -fno-tree-vectorize
4297 check_cflags -Werror=implicit-function-declaration
4298 check_cflags -Werror=missing-prototypes
4299 check_cflags -Werror=return-type
4300 check_cflags -Werror=vla
4301 elif enabled llvm_gcc; then
4302 check_cflags -mllvm -stack-alignment=16
4303 elif enabled clang; then
4304 check_cflags -mllvm -stack-alignment=16
4305 check_cflags -Qunused-arguments
4306 check_cflags -Werror=implicit-function-declaration
4307 check_cflags -Werror=missing-prototypes
4308 check_cflags -Werror=return-type
4309 elif enabled armcc; then
4310 # 2523: use of inline assembler is deprecated
4311 add_cflags -W${armcc_opt},--diag_suppress=2523
4312 add_cflags -W${armcc_opt},--diag_suppress=1207
4313 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
4314 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
4315 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
4316 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
4317 elif enabled tms470; then
4318 add_cflags -pds=824 -pds=837
4319 elif enabled pathscale; then
4320 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
4321 elif enabled msvc; then
4322 enabled x86_32 && disable aligned_stack
4327 enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
4330 add_cppflags -Dmain=plan9_main
4334 enable frame_thread_encoder
4335 enabled_any $THREADS_LIST && enable threads
4336 enabled_any $ATOMICS_LIST && enable atomics_native
4338 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
4340 check_deps $CONFIG_LIST \
4346 if test $target_os = "haiku"; then
4348 disable posix_memalign
4351 ! enabled_any memalign posix_memalign aligned_malloc &&
4352 enabled_any $need_memalign && enable memalign_hack
4355 # -> enable ${lib}_deps_${dep}
4356 # -> add $dep to ${lib}_deps only once
4360 enabled "${lib}_deps_${dep}" && return 0
4361 enable "${lib}_deps_${dep}"
4362 prepend "${lib}_deps" $dep
4365 # merge deps lib components
4366 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
4371 enabled $comp || continue
4372 eval "dep=\"\$${comp}_deps\""
4379 merge_deps libavfilter $FILTER_LIST
4381 echo "install prefix $prefix"
4382 echo "source path $source_path"
4383 echo "C compiler $cc"
4384 echo "ARCH $arch ($cpu)"
4385 if test "$build_suffix" != ""; then
4386 echo "build suffix $build_suffix"
4388 if test "$progs_suffix" != ""; then
4389 echo "progs suffix $progs_suffix"
4391 if test "$extra_version" != ""; then
4392 echo "version string suffix $extra_version"
4394 echo "big-endian ${bigendian-no}"
4395 echo "runtime cpu detection ${runtime_cpudetect-no}"
4396 if enabled x86; then
4397 echo "${yasmexe} ${yasm-no}"
4398 echo "MMX enabled ${mmx-no}"
4399 echo "MMXEXT enabled ${mmxext-no}"
4400 echo "3DNow! enabled ${amd3dnow-no}"
4401 echo "3DNow! extended enabled ${amd3dnowext-no}"
4402 echo "SSE enabled ${sse-no}"
4403 echo "SSSE3 enabled ${ssse3-no}"
4404 echo "AVX enabled ${avx-no}"
4405 echo "FMA4 enabled ${fma4-no}"
4406 echo "i686 features enabled ${i686-no}"
4407 echo "CMOV is fast ${fast_cmov-no}"
4408 echo "EBX available ${ebx_available-no}"
4409 echo "EBP available ${ebp_available-no}"
4411 if enabled arm; then
4412 echo "ARMv5TE enabled ${armv5te-no}"
4413 echo "ARMv6 enabled ${armv6-no}"
4414 echo "ARMv6T2 enabled ${armv6t2-no}"
4415 echo "VFP enabled ${vfp-no}"
4416 echo "NEON enabled ${neon-no}"
4417 echo "THUMB enabled ${thumb-no}"
4419 if enabled mips; then
4420 echo "MIPS FPU enabled ${mipsfpu-no}"
4421 echo "MIPS32R2 enabled ${mips32r2-no}"
4422 echo "MIPS DSP R1 enabled ${mipsdspr1-no}"
4423 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
4425 if enabled ppc; then
4426 echo "AltiVec enabled ${altivec-no}"
4427 echo "PPC 4xx optimizations ${ppc4xx-no}"
4428 echo "dcbzl available ${dcbzl-no}"
4430 if enabled sparc; then
4431 echo "VIS enabled ${vis-no}"
4433 echo "debug symbols ${debug-no}"
4434 echo "strip symbols ${stripping-no}"
4435 echo "optimize for size ${small-no}"
4436 echo "optimizations ${optimizations-no}"
4437 echo "static ${static-no}"
4438 echo "shared ${shared-no}"
4439 echo "postprocessing support ${postproc-no}"
4440 echo "new filter support ${avfilter-no}"
4441 echo "network support ${network-no}"
4442 echo "threading support ${thread_type-no}"
4443 echo "safe bitstream reader ${safe_bitstream_reader-no}"
4444 echo "SDL support ${sdl-no}"
4445 echo "opencl enabled ${opencl-no}"
4446 echo "libshine enabled ${libshine-no}"
4447 echo "texi2html enabled ${texi2html-no}"
4448 echo "perl enabled ${perl-no}"
4449 echo "pod2man enabled ${pod2man-no}"
4450 echo "makeinfo enabled ${makeinfo-no}"
4451 test -n "$random_seed" &&
4452 echo "random seed ${random_seed}"
4455 echo "External libraries:"
4456 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
4459 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
4460 echo "Enabled ${type}s:"
4461 eval list=\$$(toupper $type)_LIST
4462 print_enabled '_*' $list | print_3_columns
4466 license="LGPL version 2.1 or later"
4467 if enabled nonfree; then
4468 license="nonfree and unredistributable"
4469 elif enabled gplv3; then
4470 license="GPL version 3 or later"
4471 elif enabled lgplv3; then
4472 license="LGPL version 3 or later"
4473 elif enabled gpl; then
4474 license="GPL version 2 or later"
4477 echo "License: $license"
4479 echo "Creating config.mak, config.h, and doc/config.texi..."
4481 test -e Makefile || $ln_s "$source_path/Makefile" .
4483 enabled stripping || strip="echo skipping strip"
4485 config_files="$TMPH config.mak doc/config.texi"
4487 cat > config.mak <<EOF
4488 # Automatically generated by configure - do not modify!
4489 ifndef FFMPEG_CONFIG_MAK
4491 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
4493 LIBDIR=\$(DESTDIR)$libdir
4494 SHLIBDIR=\$(DESTDIR)$shlibdir
4495 INCDIR=\$(DESTDIR)$incdir
4496 BINDIR=\$(DESTDIR)$bindir
4497 DATADIR=\$(DESTDIR)$datadir
4498 MANDIR=\$(DESTDIR)$mandir
4499 SRC_PATH=$source_path
4500 ifndef MAIN_MAKEFILE
4501 SRC_PATH:=\$(SRC_PATH:.%=..%)
4510 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
4512 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
4538 LDFLAGS-ffserver=$FFSERVERLDFLAGS
4539 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
4540 YASMFLAGS=$YASMFLAGS
4541 BUILDSUF=$build_suffix
4542 PROGSSUF=$progs_suffix
4550 EXTRA_VERSION=$extra_version
4553 CCDEP_FLAGS=$CCDEP_FLAGS
4555 ASDEP_FLAGS=$ASDEP_FLAGS
4556 CC_DEPFLAGS=$CC_DEPFLAGS
4557 AS_DEPFLAGS=$AS_DEPFLAGS
4560 HOSTCFLAGS=$host_cflags
4561 HOSTCPPFLAGS=$host_cppflags
4562 HOSTEXESUF=$HOSTEXESUF
4563 HOSTLDFLAGS=$host_ldflags
4566 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
4567 HOSTCCDEP=$HOSTCCDEP
4568 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
4569 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
4573 TARGET_EXEC=$target_exec $target_exec_args
4574 TARGET_PATH=$target_path
4575 LIBS-ffplay=$sdl_libs
4576 CFLAGS-ffplay=$sdl_cflags
4577 ZLIB=$($ldflags_filter -lz)
4578 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
4579 EXTRALIBS=$extralibs
4580 COMPAT_OBJS=$compat_objs
4583 LIBTARGET=${LIBTARGET}
4584 SLIBNAME=${SLIBNAME}
4585 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
4586 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
4587 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
4588 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
4589 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
4590 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
4591 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
4592 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
4593 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
4594 NOREDZONE_FLAGS=$noredzone_flags
4599 name=$(toupper $lcname)
4600 file=$source_path/$lcname/version.h
4601 eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
4602 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
4603 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
4604 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
4605 eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak
4608 map 'get_version $v' $LIBRARY_LIST
4611 /* Automatically generated by configure - do not modify! */
4612 #ifndef FFMPEG_CONFIG_H
4613 #define FFMPEG_CONFIG_H
4614 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
4615 #define FFMPEG_LICENSE "$(c_escape $license)"
4616 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
4617 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
4618 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
4619 #define av_restrict $_restrict
4620 #define EXTERN_PREFIX "${extern_prefix}"
4621 #define EXTERN_ASM ${extern_prefix}
4622 #define SLIBSUF "$SLIBSUF"
4623 #define HAVE_MMX2 HAVE_MMXEXT
4626 test -n "$assert_level" &&
4627 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
4629 test -n "$malloc_prefix" &&
4630 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
4632 if enabled yasm; then
4633 append config_files $TMPASM
4637 enabled getenv || echo "#define getenv(x) NULL" >> $TMPH
4641 echo "@c auto-generated by configure" > doc/config.texi
4643 print_config ARCH_ "$config_files" $ARCH_LIST
4644 print_config HAVE_ "$config_files" $HAVE_LIST
4645 print_config CONFIG_ "$config_files" $CONFIG_LIST \
4649 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
4650 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
4652 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
4653 cp_if_changed $TMPH config.h
4656 enabled yasm && cp_if_changed $TMPASM config.asm
4659 /* Generated by ffconf */
4660 #ifndef AVUTIL_AVCONFIG_H
4661 #define AVUTIL_AVCONFIG_H
4664 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
4666 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
4668 cp_if_changed $TMPH libavutil/avconfig.h
4670 if test -n "$WARNINGS"; then
4671 printf "\n$WARNINGS"
4672 enabled fatal_warnings && exit 1
4675 # build pkg-config files
4677 pkgconfig_generate(){
4679 shortname=${name#lib}${build_suffix}
4684 enabled ${name#lib} || return 0
4686 cat <<EOF > $name/$name${build_suffix}.pc
4688 exec_prefix=\${prefix}
4693 Description: $comment
4695 Requires: $(enabled shared || echo $requires)
4696 Requires.private: $(enabled shared && echo $requires)
4698 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4699 Libs.private: $(enabled shared && echo $libs)
4700 Cflags: -I\${includedir}
4703 mkdir -p doc/examples/pc-uninstalled
4704 includedir=${source_path}
4705 [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
4706 cat <<EOF > doc/examples/pc-uninstalled/$name.pc
4709 libdir=\${pcfiledir}/../../../$name
4710 includedir=${includedir}
4713 Description: $comment
4717 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4718 Cflags: -I\${includedir}
4722 lavfi_libs="libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4723 enabled libavfilter_deps_avcodec && prepend lavfi_libs "libavcodec${build_suffix} = $LIBAVCODEC_VERSION,"
4724 enabled libavfilter_deps_avformat && prepend lavfi_libs "libavformat${build_suffix} = $LIBAVFORMAT_VERSION,"
4725 enabled libavfilter_deps_avresample && prepend lavfi_libs "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION,"
4726 enabled libavfilter_deps_swscale && prepend lavfi_libs "libswscale${build_suffix} = $LIBSWSCALE_VERSION,"
4727 enabled libavfilter_deps_swresample && prepend lavfi_libs "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION,"
4728 enabled libavfilter_deps_postproc && prepend lavfi_libs "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION,"
4729 lavfi_libs=${lavfi_libs%, }
4731 lavd_libs="libavformat${build_suffix} = $LIBAVFORMAT_VERSION"
4732 enabled lavfi_indev && prepend lavd_libs "libavfilter${build_suffix} = $LIBAVFILTER_VERSION,"
4734 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
4735 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4736 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION"
4737 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$lavd_libs"
4738 pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$lavfi_libs"
4739 pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4740 pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4741 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4742 pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4744 fix_ffmpeg_remote(){
4747 fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq)
4748 if [ "$fixme_remote" != "" ]; then
4750 Outdated domain in git config, the official domain for ffmpeg git is since
4751 November 2011, source.ffmpeg.org, both the old and the new point to the same
4752 repository and server. To update it enter the following commands:
4754 for remote in $fixme_remote; do
4755 echolog "git remote set-url $remote $git_remote_to"
4760 if test -f "$source_path/.git/config"; then
4761 remote_from=git.videolan.org
4762 remote_to=source.ffmpeg.org
4763 fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg
4764 fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg