Implement support to RTMP, RTMPT, RTMPE, RTMPTE, RTMPS protocols via
[libav.git] / configure
1 #!/bin/sh
2 #
3 # FFmpeg configure script
4 #
5 # Copyright (c) 2000-2002 Fabrice Bellard
6 # Copyright (c) 2005-2008 Diego Biurrun
7 # Copyright (c) 2005-2008 Mans Rullgard
8 #
9
10 # Prevent locale nonsense from breaking basic text processing.
11 LC_ALL=C
12 export LC_ALL
13
14 # make sure we are running under a compatible shell
15 # try to make this part work with most shells
16
17 try_exec(){
18 echo "Trying shell $1"
19 type "$1" > /dev/null 2>&1 && exec "$@"
20 }
21
22 unset foo
23 (: ${foo%%bar}) 2> /dev/null
24 E1="$?"
25
26 (: ${foo?}) 2> /dev/null
27 E2="$?"
28
29 if test "$E1" != 0 || test "$E2" = 0; then
30 echo "Broken shell detected. Trying alternatives."
31 export FF_CONF_EXEC
32 if test "0$FF_CONF_EXEC" -lt 1; then
33 FF_CONF_EXEC=1
34 try_exec bash "$0" "$@"
35 fi
36 if test "0$FF_CONF_EXEC" -lt 2; then
37 FF_CONF_EXEC=2
38 try_exec ksh "$0" "$@"
39 fi
40 if test "0$FF_CONF_EXEC" -lt 3; then
41 FF_CONF_EXEC=3
42 try_exec /usr/xpg4/bin/sh "$0" "$@"
43 fi
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."
53 fi
54 exit 1
55 fi
56
57 show_help(){
58 cat <<EOF
59 Usage: configure [options]
60 Options: [defaults in brackets after descriptions]
61
62 Standard options:
63 --help print this message
64 --logfile=FILE log tests and output to FILE [config.err]
65 --disable-logging do not log configure debug information
66 --prefix=PREFIX install in PREFIX [$prefix]
67 --bindir=DIR install binaries in DIR [PREFIX/bin]
68 --datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]
69 --libdir=DIR install libs in DIR [PREFIX/lib]
70 --shlibdir=DIR install shared libs in DIR [PREFIX/lib]
71 --incdir=DIR install includes in DIR [PREFIX/include]
72 --mandir=DIR install man page in DIR [PREFIX/share/man]
73
74 Configuration options:
75 --disable-static do not build static libraries [no]
76 --enable-shared build shared libraries [no]
77 --enable-gpl allow use of GPL code, the resulting libs
78 and binaries will be under GPL [no]
79 --enable-version3 upgrade (L)GPL to version 3 [no]
80 --enable-nonfree allow use of nonfree code, the resulting libs
81 and binaries will be unredistributable [no]
82 --disable-doc do not build documentation
83 --disable-ffmpeg disable ffmpeg build
84 --disable-ffplay disable ffplay build
85 --disable-ffprobe disable ffprobe build
86 --disable-ffserver disable ffserver build
87 --disable-avdevice disable libavdevice build
88 --disable-avcodec disable libavcodec build
89 --disable-avformat disable libavformat build
90 --disable-swscale disable libswscale build
91 --enable-postproc enable GPLed postprocessing support [no]
92 --enable-avfilter video filter support [no]
93 --enable-avfilter-lavf video filters dependent on avformat [no]
94 --enable-beosthreads use BeOS threads [no]
95 --enable-os2threads use OS/2 threads [no]
96 --enable-pthreads use pthreads [no]
97 --enable-w32threads use Win32 threads [no]
98 --enable-x11grab enable X11 grabbing [no]
99 --disable-network disable network support [no]
100 --disable-mpegaudio-hp faster (but less accurate) MPEG audio decoding [no]
101 --enable-gray enable full grayscale support (slower color)
102 --disable-swscale-alpha disable alpha channel support in swscale
103 --disable-fastdiv disable table-based division
104 --enable-small optimize for size instead of speed
105 --disable-aandct disable AAN DCT code
106 --disable-dct disable DCT code
107 --disable-fft disable FFT code
108 --disable-golomb disable Golomb code
109 --disable-lpc disable LPC code
110 --disable-mdct disable MDCT code
111 --disable-rdft disable RDFT code
112 --disable-vaapi disable VAAPI code
113 --disable-vdpau disable VDPAU code
114 --disable-dxva2 disable DXVA2 code
115 --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
116 --enable-hardcoded-tables use hardcoded tables instead of runtime generation
117 --enable-memalign-hack emulate memalign, interferes with memory debuggers
118 --enable-beos-netserver enable BeOS netserver
119 --disable-everything disable all components listed below
120 --disable-encoder=NAME disable encoder NAME
121 --enable-encoder=NAME enable encoder NAME
122 --disable-encoders disable all encoders
123 --disable-decoder=NAME disable decoder NAME
124 --enable-decoder=NAME enable decoder NAME
125 --disable-decoders disable all decoders
126 --disable-hwaccel=NAME disable hwaccel NAME
127 --enable-hwaccel=NAME enable hwaccel NAME
128 --disable-hwaccels disable all hwaccels
129 --disable-muxer=NAME disable muxer NAME
130 --enable-muxer=NAME enable muxer NAME
131 --disable-muxers disable all muxers
132 --disable-demuxer=NAME disable demuxer NAME
133 --enable-demuxer=NAME enable demuxer NAME
134 --disable-demuxers disable all demuxers
135 --enable-parser=NAME enable parser NAME
136 --disable-parser=NAME disable parser NAME
137 --disable-parsers disable all parsers
138 --enable-bsf=NAME enable bitstream filter NAME
139 --disable-bsf=NAME disable bitstream filter NAME
140 --disable-bsfs disable all bitstream filters
141 --enable-protocol=NAME enable protocol NAME
142 --disable-protocol=NAME disable protocol NAME
143 --disable-protocols disable all protocols
144 --disable-indev=NAME disable input device NAME
145 --disable-outdev=NAME disable output device NAME
146 --disable-indevs disable input devices
147 --disable-outdevs disable output devices
148 --disable-devices disable all devices
149 --enable-filter=NAME enable filter NAME
150 --disable-filter=NAME disable filter NAME
151 --disable-filters disable all filters
152 --list-decoders show all available decoders
153 --list-encoders show all available encoders
154 --list-hwaccels show all available hardware accelerators
155 --list-muxers show all available muxers
156 --list-demuxers show all available demuxers
157 --list-parsers show all available parsers
158 --list-protocols show all available protocols
159 --list-bsfs show all available bitstream filters
160 --list-indevs show all available input devices
161 --list-outdevs show all available output devices
162 --list-filters show all available filters
163
164 External library support:
165 --enable-avisynth enable reading of AVISynth script files [no]
166 --enable-bzlib enable bzlib [autodetect]
167 --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
168 --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
169 --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
170 and libraw1394 [no]
171 --enable-libdirac enable Dirac support via libdirac [no]
172 --enable-libfaac enable FAAC support via libfaac [no]
173 --enable-libfaad enable FAAD support via libfaad [no]
174 --enable-libfaadbin open libfaad.so.0 at runtime [no]
175 --enable-libgsm enable GSM support via libgsm [no]
176 --enable-libmp3lame enable MP3 encoding via libmp3lame [no]
177 --enable-libnut enable NUT (de)muxing via libnut,
178 native (de)muxer exists [no]
179 --enable-libopenjpeg enable JPEG 2000 decoding via OpenJPEG [no]
180 --enable-librtmp enable RTMP[E] support via librtmp [no]
181 --enable-libschroedinger enable Dirac support via libschroedinger [no]
182 --enable-libspeex enable Speex decoding via libspeex [no]
183 --enable-libtheora enable Theora encoding via libtheora [no]
184 --enable-libvorbis enable Vorbis encoding via libvorbis,
185 native implementation exists [no]
186 --enable-libx264 enable H.264 encoding via x264 [no]
187 --enable-libxvid enable Xvid encoding via xvidcore,
188 native MPEG-4/Xvid encoder exists [no]
189 --enable-mlib enable Sun medialib [no]
190 --enable-zlib enable zlib [autodetect]
191
192 Advanced options (experts only):
193 --source-path=PATH path to source code [$source_path]
194 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]
195 --enable-cross-compile assume a cross-compiler is used
196 --sysroot=PATH root of cross-build tree
197 --sysinclude=PATH location of cross-build system headers
198 --target-os=OS compiler targets OS [$target_os]
199 --target-exec=CMD command to run executables on target
200 --target-path=DIR path to view of build directory on target
201 --nm=NM use nm tool
202 --as=AS use assembler AS [$as_default]
203 --cc=CC use C compiler CC [$cc_default]
204 --ld=LD use linker LD
205 --host-cc=HOSTCC use host C compiler HOSTCC
206 --host-cflags=HCFLAGS use HCFLAGS when compiling for host
207 --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host
208 --host-libs=HLIBS use libs HLIBS when linking for host
209 --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]
210 --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
211 --extra-libs=ELIBS add ELIBS [$ELIBS]
212 --extra-version=STRING version string suffix []
213 --build-suffix=SUFFIX library name suffix []
214 --arch=ARCH select architecture [$arch]
215 --cpu=CPU select the minimum required CPU (affects
216 instruction selection, may crash on older CPUs)
217 --enable-powerpc-perf enable performance report on PPC
218 (requires enabling PMC)
219 --disable-asm disable all assembler optimizations
220 --disable-altivec disable AltiVec optimizations
221 --disable-amd3dnow disable 3DNow! optimizations
222 --disable-amd3dnowext disable 3DNow! extended optimizations
223 --disable-mmx disable MMX optimizations
224 --disable-mmx2 disable MMX2 optimizations
225 --disable-sse disable SSE optimizations
226 --disable-ssse3 disable SSSE3 optimizations
227 --disable-armv5te disable armv5te optimizations
228 --disable-armv6 disable armv6 optimizations
229 --disable-armv6t2 disable armv6t2 optimizations
230 --disable-armvfp disable ARM VFP optimizations
231 --disable-iwmmxt disable iwmmxt optimizations
232 --disable-mmi disable MMI optimizations
233 --disable-neon disable neon optimizations
234 --disable-vis disable VIS optimizations
235 --disable-yasm disable use of yasm assembler
236 --enable-pic build position-independent code
237 --malloc-prefix=PFX prefix malloc and related names with PFX
238 --enable-sram allow use of on-chip SRAM
239
240 Developer options (useful when working on FFmpeg itself):
241 --disable-debug disable debugging symbols
242 --enable-debug=LEVEL set the debug level [$debuglevel]
243 --enable-gprof enable profiling with gprof [$gprof]
244 --disable-optimizations disable compiler optimizations
245 --enable-extra-warnings enable more compiler warnings
246 --disable-stripping disable stripping of executables and shared libraries
247 --samples=PATH location of test samples for FATE
248
249 NOTE: Object files are built at the place where configure is launched.
250 EOF
251 exit 0
252 }
253
254 log(){
255 echo "$@" >> $logfile
256 }
257
258 log_file(){
259 log BEGIN $1
260 pr -n -t $1 >> $logfile
261 log END $1
262 }
263
264 echolog(){
265 log "$@"
266 echo "$@"
267 }
268
269 die(){
270 echolog "$@"
271 cat <<EOF
272
273 If you think configure made a mistake, make sure you are using the latest
274 version from SVN. If the latest version fails, report the problem to the
275 ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
276 EOF
277 if disabled logging; then
278 cat <<EOF
279 Rerun configure with logging enabled (do not use --disable-logging), and
280 include the log this produces with your report.
281 EOF
282 else
283 cat <<EOF
284 Include the log file "$logfile" produced by configure as this will help
285 solving the problem.
286 EOF
287 fi
288 exit 1
289 }
290
291 # Avoid locale weirdness, besides we really just want to translate ASCII.
292 toupper(){
293 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
294 }
295
296 tolower(){
297 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
298 }
299
300 c_escape(){
301 echo "$*" | sed 's/["\\]/\\\0/g'
302 }
303
304 sh_quote(){
305 v=$(echo "$1" | sed "s/'/'\\\\''/g")
306 test "$v" = "${v#*[ |&;<>()$\`\\\"\'*?\[\]#~=%]}" || v="'$v'"
307 echo "$v"
308 }
309
310 filter(){
311 pat=$1
312 shift
313 for v; do
314 eval "case $v in $pat) echo $v ;; esac"
315 done
316 }
317
318 map(){
319 m=$1
320 shift
321 for v; do eval $m; done
322 }
323
324 set_all(){
325 value=$1
326 shift
327 for var in $*; do
328 eval $var=$value
329 done
330 }
331
332 set_weak(){
333 value=$1
334 shift
335 for var; do
336 eval : \${$var:=$value}
337 done
338 }
339
340 pushvar(){
341 for var in $*; do
342 eval level=\${${var}_level:=0}
343 eval ${var}_${level}="\$$var"
344 eval ${var}_level=$(($level+1))
345 done
346 }
347
348 popvar(){
349 for var in $*; do
350 eval level=\${${var}_level:-0}
351 test $level = 0 && continue
352 eval level=$(($level-1))
353 eval $var="\${${var}_${level}}"
354 eval ${var}_level=$level
355 eval unset ${var}_${level}
356 done
357 }
358
359 enable(){
360 set_all yes $*
361 }
362
363 disable(){
364 set_all no $*
365 }
366
367 enable_weak(){
368 set_weak yes $*
369 }
370
371 disable_weak(){
372 set_weak no $*
373 }
374
375 enable_safe(){
376 for var; do
377 enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
378 done
379 }
380
381 disable_safe(){
382 for var; do
383 disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
384 done
385 }
386
387 do_enable_deep(){
388 for var; do
389 enabled $var && continue
390 eval sel="\$${var}_select"
391 eval sgs="\$${var}_suggest"
392 pushvar var sgs
393 enable_deep $sel
394 popvar sgs
395 enable_deep_weak $sgs
396 popvar var
397 done
398 }
399
400 enable_deep(){
401 do_enable_deep $*
402 enable $*
403 }
404
405 enable_deep_weak(){
406 do_enable_deep $*
407 enable_weak $*
408 }
409
410 enabled(){
411 test "${1#!}" = "$1" && op== || op=!=
412 eval test "x\$${1#!}" $op "xyes"
413 }
414
415 disabled(){
416 test "${1#!}" = "$1" && op== || op=!=
417 eval test "x\$${1#!}" $op "xno"
418 }
419
420 enabled_all(){
421 for opt; do
422 enabled $opt || return 1
423 done
424 }
425
426 disabled_all(){
427 for opt; do
428 disabled $opt || return 1
429 done
430 }
431
432 enabled_any(){
433 for opt; do
434 enabled $opt && return 0
435 done
436 }
437
438 disabled_any(){
439 for opt; do
440 disabled $opt && return 0
441 done
442 return 1
443 }
444
445 set_default(){
446 for opt; do
447 eval : \${$opt:=\$${opt}_default}
448 done
449 }
450
451 is_in(){
452 value=$1
453 shift
454 for var in $*; do
455 [ $var = $value ] && return 0
456 done
457 return 1
458 }
459
460 check_deps(){
461 for cfg; do
462 cfg="${cfg#!}"
463 enabled ${cfg}_checking && die "Circular dependency for $cfg."
464 disabled ${cfg}_checking && continue
465 enable ${cfg}_checking
466
467 eval dep_all="\$${cfg}_deps"
468 eval dep_any="\$${cfg}_deps_any"
469 eval dep_sel="\$${cfg}_select"
470 eval dep_sgs="\$${cfg}_suggest"
471 eval dep_ifa="\$${cfg}_if"
472 eval dep_ifn="\$${cfg}_if_any"
473
474 pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
475 check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
476 popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
477
478 [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
479 [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
480 enabled_all $dep_all || disable $cfg
481 enabled_any $dep_any || disable $cfg
482 disabled_any $dep_sel && disable $cfg
483
484 if enabled $cfg; then
485 eval dep_extralibs="\$${cfg}_extralibs"
486 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
487 enable_deep $dep_sel
488 enable_deep_weak $dep_sgs
489 fi
490
491 disable ${cfg}_checking
492 done
493 }
494
495 print_config(){
496 pfx=$1
497 header=$2
498 makefile=$3
499 shift 3
500 for cfg; do
501 ucname="$(toupper $cfg)"
502 if enabled $cfg; then
503 echo "#define ${pfx}${ucname} 1" >> $header
504 echo "${pfx}${ucname}=yes" >> $makefile
505 else
506 echo "#define ${pfx}${ucname} 0" >> $header
507 echo "!${pfx}${ucname}=yes" >> $makefile
508 fi
509 done
510 }
511
512 flags_saved(){
513 (: ${SAVE_CFLAGS?}) 2> /dev/null
514 }
515
516 save_flags(){
517 flags_saved && return
518 SAVE_CFLAGS="$CFLAGS"
519 SAVE_LDFLAGS="$LDFLAGS"
520 SAVE_extralibs="$extralibs"
521 }
522
523 restore_flags(){
524 flags_saved || return
525 CFLAGS="$SAVE_CFLAGS"
526 LDFLAGS="$SAVE_LDFLAGS"
527 extralibs="$SAVE_extralibs"
528 unset SAVE_CFLAGS
529 unset SAVE_LDFLAGS
530 unset SAVE_extralibs
531 }
532
533 temp_cflags(){
534 save_flags
535 CFLAGS="$CFLAGS $*"
536 }
537
538 temp_ldflags(){
539 save_flags
540 LDFLAGS="$LDFLAGS $*"
541 }
542
543 temp_extralibs(){
544 save_flags
545 extralibs="$extralibs $*"
546 }
547
548 append(){
549 var=$1
550 shift
551 flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
552 eval "$var=\"\$$var $*\""
553 }
554
555 add_cppflags(){
556 append CPPFLAGS $($filter_cppflags "$@")
557 }
558
559 add_cflags(){
560 append CFLAGS $($filter_cflags "$@")
561 }
562
563 add_asflags(){
564 append ASFLAGS $($filter_asflags "$@")
565 }
566
567 add_ldflags(){
568 append LDFLAGS "$@"
569 }
570
571 add_extralibs(){
572 append extralibs "$@"
573 }
574
575 check_cmd(){
576 log "$@"
577 "$@" >> $logfile 2>&1
578 }
579
580 check_cc(){
581 log check_cc "$@"
582 cat > $TMPC
583 log_file $TMPC
584 check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC
585 }
586
587 check_cpp(){
588 log check_cpp "$@"
589 cat > $TMPC
590 log_file $TMPC
591 check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC
592 }
593
594 check_as(){
595 log check_as "$@"
596 cat > $TMPC
597 log_file $TMPC
598 check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC
599 }
600
601 check_asm(){
602 log check_asm "$@"
603 name="$1"
604 code="$2"
605 shift 2
606 disable $name
607 check_as "$@" <<EOF && enable $name
608 void foo(void){ __asm__ volatile($code); }
609 EOF
610 }
611
612 check_yasm(){
613 log check_yasm "$@"
614 echo "$1" > $TMPS
615 log_file $TMPS
616 shift 1
617 check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
618 }
619
620 check_ld(){
621 log check_ld "$@"
622 flags=''
623 libs=''
624 for f; do
625 test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
626 done
627 check_cc $($filter_cflags $flags) || return
628 check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
629 }
630
631 check_cppflags(){
632 log check_cppflags "$@"
633 set -- $($filter_cppflags "$@")
634 check_cc "$@" <<EOF && append CPPFLAGS "$@"
635 int x;
636 EOF
637 }
638
639 check_cflags(){
640 log check_cflags "$@"
641 set -- $($filter_cflags "$@")
642 check_cc "$@" <<EOF && append CFLAGS "$@"
643 int x;
644 EOF
645 }
646
647 test_ldflags(){
648 log test_ldflags "$@"
649 check_ld "$@" <<EOF
650 int main(void){ return 0; }
651 EOF
652 }
653
654 check_ldflags(){
655 log check_ldflags "$@"
656 test_ldflags "$@" && add_ldflags "$@"
657 }
658
659 check_header(){
660 log check_header "$@"
661 header=$1
662 shift
663 disable_safe $header
664 check_cpp "$@" <<EOF && enable_safe $header
665 #include <$header>
666 int x;
667 EOF
668 }
669
670 check_func(){
671 log check_func "$@"
672 func=$1
673 shift
674 disable $func
675 check_ld "$@" <<EOF && enable $func
676 extern int $func();
677 int main(void){ $func(); }
678 EOF
679 }
680
681 check_mathfunc(){
682 log check_mathfunc "$@"
683 func=$1
684 shift
685 disable $func
686 check_ld "$@" <<EOF && enable $func
687 #include <math.h>
688 float foo(float f) { return $func(f); }
689 int main(void){ return 0; }
690 EOF
691 }
692
693 check_func_headers(){
694 log check_func_headers "$@"
695 headers=$1
696 func=$2
697 shift 2
698 disable $func
699 incs=""
700 for hdr in $headers; do
701 incs="$incs
702 #include <$hdr>"
703 done
704 check_ld "$@" <<EOF && enable $func && enable_safe $headers
705 $incs
706 int main(int argc, char **argv){
707 return (long) $func;
708 }
709 EOF
710 }
711
712 check_cpp_condition(){
713 log check_cpp_condition "$@"
714 header=$1
715 condition=$2
716 shift 2
717 check_cpp $($filter_cppflags "$@") <<EOF
718 #include <$header>
719 #if !($condition)
720 #error "unsatisfied condition: $condition"
721 #endif
722 EOF
723 }
724
725 check_lib(){
726 log check_lib "$@"
727 header="$1"
728 func="$2"
729 shift 2
730 temp_extralibs "$@"
731 check_header $header && check_func $func && add_extralibs "$@"
732 err=$?
733 restore_flags
734 return $err
735 }
736
737 check_lib2(){
738 log check_lib2 "$@"
739 headers="$1"
740 func="$2"
741 shift 2
742 check_func_headers "$headers" $func "$@" && add_extralibs "$@"
743 }
744
745 check_exec(){
746 check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
747 }
748
749 check_exec_crash(){
750 code=$(cat)
751
752 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
753 # are safe but may not be available everywhere. Thus we use
754 # raise(SIGTERM) instead. The check is run in a subshell so we
755 # can redirect the "Terminated" message from the shell. SIGBUS
756 # is not defined by standard C so it is used conditionally.
757
758 (check_exec "$@") >> $logfile 2>&1 <<EOF
759 #include <signal.h>
760 static void sighandler(int sig){
761 raise(SIGTERM);
762 }
763 int main(void){
764 signal(SIGILL, sighandler);
765 signal(SIGFPE, sighandler);
766 signal(SIGSEGV, sighandler);
767 #ifdef SIGBUS
768 signal(SIGBUS, sighandler);
769 #endif
770 { $code }
771 }
772 EOF
773 }
774
775 check_type(){
776 log check_type "$@"
777 headers=$1
778 type=$2
779 shift 2
780 disable_safe "$type"
781 incs=""
782 for hdr in $headers; do
783 incs="$incs
784 #include <$hdr>"
785 done
786 check_cc "$@" <<EOF && enable_safe "$type"
787 $incs
788 $type v;
789 EOF
790 }
791
792 check_struct(){
793 log check_type "$@"
794 headers=$1
795 struct=$2
796 member=$3
797 shift 3
798 disable_safe "${struct}_${member}"
799 incs=""
800 for hdr in $headers; do
801 incs="$incs
802 #include <$hdr>"
803 done
804 check_cc "$@" <<EOF && enable_safe "${struct}_${member}"
805 $incs
806 const void *p = &(($struct *)0)->$member;
807 EOF
808 }
809
810 require(){
811 name="$1"
812 header="$2"
813 func="$3"
814 shift 3
815 check_lib $header $func "$@" || die "ERROR: $name not found"
816 }
817
818 require2(){
819 name="$1"
820 headers="$2"
821 func="$3"
822 shift 3
823 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
824 }
825
826 check_foo_config(){
827 cfg=$1
828 pkg=$2
829 header=$3
830 func=$4
831 shift 4
832 disable $cfg
833 check_cmd ${pkg}-config --version
834 err=$?
835 if test "$err" = 0; then
836 temp_cflags $(${pkg}-config --cflags)
837 temp_extralibs $(${pkg}-config --libs)
838 check_lib "$@" $header $func && enable $cfg
839 fi
840 return $err
841 }
842
843 check_host_cc(){
844 log check_host_cc "$@"
845 cat > $TMPC
846 log_file $TMPC
847 check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC
848 }
849
850 check_host_cflags(){
851 log check_host_cflags "$@"
852 check_host_cc "$@" <<EOF && append host_cflags "$@"
853 int x;
854 EOF
855 }
856
857 apply(){
858 file=$1
859 shift
860 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
861 }
862
863 cp_if_changed(){
864 cmp -s "$1" "$2" &&
865 echo "$2 is unchanged" ||
866 cp -f "$1" "$2"
867 }
868
869 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
870 # system-dependent things.
871
872 COMPONENT_LIST="
873 bsfs
874 decoders
875 demuxers
876 encoders
877 filters
878 hwaccels
879 indevs
880 muxers
881 outdevs
882 parsers
883 protocols
884 "
885
886 CONFIG_LIST="
887 $COMPONENT_LIST
888 aandct
889 avcodec
890 avdevice
891 avfilter
892 avfilter_lavf
893 avformat
894 avisynth
895 beos_netserver
896 bzlib
897 dct
898 doc
899 dwt
900 dxva2
901 fastdiv
902 ffmpeg
903 ffplay
904 ffprobe
905 ffserver
906 fft
907 golomb
908 gpl
909 gprof
910 gray
911 h264dsp
912 hardcoded_tables
913 libdc1394
914 libdirac
915 libfaac
916 libfaad
917 libfaadbin
918 libgsm
919 libmp3lame
920 libnut
921 libopencore_amrnb
922 libopencore_amrwb
923 libopenjpeg
924 librtmp
925 libschroedinger
926 libspeex
927 libtheora
928 libvorbis
929 libx264
930 libxvid
931 lpc
932 lsp
933 mdct
934 memalign_hack
935 mlib
936 mpegaudio_hp
937 network
938 nonfree
939 pic
940 postproc
941 powerpc_perf
942 rdft
943 runtime_cpudetect
944 shared
945 small
946 sram
947 static
948 swscale
949 swscale_alpha
950 vaapi
951 vdpau
952 version3
953 x11grab
954 zlib
955 "
956
957 THREADS_LIST='
958 beosthreads
959 os2threads
960 pthreads
961 w32threads
962 '
963
964 ARCH_LIST='
965 alpha
966 arm
967 avr32
968 avr32_ap
969 avr32_uc
970 bfin
971 ia64
972 m68k
973 mips
974 mips64
975 parisc
976 ppc
977 ppc64
978 s390
979 sh4
980 sparc
981 sparc64
982 tomi
983 x86
984 x86_32
985 x86_64
986 '
987
988 ARCH_EXT_LIST='
989 altivec
990 amd3dnow
991 amd3dnowext
992 armv5te
993 armv6
994 armv6t2
995 armvfp
996 iwmmxt
997 mmi
998 mmx
999 mmx2
1000 neon
1001 ppc4xx
1002 sse
1003 ssse3
1004 vis
1005 '
1006
1007 HAVE_LIST_PUB='
1008 bigendian
1009 '
1010
1011 HAVE_LIST="
1012 $ARCH_EXT_LIST
1013 $HAVE_LIST_PUB
1014 $THREADS_LIST
1015 alsa_asoundlib_h
1016 altivec_h
1017 arpa_inet_h
1018 attribute_may_alias
1019 attribute_packed
1020 bswap
1021 closesocket
1022 cmov
1023 conio_h
1024 dcbzl
1025 dev_bktr_ioctl_bt848_h
1026 dev_bktr_ioctl_meteor_h
1027 dev_ic_bt8xx_h
1028 dev_video_meteor_ioctl_meteor_h
1029 dev_video_bktr_ioctl_bt848_h
1030 dlfcn_h
1031 dlopen
1032 dos_paths
1033 ebp_available
1034 ebx_available
1035 exp2
1036 exp2f
1037 fast_64bit
1038 fast_clz
1039 fast_cmov
1040 fast_unaligned
1041 fork
1042 getaddrinfo
1043 gethrtime
1044 GetProcessMemoryInfo
1045 GetProcessTimes
1046 getrusage
1047 struct_rusage_ru_maxrss
1048 inet_aton
1049 inline_asm
1050 isatty
1051 ldbrx
1052 libdc1394_1
1053 libdc1394_2
1054 llrint
1055 local_aligned_16
1056 local_aligned_8
1057 log2
1058 log2f
1059 loongson
1060 lrint
1061 lrintf
1062 lzo1x_999_compress
1063 machine_ioctl_bt848_h
1064 machine_ioctl_meteor_h
1065 malloc_h
1066 memalign
1067 mkstemp
1068 pld
1069 posix_memalign
1070 round
1071 roundf
1072 sdl
1073 sdl_video_size
1074 setmode
1075 socklen_t
1076 soundcard_h
1077 poll_h
1078 setrlimit
1079 strerror_r
1080 struct_addrinfo
1081 struct_ipv6_mreq
1082 struct_sockaddr_in6
1083 struct_sockaddr_sa_len
1084 struct_sockaddr_storage
1085 sys_mman_h
1086 sys_resource_h
1087 sys_select_h
1088 sys_soundcard_h
1089 sys_videoio_h
1090 ten_operands
1091 termios_h
1092 threads
1093 truncf
1094 vfp_args
1095 VirtualAlloc
1096 winsock2_h
1097 xform_asm
1098 yasm
1099 "
1100
1101 # options emitted with CONFIG_ prefix but not available on command line
1102 CONFIG_EXTRA="
1103 avutil
1104 gplv3
1105 lgplv3
1106 "
1107
1108 CMDLINE_SELECT="
1109 $ARCH_EXT_LIST
1110 $CONFIG_LIST
1111 $THREADS_LIST
1112 asm
1113 cross_compile
1114 debug
1115 extra_warnings
1116 logging
1117 optimizations
1118 stripping
1119 yasm
1120 "
1121
1122 PATHS_LIST='
1123 bindir
1124 datadir
1125 incdir
1126 libdir
1127 mandir
1128 prefix
1129 shlibdir
1130 '
1131
1132 CMDLINE_SET="
1133 $PATHS_LIST
1134 arch
1135 as
1136 build_suffix
1137 cc
1138 cpu
1139 cross_prefix
1140 dep_cc
1141 extra_version
1142 host_cc
1143 host_cflags
1144 host_ldflags
1145 host_libs
1146 host_os
1147 ld
1148 logfile
1149 malloc_prefix
1150 nm
1151 samples
1152 source_path
1153 strip
1154 sysinclude
1155 sysroot
1156 target_exec
1157 target_os
1158 target_path
1159 "
1160
1161 CMDLINE_APPEND="
1162 extra_cflags
1163 "
1164
1165 # code dependency declarations
1166
1167 # architecture extensions
1168
1169 armv5te_deps="arm"
1170 armv6_deps="arm"
1171 armv6t2_deps="arm"
1172 armvfp_deps="arm"
1173 iwmmxt_deps="arm"
1174 neon_deps="arm"
1175
1176 mmi_deps="mips"
1177
1178 altivec_deps="ppc"
1179 ppc4xx_deps="ppc"
1180
1181 vis_deps="sparc"
1182
1183 x86_64_suggest="cmov fast_cmov"
1184 amd3dnow_deps="mmx"
1185 amd3dnowext_deps="amd3dnow"
1186 mmx_deps="x86"
1187 mmx2_deps="mmx"
1188 sse_deps="mmx"
1189 ssse3_deps="sse"
1190
1191 fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1192 fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
1193 fast_unaligned_if_any="armv6 ppc x86"
1194
1195 need_memalign="altivec neon sse"
1196 inline_asm_deps="!tms470"
1197
1198 # subsystems
1199 mdct_select="fft"
1200 rdft_select="fft"
1201
1202 # decoders / encoders / hardware accelerators
1203 aac_decoder_select="mdct rdft aac_parser"
1204 aac_encoder_select="mdct"
1205 ac3_decoder_select="mdct ac3_parser"
1206 alac_encoder_select="lpc"
1207 amrnb_decoder_select="lsp"
1208 atrac1_decoder_select="mdct"
1209 atrac3_decoder_select="mdct"
1210 binkaudio_dct_decoder_select="mdct rdft dct"
1211 binkaudio_rdft_decoder_select="mdct rdft"
1212 cavs_decoder_select="golomb"
1213 cook_decoder_select="mdct"
1214 cscd_decoder_suggest="zlib"
1215 dca_decoder_select="mdct"
1216 dnxhd_encoder_select="aandct"
1217 dxa_decoder_select="zlib"
1218 eac3_decoder_select="ac3_decoder"
1219 eamad_decoder_select="aandct"
1220 eatgq_decoder_select="aandct"
1221 eatqi_decoder_select="aandct"
1222 ffv1_decoder_select="golomb"
1223 flac_decoder_select="golomb"
1224 flac_encoder_select="golomb lpc"
1225 flashsv_decoder_select="zlib"
1226 flashsv_encoder_select="zlib"
1227 flv_decoder_select="h263_decoder"
1228 flv_encoder_select="h263_encoder"
1229 h261_encoder_select="aandct"
1230 h263_decoder_select="h263_parser"
1231 h263_encoder_select="aandct"
1232 h263_vaapi_hwaccel_deps="va_va_h"
1233 h263_vaapi_hwaccel_select="vaapi h263_decoder"
1234 h263i_decoder_select="h263_decoder"
1235 h263p_encoder_select="h263_encoder"
1236 h264_decoder_select="golomb h264dsp"
1237 h264_dxva2_hwaccel_deps="dxva2api_h"
1238 h264_dxva2_hwaccel_select="dxva2 h264_decoder"
1239 h264_vaapi_hwaccel_deps="va_va_h"
1240 h264_vaapi_hwaccel_select="vaapi"
1241 h264_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1242 h264_vdpau_decoder_select="vdpau h264_decoder"
1243 imc_decoder_select="fft mdct"
1244 jpegls_decoder_select="golomb"
1245 jpegls_encoder_select="golomb"
1246 ljpeg_encoder_select="aandct"
1247 loco_decoder_select="golomb"
1248 mjpeg_encoder_select="aandct"
1249 mlp_decoder_select="mlp_parser"
1250 mpeg1video_encoder_select="aandct"
1251 mpeg2video_encoder_select="aandct"
1252 mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1253 mpeg4_encoder_select="h263_encoder"
1254 mpeg_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1255 mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
1256 mpeg1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1257 mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
1258 mpeg2_vaapi_hwaccel_deps="va_va_h"
1259 mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
1260 mpeg4_vaapi_hwaccel_deps="va_va_h"
1261 mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
1262 mpeg4_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1263 mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
1264 mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1265 mpeg_xvmc_decoder_select="mpegvideo_decoder"
1266 msmpeg4v1_decoder_select="h263_decoder"
1267 msmpeg4v1_encoder_select="h263_encoder"
1268 msmpeg4v2_decoder_select="h263_decoder"
1269 msmpeg4v2_encoder_select="h263_encoder"
1270 msmpeg4v3_decoder_select="h263_decoder"
1271 msmpeg4v3_encoder_select="h263_encoder"
1272 nellymoser_decoder_select="mdct"
1273 nellymoser_encoder_select="mdct"
1274 png_decoder_select="zlib"
1275 png_encoder_select="zlib"
1276 qcelp_decoder_select="lsp"
1277 qdm2_decoder_select="mdct rdft"
1278 rv10_decoder_select="h263_decoder"
1279 rv10_encoder_select="h263_encoder"
1280 rv20_decoder_select="h263_decoder"
1281 rv20_encoder_select="h263_encoder"
1282 rv30_decoder_select="golomb h264dsp"
1283 rv40_decoder_select="golomb h264dsp"
1284 shorten_decoder_select="golomb"
1285 sipr_decoder_select="lsp"
1286 snow_decoder_select="dwt"
1287 snow_encoder_select="aandct dwt"
1288 sonic_decoder_select="golomb"
1289 sonic_encoder_select="golomb"
1290 sonic_ls_encoder_select="golomb"
1291 svq1_encoder_select="aandct"
1292 svq3_decoder_select="golomb h264dsp"
1293 svq3_decoder_suggest="zlib"
1294 theora_decoder_select="vp3_decoder"
1295 tiff_decoder_suggest="zlib"
1296 tiff_encoder_suggest="zlib"
1297 truehd_decoder_select="mlp_decoder"
1298 tscc_decoder_select="zlib"
1299 twinvq_decoder_select="mdct lsp"
1300 vc1_decoder_select="h263_decoder"
1301 vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
1302 vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
1303 vc1_vaapi_hwaccel_deps="va_va_h"
1304 vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
1305 vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1306 vc1_vdpau_decoder_select="vdpau vc1_decoder"
1307 vorbis_decoder_select="mdct"
1308 vorbis_encoder_select="mdct"
1309 vp6a_decoder_select="vp6_decoder"
1310 vp6f_decoder_select="vp6_decoder"
1311 wmapro_decoder_select="mdct"
1312 wmav1_decoder_select="mdct"
1313 wmav1_encoder_select="mdct"
1314 wmav2_decoder_select="mdct"
1315 wmav2_encoder_select="mdct"
1316 wmavoice_decoder_select="lsp"
1317 wmv1_decoder_select="h263_decoder"
1318 wmv1_encoder_select="h263_encoder"
1319 wmv2_decoder_select="h263_decoder"
1320 wmv2_encoder_select="h263_encoder"
1321 wmv3_decoder_select="vc1_decoder"
1322 wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
1323 wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1324 wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1325 zlib_decoder_select="zlib"
1326 zlib_encoder_select="zlib"
1327 zmbv_decoder_select="zlib"
1328 zmbv_encoder_select="zlib"
1329
1330 # parsers
1331 h264_parser_select="golomb h264dsp"
1332
1333 # bitstream_filters
1334 aac_adtstoasc_bsf_select="aac_parser"
1335
1336 # external libraries
1337 libdirac_decoder_deps="libdirac !libschroedinger"
1338 libdirac_encoder_deps="libdirac"
1339 libfaac_encoder_deps="libfaac"
1340 libfaad_decoder_deps="libfaad"
1341 libfaadbin_decoder_extralibs='$ldl'
1342 libgsm_decoder_deps="libgsm"
1343 libgsm_encoder_deps="libgsm"
1344 libgsm_ms_decoder_deps="libgsm"
1345 libgsm_ms_encoder_deps="libgsm"
1346 libmp3lame_encoder_deps="libmp3lame"
1347 libopencore_amrnb_decoder_deps="libopencore_amrnb"
1348 libopencore_amrnb_encoder_deps="libopencore_amrnb"
1349 libopencore_amrwb_decoder_deps="libopencore_amrwb"
1350 libopenjpeg_decoder_deps="libopenjpeg"
1351 libschroedinger_decoder_deps="libschroedinger"
1352 libschroedinger_encoder_deps="libschroedinger"
1353 libspeex_decoder_deps="libspeex"
1354 libtheora_encoder_deps="libtheora"
1355 libvorbis_encoder_deps="libvorbis"
1356 libx264_encoder_deps="libx264"
1357 libxvid_encoder_deps="libxvid"
1358
1359 # demuxers / muxers
1360 ac3_demuxer_deps="ac3_parser"
1361 asf_stream_muxer_select="asf_muxer"
1362 avisynth_demuxer_deps="avisynth"
1363 dirac_demuxer_deps="dirac_parser"
1364 eac3_demuxer_select="ac3_parser"
1365 ipod_muxer_select="mov_muxer"
1366 libnut_demuxer_deps="libnut"
1367 libnut_muxer_deps="libnut"
1368 matroska_audio_muxer_select="matroska_muxer"
1369 matroska_demuxer_suggest="zlib bzlib"
1370 mov_demuxer_suggest="zlib"
1371 mp3_demuxer_deps="mpegaudio_parser"
1372 mp4_muxer_select="mov_muxer"
1373 mpegtsraw_demuxer_select="mpegts_demuxer"
1374 mxf_d10_muxer_select="mxf_muxer"
1375 ogg_demuxer_select="golomb"
1376 psp_muxer_select="mov_muxer"
1377 rtsp_demuxer_deps="sdp_demuxer"
1378 rtsp_muxer_deps="sdp_demuxer"
1379 rtsp_muxer_select="rtp_muxer"
1380 sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
1381 sdp_demuxer_select="asf_demuxer rm_demuxer"
1382 spdif_muxer_select="aac_parser"
1383 tg2_muxer_select="mov_muxer"
1384 tgp_muxer_select="mov_muxer"
1385 w64_demuxer_deps="wav_demuxer"
1386
1387 # indevs / outdevs
1388 alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
1389 alsa_indev_extralibs="-lasound"
1390 alsa_outdev_deps="alsa_asoundlib_h"
1391 alsa_outdev_extralibs="-lasound"
1392 audio_beos_indev_deps="audio_beos"
1393 audio_beos_indev_extralibs="-lmedia -lbe"
1394 audio_beos_outdev_deps="audio_beos"
1395 audio_beos_outdev_extralibs="-lmedia -lbe"
1396 bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
1397 dv1394_indev_deps="dv1394 dv_demuxer"
1398 jack_indev_deps="jack_jack_h"
1399 jack_indev_extralibs="-ljack"
1400 libdc1394_indev_deps="libdc1394"
1401 oss_indev_deps_any="soundcard_h sys_soundcard_h"
1402 oss_outdev_deps_any="soundcard_h sys_soundcard_h"
1403 v4l_indev_deps="linux_videodev_h"
1404 v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
1405 vfwcap_indev_deps="capCreateCaptureWindow"
1406 vfwcap_indev_extralibs="-lavicap32"
1407 x11_grab_device_indev_deps="x11grab XShmCreateImage"
1408 x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
1409
1410 # protocols
1411 gopher_protocol_deps="network"
1412 http_protocol_deps="network"
1413 http_protocol_select="tcp_protocol"
1414 rtmp_protocol_deps="tcp_protocol"
1415 rtp_protocol_deps="udp_protocol"
1416 tcp_protocol_deps="network"
1417 udp_protocol_deps="network"
1418
1419 # filters
1420 movie_filter_deps="avfilter_lavf"
1421 avfilter_lavf_deps="avformat"
1422
1423 # libraries
1424 avdevice_deps="avcodec avformat"
1425 avformat_deps="avcodec"
1426
1427 # programs
1428 ffmpeg_deps="avcodec avformat swscale"
1429 ffplay_deps="avcodec avformat swscale sdl"
1430 ffplay_select="rdft"
1431 ffprobe_deps="avcodec avformat"
1432 ffserver_deps="avformat ffm_muxer rtp_protocol rtsp_demuxer"
1433 ffserver_extralibs='$ldl'
1434
1435 doc_deps="texi2html"
1436
1437 # default parameters
1438
1439 logfile="config.err"
1440
1441 # installation paths
1442 prefix_default="/usr/local"
1443 bindir_default='${prefix}/bin'
1444 datadir_default='${prefix}/share/ffmpeg'
1445 incdir_default='${prefix}/include'
1446 libdir_default='${prefix}/lib'
1447 mandir_default='${prefix}/share/man'
1448 shlibdir_default="$libdir_default"
1449
1450 # toolchain
1451 ar="ar"
1452 cc_default="gcc"
1453 cc_version=\"unknown\"
1454 host_cc_default="gcc"
1455 ln_s="ln -sf"
1456 nm_default="nm"
1457 objformat="elf"
1458 ranlib="ranlib"
1459 strip_default="strip"
1460 yasmexe="yasm"
1461
1462 nm_opts='-g'
1463
1464 # machine
1465 arch_default=$(uname -m)
1466 cpu="generic"
1467
1468 # OS
1469 target_os_default=$(tolower $(uname -s))
1470 host_os=$target_os_default
1471
1472 # configurable options
1473 enable avcodec
1474 enable avdevice
1475 enable avformat
1476 enable avutil
1477 enable asm
1478 enable debug
1479 enable doc
1480 enable fastdiv
1481 enable ffmpeg
1482 enable ffplay
1483 enable ffprobe
1484 enable ffserver
1485 enable mpegaudio_hp
1486 enable network
1487 enable optimizations
1488 enable protocols
1489 enable static
1490 enable stripping
1491 enable swscale
1492 enable swscale_alpha
1493
1494 # build settings
1495 SHFLAGS='-shared -Wl,-soname,$$(@F)'
1496 FFSERVERLDFLAGS=-Wl,-E
1497 LIBPREF="lib"
1498 LIBSUF=".a"
1499 FULLNAME='$(NAME)$(BUILDSUF)'
1500 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
1501 SLIBPREF="lib"
1502 SLIBSUF=".so"
1503 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
1504 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
1505 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
1506 LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
1507
1508 CC_O='-o $@'
1509
1510 host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall'
1511 host_libs='-lm'
1512
1513 target_path='$(CURDIR)'
1514
1515 # gcc stupidly only outputs the basename of targets with -MM, but we need the
1516 # full relative path for objects in subdirectories for non-recursive Make.
1517 DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
1518 DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
1519
1520 # find source path
1521 source_path="$(dirname "$0")"
1522 enable source_path_used
1523 if test -f configure; then
1524 source_path="$(pwd)"
1525 disable source_path_used
1526 else
1527 source_path="$(cd "$source_path"; pwd)"
1528 echo "$source_path" | grep -q '[[:blank:]]' &&
1529 die "Out of tree builds are impossible with whitespace in source path."
1530 test -e "$source_path/config.h" &&
1531 die "Out of tree builds are impossible with config.h in source dir."
1532 fi
1533
1534 for v in "$@"; do
1535 r=${v#*=}
1536 l=${v%"$r"}
1537 r=$(sh_quote "$r")
1538 FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
1539 done
1540
1541 find_things(){
1542 thing=$1
1543 pattern=$2
1544 file=$source_path/$3
1545 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
1546 }
1547
1548 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
1549 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
1550 HWACCEL_LIST=$(find_things hwaccel HWACCEL libavcodec/allcodecs.c)
1551 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
1552 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c)
1553 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
1554 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
1555 OUTDEV_LIST=$(find_things outdev OUTDEV libavdevice/alldevices.c)
1556 INDEV_LIST=$(find_things indev _IN libavdevice/alldevices.c)
1557 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
1558 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
1559
1560 enable $ARCH_EXT_LIST \
1561 $DECODER_LIST \
1562 $ENCODER_LIST \
1563 $HWACCEL_LIST \
1564 $PARSER_LIST \
1565 $BSF_LIST \
1566 $DEMUXER_LIST \
1567 $MUXER_LIST \
1568 $FILTER_LIST \
1569 $PROTOCOL_LIST \
1570 $INDEV_LIST \
1571 $OUTDEV_LIST \
1572
1573 die_unknown(){
1574 echo "Unknown option \"$1\"."
1575 echo "See $0 --help for available options."
1576 exit 1
1577 }
1578
1579 show_list() {
1580 suffix=_$1
1581 shift
1582 echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t
1583 exit 0
1584 }
1585
1586 for opt do
1587 optval="${opt#*=}"
1588 case "$opt" in
1589 --extra-ldflags=*) add_ldflags $optval
1590 ;;
1591 --extra-libs=*) add_extralibs $optval
1592 ;;
1593 --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
1594 ;;
1595 --enable-debug=*) debuglevel="$optval"
1596 ;;
1597 --disable-everything)
1598 map 'eval disable \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
1599 ;;
1600 --enable-*=*|--disable-*=*)
1601 eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
1602 is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
1603 eval list=\$$(toupper $thing)_LIST
1604 name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
1605 $action $(filter "$name" $list)
1606 ;;
1607 --enable-?*|--disable-?*)
1608 eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
1609 if is_in $option $COMPONENT_LIST; then
1610 test $action = disable && action=unset
1611 eval $action \$$(toupper ${option%s})_LIST
1612 elif is_in $option $CMDLINE_SELECT; then
1613 $action $option
1614 else
1615 die_unknown $opt
1616 fi
1617 ;;
1618 --list-*)
1619 NAME="${opt#--list-}"
1620 is_in $NAME $COMPONENT_LIST || die_unknown $opt
1621 NAME=${NAME%s}
1622 eval show_list $NAME \$$(toupper $NAME)_LIST
1623 ;;
1624 --help|-h) show_help
1625 ;;
1626 *)
1627 optname="${opt%%=*}"
1628 optname="${optname#--}"
1629 optname=$(echo "$optname" | sed 's/-/_/g')
1630 if is_in $optname $CMDLINE_SET; then
1631 eval $optname='$optval'
1632 elif is_in $optname $CMDLINE_APPEND; then
1633 append $optname "$optval"
1634 else
1635 die_unknown $opt
1636 fi
1637 ;;
1638 esac
1639 done
1640
1641 disabled logging && logfile=/dev/null
1642
1643 echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
1644 set >> $logfile
1645
1646 test -n "$cross_prefix" && enable cross_compile
1647
1648 if enabled cross_compile; then
1649 test -n "$arch" && test -n "$target_os" ||
1650 die "Must specify target arch and OS when cross-compiling"
1651 fi
1652
1653 set_default arch target_os
1654
1655 ar="${cross_prefix}${ar}"
1656 cc_default="${cross_prefix}${cc_default}"
1657 nm_default="${cross_prefix}${nm_default}"
1658 ranlib="${cross_prefix}${ranlib}"
1659 strip_default="${cross_prefix}${strip_default}"
1660
1661 sysinclude_default="${sysroot}/usr/include"
1662
1663 set_default cc nm strip sysinclude
1664 enabled cross_compile || host_cc_default=$cc
1665 set_default host_cc
1666
1667 exesuf() {
1668 case $1 in
1669 mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;;
1670 esac
1671 }
1672
1673 EXESUF=$(exesuf $target_os)
1674 HOSTEXESUF=$(exesuf $host_os)
1675
1676 # set temporary file name
1677 : ${TMPDIR:=$TEMPDIR}
1678 : ${TMPDIR:=$TMP}
1679 : ${TMPDIR:=/tmp}
1680
1681 if ! check_cmd type mktemp; then
1682 # simple replacement for missing mktemp
1683 # NOT SAFE FOR GENERAL USE
1684 mktemp(){
1685 echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
1686 }
1687 fi
1688
1689 tmpfile(){
1690 tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
1691 (set -C; exec > $tmp) 2>/dev/null ||
1692 die "Unable to create temporary file in $TMPDIR."
1693 append TMPFILES $tmp
1694 eval $1=$tmp
1695 }
1696
1697 trap 'rm -f -- $TMPFILES' EXIT
1698 trap exit HUP INT TERM
1699
1700 tmpfile TMPC .c
1701 tmpfile TMPE $EXESUF
1702 tmpfile TMPH .h
1703 tmpfile TMPO .o
1704 tmpfile TMPS .S
1705 tmpfile TMPV .ver
1706 tmpfile TMPSH .sh
1707
1708 unset -f mktemp
1709
1710 # make sure we can execute files in $TMPDIR
1711 cat > $TMPSH 2>> $logfile <<EOF
1712 #! /bin/sh
1713 EOF
1714 chmod +x $TMPSH >> $logfile 2>&1
1715 if ! $TMPSH >> $logfile 2>&1; then
1716 cat <<EOF
1717 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
1718 variable to another directory and make sure that it is not mounted noexec.
1719 EOF
1720 die "Sanity test failed."
1721 fi
1722
1723 filter_cflags=echo
1724 filter_cppflags=echo
1725 filter_asflags=echo
1726
1727 if $cc -v 2>&1 | grep -qi ^gcc; then
1728 cc_type=gcc
1729 cc_version=__VERSION__
1730 if ! $cc -dumpversion | grep -q '^2\.'; then
1731 CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1732 AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1733 fi
1734 speed_cflags='-O3'
1735 size_cflags='-Os'
1736 elif $cc --version 2>/dev/null | grep -q Intel; then
1737 cc_type=icc
1738 cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
1739 CC_DEPFLAGS='-MMD'
1740 AS_DEPFLAGS='-MMD'
1741 speed_cflags='-O3'
1742 size_cflags='-Os'
1743 elif $cc -v 2>&1 | grep -q xlc; then
1744 cc_type=xlc
1745 cc_version="AV_STRINGIFY(__IBMC__)"
1746 speed_cflags='-O5'
1747 size_cflags='-O5 -qcompact'
1748 elif $cc -V 2>/dev/null | grep -q Compaq; then
1749 cc_type=ccc
1750 cc_version="AV_STRINGIFY(__DECC_VER)"
1751 DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
1752 debuglevel=3
1753 add_ldflags -Wl,-z,now # calls to libots crash without this
1754 speed_cflags='-fast'
1755 size_cflags='-O1'
1756 elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
1757 test -d "$sysroot" || die "No valid sysroot specified."
1758 cc_type=armcc
1759 cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
1760 armcc_conf="$PWD/armcc.conf"
1761 $cc --arm_linux_configure \
1762 --arm_linux_config_file="$armcc_conf" \
1763 --configure_sysroot="$sysroot" \
1764 --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
1765 die "Error creating armcc configuration file."
1766 cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc"
1767 as_default="${cross_prefix}gcc"
1768 CC_DEPFLAGS='-MMD'
1769 AS_DEPFLAGS='-MMD'
1770 speed_cflags='-O3'
1771 size_cflags='-Os'
1772 elif $cc -version 2>/dev/null | grep -q TMS470; then
1773 cc_type=tms470
1774 cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
1775 cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
1776 CC_O='-fr=$(@D)'
1777 as_default="${cross_prefix}gcc"
1778 ld_default="${cross_prefix}gcc"
1779 TMPO=$(basename $TMPC .c).o
1780 append TMPFILES $TMPO
1781 add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=
1782 CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)'
1783 AS_DEPFLAGS='-MMD'
1784 speed_cflags='-O3 -mf=5'
1785 size_cflags='-O3 -mf=2'
1786 filter_cflags=tms470_flags
1787 tms470_flags(){
1788 for flag; do
1789 case $flag in
1790 -march=*|-mcpu=*)
1791 case "${flag#*=}" in
1792 armv7-a|cortex-a*) echo -mv=7a8 ;;
1793 armv7-r|cortex-r*) echo -mv=7r4 ;;
1794 armv7-m|cortex-m*) echo -mv=7m3 ;;
1795 armv6*|arm11*) echo -mv=6 ;;
1796 armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
1797 echo -mv=5e ;;
1798 armv4*|arm7*|arm9[24]*) echo -mv=4 ;;
1799 esac
1800 ;;
1801 -mfpu=neon) echo --float_support=vfpv3 --neon ;;
1802 -mfpu=vfp) echo --float_support=vfpv2 ;;
1803 -mfpu=vfpv3) echo --float_support=vfpv3 ;;
1804 -msoft-float) echo --float_support=vfplib ;;
1805 -O[0-3]|-mf=*) echo $flag ;;
1806 -g) echo -g -mn ;;
1807 -pds=*) echo $flag ;;
1808 esac
1809 done
1810 }
1811 elif $cc -v 2>&1 | grep -q clang; then
1812 cc_type=clang
1813 cc_version=__VERSION__
1814 CC_DEPFLAGS='-MMD'
1815 AS_DEPFLAGS='-MMD'
1816 speed_cflags='-O3'
1817 size_cflags='-Os'
1818 elif $cc -V 2>&1 | grep -q Sun; then
1819 cc_type=suncc
1820 cc_version="AV_STRINGIFY(__SUNPRO_C)"
1821 DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
1822 DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1'
1823 speed_cflags='-O5'
1824 size_cflags='-O5 -xspace'
1825 filter_cflags=suncc_flags
1826 suncc_flags(){
1827 for flag; do
1828 case $flag in
1829 -march=*|-mcpu=*)
1830 case "${flag#*=}" in
1831 native) echo -xtarget=native ;;
1832 v9) echo -xarch=sparc ;;
1833 ultrasparc) echo -xarch=sparcvis ;;
1834 ultrasparc3|niagara*) echo -xarch=sparcvis2 ;;
1835 i586|pentium) echo -xchip=pentium ;;
1836 i686|pentiumpro|pentium2) echo -xtarget=pentium_pro ;;
1837 pentium3*|c3-2) echo -xtarget=pentium3 ;;
1838 pentium-m) echo -xarch=sse2 -xchip=pentium3 ;;
1839 pentium4*) echo -xtarget=pentium4 ;;
1840 prescott|nocona) echo -xarch=sse3 -xchip=pentium4 ;;
1841 *-sse3) echo -xarch=sse3 ;;
1842 core2) echo -xarch=ssse3 -xchip=core2 ;;
1843 amdfam10|barcelona) echo -xarch=sse4_1 ;;
1844 athlon-4|athlon-[mx]p) echo -xarch=ssea ;;
1845 k8|opteron|athlon64|athlon-fx)
1846 echo -xarch=sse2a ;;
1847 athlon*) echo -xarch=pentium_proa ;;
1848 esac
1849 ;;
1850 -std=c99) echo -xc99 ;;
1851 -fomit-frame-pointer) echo -xregs=frameptr ;;
1852 -fPIC) echo -KPIC -xcode=pic32 ;;
1853 -W*,*) echo $flag ;;
1854 -f*-*|-W*) ;;
1855 *) echo $flag ;;
1856 esac
1857 done
1858 }
1859 fi
1860
1861 test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
1862
1863 : ${as_default:=$cc}
1864 : ${dep_cc_default:=$cc}
1865 : ${ld_default:=$cc}
1866 set_default as dep_cc ld
1867
1868 test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
1869 test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
1870
1871 add_cflags $extra_cflags
1872 add_asflags $extra_cflags
1873
1874 if test -n "$sysroot"; then
1875 case "$cc_type" in
1876 gcc)
1877 add_cppflags --sysroot="$sysroot"
1878 add_ldflags --sysroot="$sysroot"
1879 ;;
1880 tms470)
1881 add_cppflags -I"$sysinclude"
1882 add_ldflags --sysroot="$sysroot"
1883 ;;
1884 clang)
1885 add_cppflags -isysroot "$sysroot"
1886 add_ldflags -isysroot "$sysroot"
1887 ;;
1888 esac
1889 fi
1890
1891 if test "$cpu" = host; then
1892 enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
1893
1894 case "$cc_type" in
1895 gcc)
1896 check_native(){
1897 $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
1898 sed -n "/$1=/{
1899 s/.*$1=\\([^ ]*\\).*/\\1/
1900 p
1901 q
1902 }" $TMPE
1903 }
1904 cpu=$(check_native -march || check_native -mcpu)
1905 ;;
1906 esac
1907
1908 test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
1909 fi
1910
1911 # Deal with common $arch aliases
1912 case "$arch" in
1913 arm*)
1914 arch="arm"
1915 ;;
1916 mips|mipsel|IP*)
1917 arch="mips"
1918 ;;
1919 mips64*)
1920 arch="mips"
1921 subarch="mips64"
1922 ;;
1923 parisc|hppa)
1924 arch="parisc"
1925 ;;
1926 parisc64|hppa64)
1927 arch="parisc"
1928 subarch="parisc64"
1929 ;;
1930 "Power Macintosh"|ppc|powerpc)
1931 arch="ppc"
1932 ;;
1933 ppc64|powerpc64)
1934 arch="ppc"
1935 subarch="ppc64"
1936 ;;
1937 s390|s390x)
1938 arch="s390"
1939 ;;
1940 sh4|sh)
1941 arch="sh4"
1942 ;;
1943 sun4u|sparc64)
1944 arch="sparc"
1945 subarch="sparc64"
1946 ;;
1947 i[3-6]86|i86pc|BePC|x86_64|amd64)
1948 arch="x86"
1949 ;;
1950 esac
1951
1952 is_in $arch $ARCH_LIST || echo "WARNING: unknown arch $arch"
1953 enable $arch
1954
1955 # Add processor-specific flags
1956 if test "$cpu" = generic; then
1957 : do nothing
1958 elif enabled ppc; then
1959
1960 case $(tolower $cpu) in
1961 601|ppc601|powerpc601)
1962 cpuflags="-mcpu=601"
1963 disable altivec
1964 ;;
1965 603*|ppc603*|powerpc603*)
1966 cpuflags="-mcpu=603"
1967 disable altivec
1968 ;;
1969 604*|ppc604*|powerpc604*)
1970 cpuflags="-mcpu=604"
1971 disable altivec
1972 ;;
1973 g3|75*|ppc75*|powerpc75*)
1974 cpuflags="-mcpu=750 -mpowerpc-gfxopt"
1975 disable altivec
1976 ;;
1977 g4|745*|ppc745*|powerpc745*)
1978 cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
1979 ;;
1980 74*|ppc74*|powerpc74*)
1981 cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
1982 ;;
1983 g5|970|ppc970|powerpc970|power4*)
1984 cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1985 ;;
1986 cell)
1987 cpuflags="-mcpu=cell"
1988 enable ldbrx
1989 ;;
1990 e500v2)
1991 cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
1992 disable altivec
1993 ;;
1994 e500)
1995 cpuflags="-mcpu=8540 -mhard-float"
1996 disable altivec
1997 ;;
1998 esac
1999
2000 elif enabled x86; then
2001
2002 case $cpu in
2003 i[345]86|pentium)
2004 cpuflags="-march=$cpu"
2005 disable mmx
2006 ;;
2007 # targets that do NOT support conditional mov (cmov)
2008 pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
2009 cpuflags="-march=$cpu"
2010 disable cmov
2011 ;;
2012 # targets that do support conditional mov (cmov)
2013 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10)
2014 cpuflags="-march=$cpu"
2015 enable cmov
2016 enable fast_cmov
2017 ;;
2018 # targets that do support conditional mov but on which it's slow
2019 pentium4|pentium4m|prescott|nocona)
2020 cpuflags="-march=$cpu"
2021 enable cmov
2022 disable fast_cmov
2023 ;;
2024 esac
2025
2026 elif enabled sparc; then
2027
2028 case $cpu in
2029 sparc64)
2030 cpuflags="-mcpu=v9"
2031 ;;
2032 esac
2033
2034 elif enabled arm; then
2035
2036 case $cpu in
2037 armv*)
2038 cpuflags="-march=$cpu"
2039 ;;
2040 *)
2041 cpuflags="-mcpu=$cpu"
2042 ;;
2043 esac
2044
2045 elif enabled alpha; then
2046
2047 enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
2048
2049 elif enabled bfin; then
2050
2051 cpuflags="-mcpu=$cpu"
2052
2053 elif enabled mips; then
2054
2055 cpuflags="-march=$cpu"
2056
2057 elif enabled avr32; then
2058
2059 case $cpu in
2060 ap7[02]0[0-2])
2061 subarch="avr32_ap"
2062 cpuflags="-mpart=$cpu"
2063 ;;
2064 ap)
2065 subarch="avr32_ap"
2066 cpuflags="-march=$cpu"
2067 ;;
2068 uc3[ab]*)
2069 subarch="avr32_uc"
2070 cpuflags="-mcpu=$cpu"
2071 ;;
2072 uc)
2073 subarch="avr32_uc"
2074 cpuflags="-march=$cpu"
2075 ;;
2076 esac
2077
2078 fi
2079
2080 add_cflags $cpuflags
2081 add_asflags $cpuflags
2082
2083 # compiler sanity check
2084 check_exec <<EOF
2085 int main(void){ return 0; }
2086 EOF
2087 if test "$?" != 0; then
2088 echo "$cc is unable to create an executable file."
2089 if test -z "$cross_prefix" && ! enabled cross_compile ; then
2090 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
2091 echo "Only do this if you know what cross compiling means."
2092 fi
2093 die "C compiler test failed."
2094 fi
2095
2096 add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
2097 check_cflags -std=c99
2098 check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
2099 #include <stdlib.h>
2100 EOF
2101 check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
2102 #include <stdlib.h>
2103 EOF
2104
2105 check_host_cflags -std=c99
2106
2107 case "$arch" in
2108 alpha|ia64|mips|parisc|sparc)
2109 spic=$shared
2110 ;;
2111 x86)
2112 subarch="x86_32"
2113 check_cc <<EOF && subarch="x86_64"
2114 int test[(int)sizeof(char*) - 7];
2115 EOF
2116 if test "$subarch" = "x86_64"; then
2117 spic=$shared
2118 fi
2119 ;;
2120 esac
2121
2122 enable $subarch
2123 enabled spic && enable pic
2124 check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
2125
2126 # OS specific
2127 case $target_os in
2128 beos|haiku|zeta)
2129 prefix_default="$HOME/config"
2130 # 3 gcc releases known for BeOS, each with ugly bugs
2131 gcc_version="$($cc -v 2>&1 | grep version | cut -d ' ' -f3-)"
2132 case "$gcc_version" in
2133 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
2134 disable mmx
2135 ;;
2136 *20010315*) echo "BeBits gcc"
2137 add_cflags -fno-expensive-optimizations
2138 ;;
2139 esac
2140 SHFLAGS=-nostart
2141 # enable BeOS things
2142 enable audio_beos
2143 # no need for libm, but the inet stuff
2144 # Check for BONE
2145 # XXX: actually should check for NOT net_server
2146 if echo $BEINCLUDES | grep -q 'headers/be/bone'; then
2147 network_extralibs="-lbind -lsocket"
2148 else
2149 enable beos_netserver
2150 network_extralibs="-lnet"
2151 fi ;;
2152 sunos)
2153 FFSERVERLDFLAGS=""
2154 SHFLAGS='-shared -Wl,-h,$$(@F)'
2155 enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
2156 network_extralibs="-lsocket -lnsl"
2157 add_cppflags -D__EXTENSIONS__
2158 nm_opts='-P -g'
2159 ;;
2160 netbsd)
2161 oss_indev_extralibs="-lossaudio"
2162 oss_outdev_extralibs="-lossaudio"
2163 add_cppflags -D_XOPEN_SOURCE=600
2164 ;;
2165 openbsd)
2166 enable malloc_aligned
2167 # On OpenBSD 4.5. the compiler does not use PIC unless
2168 # explicitly using -fPIC. FFmpeg builds fine without PIC,
2169 # however the generated executable will not do anything
2170 # (simply quits with exit-code 1, no crash, no output).
2171 # Thus explicitly enable PIC here.
2172 enable pic
2173 SHFLAGS='-shared'
2174 oss_indev_extralibs="-lossaudio"
2175 oss_outdev_extralibs="-lossaudio"
2176 ;;
2177 freebsd|dragonfly)
2178 enable malloc_aligned
2179 ;;
2180 bsd/os)
2181 osextralibs="-lpoll -lgnugetopt"
2182 strip="strip -d"
2183 ;;
2184 darwin)
2185 enable malloc_aligned
2186 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
2187 strip="strip -x"
2188 FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
2189 SLIBSUF=".dylib"
2190 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
2191 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
2192 FFSERVERLDFLAGS=-Wl,-bind_at_load
2193 objformat="macho"
2194 enabled x86_64 && objformat="macho64"
2195 enabled_any pic shared ||
2196 { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
2197 ;;
2198 mingw32*)
2199 if test $target_os = "mingw32ce"; then
2200 disable network
2201 else
2202 target_os=mingw32
2203 fi
2204 LIBTARGET=i386
2205 if enabled x86_64; then
2206 enable malloc_aligned
2207 LIBTARGET=x64
2208 elif enabled arm; then
2209 LIBTARGET=arm
2210 fi
2211 shlibdir_default="$bindir_default"
2212 disable ffserver
2213 SLIBPREF=""
2214 SLIBSUF=".dll"
2215 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
2216 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2217 SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
2218 SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
2219 install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
2220 install -d "$(LIBDIR)"; \
2221 install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
2222 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
2223 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'
2224 objformat="win32"
2225 enable dos_paths
2226 check_cflags -fno-common
2227 if ! enabled x86_64; then
2228 check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
2229 die "ERROR: MinGW runtime version must be >= 3.15."
2230 enabled_any avisynth vfwcap_indev &&
2231 { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
2232 die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; }
2233 fi
2234 ;;
2235 cygwin*)
2236 target_os=cygwin
2237 shlibdir_default="$bindir_default"
2238 SLIBPREF="cyg"
2239 SLIBSUF=".dll"
2240 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
2241 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2242 SHFLAGS='-shared -Wl,--enable-auto-image-base'
2243 objformat="win32"
2244 enable dos_paths
2245 check_cflags -fno-common
2246 ;;
2247 *-dos|freedos|opendos)
2248 disable ffplay ffserver
2249 disable $INDEV_LIST $OUTDEV_LIST
2250 network_extralibs="-lsocket"
2251 objformat="coff"
2252 enable dos_paths
2253 ;;
2254 linux)
2255 enable dv1394
2256 ;;
2257 irix*)
2258 target_os=irix
2259 ranlib="echo ignoring ranlib"
2260 ;;
2261 os/2*)
2262 strip="lxlite"
2263 ln_s="cp -f"
2264 FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
2265 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
2266 FFSERVERLDFLAGS=""
2267 LIBSUF="_s.a"
2268 SLIBPREF=""
2269 SLIBSUF=".dll"
2270 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
2271 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
2272 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
2273 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
2274 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
2275 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
2276 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
2277 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
2278 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
2279 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
2280 SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
2281 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
2282 enable dos_paths
2283 ;;
2284 gnu/kfreebsd)
2285 ;;
2286 gnu)
2287 ;;
2288 none)
2289 ;;
2290 *)
2291 die "Unknown OS '$target_os'."
2292 ;;
2293 esac
2294
2295 set_default $PATHS_LIST
2296
2297 add_extralibs $osextralibs
2298
2299 # Combine FFLDFLAGS and the LDFLAGS environment variable.
2300 LDFLAGS="$FFLDFLAGS $LDFLAGS"
2301
2302 # we need to build at least one lib type
2303 if ! enabled_any static shared; then
2304 cat <<EOF
2305 At least one library type must be built.
2306 Specify --enable-static to build the static libraries or --enable-shared to
2307 build the shared libraries as well. To only build the shared libraries specify
2308 --disable-static in addition to --enable-shared.
2309 EOF
2310 exit 1;
2311 fi
2312
2313 disabled static && LIBNAME=""
2314
2315 if enabled_any libfaad libfaadbin ; then
2316 if check_header faad.h; then
2317 check_cc <<EOF
2318 #include <faad.h>
2319 #ifndef FAAD2_VERSION
2320 ok faad1
2321 #endif
2322 int main(void) { return 0; }
2323 EOF
2324 test $? = 0 && enable libfaad2
2325 else
2326 die "FAAD test failed."
2327 fi
2328 fi
2329
2330
2331 die_license_disabled() {
2332 enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
2333 }
2334
2335 die_license_disabled gpl libfaad2
2336 die_license_disabled gpl libx264
2337 die_license_disabled gpl libxvid
2338 die_license_disabled gpl postproc
2339 die_license_disabled gpl x11grab
2340
2341 die_license_disabled nonfree libfaac
2342
2343 die_license_disabled version3 libopencore_amrnb
2344 die_license_disabled version3 libopencore_amrwb
2345
2346 enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
2347
2348 check_deps $ARCH_EXT_LIST
2349
2350 disabled optimizations || check_cflags -fomit-frame-pointer
2351
2352 enable_pic() {
2353 enable pic
2354 add_cppflags -DPIC
2355 add_cflags -fPIC
2356 add_asflags -fPIC
2357 }
2358
2359 enabled pic && enable_pic
2360
2361 check_cc <<EOF || die "Symbol mangling check failed."
2362 int ff_extern;
2363 EOF
2364 sym=$($nm $nm_opts $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
2365 extern_prefix=${sym%%ff_extern*}
2366
2367 check_cc <<EOF && enable inline_asm
2368 void foo(void) { __asm__ volatile ("" ::); }
2369 EOF
2370
2371 _restrict=
2372 for restrict_keyword in restrict __restrict__ __restrict; do
2373 check_cc <<EOF && _restrict=$restrict_keyword && break
2374 void foo(char * $restrict_keyword p);
2375 EOF
2376 done
2377
2378 check_cc <<EOF && enable attribute_packed
2379 struct { int x; } __attribute__((packed)) x;
2380 EOF
2381
2382 check_cc <<EOF && enable attribute_may_alias
2383 union { int x; } __attribute__((may_alias)) x;
2384 EOF
2385
2386 check_cc <<EOF || die "endian test failed"
2387 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
2388 EOF
2389 od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
2390
2391 if enabled alpha; then
2392
2393 check_cflags -mieee
2394
2395 elif enabled arm; then
2396
2397 check_cflags -marm
2398
2399 check_ld <<EOF && enable vfp_args
2400 __asm__ (".eabi_attribute 28, 1");
2401 int main(void) { return 0; }
2402 EOF
2403
2404 # We have to check if pld is a nop and disable it.
2405 check_asm pld '"pld [r0]"'
2406
2407 enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
2408 enabled armv6 && check_asm armv6 '"sadd16 r0, r0, r0"'
2409 enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
2410 enabled armvfp && check_asm armvfp '"fadds s0, s0, s0"'
2411 enabled iwmmxt && check_asm iwmmxt '"wunpckelub wr6, wr4"'
2412 enabled neon && check_asm neon '"vadd.i16 q0, q0, q0"'
2413
2414 enabled_all armv6t2 shared !pic && enable_pic
2415
2416 elif enabled ia64; then
2417
2418 # HACK: currently fails to build if .bss is > 4MB and shared libs are built
2419 enabled shared && enable_weak hardcoded_tables
2420
2421 elif enabled mips; then
2422
2423 check_asm loongson '"dmult.g $1, $2, $3"'
2424 enabled mmi && check_asm mmi '"lq $2, 0($2)"'
2425
2426 elif enabled ppc; then
2427
2428 enable local_aligned_8 local_aligned_16
2429
2430 check_asm dcbzl '"dcbzl 0, 1"'
2431 check_asm ppc4xx '"maclhw r10, r11, r12"'
2432 check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
2433
2434 # AltiVec flags: The FSF version of GCC differs from the Apple version
2435 if enabled altivec; then
2436 check_cflags -maltivec -mabi=altivec &&
2437 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
2438 check_cflags -faltivec
2439
2440 # check if our compiler supports Motorola AltiVec C API
2441 check_cc <<EOF || disable altivec
2442 $inc_altivec_h
2443 int main(void) {
2444 vector signed int v1, v2, v3;
2445 v1 = vec_add(v2,v3);
2446 return 0;
2447 }
2448 EOF
2449
2450 # check if our compiler supports braces for vector declarations
2451 check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
2452 $inc_altivec_h
2453 int main (void) { (vector int) {1}; return 0; }
2454 EOF
2455 fi
2456
2457 elif enabled sparc; then
2458
2459 enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
2460 add_cflags -mcpu=ultrasparc -mtune=ultrasparc
2461
2462 elif enabled x86; then
2463
2464 enable local_aligned_8 local_aligned_16
2465
2466 # check whether EBP is available on x86
2467 # As 'i' is stored on the stack, this program will crash
2468 # if the base pointer is used to access it because the
2469 # base pointer is cleared in the inline assembly code.
2470 check_exec_crash <<EOF && enable ebp_available
2471 volatile int i=0;
2472 __asm__ volatile (
2473 "xorl %%ebp, %%ebp"
2474 ::: "%ebp");
2475 return i;
2476 EOF
2477
2478 # check whether EBX is available on x86
2479 check_asm ebx_available '""::"b"(0)' &&
2480 check_asm ebx_available '"":::"%ebx"'
2481
2482 # check whether more than 10 operands are supported
2483 check_cc <<EOF && enable ten_operands
2484 int main(void) {
2485 int x=0;
2486 __asm__ volatile(
2487 ""
2488 :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
2489 );
2490 return 0;
2491 }
2492 EOF
2493
2494 # check whether binutils is new enough to compile SSSE3/MMX2
2495 enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
2496 enabled mmx2 && check_asm mmx2 '"pmaxub %mm0, %mm1"'
2497
2498 check_asm bswap '"bswap %%eax" ::: "%eax"'
2499
2500 YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)"
2501 enabled x86_64 && append YASMFLAGS "-m amd64"
2502 enabled pic && append YASMFLAGS "-DPIC"
2503 test -n "$extern_prefix" && append YASMFLAGS "-DPREFIX"
2504 case "$objformat" in
2505 elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
2506 esac
2507 disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; }
2508
2509 case "$cpu" in
2510 athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
2511 disable fast_clz
2512 ;;
2513 esac
2514
2515 fi
2516
2517 if check_func dlopen; then
2518 ldl=
2519 elif check_func dlopen -ldl; then
2520 ldl=-ldl
2521 fi
2522
2523 # Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
2524 check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
2525
2526 check_func fork
2527 check_func getaddrinfo $network_extralibs
2528 check_func gethrtime
2529 check_func getrusage
2530 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
2531 check_func inet_aton $network_extralibs
2532 check_func isatty
2533 check_func ${malloc_prefix}memalign && enable memalign
2534 check_func mkstemp
2535 check_func ${malloc_prefix}posix_memalign && enable posix_memalign
2536 check_func setrlimit
2537 check_func strerror_r
2538 check_func_headers io.h setmode
2539 check_func_headers lzo/lzo1x.h lzo1x_999_compress
2540 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
2541 check_func_headers windows.h GetProcessTimes
2542 check_func_headers windows.h VirtualAlloc
2543
2544 check_header conio.h
2545 check_header dlfcn.h
2546 check_header dxva2api.h
2547 check_header malloc.h
2548 check_header poll.h
2549 check_header sys/mman.h
2550 check_header sys/resource.h
2551 check_header sys/select.h
2552 check_header termios.h
2553 check_header vdpau/vdpau.h
2554 check_header vdpau/vdpau_x11.h
2555 check_header X11/extensions/XvMClib.h
2556
2557 check_struct dxva2api.h DXVA_PictureParameters wDecodedPictureIndex
2558
2559 if ! enabled_any memalign memalign_hack posix_memalign malloc_aligned &&
2560 enabled_any $need_memalign ; then
2561 die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
2562 fi
2563
2564 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
2565 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
2566
2567 # check for some common methods of building with pthread support
2568 # do this before the optional library checks as some of them require pthreads
2569 if enabled pthreads; then
2570 if check_func pthread_create; then
2571 :
2572 elif check_func pthread_create -pthread; then
2573 add_cflags -pthread
2574 add_extralibs -pthread
2575 elif check_func pthread_create -pthreads; then
2576 add_cflags -pthreads
2577 add_extralibs -pthreads
2578 elif check_func pthread_create -lpthreadGC2; then
2579 add_extralibs -lpthreadGC2
2580 elif ! check_lib pthread.h pthread_create -lpthread; then
2581 die "ERROR: can't find pthreads library"
2582 fi
2583 fi
2584
2585 for thread in $THREADS_LIST; do
2586 if enabled $thread; then
2587 test -n "$thread_type" &&
2588 die "ERROR: Only one thread type must be selected." ||
2589 thread_type="$thread"
2590 fi
2591 done
2592
2593 check_lib math.h sin -lm
2594 check_lib va/va.h vaInitialize -lva
2595
2596 check_mathfunc exp2
2597 check_mathfunc exp2f
2598 check_mathfunc llrint
2599 check_mathfunc log2
2600 check_mathfunc log2f
2601 check_mathfunc lrint
2602 check_mathfunc lrintf
2603 check_mathfunc round
2604 check_mathfunc roundf
2605 check_mathfunc truncf
2606
2607 # these are off by default, so fail if requested and not available
2608 enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
2609 enabled libdirac && add_cflags $(pkg-config --cflags dirac) &&
2610 require libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init $(pkg-config --libs dirac) &&
2611 require libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init $(pkg-config --libs dirac)
2612 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
2613 enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
2614 enabled libgsm && require libgsm gsm/gsm.h gsm_create -lgsm
2615 enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame -lm
2616 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
2617 enabled libopencore_amrnb && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb -lm
2618 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb -lm
2619 enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
2620 enabled librtmp && require librtmp librtmp/rtmp.h RTMP_Init -lrtmp
2621 enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
2622 require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
2623 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
2624 enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
2625 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
2626 enabled libx264 && require libx264 x264.h x264_encoder_encode -lx264 -lm &&
2627 { check_cpp_condition x264.h "X264_BUILD >= 83" ||
2628 die "ERROR: libx264 version must be >= 0.83."; }
2629 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
2630 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
2631
2632 # libdc1394 check
2633 if enabled libdc1394; then
2634 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
2635 enable libdc1394_2; } ||
2636 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
2637 enable libdc1394_1; } ||
2638 die "ERROR: No version of libdc1394 found "
2639 fi
2640
2641 SDL_CONFIG="${cross_prefix}sdl-config"
2642 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
2643 sdl_cflags=$("${SDL_CONFIG}" --cflags)
2644 sdl_libs=$("${SDL_CONFIG}" --libs)
2645 check_func_headers SDL.h SDL_Init $sdl_cflags $sdl_libs &&
2646 check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
2647 enable sdl &&
2648 check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
2649 fi
2650
2651 texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
2652
2653 if enabled network; then
2654 check_type "sys/types.h sys/socket.h" socklen_t
2655 check_type netdb.h "struct addrinfo"
2656 check_type netinet/in.h "struct ipv6_mreq"
2657 check_type netinet/in.h "struct sockaddr_in6"
2658 check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
2659 check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
2660 # Prefer arpa/inet.h over winsock2
2661 if check_header arpa/inet.h ; then
2662 check_func closesocket
2663 elif check_header winsock2.h ; then
2664 check_func_headers winsock2.h closesocket -lws2 && \
2665 network_extralibs="-lws2" || \
2666 { check_func_headers winsock2.h closesocket -lws2_32 && \
2667 network_extralibs="-lws2_32"; }
2668 check_type ws2tcpip.h socklen_t
2669 check_type ws2tcpip.h "struct addrinfo"
2670 check_type ws2tcpip.h "struct ipv6_mreq"
2671 check_type ws2tcpip.h "struct sockaddr_in6"
2672 check_type ws2tcpip.h "struct sockaddr_storage"
2673 check_struct winsock2.h "struct sockaddr" sa_len
2674 else
2675 disable network
2676 fi
2677 fi
2678
2679 check_header linux/videodev.h
2680 check_header linux/videodev2.h
2681 check_header sys/videoio.h
2682
2683 check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
2684
2685 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
2686 { check_header dev/bktr/ioctl_meteor.h &&
2687 check_header dev/bktr/ioctl_bt848.h; } ||
2688 { check_header machine/ioctl_meteor.h &&
2689 check_header machine/ioctl_bt848.h; } ||
2690 { check_header dev/video/meteor/ioctl_meteor.h &&
2691 check_header dev/video/bktr/ioctl_bt848.h; } ||
2692 check_header dev/ic/bt8xx.h
2693
2694 check_header sys/soundcard.h
2695 check_header soundcard.h
2696
2697 enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
2698
2699 enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack
2700
2701 enabled x11grab &&
2702 check_header X11/Xlib.h &&
2703 check_header X11/extensions/XShm.h &&
2704 check_header X11/extensions/Xfixes.h &&
2705 check_func XOpenDisplay -lX11 &&
2706 check_func XShmCreateImage -lX11 -lXext &&
2707 check_func XFixesGetCursorImage -lX11 -lXext -lXfixes
2708
2709 if ! disabled vdpau && enabled vdpau_vdpau_h; then
2710 check_cpp_condition \
2711 vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
2712 { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." &&
2713 disable vdpau; }
2714 fi
2715
2716 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
2717
2718 # add some useful compiler flags if supported
2719 check_cflags -Wdeclaration-after-statement
2720 check_cflags -Wall
2721 check_cflags -Wno-switch
2722 check_cflags -Wdisabled-optimization
2723 check_cflags -Wpointer-arith
2724 check_cflags -Wredundant-decls
2725 check_cflags -Wno-pointer-sign
2726 check_cflags -Wcast-qual
2727 check_cflags -Wwrite-strings
2728 check_cflags -Wtype-limits
2729 check_cflags -Wundef
2730 check_cflags -Wmissing-prototypes
2731 enabled extra_warnings && check_cflags -Winline
2732
2733 # add some linker flags
2734 check_ldflags -Wl,--warn-common
2735 check_ldflags -Wl,--as-needed
2736 check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
2737 check_ldflags -Wl,-Bsymbolic
2738
2739 echo "X{};" > $TMPV
2740 test_ldflags -Wl,--version-script,$TMPV &&
2741 append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
2742
2743 if enabled small; then
2744 add_cflags $size_cflags
2745 optimizations="small"
2746 elif enabled optimizations; then
2747 add_cflags $speed_cflags
2748 fi
2749 check_cflags -fno-math-errno
2750 check_cflags -fno-signed-zeros
2751
2752 if enabled icc; then
2753 # Just warnings, no remarks
2754 check_cflags -w1
2755 # -wd: Disable following warnings
2756 # 144, 167, 556: -Wno-pointer-sign
2757 # 10006: ignoring unknown option -fno-signed-zeros
2758 # 10156: ignoring option '-W'; no argument required
2759 check_cflags -wd144,167,556,10006,10156
2760 # 11030: Warning unknown option --as-needed
2761 # 10156: ignoring option '-export'; no argument required
2762 check_ldflags -wd10156,11030
2763 # Allow to compile with optimizations
2764 check_ldflags -march=$cpu
2765 # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
2766 enable ebp_available
2767 elif enabled ccc; then
2768 # disable some annoying warnings
2769 add_cflags -msg_disable cvtu32to64
2770 add_cflags -msg_disable embedcomment
2771 add_cflags -msg_disable needconstext
2772 add_cflags -msg_disable nomainieee
2773 add_cflags -msg_disable ptrmismatch1
2774 add_cflags -msg_disable unreachcode
2775 elif enabled gcc; then
2776 check_cflags -fno-tree-vectorize
2777 check_cflags -Werror=implicit
2778 check_cflags -Werror=missing-prototypes
2779 elif enabled clang; then
2780 check_cflags -Qunused-arguments
2781 elif enabled armcc; then
2782 # 2523: use of inline assembler is deprecated
2783 add_cflags -Wrvct,--diag_suppress=2523
2784 add_cflags -Wrvct,--diag_suppress=1207
2785 elif enabled tms470; then
2786 add_cflags -pds=824 -pds=837
2787 fi
2788
2789 if enabled gprof; then
2790 add_cflags -p
2791 add_ldflags -p
2792 fi
2793
2794 # Find out if the .align argument is a power of two or not.
2795 check_asm asmalign_pot '".align 3"'
2796
2797 enabled_any $DECODER_LIST && enable decoders
2798 enabled_any $ENCODER_LIST && enable encoders
2799 enabled_any $HWACCEL_LIST && enable hwaccels
2800 enabled_any $BSF_LIST && enable bsfs
2801 enabled_any $DEMUXER_LIST && enable demuxers
2802 enabled_any $MUXER_LIST && enable muxers
2803 enabled_any $FILTER_LIST && enable filters
2804 enabled_any $INDEV_LIST && enable indevs
2805 enabled_any $OUTDEV_LIST && enable outdevs
2806 enabled_any $PROTOCOL_LIST && enable protocols
2807
2808 enabled_any $THREADS_LIST && enable threads
2809
2810 check_deps $CONFIG_LIST \
2811 $CONFIG_EXTRA \
2812 $HAVE_LIST \
2813 $DECODER_LIST \
2814 $ENCODER_LIST \
2815 $HWACCEL_LIST \
2816 $PARSER_LIST \
2817 $BSF_LIST \
2818 $DEMUXER_LIST \
2819 $MUXER_LIST \
2820 $FILTER_LIST \
2821 $INDEV_LIST \
2822 $OUTDEV_LIST \
2823 $PROTOCOL_LIST \
2824
2825 enabled asm || disable $ARCH_LIST $ARCH_EXT_LIST
2826
2827 echo "install prefix $prefix"
2828 echo "source path $source_path"
2829 echo "C compiler $cc"
2830 echo ".align is power-of-two $asmalign_pot"
2831 echo "ARCH $arch ($cpu)"
2832 if test "$build_suffix" != ""; then
2833 echo "build suffix $build_suffix"
2834 fi
2835 if test "$extra_version" != ""; then
2836 echo "version string suffix $extra_version"
2837 fi
2838 echo "big-endian ${bigendian-no}"
2839 echo "runtime cpu detection ${runtime_cpudetect-no}"
2840 if enabled x86; then
2841 echo "yasm ${yasm-no}"
2842 echo "MMX enabled ${mmx-no}"
2843 echo "MMX2 enabled ${mmx2-no}"
2844 echo "3DNow! enabled ${amd3dnow-no}"
2845 echo "3DNow! extended enabled ${amd3dnowext-no}"
2846 echo "SSE enabled ${sse-no}"
2847 echo "SSSE3 enabled ${ssse3-no}"
2848 echo "CMOV enabled ${cmov-no}"
2849 echo "CMOV is fast ${fast_cmov-no}"
2850 echo "EBX available ${ebx_available-no}"
2851 echo "EBP available ${ebp_available-no}"
2852 echo "10 operands supported ${ten_operands-no}"
2853 fi
2854 if enabled arm; then
2855 echo "ARMv5TE enabled ${armv5te-no}"
2856 echo "ARMv6 enabled ${armv6-no}"
2857 echo "ARMv6T2 enabled ${armv6t2-no}"
2858 echo "ARM VFP enabled ${armvfp-no}"
2859 echo "IWMMXT enabled ${iwmmxt-no}"
2860 echo "NEON enabled ${neon-no}"
2861 fi
2862 if enabled mips; then
2863 echo "MMI enabled ${mmi-no}"
2864 fi
2865 if enabled ppc; then
2866 echo "AltiVec enabled ${altivec-no}"
2867 echo "PPC 4xx optimizations ${ppc4xx-no}"
2868 echo "dcbzl available ${dcbzl-no}"
2869 echo "performance report ${powerpc_perf-no}"
2870 fi
2871 if enabled sparc; then
2872 echo "VIS enabled ${vis-no}"
2873 fi
2874 echo "gprof enabled ${gprof-no}"
2875 echo "debug symbols ${debug-no}"
2876 echo "strip symbols ${stripping-no}"
2877 echo "optimizations ${optimizations-no}"
2878 echo "static ${static-no}"
2879 echo "shared ${shared-no}"
2880 echo "postprocessing support ${postproc-no}"
2881 echo "new filter support ${avfilter-no}"
2882 echo "filters using lavformat ${avfilter_lavf-no}"
2883 echo "network support ${network-no}"
2884 echo "threading support ${thread_type-no}"
2885 echo "SDL support ${sdl-no}"
2886 echo "Sun medialib support ${mlib-no}"
2887 echo "AVISynth enabled ${avisynth-no}"
2888 echo "libdc1394 support ${libdc1394-no}"
2889 echo "libdirac enabled ${libdirac-no}"
2890 echo "libfaac enabled ${libfaac-no}"
2891 echo "libfaad enabled ${libfaad-no}"
2892 echo "libfaad dlopened ${libfaadbin-no}"
2893 echo "libgsm enabled ${libgsm-no}"
2894 echo "libmp3lame enabled ${libmp3lame-no}"
2895 echo "libnut enabled ${libnut-no}"
2896 echo "libopencore-amrnb support ${libopencore_amrnb-no}"
2897 echo "libopencore-amrwb support ${libopencore_amrwb-no}"
2898 echo "libopenjpeg enabled ${libopenjpeg-no}"
2899 echo "librtmp enabled ${librtmp-no}"
2900 echo "libschroedinger enabled ${libschroedinger-no}"
2901 echo "libspeex enabled ${libspeex-no}"
2902 echo "libtheora enabled ${libtheora-no}"
2903 echo "libvorbis enabled ${libvorbis-no}"
2904 echo "libx264 enabled ${libx264-no}"
2905 echo "libxvid enabled ${libxvid-no}"
2906 echo "zlib enabled ${zlib-no}"
2907 echo "bzlib enabled ${bzlib-no}"
2908 echo
2909
2910 for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
2911 echo "Enabled ${type}s:"
2912 eval list=\$$(toupper $type)_LIST
2913 for part in $list; do
2914 enabled $part && echo ${part%_*}
2915 done | sort | pr -3 -t
2916 echo
2917 done
2918
2919 license="LGPL version 2.1 or later"
2920 if enabled nonfree; then
2921 license="nonfree and unredistributable"
2922 elif enabled gplv3; then
2923 license="GPL version 3 or later"
2924 elif enabled lgplv3; then
2925 license="LGPL version 3 or later"
2926 elif enabled gpl; then
2927 license="GPL version 2 or later"
2928 fi
2929
2930 echo "License: $license"
2931
2932 echo "Creating config.mak and config.h..."
2933
2934 # build tree in object directory if source path is different from current one
2935 if enabled source_path_used; then
2936 DIRS="
2937 doc
2938 libavcodec
2939 libavcodec/$arch
2940 libavdevice
2941 libavfilter
2942 libavformat
2943 libavutil
2944 libavutil/$arch
2945 libpostproc
2946 libswscale
2947 libswscale/$arch
2948 tests
2949 tools
2950 "
2951 FILES="
2952 Makefile
2953 common.mak
2954 subdir.mak
2955 doc/texi2pod.pl
2956 libavcodec/Makefile
2957 libavcodec/${arch}/Makefile
2958 libavdevice/Makefile
2959 libavfilter/Makefile
2960 libavformat/Makefile
2961 libavutil/Makefile
2962 libpostproc/Makefile
2963 libswscale/Makefile
2964 "
2965 map 'mkdir -p $v' $DIRS;
2966 map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES
2967 fi
2968
2969 enabled stripping || strip="echo skipping strip"
2970
2971 cat > config.mak <<EOF
2972 # Automatically generated by configure - do not modify!
2973 ifndef FFMPEG_CONFIG_MAK
2974 FFMPEG_CONFIG_MAK=1
2975 FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
2976 prefix=$prefix
2977 LIBDIR=\$(DESTDIR)$libdir
2978 SHLIBDIR=\$(DESTDIR)$shlibdir
2979 INCDIR=\$(DESTDIR)$incdir
2980 BINDIR=\$(DESTDIR)$bindir
2981 DATADIR=\$(DESTDIR)$datadir
2982 MANDIR=\$(DESTDIR)$mandir
2983 SRC_PATH="$source_path"
2984 SRC_PATH_BARE=$source_path
2985 BUILD_ROOT="$PWD"
2986 ARCH=$arch
2987 CC=$cc
2988 AS=$as
2989 LD=$ld
2990 DEPCC=$dep_cc
2991 YASM=$yasmexe
2992 YASMDEP=$yasmexe
2993 AR=$ar
2994 RANLIB=$ranlib
2995 CP=cp -p
2996 LN_S=$ln_s
2997 STRIP=$strip
2998 CPPFLAGS=$CPPFLAGS
2999 CFLAGS=$CFLAGS
3000 ASFLAGS=$ASFLAGS
3001 CC_O=$CC_O
3002 LDFLAGS=$LDFLAGS
3003 FFSERVERLDFLAGS=$FFSERVERLDFLAGS
3004 SHFLAGS=$SHFLAGS
3005 YASMFLAGS=$YASMFLAGS
3006 BUILDSUF=$build_suffix
3007 FULLNAME=$FULLNAME
3008 LIBPREF=$LIBPREF
3009 LIBSUF=$LIBSUF
3010 LIBNAME=$LIBNAME
3011 SLIBPREF=$SLIBPREF
3012 SLIBSUF=$SLIBSUF
3013 EXESUF=$EXESUF
3014 EXTRA_VERSION=$extra_version
3015 DEPFLAGS=$DEPFLAGS
3016 CCDEP=$CCDEP
3017 ASDEP=$ASDEP
3018 CC_DEPFLAGS=$CC_DEPFLAGS
3019 AS_DEPFLAGS=$AS_DEPFLAGS
3020 HOSTCC=$host_cc
3021 HOSTCFLAGS=$host_cflags
3022 HOSTEXESUF=$HOSTEXESUF
3023 HOSTLDFLAGS=$host_ldflags
3024 HOSTLIBS=$host_libs
3025 TARGET_EXEC=$target_exec
3026 TARGET_PATH=$target_path
3027 SDL_LIBS=$sdl_libs
3028 SDL_CFLAGS=$sdl_cflags
3029 LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
3030 EXTRALIBS=$extralibs
3031 INSTALL=install
3032 LIBTARGET=${LIBTARGET}
3033 SLIBNAME=${SLIBNAME}
3034 SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
3035 SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
3036 SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
3037 SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
3038 SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
3039 SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
3040 SAMPLES=$samples
3041 EOF
3042
3043 get_version(){
3044 name=$1
3045 file=$source_path/$2
3046 eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
3047 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
3048 lcname=$(tolower $name)
3049 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
3050 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
3051 }
3052
3053 get_version LIBSWSCALE libswscale/swscale.h
3054 get_version LIBPOSTPROC libpostproc/postprocess.h
3055 get_version LIBAVCODEC libavcodec/avcodec.h
3056 get_version LIBAVDEVICE libavdevice/avdevice.h
3057 get_version LIBAVFORMAT libavformat/avformat.h
3058 get_version LIBAVUTIL libavutil/avutil.h
3059 get_version LIBAVFILTER libavfilter/avfilter.h
3060
3061 enabled asmalign_pot || align_shift="1 <<"
3062
3063 cat > $TMPH <<EOF
3064 /* Automatically generated by configure - do not modify! */
3065 #ifndef FFMPEG_CONFIG_H
3066 #define FFMPEG_CONFIG_H
3067 #define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
3068 #define FFMPEG_LICENSE "$(c_escape $license)"
3069 #define FFMPEG_DATADIR "$(eval c_escape $datadir)"
3070 #define CC_TYPE "$cc_type"
3071 #define CC_VERSION $cc_version
3072 #define restrict $_restrict
3073 #define ASMALIGN(ZEROBITS) ".align $align_shift " #ZEROBITS "\\n\\t"
3074 #define EXTERN_PREFIX "${extern_prefix}"
3075 #define EXTERN_ASM ${extern_prefix}
3076 EOF
3077
3078 test -n "$malloc_prefix" &&
3079 echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
3080
3081 if enabled small || disabled optimizations; then
3082 echo "#undef av_always_inline" >> $TMPH
3083 echo "#define av_always_inline" >> $TMPH
3084 fi
3085
3086 print_config ARCH_ $TMPH config.mak $ARCH_LIST
3087 print_config HAVE_ $TMPH config.mak $HAVE_LIST
3088 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \
3089 $CONFIG_EXTRA \
3090 $DECODER_LIST \
3091 $ENCODER_LIST \
3092 $HWACCEL_LIST \
3093 $PARSER_LIST \
3094 $BSF_LIST \
3095 $DEMUXER_LIST \
3096 $MUXER_LIST \
3097 $FILTER_LIST \
3098 $PROTOCOL_LIST \
3099 $INDEV_LIST \
3100 $OUTDEV_LIST \
3101
3102 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
3103 echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
3104
3105 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
3106 cp_if_changed $TMPH config.h
3107
3108 cat > $TMPH <<EOF
3109 /* Generated by ffconf */
3110 #ifndef AVUTIL_AVCONFIG_H
3111 #define AVUTIL_AVCONFIG_H
3112 EOF
3113
3114 print_config AV_HAVE_ $TMPH /dev/null $HAVE_LIST_PUB
3115
3116 echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
3117
3118 cp_if_changed $TMPH libavutil/avconfig.h
3119
3120 # build pkg-config files
3121
3122 pkgconfig_generate(){
3123 name=$1
3124 shortname=${name#lib}${build_suffix}
3125 comment=$2
3126 version=$3
3127 libs=$4
3128 requires=$5
3129 cat <<EOF > $name/$name.pc
3130 prefix=$prefix
3131 exec_prefix=\${prefix}
3132 libdir=$libdir
3133 includedir=$incdir
3134
3135 Name: $name
3136 Description: $comment
3137 Version: $version
3138 Requires: $(enabled shared || echo $requires)
3139 Requires.private: $(enabled shared && echo $requires)
3140 Conflicts:
3141 Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
3142 Libs.private: $(enabled shared && echo $libs)
3143 Cflags: -I\${includedir}
3144 EOF
3145 cat <<EOF > $name/$name-uninstalled.pc
3146 prefix=
3147 exec_prefix=
3148 libdir=\${pcfiledir}
3149 includedir=${source_path}
3150
3151 Name: $name
3152 Description: $comment
3153 Version: $version
3154 Requires: $requires
3155 Conflicts:
3156 Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
3157 Cflags: -I\${includedir}
3158 EOF
3159 }
3160
3161 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
3162 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
3163 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
3164 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
3165 enabled avfilter &&
3166 pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
3167 enabled postproc &&
3168 pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
3169 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"