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 --prefix=PREFIX install in PREFIX [$prefix]
82 --bindir=DIR install binaries in DIR [PREFIX/bin]
83 --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
84 --libdir=DIR install libs in DIR [PREFIX/lib]
85 --shlibdir=DIR install shared libs in DIR [PREFIX/lib]
86 --incdir=DIR install includes in DIR [PREFIX/include]
87 --mandir=DIR install man page in DIR [PREFIX/share/man]
90 --enable-gpl allow use of GPL code, the resulting libs
91 and binaries will be under GPL [no]
92 --enable-version3 upgrade (L)GPL to version 3 [no]
93 --enable-nonfree allow use of nonfree code, the resulting libs
94 and binaries will be unredistributable [no]
96 Configuration options:
97 --disable-static do not build static libraries [no]
98 --enable-shared build shared libraries [no]
99 --enable-small optimize for size instead of speed
100 --disable-runtime-cpudetect disable detecting cpu capabilities at runtime (smaller binary)
101 --enable-gray enable full grayscale support (slower color)
102 --disable-swscale-alpha disable alpha channel support in swscale
104 Documentation options:
105 --disable-doc do not build documentation
106 --disable-htmlpages do not build HTML documentation pages
107 --disable-manpages do not build man documentation pages
108 --disable-podpages do not build POD documentation pages
109 --disable-txtpages do not build text documentation pages
112 --disable-ffmpeg disable ffmpeg build
113 --disable-ffplay disable ffplay build
114 --disable-ffprobe disable ffprobe build
115 --disable-ffserver disable ffserver build
116 --disable-avdevice disable libavdevice build
117 --disable-avcodec disable libavcodec build
118 --disable-avformat disable libavformat build
119 --disable-swresample disable libswresample build
120 --disable-swscale disable libswscale build
121 --disable-postproc disable libpostproc build
122 --disable-avfilter disable libavfilter build
123 --enable-avresample enable libavresample build [no]
124 --disable-pthreads disable pthreads [auto]
125 --disable-w32threads disable Win32 threads [auto]
126 --disable-os2threads disable OS/2 threads [auto]
127 --enable-x11grab enable X11 grabbing [no]
128 --disable-network disable network support [no]
129 --disable-dct disable DCT code
130 --disable-dwt disable DWT code
131 --disable-lsp disable LSP code
132 --disable-mdct disable MDCT code
133 --disable-rdft disable RDFT code
134 --disable-fft disable FFT code
135 --enable-dxva2 enable DXVA2 code
136 --enable-vaapi enable VAAPI code [autodetect]
137 --enable-vda enable VDA code [autodetect]
138 --enable-vdpau enable VDPAU code [autodetect]
140 Individual component options:
141 --disable-everything disable all components listed below
142 --disable-encoder=NAME disable encoder NAME
143 --enable-encoder=NAME enable encoder NAME
144 --disable-encoders disable all encoders
145 --disable-decoder=NAME disable decoder NAME
146 --enable-decoder=NAME enable decoder NAME
147 --disable-decoders disable all decoders
148 --disable-hwaccel=NAME disable hwaccel NAME
149 --enable-hwaccel=NAME enable hwaccel NAME
150 --disable-hwaccels disable all hwaccels
151 --disable-muxer=NAME disable muxer NAME
152 --enable-muxer=NAME enable muxer NAME
153 --disable-muxers disable all muxers
154 --disable-demuxer=NAME disable demuxer NAME
155 --enable-demuxer=NAME enable demuxer NAME
156 --disable-demuxers disable all demuxers
157 --enable-parser=NAME enable parser NAME
158 --disable-parser=NAME disable parser NAME
159 --disable-parsers disable all parsers
160 --enable-bsf=NAME enable bitstream filter NAME
161 --disable-bsf=NAME disable bitstream filter NAME
162 --disable-bsfs disable all bitstream filters
163 --enable-protocol=NAME enable protocol NAME
164 --disable-protocol=NAME disable protocol NAME
165 --disable-protocols disable all protocols
166 --enable-indev=NAME enable input device NAME
167 --disable-indev=NAME disable input device NAME
168 --disable-indevs disable input devices
169 --enable-outdev=NAME enable output device NAME
170 --disable-outdev=NAME disable output device NAME
171 --disable-outdevs disable output devices
172 --disable-devices disable all devices
173 --enable-filter=NAME enable filter NAME
174 --disable-filter=NAME disable filter NAME
175 --disable-filters disable all filters
177 External library support:
178 --enable-avisynth enable reading of AVISynth script files [no]
179 --enable-bzlib enable bzlib [autodetect]
180 --enable-fontconfig enable fontconfig
181 --enable-frei0r enable frei0r video filtering
182 --enable-gnutls enable gnutls [no]
183 --enable-libaacplus enable AAC+ encoding via libaacplus [no]
184 --enable-libass enable libass subtitles rendering [no]
185 --enable-libbluray enable BluRay reading using libbluray [no]
186 --enable-libcaca enable textual display using libcaca
187 --enable-libcelt enable CELT decoding via libcelt [no]
188 --enable-libcdio enable audio CD grabbing with libcdio
189 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
191 --enable-libfaac enable AAC encoding via libfaac [no]
192 --enable-libfdk-aac enable AAC encoding via libfdk-aac [no]
193 --enable-libflite enable flite (voice synthesis) support via libflite [no]
194 --enable-libfreetype enable libfreetype [no]
195 --enable-libgsm enable GSM de/encoding via libgsm [no]
196 --enable-libiec61883 enable iec61883 via libiec61883 [no]
197 --enable-libilbc enable iLBC de/encoding via libilbc [no]
198 --enable-libmodplug enable ModPlug via libmodplug [no]
199 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
200 --enable-libnut enable NUT (de)muxing via libnut,
201 native (de)muxer exists [no]
202 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
203 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
204 --enable-libopencv enable video filtering via libopencv [no]
205 --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no]
206 --enable-libopus enable Opus decoding via libopus [no]
207 --enable-libpulse enable Pulseaudio input via libpulse [no]
208 --enable-librtmp enable RTMP[E] support via librtmp [no]
209 --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
210 --enable-libspeex enable Speex de/encoding via libspeex [no]
211 --enable-libstagefright-h264 enable H.264 decoding via libstagefright [no]
212 --enable-libtheora enable Theora encoding via libtheora [no]
213 --enable-libtwolame enable MP2 encoding via libtwolame [no]
214 --enable-libutvideo enable Ut Video encoding and decoding via libutvideo [no]
215 --enable-libv4l2 enable libv4l2/v4l-utils [no]
216 --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
217 --enable-libvo-amrwbenc enable AMR-WB encoding via libvo-amrwbenc [no]
218 --enable-libvorbis enable Vorbis en/decoding via libvorbis,
219 native implementation exists [no]
220 --enable-libvpx enable VP8 de/encoding via libvpx [no]
221 --enable-libx264 enable H.264 encoding via x264 [no]
222 --enable-libxavs enable AVS encoding via xavs [no]
223 --enable-libxvid enable Xvid encoding via xvidcore,
224 native MPEG-4/Xvid encoder exists [no]
225 --enable-openal enable OpenAL 1.1 capture support [no]
226 --enable-openssl enable openssl [no]
227 --enable-zlib enable zlib [autodetect]
229 Advanced options (experts only):
230 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
231 --enable-cross-compile assume a cross-compiler is used
232 --sysroot=PATH root of cross-build tree
233 --sysinclude=PATH location of cross-build system headers
234 --target-os=OS compiler targets OS [$target_os]
235 --target-exec=CMD command to run executables on target
236 --target-path=DIR path to view of build directory on target
237 --toolchain=NAME set tool defaults according to NAME
238 --nm=NM use nm tool NM [$nm_default]
239 --ar=AR use archive tool AR [$ar_default]
240 --as=AS use assembler AS [$as_default]
241 --yasmexe=EXE use yasm-compatible assembler EXE [$yasmexe_default]
242 --cc=CC use C compiler CC [$cc_default]
243 --cxx=CXX use C compiler CXX [$cxx_default]
244 --dep-cc=DEPCC use dependency generator DEPCC [$cc_default]
245 --ld=LD use linker LD [$ld_default]
246 --host-cc=HOSTCC use host C compiler HOSTCC
247 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
248 --host-ld=HOSTLD use host linker HOSTLD
249 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
250 --host-libs=HLIBS use libs HLIBS when linking for host
251 --host-os=OS compiler host OS [$target_os]
252 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
253 --extra-cxxflags=ECFLAGS add ECFLAGS to CXXFLAGS [$CXXFLAGS]
254 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
255 --extra-libs=ELIBS add ELIBS [$ELIBS]
256 --extra-version=STRING version string suffix []
257 --optflags=OPTFLAGS override optimization-related compiler flags
258 --build-suffix=SUFFIX library name suffix []
259 --malloc-prefix=PREFIX prefix malloc and related names with PREFIX
260 --progs-suffix=SUFFIX program name suffix []
261 --arch=ARCH select architecture [$arch]
262 --cpu=CPU select the minimum required CPU (affects
263 instruction selection, may crash on older CPUs)
264 --enable-pic build position-independent code
265 --enable-sram allow use of on-chip SRAM
266 --enable-thumb compile for Thumb instruction set
267 --disable-symver disable symbol versioning
268 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
269 --disable-safe-bitstream-reader
270 disable buffer boundary checking in bitreaders
271 (faster, but may crash)
272 --enable-memalign-hack emulate memalign, interferes with memory debuggers
273 --enable-lto use link-time optimization
275 Optimization options (experts only):
276 --disable-asm disable all assembler optimizations
277 --disable-altivec disable AltiVec optimizations
278 --disable-amd3dnow disable 3DNow! optimizations
279 --disable-amd3dnowext disable 3DNow! extended optimizations
280 --disable-mmx disable MMX optimizations
281 --disable-mmxext disable MMXEXT optimizations
282 --disable-sse disable SSE optimizations
283 --disable-sse2 disable SSE2 optimizations
284 --disable-sse3 disable SSE3 optimizations
285 --disable-ssse3 disable SSSE3 optimizations
286 --disable-sse4 disable SSE4 optimizations
287 --disable-sse42 disable SSE4.2 optimizations
288 --disable-avx disable AVX optimizations
289 --disable-fma4 disable FMA4 optimizations
290 --disable-armv5te disable armv5te optimizations
291 --disable-armv6 disable armv6 optimizations
292 --disable-armv6t2 disable armv6t2 optimizations
293 --disable-armvfp disable ARM VFP optimizations
294 --disable-neon disable NEON optimizations
295 --disable-vis disable VIS optimizations
296 --disable-inline-asm disable use of inline assembler
297 --disable-yasm disable use of yasm assembler
298 --disable-mips32r2 disable MIPS32R2 optimizations
299 --disable-mipsdspr1 disable MIPS DSP ASE R1 optimizations
300 --disable-mipsdspr2 disable MIPS DSP ASE R2 optimizations
301 --disable-mipsfpu disable floating point MIPS optimizations
302 --disable-fast-unaligned consider unaligned accesses slow
303 --postproc-version=V build libpostproc version V.
304 Where V can be '$ALT_PP_VER_MAJOR.$ALT_PP_VER_MINOR.$ALT_PP_VER_MICRO' or 'current'. [$postproc_version_default]
306 Developer options (useful when working on FFmpeg itself):
307 --enable-coverage build with test coverage instrumentation
308 --disable-debug disable debugging symbols
309 --enable-debug=LEVEL set the debug level [$debuglevel]
310 --disable-optimizations disable compiler optimizations
311 --enable-extra-warnings enable more compiler warnings
312 --disable-stripping disable stripping of executables and shared libraries
313 --assert-level=level 0(default), 1 or 2, amount of assertion testing,
314 2 causes a slowdown at runtime.
315 --enable-memory-poisoning fill heap uninitialized allocated space with arbitrary data
316 --valgrind=VALGRIND run "make fate" tests through valgrind to detect memory
317 leaks and errors, using the specified valgrind binary.
318 Cannot be combined with --target-exec
319 --enable-ftrapv Trap arithmetic overflows
320 --samples=PATH location of test samples for FATE, if not set use
321 \$FATE_SAMPLES at make invocation time.
322 --enable-xmm-clobber-test check XMM registers for clobbering (Win64-only;
323 should be used only for debugging purposes)
324 --enable-random randomly enable/disable components
326 --enable-random=LIST randomly enable/disable specific components or
327 --disable-random=LIST component groups. LIST is a comma-separated list
328 of NAME[:PROB] entries where NAME is a component
329 (group) and PROB the probability associated with
331 --random-seed=VALUE seed value for --enable/disable-random
333 NOTE: Object files are built at the place where configure is launched.
341 echo "$@" >> $logfile
346 pr -n -t $1 >> $logfile
357 WARNINGS="${WARNINGS}WARNING: $*\n"
364 If you think configure made a mistake, make sure you are using the latest
365 version from Git. If the latest version fails, report the problem to the
366 ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
368 if disabled logging; then
370 Rerun configure with logging enabled (do not use --disable-logging), and
371 include the log this produces with your report.
375 Include the log file "$logfile" produced by configure as this will help
382 # Avoid locale weirdness, besides we really just want to translate ASCII.
384 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
388 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
392 echo "$*" | sed 's/["\\]/\\\0/g'
396 v=$(echo "$1" | sed "s/'/'\\\\''/g")
397 test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
402 echo "$@" | sed 's/^ *//;s/ */ /g;s/ *$//'
409 eval "case $v in $pat) echo $v ;; esac"
417 eval "case $v in $pat) ;; *) echo $v ;; esac"
424 for v; do eval $m; done
430 for v; do echo ${v}${suffix}; done
445 eval : \${$var:=$value}
452 eval $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')='$*'
456 eval echo \$$(echo "$1" | sed 's/[^A-Za-z0-9_]/_/g')
461 eval level=\${${var}_level:=0}
462 eval ${var}_${level}="\$$var"
463 eval ${var}_level=$(($level+1))
469 eval level=\${${var}_level:-0}
470 test $level = 0 && continue
471 eval level=$(($level-1))
472 eval $var="\${${var}_${level}}"
473 eval ${var}_level=$level
474 eval unset ${var}_${level}
496 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
502 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
508 enabled $var && continue
509 eval sel="\$${var}_select"
510 eval sgs="\$${var}_suggest"
514 enable_deep_weak $sgs
530 test "${1#!}" = "$1" && op== || op=!=
531 eval test "x\$${1#!}" $op "xyes"
535 test "${1#!}" = "$1" && op== || op=!=
536 eval test "x\$${1#!}" $op "xno"
541 enabled $opt || return 1
547 disabled $opt || return 1
553 enabled $opt && return 0
559 disabled $opt && return 0
566 eval : \${$opt:=\$${opt}_default}
574 [ $var = $value ] && return 0
582 enabled ${cfg}_checking && die "Circular dependency for $cfg."
583 disabled ${cfg}_checking && continue
584 enable ${cfg}_checking
586 eval dep_all="\$${cfg}_deps"
587 eval dep_any="\$${cfg}_deps_any"
588 eval dep_sel="\$${cfg}_select"
589 eval dep_sgs="\$${cfg}_suggest"
590 eval dep_ifa="\$${cfg}_if"
591 eval dep_ifn="\$${cfg}_if_any"
593 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
594 check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
595 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
597 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
598 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
599 enabled_all $dep_all || disable $cfg
600 enabled_any $dep_any || disable $cfg
601 disabled_any $dep_sel && disable $cfg
603 if enabled $cfg; then
604 eval dep_extralibs="\$${cfg}_extralibs"
605 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
607 enable_deep_weak $dep_sgs
610 disable ${cfg}_checking
615 enabled $1 && v=1 || v=0
620 enabled $1 && v= || v=!
625 enabled $1 && v=1 || v=0
634 ucname="$(toupper $cfg)"
636 "print_config_${f##*.}" $cfg ${pfx}${ucname} >>$f
642 test x"$1" = x-n && end=" " && shift || end="\n"
646 enabled $v && printf "%s$end" ${v%$suf};
653 eval "$var=\"\$$var $*\""
659 eval "$var=\"$* \$$var\""
667 append CFLAGS $($cflags_filter "$@")
671 append CXXFLAGS $($cflags_filter "$@")
675 append ASFLAGS $($asflags_filter "$@")
679 append LDFLAGS $($ldflags_filter "$@")
683 prepend extralibs $($ldflags_filter "$@")
687 append host_cflags $($host_cflags_filter "$@")
691 append host_ldflags $($host_ldflags_filter "$@")
695 append compat_objs $1
697 map 'add_cppflags -D$v' "$@"
702 "$@" >> $logfile 2>&1
706 eval printf '%s\\n' $CC_O
710 eval printf '%s\\n' $CC_E
717 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $CC_C $(cc_o $TMPO) $TMPC
724 check_cmd $cxx $CPPFLAGS $CFLAGS $CXXFLAGS "$@" $CXX_C -o $TMPO $TMPCPP
731 check_cmd $cc $CPPFLAGS $CFLAGS "$@" $(cc_e $TMPO) $TMPC
735 eval printf '%s\\n' $AS_O
742 check_cmd $as $CPPFLAGS $ASFLAGS "$@" $AS_C $(as_o $TMPO) $TMPC
746 log check_inline_asm "$@"
751 check_as "$@" <<EOF && enable $name
752 void foo(void){ __asm__ volatile($code); }
761 check_cmd $yasmexe $YASMFLAGS -Werror "$@" -o $TMPO $TMPS
765 eval printf '%s\\n' $LD_O
772 flags=$(filter_out '-l*' $@)
773 libs=$(filter '-l*' $@)
774 check_$type $($cflags_filter $flags) || return
775 flags=$($ldflags_filter $flags)
776 libs=$($ldflags_filter $libs)
777 check_cmd $ld $LDFLAGS $flags $(ld_o $TMPE) $TMPO $libs $extralibs
787 for hdr in $headers; do
788 echo "#include <$hdr>"
790 echo "int main(void) { $code; return 0; }"
791 } | check_$check "$@"
795 log check_cppflags "$@"
796 check_cc "$@" <<EOF && append CPPFLAGS "$@"
802 log check_cflags "$@"
803 set -- $($cflags_filter "$@")
804 check_cc "$@" <<EOF && append CFLAGS "$@"
810 log check_cxxflags "$@"
811 set -- $($cflags_filter "$@")
812 check_cxx "$@" <<EOF && append CXXFLAGS "$@"
818 log test_ldflags "$@"
819 check_ld "cc" "$@" <<EOF
820 int main(void){ return 0; }
825 log check_ldflags "$@"
826 test_ldflags "$@" && add_ldflags "$@"
830 log check_header "$@"
834 check_cpp "$@" <<EOF && enable_safe $header
845 check_ld "cc" "$@" <<EOF && enable $func
847 int main(void){ $func(); }
852 log check_mathfunc "$@"
856 check_ld "cc" "$@" <<EOF && enable $func
858 float foo(float f) { return $func(f); }
859 int main(void){ return (int) foo; }
863 check_func_headers(){
864 log check_func_headers "$@"
869 for hdr in $headers; do
870 echo "#include <$hdr>"
872 for func in $funcs; do
873 echo "long check_$func(void) { return (long) $func; }"
875 echo "int main(void) { return 0; }"
876 } | check_ld "cc" "$@" && enable $funcs && enable_safe $headers
879 check_class_headers_cpp(){
880 log check_class_headers_cpp "$@"
885 for hdr in $headers; do
886 echo "#include <$hdr>"
888 echo "int main(void) { "
890 for class in $classes; do
895 } | check_ld "cxx" "$@" && enable $funcs && enable_safe $headers
898 check_cpp_condition(){
899 log check_cpp_condition "$@"
906 #error "unsatisfied condition: $condition"
916 check_header $header && check_func $func "$@" && add_extralibs "$@"
924 check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
928 log check_lib_cpp "$@"
932 check_class_headers_cpp "$headers" "$classes" "$@" && add_extralibs "$@"
936 log check_pkg_config "$@"
941 $pkg_config --exists $pkg 2>/dev/null || return
942 pkg_cflags=$($pkg_config --cflags $pkg)
943 pkg_libs=$($pkg_config --libs $pkg)
944 check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
945 set_safe ${pkg}_cflags $pkg_cflags &&
946 set_safe ${pkg}_libs $pkg_libs
950 check_ld "cc" "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
956 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
957 # are safe but may not be available everywhere. Thus we use
958 # raise(SIGTERM) instead. The check is run in a subshell so we
959 # can redirect the "Terminated" message from the shell. SIGBUS
960 # is not defined by standard C so it is used conditionally.
962 (check_exec "$@") >> $logfile 2>&1 <<EOF
964 static void sighandler(int sig){
970 int (*func_ptr)(void) = func;
972 signal(SIGILL, sighandler);
973 signal(SIGFPE, sighandler);
974 signal(SIGSEGV, sighandler);
976 signal(SIGBUS, sighandler);
989 check_code cc "$headers" "$type v" "$@" && enable_safe "$type"
998 disable_safe "${struct}_${member}"
999 check_code cc "$headers" "const void *p = &(($struct *)0)->$member" "$@" &&
1000 enable_safe "${struct}_${member}"
1008 check_lib $header $func "$@" || die "ERROR: $name not found"
1016 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
1024 check_lib_cpp "$headers" "$classes" "$@" || die "ERROR: $name not found"
1027 require_pkg_config(){
1029 check_pkg_config "$@" || die "ERROR: $pkg not found"
1030 add_cflags $(get_safe ${pkg}_cflags)
1031 add_extralibs $(get_safe ${pkg}_libs)
1035 eval printf '%s\\n' $HOSTCC_O
1039 log check_host_cc "$@"
1042 check_cmd $host_cc $host_cflags "$@" $HOSTCC_C $(hostcc_o $TMPO) $TMPC
1045 check_host_cflags(){
1046 log check_host_cflags "$@"
1047 set -- $($host_cflags_filter "$@")
1048 check_host_cc "$@" <<EOF && append host_cflags "$@"
1056 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
1060 cmp -s "$1" "$2" && echo "$2 is unchanged" && return
1061 mkdir -p "$(dirname $2)"
1065 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
1066 # system-dependent things.
1121 incompatible_fork_abi
1172 safe_bitstream_reader
1263 incompatible_fork_abi
1268 $(add_suffix _external $ARCH_EXT_LIST)
1269 $(add_suffix _inline $ARCH_EXT_LIST)
1290 dev_bktr_ioctl_bt848_h
1291 dev_bktr_ioctl_meteor_h
1293 dev_video_bktr_ioctl_bt848_h
1294 dev_video_meteor_ioctl_meteor_h
1312 GetProcessAffinityMask
1313 GetProcessMemoryInfo
1315 GetSystemTimeAsFileTime
1326 jack_port_get_latency_range
1342 machine_ioctl_bt848_h
1343 machine_ioctl_meteor_h
1375 struct_group_source_req
1376 struct_ip_mreq_source
1379 struct_rusage_ru_maxrss
1380 struct_sctp_event_subscribe
1382 struct_sockaddr_sa_len
1383 struct_sockaddr_storage
1384 struct_v4l2_frmivalenum_discrete
1411 # options emitted with CONFIG_ prefix but not available on command line
1510 # code dependency declarations
1512 # architecture extensions
1522 mips32r2_deps="mips"
1523 mipsdspr1_deps="mips"
1524 mipsdspr2_deps="mips"
1531 x86_64_suggest="cmov fast_cmov"
1534 amd3dnowext_deps="amd3dnow"
1546 mmx_external_deps="yasm"
1547 mmx_inline_deps="inline_asm"
1548 mmx_suggest="mmx_external mmx_inline"
1550 for ext in $(filter_out mmx $ARCH_EXT_LIST_X86); do
1551 eval dep=\$${ext}_deps
1552 eval ${ext}_external_deps='"${dep}_external"'
1553 eval ${ext}_inline_deps='"${dep}_inline"'
1554 eval ${ext}_suggest='"${ext}_external ${ext}_inline"'
1557 aligned_stack_if_any="ppc x86"
1558 fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1559 fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
1560 fast_unaligned_if_any="armv6 ppc x86"
1562 inline_asm_deps="!tms470"
1563 need_memalign="altivec neon sse"
1565 symver_if_any="symver_asm_label symver_gnu_asm"
1573 mpegaudio_select="mpegaudiodsp"
1574 mpegaudiodsp_select="dct"
1575 mpegvideoenc_select="mpegvideo"
1577 # decoders / encoders / hardware accelerators
1578 aac_decoder_select="mdct sinewin"
1579 aac_encoder_select="mdct sinewin"
1580 aac_latm_decoder_select="aac_decoder aac_latm_parser"
1581 ac3_decoder_select="mdct ac3dsp ac3_parser"
1582 ac3_encoder_select="mdct ac3dsp"
1583 ac3_fixed_encoder_select="mdct ac3dsp"
1584 alac_encoder_select="lpc"
1585 amrnb_decoder_select="lsp"
1586 amrwb_decoder_select="lsp"
1587 amv_encoder_select="aandcttables"
1588 atrac1_decoder_select="mdct sinewin"
1589 atrac3_decoder_select="mdct"
1590 binkaudio_dct_decoder_select="mdct rdft dct sinewin"
1591 binkaudio_rdft_decoder_select="mdct rdft sinewin"
1592 cavs_decoder_select="golomb mpegvideo"
1593 cook_decoder_select="mdct sinewin"
1594 cscd_decoder_suggest="zlib"
1595 dca_decoder_select="mdct"
1596 dirac_decoder_select="dwt golomb"
1597 dnxhd_encoder_select="aandcttables mpegvideoenc"
1598 dxa_decoder_select="zlib"
1599 eac3_decoder_select="ac3_decoder"
1600 eac3_encoder_select="ac3_encoder"
1601 eamad_decoder_select="aandcttables error_resilience mpegvideo"
1602 eatgq_decoder_select="aandcttables"
1603 eatqi_decoder_select="aandcttables error_resilience mpegvideo"
1604 exr_decoder_select="zlib"
1605 ffv1_decoder_select="golomb rangecoder"
1606 ffv1_encoder_select="rangecoder"
1607 ffvhuff_encoder_select="huffman"
1608 flac_decoder_select="golomb"
1609 flac_encoder_select="golomb lpc"
1610 flashsv_decoder_select="zlib"
1611 flashsv_encoder_select="zlib"
1612 flashsv2_encoder_select="zlib"
1613 flashsv2_decoder_select="zlib"
1614 flv_decoder_select="h263_decoder"
1615 flv_encoder_select="h263_encoder"
1616 fraps_decoder_select="huffman"
1617 h261_decoder_select="error_resilience mpegvideo"
1618 h261_encoder_select="aandcttables mpegvideoenc"
1619 h263_decoder_select="error_resilience h263_parser mpegvideo"
1620 h263_encoder_select="aandcttables error_resilience mpegvideoenc"
1621 h263_vaapi_hwaccel_select="vaapi h263_decoder"
1622 h263i_decoder_select="h263_decoder"
1623 h263p_encoder_select="h263_encoder"
1624 h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
1625 h264_decoder_select="error_resilience golomb h264chroma h264dsp h264pred h264qpel mpegvideo"
1626 h264_dxva2_hwaccel_deps="dxva2api_h"
1627 h264_dxva2_hwaccel_select="dxva2 h264_decoder"
1628 h264_vaapi_hwaccel_select="vaapi h264_decoder"
1629 h264_vda_decoder_select="vda h264_parser h264_decoder"
1630 h264_vda_hwaccel_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
1631 h264_vda_hwaccel_select="vda h264_decoder"
1632 h264_vdpau_decoder_select="vdpau h264_decoder"
1633 huffyuv_encoder_select="huffman"
1634 iac_decoder_select="fft mdct sinewin"
1635 imc_decoder_select="fft mdct sinewin"
1636 jpegls_decoder_select="golomb"
1637 jpegls_encoder_select="golomb"
1638 ljpeg_encoder_select="aandcttables mpegvideoenc"
1639 loco_decoder_select="golomb"
1640 mdec_decoder_select="error_resilience mpegvideo"
1641 mjpeg_encoder_select="aandcttables mpegvideoenc"
1642 mlp_decoder_select="mlp_parser"
1643 mp1_decoder_select="mpegaudio"
1644 mp1float_decoder_select="mpegaudio"
1645 mp2_decoder_select="mpegaudio"
1646 mp2float_decoder_select="mpegaudio"
1647 mp3_decoder_select="mpegaudio"
1648 mp3adu_decoder_select="mpegaudio"
1649 mp3adufloat_decoder_select="mpegaudio"
1650 mp3float_decoder_select="mpegaudio"
1651 mp3on4_decoder_select="mpegaudio"
1652 mp3on4float_decoder_select="mpegaudio"
1653 mpc7_decoder_select="mpegaudiodsp"
1654 mpc8_decoder_select="mpegaudiodsp"
1655 mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
1656 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1657 mpeg_xvmc_decoder_select="mpegvideo_decoder"
1658 mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
1659 mpeg1_vdpau_hwaccel_select="vdpau mpeg1video_decoder"
1660 mpeg1video_decoder_select="error_resilience mpegvideo"
1661 mpeg1video_encoder_select="aandcttables error_resilience mpegvideoenc"
1662 mpeg2_crystalhd_decoder_select="crystalhd"
1663 mpeg2_dxva2_hwaccel_deps="dxva2api_h"
1664 mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
1665 mpeg2_vdpau_hwaccel_select="vdpau mpeg2video_decoder"
1666 mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
1667 mpeg2video_decoder_select="error_resilience mpegvideo"
1668 mpeg2video_encoder_select="aandcttables error_resilience mpegvideoenc"
1669 mpeg4_crystalhd_decoder_select="crystalhd"
1670 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1671 mpeg4_encoder_select="h263_encoder"
1672 mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
1673 mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
1674 msmpeg4_crystalhd_decoder_select="crystalhd"
1675 msmpeg4v1_decoder_select="h263_decoder"
1676 msmpeg4v1_encoder_select="h263_encoder"
1677 msmpeg4v2_decoder_select="h263_decoder"
1678 msmpeg4v2_encoder_select="h263_encoder"
1679 msmpeg4v3_decoder_select="h263_decoder"
1680 msmpeg4v3_encoder_select="h263_encoder"
1681 mss2_decoder_select="vc1_decoder"
1682 nellymoser_decoder_select="mdct sinewin"
1683 nellymoser_encoder_select="mdct sinewin"
1684 png_decoder_select="zlib"
1685 png_encoder_select="zlib"
1686 qcelp_decoder_select="lsp"
1687 qdm2_decoder_select="mdct rdft mpegaudiodsp"
1688 ra_144_encoder_select="lpc"
1689 ralf_decoder_select="golomb"
1690 rv10_decoder_select="h263_decoder"
1691 rv10_encoder_select="h263_encoder"
1692 rv20_decoder_select="h263_decoder"
1693 rv20_encoder_select="h263_encoder"
1694 rv30_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo"
1695 rv40_decoder_select="error_resilience golomb h264chroma h264pred h264qpel mpegvideo"
1696 shorten_decoder_select="golomb"
1697 sipr_decoder_select="lsp"
1698 snow_decoder_select="dwt rangecoder"
1699 snow_encoder_select="aandcttables dwt error_resilience mpegvideoenc rangecoder"
1700 sonic_decoder_select="golomb"
1701 sonic_encoder_select="golomb"
1702 sonic_ls_encoder_select="golomb"
1703 svq1_decoder_select="error_resilience mpegvideo"
1704 svq1_encoder_select="aandcttables error_resilience mpegvideoenc"
1705 svq3_decoder_select="error_resilience golomb h264chroma h264dsp h264pred h264qpel mpegvideo"
1706 svq3_decoder_suggest="zlib"
1707 theora_decoder_select="vp3_decoder"
1708 tiff_decoder_suggest="zlib"
1709 tiff_encoder_suggest="zlib"
1710 truehd_decoder_select="mlp_parser"
1711 tscc_decoder_select="zlib"
1712 twinvq_decoder_select="mdct lsp sinewin"
1713 utvideo_encoder_select="huffman"
1714 vc1_crystalhd_decoder_select="crystalhd"
1715 vc1_decoder_select="h263_decoder h264chroma h264qpel"
1716 vc1_dxva2_hwaccel_deps="dxva2api_h"
1717 vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
1718 vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
1719 vc1_vdpau_decoder_select="vdpau vc1_decoder"
1720 vc1image_decoder_select="vc1_decoder"
1721 vorbis_decoder_select="mdct"
1722 vorbis_encoder_select="mdct"
1723 vp3_decoder_select="vp3dsp"
1724 vp5_decoder_select="vp3dsp"
1725 vp6_decoder_select="huffman vp3dsp"
1726 vp6a_decoder_select="vp6_decoder"
1727 vp6f_decoder_select="vp6_decoder"
1728 vp8_decoder_select="h264pred h264qpel"
1729 wmapro_decoder_select="mdct sinewin"
1730 wmav1_decoder_select="mdct sinewin"
1731 wmav1_encoder_select="mdct sinewin"
1732 wmav2_decoder_select="mdct sinewin"
1733 wmav2_encoder_select="mdct sinewin"
1734 wmavoice_decoder_select="lsp rdft dct mdct sinewin"
1735 wmv1_decoder_select="h263_decoder"
1736 wmv1_encoder_select="h263_encoder"
1737 wmv2_decoder_select="h263_decoder"
1738 wmv2_encoder_select="h263_encoder"
1739 wmv3_decoder_select="vc1_decoder"
1740 wmv3_crystalhd_decoder_select="crystalhd"
1741 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
1742 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1743 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1744 wmv3image_decoder_select="wmv3_decoder"
1745 zerocodec_decoder_select="zlib"
1746 zlib_decoder_select="zlib"
1747 zlib_encoder_select="zlib"
1748 zmbv_decoder_select="zlib"
1749 zmbv_encoder_select="zlib"
1751 crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
1752 vaapi_deps="va_va_h"
1753 vda_deps="VideoDecodeAcceleration_VDADecoder_h pthreads"
1754 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1757 h264_parser_select="error_resilience golomb h264dsp h264pred mpegvideo"
1758 mpeg4video_parser_select="error_resilience mpegvideo"
1759 mpegvideo_parser_select="error_resilience mpegvideo"
1760 vc1_parser_select="error_resilience mpegvideo"
1762 # external libraries
1763 libaacplus_encoder_deps="libaacplus"
1764 libcelt_decoder_deps="libcelt"
1765 libfaac_encoder_deps="libfaac"
1766 libfdk_aac_encoder_deps="libfdk_aac"
1767 libgsm_decoder_deps="libgsm"
1768 libgsm_encoder_deps="libgsm"
1769 libgsm_ms_decoder_deps="libgsm"
1770 libgsm_ms_encoder_deps="libgsm"
1771 libilbc_decoder_deps="libilbc"
1772 libilbc_encoder_deps="libilbc"
1773 libmodplug_demuxer_deps="libmodplug"
1774 libmp3lame_encoder_deps="libmp3lame"
1775 libopencore_amrnb_decoder_deps="libopencore_amrnb"
1776 libopencore_amrnb_encoder_deps="libopencore_amrnb"
1777 libopencore_amrwb_decoder_deps="libopencore_amrwb"
1778 libopenjpeg_decoder_deps="libopenjpeg"
1779 libopenjpeg_encoder_deps="libopenjpeg"
1780 libopus_decoder_deps="libopus"
1781 libopus_encoder_deps="libopus"
1782 libschroedinger_decoder_deps="libschroedinger"
1783 libschroedinger_encoder_deps="libschroedinger"
1784 libspeex_decoder_deps="libspeex"
1785 libspeex_encoder_deps="libspeex"
1786 libstagefright_h264_decoder_deps="libstagefright_h264"
1787 libtheora_encoder_deps="libtheora"
1788 libtwolame_encoder_deps="libtwolame"
1789 libvo_aacenc_encoder_deps="libvo_aacenc"
1790 libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
1791 libvorbis_decoder_deps="libvorbis"
1792 libvorbis_encoder_deps="libvorbis"
1793 libvpx_decoder_deps="libvpx"
1794 libvpx_encoder_deps="libvpx"
1795 libx264_encoder_deps="libx264"
1796 libx264rgb_encoder_deps="libx264"
1797 libxavs_encoder_deps="libxavs"
1798 libxvid_encoder_deps="libxvid"
1799 libutvideo_decoder_deps="libutvideo"
1800 libutvideo_encoder_deps="libutvideo"
1803 ac3_demuxer_select="ac3_parser"
1804 asf_stream_muxer_select="asf_muxer"
1805 avisynth_demuxer_deps="avisynth"
1806 dirac_demuxer_select="dirac_parser"
1807 dts_demuxer_select="dca_parser"
1808 dtshd_demuxer_select="dca_parser"
1809 eac3_demuxer_select="ac3_parser"
1810 f4v_muxer_select="mov_muxer"
1811 flac_demuxer_select="flac_parser"
1812 ipod_muxer_select="mov_muxer"
1813 libnut_demuxer_deps="libnut"
1814 libnut_muxer_deps="libnut"
1815 matroska_audio_muxer_select="matroska_muxer"
1816 matroska_demuxer_suggest="zlib bzlib"
1817 mov_demuxer_suggest="zlib"
1818 mp3_demuxer_select="mpegaudio_parser"
1819 mp4_muxer_select="mov_muxer"
1820 mpegts_muxer_select="adts_muxer latm_muxer mpegvideo"
1821 mpegtsraw_demuxer_select="mpegts_demuxer"
1822 mxf_d10_muxer_select="mxf_muxer"
1823 ogg_demuxer_select="golomb"
1824 psp_muxer_select="mov_muxer"
1825 rtp_demuxer_select="sdp_demuxer"
1826 rtp_muxer_select="mpegvideo"
1827 rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
1828 rtsp_demuxer_select="http_protocol rtpdec"
1829 rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol"
1830 sap_demuxer_select="sdp_demuxer"
1831 sap_muxer_select="rtp_muxer rtp_protocol"
1832 sdp_demuxer_select="rtpdec"
1833 smoothstreaming_muxer_select="ismv_muxer"
1834 spdif_muxer_select="aac_parser"
1835 tak_demuxer_select="tak_parser"
1836 tg2_muxer_select="mov_muxer"
1837 tgp_muxer_select="mov_muxer"
1838 w64_demuxer_deps="wav_demuxer"
1841 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
1842 alsa_outdev_deps="alsa_asoundlib_h"
1843 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
1844 caca_outdev_deps="libcaca"
1845 dshow_indev_deps="IBaseFilter"
1846 dshow_indev_extralibs="-lpsapi -lole32 -lstrmiids -luuid"
1847 dv1394_indev_deps="dv1394 dv_demuxer"
1848 fbdev_indev_deps="linux_fb_h"
1849 iec61883_indev_deps="libiec61883"
1850 jack_indev_deps="jack_jack_h sem_timedwait"
1851 lavfi_indev_deps="avfilter"
1852 libcdio_indev_deps="libcdio"
1853 libdc1394_indev_deps="libdc1394"
1854 libv4l2_indev_deps="libv4l2"
1855 openal_indev_deps="openal"
1856 oss_indev_deps_any="soundcard_h sys_soundcard_h"
1857 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
1858 pulse_indev_deps="libpulse"
1859 sdl_outdev_deps="sdl"
1860 sndio_indev_deps="sndio_h"
1861 sndio_outdev_deps="sndio_h"
1862 v4l_indev_deps="linux_videodev_h"
1863 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
1864 vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
1865 vfwcap_indev_extralibs="-lavicap32"
1866 x11grab_indev_deps="x11grab"
1869 bluray_protocol_deps="libbluray"
1870 ffrtmpcrypt_protocol_deps="!librtmp_protocol"
1871 ffrtmpcrypt_protocol_deps_any="gcrypt nettle openssl"
1872 ffrtmpcrypt_protocol_select="tcp_protocol"
1873 ffrtmphttp_protocol_deps="!librtmp_protocol"
1874 ffrtmphttp_protocol_select="http_protocol"
1875 gopher_protocol_deps="network"
1876 httpproxy_protocol_deps="network"
1877 httpproxy_protocol_select="tcp_protocol"
1878 http_protocol_deps="network"
1879 http_protocol_select="tcp_protocol"
1880 https_protocol_select="tls_protocol"
1881 librtmp_protocol_deps="librtmp"
1882 librtmpe_protocol_deps="librtmp"
1883 librtmps_protocol_deps="librtmp"
1884 librtmpt_protocol_deps="librtmp"
1885 librtmpte_protocol_deps="librtmp"
1886 mmsh_protocol_select="http_protocol"
1887 mmst_protocol_deps="network"
1888 rtmp_protocol_deps="!librtmp_protocol"
1889 rtmp_protocol_select="tcp_protocol"
1890 rtmpe_protocol_select="ffrtmpcrypt_protocol"
1891 rtmps_protocol_deps="!librtmp_protocol"
1892 rtmps_protocol_select="tls_protocol"
1893 rtmpt_protocol_select="ffrtmphttp_protocol"
1894 rtmpte_protocol_select="ffrtmpcrypt_protocol ffrtmphttp_protocol"
1895 rtmpts_protocol_select="ffrtmphttp_protocol https_protocol"
1896 rtp_protocol_select="udp_protocol"
1897 sctp_protocol_deps="network struct_sctp_event_subscribe"
1898 tcp_protocol_deps="network"
1899 tls_protocol_deps_any="openssl gnutls"
1900 tls_protocol_select="tcp_protocol"
1901 udp_protocol_deps="network"
1904 aconvert_filter_deps="swresample"
1905 amovie_filter_deps="avcodec avformat"
1906 aresample_filter_deps="swresample"
1907 ass_filter_deps="libass"
1908 asyncts_filter_deps="avresample"
1909 atempo_filter_deps="avcodec rdft"
1910 blackframe_filter_deps="gpl"
1911 boxblur_filter_deps="gpl"
1912 colormatrix_filter_deps="gpl"
1913 cropdetect_filter_deps="gpl"
1914 decimate_filter_deps="gpl avcodec"
1915 delogo_filter_deps="gpl"
1916 deshake_filter_deps="avcodec"
1917 drawtext_filter_deps="libfreetype"
1918 ebur128_filter_deps="gpl"
1919 flite_filter_deps="libflite"
1920 frei0r_filter_deps="frei0r dlopen"
1921 frei0r_filter_extralibs='$ldl'
1922 frei0r_src_filter_deps="frei0r dlopen"
1923 frei0r_src_filter_extralibs='$ldl'
1924 hqdn3d_filter_deps="gpl"
1925 movie_filter_deps="avcodec avformat"
1926 mp_filter_deps="gpl avcodec swscale postproc inline_asm"
1927 mptestsrc_filter_deps="gpl"
1928 negate_filter_deps="lut_filter"
1929 resample_filter_deps="avresample"
1930 ocv_filter_deps="libopencv"
1931 pan_filter_deps="swresample"
1932 removelogo_filter_deps="avcodec avformat swscale"
1933 scale_filter_deps="swscale"
1934 smartblur_filter_deps="gpl swscale"
1935 showspectrum_filter_deps="avcodec rdft"
1936 super2xsai_filter_deps="gpl"
1937 tinterlace_filter_deps="gpl"
1938 yadif_filter_deps="gpl"
1939 pixfmts_super2xsai_test_deps="super2xsai_filter"
1940 tinterlace_merge_test_deps="tinterlace_filter"
1941 tinterlace_pad_test_deps="tinterlace_filter"
1944 avdevice_deps="avcodec avformat"
1945 avformat_deps="avcodec"
1949 ffmpeg_deps="avcodec avfilter avformat swscale swresample"
1950 ffmpeg_select="ffbuffersink_filter format_filter aformat_filter
1951 setpts_filter null_filter anull_filter ffabuffersink_filter"
1952 ffplay_deps="avcodec avformat swscale swresample sdl"
1953 ffplay_select="ffbuffersink_filter rdft crop_filter"
1954 ffprobe_deps="avcodec avformat"
1955 ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
1956 ffserver_extralibs='$ldl'
1959 podpages_deps="perl"
1960 manpages_deps="perl pod2man"
1961 htmlpages_deps="texi2html"
1962 txtpages_deps="makeinfo"
1963 doc_deps_any="manpages htmlpages podpages txtpages"
1965 # default parameters
1967 logfile="config.log"
1969 # installation paths
1970 prefix_default="/usr/local"
1971 bindir_default='${prefix}/bin'
1972 datadir_default='${prefix}/share/ffmpeg'
1973 incdir_default='${prefix}/include'
1974 libdir_default='${prefix}/lib'
1975 mandir_default='${prefix}/share/man'
1976 shlibdir_default="$libdir_default"
1977 postproc_version_default="current"
1983 host_cc_default="gcc"
1988 pkg_config_default=pkg-config
1990 strip_default="strip"
1991 yasmexe_default="yasm"
1996 arch_default=$(uname -m)
2000 target_os_default=$(tolower $(uname -s))
2001 host_os=$target_os_default
2003 # alternative libpostproc version
2006 ALT_PP_VER_MICRO=101
2007 ALT_PP_VER=$ALT_PP_VER_MAJOR.$ALT_PP_VER_MINOR.$ALT_PP_VER_MICRO
2009 # configurable options
2010 enable $PROGRAM_LIST
2011 enable $DOCUMENT_LIST
2027 enable optimizations
2028 enable runtime_cpudetect
2029 enable safe_bitstream_reader
2031 enable swscale_alpha
2034 SHFLAGS='-shared -Wl,-soname,$$(@F)'
2035 FFSERVERLDFLAGS=-Wl,-E
2038 FULLNAME='$(NAME)$(BUILDSUF)'
2039 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
2042 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
2043 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
2044 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
2045 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
2046 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
2047 SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
2067 host_cflags='-D_ISOC99_SOURCE -D_XOPEN_SOURCE=600 -O3 -g'
2069 host_cflags_filter=echo
2070 host_ldflags_filter=echo
2072 target_path='$(CURDIR)'
2074 # since the object filename is not given with the -MM flag, the compiler
2075 # is only able to print the basename, and we must add the path ourselves
2076 DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
2080 if test -f configure; then
2083 source_path=$(cd $(dirname "$0"); pwd)
2084 echo "$source_path" | grep -q '[[:blank:]]' &&
2085 die "Out of tree builds are impossible with whitespace in source path."
2086 test -e "$source_path/config.h" &&
2087 die "Out of tree builds are impossible with config.h in source dir."
2094 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
2100 file=$source_path/$3
2101 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
2104 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
2105 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
2106 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
2107 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
2108 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c)
2109 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
2110 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
2111 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
2112 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
2113 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
2114 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
2131 map "echo ${2}\${v}_test" $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]')
2134 LAVF_FATE_TESTS=$(find_tests lavf-fate)
2136 ALL_TESTS="$LAVF_FATE_TESTS"
2138 for n in $COMPONENT_LIST; do
2139 v=$(toupper ${n%s})_LIST
2141 eval ${n}_if_any="\$$v"
2144 enable $ARCH_EXT_LIST $ALL_TESTS
2147 echo "Unknown option \"$1\"."
2148 echo "See $0 --help for available options."
2155 echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t
2167 is_in ${comp} $COMPONENT_LIST && eval comp=\$$(toupper ${comp%s})_LIST
2168 echo "prob ${prob:-0.5}"
2176 random_seed=$(awk "BEGIN { srand($random_seed); print srand() }")
2177 $action $(rand_list "$@" | awk "BEGIN { srand($random_seed) } \$1 == \"prob\" { prob = \$2; next } rand() < prob { print }")
2183 --extra-ldflags=*) add_ldflags $optval
2185 --extra-libs=*) add_extralibs $optval
2187 --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
2189 --enable-debug=*) debuglevel="$optval"
2191 --disable-everything)
2192 map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
2194 --enable-random|--disable-random)
2195 action=${opt%%-random}
2196 do_random ${action#--} $COMPONENT_LIST
2198 --enable-random=*|--disable-random=*)
2199 action=${opt%%-random=*}
2200 do_random ${action#--} $optval
2202 --enable-*=*|--disable-*=*)
2203 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
2204 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
2205 eval list=\$$(toupper $thing)_LIST
2206 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
2207 $action $(filter "$name" $list)
2209 --enable-?*|--disable-?*)
2210 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
2211 if is_in $option $COMPONENT_LIST; then
2212 test $action = disable && action=unset
2213 eval $action \$$(toupper ${option%s})_LIST
2214 elif is_in $option $CMDLINE_SELECT; then
2221 NAME="${opt#--list-}"
2222 is_in $NAME $COMPONENT_LIST || die_unknown $opt
2224 eval show_list $NAME \$$(toupper $NAME)_LIST
2226 --help|-h) show_help
2229 optname="${opt%%=*}"
2230 optname="${optname#--}"
2231 optname=$(echo "$optname" | sed 's/-/_/g')
2232 if is_in $optname $CMDLINE_SET; then
2233 eval $optname='$optval'
2234 elif is_in $optname $CMDLINE_APPEND; then
2235 append $optname "$optval"
2243 disabled logging && logfile=/dev/null
2245 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
2248 test -n "$cross_prefix" && enable cross_compile
2250 if enabled cross_compile; then
2251 test -n "$arch" && test -n "$target_os" ||
2252 die "Must specify target arch and OS when cross-compiling"
2255 set_default arch target_os postproc_version
2257 # Check if we should build alternative libpostproc version instead of current
2258 if test "$postproc_version" = $ALT_PP_VER; then
2259 LIBPOSTPROC_VERSION=$ALT_PP_VER
2260 LIBPOSTPROC_VERSION_MAJOR=$ALT_PP_VER_MAJOR
2261 LIBPOSTPROC_VERSION_MINOR=$ALT_PP_VER_MINOR
2262 LIBPOSTPROC_VERSION_MICRO=$ALT_PP_VER_MICRO
2263 elif test "$postproc_version" != current; then
2264 die "Invalid argument to --postproc-version. See --help output."
2267 ar_default="${cross_prefix}${ar_default}"
2268 cc_default="${cross_prefix}${cc_default}"
2269 cxx_default="${cross_prefix}${cxx_default}"
2270 nm_default="${cross_prefix}${nm_default}"
2271 pkg_config_default="${cross_prefix}${pkg_config_default}"
2272 ranlib="${cross_prefix}${ranlib}"
2273 strip_default="${cross_prefix}${strip_default}"
2275 sysinclude_default="${sysroot}/usr/include"
2277 case "$toolchain" in
2280 add_cflags -faddress-sanitizer
2281 add_ldflags -faddress-sanitizer
2285 add_cflags -fthread-sanitizer
2286 add_ldflags -fthread-sanitizer
2289 cc_default="c99wrap cl"
2290 ld_default="c99wrap link"
2291 nm_default="dumpbin -symbols"
2295 die "Unknown toolchain $toolchain"
2299 set_default cc cxx pkg_config strip sysinclude yasmexe
2300 enabled cross_compile || host_cc_default=$cc
2303 if ! $pkg_config --version >/dev/null 2>&1; then
2304 warn "$pkg_config not found, library detection may fail."
2310 mingw32*|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
2314 EXESUF=$(exesuf $target_os)
2315 HOSTEXESUF=$(exesuf $host_os)
2317 # set temporary file name
2318 : ${TMPDIR:=$TEMPDIR}
2322 if ! check_cmd mktemp -u XXXXXX; then
2323 # simple replacement for missing mktemp
2324 # NOT SAFE FOR GENERAL USE
2326 echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
2331 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
2332 (set -C; exec > $tmp) 2>/dev/null ||
2333 die "Unable to create temporary file in $TMPDIR."
2334 append TMPFILES $tmp
2338 trap 'rm -f -- $TMPFILES' EXIT
2343 tmpfile TMPE $EXESUF
2354 # make sure we can execute files in $TMPDIR
2355 cat > $TMPSH 2>> $logfile <<EOF
2358 chmod +x $TMPSH >> $logfile 2>&1
2359 if ! $TMPSH >> $logfile 2>&1; then
2361 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
2362 variable to another directory and make sure that it is not mounted noexec.
2364 die "Sanity test failed."
2370 -fomit-frame-pointer) echo -Oy ;;
2372 -Wall) echo -W4 -wd4244 -wd4127 -wd4018 -wd4389 \
2373 -wd4146 -wd4057 -wd4204 -wd4706 -wd4305 \
2374 -wd4152 -wd4324 -we4013 -wd4100 -wd4214 \
2379 -fno-signed-zeros) ;;
2380 -lz) echo zlib.lib ;;
2381 -lavifil32) echo vfw32.lib ;;
2382 -lavicap32) echo vfw32.lib user32.lib ;;
2383 -l*) echo ${flag#-l}.lib ;;
2392 -flto) echo -Mipa=fast,libopt,libinline,vestigial ;;
2393 -fomit-frame-pointer) echo -Mnoframe ;;
2404 case "${flag#*=}" in
2405 native) echo -xtarget=native ;;
2406 v9|niagara) echo -xarch=sparc ;;
2407 ultrasparc) echo -xarch=sparcvis ;;
2408 ultrasparc3|niagara2) echo -xarch=sparcvis2 ;;
2409 i586|pentium) echo -xchip=pentium ;;
2410 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
2411 pentium3*|c3-2) echo -xtarget=pentium3 ;;
2412 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
2413 pentium4*) echo -xtarget=pentium4 ;;
2414 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
2415 *-sse3) echo -xarch=sse3 ;;
2416 core2) echo -xarch=ssse3 -xchip=core2 ;;
2417 amdfam10|barcelona|bdver*) echo -xarch=sse4_1 ;;
2418 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
2419 k8|opteron|athlon64|athlon-fx)
2420 echo -xarch=sse2a ;;
2421 athlon*) echo -xarch=pentium_proa ;;
2424 -std=c99) echo -xc99 ;;
2425 -fomit-frame-pointer) echo -xregs=frameptr ;;
2426 -fPIC) echo -KPIC -xcode=pic32 ;;
2427 -W*,*) echo $flag ;;
2438 case "${flag#*=}" in
2439 armv7-a|cortex-a*) echo -mv=7a8 ;;
2440 armv7-r|cortex-r*) echo -mv=7r4 ;;
2441 armv7-m|cortex-m*) echo -mv=7m3 ;;
2442 armv6*|arm11*) echo -mv=6 ;;
2443 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
2445 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
2448 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
2449 -mfpu=vfp) echo --float_support=vfpv2 ;;
2450 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
2451 -mfpu=vfpv3-d16) echo --float_support=vfpv3d16 ;;
2452 -msoft-float) echo --float_support=vfplib ;;
2453 -O[0-3]|-mf=*) echo $flag ;;
2455 -pds=*) echo $flag ;;
2456 -D*|-I*) echo $flag ;;
2457 --gcc|--abi=*) echo $flag ;;
2467 unset _type _ident _cc_c _cc_e _cc_o _flags _cflags
2468 unset _ld_o _ldflags _ld_lib _ld_path
2469 unset _depflags _DEPCMD _DEPFLAGS
2472 if $_cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
2474 gcc_extra_ver=$(expr "$($_cc --version | head -n1)" : '.*\((.*)\)')
2475 _ident="llvm-gcc $($_cc -dumpversion) $gcc_extra_ver"
2476 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2479 elif $_cc -v 2>&1 | grep -qi ^gcc; then
2481 gcc_version=$($_cc --version | head -n1)
2482 gcc_basever=$($_cc -dumpversion)
2483 gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
2484 gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
2485 _ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
2486 if ! $_cc -dumpversion | grep -q '^2\.'; then
2487 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2491 elif $_cc --version 2>/dev/null | grep -q Intel; then
2493 _ident=$($_cc --version | head -n1)
2498 elif $_cc -v 2>&1 | grep -q xlc; then
2500 _ident=$($_cc -qversion 2>/dev/null | head -n1)
2502 _cflags_size='-O5 -qcompact'
2503 elif $_cc -V 2>/dev/null | grep -q Compaq; then
2505 _ident=$($_cc -V | head -n1 | cut -d' ' -f1-3)
2508 _ldflags='-Wl,-z,now' # calls to libots crash without this
2509 _cflags_speed='-fast'
2511 elif $_cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
2512 test -d "$sysroot" || die "No valid sysroot specified."
2514 _ident=$($_cc --vsn | head -n1)
2515 armcc_conf="$PWD/armcc.conf"
2516 $_cc --arm_linux_configure \
2517 --arm_linux_config_file="$armcc_conf" \
2518 --configure_sysroot="$sysroot" \
2519 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
2520 die "Error creating armcc configuration file."
2521 $_cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
2522 _flags="--arm_linux_config_file=$armcc_conf --translate_gcc"
2523 as_default="${cross_prefix}gcc"
2527 elif $_cc -version 2>/dev/null | grep -Eq 'TMS470|TI ARM'; then
2529 _ident=$($_cc -version | head -n1 | tr -s ' ')
2530 _flags='--gcc --abi=eabi -me'
2533 _depflags='-ppa -ppd=$(@:.o=.d)'
2534 _cflags_speed='-O3 -mf=5'
2535 _cflags_size='-O3 -mf=2'
2536 _flags_filter=tms470_flags
2537 elif $_cc -v 2>&1 | grep -q clang; then
2539 _ident=$($_cc --version | head -n1)
2543 elif $_cc -V 2>&1 | grep -q Sun; then
2545 _ident=$($_cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
2546 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2547 _DEPFLAGS='-xM1 -xc99'
2550 _cflags_size='-O5 -xspace'
2551 _flags_filter=suncc_flags
2552 elif $_cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
2554 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2555 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2558 _flags_filter='filter_out -Wdisabled-optimization'
2559 elif $_cc -v 2>&1 | grep -q Open64; then
2561 _ident=$($_cc -v 2>&1 | head -n1 | tr -d :)
2562 _depflags='-MMD -MF $(@:.o=.d) -MT $@'
2565 _flags_filter='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
2566 elif $_cc -V 2>&1 | grep -q Portland; then
2568 _ident="PGI $($_cc -V 2>&1 | awk '/^pgcc/ { print $2; exit }')"
2569 opt_common='-alias=ansi -Mdse -Mlre -Mpre'
2570 _cflags_speed="-O3 -Mautoinline -Munroll=c:4 $opt_common"
2571 _cflags_size="-O2 -Munroll=c:1 $opt_common"
2573 _flags_filter=pgi_flags
2574 elif $_cc 2>&1 | grep -q Microsoft; then
2576 _ident=$($cc 2>&1 | head -n1)
2577 _DEPCMD='$(DEP$(1)) $(DEP$(1)FLAGS) $($(1)DEP_FLAGS) $< 2>&1 | awk '\''/including/ { sub(/^.*file: */, ""); gsub(/\\/, "/"); if (!match($$0, / /)) print "$@:", $$0 }'\'' > $(@:.o=.d)'
2578 _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs'
2581 # Nonstandard output options, to avoid msys path conversion issues, relies on wrapper to remap it
2582 if $_cc 2>&1 | grep -q Linker; then
2589 _flags_filter=msvc_flags
2591 _ld_path='-libpath:'
2593 _cflags='-D_USE_MATH_DEFINES -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64'
2594 if [ $pfx = hostcc ]; then
2595 append _cflags -Dsnprintf=_snprintf
2600 eval ${pfx}_type=\$_type
2601 eval ${pfx}_ident=\$_ident
2605 eval ${1}_C=\${_cc_c-\${${1}_C}}
2606 eval ${1}_E=\${_cc_e-\${${1}_E}}
2607 eval ${1}_O=\${_cc_o-\${${1}_O}}
2609 if [ -n "$_depflags" ]; then
2610 eval ${1}_DEPFLAGS=\$_depflags
2612 eval ${1}DEP=\${_DEPCMD:-\$DEPCMD}
2613 eval ${1}DEP_FLAGS=\${_DEPFLAGS:-\$DEPFLAGS}
2614 eval DEP${1}FLAGS=\$_flags
2619 cflags_filter=$_flags_filter
2620 cflags_speed=$_cflags_speed
2621 cflags_size=$_cflags_size
2622 cflags_noopt=$_cflags_noopt
2623 add_cflags $_flags $_cflags
2624 cc_ldflags=$_ldflags
2627 probe_cc hostcc "$host_cc"
2628 host_cflags_filter=$_flags_filter
2629 add_host_cflags $_flags $_cflags
2632 test -n "$cc_type" && enable $cc_type ||
2633 warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
2635 : ${as_default:=$cc}
2636 : ${dep_cc_default:=$cc}
2637 : ${ld_default:=$cc}
2638 : ${host_ld_default:=$host_cc}
2639 set_default ar as dep_cc ld host_ld
2642 asflags_filter=$_flags_filter
2643 add_asflags $_flags $_cflags
2647 ldflags_filter=$_flags_filter
2648 add_ldflags $_flags $_ldflags
2649 test "$cc_type" != "$ld_type" && add_ldflags $cc_ldflags
2651 LD_LIB=${_ld_lib-$LD_LIB}
2652 LD_PATH=${_ld_path-$LD_PATH}
2654 probe_cc hostld "$host_ld"
2655 host_ldflags_filter=$_flags_filter
2656 add_host_ldflags $_flags $_ldflags
2657 HOSTLD_O=${_ld_o-$HOSTLD_O}
2659 if [ -z "$CC_DEPFLAGS" ] && [ "$dep_cc" != "$cc" ]; then
2660 probe_cc depcc "$dep_cc"
2661 CCDEP=${_DEPCMD:-$DEPCMD}
2662 CCDEP_FLAGS=${_DEPFLAGS:=$DEPFLAGS}
2666 if $ar 2>&1 | grep -q Microsoft; then
2669 elif $ar 2>&1 | grep -q 'Texas Instruments'; then
2677 add_cflags $extra_cflags
2678 add_cxxflags $extra_cxxflags
2679 add_asflags $extra_cflags
2681 if test -n "$sysroot"; then
2684 add_cppflags --sysroot="$sysroot"
2685 add_ldflags --sysroot="$sysroot"
2688 add_cppflags -I"$sysinclude"
2689 add_ldflags --sysroot="$sysroot"
2694 if test "$cpu" = host; then
2695 enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
2700 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
2702 s/.*$1=\\([^ ]*\\).*/\\1/
2707 cpu=$(check_native -march || check_native -mcpu)
2711 test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
2714 # Deal with common $arch aliases
2733 "Power Macintosh"|ppc|powerpc|ppc64|powerpc64)
2749 i[3-6]86|i86pc|BePC|x86pc|x86_64|x86_32|amd64)
2754 is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
2757 # Add processor-specific flags
2758 if test "$cpu" = generic; then
2760 elif enabled ppc; then
2762 case $(tolower $cpu) in
2763 601|ppc601|powerpc601)
2764 cpuflags="-mcpu=601"
2767 603*|ppc603*|powerpc603*)
2768 cpuflags="-mcpu=603"
2771 604*|ppc604*|powerpc604*)
2772 cpuflags="-mcpu=604"
2775 g3|75*|ppc75*|powerpc75*)
2776 cpuflags="-mcpu=750 -mpowerpc-gfxopt"
2779 g4|745*|ppc745*|powerpc745*)
2780 cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
2782 74*|ppc74*|powerpc74*)
2783 cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
2785 g5|970|ppc970|powerpc970)
2786 cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
2789 cpuflags="-mcpu=$cpu -mpowerpc-gfxopt -mpowerpc64"
2792 cpuflags="-mcpu=cell"
2796 cpuflags="-mcpu=e500mc"
2800 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
2804 cpuflags="-mcpu=8540 -mhard-float"
2809 elif enabled x86; then
2813 cpuflags="-march=$cpu"
2816 # targets that do NOT support conditional mov (cmov)
2817 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
2818 cpuflags="-march=$cpu"
2821 # targets that do support conditional mov (cmov)
2822 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64*|k8*|opteron*|athlon-fx|core2|amdfam10|barcelona|atom|bdver*)
2823 cpuflags="-march=$cpu"
2827 # targets that do support conditional mov but on which it's slow
2828 pentium4|pentium4m|prescott|nocona)
2829 cpuflags="-march=$cpu"
2835 elif enabled sparc; then
2839 cpuflags="-mcpu=$cpu"
2847 elif enabled arm; then
2851 cpuflags="-march=$cpu"
2852 subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
2855 cpuflags="-mcpu=$cpu"
2857 cortex-a*) subarch=armv7a ;;
2858 cortex-r*) subarch=armv7r ;;
2859 cortex-m*) enable thumb; subarch=armv7m ;;
2860 arm11*) subarch=armv6 ;;
2861 arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
2862 armv4*|arm7*|arm9[24]*) subarch=armv4 ;;
2867 elif enabled alpha; then
2869 enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
2871 elif enabled bfin; then
2873 cpuflags="-mcpu=$cpu"
2875 elif enabled mips; then
2877 cpuflags="-march=$cpu"
2893 24kef*|34kf*|1004kf*)
2901 elif enabled avr32; then
2906 cpuflags="-mpart=$cpu"
2910 cpuflags="-march=$cpu"
2914 cpuflags="-mcpu=$cpu"
2918 cpuflags="-march=$cpu"
2924 add_cflags $cpuflags
2925 add_asflags $cpuflags
2927 # compiler sanity check
2929 int main(void){ return 0; }
2931 if test "$?" != 0; then
2932 echo "$cc is unable to create an executable file."
2933 if test -z "$cross_prefix" && ! enabled cross_compile ; then
2934 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
2935 echo "Only do this if you know what cross compiling means."
2937 die "C compiler test failed."
2940 add_cppflags -D_ISOC99_SOURCE
2941 add_cxxflags -D__STDC_CONSTANT_MACROS
2942 check_cflags -std=c99
2943 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
2946 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
2950 check_host_cflags -std=c99
2951 check_host_cflags -Wall
2954 alpha|ia64|mips|parisc|sparc)
2959 check_code cc "" "int test[(int)sizeof(char*) - 7]" && subarch="x86_64"
2960 if test "$subarch" = "x86_64"; then
2965 check_cc <<EOF && subarch="ppc64"
2966 int test[(int)sizeof(char*) - 7];
2972 enabled spic && enable pic
2977 prefix_default="/boot/common"
2978 network_extralibs="-lnetwork"
2983 SHFLAGS='-shared -Wl,-h,$$(@F)'
2984 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
2985 network_extralibs="-lsocket -lnsl"
2986 add_cppflags -D__EXTENSIONS__ -D_XOPEN_SOURCE=600
2987 # When using suncc to build, the Solaris linker will mark
2988 # an executable with each instruction set encountered by
2989 # the Solaris assembler. As our libraries contain their own
2990 # guards for processor-specific code, instead suppress
2991 # generation of the HWCAPS ELF section on Solaris x86 only.
2992 enabled_all suncc x86 && echo "hwcap_1 = OVERRIDE;" > mapfile && add_ldflags -Wl,-M,mapfile
2993 nm_default='nm -P -g'
2997 oss_indev_extralibs="-lossaudio"
2998 oss_outdev_extralibs="-lossaudio"
2999 enabled gcc || check_ldflags -Wl,-zmuldefs
3002 # On OpenBSD 4.5. the compiler does not use PIC unless
3003 # explicitly using -fPIC. FFmpeg builds fine without PIC,
3004 # however the generated executable will not do anything
3005 # (simply quits with exit-code 1, no crash, no output).
3006 # Thus explicitly enable PIC here.
3010 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBVERSION)'
3012 oss_indev_extralibs="-lossaudio"
3013 oss_outdev_extralibs="-lossaudio"
3021 add_extralibs -lpoll -lgnugetopt
3025 gas="gas-preprocessor.pl $cc"
3026 enabled ppc && add_asflags -force_cpusubtype_ALL
3027 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
3028 enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
3030 add_ldflags -Wl,-dynamic,-search_paths_first
3032 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
3033 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
3034 FFSERVERLDFLAGS=-Wl,-bind_at_load
3036 enabled x86_64 && objformat="macho64"
3037 enabled_any pic shared ||
3038 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
3041 if test $target_os = "mingw32ce"; then
3047 if enabled x86_64; then
3048 LIBTARGET="i386:x86-64"
3049 elif enabled arm; then
3052 shlibdir_default="$bindir_default"
3055 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3056 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3057 dlltool="${cross_prefix}dlltool"
3058 if check_cmd lib.exe -list; then
3059 SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib)'
3060 if enabled x86_64; then
3063 elif check_cmd $dlltool --version; then
3064 SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
3066 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3068 SLIB_INSTALL_EXTRA_SHLIB='$(SLIBNAME:$(SLIBSUF)=.lib)'
3069 SLIB_INSTALL_EXTRA_LIB='lib$(SLIBNAME:$(SLIBSUF)=.dll.a) $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.def)'
3070 SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
3074 add_cppflags -U__STRICT_ANSI__
3078 shlibdir_default="$bindir_default"
3081 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
3082 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
3083 SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
3085 SLIB_INSTALL_EXTRA_LIB='lib$(FULLNAME).dll.a'
3086 SHFLAGS='-shared -Wl,--out-implib,$(SUBDIR)lib$(FULLNAME).dll.a'
3089 add_cppflags -U__STRICT_ANSI__
3091 *-dos|freedos|opendos)
3092 network_extralibs="-lsocket"
3095 add_cppflags -U__STRICT_ANSI__
3098 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3103 ranlib="echo ignoring ranlib"
3109 add_cppflags -D_GNU_SOURCE
3110 add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
3111 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
3116 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
3117 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
3118 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
3119 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
3120 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
3121 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
3122 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
3123 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
3124 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
3125 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
3126 SLIB_INSTALL_EXTRA_LIB='$(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib'
3128 enable_weak os2threads
3131 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_BSD_SOURCE
3134 add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
3137 add_cppflags -D_QNX_SOURCE
3138 network_extralibs="-lsocket"
3143 add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default
3144 add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
3145 add_ldflags -Wl,--target1-abs,--no-undefined \
3146 -Wl,-Ttext,0x80000,-Tdata,0x1000000 -shared \
3147 -Wl,--entry=_E32Startup -Wl,-u,_E32Startup
3148 add_extralibs -l:eexe.lib -l:usrt2_2.lib -l:dfpaeabi.dso \
3149 -l:drtaeabi.dso -l:scppnwdl.dso -lsupc++ -lgcc \
3150 -l:libc.dso -l:libm.dso -l:euser.dso -l:libcrt0.lib
3153 add_cppflags -D_OSF_SOURCE -D_POSIX_PII -D_REENTRANT
3161 die "Unknown OS '$target_os'."
3165 # determine libc flavour
3167 if check_cpp_condition features.h "defined __UCLIBC__"; then
3169 elif check_cpp_condition features.h "defined __GLIBC__"; then
3171 elif check_header _mingw.h; then
3173 check_cpp_condition _mingw.h \
3174 "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) || \
3175 (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
3176 die "ERROR: MinGW runtime version must be >= 3.15."
3177 if check_cpp_condition _mingw.h "defined(__MINGW64_VERSION_MAJOR) && \
3178 __MINGW64_VERSION_MAJOR < 3"; then
3179 add_compat msvcrt/snprintf.o
3180 add_cflags "-include $source_path/compat/msvcrt/snprintf.h"
3182 elif check_cpp_condition newlib.h "defined _NEWLIB_VERSION"; then
3184 elif check_func_headers stdlib.h _get_doserrno; then
3186 add_compat strtod.o strtod=avpriv_strtod
3187 add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
3188 _snprintf=avpriv_snprintf \
3189 vsnprintf=avpriv_vsnprintf
3190 elif check_cpp_condition stddef.h "defined __KLIBC__"; then
3194 test -n "$libc_type" && enable $libc_type
3196 # hacks for compiler/libc/os combinations
3198 if enabled_all tms470 glibc; then
3199 CPPFLAGS="-I${source_path}/compat/tms470 ${CPPFLAGS}"
3200 add_cppflags -D__USER_LABEL_PREFIX__=
3201 add_cppflags -D__builtin_memset=memset
3202 add_cppflags -D__gnuc_va_list=va_list -D_VA_LIST_DEFINED
3203 add_cflags -pds=48 # incompatible redefinition of macro
3207 echo "$*" | sed 's/%/%25/g;s/:/%3a/g'
3210 echo "config:$arch:$subarch:$cpu:$target_os:$(esc $cc_ident):$(esc $FFMPEG_CONFIGURATION)" >config.fate
3212 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
3214 set_default $PATHS_LIST
3217 # we need to build at least one lib type
3218 if ! enabled_any static shared; then
3220 At least one library type must be built.
3221 Specify --enable-static to build the static libraries or --enable-shared to
3222 build the shared libraries as well. To only build the shared libraries specify
3223 --disable-static in addition to --enable-shared.
3228 die_license_disabled() {
3229 enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
3232 die_license_disabled_gpl() {
3233 enabled $1 || { enabled $2 && die "$2 is incompatible with the gpl and --enable-$1 is not specified."; }
3236 die_license_disabled gpl libcdio
3237 die_license_disabled gpl libutvideo
3238 die_license_disabled gpl libx264
3239 die_license_disabled gpl libxavs
3240 die_license_disabled gpl libxvid
3241 die_license_disabled gpl x11grab
3243 die_license_disabled nonfree libaacplus
3244 die_license_disabled nonfree libfaac
3245 enabled gpl && die_license_disabled_gpl nonfree libfdk_aac
3246 enabled gpl && die_license_disabled_gpl nonfree openssl
3248 die_license_disabled version3 libopencore_amrnb
3249 die_license_disabled version3 libopencore_amrwb
3250 die_license_disabled version3 libvo_aacenc
3251 die_license_disabled version3 libvo_amrwbenc
3253 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
3255 disabled optimizations || check_cflags -fomit-frame-pointer
3264 enabled pic && enable_pic
3266 check_cc <<EOF || die "Symbol mangling check failed."
3269 sym=$($nm $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
3270 extern_prefix=${sym%%ff_extern*}
3272 check_cc <<EOF && enable_weak inline_asm
3273 void foo(void) { __asm__ volatile ("" ::); }
3277 for restrict_keyword in restrict __restrict__ __restrict; do
3278 check_cc <<EOF && _restrict=$restrict_keyword && break
3279 void foo(char * $restrict_keyword p);
3283 check_cc <<EOF && enable attribute_packed
3284 struct { int x; } __attribute__((packed)) x;
3287 check_cc <<EOF && enable attribute_may_alias
3288 union { int x; } __attribute__((may_alias)) x;
3291 check_cc <<EOF || die "endian test failed"
3292 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
3294 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
3296 if enabled alpha; then
3300 elif enabled arm; then
3302 enabled thumb && check_cflags -mthumb || check_cflags -marm
3305 if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
3307 elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
3308 case "${cross_prefix:-$cc}" in
3309 *hardfloat*) enable vfp_args; fpabi=vfp ;;
3310 *) check_ld "cc" <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
3311 __asm__ (".eabi_attribute 28, 1");
3312 int main(void) { return 0; }
3315 warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
3318 enabled armv5te && check_inline_asm armv5te '"qadd r0, r0, r0"'
3319 enabled armv6 && check_inline_asm armv6 '"sadd16 r0, r0, r0"'
3320 enabled armv6t2 && check_inline_asm armv6t2 '"movt r0, #0"'
3321 enabled armvfp && check_inline_asm armvfp '"fadds s0, s0, s0"'
3322 enabled neon && check_inline_asm neon '"vadd.i16 q0, q0, q0"'
3323 enabled vfpv3 && check_inline_asm vfpv3 '"vmov.f32 s0, #1.0"'
3325 check_inline_asm asm_mod_q '"add r0, %Q0, %R0" :: "r"((long long)0)'
3326 check_inline_asm asm_mod_y '"vmul.i32 d0, d0, %y0" :: "x"(0)'
3328 enabled_all armv6t2 shared !pic && enable_pic
3330 elif enabled mips; then
3332 check_inline_asm loongson '"dmult.g $1, $2, $3"'
3333 enabled mips32r2 && add_cflags "-mips32r2" && add_asflags "-mips32r2" &&
3334 check_inline_asm mips32r2 '"rotr $t0, $t1, 1"'
3335 enabled mipsdspr1 && add_cflags "-mdsp" && add_asflags "-mdsp" &&
3336 check_inline_asm mipsdspr1 '"addu.qb $t0, $t1, $t2"'
3337 enabled mipsdspr2 && add_cflags "-mdspr2" && add_asflags "-mdspr2" &&
3338 check_inline_asm mipsdspr2 '"absq_s.qb $t0, $t1"'
3339 enabled mipsfpu && add_cflags "-mhard-float" && add_asflags "-mhard-float" &&
3340 check_inline_asm mipsfpu '"madd.d $f0, $f2, $f4, $f6"'
3342 elif enabled ppc; then
3344 enable local_aligned_8 local_aligned_16
3346 check_inline_asm dcbzl '"dcbzl 0, %0" :: "r"(0)'
3347 check_inline_asm ibm_asm '"add 0, 0, 0"'
3348 check_inline_asm ppc4xx '"maclhw r10, r11, r12"'
3349 check_inline_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
3351 # AltiVec flags: The FSF version of GCC differs from the Apple version
3352 if enabled altivec; then
3354 check_cflags -maltivec -mabi=altivec &&
3355 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
3356 check_cflags -faltivec
3358 # check if our compiler supports Motorola AltiVec C API
3359 check_cc <<EOF || disable altivec
3362 vector signed int v1 = (vector signed int) { 0 };
3363 vector signed int v2 = (vector signed int) { 1 };
3364 v1 = vec_add(v1, v2);
3369 enabled altivec || warn "Altivec disabled, possibly missing --cpu flag"
3372 elif enabled sparc; then
3375 check_inline_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
3376 add_cflags -mcpu=ultrasparc -mtune=ultrasparc
3378 elif enabled x86; then
3380 check_code ld intrin.h "__rdtsc()" "cc" && enable rdtsc
3382 check_code ld mmintrin.h "_mm_empty()" "cc" && enable mm_empty
3384 enable local_aligned_8 local_aligned_16
3386 # check whether EBP is available on x86
3387 # As 'i' is stored on the stack, this program will crash
3388 # if the base pointer is used to access it because the
3389 # base pointer is cleared in the inline assembly code.
3390 check_exec_crash <<EOF && enable ebp_available
3392 __asm__ volatile ("xorl %%ebp, %%ebp" ::: "%ebp");
3396 # check whether EBX is available on x86
3397 check_inline_asm ebx_available '""::"b"(0)' &&
3398 check_inline_asm ebx_available '"":::"%ebx"'
3400 # check whether xmm clobbers are supported
3401 check_inline_asm xmm_clobbers '"":::"%xmm0"'
3403 # check whether binutils is new enough to compile SSSE3/MMXEXT
3404 enabled ssse3 && check_inline_asm ssse3_inline '"pabsw %xmm0, %xmm0"'
3405 enabled mmxext && check_inline_asm mmxext_inline '"pmaxub %mm0, %mm1"'
3407 if ! disabled_any asm mmx yasm; then
3408 if check_cmd $yasmexe --version; then
3409 enabled x86_64 && yasm_extra="-m amd64"
3410 yasm_debug="-g dwarf2"
3411 elif check_cmd nasm -v; then
3413 yasm_debug="-g -F dwarf"
3414 enabled x86_64 && test "$objformat" = elf && objformat=elf64
3417 YASMFLAGS="-f $objformat $yasm_extra"
3418 enabled pic && append YASMFLAGS "-DPIC"
3419 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
3420 case "$objformat" in
3421 elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
3424 check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
3425 die "yasm not found, use --disable-yasm for a crippled build"
3426 check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx_external
3427 check_yasm "vfmaddps ymm0, ymm1, ymm2, ymm3" || disable fma4_external
3428 check_yasm "CPU amdnop" && enable cpunop
3432 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
3439 if enabled asm; then
3441 check_inline_asm gnu_as '".macro m n\n\\n:.int 0\n.endm\nm x"' ||
3442 $nogas "GNU assembler not found, install gas-preprocessor"
3445 check_ldflags -Wl,--as-needed
3447 if check_func dlopen; then
3449 elif check_func dlopen -ldl; then
3453 if enabled network; then
3454 check_type "sys/types.h sys/socket.h" socklen_t
3455 check_type netdb.h "struct addrinfo"
3456 check_type netinet/in.h "struct group_source_req" -D_BSD_SOURCE
3457 check_type netinet/in.h "struct ip_mreq_source" -D_BSD_SOURCE
3458 check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
3459 check_type netinet/in.h "struct sockaddr_in6"
3460 check_type poll.h "struct pollfd"
3461 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
3462 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
3463 check_type netinet/sctp.h "struct sctp_event_subscribe"
3464 check_func getaddrinfo $network_extralibs
3465 # Prefer arpa/inet.h over winsock2
3466 if check_header arpa/inet.h ; then
3467 check_func closesocket
3468 elif check_header winsock2.h ; then
3469 check_func_headers winsock2.h closesocket -lws2 &&
3470 network_extralibs="-lws2" ||
3471 { check_func_headers winsock2.h closesocket -lws2_32 &&
3472 network_extralibs="-lws2_32"; }
3473 check_func_headers ws2tcpip.h getaddrinfo $network_extralibs
3474 check_type ws2tcpip.h socklen_t
3475 check_type ws2tcpip.h "struct addrinfo"
3476 check_type ws2tcpip.h "struct group_source_req"
3477 check_type ws2tcpip.h "struct ip_mreq_source"
3478 check_type ws2tcpip.h "struct ipv6_mreq"
3479 check_type winsock2.h "struct pollfd"
3480 check_type ws2tcpip.h "struct sockaddr_in6"
3481 check_type ws2tcpip.h "struct sockaddr_storage"
3482 check_struct winsock2.h "struct sockaddr" sa_len
3488 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
3489 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
3491 check_func clock_gettime || { check_func clock_gettime -lrt && add_extralibs -lrt; }
3494 check_func gethrtime
3496 check_func getrusage
3497 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
3498 check_func gettimeofday
3499 check_func inet_aton $network_extralibs
3501 check_func localtime_r
3502 check_func ${malloc_prefix}memalign && enable memalign
3506 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
3507 check_func_headers malloc.h _aligned_malloc && enable aligned_malloc
3508 check_func setrlimit
3509 check_func strerror_r
3510 check_func sched_getaffinity
3514 check_func_headers conio.h kbhit
3515 check_func_headers windows.h PeekNamedPipe
3516 check_func_headers io.h setmode
3517 check_func_headers lzo/lzo1x.h lzo1x_999_compress
3518 check_lib2 "windows.h shellapi.h" CommandLineToArgvW -lshell32
3519 check_lib2 "windows.h wincrypt.h" CryptGenRandom -ladvapi32
3520 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
3521 check_func_headers windows.h GetProcessAffinityMask
3522 check_func_headers windows.h GetProcessTimes
3523 check_func_headers windows.h GetSystemTimeAsFileTime
3524 check_func_headers windows.h MapViewOfFile
3525 check_func_headers windows.h Sleep
3526 check_func_headers windows.h VirtualAlloc
3527 check_func_headers glob.h glob
3529 check_header direct.h
3530 check_header dlfcn.h
3532 check_header dxva2api.h -D_WIN32_WINNT=0x0600
3534 check_header libcrystalhd/libcrystalhd_if.h
3535 check_header malloc.h
3537 check_header sys/mman.h
3538 check_header sys/param.h
3539 check_header sys/resource.h
3540 check_header sys/select.h
3541 check_header sys/time.h
3542 check_header termios.h
3543 check_header unistd.h
3544 check_header vdpau/vdpau.h
3545 check_header vdpau/vdpau_x11.h
3546 check_header windows.h
3547 check_header X11/extensions/XvMClib.h
3548 check_header asm/types.h
3550 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
3551 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
3553 # check for VDA header
3554 if ! disabled vda && ! enabled ppc; then
3555 if check_header VideoDecodeAcceleration/VDADecoder.h; then
3557 add_extralibs -framework CoreFoundation -framework VideoDecodeAcceleration -framework QuartzCore
3561 if ! disabled w32threads && ! enabled pthreads; then
3562 check_func _beginthreadex && enable w32threads
3565 # check for some common methods of building with pthread support
3566 # do this before the optional library checks as some of them require pthreads
3567 if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
3569 if check_func pthread_create; then
3571 elif check_func pthread_create -pthread; then
3573 add_extralibs -pthread
3574 elif check_func pthread_create -pthreads; then
3575 add_cflags -pthreads
3576 add_extralibs -pthreads
3577 elif check_func pthread_create -lpthreadGC2; then
3578 add_extralibs -lpthreadGC2
3579 elif ! check_lib pthread.h pthread_create -lpthread; then
3584 for thread in $THREADS_LIST; do
3585 if enabled $thread; then
3586 test -n "$thread_type" &&
3587 die "ERROR: Only one thread type must be selected." ||
3588 thread_type="$thread"
3592 if enabled pthreads; then
3593 check_func pthread_cancel
3596 check_lib math.h sin -lm && LIBM="-lm"
3597 disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
3598 enabled vaapi && require vaapi va/va.h vaInitialize -lva
3600 check_mathfunc cbrtf
3602 check_mathfunc exp2f
3603 check_mathfunc isinf
3604 check_mathfunc isnan
3605 check_mathfunc llrint
3606 check_mathfunc llrintf
3608 check_mathfunc log2f
3609 check_mathfunc lrint
3610 check_mathfunc lrintf
3612 check_mathfunc round
3613 check_mathfunc roundf
3614 check_mathfunc trunc
3615 check_mathfunc truncf
3617 # these are off by default, so fail if requested and not available
3618 enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
3619 enabled fontconfig && require_pkg_config fontconfig "fontconfig/fontconfig.h" FcInit
3620 enabled frei0r && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
3621 enabled gnutls && require_pkg_config gnutls gnutls/gnutls.h gnutls_global_init
3622 enabled libiec61883 && require libiec61883 libiec61883/iec61883.h iec61883_cmp_connect -lraw1394 -lavc1394 -lrom1394 -liec61883
3623 enabled libaacplus && require "libaacplus >= 2.0.0" aacplus.h aacplusEncOpen -laacplus
3624 enabled libass && require_pkg_config libass ass/ass.h ass_library_init
3625 enabled libbluray && require libbluray libbluray/bluray.h bd_open -lbluray
3626 enabled libcdio && require2 libcdio "cdio/cdda.h cdio/paranoia.h" cdio_cddap_open "-lcdio_paranoia -lcdio_cdda -lcdio"
3627 enabled libcelt && require libcelt celt/celt.h celt_decode -lcelt0 &&
3628 { check_lib celt/celt.h celt_decoder_create_custom -lcelt0 ||
3629 die "ERROR: libcelt must be installed and version must be >= 0.11.0."; }
3630 enabled libcaca && require_pkg_config caca caca.h caca_create_canvas
3631 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
3632 enabled libfdk_aac && require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac
3633 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"
3634 enabled libflite && require2 libflite "flite/flite.h" flite_init $flite_libs
3635 enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
3636 enabled libgsm && require libgsm gsm/gsm.h gsm_create -lgsm
3637 enabled libilbc && require libilbc ilbc.h WebRtcIlbcfix_InitDecode -lilbc
3638 enabled libmodplug && require libmodplug libmodplug/modplug.h ModPlug_Load -lmodplug
3639 enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
3640 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
3641 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
3642 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
3643 enabled libopencv && require_pkg_config opencv opencv/cxcore.h cvCreateImageHeader
3644 enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
3645 enabled libopus && require_pkg_config opus opus_multistream.h opus_multistream_decoder_create
3646 enabled libpulse && require_pkg_config libpulse-simple pulse/simple.h pa_simple_new
3647 enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
3648 enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
3649 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
3650 enabled libstagefright_h264 && require_cpp libstagefright_h264 "binder/ProcessState.h media/stagefright/MetaData.h
3651 media/stagefright/MediaBufferGroup.h media/stagefright/MediaDebug.h media/stagefright/MediaDefs.h
3652 media/stagefright/OMXClient.h media/stagefright/OMXCodec.h" android::OMXClient -lstagefright -lmedia -lutils -lbinder -lgnustl_static
3653 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
3654 enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
3655 { check_lib twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
3656 die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
3657 enabled libutvideo && require_cpp utvideo "stdint.h stdlib.h utvideo/utvideo.h utvideo/Codec.h" 'CCodec*' -lutvideo -lstdc++
3658 enabled libv4l2 && require_pkg_config libv4l2 libv4l2.h v4l2_ioctl
3659 enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
3660 enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
3661 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
3663 enabled libvpx_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
3664 die "ERROR: libvpx decoder must be installed and version must be >=0.9.1"; }
3665 enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VP8E_SET_MAX_INTRA_BITRATE_PCT" -lvpx ||
3666 die "ERROR: libvpx encoder version must be >=0.9.7"; } }
3667 enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 &&
3668 { check_cpp_condition x264.h "X264_BUILD >= 118" ||
3669 die "ERROR: libx264 must be installed and version must be >= 0.118."; }
3670 enabled libxavs && require libxavs xavs.h xavs_encoder_encode -lxavs
3671 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
3672 enabled openal && { { for al_libs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
3673 check_lib 'AL/al.h' alGetError "${al_libs}" && break; done } ||
3674 die "ERROR: openal not found"; } &&
3675 { check_cpp_condition "AL/al.h" "defined(AL_VERSION_1_1)" ||
3676 die "ERROR: openal must be installed and version must be 1.1 or compatible"; }
3677 enabled openssl && { check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto ||
3678 check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
3679 check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
3680 die "ERROR: openssl not found"; }
3682 if enabled gnutls; then
3683 { check_lib nettle/bignum.h nettle_mpz_get_str_256 -lnettle -lhogweed -lgmp && enable nettle; } ||
3684 { check_lib gcrypt.h gcry_mpi_new -lgcrypt && enable gcrypt; }
3688 if enabled libdc1394; then
3689 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
3690 enable libdc1394_2; } ||
3691 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
3692 enable libdc1394_1; } ||
3693 die "ERROR: No version of libdc1394 found "
3696 SDL_CONFIG="${cross_prefix}sdl-config"
3697 if check_pkg_config sdl SDL_events.h SDL_PollEvent; then
3698 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
3700 check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
3702 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
3703 sdl_cflags=$("${SDL_CONFIG}" --cflags)
3704 sdl_libs=$("${SDL_CONFIG}" --libs)
3705 check_func_headers SDL_version.h SDL_Linked_Version $sdl_cflags $sdl_libs &&
3706 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
3708 check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
3711 enabled sdl && add_cflags $sdl_cflags && add_extralibs $sdl_libs
3713 texi2html --help 2> /dev/null | grep -q 'init-file' && enable texi2html || disable texi2html
3714 makeinfo --version > /dev/null 2>&1 && enable makeinfo || disable makeinfo
3715 perl --version > /dev/null 2>&1 && enable perl || disable perl
3716 pod2man --help > /dev/null 2>&1 && enable pod2man || disable pod2man
3718 check_header linux/fb.h
3719 check_header linux/videodev.h
3720 check_header linux/videodev2.h
3721 check_struct linux/videodev2.h "struct v4l2_frmivalenum" discrete
3723 check_header sys/videoio.h
3725 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
3726 # check that WM_CAP_DRIVER_CONNECT is defined to the proper value
3727 # w32api 3.12 had it defined wrong
3728 check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
3730 check_type "dshow.h" IBaseFilter
3732 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
3733 { check_header dev/bktr/ioctl_meteor.h &&
3734 check_header dev/bktr/ioctl_bt848.h; } ||
3735 { check_header machine/ioctl_meteor.h &&
3736 check_header machine/ioctl_bt848.h; } ||
3737 { check_header dev/video/meteor/ioctl_meteor.h &&
3738 check_header dev/video/bktr/ioctl_bt848.h; } ||
3739 check_header dev/ic/bt8xx.h
3741 check_header sndio.h
3742 if check_struct sys/soundcard.h audio_buf_info bytes; then
3743 enable_safe sys/soundcard.h
3745 check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
3746 #include <sys/soundcard.h>
3750 check_header soundcard.h
3752 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
3754 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait &&
3755 check_func jack_port_get_latency_range -ljack
3757 enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
3760 require X11 X11/Xlib.h XOpenDisplay -lX11 &&
3761 require Xext X11/extensions/XShm.h XShmCreateImage -lXext &&
3762 require Xfixes X11/extensions/Xfixes.h XFixesGetCursorImage -lXfixes
3764 if ! disabled vaapi; then
3765 check_lib va/va.h vaInitialize -lva && {
3766 check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
3767 warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
3771 if ! disabled vdpau && enabled vdpau_vdpau_h; then
3772 check_cpp_condition vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
3773 { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." && disable vdpau; }
3776 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
3777 enabled coverage && add_cflags "-fprofile-arcs -ftest-coverage" && add_ldflags "-fprofile-arcs -ftest-coverage"
3778 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"
3780 # add some useful compiler flags if supported
3781 check_cflags -Wdeclaration-after-statement
3783 check_cflags -Wno-parentheses
3784 check_cflags -Wno-switch
3785 check_cflags -Wno-format-zero-length
3786 check_cflags -Wdisabled-optimization
3787 check_cflags -Wpointer-arith
3788 check_cflags -Wredundant-decls
3789 check_cflags -Wno-pointer-sign
3790 check_cflags -Wwrite-strings
3791 check_cflags -Wtype-limits
3792 check_cflags -Wundef
3793 check_cflags -Wmissing-prototypes
3794 check_cflags -Wno-pointer-to-int-cast
3795 check_cflags -Wstrict-prototypes
3796 enabled extra_warnings && check_cflags -Winline
3798 # add some linker flags
3799 check_ldflags -Wl,--warn-common
3800 check_ldflags -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample
3801 test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
3803 enabled xmm_clobber_test &&
3804 check_ldflags -Wl,--wrap,avcodec_open2 \
3805 -Wl,--wrap,avcodec_decode_audio4 \
3806 -Wl,--wrap,avcodec_decode_video2 \
3807 -Wl,--wrap,avcodec_decode_subtitle2 \
3808 -Wl,--wrap,avcodec_encode_audio2 \
3809 -Wl,--wrap,avcodec_encode_video \
3810 -Wl,--wrap,avcodec_encode_subtitle \
3811 -Wl,--wrap,sws_scale ||
3812 disable xmm_clobber_test
3815 if test_ldflags -Wl,--version-script,$TMPV; then
3816 append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
3817 check_cc <<EOF && enable symver_asm_label
3818 void ff_foo(void) __asm__ ("av_foo@VERSION");
3819 void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
3821 check_cc <<EOF && enable symver_gnu_asm
3822 __asm__(".symver ff_foo,av_foo@VERSION");
3823 void ff_foo(void) {}
3827 if [ -z "$optflags" ]; then
3828 if enabled small; then
3829 optflags=$cflags_size
3830 elif enabled optimizations; then
3831 optflags=$cflags_speed
3833 optflags=$cflags_noopt
3839 enabled lto && check_ldflags "$@"
3843 if enabled lto; then
3844 test "$cc_type" != "$ld_type" && die "LTO requires same compiler and linker"
3846 check_ldflags -flto $cpuflags
3849 check_optflags $optflags
3850 check_optflags -fno-math-errno
3851 check_optflags -fno-signed-zeros
3853 enabled ftrapv && check_cflags -ftrapv
3855 check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
3860 if enabled icc; then
3861 # Just warnings, no remarks
3863 # -wd: Disable following warnings
3864 # 144, 167, 556: -Wno-pointer-sign
3865 # 1292: attribute "foo" ignored
3866 # 1419: external declaration in primary source file
3867 # 10006: ignoring unknown option -fno-signed-zeros
3868 # 10148: ignoring unknown option -Wno-parentheses
3869 # 10156: ignoring option '-W'; no argument required
3870 check_cflags -wd144,167,556,1292,1419,10006,10148,10156
3871 # 11030: Warning unknown option --as-needed
3872 # 10156: ignoring option '-export'; no argument required
3873 check_ldflags -wd10156,11030
3874 # Allow to compile with optimizations
3875 check_ldflags -march=$cpu
3876 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
3877 enable ebp_available
3878 if enabled x86_32; then
3879 icc_version=$($cc -dumpversion)
3880 test ${icc_version%%.*} -ge 11 &&
3881 check_cflags -falign-stack=maintain-16-byte ||
3882 disable aligned_stack
3884 elif enabled ccc; then
3885 # disable some annoying warnings
3886 add_cflags -msg_disable cvtu32to64
3887 add_cflags -msg_disable embedcomment
3888 add_cflags -msg_disable needconstext
3889 add_cflags -msg_disable nomainieee
3890 add_cflags -msg_disable ptrmismatch1
3891 add_cflags -msg_disable unreachcode
3892 elif enabled gcc; then
3893 check_optflags -fno-tree-vectorize
3894 check_cflags -Werror=implicit-function-declaration
3895 check_cflags -Werror=missing-prototypes
3896 check_cflags -Werror=vla
3897 elif enabled llvm_gcc; then
3898 check_cflags -mllvm -stack-alignment=16
3899 elif enabled clang; then
3900 check_cflags -mllvm -stack-alignment=16
3901 check_cflags -Qunused-arguments
3902 elif enabled armcc; then
3903 # 2523: use of inline assembler is deprecated
3904 add_cflags -W${armcc_opt},--diag_suppress=2523
3905 add_cflags -W${armcc_opt},--diag_suppress=1207
3906 add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
3907 add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
3908 add_cflags -W${armcc_opt},--diag_suppress=167 # pointer sign
3909 add_cflags -W${armcc_opt},--diag_suppress=513 # pointer sign
3910 elif enabled tms470; then
3911 add_cflags -pds=824 -pds=837
3912 elif enabled pathscale; then
3913 add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
3914 elif enabled msvc; then
3915 enabled x86_32 && disable aligned_stack
3918 enabled_any $THREADS_LIST && enable threads
3920 enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
3922 check_deps $CONFIG_LIST \
3929 if test $target_os = "haiku"; then
3931 disable posix_memalign
3934 ! enabled_any memalign posix_memalign aligned_malloc &&
3935 enabled_any $need_memalign && enable memalign_hack
3938 # -> enable ${lib}_deps_${dep}
3939 # -> add $dep to ${lib}_deps only once
3943 enabled "${lib}_deps_${dep}" && return 0
3944 enable "${lib}_deps_${dep}"
3945 prepend "${lib}_deps" $dep
3948 # merge deps lib components
3949 # merge all ${component}_deps into ${lib}_deps and ${lib}_deps_*
3954 enabled $comp || continue
3955 eval "dep=\"\$${comp}_deps\""
3962 merge_deps libavfilter $FILTER_LIST
3964 echo "install prefix $prefix"
3965 echo "source path $source_path"
3966 echo "C compiler $cc"
3967 echo "ARCH $arch ($cpu)"
3968 if test "$build_suffix" != ""; then
3969 echo "build suffix $build_suffix"
3971 if test "$progs_suffix" != ""; then
3972 echo "progs suffix $progs_suffix"
3974 if test "$extra_version" != ""; then
3975 echo "version string suffix $extra_version"
3977 echo "big-endian ${bigendian-no}"
3978 echo "runtime cpu detection ${runtime_cpudetect-no}"
3979 if enabled x86; then
3980 echo "${yasmexe} ${yasm-no}"
3981 echo "MMX enabled ${mmx-no}"
3982 echo "MMXEXT enabled ${mmxext-no}"
3983 echo "3DNow! enabled ${amd3dnow-no}"
3984 echo "3DNow! extended enabled ${amd3dnowext-no}"
3985 echo "SSE enabled ${sse-no}"
3986 echo "SSSE3 enabled ${ssse3-no}"
3987 echo "AVX enabled ${avx-no}"
3988 echo "FMA4 enabled ${fma4-no}"
3989 echo "CMOV enabled ${cmov-no}"
3990 echo "CMOV is fast ${fast_cmov-no}"
3991 echo "EBX available ${ebx_available-no}"
3992 echo "EBP available ${ebp_available-no}"
3994 if enabled arm; then
3995 echo "ARMv5TE enabled ${armv5te-no}"
3996 echo "ARMv6 enabled ${armv6-no}"
3997 echo "ARMv6T2 enabled ${armv6t2-no}"
3998 echo "ARM VFP enabled ${armvfp-no}"
3999 echo "NEON enabled ${neon-no}"
4001 if enabled mips; then
4002 echo "MIPS FPU enabled ${mipsfpu-no}"
4003 echo "MIPS32R2 enabled ${mips32r2-no}"
4004 echo "MIPS DSP R1 enabled ${mipsdspr1-no}"
4005 echo "MIPS DSP R2 enabled ${mipsdspr2-no}"
4007 if enabled ppc; then
4008 echo "AltiVec enabled ${altivec-no}"
4009 echo "PPC 4xx optimizations ${ppc4xx-no}"
4010 echo "dcbzl available ${dcbzl-no}"
4012 if enabled sparc; then
4013 echo "VIS enabled ${vis-no}"
4015 echo "debug symbols ${debug-no}"
4016 echo "strip symbols ${stripping-no}"
4017 echo "optimize for size ${small-no}"
4018 echo "optimizations ${optimizations-no}"
4019 echo "static ${static-no}"
4020 echo "shared ${shared-no}"
4021 echo "postprocessing support ${postproc-no}"
4022 echo "new filter support ${avfilter-no}"
4023 echo "network support ${network-no}"
4024 echo "threading support ${thread_type-no}"
4025 echo "safe bitstream reader ${safe_bitstream_reader-no}"
4026 echo "SDL support ${sdl-no}"
4027 echo "libdxva2 enabled ${dxva2-no}"
4028 echo "libva enabled ${vaapi-no}"
4029 echo "libvdpau enabled ${vdpau-no}"
4030 echo "AVISynth enabled ${avisynth-no}"
4031 echo "frei0r enabled ${frei0r-no}"
4032 echo "gnutls enabled ${gnutls-no}"
4033 echo "libaacplus enabled ${libaacplus-no}"
4034 echo "libass enabled ${libass-no}"
4035 echo "libcaca enabled ${libcaca-no}"
4036 echo "libcdio support ${libcdio-no}"
4037 echo "libcelt enabled ${libcelt-no}"
4038 echo "libdc1394 support ${libdc1394-no}"
4039 echo "libfaac enabled ${libfaac-no}"
4040 echo "libfdk-aac enabled ${libfdk_aac-no}"
4041 echo "libgsm enabled ${libgsm-no}"
4042 echo "libiec61883 support ${libiec61883-no}"
4043 echo "libilbc enabled ${libilbc-no}"
4044 echo "libmodplug enabled ${libmodplug-no}"
4045 echo "libmp3lame enabled ${libmp3lame-no}"
4046 echo "libnut enabled ${libnut-no}"
4047 echo "libopencore-amrnb support ${libopencore_amrnb-no}"
4048 echo "libopencore-amrwb support ${libopencore_amrwb-no}"
4049 echo "libopencv support ${libopencv-no}"
4050 echo "libopenjpeg enabled ${libopenjpeg-no}"
4051 echo "libopus enabled ${libopus-no}"
4052 echo "libpulse enabled ${libpulse-no}"
4053 echo "librtmp enabled ${librtmp-no}"
4054 echo "libschroedinger enabled ${libschroedinger-no}"
4055 echo "libspeex enabled ${libspeex-no}"
4056 echo "libstagefright-h264 enabled ${libstagefright_h264-no}"
4057 echo "libtheora enabled ${libtheora-no}"
4058 echo "libtwolame enabled ${libtwolame-no}"
4059 echo "libutvideo enabled ${libutvideo-no}"
4060 echo "libv4l2 enabled ${libv4l2-no}"
4061 echo "libvo-aacenc support ${libvo_aacenc-no}"
4062 echo "libvo-amrwbenc support ${libvo_amrwbenc-no}"
4063 echo "libvorbis enabled ${libvorbis-no}"
4064 echo "libvpx enabled ${libvpx-no}"
4065 echo "libx264 enabled ${libx264-no}"
4066 echo "libxavs enabled ${libxavs-no}"
4067 echo "libxvid enabled ${libxvid-no}"
4068 echo "openal enabled ${openal-no}"
4069 echo "openssl enabled ${openssl-no}"
4070 echo "zlib enabled ${zlib-no}"
4071 echo "bzlib enabled ${bzlib-no}"
4072 echo "texi2html enabled ${texi2html-no}"
4073 echo "perl enabled ${perl-no}"
4074 echo "pod2man enabled ${pod2man-no}"
4075 echo "makeinfo enabled ${makeinfo-no}"
4076 test -n "$random_seed" &&
4077 echo "random seed ${random_seed}"
4080 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
4081 echo "Enabled ${type}s:"
4082 eval list=\$$(toupper $type)_LIST
4083 print_enabled '_*' $list | sort | pr -r -3 -t
4087 license="LGPL version 2.1 or later"
4088 if enabled nonfree; then
4089 license="nonfree and unredistributable"
4090 elif enabled gplv3; then
4091 license="GPL version 3 or later"
4092 elif enabled lgplv3; then
4093 license="LGPL version 3 or later"
4094 elif enabled gpl; then
4095 license="GPL version 2 or later"
4098 echo "License: $license"
4100 echo "Creating config.mak and config.h..."
4102 test -e Makefile || $ln_s "$source_path/Makefile" .
4104 enabled stripping || strip="echo skipping strip"
4106 config_files="$TMPH config.mak"
4108 cat > config.mak <<EOF
4109 # Automatically generated by configure - do not modify!
4110 ifndef FFMPEG_CONFIG_MAK
4112 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
4114 LIBDIR=\$(DESTDIR)$libdir
4115 SHLIBDIR=\$(DESTDIR)$shlibdir
4116 INCDIR=\$(DESTDIR)$incdir
4117 BINDIR=\$(DESTDIR)$bindir
4118 DATADIR=\$(DESTDIR)$datadir
4119 MANDIR=\$(DESTDIR)$mandir
4120 SRC_PATH=$source_path
4121 ifndef MAIN_MAKEFILE
4122 SRC_PATH:=\$(SRC_PATH:.%=..%)
4131 DEPCCFLAGS=$DEPCCFLAGS \$(CPPFLAGS)
4133 DEPASFLAGS=$DEPASFLAGS \$(CPPFLAGS)
4158 LDFLAGS-ffserver=$FFSERVERLDFLAGS
4160 YASMFLAGS=$YASMFLAGS
4161 BUILDSUF=$build_suffix
4162 PROGSSUF=$progs_suffix
4170 EXTRA_VERSION=$extra_version
4173 CCDEP_FLAGS=$CCDEP_FLAGS
4175 ASDEP_FLAGS=$ASDEP_FLAGS
4176 CC_DEPFLAGS=$CC_DEPFLAGS
4177 AS_DEPFLAGS=$AS_DEPFLAGS
4180 HOSTCFLAGS=$host_cflags
4181 HOSTEXESUF=$HOSTEXESUF
4182 HOSTLDFLAGS=$host_ldflags
4185 DEPHOSTCCFLAGS=$DEPHOSTCCFLAGS \$(HOSTCCFLAGS)
4186 HOSTCCDEP=$HOSTCCDEP
4187 HOSTCCDEP_FLAGS=$HOSTCCDEP_FLAGS
4188 HOSTCC_DEPFLAGS=$HOSTCC_DEPFLAGS
4192 TARGET_EXEC=$target_exec
4193 TARGET_PATH=$target_path
4194 LIBS-ffplay=$sdl_libs
4195 CFLAGS-ffplay=$sdl_cflags
4196 ZLIB=$($ldflags_filter -lz)
4197 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
4198 EXTRALIBS=$extralibs
4199 COMPAT_OBJS=$compat_objs
4201 LIBTARGET=${LIBTARGET}
4202 SLIBNAME=${SLIBNAME}
4203 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
4204 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
4205 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
4206 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
4207 SLIB_INSTALL_NAME=${SLIB_INSTALL_NAME}
4208 SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
4209 SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
4210 SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
4211 SAMPLES:=${samples:-\$(FATE_SAMPLES)}
4212 NOREDZONE_FLAGS=$noredzone_flags
4217 name=$(toupper $lcname)
4218 file=$source_path/$lcname/version.h
4219 eval $(awk "/#define ${name}_VERSION_M/ { print \$2 \"=\" \$3 }" "$file")
4220 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
4221 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
4222 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
4227 file=$source_path/$2
4228 # This condition will be removed when we stop supporting old libpostproc versions
4229 if ! test "$name" = LIBPOSTPROC || test "$postproc_version" = current; then
4230 eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
4231 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
4233 lcname=$(tolower $name)
4234 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
4235 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
4238 get_version_old LIBPOSTPROC libpostproc/version.h
4240 get_version libavcodec
4241 get_version libavdevice
4242 get_version libavfilter
4243 get_version libavformat
4244 get_version libavresample
4245 get_version libavutil
4246 get_version libswresample
4247 get_version libswscale
4250 /* Automatically generated by configure - do not modify! */
4251 #ifndef FFMPEG_CONFIG_H
4252 #define FFMPEG_CONFIG_H
4253 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
4254 #define FFMPEG_LICENSE "$(c_escape $license)"
4255 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
4256 #define AVCONV_DATADIR "$(eval c_escape $datadir)"
4257 #define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
4258 #define av_restrict $_restrict
4259 #define EXTERN_PREFIX "${extern_prefix}"
4260 #define EXTERN_ASM ${extern_prefix}
4261 #define SLIBSUF "$SLIBSUF"
4262 #define HAVE_MMX2 HAVE_MMXEXT
4265 test -n "$assert_level" &&
4266 echo "#define ASSERT_LEVEL $assert_level" >>$TMPH
4268 test -n "$malloc_prefix" &&
4269 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
4271 if enabled yasm; then
4272 append config_files $TMPASM
4276 print_config ARCH_ "$config_files" $ARCH_LIST
4277 print_config HAVE_ "$config_files" $HAVE_LIST
4278 print_config CONFIG_ "$config_files" $CONFIG_LIST \
4282 cat >>config.mak <<EOF
4283 LAVF_FATE_TESTS=$(print_enabled -n _test $LAVF_FATE_TESTS)
4286 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
4287 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
4289 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
4290 cp_if_changed $TMPH config.h
4293 enabled yasm && cp_if_changed $TMPASM config.asm
4296 /* Generated by ffconf */
4297 #ifndef AVUTIL_AVCONFIG_H
4298 #define AVUTIL_AVCONFIG_H
4301 test "$postproc_version" != current && cat >> $TMPH <<EOF
4302 #define LIBPOSTPROC_VERSION_MAJOR $LIBPOSTPROC_VERSION_MAJOR
4303 #define LIBPOSTPROC_VERSION_MINOR $LIBPOSTPROC_VERSION_MINOR
4304 #define LIBPOSTPROC_VERSION_MICRO $LIBPOSTPROC_VERSION_MICRO
4307 print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
4309 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
4311 cp_if_changed $TMPH libavutil/avconfig.h
4313 test -n "$WARNINGS" && printf "\n$WARNINGS"
4315 # build pkg-config files
4317 pkgconfig_generate(){
4319 shortname=${name#lib}${build_suffix}
4324 enabled ${name#lib} || return 0
4326 cat <<EOF > $name/$name.pc
4328 exec_prefix=\${prefix}
4333 Description: $comment
4335 Requires: $(enabled shared || echo $requires)
4336 Requires.private: $(enabled shared && echo $requires)
4338 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4339 Libs.private: $(enabled shared && echo $libs)
4340 Cflags: -I\${includedir}
4343 mkdir -p doc/examples/pc-uninstalled
4344 includedir=${source_path}
4345 [ "$includedir" = . ] && includedir="\${pcfiledir}/../../.."
4346 cat <<EOF > doc/examples/pc-uninstalled/$name.pc
4349 libdir=\${pcfiledir}/../../../$name
4350 includedir=${includedir}
4353 Description: $comment
4357 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
4358 Cflags: -I\${includedir}
4362 libavfilter_pc_deps=""
4363 enabled libavfilter_deps_avcodec && prepend libavfilter_pc_deps "libavcodec = $LIBAVCODEC_VERSION,"
4364 enabled libavfilter_deps_avformat && prepend libavfilter_pc_deps "libavformat = $LIBAVFORMAT_VERSION,"
4365 enabled libavfilter_deps_swscale && prepend libavfilter_pc_deps "libswscale = $LIBSWSCALE_VERSION,"
4366 enabled libavfilter_deps_swresample && prepend libavfilter_pc_deps "libswresample = $LIBSWRESAMPLE_VERSION,"
4367 enabled libavfilter_deps_postproc && prepend libavfilter_pc_deps "libpostproc = $LIBPOSTPROC_VERSION,"
4368 libavfilter_pc_deps=${libavfilter_pc_deps%, }
4370 libavdevice_pc_deps="libavformat = $LIBAVFORMAT_VERSION"
4371 enabled lavfi_indev && prepend libavdevice_pc_deps "libavfilter = $LIBAVFILTER_VERSION,"
4373 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
4374 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
4375 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
4376 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$libavdevice_pc_deps"
4377 pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$libavfilter_pc_deps"
4378 pkgconfig_generate libpostproc "FFmpeg postprocessing library" "$LIBPOSTPROC_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
4379 pkgconfig_generate libavresample "Libav audio resampling library" "$LIBAVRESAMPLE_VERSION" "$extralibs"
4380 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"
4381 pkgconfig_generate libswresample "FFmpeg audio rescaling library" "$LIBSWRESAMPLE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"
4383 fix_ffmpeg_remote(){
4386 fixme_remote=$(git --git-dir=$source_path/.git --work-tree=$source_path remote -v | grep $git_remote_from | cut -f 1 | sort | uniq)
4387 if [ "$fixme_remote" != "" ]; then
4389 Outdated domain in git config, the official domain for ffmpeg git is since
4390 November 2011, source.ffmpeg.org, both the old and the new point to the same
4391 repository and server. To update it enter the following commands:
4393 for remote in $fixme_remote; do
4394 echolog "git remote set-url $remote $git_remote_to"
4399 if test -f "$source_path/.git/config"; then
4400 remote_from=git.videolan.org
4401 remote_to=source.ffmpeg.org
4402 fix_ffmpeg_remote git@$remote_from:ffmpeg git@$remote_to:ffmpeg
4403 fix_ffmpeg_remote git://$remote_from/ffmpeg git://$remote_to/ffmpeg