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-lsp disable LSP code
137 --disable-lzo disable LZO decoder code
138 --disable-mdct disable MDCT code
139 --disable-rdft disable RDFT code
140 --disable-fft disable FFT code
142 Hardware accelerators:
143 --enable-dxva2 enable DXVA2 code
144 --enable-vaapi enable VAAPI code
145 --enable-vda enable VDA code
146 --enable-vdpau enable VDPAU code
148 Individual component options:
149 --disable-everything disable all components listed below
150 --disable-encoder=NAME disable encoder NAME
151 --enable-encoder=NAME enable encoder NAME
152 --disable-encoders disable all encoders
153 --disable-decoder=NAME disable decoder NAME
154 --enable-decoder=NAME enable decoder NAME
155 --disable-decoders disable all decoders
156 --disable-hwaccel=NAME disable hwaccel NAME
157 --enable-hwaccel=NAME enable hwaccel NAME
158 --disable-hwaccels disable all hwaccels
159 --disable-muxer=NAME disable muxer NAME
160 --enable-muxer=NAME enable muxer NAME
161 --disable-muxers disable all muxers
162 --disable-demuxer=NAME disable demuxer NAME
163 --enable-demuxer=NAME enable demuxer NAME
164 --disable-demuxers disable all demuxers
165 --enable-parser=NAME enable parser NAME
166 --disable-parser=NAME disable parser NAME
167 --disable-parsers disable all parsers
168 --enable-bsf=NAME enable bitstream filter NAME
169 --disable-bsf=NAME disable bitstream filter NAME
170 --disable-bsfs disable all bitstream filters
171 --enable-protocol=NAME enable protocol NAME
172 --disable-protocol=NAME disable protocol NAME
173 --disable-protocols disable all protocols
174 --enable-indev=NAME enable input device NAME
175 --disable-indev=NAME disable input device NAME
176 --disable-indevs disable input devices
177 --enable-outdev=NAME enable output device NAME
178 --disable-outdev=NAME disable output device NAME
179 --disable-outdevs disable output devices
180 --disable-devices disable all devices
181 --enable-filter=NAME enable filter NAME
182 --disable-filter=NAME disable filter NAME
183 --disable-filters disable all filters
185 External library support:
186 --enable-avisynth enable reading of AVISynth script files [no]
187 --enable-bzlib enable bzlib [autodetect]
188 --enable-fontconfig enable fontconfig
189 --enable-frei0r enable frei0r video filtering
190 --enable-gnutls enable gnutls [no]
191 --enable-iconv enable iconv [autodetect]
192 --enable-libaacplus enable AAC+ encoding via libaacplus [no]
193 --enable-libass enable libass subtitles rendering [no]
194 --enable-libbluray enable BluRay reading using libbluray [no]
195 --enable-libcaca enable textual display using libcaca
196 --enable-libcelt enable CELT decoding via libcelt [no]
197 --enable-libcdio enable audio CD grabbing with libcdio
198 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
200 --enable-libfaac enable AAC encoding via libfaac [no]
201 --enable-libfdk-aac enable AAC encoding via libfdk-aac [no]
202 --enable-libflite enable flite (voice synthesis) support via libflite [no]
203 --enable-libfreetype enable libfreetype [no]
204 --enable-libgsm enable GSM de/encoding via libgsm [no]
205 --enable-libiec61883 enable iec61883 via libiec61883 [no]
206 --enable-libilbc enable iLBC de/encoding via libilbc [no]
207 --enable-libmodplug enable ModPlug via libmodplug [no]
208 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
209 --enable-libnut enable NUT (de)muxing via libnut,
210 native (de)muxer exists [no]
211 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
212 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
213 --enable-libopencv enable video filtering via libopencv [no]
214 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
215 --enable-libopus enable Opus decoding via libopus [no]
216 --enable-libpulse enable Pulseaudio input via libpulse [no]
217 --enable-librtmp enable RTMP[E] support via librtmp [no]
218 --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
219 --enable-libsoxr enable Include libsoxr resampling [no]
220 --enable-libspeex enable Speex de/encoding via libspeex [no]
221 --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no]
222 --enable-libtheora enable Theora encoding via libtheora [no]
223 --enable-libtwolame enable MP2 encoding via libtwolame [no]
224 --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no]
225 --enable-libv4l2 enable libv4l2/v4l-utils [no]
226 --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
227 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
228 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
229 native implementation exists [no]
230 --enable-libvpx enable VP8 and VP9 de/encoding via libvpx [no]
231 --enable-libx264 enable H.264 encoding via x264 [no]
232 --enable-libxavs enable AVS encoding via xavs [no]
233 --enable-libxvid enable Xvid encoding via xvidcore,
234 native MPEG-4/Xvid encoder exists [no]
235 --enable-openal enable OpenAL 1.1 capture support [no]
236 --enable-openssl enable openssl [no]
237 --enable-x11grab enable X11 grabbing [no]
238 --enable-zlib enable zlib [autodetect]
240 Advanced options (experts only):
241 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
242 --enable-cross-compile assume a cross-compiler is used
243 --sysroot=PATH root of cross-build tree
244 --sysinclude=PATH location of cross-build system headers
245 --target-os=OS compiler targets OS [$target_os]
246 --target-exec=CMD command to run executables on target
247 --target-path=DIR path to view of build directory on target
248 --toolchain=NAME set tool defaults according to NAME
249 --nm=NM use nm tool NM [$nm_default]
250 --ar=AR use archive tool AR [$ar_default]
251 --as=AS use assembler AS [$as_default]
252 --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
253 --cc=CC use C compiler CC [$cc_default]
254 --cxx=CXX use C compiler CXX [$cxx_default]
255 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
256 --ld=LD use linker LD [$ld_default]
257 --host-cc=HOSTCC use host C compiler HOSTCC
258 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
259 --host-cppflags=HCPPFLAGS use HCPPFLAGS when compiling for host
260 --host-ld=HOSTLD use host linker HOSTLD
261 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
262 --host-libs=HLIBS use libs HLIBS when linking for host
263 --host-os=OS compiler host OS [$target_os]
264 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
265 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
266 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
267 --extra-libs=ELIBS add ELIBS [$ELIBS]
268 --extra-version=STRING version string suffix []
269 --optflags=OPTFLAGS override optimization-related compiler flags
270 --build-suffix=SUFFIX library name suffix []
271 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
272 --progs-suffix=SUFFIX program name suffix []
273 --arch=ARCH select architecture [$arch]
274 --cpu=CPU select the minimum required CPU (affects
275 instruction selection, may crash on older CPUs)
276 --enable-pic build position-independent code
277 --enable-sram allow use of on-chip SRAM
278 --enable-thumb compile for Thumb instruction set
279 --disable-symver disable symbol versioning
280 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
281 --disable-safe-bitstream-reader
282 disable buffer boundary checking in bitreaders
283 (faster, but may crash)
284 --enable-memalign-hack emulate memalign, interferes with memory debuggers
285 --enable-lto use link-time optimization
287 Optimization options (experts only):
288 --disable-asm disable all assembler optimizations
289 --disable-altivec disable AltiVec optimizations
290 --disable-amd3dnow disable 3DNow! optimizations
291 --disable-amd3dnowext disable 3DNow! extended optimizations
292 --disable-mmx disable MMX optimizations
293 --disable-mmxext disable MMXEXT optimizations
294 --disable-sse disable SSE optimizations
295 --disable-sse2 disable SSE2 optimizations
296 --disable-sse3 disable SSE3 optimizations
297 --disable-ssse3 disable SSSE3 optimizations
298 --disable-sse4 disable SSE4 optimizations
299 --disable-sse42 disable SSE4.2 optimizations
300 --disable-avx disable AVX optimizations
301 --disable-fma4 disable FMA4 optimizations
302 --disable-armv5te disable armv5te optimizations
303 --disable-armv6 disable armv6 optimizations
304 --disable-armv6t2 disable armv6t2 optimizations
305 --disable-vfp disable VFP optimizations
306 --disable-neon disable NEON optimizations
307 --disable-vis disable VIS optimizations
308 --disable-inline-asm disable use of inline assembler
309 --disable-yasm disable use of yasm assembler
310 --disable-mips32r2 disable MIPS32R2 optimizations
311 --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations
312 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
313 --disable-mipsfpu disable floating point MIPS optimizations
314 --disable-fast-unaligned consider unaligned accesses slow
316 Developer options (useful when working on FFmpeg itself):
317 --enable-coverage build with test coverage instrumentation
318 --disable-debug disable debugging symbols
319 --enable-debug=LEVEL set the debug level [$debuglevel]
320 --disable-optimizations disable compiler optimizations
321 --enable-extra-warnings enable more compiler warnings
322 --disable-stripping disable stripping of executables and shared libraries
323 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
324 2 causes a slowdown at runtime.
325 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
326 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
327 leaks and errors, using the specified valgrind binary.
328 Cannot be combined with --target-exec
329 --enable-ftrapv Trap arithmetic overflows
330 --samples=PATH location of test samples for FATE, if not set use
331 \$FATE_SAMPLES at make invocation time.
332 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
333 should be used only for debugging purposes)
334 --enable-random randomly enable/disable components
336 --enable-random=LIST randomly enable/disable specific components or
337 --disable-random=LIST component groups. LIST is a comma-separated list
338 of NAME[:PROB] entries where NAME is a component
339 (group) and PROB the probability associated with
341 --random-seed=VALUE seed value for --enable/disable-random
343 NOTE: Object files are built at the place where configure is launched.
351 echo "$@" >> $logfile
356 pr -n -t $1 >> $logfile
367 WARNINGS="${WARNINGS}WARNING: $*\n"
374 If you think configure made a mistake, make sure you are using the latest
375 version from Git. If the latest version fails, report the problem to the
376 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
378 if disabled logging; then
380 Rerun configure with logging enabled (do not use --disable-logging), and
381 include the log this produces with your report.
385 Include the log file "$logfile" produced by configure as this will help
392 # Avoid locale weirdness, besides we really just want to translate ASCII.
394 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
398 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
402 echo "$*" | sed 's/["\\]/\\\0/g'
406 v=$(echo "$1" | sed "s/'/'\\\\''/g")
407 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
412 echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//'
419 eval "case $v in $pat) echo $v ;; esac"
427 eval "case $v in $pat) ;; *) echo $v ;; esac"
434 for v; do eval $m; done
440 for v; do echo ${v}${suffix}; done
455 eval : \${$var:=$value}
460 echo $@ | sed 's/[^A-Za-z0-9_]/_/g'
466 eval $(sanitize_var_name "$var")='$*'
470 eval echo \$$(sanitize_var_name "$1")
475 eval level=\${${var}_level:=0}
476 eval ${var}_${level}="\$$var"
477 eval ${var}_level=$(($level+1))
483 eval level=\${${var}_level:-0}
484 test $level = 0 && continue
485 eval level=$(($level-1))
486 eval $var="\${${var}_${level}}"
487 eval ${var}_level=$level
488 eval unset ${var}_${level}
510 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
516 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
522 enabled $var && continue
523 eval sel="\$${var}_select"
524 eval sgs="\$${var}_suggest"
528 enable_deep_weak $sgs
544 test "${1#!}" = "$1" && op== || op=!=
545 eval test "x\$${1#!}" $op "xyes"
549 test "${1#!}" = "$1" && op== || op=!=
550 eval test "x\$${1#!}" $op "xno"
555 enabled $opt || return 1
561 disabled $opt || return 1
567 enabled $opt && return 0
573 disabled $opt && return 0
580 eval : \${$opt:=\$${opt}_default}
588 [ $var = $value ] && return 0
596 enabled ${cfg}_checking && die "Circular dependency for $cfg."
597 disabled ${cfg}_checking && continue
598 enable ${cfg}_checking
601 eval dep_all="\$${cfg}_deps"
602 eval dep_any="\$${cfg}_deps_any"
603 eval dep_sel="\$${cfg}_select"
604 eval dep_sgs="\$${cfg}_suggest"
605 eval dep_ifa="\$${cfg}_if"
606 eval dep_ifn="\$${cfg}_if_any"
608 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
609 do_check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
610 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
612 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
613 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
614 enabled_all $dep_all || disable $cfg
615 enabled_any $dep_any || disable $cfg
616 disabled_any $dep_sel && disable $cfg
618 if enabled $cfg; then
620 enable_deep_weak $dep_sgs
623 disable ${cfg}_checking
632 for cfg in $allopts; do
633 enabled $cfg || continue
634 eval dep_extralibs="\$${cfg}_extralibs"
635 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
643 map 'eval echo "$v \${$v:-no}"' "$@" |
644 awk "BEGIN { split(\"$files\", files) }
646 c = \"$pfx\" toupper(\$1);
652 if (file ~ /\\.h\$/) {
653 printf(\"#define %s %d\\n\", c, v) >>file;
654 } else if (file ~ /\\.asm\$/) {
655 printf(\"%%define %s %d\\n\", c, v) >>file;
656 } else if (file ~ /\\.mak\$/) {
657 n = -v ? \"\" : \"!\";
658 printf(\"%s%s=yes\\n\", n, c) >>file;
668 enabled $v && printf "%s\n" ${v%$suf};
675 eval "$var=\"\$$var $*\""
681 eval "$var=\"$* \$$var\""
689 append CFLAGS $($cflags_filter "$@")
693 append CXXFLAGS $($cflags_filter "$@")
697 append ASFLAGS $($asflags_filter "$@")
701 append LDFLAGS $($ldflags_filter "$@")
705 prepend extralibs $($ldflags_filter "$@")
709 append host_cppflags "$@"
713 append host_cflags $($host_cflags_filter "$@")
717 append host_ldflags $($host_ldflags_filter "$@")
721 append compat_objs $1
723 map 'add_cppflags -D$v' "$@"
728 "$@" >> $logfile 2>&1
732 eval printf '%s\\n' $CC_O
736 eval printf '%s\\n' $CC_E
743 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
750 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
757 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
761 eval printf '%s\\n' $AS_O
768 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPS
772 log check_inline_asm "$@"
777 check_cc "$@" <<EOF && enable $name
778 void foo(void){ __asm__ volatile($code); }
784 check_inline_asm ${1}_inline "\"$2\""
785 echo "$2" | check_as && enable ${1}_external || disable ${1}_external
793 check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
797 eval printf '%s\\n' $LD_O
804 flags=$(filter_out '-l*|*.so' $@)
805 libs=$(filter '-l*|*.so' $@)
806 check_$type $($cflags_filter $flags) || return
807 flags=$($ldflags_filter $flags)
808 libs=$($ldflags_filter $libs)
809 check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
819 for hdr in $headers; do
820 echo "#include <$hdr>"
822 echo "int main(void) { $code; return 0; }"
823 } | check_$check "$@"
827 log check_cppflags "$@"
828 check_cc "$@" <<EOF && append CPPFLAGS "$@"
834 log check_cflags "$@"
835 set -- $($cflags_filter "$@")
836 check_cc "$@" <<EOF && append CFLAGS "$@"
842 log check_cxxflags "$@"
843 set -- $($cflags_filter "$@")
844 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
850 log test_ldflags "$@"
851 check_ld "cc" "$@" <<EOF
852 int main(void){ return 0; }
857 log check_ldflags "$@"
858 test_ldflags "$@" && add_ldflags "$@"
862 log check_header "$@"
866 check_cpp "$@" <<EOF && enable_safe $header
877 check_ld "cc" "$@" <<EOF && enable $func
879 int main(void){ $func(); }
884 log check_mathfunc "$@"
888 test $narg = 2 && args="f, g" || args="f"
890 check_ld "cc" "$@" <<EOF && enable $func
892 float foo(float f, float g) { return $func($args); }
893 int main(void){ return (int) foo; }
897 check_func_headers(){
898 log check_func_headers "$@"
903 for hdr in $headers; do
904 echo "#include <$hdr>"
906 for func in $funcs; do
907 echo "long check_$func(void) { return (long) $func; }"
909 echo "int main(void) { return 0; }"
910 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
913 check_class_headers_cpp(){
914 log check_class_headers_cpp "$@"
919 for hdr in $headers; do
920 echo "#include <$hdr>"
922 echo "int main(void) { "
924 for class in $classes; do
929 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
932 check_cpp_condition(){
933 log check_cpp_condition "$@"
940 #error "unsatisfied condition: $condition"
950 check_header $header && check_func $func "$@" && add_extralibs "$@"
958 check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
962 log check_lib_cpp "$@"
966 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
970 log check_pkg_config "$@"
975 $pkg_config --exists $pkg 2>/dev/null || return
976 pkg_cflags=$($pkg_config --cflags $pkg)
977 pkg_libs=$($pkg_config --libs $pkg)
978 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
979 set_safe ${pkg}_cflags $pkg_cflags &&
980 set_safe ${pkg}_libs $pkg_libs
984 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
990 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
991 # are safe but may not be available everywhere. Thus we use
992 # raise(SIGTERM) instead. The check is run in a subshell so we
993 # can redirect the "Terminated" message from the shell. SIGBUS
994 # is not defined by standard C so it is used conditionally.
996 (check_exec "$@") >> $logfile 2>&1 <<EOF
998 static void sighandler(int sig){
1004 int (*func_ptr)(void) = func;
1006 signal(SIGILL, sighandler);
1007 signal(SIGFPE, sighandler);
1008 signal(SIGSEGV, sighandler);
1010 signal(SIGBUS, sighandler);
1022 disable_safe "$type"
1023 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
1027 log check_struct "$@"
1032 disable_safe "${struct}_${member}"
1033 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1034 enable_safe "${struct}_${member}"
1038 log check_builtin "$@"
1044 check_code ld "$headers" "$builtin" "cc" "$@" && enable "$name"
1052 check_lib $header $func "$@" || die "ERROR: $name not found"
1060 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
1068 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1071 require_pkg_config(){
1073 check_pkg_config "$@" || die "ERROR: $pkg not found"
1074 add_cflags $(get_safe ${pkg}_cflags)
1075 add_extralibs $(get_safe ${pkg}_libs)
1079 eval printf '%s\\n' $HOSTCC_O
1083 log check_host_cc "$@"
1086 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1089 check_host_cppflags(){
1090 log check_host_cppflags "$@"
1091 check_host_cc "$@" <<EOF && append host_cppflags "$@"
1096 check_host_cflags(){
1097 log check_host_cflags "$@"
1098 set -- $($host_cflags_filter "$@")
1099 check_host_cc "$@" <<EOF && append host_cflags "$@"
1107 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
1111 cmp -s "$1" "$2" && echo "$2 is unchanged" && return
1112 mkdir -p "$(dirname $2)"
1116 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1117 # system-dependent things.
1133 EXTERNAL_LIBRARY_LIST="
1223 $EXTERNAL_LIBRARY_LIST
1235 incompatible_fork_abi
1246 safe_bitstream_reader
1335 incompatible_fork_abi
1368 $(add_suffix _external $ARCH_EXT_LIST)
1369 $(add_suffix _inline $ARCH_EXT_LIST)
1386 cdio_paranoia_paranoia_h
1394 dev_bktr_ioctl_bt848_h
1395 dev_bktr_ioctl_meteor_h
1397 dev_video_bktr_ioctl_bt848_h
1398 dev_video_meteor_ioctl_meteor_h
1414 GetProcessAffinityMask
1415 GetProcessMemoryInfo
1417 GetSystemTimeAsFileTime
1428 jack_port_get_latency_range
1438 machine_ioctl_bt848_h
1439 machine_ioctl_meteor_h
1452 openjpeg_1_5_openjpeg_h
1464 SetConsoleTextAttribute
1473 struct_group_source_req
1474 struct_ip_mreq_source
1477 struct_rusage_ru_maxrss
1478 struct_sctp_event_subscribe
1480 struct_sockaddr_sa_len
1481 struct_sockaddr_storage
1482 struct_v4l2_frmivalenum_discrete
1485 sync_val_compare_and_swap
1508 # options emitted with CONFIG_ prefix but not available on the command line
1610 # code dependency declarations
1612 # architecture extensions
1621 map 'eval ${v}_inline_deps=inline_asm' $ARCH_EXT_LIST_ARM
1624 mips32r2_deps="mips"
1625 mipsdspr1_deps="mips"
1626 mipsdspr2_deps="mips"
1633 x86_64_suggest="cmov fast_cmov"
1636 amd3dnowext_deps="amd3dnow"
1648 mmx_external_deps="yasm"
1649 mmx_inline_deps="inline_asm"
1650 mmx_suggest="mmx_external mmx_inline"
1652 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do
1653 eval dep=\$${ext}_deps
1654 eval ${ext}_external_deps='"${dep}_external"'
1655 eval ${ext}_inline_deps='"${dep}_inline"'
1656 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
1659 aligned_stack_if_any="ppc x86"
1660 fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1661 fast_clz_if_any="alpha avr32 mips ppc x86"
1662 fast_unaligned_if_any="ppc x86"
1664 inline_asm_deps="!tms470"
1665 need_memalign="altivec neon sse"
1667 symver_if_any="symver_asm_label symver_gnu_asm"
1673 error_resilience_select="dsputil"
1676 mpegaudio_select="mpegaudiodsp"
1677 mpegaudiodsp_select="dct"
1678 mpegvideo_select="dsputil error_resilience videodsp h264chroma"
1679 mpegvideoenc_select="mpegvideo"
1681 # decoders / encoders
1682 aac_decoder_select="mdct sinewin"
1683 aac_encoder_select="audio_frame_queue mdct sinewin"
1684 aac_latm_decoder_select="aac_decoder aac_latm_parser"
1685 ac3_decoder_select="mdct ac3dsp ac3_parser dsputil"
1686 ac3_encoder_select="mdct ac3dsp dsputil"
1687 ac3_fixed_encoder_select="mdct ac3dsp dsputil"
1688 alac_encoder_select="lpc"
1689 als_decoder_select="dsputil"
1690 amrnb_decoder_select="lsp"
1691 amrwb_decoder_select="lsp"
1692 amv_encoder_select="aandcttables"
1693 ape_decoder_select="dsputil"
1694 asv_decoder_select="dsputil"
1695 atrac1_decoder_select="mdct sinewin"
1696 atrac3_decoder_select="mdct"
1697 bink_decoder_select="dsputil"
1698 binkaudio_dct_decoder_select="mdct rdft dct sinewin"
1699 binkaudio_rdft_decoder_select="mdct rdft sinewin"
1700 cavs_decoder_select="dsputil golomb h264chroma mpegvideo videodsp"
1701 cllc_decoder_select="dsputil"
1702 comfortnoise_encoder_select="lpc"
1703 cook_decoder_select="dsputil mdct sinewin"
1704 cscd_decoder_select="lzo"
1705 cscd_decoder_suggest="zlib"
1706 dca_decoder_select="mdct"
1707 dirac_decoder_select="dsputil dwt golomb videodsp"
1708 dnxhd_decoder_select="dsputil"
1709 dnxhd_encoder_select="aandcttables dsputil mpegvideoenc"
1710 dv_decoder_select="dsputil"
1711 dxa_decoder_select="zlib"
1712 eac3_decoder_select="ac3_decoder"
1713 eac3_encoder_select="ac3_encoder"
1714 eamad_decoder_select="aandcttables dsputil mpegvideo"
1715 eatgq_decoder_select="aandcttables"
1716 eatqi_decoder_select="aandcttables mpegvideo"
1717 exr_decoder_select="zlib"
1718 ffv1_decoder_select="dsputil golomb rangecoder"
1719 ffv1_encoder_select="rangecoder"
1720 ffvhuff_encoder_select="huffman"
1721 flac_decoder_select="golomb"
1722 flac_encoder_select="dsputil golomb lpc"
1723 flashsv_decoder_select="zlib"
1724 flashsv_encoder_select="zlib"
1725 flashsv2_encoder_select="zlib"
1726 flashsv2_decoder_select="zlib"
1727 flv_decoder_select="h263_decoder"
1728 flv_encoder_select="h263_encoder"
1729 fourxm_decoder_select="dsputil"
1730 fraps_decoder_select="dsputil huffman"
1731 g729_decoder_select="dsputil"
1732 h261_decoder_select="error_resilience mpegvideo"
1733 h261_encoder_select="aandcttables mpegvideoenc"
1734 h263_decoder_select="error_resilience h263_parser mpegvideo"
1735 h263_encoder_select="aandcttables mpegvideoenc"
1736 h263i_decoder_select="h263_decoder"
1737 h263p_encoder_select="h263_encoder"
1738 h264_decoder_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1739 huffyuv_decoder_select="dsputil"
1740 huffyuv_encoder_select="huffman"
1741 iac_decoder_select="fft mdct sinewin"
1742 imc_decoder_select="dsputil fft mdct sinewin"
1743 indeo3_decoder_select="dsputil"
1744 interplayvideo_decoder_select="dsputil"
1745 jpegls_decoder_select="golomb"
1746 jpegls_encoder_select="golomb"
1747 jv_decoder_select="dsputil"
1748 lagarith_decoder_select="dsputil"
1749 ljpeg_encoder_select="aandcttables mpegvideoenc"
1750 loco_decoder_select="golomb"
1751 mdec_decoder_select="dsputil error_resilience mpegvideo"
1752 mimic_decoder_select="dsputil"
1753 mjpeg_encoder_select="aandcttables dsputil mpegvideoenc"
1754 mlp_decoder_select="dsputil mlp_parser"
1755 motionpixels_decoder_select="dsputil"
1756 mp1_decoder_select="mpegaudio"
1757 mp1float_decoder_select="mpegaudio"
1758 mp2_decoder_select="mpegaudio"
1759 mp2float_decoder_select="mpegaudio"
1760 mp3_decoder_select="mpegaudio"
1761 mp3adu_decoder_select="mpegaudio"
1762 mp3adufloat_decoder_select="mpegaudio"
1763 mp3float_decoder_select="mpegaudio"
1764 mp3on4_decoder_select="mpegaudio"
1765 mp3on4float_decoder_select="mpegaudio"
1766 mpc7_decoder_select="dsputil mpegaudiodsp"
1767 mpc8_decoder_select="dsputil mpegaudiodsp"
1768 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1769 mpeg_xvmc_decoder_select="mpegvideo_decoder"
1770 mpeg1video_decoder_select="error_resilience mpegvideo"
1771 mpeg1video_encoder_select="aandcttables mpegvideoenc"
1772 mpeg2video_decoder_select="error_resilience mpegvideo"
1773 mpeg2video_encoder_select="aandcttables mpegvideoenc"
1774 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1775 mpeg4_encoder_select="h263_encoder"
1776 msmpeg4v1_decoder_select="h263_decoder"
1777 msmpeg4v1_encoder_select="h263_encoder"
1778 msmpeg4v2_decoder_select="h263_decoder"
1779 msmpeg4v2_encoder_select="h263_encoder"
1780 msmpeg4v3_decoder_select="h263_decoder"
1781 msmpeg4v3_encoder_select="h263_encoder"
1782 mss2_decoder_select="error_resilience vc1_decoder"
1783 nellymoser_decoder_select="mdct sinewin"
1784 nellymoser_encoder_select="audio_frame_queue mdct sinewin"
1785 nuv_decoder_select="dsputil lzo"
1786 png_decoder_select="zlib"
1787 png_encoder_select="dsputil zlib"
1788 prores_decoder_select="dsputil"
1789 qcelp_decoder_select="lsp"
1790 qdm2_decoder_select="mdct rdft mpegaudiodsp"
1791 ra_144_encoder_select="audio_frame_queue lpc"
1792 ralf_decoder_select="golomb"
1793 rtjpeg_decoder_select="dsputil"
1794 rv10_decoder_select="error_resilience h263_decoder"
1795 rv10_encoder_select="h263_encoder"
1796 rv20_decoder_select="error_resilience h263_decoder"
1797 rv20_encoder_select="h263_encoder"
1798 rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1799 rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo videodsp"
1800 shorten_decoder_select="golomb"
1801 sipr_decoder_select="lsp"
1802 snow_decoder_select="dsputil dwt h264qpel rangecoder"
1803 snow_encoder_select="aandcttables dsputil dwt h264qpel error_resilience mpegvideoenc rangecoder"
1804 sonic_decoder_select="golomb"
1805 sonic_encoder_select="golomb"
1806 sonic_ls_encoder_select="golomb"
1807 svq1_decoder_select="dsputil mpegvideo"
1808 svq1_encoder_select="aandcttables dsputil mpegvideoenc"
1809 svq3_decoder_select="error_resilience golomb h264chroma h264dsp h264pred h264qpel mpegvideo videodsp"
1810 svq3_decoder_suggest="zlib"
1811 tak_decoder_select="dsputil"
1812 theora_decoder_select="vp3_decoder"
1813 tiff_decoder_suggest="zlib"
1814 tiff_encoder_suggest="zlib"
1815 truehd_decoder_select="mlp_parser"
1816 truemotion2_decoder_select="dsputil"
1817 tscc_decoder_select="zlib"
1818 twinvq_decoder_select="mdct lsp sinewin"
1819 utvideo_decoder_select="dsputil"
1820 utvideo_encoder_select="huffman"
1821 vble_decoder_select="dsputil"
1822 vc1_decoder_select="error_resilience h263_decoder h264chroma h264qpel"
1823 vc1image_decoder_select="vc1_decoder"
1824 vorbis_decoder_select="mdct"
1825 vorbis_encoder_select="mdct"
1826 vp3_decoder_select="dsputil vp3dsp videodsp"
1827 vp5_decoder_select="dsputil h264chroma videodsp vp3dsp"
1828 vp6_decoder_select="dsputil h264chroma huffman videodsp vp3dsp"
1829 vp6a_decoder_select="vp6_decoder"
1830 vp6f_decoder_select="vp6_decoder"
1831 vp8_decoder_select="h264pred videodsp"
1832 wmapro_decoder_select="mdct sinewin"
1833 wmav1_decoder_select="mdct sinewin"
1834 wmav1_encoder_select="mdct sinewin"
1835 wmav2_decoder_select="mdct sinewin"
1836 wmav2_encoder_select="mdct sinewin"
1837 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
1838 wmv1_decoder_select="h263_decoder"
1839 wmv1_encoder_select="h263_encoder"
1840 wmv2_decoder_select="h263_decoder videodsp"
1841 wmv2_encoder_select="h263_encoder"
1842 wmv3_decoder_select="vc1_decoder"
1843 wmv3image_decoder_select="wmv3_decoder"
1844 zerocodec_decoder_select="zlib"
1845 zlib_decoder_select="zlib"
1846 zlib_encoder_select="zlib"
1847 zmbv_decoder_select="zlib"
1848 zmbv_encoder_select="zlib"
1850 # hardware accelerators
1851 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
1852 dxva2_deps="dxva2api_h"
1853 vaapi_deps="va_va_h"
1854 vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
1855 vda_extralibs="-framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore"
1856 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1858 h263_vaapi_hwaccel_deps="vaapi"
1859 h263_vaapi_hwaccel_select="h263_decoder"
1860 h263_vdpau_hwaccel_deps="vdpau"
1861 h263_vdpau_hwaccel_select="h263_decoder"
1862 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
1863 h264_dxva2_hwaccel_deps="dxva2"
1864 h264_dxva2_hwaccel_select="h264_decoder"
1865 h264_vaapi_hwaccel_deps="vaapi"
1866 h264_vaapi_hwaccel_select="h264_decoder"
1867 h264_vda_decoder_deps="vda"
1868 h264_vda_decoder_select="h264_decoder"
1869 h264_vda_hwaccel_deps="vda"
1870 h264_vda_hwaccel_select="h264_decoder"
1871 h264_vdpau_decoder_deps="vdpau"
1872 h264_vdpau_decoder_select="h264_decoder"
1873 h264_vdpau_hwaccel_deps="vdpau"
1874 h264_vdpau_hwaccel_select="h264_decoder"
1875 mpeg_vdpau_decoder_deps="vdpau"
1876 mpeg_vdpau_decoder_select="mpegvideo_decoder"
1877 mpeg1_vdpau_decoder_deps="vdpau"
1878 mpeg1_vdpau_decoder_select="mpeg1video_decoder"
1879 mpeg1_vdpau_hwaccel_deps="vdpau"
1880 mpeg1_vdpau_hwaccel_select="mpeg1video_decoder"
1881 mpeg2_crystalhd_decoder_select="crystalhd"
1882 mpeg2_dxva2_hwaccel_deps="dxva2"
1883 mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
1884 mpeg2_vaapi_hwaccel_deps="vaapi"
1885 mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
1886 mpeg2_vdpau_hwaccel_deps="vdpau"
1887 mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
1888 mpeg4_crystalhd_decoder_select="crystalhd"
1889 mpeg4_vaapi_hwaccel_deps="vaapi"
1890 mpeg4_vaapi_hwaccel_select="mpeg4_decoder"
1891 mpeg4_vdpau_decoder_deps="vdpau"
1892 mpeg4_vdpau_decoder_select="mpeg4_decoder"
1893 mpeg4_vdpau_hwaccel_deps="vdpau"
1894 mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
1895 msmpeg4_crystalhd_decoder_select="crystalhd"
1896 vc1_crystalhd_decoder_select="crystalhd"
1897 vc1_dxva2_hwaccel_deps="dxva2"
1898 vc1_dxva2_hwaccel_select="vc1_decoder"
1899 vc1_vaapi_hwaccel_deps="vaapi"
1900 vc1_vaapi_hwaccel_select="vc1_decoder"
1901 vc1_vdpau_decoder_deps="vdpau"
1902 vc1_vdpau_decoder_select="vc1_decoder"
1903 vc1_vdpau_hwaccel_deps="vdpau"
1904 vc1_vdpau_hwaccel_select="vc1_decoder"
1905 wmv3_crystalhd_decoder_select="crystalhd"
1906 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
1907 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1908 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1909 wmv3_vdpau_hwaccel_select="vc1_vdpau_hwaccel"
1912 h264_parser_select="golomb h264chroma h264dsp h264pred h264qpel videodsp"
1913 mpeg4video_parser_select="error_resilience mpegvideo"
1914 mpegvideo_parser_select="error_resilience mpegvideo"
1915 vc1_parser_select="mpegvideo"
1917 # external libraries
1918 libaacplus_encoder_deps="libaacplus"
1919 libcelt_decoder_deps="libcelt"
1920 libfaac_encoder_deps="libfaac"
1921 libfaac_encoder_select="audio_frame_queue"
1922 libfdk_aac_encoder_deps="libfdk_aac"
1923 libfdk_aac_encoder_select="audio_frame_queue"
1924 libgsm_decoder_deps="libgsm"
1925 libgsm_encoder_deps="libgsm"
1926 libgsm_ms_decoder_deps="libgsm"
1927 libgsm_ms_encoder_deps="libgsm"
1928 libilbc_decoder_deps="libilbc"
1929 libilbc_encoder_deps="libilbc"
1930 libmodplug_demuxer_deps="libmodplug"
1931 libmp3lame_encoder_deps="libmp3lame"
1932 libmp3lame_encoder_select="audio_frame_queue"
1933 libopencore_amrnb_decoder_deps="libopencore_amrnb"
1934 libopencore_amrnb_encoder_deps="libopencore_amrnb"
1935 libopencore_amrnb_encoder_select="audio_frame_queue"
1936 libopencore_amrwb_decoder_deps="libopencore_amrwb"
1937 libopenjpeg_decoder_deps="libopenjpeg"
1938 libopenjpeg_encoder_deps="libopenjpeg"
1939 libopus_decoder_deps="libopus"
1940 libopus_encoder_deps="libopus"
1941 libopus_encoder_select="audio_frame_queue"
1942 libschroedinger_decoder_deps="libschroedinger"
1943 libschroedinger_encoder_deps="libschroedinger"
1944 libspeex_decoder_deps="libspeex"
1945 libspeex_encoder_deps="libspeex"
1946 libspeex_encoder_select="audio_frame_queue"
1947 libstagefright_h264_decoder_deps="libstagefright_h264"
1948 libtheora_encoder_deps="libtheora"
1949 libtwolame_encoder_deps="libtwolame"
1950 libvo_aacenc_encoder_deps="libvo_aacenc"
1951 libvo_aacenc_encoder_select="audio_frame_queue"
1952 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
1953 libvorbis_decoder_deps="libvorbis"
1954 libvorbis_encoder_deps="libvorbis"
1955 libvorbis_encoder_select="audio_frame_queue"
1956 libvpx_vp8_decoder_deps="libvpx"
1957 libvpx_vp8_encoder_deps="libvpx"
1958 libvpx_vp9_decoder_deps="libvpx"
1959 libvpx_vp9_encoder_deps="libvpx"
1960 libx264_encoder_deps="libx264"
1961 libx264rgb_encoder_deps="libx264"
1962 libxavs_encoder_deps="libxavs"
1963 libxvid_encoder_deps="libxvid"
1964 libutvideo_decoder_deps="libutvideo"
1965 libutvideo_encoder_deps="libutvideo"
1968 ac3_demuxer_select="ac3_parser"
1969 asf_stream_muxer_select="asf_muxer"
1970 avisynth_demuxer_deps="avisynth"
1971 dirac_demuxer_select="dirac_parser"
1972 dts_demuxer_select="dca_parser"
1973 dtshd_demuxer_select="dca_parser"
1974 eac3_demuxer_select="ac3_parser"
1975 f4v_muxer_select="mov_muxer"
1976 flac_demuxer_select="flac_parser"
1977 ipod_muxer_select="mov_muxer"
1978 ismv_muxer_select="mov_muxer"
1979 libnut_demuxer_deps="libnut"
1980 libnut_muxer_deps="libnut"
1981 matroska_audio_muxer_select="matroska_muxer"
1982 matroska_demuxer_suggest="bzlib lzo zlib"
1983 mov_demuxer_suggest="zlib"
1984 mov_muxer_select="rtpenc_chain"
1985 mp3_demuxer_select="mpegaudio_parser"
1986 mp4_muxer_select="mov_muxer"
1987 mpegts_muxer_select="adts_muxer latm_muxer mpegvideo"
1988 mpegtsraw_demuxer_select="mpegts_demuxer"
1989 mxf_d10_muxer_select="mxf_muxer"
1990 ogg_demuxer_select="golomb"
1991 psp_muxer_select="mov_muxer"
1992 rtp_demuxer_select="sdp_demuxer"
1993 rtp_muxer_select="mpegvideo"
1994 rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
1995 rtsp_demuxer_select="http_protocol rtpdec"
1996 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol rtpenc_chain"
1997 sap_demuxer_select="sdp_demuxer"
1998 sap_muxer_select="rtp_muxer rtp_protocol rtpenc_chain"
1999 sdp_demuxer_select="rtpdec"
2000 smoothstreaming_muxer_select="ismv_muxer"
2001 spdif_muxer_select="aac_parser"
2002 tak_demuxer_select="tak_parser"
2003 tg2_muxer_select="mov_muxer"
2004 tgp_muxer_select="mov_muxer"
2005 vobsub_demuxer_select="mpegps_demuxer"
2006 w64_demuxer_deps="wav_demuxer"
2007 w64_muxer_deps="wav_muxer"
2010 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
2011 alsa_outdev_deps="alsa_asoundlib_h"
2012 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
2013 caca_outdev_deps="libcaca"
2014 dshow_indev_deps="IBaseFilter"
2015 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
2016 dv1394_indev_deps="dv1394 dv_demuxer"
2017 fbdev_indev_deps="linux_fb_h"
2018 iec61883_indev_deps="libiec61883"
2019 jack_indev_deps="jack_jack_h sem_timedwait"
2020 lavfi_indev_deps="avfilter"
2021 libcdio_indev_deps="libcdio"
2022 libdc1394_indev_deps="libdc1394"
2023 libv4l2_indev_deps="libv4l2"
2024 openal_indev_deps="openal"
2025 oss_indev_deps_any="soundcard_h sys_soundcard_h"
2026 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
2027 pulse_indev_deps="libpulse"
2028 sdl_outdev_deps="sdl"
2029 sndio_indev_deps="sndio_h"
2030 sndio_outdev_deps="sndio_h"
2031 v4l_indev_deps="linux_videodev_h"
2032 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
2033 vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
2034 vfwcap_indev_extralibs="-lavicap32"
2035 x11grab_indev_deps="x11grab"
2038 bluray_protocol_deps="libbluray"
2039 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
2040 ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl"
2041 ffrtmpcrypt_protocol_select="tcp_protocol"
2042 ffrtmphttp_protocol_deps="!librtmp_protocol"
2043 ffrtmphttp_protocol_select="http_protocol"
2044 gopher_protocol_select="network"
2045 httpproxy_protocol_select="tcp_protocol"
2046 http_protocol_select="tcp_protocol"
2047 https_protocol_select="tls_protocol"
2048 librtmp_protocol_deps="librtmp"
2049 librtmpe_protocol_deps="librtmp"
2050 librtmps_protocol_deps="librtmp"
2051 librtmpt_protocol_deps="librtmp"
2052 librtmpte_protocol_deps="librtmp"
2053 mmsh_protocol_select="http_protocol"
2054 mmst_protocol_select="network"
2055 rtmp_protocol_deps="!librtmp_protocol"
2056 rtmp_protocol_select="tcp_protocol"
2057 rtmpe_protocol_select="ffrtmpcrypt_protocol"
2058 rtmps_protocol_deps="!librtmp_protocol"
2059 rtmps_protocol_select="tls_protocol"
2060 rtmpt_protocol_select="ffrtmphttp_protocol"
2061 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
2062 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
2063 rtp_protocol_select="udp_protocol"
2064 sctp_protocol_deps="struct_sctp_event_subscribe"
2065 sctp_protocol_select="network"
2066 srtp_protocol_select="rtp_protocol"
2067 tcp_protocol_select="network"
2068 tls_protocol_deps_any="openssl gnutls"
2069 tls_protocol_select="tcp_protocol"
2070 udp_protocol_select="network"
2073 aconvert_filter_deps="swresample"
2074 amovie_filter_deps="avcodec avformat"
2075 aresample_filter_deps="swresample"
2076 ass_filter_deps="libass"
2077 asyncts_filter_deps="avresample"
2078 atempo_filter_deps="avcodec rdft"
2079 blackframe_filter_deps="gpl"
2080 boxblur_filter_deps="gpl"
2081 colormatrix_filter_deps="gpl"
2082 cropdetect_filter_deps="gpl"
2083 decimate_filter_deps="gpl avcodec"
2084 delogo_filter_deps="gpl"
2085 deshake_filter_deps="avcodec"
2086 drawtext_filter_deps="libfreetype"
2087 ebur128_filter_deps="gpl"
2088 flite_filter_deps="libflite"
2089 frei0r_filter_deps="frei0r dlopen"
2090 frei0r_filter_extralibs='$ldl'
2091 frei0r_src_filter_deps="frei0r dlopen"
2092 frei0r_src_filter_extralibs='$ldl'
2093 geq_filter_deps="gpl"
2094 histeq_filter_deps="gpl"
2095 hqdn3d_filter_deps="gpl"
2096 hue_filter_deps="gpl"
2097 kerndeint_filter_deps="gpl"
2098 movie_filter_deps="avcodec avformat"
2099 mp_filter_deps="gpl avcodec swscale inline_asm"
2100 mptestsrc_filter_deps="gpl"
2101 negate_filter_deps="lut_filter"
2102 noise_filter_deps="gpl"
2103 resample_filter_deps="avresample"
2104 ocv_filter_deps="libopencv"
2105 pan_filter_deps="swresample"
2106 pp_filter_deps="gpl postproc"
2107 removelogo_filter_deps="avcodec avformat swscale"
2108 scale_filter_deps="swscale"
2109 smartblur_filter_deps="gpl swscale"
2110 showspectrum_filter_deps="avcodec rdft"
2111 stereo3d_filter_deps="gpl"
2112 subtitles_filter_deps="avformat avcodec libass"
2113 super2xsai_filter_deps="gpl"
2114 tinterlace_filter_deps="gpl"
2115 yadif_filter_deps="gpl"
2116 pixfmts_super2xsai_test_deps="super2xsai_filter"
2117 tinterlace_merge_test_deps="tinterlace_filter"
2118 tinterlace_pad_test_deps="tinterlace_filter"
2121 avcodec_deps="avutil"
2122 avdevice_deps="avutil avcodec avformat"
2123 avfilter_deps="avutil"
2124 avformat_deps="avutil avcodec"
2125 avresample_deps="avutil"
2126 postproc_deps="avutil gpl"
2127 swscale_deps="avutil"
2130 ffmpeg_deps="avcodec avfilter avformat swscale swresample"
2131 ffmpeg_select="ffbuffersink_filter format_filter aformat_filter
2132 setpts_filter null_filter anull_filter ffabuffersink_filter"
2133 ffplay_deps="avcodec avformat swscale swresample sdl"
2134 ffplay_select="ffbuffersink_filter rdft crop_filter"
2135 ffprobe_deps="avcodec avformat"
2136 ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
2137 ffserver_extralibs='$ldl'
2140 podpages_deps="perl"
2141 manpages_deps="perl pod2man"
2142 htmlpages_deps="texi2html"
2143 txtpages_deps="makeinfo"
2144 doc_deps_any="manpages htmlpages podpages txtpages"
2146 # default parameters
2148 logfile="config.log"
2150 # installation paths
2151 prefix_default="/usr/local"
2152 bindir_default='${prefix}/bin'
2153 datadir_default='${prefix}/share/ffmpeg'
2154 incdir_default='${prefix}/include'
2155 libdir_default='${prefix}/lib'
2156 mandir_default='${prefix}/share/man'
2157 shlibdir_default="$libdir_default"
2163 host_cc_default="gcc"
2169 pkg_config_default=pkg-config
2171 strip_default="strip"
2172 yasmexe_default="yasm"
2177 arch_default=$(uname -m)
2181 target_os_default=$(tolower $(uname -s))
2182 host_os=$target_os_default
2184 # configurable options
2185 enable $PROGRAM_LIST
2186 enable $DOCUMENT_LIST
2187 enable $(filter_out avresample $LIBRARY_LIST)
2193 enable optimizations
2194 enable runtime_cpudetect
2195 enable safe_bitstream_reader
2197 enable swscale_alpha
2200 SHFLAGS='-shared -Wl,-soname,$$(@F)'
2201 FFSERVERLDFLAGS=-Wl,-E
2204 FULLNAME='$(NAME)$(BUILDSUF)'
2205 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
2208 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
2209 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
2210 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
2211 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2212 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
2213 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2233 host_cflags='-O3 -g'
2234 host_cppflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600'
2236 host_cflags_filter=echo
2237 host_ldflags_filter=echo
2239 target_path='$(CURDIR)'
2241 # since the object filename is not given with the -MM flag, the compiler
2242 # is only able to print the basename, and we must add the path ourselves
2243 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
2247 if test -f configure; then
2250 source_path=$(cd $(dirname "$0"); pwd)
2251 echo "$source_path" | grep -q '[[:blank:]]' &&
2252 die "Out of tree builds are impossible with whitespace in source path."
2253 test -e "$source_path/config.h" &&
2254 die "Out of tree builds are impossible with config.h in source dir."
2261 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
2267 file=$source_path/$3
2268 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
2271 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
2272 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
2273 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
2274 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
2275 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c)
2276 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
2277 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
2278 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
2279 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
2280 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
2281 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
2297 for n in $COMPONENT_LIST; do
2298 v=$(toupper ${n%s})_LIST
2300 eval ${n}_if_any="\$$v"
2303 enable $ARCH_EXT_LIST
2306 echo "Unknown option \"$1\"."
2307 echo "See $0 --help for available options."
2312 cat | tr ' ' '\n' | sort | pr -r -3 -t
2318 echo $* | sed s/$suffix//g | print_3_columns
2330 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
2331 echo "prob ${prob:-0.5}"
2339 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
2340 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
2350 add_extralibs $optval
2353 disable $INDEV_LIST $OUTDEV_LIST
2356 debuglevel="$optval"
2359 disable $PROGRAM_LIST
2361 --disable-everything)
2362 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2365 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2366 disable $LIBRARY_LIST $PROGRAM_LIST doc
2368 --enable-random|--disable-random)
2369 action=${opt%%-random}
2370 do_random ${action#--} $COMPONENT_LIST
2372 --enable-random=*|--disable-random=*)
2373 action=${opt%%-random=*}
2374 do_random ${action#--} $optval
2376 --enable-*=*|--disable-*=*)
2377 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
2378 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
2379 eval list=\$$(toupper $thing)_LIST
2380 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
2381 list=$(filter "$name" $list)
2382 [ "$list" = "" ] && warn "Option $opt did not match anything"
2385 --enable-?*|--disable-?*)
2386 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
2387 if is_in $option $COMPONENT_LIST; then
2388 test $action = disable && action=unset
2389 eval $action \$$(toupper ${option%s})_LIST
2390 elif is_in $option $CMDLINE_SELECT; then
2397 NAME="${opt#--list-}"
2398 is_in $NAME $COMPONENT_LIST || die_unknown $opt
2400 eval show_list $NAME \$$(toupper $NAME)_LIST
2402 --help|-h) show_help
2404 --fatal-warnings) enable fatal_warnings
2407 optname="${opt%%=*}"
2408 optname="${optname#--}"
2409 optname=$(echo "$optname" | sed 's/-/_/g')
2410 if is_in $optname $CMDLINE_SET; then
2411 eval $optname='$optval'
2412 elif is_in $optname $CMDLINE_APPEND; then
2413 append $optname "$optval"
2421 disabled logging && logfile=/dev/null
2423 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
2426 test -n "$cross_prefix" && enable cross_compile
2428 if enabled cross_compile; then
2429 test -n "$arch" && test -n "$target_os" ||
2430 die "Must specify target arch and OS when cross-compiling"
2433 ar_default="${cross_prefix}${ar_default}"
2434 cc_default="${cross_prefix}${cc_default}"
2435 cxx_default="${cross_prefix}${cxx_default}"
2436 nm_default="${cross_prefix}${nm_default}"
2437 pkg_config_default="${cross_prefix}${pkg_config_default}"
2438 ranlib="${cross_prefix}${ranlib}"
2439 strip_default="${cross_prefix}${strip_default}"
2441 sysinclude_default="${sysroot}/usr/include"
2443 case "$toolchain" in
2446 add_cflags -faddress-sanitizer
2447 add_ldflags -faddress-sanitizer
2451 add_cflags -fthread-sanitizer
2452 add_ldflags -fthread-sanitizer
2455 cc_default="c99wrap cl"
2456 ld_default="c99wrap link"
2457 nm_default="dumpbin -symbols"
2459 target_os_default="win32"
2462 die "Unknown toolchain $toolchain"
2466 set_default arch cc cxx pkg_config strip sysinclude target_os yasmexe
2467 enabled cross_compile || host_cc_default=$cc
2470 if ! $pkg_config --version >/dev/null 2>&1; then
2471 warn "$pkg_config not found, library detection may fail."
2477 mingw32*|win32|win64|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
2481 EXESUF=$(exesuf $target_os)
2482 HOSTEXESUF=$(exesuf $host_os)
2484 # set temporary file name
2485 : ${TMPDIR:=$TEMPDIR}
2489 if ! check_cmd mktemp -u XXXXXX; then
2490 # simple replacement for missing mktemp
2491 # NOT SAFE FOR GENERAL USE
2493 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
2498 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
2499 (set -C; exec > $tmp) 2>/dev/null ||
2500 die "Unable to create temporary file in $TMPDIR."
2501 append TMPFILES $tmp
2505 trap 'rm -f -- $TMPFILES' EXIT
2510 tmpfile TMPE $EXESUF
2521 # make sure we can execute files in $TMPDIR
2522 cat > $TMPSH 2>> $logfile <<EOF
2525 chmod +x $TMPSH >> $logfile 2>&1
2526 if ! $TMPSH >> $logfile 2>&1; then
2528 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
2529 variable to another directory and make sure that it is not mounted noexec.
2531 die "Sanity test failed."
2537 -std=c99) echo -c99 ;;
2538 -mcpu=*) echo -arch ${flag#*=} ;;
2539 -mieee) echo -ieee ;;
2540 -O*|-fast) echo $flag ;;
2541 -fno-math-errno) echo -assume nomath_errno ;;
2543 -Wall) echo -msg_enable level2 ;;
2544 -Wno-pointer-sign) echo -msg_disable ptrmismatch1 ;;
2545 -Wl,*) echo $flag ;;
2555 -fomit-frame-pointer) echo -Oy ;;
2557 -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
2558 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
2559 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
2565 -fno-signed-zeros) ;;
2567 -lz) echo zlib.lib ;;
2568 -lavifil32) echo vfw32.lib ;;
2569 -lavicap32) echo vfw32.lib user32.lib ;;
2570 -l*) echo ${flag#-l}.lib ;;
2579 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
2580 -fomit-frame-pointer) echo -Mnoframe ;;
2591 case "${flag#*=}" in
2592 native) echo -xtarget=native ;;
2593 v9|niagara) echo -xarch=sparc ;;
2594 ultrasparc) echo -xarch=sparcvis ;;
2595 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
2596 i586|pentium) echo -xchip=pentium ;;
2597 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
2598 pentium3*|c3-2) echo -xtarget=pentium3 ;;
2599 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
2600 pentium4*) echo -xtarget=pentium4 ;;
2601 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
2602 *-sse3) echo -xarch=sse3 ;;
2603 core2) echo -xarch=ssse3 -xchip=core2 ;;
2604 corei7) echo -xarch=sse4_2 -xchip=nehalem ;;
2605 corei7-avx) echo -xarch=avx -xchip=sandybridge ;;
2606 amdfam10|barcelona) echo -xtarget=barcelona ;;
2607 bdver*) echo -xarch=avx ;;
2608 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
2609 k8|opteron|athlon64|athlon-fx)
2610 echo -xarch=sse2a ;;
2611 athlon*) echo -xarch=pentium_proa ;;
2614 -std=c99) echo -xc99 ;;
2615 -fomit-frame-pointer) echo -xregs=frameptr ;;
2616 -fPIC) echo -KPIC -xcode=pic32 ;;
2617 -W*,*) echo $flag ;;
2618 -f*-*|-W*|-mimpure-text) ;;
2629 case "${flag#*=}" in
2630 armv7-a|cortex-a*) echo -mv=7a8 ;;
2631 armv7-r|cortex-r*) echo -mv=7r4 ;;
2632 armv7-m|cortex-m*) echo -mv=7m3 ;;
2633 armv6*|arm11*) echo -mv=6 ;;
2634 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
2636 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
2639 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
2640 -mfpu=vfp) echo --float_support=vfpv2 ;;
2641 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
2642 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
2643 -msoft-float) echo --float_support=vfplib ;;
2644 -O[0-3]|-mf=*) echo $flag ;;
2646 -pds=*) echo $flag ;;
2647 -D*|-I*) echo $flag ;;
2648 --gcc|--abi=*) echo $flag ;;
2658 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
2659 unset _ld_o _ldflags _ld_lib _ld_path
2660 unset _depflags _DEPCMD _DEPFLAGS
2663 if $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
2665 gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)')
2666 _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver"
2667 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2670 elif $_cc -v 2>&1 | grep -qi ^gcc; then
2672 gcc_version=$($_cc --version | head -n1)
2673 gcc_basever=$($_cc -dumpversion)
2674 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
2675 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
2676 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
2677 if ! $_cc -dumpversion | grep -q '^2\.'; then
2678 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2682 elif $_cc --version 2>/dev/null | grep -q ^icc; then
2684 _ident=$($_cc --version | head -n1)
2689 elif $_cc -v 2>&1 | grep -q xlc; then
2691 _ident=$($_cc -qversion 2>/dev/null | head -n1)
2693 _cflags_size='-O5 -qcompact'
2694 elif $_cc -V 2>/dev/null | grep -q Compaq; then
2696 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
2698 _cflags_speed='-fast'
2700 _flags_filter=ccc_flags
2701 elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
2702 test -d "$sysroot" || die "No valid sysroot specified."
2704 _ident=$($_cc --vsn | head -n1)
2705 armcc_conf="$PWD/armcc.conf"
2706 $_cc --arm_linux_configure \
2707 --arm_linux_config_file="$armcc_conf" \
2708 --configure_sysroot="$sysroot" \
2709 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
2710 die "Error creating armcc configuration file."
2711 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
2712 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
2713 as_default="${cross_prefix}gcc"
2717 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
2719 _ident=$($_cc -version | head -n1 | tr -s ' ')
2720 _flags='--gcc --abi=eabi -me'
2723 _depflags='-ppa -ppd=$(@:.o=.d)'
2724 _cflags_speed='-O3 -mf=5'
2725 _cflags_size='-O3 -mf=2'
2726 _flags_filter=tms470_flags
2727 elif $_cc -v 2>&1 | grep -q clang; then
2729 _ident=$($_cc --version | head -n1)
2733 elif $_cc -V 2>&1 | grep -q Sun; then
2735 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
2736 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2737 _DEPFLAGS='-xM1 -xc99'
2740 _cflags_size='-O5 -xspace'
2741 _flags_filter=suncc_flags
2742 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
2744 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2745 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2748 _flags_filter='filter_out -Wdisabled-optimization'
2749 elif $_cc -v 2>&1 | grep -q Open64; then
2751 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2752 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2755 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
2756 elif $_cc -V 2>&1 | grep -q Portland; then
2758 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
2759 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
2760 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
2761 _cflags_size="-O2 -Munroll=c:1 $opt_common"
2763 _flags_filter=pgi_flags
2764 elif $_cc 2>&1 | grep -q Microsoft; then
2766 _ident=$($cc 2>&1 | head -n1)
2767 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
2768 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
2771 # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it
2772 if $_cc 2>&1 | grep -q Linker; then
2779 _flags_filter=msvc_flags
2781 _ld_path='-libpath:'
2783 _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64'
2784 if [ $pfx = hostcc ]; then
2785 append _cflags -Dsnprintf=_snprintf
2790 eval ${pfx}_type=\$_type
2791 eval ${pfx}_ident=\$_ident
2795 eval ${1}_C=\${_cc_c-\${${1}_C}}
2796 eval ${1}_E=\${_cc_e-\${${1}_E}}
2797 eval ${1}_O=\${_cc_o-\${${1}_O}}
2799 if [ -n "$_depflags" ]; then
2800 eval ${1}_DEPFLAGS=\$_depflags
2802 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
2803 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
2804 eval DEP${1}FLAGS=\$_flags
2809 cflags_filter=$_flags_filter
2810 cflags_speed=$_cflags_speed
2811 cflags_size=$_cflags_size
2812 cflags_noopt=$_cflags_noopt
2813 add_cflags $_flags $_cflags
2814 cc_ldflags=$_ldflags
2817 probe_cc hostcc "$host_cc"
2818 host_cflags_filter=$_flags_filter
2819 add_host_cflags $_flags $_cflags
2822 test -n "$cc_type" && enable $cc_type ||
2823 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
2825 : ${as_default:=$cc}
2826 : ${dep_cc_default:=$cc}
2827 : ${ld_default:=$cc}
2828 : ${host_ld_default:=$host_cc}
2829 set_default ar as dep_cc ld host_ld
2832 asflags_filter=$_flags_filter
2833 add_asflags $_flags $_cflags
2837 ldflags_filter=$_flags_filter
2838 add_ldflags $_flags $_ldflags
2839 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
2841 LD_LIB=${_ld_lib-$LD_LIB}
2842 LD_PATH=${_ld_path-$LD_PATH}
2844 probe_cc hostld "$host_ld"
2845 host_ldflags_filter=$_flags_filter
2846 add_host_ldflags $_flags $_ldflags
2847 HOSTLD_O=${_ld_o-$HOSTLD_O}
2849 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
2850 probe_cc depcc "$dep_cc"
2851 CCDEP=${_DEPCMD:-$DEPCMD}
2852 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
2856 if $ar 2>&1 | grep -q Microsoft; then
2859 elif $ar 2>&1 | grep -q 'Texas Instruments'; then
2867 add_cflags $extra_cflags
2868 add_cxxflags $extra_cxxflags
2869 add_asflags $extra_cflags
2871 if test -n "$sysroot"; then
2874 add_cppflags --sysroot="$sysroot"
2875 add_ldflags --sysroot="$sysroot"
2878 add_cppflags -I"$sysinclude"
2879 add_ldflags --sysroot="$sysroot"
2884 if test "$cpu" = host; then
2885 enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
2890 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
2892 s/.*$1=\\([^ ]*\\).*/\\1/
2897 cpu=$(check_native -march || check_native -mcpu)
2901 test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
2904 # Deal with common $arch aliases
2918 "Power Macintosh"|ppc*|powerpc*)
2933 i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
2938 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
2941 # Add processor-specific flags
2942 if enabled aarch64; then
2946 cpuflags="-march=$cpu"
2949 cpuflags="-mcpu=$cpu"
2953 elif enabled alpha; then
2955 cpuflags="-mcpu=$cpu"
2957 elif enabled arm; then
2960 check_cpp_condition stddef.h \
2961 "defined __ARM_ARCH_${1}__ || defined __TARGET_ARCH_${2:-$1}" \
2966 if check_arm_arch 4; then echo armv4;
2967 elif check_arm_arch 4T; then echo armv4t;
2968 elif check_arm_arch 5; then echo armv5;
2969 elif check_arm_arch 5E; then echo armv5e;
2970 elif check_arm_arch 5T; then echo armv5t;
2971 elif check_arm_arch 5TE; then echo armv5te;
2972 elif check_arm_arch 5TEJ; then echo armv5te;
2973 elif check_arm_arch 6; then echo armv6;
2974 elif check_arm_arch 6J; then echo armv6j;
2975 elif check_arm_arch 6K; then echo armv6k;
2976 elif check_arm_arch 6Z; then echo armv6z;
2977 elif check_arm_arch 6ZK; then echo armv6zk;
2978 elif check_arm_arch 6T2; then echo armv6t2;
2979 elif check_arm_arch 7; then echo armv7;
2980 elif check_arm_arch 7A 7_A; then echo armv7-a;
2981 elif check_arm_arch 7R 7_R; then echo armv7-r;
2982 elif check_arm_arch 7M 7_M; then echo armv7-m;
2983 elif check_arm_arch 7EM 7E_M; then echo armv7-m;
2984 elif check_arm_arch 8A 8_A; then echo armv8-a;
2988 [ "$cpu" = generic ] && cpu=$(probe_arm_arch)
2992 cpuflags="-march=$cpu"
2993 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
2996 cpuflags="-mcpu=$cpu"
2998 cortex-a*) subarch=armv7a ;;
2999 cortex-r*) subarch=armv7r ;;
3000 cortex-m*) enable thumb; subarch=armv7m ;;
3001 arm11*) subarch=armv6 ;;
3002 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
3003 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
3004 *) subarch=$(probe_arm_arch) ;;
3010 armv5t*) enable fast_clz ;;
3011 armv[6-8]*) enable fast_clz fast_unaligned ;;
3014 elif enabled avr32; then
3019 cpuflags="-mpart=$cpu"
3023 cpuflags="-march=$cpu"
3027 cpuflags="-mcpu=$cpu"
3031 cpuflags="-march=$cpu"
3035 elif enabled bfin; then
3037 cpuflags="-mcpu=$cpu"
3039 elif enabled mips; then
3041 cpuflags="-march=$cpu"
3057 24kef*|34kf*|1004kf*)
3065 elif enabled ppc; then
3067 case $(tolower $cpu) in
3068 601|ppc601|powerpc601)
3069 cpuflags="-mcpu=601"
3072 603*|ppc603*|powerpc603*)
3073 cpuflags="-mcpu=603"
3076 604*|ppc604*|powerpc604*)
3077 cpuflags="-mcpu=604"
3080 g3|75*|ppc75*|powerpc75*)
3081 cpuflags="-mcpu=750"
3084 g4|745*|ppc745*|powerpc745*)
3085 cpuflags="-mcpu=7450"
3087 74*|ppc74*|powerpc74*)
3088 cpuflags="-mcpu=7400"
3090 g5|970|ppc970|powerpc970)
3091 cpuflags="-mcpu=970"
3094 cpuflags="-mcpu=$cpu"
3097 cpuflags="-mcpu=cell"
3101 cpuflags="-mcpu=e500mc"
3105 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
3109 cpuflags="-mcpu=8540 -mhard-float"
3114 elif enabled sparc; then
3117 cypress|f93[04]|tsc701|sparcl*|supersparc|hypersparc|niagara|v[789])
3118 cpuflags="-mcpu=$cpu"
3121 ultrasparc*|niagara[234])
3122 cpuflags="-mcpu=$cpu"
3126 elif enabled x86; then
3130 cpuflags="-march=$cpu"
3133 # targets that do NOT support conditional mov (cmov)
3134 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
3135 cpuflags="-march=$cpu"
3138 # targets that do support conditional mov (cmov)
3139 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*)
3140 cpuflags="-march=$cpu"
3144 # targets that do support conditional mov but on which it's slow
3145 pentium4|pentium4m|prescott|nocona)
3146 cpuflags="-march=$cpu"
3154 if [ "$cpu" != generic ]; then
3155 add_cflags $cpuflags
3156 add_asflags $cpuflags
3159 # compiler sanity check
3161 int main(void){ return 0; }
3163 if test "$?" != 0; then
3164 echo "$cc is unable to create an executable file."
3165 if test -z "$cross_prefix" && ! enabled cross_compile ; then
3166 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
3167 echo "Only do this if you know what cross compiling means."
3169 die "C compiler test failed."
3172 add_cppflags -D_ISOC99_SOURCE
3173 add_cxxflags -D__STDC_CONSTANT_MACROS
3174 check_cflags -std=c99
3175 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
3178 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
3182 check_host_cflags -std=c99
3183 check_host_cflags -Wall
3189 check_code cc "" "int test[2*($expr) - 1]" &&
3190 subarch=$arch64 || subarch=$arch32
3198 check_64bit mips mips64 '_MIPS_SIM > 1'
3202 check_64bit parisc parisc64 'sizeof(void *) > 4'
3206 check_64bit ppc ppc64 'sizeof(void *) > 4'
3210 check_64bit sparc sparc64 'sizeof(void *) > 4'
3214 check_64bit x86_32 x86_64 'sizeof(void *) > 4'
3215 if test "$subarch" = "x86_64"; then
3220 check_cc <<EOF && subarch="ppc64"
3221 int test[(int)sizeof(char*) - 7];
3227 enabled spic && enable pic
3232 prefix_default="/boot/common"
3233 network_extralibs="-lnetwork"
3238 SHFLAGS='-shared -Wl,-h,$$(@F)'
3239 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
3240 network_extralibs="-lsocket -lnsl"
3241 add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
3242 # When using suncc to build, the Solaris linker will mark
3243 # an executable with each instruction set encountered by
3244 # the Solaris assembler. As our libraries contain their own
3245 # guards for processor-specific code, instead suppress
3246 # generation of the HWCAPS ELF section on Solaris x86 only.
3247 enabled_all suncc x86 && echo "hwcap_1 = OVERRIDE;" > mapfile && add_ldflags -Wl,-M,mapfile
3248 nm_default='nm -P -g'
3252 oss_indev_extralibs="-lossaudio"
3253 oss_outdev_extralibs="-lossaudio"
3254 enabled gcc || check_ldflags -Wl,-zmuldefs
3259 SLIB_INSTALL_NAME='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
3261 oss_indev_extralibs="-lossaudio"
3262 oss_outdev_extralibs="-lossaudio"
3270 add_extralibs -lpoll -lgnugetopt
3274 gas="gas-preprocessor.pl $cc"
3275 enabled ppc && add_asflags -force_cpusubtype_ALL
3276 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
3277 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
3279 add_ldflags -Wl,-dynamic,-search_paths_first
3281 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
3282 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
3283 FFSERVERLDFLAGS=-Wl,-bind_at_load
3285 enabled x86_64 && objformat="macho64"
3286 enabled_any pic shared ||
3287 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
3290 if test $target_os = "mingw32ce"; then
3296 if enabled x86_64; then
3297 LIBTARGET="i386:x86-64"
3298 elif enabled arm; then
3301 shlibdir_default="$bindir_default"
3304 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3305 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3306 dlltool="${cross_prefix}dlltool"
3307 if check_cmd lib.exe -list; then
3308 SLIB_EXTRA_CMD=-'sed -e "s/ @[^ ]*//" $$(@:$(SLIBSUF)=.orig.def) > $$(@:$(SLIBSUF)=.def); lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3309 if enabled x86_64; then
3312 elif check_cmd $dlltool --version; then
3313 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)'
3315 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3317 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3318 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3319 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'
3325 if enabled shared; then
3326 # Link to the import library instead of the normal static library
3329 # Cannot build shared and static libraries at the same time with
3333 shlibdir_default="$bindir_default"
3336 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3337 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3338 SLIB_CREATE_DEF_CMD='makedef $(SUBDIR)lib$(NAME).ver $(OBJS) > $$(@:$(SLIBSUF)=.def)'
3339 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3341 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3342 SLIB_INSTALL_EXTRA_LIB='$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3343 SHFLAGS='-dll -def:$$(@:$(SLIBSUF)=.def) -implib:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3350 shlibdir_default="$bindir_default"
3353 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3354 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3355 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3357 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
3358 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
3362 *-dos|freedos|opendos)
3363 network_extralibs="-lsocket"
3366 add_cppflags -U__STRICT_ANSI__
3373 ranlib="echo ignoring ranlib"
3379 add_cppflags -D_GNU_SOURCE
3380 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
3381 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
3386 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3387 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
3388 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
3389 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
3390 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
3391 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
3392 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
3393 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
3394 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
3395 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
3396 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
3398 enable_weak os2threads
3401 add_cppflags -D_BSD_SOURCE
3406 add_cppflags -D_QNX_SOURCE
3407 network_extralibs="-lsocket"
3412 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
3413 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
3414 add_ldflags -Wl,--target1-abs,--no-undefined \
3415 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
3416 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
3417 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
3418 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
3419 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
3422 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
3428 add_cppflags -D_C99_SNPRINTF_EXTENSION \
3429 -D_REENTRANT_SOURCE \
3430 -D_RESEARCH_SOURCE \
3433 add_compat strtod.o strtod=avpriv_strtod
3434 network_extralibs='-lbsd'
3435 exeobjs=compat/plan9/main.o
3442 die "Unknown OS '$target_os'."
3446 # determine libc flavour
3448 # uclibc defines __GLIBC__, so it needs to be checked before glibc.
3449 if check_cpp_condition features.h "defined __UCLIBC__"; then
3451 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3452 elif check_cpp_condition features.h "defined __GLIBC__"; then
3454 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3455 # MinGW headers can be installed on Cygwin, so check for newlib first.
3456 elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
3458 add_cppflags -U__STRICT_ANSI__
3459 elif check_header _mingw.h; then
3461 check_cpp_condition _mingw.h \
3462 "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
3463 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
3464 die "ERROR: MinGW runtime version must be >= 3.15."
3465 add_cppflags -U__STRICT_ANSI__
3466 if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \
3467 __MINGW64_VERSION_MAJOR < 3"; then
3468 add_compat msvcrt/snprintf.o
3469 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
3471 elif check_func_headers stdlib.h _get_doserrno; then
3473 add_compat strtod.o strtod=avpriv_strtod
3474 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
3475 _snprintf=avpriv_snprintf \
3476 vsnprintf=avpriv_vsnprintf
3477 elif check_cpp_condition stddef.h "defined __KLIBC__"; then
3481 test -n "$libc_type" && enable $libc_type
3483 # hacks for compiler/libc/os combinations
3485 if enabled_all tms470 glibc; then
3486 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
3487 add_cppflags -D__USER_LABEL_PREFIX__=
3488 add_cppflags -D__builtin_memset=memset
3489 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
3490 add_cflags -pds=48 # incompatible redefinition of macro
3493 if enabled_all ccc glibc; then
3494 add_ldflags -Wl,-z,now # calls to libots crash without this
3498 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
3501 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate
3503 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
3505 set_default $PATHS_LIST
3508 # we need to build at least one lib type
3509 if ! enabled_any static shared; then
3511 At least one library type must be built.
3512 Specify --enable-static to build the static libraries or --enable-shared to
3513 build the shared libraries as well. To only build the shared libraries specify
3514 --disable-static in addition to --enable-shared.
3519 die_license_disabled() {
3520 enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
3523 die_license_disabled_gpl() {
3524 enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; }
3527 die_license_disabled gpl libcdio
3528 die_license_disabled gpl libutvideo
3529 die_license_disabled gpl libx264
3530 die_license_disabled gpl libxavs
3531 die_license_disabled gpl libxvid
3532 die_license_disabled gpl x11grab
3534 die_license_disabled nonfree libaacplus
3535 die_license_disabled nonfree libfaac
3536 enabled gpl && die_license_disabled_gpl nonfree libfdk_aac
3537 enabled gpl && die_license_disabled_gpl nonfree openssl
3539 die_license_disabled version3 libopencore_amrnb
3540 die_license_disabled version3 libopencore_amrwb
3541 die_license_disabled version3 libvo_aacenc
3542 die_license_disabled version3 libvo_amrwbenc
3544 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3546 disabled optimizations || check_cflags -fomit-frame-pointer
3555 enabled pic && enable_pic
3557 check_cc <<EOF || die "Symbol mangling check failed."
3560 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
3561 extern_prefix=${sym%%ff_extern*}
3563 check_cc <<EOF && enable_weak inline_asm
3564 void foo(void) { __asm__ volatile ("" ::); }
3568 for restrict_keyword in restrict __restrict__ __restrict; do
3569 check_cc <<EOF && _restrict=$restrict_keyword && break
3570 void foo(char * $restrict_keyword p);
3574 check_cc <<EOF && enable attribute_packed
3575 struct { int x; } __attribute__((packed)) x;
3578 check_cc <<EOF && enable attribute_may_alias
3579 union { int x; } __attribute__((may_alias)) x;
3582 check_cc <<EOF || die "endian test failed"
3583 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
3585 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
3587 if enabled alpha; then
3591 elif enabled arm; then
3593 check_cpp_condition stddef.h "defined __thumb__" && check_cc <<EOF && enable_weak thumb
3594 float func(float a, float b){ return a+b; }
3597 enabled thumb && check_cflags -mthumb || check_cflags -marm
3600 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
3602 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
3603 case "${cross_prefix:-$cc}" in
3604 *hardfloat*) enable vfp_args; fpabi=vfp ;;
3605 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
3606 __asm__ (".eabi_attribute 28, 1");
3607 int main(void) { return 0; }
3610 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
3613 enabled armv5te && check_insn armv5te 'qadd r0, r0, r0'
3614 enabled armv6 && check_insn armv6 'sadd16 r0, r0, r0'
3615 enabled armv6t2 && check_insn armv6t2 'movt r0, #0'
3616 enabled neon && check_insn neon 'vadd.i16 q0, q0, q0'
3617 enabled vfp && check_insn vfp 'fadds s0, s0, s0'
3618 enabled vfpv3 && check_insn vfpv3 'vmov.f32 s0, #1.0'
3620 [ $target_os = linux ] ||
3621 map 'enabled_any ${v}_external ${v}_inline || disable $v' \
3624 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
3625 check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
3627 enabled_all armv6t2 shared !pic && enable_pic
3629 elif enabled mips; then
3631 check_inline_asm loongson '"dmult.g $1, $2, $3"'
3632 enabled mips32r2 && add_cflags "-mips32r2" && add_asflags "-mips32r2" &&
3633 check_inline_asm mips32r2 '"rotr $t0, $t1, 1"'
3634 enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" &&
3635 check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"'
3636 enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" &&
3637 check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"'
3638 enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" &&
3639 check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"'
3641 elif enabled parisc; then
3643 if enabled gcc; then
3644 case $($cc -dumpversion) in
3645 4.[3-8].*) check_cflags -fno-optimize-sibling-calls ;;
3649 elif enabled ppc; then
3651 enable local_aligned_8 local_aligned_16
3653 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
3654 check_inline_asm ibm_asm '"add 0, 0, 0"'
3655 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
3656 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
3658 # AltiVec flags: The FSF version of GCC differs from the Apple version
3659 if enabled altivec; then
3661 check_cflags -maltivec -mabi=altivec &&
3662 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
3663 check_cflags -faltivec
3665 # check if our compiler supports Motorola AltiVec C API
3666 check_cc <<EOF || disable altivec
3669 vector signed int v1 = (vector signed int) { 0 };
3670 vector signed int v2 = (vector signed int) { 1 };
3671 v1 = vec_add(v1, v2);
3676 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
3679 elif enabled sparc; then
3681 enabled vis && check_inline_asm vis '"pdist %f0, %f0, %f0"'
3683 elif enabled x86; then
3685 check_builtin rdtsc intrin.h "__rdtsc()"
3686 check_builtin mm_empty mmintrin.h "_mm_empty()"
3688 enable local_aligned_8 local_aligned_16
3690 # check whether EBP is available on x86
3691 # As 'i' is stored on the stack, this program will crash
3692 # if the base pointer is used to access it because the
3693 # base pointer is cleared in the inline assembly code.
3694 check_exec_crash <<EOF && enable ebp_available
3696 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
3700 # check whether EBX is available on x86
3701 check_inline_asm ebx_available '""::"b"(0)' &&
3702 check_inline_asm ebx_available '"":::"%ebx"'
3704 # check whether xmm clobbers are supported
3705 check_inline_asm xmm_clobbers '"":::"%xmm0"'
3707 # check whether binutils is new enough to compile SSSE3/MMXEXT
3708 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
3709 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
3711 if ! disabled_any asm mmx yasm; then
3712 if check_cmd $yasmexe --version; then
3713 enabled x86_64 && yasm_extra="-m amd64"
3714 yasm_debug="-g dwarf2"
3715 elif check_cmd nasm -v; then
3717 yasm_debug="-g -F dwarf"
3718 enabled x86_64 && test "$objformat" = elf && objformat=elf64
3721 YASMFLAGS="-f $objformat $yasm_extra"
3722 enabled pic && append YASMFLAGS "-DPIC"
3723 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
3724 case "$objformat" in
3725 elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
3728 check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
3729 die "yasm not found, use --disable-yasm for a crippled build"
3730 check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx_external
3731 check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
3732 check_yasm "CPU amdnop" && enable cpunop
3736 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
3743 if enabled asm; then
3745 check_as <<EOF && enable gnu_as || \
3746 $nogas "GNU assembler not found, install gas-preprocessor"
3754 check_ldflags -Wl,--as-needed
3756 if check_func dlopen; then
3758 elif check_func dlopen -ldl; then
3762 if ! disabled network; then
3763 check_type "sys/types.h sys/socket.h" socklen_t
3764 check_type netdb.h "struct addrinfo"
3765 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
3766 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
3767 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
3768 check_type netinet/in.h "struct sockaddr_in6"
3769 check_type poll.h "struct pollfd"
3770 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
3771 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
3772 check_type netinet/sctp.h "struct sctp_event_subscribe"
3773 check_func getaddrinfo $network_extralibs
3774 check_func getservbyport $network_extralibs
3775 # Prefer arpa/inet.h over winsock2
3776 if check_header arpa/inet.h ; then
3777 check_func closesocket
3778 elif check_header winsock2.h ; then
3779 check_func_headers winsock2.h closesocket -lws2 &&
3780 network_extralibs="-lws2" ||
3781 { check_func_headers winsock2.h closesocket -lws2_32 &&
3782 network_extralibs="-lws2_32"; }
3783 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
3784 check_type ws2tcpip.h socklen_t
3785 check_type ws2tcpip.h "struct addrinfo"
3786 check_type ws2tcpip.h "struct group_source_req"
3787 check_type ws2tcpip.h "struct ip_mreq_source"
3788 check_type ws2tcpip.h "struct ipv6_mreq"
3789 check_type winsock2.h "struct pollfd"
3790 check_type ws2tcpip.h "struct sockaddr_in6"
3791 check_type ws2tcpip.h "struct sockaddr_storage"
3792 check_struct winsock2.h "struct sockaddr" sa_len
3798 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
3799 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
3802 check_func clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; }
3805 check_func gethrtime
3807 check_func getrusage
3808 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
3809 check_func gettimeofday
3810 check_func inet_aton $network_extralibs
3812 check_func localtime_r
3813 check_func ${malloc_prefix}memalign && enable memalign
3817 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
3818 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
3819 check_func setrlimit
3820 check_func strerror_r
3821 check_func sched_getaffinity
3822 check_builtin sync_val_compare_and_swap "" "int *ptr; int oldval, newval; __sync_val_compare_and_swap(ptr, oldval, newval)"
3823 check_builtin machine_rw_barrier mbarrier.h "__machine_rw_barrier()"
3824 check_builtin MemoryBarrier windows.h "MemoryBarrier()"
3828 check_func_headers conio.h kbhit
3829 check_func_headers windows.h PeekNamedPipe
3830 check_func_headers io.h setmode
3831 check_func_headers lzo/lzo1x.h lzo1x_999_compress
3832 check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
3833 check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
3834 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
3835 check_func_headers windows.h GetProcessAffinityMask
3836 check_func_headers windows.h GetProcessTimes
3837 check_func_headers windows.h GetSystemTimeAsFileTime
3838 check_func_headers windows.h MapViewOfFile
3839 check_func_headers windows.h SetConsoleTextAttribute
3840 check_func_headers windows.h Sleep
3841 check_func_headers windows.h VirtualAlloc
3842 check_func_headers glob.h glob
3844 check_header direct.h
3845 check_header dlfcn.h
3847 check_header dxva2api.h -D_WIN32_WINNT=0x0600
3849 check_header libcrystalhd/libcrystalhd_if.h
3850 check_header malloc.h
3852 check_header sys/mman.h
3853 check_header sys/param.h
3854 check_header sys/resource.h
3855 check_header sys/select.h
3856 check_header sys/time.h
3857 check_header termios.h
3858 check_header unistd.h
3859 check_header vdpau/vdpau.h
3860 check_header vdpau/vdpau_x11.h
3861 check_header VideoDecodeAcceleration/VDADecoder.h
3862 check_header windows.h
3863 check_header X11/extensions/XvMClib.h
3864 check_header asm/types.h
3866 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
3867 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
3869 if ! disabled w32threads && ! enabled pthreads; then
3870 check_func_headers "windows.h process.h" _beginthreadex && enable w32threads
3873 # check for some common methods of building with pthread support
3874 # do this before the optional library checks as some of them require pthreads
3875 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
3877 if check_func pthread_create; then
3879 elif check_func pthread_create -pthread; then
3881 add_extralibs -pthread
3882 elif check_func pthread_create -pthreads; then
3883 add_cflags -pthreads
3884 add_extralibs -pthreads
3885 elif check_func pthread_create -lpthreadGC2; then
3886 add_extralibs -lpthreadGC2
3887 elif ! check_lib pthread.h pthread_create -lpthread; then
3892 for thread in $THREADS_LIST; do
3893 if enabled $thread; then
3894 test -n "$thread_type" &&
3895 die "ERROR: Only one thread type must be selected." ||
3896 thread_type="$thread"
3900 if enabled pthreads; then
3901 check_func pthread_cancel
3904 check_lib math.h sin -lm && LIBM="-lm"
3905 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
3906 enabled vaapi && require vaapi va/va.h vaInitialize -lva
3912 for func in $MATH_FUNCS; do
3913 eval check_mathfunc $func \${${func}_args:-1}
3916 # these are off by default, so fail if requested and not available
3917 enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
3918 enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
3919 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
3920 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
3921 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
3922 enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
3923 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
3924 enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray
3925 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
3926 { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
3927 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
3928 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
3929 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
3930 enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
3931 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"
3932 enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs
3933 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
3934 enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
3935 check_lib "${gsm_hdr}" gsm_create -lgsm && break;
3936 done || die "ERROR: libgsm not found"; }
3937 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
3938 enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
3939 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
3940 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
3941 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
3942 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
3943 enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
3944 enabled libopenjpeg && { check_lib openjpeg-1.5/openjpeg.h opj_version -lopenjpeg ||
3945 check_lib openjpeg.h opj_version -lopenjpeg ||
3946 die "ERROR: libopenjpeg not found"; }
3947 enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
3948 enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new
3949 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
3950 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
3951 enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
3952 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
3953 enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h
3954 media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h
3955 media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static
3956 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
3957 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
3958 { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
3959 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
3960 enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++
3961 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
3962 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
3963 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
3964 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
3966 enabled libvpx_vp8_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
3967 die "ERROR: libvpx decoder version must be >=0.9.1"; }
3968 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 ||
3969 die "ERROR: libvpx encoder version must be >=0.9.7"; }
3970 enabled libvpx_vp9_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" "vpx_codec_vp9_dx" -lvpx || disable libvpx_vp9_decoder; }
3971 enabled libvpx_vp9_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_vp9_cx" -lvpx || disable libvpx_vp9_encoder; } }
3972 enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
3973 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
3974 die "ERROR: libx264 must be installed and version must be >= 0.118."; }
3975 enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
3976 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
3977 enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
3978 check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
3979 die "ERROR: openal not found"; } &&
3980 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
3981 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
3982 enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
3983 check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
3984 check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
3985 die "ERROR: openssl not found"; }
3987 if enabled gnutls; then
3988 { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } ||
3989 { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
3993 if enabled libdc1394; then
3994 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
3995 enable libdc1394_2; } ||
3996 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
3997 enable libdc1394_1; } ||
3998 die "ERROR: No version of libdc1394 found "
4001 SDL_CONFIG="${cross_prefix}sdl-config"
4002 if check_pkg_config sdl SDL_events.h SDL_PollEvent; then
4003 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4005 check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
4007 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
4008 sdl_cflags=$("${SDL_CONFIG}" --cflags)
4009 sdl_libs=$("${SDL_CONFIG}" --libs)
4010 check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
4011 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
4013 check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
4016 enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
4018 texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
4019 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
4020 perl --version > /dev/null 2>&1 && enable perl || disable perl
4021 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
4022 rsync --help 2> /dev/null | grep -q 'contimeout' && enable rsync_contimeout || disable rsync_contimeout
4024 check_header linux/fb.h
4025 check_header linux/videodev.h
4026 check_header linux/videodev2.h
4027 check_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_safe struct_v4l2_frmivalenum_discrete
4029 check_header sys/videoio.h
4031 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
4032 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
4033 # w32api 3.12 had it defined wrong
4034 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
4036 check_type "dshow.h" IBaseFilter
4038 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
4039 { check_header dev/bktr/ioctl_meteor.h &&
4040 check_header dev/bktr/ioctl_bt848.h; } ||
4041 { check_header machine/ioctl_meteor.h &&
4042 check_header machine/ioctl_bt848.h; } ||
4043 { check_header dev/video/meteor/ioctl_meteor.h &&
4044 check_header dev/video/bktr/ioctl_bt848.h; } ||
4045 check_header dev/ic/bt8xx.h
4047 check_header sndio.h
4048 if check_struct sys/soundcard.h audio_buf_info bytes; then
4049 enable_safe sys/soundcard.h
4051 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
4052 #include <sys/soundcard.h>
4056 check_header soundcard.h
4058 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
4060 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait &&
4061 check_func jack_port_get_latency_range -ljack
4063 enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
4065 if enabled libcdio; then
4066 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
4070 require X11 X11/Xlib.h XOpenDisplay -lX11 &&
4071 require Xext X11/extensions/XShm.h XShmCreateImage -lXext &&
4072 require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes
4074 if ! disabled vaapi; then
4075 check_lib va/va.h vaInitialize -lva && {
4076 check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
4077 warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
4082 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
4085 # Funny iconv installations are not unusual, so check it after all flags have been set
4086 disabled iconv || check_func_headers iconv.h iconv || check_lib2 iconv.h iconv -liconv || disable iconv
4088 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
4089 enabled coverage && add_cflags "-fprofile-arcs -ftest-coverage" && add_ldflags "-fprofile-arcs -ftest-coverage"
4090 test -n "$valgrind" && target_exec="$valgrind --error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=$source_path/tests/fate-valgrind.supp"
4092 # add some useful compiler flags if supported
4093 check_cflags -Wdeclaration-after-statement
4095 check_cflags -Wno-parentheses
4096 check_cflags -Wno-switch
4097 check_cflags -Wno-format-zero-length
4098 check_cflags -Wdisabled-optimization
4099 check_cflags -Wpointer-arith
4100 check_cflags -Wredundant-decls
4101 check_cflags -Wno-pointer-sign
4102 check_cflags -Wwrite-strings
4103 check_cflags -Wtype-limits
4104 check_cflags -Wundef
4105 check_cflags -Wmissing-prototypes
4106 check_cflags -Wno-pointer-to-int-cast
4107 check_cflags -Wstrict-prototypes
4108 enabled extra_warnings && check_cflags -Winline
4110 # add some linker flags
4111 check_ldflags -Wl,--warn-common
4112 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
4113 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
4115 enabled xmm_clobber_test &&
4116 check_ldflags -Wl,--wrap,avcodec_open2 \
4117 -Wl,--wrap,avcodec_decode_audio4 \
4118 -Wl,--wrap,avcodec_decode_video2 \
4119 -Wl,--wrap,avcodec_decode_subtitle2 \
4120 -Wl,--wrap,avcodec_encode_audio2 \
4121 -Wl,--wrap,avcodec_encode_video \
4122 -Wl,--wrap,avcodec_encode_subtitle \
4123 -Wl,--wrap,sws_scale ||
4124 disable xmm_clobber_test
4127 if test_ldflags -Wl,--version-script,$TMPV; then
4128 append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
4129 check_cc <<EOF && enable symver_asm_label
4130 void ff_foo(void) __asm__ ("av_foo@VERSION");
4131 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
4133 check_cc <<EOF && enable symver_gnu_asm
4134 __asm__(".symver ff_foo,av_foo@VERSION");
4135 void ff_foo(void) {}
4139 if [ -z "$optflags" ]; then
4140 if enabled small; then
4141 optflags=$cflags_size
4142 elif enabled optimizations; then
4143 optflags=$cflags_speed
4145 optflags=$cflags_noopt
4151 enabled lto && check_ldflags "$@"
4155 if enabled lto; then
4156 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
4158 check_ldflags -flto $cpuflags
4161 check_optflags $optflags
4162 check_optflags -fno-math-errno
4163 check_optflags -fno-signed-zeros
4165 enabled ftrapv && check_cflags -ftrapv
4167 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
4172 if enabled icc; then
4173 # Just warnings, no remarks
4175 # -wd: Disable following warnings
4176 # 144, 167, 556: -Wno-pointer-sign
4177 # 188: enumerated type mixed with another type
4178 # 1292: attribute "foo" ignored
4179 # 1419: external declaration in primary source file
4180 # 10006: ignoring unknown option -fno-signed-zeros
4181 # 10148: ignoring unknown option -Wno-parentheses
4182 # 10156: ignoring option '-W'; no argument required
4183 check_cflags -wd144,167,188,556,1292,1419,10006,10148,10156
4184 # 11030: Warning unknown option --as-needed
4185 # 10156: ignoring option '-export'; no argument required
4186 check_ldflags -wd10156,11030
4187 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
4188 enable ebp_available
4189 if enabled x86_32; then
4190 icc_version=$($cc -dumpversion)
4191 test ${icc_version%%.*} -ge 11 &&
4192 check_cflags -falign-stack=maintain-16-byte ||
4193 disable aligned_stack
4195 elif enabled ccc; then
4196 # disable some annoying warnings
4197 add_cflags -msg_disable bitnotint
4198 add_cflags -msg_disable mixfuncvoid
4199 add_cflags -msg_disable nonstandcast
4200 add_cflags -msg_disable unsupieee
4201 elif enabled gcc; then
4202 check_optflags -fno-tree-vectorize
4203 check_cflags -Werror=implicit-function-declaration
4204 check_cflags -Werror=missing-prototypes
4205 check_cflags -Werror=return-type
4206 check_cflags -Werror=vla
4207 elif enabled llvm_gcc; then
4208 check_cflags -mllvm -stack-alignment=16
4209 elif enabled clang; then
4210 check_cflags -mllvm -stack-alignment=16
4211 check_cflags -Qunused-arguments
4212 check_cflags -Werror=implicit-function-declaration
4213 check_cflags -Werror=missing-prototypes
4214 check_cflags -Werror=return-type
4215 elif enabled armcc; then
4216 # 2523: use of inline assembler is deprecated
4217 add_cflags -W${armcc_opt},--diag_suppress=2523
4218 add_cflags -W${armcc_opt},--diag_suppress=1207
4219 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
4220 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
4221 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
4222 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
4223 elif enabled tms470; then
4224 add_cflags -pds=824 -pds=837
4225 elif enabled pathscale; then
4226 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
4227 elif enabled msvc; then
4228 enabled x86_32 && disable aligned_stack
4233 enabled ccc && add_ldflags '-Wl,-expect_unresolved,*'
4236 add_cppflags -Dmain=plan9_main
4240 enabled_any $THREADS_LIST && enable threads
4242 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
4244 check_deps $CONFIG_LIST \
4250 if test $target_os = "haiku"; then
4252 disable posix_memalign
4255 ! enabled_any memalign posix_memalign aligned_malloc &&
4256 enabled_any $need_memalign && enable memalign_hack
4259 # -> enable ${lib}_deps_${dep}
4260 # -> add $dep to ${lib}_deps only once
4264 enabled "${lib}_deps_${dep}" && return 0
4265 enable "${lib}_deps_${dep}"
4266 prepend "${lib}_deps" $dep
4269 # merge deps lib components
4270 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
4275 enabled $comp || continue
4276 eval "dep=\"\$${comp}_deps\""
4283 merge_deps libavfilter $FILTER_LIST
4285 echo "install prefix $prefix"
4286 echo "source path $source_path"
4287 echo "C compiler $cc"
4288 echo "ARCH $arch ($cpu)"
4289 if test "$build_suffix" != ""; then
4290 echo "build suffix $build_suffix"
4292 if test "$progs_suffix" != ""; then
4293 echo "progs suffix $progs_suffix"
4295 if test "$extra_version" != ""; then
4296 echo "version string suffix $extra_version"
4298 echo "big-endian ${bigendian-no}"
4299 echo "runtime cpu detection ${runtime_cpudetect-no}"
4300 if enabled x86; then
4301 echo "${yasmexe} ${yasm-no}"
4302 echo "MMX enabled ${mmx-no}"
4303 echo "MMXEXT enabled ${mmxext-no}"
4304 echo "3DNow! enabled ${amd3dnow-no}"
4305 echo "3DNow! extended enabled ${amd3dnowext-no}"
4306 echo "SSE enabled ${sse-no}"
4307 echo "SSSE3 enabled ${ssse3-no}"
4308 echo "AVX enabled ${avx-no}"
4309 echo "FMA4 enabled ${fma4-no}"
4310 echo "CMOV enabled ${cmov-no}"
4311 echo "CMOV is fast ${fast_cmov-no}"
4312 echo "EBX available ${ebx_available-no}"
4313 echo "EBP available ${ebp_available-no}"
4315 if enabled arm; then
4316 echo "ARMv5TE enabled ${armv5te-no}"
4317 echo "ARMv6 enabled ${armv6-no}"
4318 echo "ARMv6T2 enabled ${armv6t2-no}"
4319 echo "VFP enabled ${vfp-no}"
4320 echo "NEON enabled ${neon-no}"
4321 echo "THUMB enabled ${thumb-no}"
4323 if enabled mips; then
4324 echo "MIPS FPU enabled ${mipsfpu-no}"
4325 echo "MIPS32R2 enabled ${mips32r2-no}"
4326 echo "MIPS DSP R1 enabled ${mipsdspr1-no}"
4327 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
4329 if enabled ppc; then
4330 echo "AltiVec enabled ${altivec-no}"
4331 echo "PPC 4xx optimizations ${ppc4xx-no}"
4332 echo "dcbzl available ${dcbzl-no}"
4334 if enabled sparc; then
4335 echo "VIS enabled ${vis-no}"
4337 echo "debug symbols ${debug-no}"
4338 echo "strip symbols ${stripping-no}"
4339 echo "optimize for size ${small-no}"
4340 echo "optimizations ${optimizations-no}"
4341 echo "static ${static-no}"
4342 echo "shared ${shared-no}"
4343 echo "postprocessing support ${postproc-no}"
4344 echo "new filter support ${avfilter-no}"
4345 echo "network support ${network-no}"
4346 echo "threading support ${thread_type-no}"
4347 echo "safe bitstream reader ${safe_bitstream_reader-no}"
4348 echo "SDL support ${sdl-no}"
4349 echo "texi2html enabled ${texi2html-no}"
4350 echo "perl enabled ${perl-no}"
4351 echo "pod2man enabled ${pod2man-no}"
4352 echo "makeinfo enabled ${makeinfo-no}"
4353 test -n "$random_seed" &&
4354 echo "random seed ${random_seed}"
4357 echo "External libraries:"
4358 print_enabled '' $EXTERNAL_LIBRARY_LIST | print_3_columns
4361 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
4362 echo "Enabled ${type}s:"
4363 eval list=\$$(toupper $type)_LIST
4364 print_enabled '_*' $list | print_3_columns
4368 license="LGPL version 2.1 or later"
4369 if enabled nonfree; then
4370 license="nonfree and unredistributable"
4371 elif enabled gplv3; then
4372 license="GPL version 3 or later"
4373 elif enabled lgplv3; then
4374 license="LGPL version 3 or later"
4375 elif enabled gpl; then
4376 license="GPL version 2 or later"
4379 echo "License: $license"
4381 echo "Creating config.mak and config.h..."
4383 test -e Makefile || $ln_s "$source_path/Makefile" .
4385 enabled stripping || strip="echo skipping strip"
4387 config_files="$TMPH config.mak"
4389 cat > config.mak <<EOF
4390 # Automatically generated by configure - do not modify!
4391 ifndef FFMPEG_CONFIG_MAK
4393 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
4395 LIBDIR=\$(DESTDIR)$libdir
4396 SHLIBDIR=\$(DESTDIR)$shlibdir
4397 INCDIR=\$(DESTDIR)$incdir
4398 BINDIR=\$(DESTDIR)$bindir
4399 DATADIR=\$(DESTDIR)$datadir
4400 MANDIR=\$(DESTDIR)$mandir
4401 SRC_PATH=$source_path
4402 ifndef MAIN_MAKEFILE
4403 SRC_PATH:=\$(SRC_PATH:.%=..%)
4412 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
4414 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
4440 LDFLAGS-ffserver=$FFSERVERLDFLAGS
4441 SHFLAGS=$(echo $($ldflags_filter $SHFLAGS))
4442 YASMFLAGS=$YASMFLAGS
4443 BUILDSUF=$build_suffix
4444 PROGSSUF=$progs_suffix
4452 EXTRA_VERSION=$extra_version
4455 CCDEP_FLAGS=$CCDEP_FLAGS
4457 ASDEP_FLAGS=$ASDEP_FLAGS
4458 CC_DEPFLAGS=$CC_DEPFLAGS
4459 AS_DEPFLAGS=$AS_DEPFLAGS
4462 HOSTCFLAGS=$host_cflags
4463 HOSTCPPFLAGS=$host_cppflags
4464 HOSTEXESUF=$HOSTEXESUF
4465 HOSTLDFLAGS=$host_ldflags
4468 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
4469 HOSTCCDEP=$HOSTCCDEP
4470 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
4471 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
4475 TARGET_EXEC=$target_exec
4476 TARGET_PATH=$target_path
4477 LIBS-ffplay=$sdl_libs
4478 CFLAGS-ffplay=$sdl_cflags
4479 ZLIB=$($ldflags_filter -lz)
4480 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
4481 EXTRALIBS=$extralibs
4482 COMPAT_OBJS=$compat_objs
4485 LIBTARGET=${LIBTARGET}
4486 SLIBNAME=${SLIBNAME}
4487 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
4488 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
4489 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
4490 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
4491 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
4492 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
4493 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
4494 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
4495 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
4496 NOREDZONE_FLAGS=$noredzone_flags
4501 name=$(toupper $lcname)
4502 file=$source_path/$lcname/version.h
4503 eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
4504 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
4505 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
4506 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
4507 eval echo "${lcname}_VERSION_MINOR=\$${name}_VERSION_MINOR" >> config.mak
4510 map 'get_version $v' $LIBRARY_LIST
4513 /* Automatically generated by configure - do not modify! */
4514 #ifndef FFMPEG_CONFIG_H
4515 #define FFMPEG_CONFIG_H
4516 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
4517 #define FFMPEG_LICENSE "$(c_escape $license)"
4518 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
4519 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
4520 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
4521 #define av_restrict $_restrict
4522 #define EXTERN_PREFIX "${extern_prefix}"
4523 #define EXTERN_ASM ${extern_prefix}
4524 #define SLIBSUF "$SLIBSUF"
4525 #define HAVE_MMX2 HAVE_MMXEXT
4528 test -n "$assert_level" &&
4529 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
4531 test -n "$malloc_prefix" &&
4532 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
4534 if enabled yasm; then
4535 append config_files $TMPASM
4539 print_config ARCH_ "$config_files" $ARCH_LIST
4540 print_config HAVE_ "$config_files" $HAVE_LIST
4541 print_config CONFIG_ "$config_files" $CONFIG_LIST \
4545 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
4546 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
4548 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
4549 cp_if_changed $TMPH config.h
4552 enabled yasm && cp_if_changed $TMPASM config.asm
4555 /* Generated by ffconf */
4556 #ifndef AVUTIL_AVCONFIG_H
4557 #define AVUTIL_AVCONFIG_H
4560 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
4562 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
4564 cp_if_changed $TMPH libavutil/avconfig.h
4566 if test -n "$WARNINGS"; then
4567 printf "\n$WARNINGS"
4568 enabled fatal_warnings && exit 1
4571 # build pkg-config files
4573 pkgconfig_generate(){
4575 shortname=${name#lib}${build_suffix}
4580 enabled ${name#lib} || return 0
4582 cat <<EOF > $name/$name${build_suffix}.pc
4584 exec_prefix=\${prefix}
4589 Description: $comment
4591 Requires: $(enabled shared || echo $requires)
4592 Requires.private: $(enabled shared && echo $requires)
4594 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4595 Libs.private: $(enabled shared && echo $libs)
4596 Cflags: -I\${includedir}
4599 mkdir -p doc/examples/pc-uninstalled
4600 includedir=${source_path}
4601 [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
4602 cat <<EOF > doc/examples/pc-uninstalled/$name.pc
4605 libdir=\${pcfiledir}/../../../$name
4606 includedir=${includedir}
4609 Description: $comment
4613 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4614 Cflags: -I\${includedir}
4618 libavfilter_pc_deps="libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4619 enabled libavfilter_deps_avcodec && prepend libavfilter_pc_deps "libavcodec${build_suffix} = $LIBAVCODEC_VERSION,"
4620 enabled libavfilter_deps_avformat && prepend libavfilter_pc_deps "libavformat${build_suffix} = $LIBAVFORMAT_VERSION,"
4621 enabled libavfilter_deps_avresample && prepend libavfilter_pc_deps "libavresample${build_suffix} = $LIBAVRESAMPLE_VERSION,"
4622 enabled libavfilter_deps_swscale && prepend libavfilter_pc_deps "libswscale${build_suffix} = $LIBSWSCALE_VERSION,"
4623 enabled libavfilter_deps_swresample && prepend libavfilter_pc_deps "libswresample${build_suffix} = $LIBSWRESAMPLE_VERSION,"
4624 enabled libavfilter_deps_postproc && prepend libavfilter_pc_deps "libpostproc${build_suffix} = $LIBPOSTPROC_VERSION,"
4625 libavfilter_pc_deps=${libavfilter_pc_deps%, }
4627 libavdevice_pc_deps="libavformat${build_suffix} = $LIBAVFORMAT_VERSION"
4628 enabled lavfi_indev && prepend libavdevice_pc_deps "libavfilter${build_suffix} = $LIBAVFILTER_VERSION,"
4630 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
4631 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4632 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec${build_suffix} = $LIBAVCODEC_VERSION"
4633 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$libavdevice_pc_deps"
4634 pkgconfig_generate libavfilter "FFmpeg audio/video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$libavfilter_pc_deps"
4635 pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4636 pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4637 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4638 pkgconfig_generate libswresample "FFmpeg audio resampling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil${build_suffix} = $LIBAVUTIL_VERSION"
4640 fix_ffmpeg_remote(){
4643 fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq)
4644 if [ "$fixme_remote" != "" ]; then
4646 Outdated domain in git config, the official domain for ffmpeg git is since
4647 November 2011, source.ffmpeg.org, both the old and the new point to the same
4648 repository and server. To update it enter the following commands:
4650 for remote in $fixme_remote; do
4651 echolog "git remote set-url $remote $git_remote_to"
4656 if test -f "$source_path/.git/config"; then
4657 remote_from=git.videolan.org
4658 remote_to=source.ffmpeg.org
4659 fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg
4660 fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg