Add AMD 3DNow! instruction enabling/disabling support in the build system.
[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 echo "Usage: configure [options]"
59 echo "Options: [defaults in brackets after descriptions]"
60 echo
61 echo "Standard options:"
62 echo " --help print this message"
63 echo " --logfile=FILE log tests and output to FILE [config.err]"
64 echo " --disable-logging do not log configure debug information"
65 echo " --prefix=PREFIX install in PREFIX [$prefix]"
66 echo " --bindir=DIR install binaries in DIR [PREFIX/bin]"
67 echo " --libdir=DIR install libs in DIR [PREFIX/lib]"
68 echo " --shlibdir=DIR install shared libs in DIR [PREFIX/lib]"
69 echo " --incdir=DIR install includes in DIR [PREFIX/include]"
70 echo " --mandir=DIR install man page in DIR [PREFIX/share/man]"
71 echo
72 echo "Configuration options:"
73 echo " --disable-static do not build static libraries [no]"
74 echo " --enable-shared build shared libraries [no]"
75 echo " --enable-gpl allow use of GPL code, the resulting libs"
76 echo " and binaries will be under GPL [no]"
77 echo " --enable-nonfree allow use of nonfree code, the resulting libs"
78 echo " and binaries will be unredistributable [no]"
79 echo " --disable-ffmpeg disable ffmpeg build"
80 echo " --disable-ffplay disable ffplay build"
81 echo " --disable-ffserver disable ffserver build"
82 echo " --enable-postproc enable GPLed postprocessing support [no]"
83 echo " --enable-swscale enable GPLed software scaler support [no]"
84 echo " --enable-avfilter video filter support (replaces vhook) [no]"
85 echo " --enable-avfilter-lavf video filters dependent on avformat [no]"
86 echo " --disable-vhook disable video hooking support"
87 echo " --enable-beosthreads use BeOS threads [no]"
88 echo " --enable-os2threads use OS/2 threads [no]"
89 echo " --enable-pthreads use pthreads [no]"
90 echo " --enable-w32threads use Win32 threads [no]"
91 echo " --enable-x11grab enable X11 grabbing [no]"
92 echo " --enable-vdpau enable VDPAU support [no]"
93 echo " --enable-xvmc enable XvMC support [no]"
94 echo " --disable-network disable network support [no]"
95 echo " --disable-ipv6 disable IPv6 support [no]"
96 echo " --disable-mpegaudio-hp faster (but less accurate) MPEG audio decoding [no]"
97 echo " --enable-gray enable full grayscale support (slower color)"
98 echo " --disable-fastdiv disable table-based division"
99 echo " --enable-small optimize for size instead of speed"
100 echo " --disable-aandct disable AAN DCT code"
101 echo " --disable-fft disable FFT code"
102 echo " --disable-golomb disable Golomb code"
103 echo " --disable-mdct disable MDCT code"
104 echo " --enable-hardcoded-tables use hardcoded tables instead of runtime generation"
105 echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers"
106 echo " --enable-beos-netserver enable BeOS netserver"
107 echo " --disable-encoder=NAME disable encoder NAME"
108 echo " --enable-encoder=NAME enable encoder NAME"
109 echo " --disable-encoders disable all encoders"
110 echo " --disable-decoder=NAME disable decoder NAME"
111 echo " --enable-decoder=NAME enable decoder NAME"
112 echo " --disable-decoders disable all decoders"
113 echo " --disable-muxer=NAME disable muxer NAME"
114 echo " --enable-muxer=NAME enable muxer NAME"
115 echo " --disable-muxers disable all muxers"
116 echo " --disable-demuxer=NAME disable demuxer NAME"
117 echo " --enable-demuxer=NAME enable demuxer NAME"
118 echo " --disable-demuxers disable all demuxers"
119 echo " --enable-parser=NAME enable parser NAME"
120 echo " --disable-parser=NAME disable parser NAME"
121 echo " --disable-parsers disable all parsers"
122 echo " --enable-bsf=NAME enable bitstream filter NAME"
123 echo " --disable-bsf=NAME disable bitstream filter NAME"
124 echo " --disable-bsfs disable all bitstream filters"
125 echo " --enable-protocol=NAME enable protocol NAME"
126 echo " --disable-protocol=NAME disable protocol NAME"
127 echo " --disable-protocols disable all protocols"
128 echo " --disable-indevs disable input devices"
129 echo " --disable-outdevs disable output devices"
130 echo " --disable-devices disable all devices"
131 echo " --enable-filter=NAME enable filter NAME"
132 echo " --disable-filter=NAME disable filter NAME"
133 echo " --disable-filters disable all filters"
134 echo " --list-decoders show all available decoders"
135 echo " --list-encoders show all available encoders"
136 echo " --list-muxers show all available muxers"
137 echo " --list-demuxers show all available demuxers"
138 echo " --list-parsers show all available parsers"
139 echo " --list-protocols show all available protocols"
140 echo " --list-bsfs show all available bitstream filters"
141 echo " --list-indevs show all available input devices"
142 echo " --list-outdevs show all available output devices"
143 echo " --list-filters show all available filters"
144 echo
145 echo "External library support:"
146 echo " --enable-avisynth enable reading of AVISynth script files [no]"
147 echo " --enable-bzlib enable bzlib [autodetect]"
148 echo " --enable-libamr-nb enable libamr-nb floating point audio codec [no]"
149 echo " --enable-libamr-wb enable libamr-wb floating point audio codec [no]"
150 echo " --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394"
151 echo " and libraw1394 [no]"
152 echo " --enable-libdirac enable Dirac support via libdirac [no]"
153 echo " --enable-libfaac enable FAAC support via libfaac [no]"
154 echo " --enable-libfaad enable FAAD support via libfaad [no]"
155 echo " --enable-libfaadbin open libfaad.so.0 at runtime [no]"
156 echo " --enable-libgsm enable GSM support via libgsm [no]"
157 echo " --enable-libmp3lame enable MP3 encoding via libmp3lame [no]"
158 echo " --enable-libnut enable NUT (de)muxing via libnut,"
159 echo " native (de)muxer exists [no]"
160 echo " --enable-libschroedinger enable Dirac support via libschroedinger [no]"
161 echo " --enable-libspeex enable Speex decoding via libspeex [no]"
162 echo " --enable-libtheora enable Theora encoding via libtheora [no]"
163 echo " --enable-libvorbis enable Vorbis encoding via libvorbis,"
164 echo " native implementation exists [no]"
165 echo " --enable-libx264 enable H.264 encoding via x264 [no]"
166 echo " --enable-libxvid enable Xvid encoding via xvidcore,"
167 echo " native MPEG-4/Xvid encoder exists [no]"
168 echo " --enable-mlib enable Sun medialib [no]"
169 echo " --enable-zlib enable zlib [autodetect]"
170 echo ""
171 echo "Advanced options (experts only):"
172 echo " --source-path=PATH path to source code [$source_path]"
173 echo " --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]"
174 echo " --enable-cross-compile assume a cross-compiler is used"
175 echo " --target-os=OS compiler targets OS [$target_os]"
176 echo " --target-exec=CMD command to run executables on target"
177 echo " --target-path=DIR path to view of build directory on target"
178 echo " --nm=NM use nm tool"
179 echo " --cc=CC use C compiler CC [$cc_default]"
180 echo " --host-cc=HOSTCC use host C compiler HOSTCC"
181 echo " --host-cflags=HCFLAGS use HCFLAGS when compiling for host"
182 echo " --host-ldflags=HLDFLAGS use HLDFLAGS when linking for host"
183 echo " --host-libs=HLIBS use libs HLIBS when linking for host"
184 echo " --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]"
185 echo " --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
186 echo " --extra-libs=ELIBS add ELIBS [$ELIBS]"
187 echo " --extra-version=STRING version string suffix []"
188 echo " --build-suffix=SUFFIX library name suffix []"
189 echo " --arch=ARCH select architecture [$arch]"
190 echo " --cpu=CPU select the minimum required CPU (affects"
191 echo " instruction selection, may crash on older CPUs)"
192 echo " --enable-powerpc-perf enable performance report on PPC"
193 echo " (requires enabling PMC)"
194 echo " --disable-altivec disable AltiVec optimizations"
195 echo " --disable-amd3dnow disable 3DNow! optimizations"
196 echo " --disable-mmx disable MMX optimizations"
197 echo " --disable-mmx2 disable MMX2 optimizations"
198 echo " --disable-sse disable SSE optimizations"
199 echo " --disable-ssse3 disable SSSE3 optimizations"
200 echo " --disable-armv5te disable armv5te optimizations"
201 echo " --disable-armv6 disable armv6 optimizations"
202 echo " --disable-armv6t2 disable armv6t2 optimizations"
203 echo " --disable-armvfp disable ARM VFP optimizations"
204 echo " --disable-iwmmxt disable iwmmxt optimizations"
205 echo " --disable-mmi disable MMI optimizations"
206 echo " --disable-neon disable neon optimizations"
207 echo " --disable-vis disable VIS optimizations"
208 echo
209 echo "Developer options (useful when working on FFmpeg itself):"
210 echo " --disable-debug disable debugging symbols"
211 echo " --enable-debug=LEVEL set the debug level [$debuglevel]"
212 echo " --enable-gprof enable profiling with gprof [$gprof]"
213 echo " --disable-optimizations disable compiler optimizations"
214 echo " --enable-extra-warnings enable more compiler warnings"
215 echo " --disable-stripping disable stripping of executables and shared libraries"
216 echo ""
217 echo "NOTE: Object files are built at the place where configure is launched."
218 exit 0
219 }
220
221 log(){
222 echo "$@" >> $logfile
223 }
224
225 log_file(){
226 log BEGIN $1
227 pr -n -t $1 >> $logfile
228 log END $1
229 }
230
231 echolog(){
232 log "$@"
233 echo "$@"
234 }
235
236 die(){
237 echolog "$@"
238 cat <<EOF
239 If you think configure made a mistake, make sure you are using the latest
240 version from SVN. If the latest version fails, report the problem to the
241 ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
242 EOF
243 if disabled logging; then
244 cat <<EOF
245 Rerun configure with logging enabled (do not use --disable-logging), and
246 include the log this produces with your report.
247 EOF
248 else
249 cat <<EOF
250 Include the log file "$logfile" produced by configure as this will help
251 solving the problem.
252 EOF
253 fi
254 rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
255 exit 1
256 }
257
258 # Avoid locale weirdness, besides we really just want to translate ASCII.
259 toupper(){
260 echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
261 }
262
263 tolower(){
264 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
265 }
266
267 set_all(){
268 value=$1
269 shift
270 for var in $*; do
271 eval $var=$value
272 done
273 }
274
275 set_weak(){
276 value=$1
277 shift
278 for var; do
279 eval : \${$var:=$value}
280 done
281 }
282
283 pushvar(){
284 for var in $*; do
285 eval level=\${${var}_level:=0}
286 eval ${var}_${level}="\$$var"
287 eval ${var}_level=$(($level+1))
288 done
289 }
290
291 popvar(){
292 for var in $*; do
293 eval level=\${${var}_level:-0}
294 test $level = 0 && continue
295 eval level=$(($level-1))
296 eval $var="\${${var}_${level}}"
297 eval ${var}_level=$level
298 eval unset ${var}_${level}
299 done
300 }
301
302 enable(){
303 set_all yes $*
304 }
305
306 disable(){
307 set_all no $*
308 }
309
310 enable_weak(){
311 set_weak yes $*
312 }
313
314 disable_weak(){
315 set_weak no $*
316 }
317
318 do_enable_deep(){
319 for var; do
320 enabled $var && continue
321 eval sel="\$${var}_select"
322 eval sgs="\$${var}_suggest"
323 pushvar var sgs
324 enable_deep $sel
325 popvar sgs
326 enable_deep_weak $sgs
327 popvar var
328 done
329 }
330
331 enable_deep(){
332 do_enable_deep $*
333 enable $*
334 }
335
336 enable_deep_weak(){
337 do_enable_deep $*
338 enable_weak $*
339 }
340
341 enabled(){
342 test "${1#!}" = "$1" && op== || op=!=
343 eval test "x\$${1#!}" $op "xyes"
344 }
345
346 disabled(){
347 test "${1#!}" = "$1" && op== || op=!=
348 eval test "x\$${1#!}" $op "xno"
349 }
350
351 enabled_all(){
352 for opt; do
353 enabled $opt || return 1
354 done
355 }
356
357 disabled_all(){
358 for opt; do
359 disabled $opt || return 1
360 done
361 }
362
363 enabled_any(){
364 for opt; do
365 enabled $opt && return 0
366 done
367 }
368
369 disabled_any(){
370 for opt; do
371 disabled $opt && return 0
372 done
373 return 1
374 }
375
376 set_default(){
377 for opt; do
378 eval : \${$opt:=\$${opt}_default}
379 done
380 }
381
382 is_in(){
383 value=$1
384 shift
385 for var in $*; do
386 [ $var = $value ] && return 0
387 done
388 return 1
389 }
390
391 check_deps(){
392 for cfg; do
393 cfg="${cfg#!}"
394 enabled ${cfg}_checking && die "Circular dependency for $cfg."
395 disabled ${cfg}_checking && continue
396 enable ${cfg}_checking
397
398 eval dep_all="\$${cfg}_deps"
399 eval dep_any="\$${cfg}_deps_any"
400 eval dep_sel="\$${cfg}_select"
401 eval dep_sgs="\$${cfg}_suggest"
402
403 pushvar cfg dep_all dep_any dep_sel dep_sgs
404 check_deps $dep_all $dep_any $dep_sel $dep_sgs
405 popvar cfg dep_all dep_any dep_sel dep_sgs
406
407 enabled_all $dep_all || disable $cfg
408 enabled_any $dep_any || disable $cfg
409 disabled_any $dep_sel && disable $cfg
410
411 if enabled $cfg; then
412 eval dep_extralibs="\$${cfg}_extralibs"
413 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
414 enable_deep $dep_sel
415 enable_deep_weak $dep_sgs
416 fi
417
418 disable ${cfg}_checking
419 done
420 }
421
422 print_config(){
423 pfx=$1
424 header=$2
425 makefile=$3
426 shift 3
427 for cfg; do
428 ucname="`toupper $cfg`"
429 if enabled $cfg; then
430 echo "#define ${pfx}${ucname} 1" >> $header
431 echo "${pfx}${ucname}=yes" >> $makefile
432 else
433 echo "#define ${pfx}${ucname} 0" >> $header
434 fi
435 done
436 }
437
438 flags_saved(){
439 (: ${SAVE_CFLAGS?}) 2> /dev/null
440 }
441
442 save_flags(){
443 flags_saved && return
444 SAVE_CFLAGS="$CFLAGS"
445 SAVE_LDFLAGS="$LDFLAGS"
446 SAVE_extralibs="$extralibs"
447 }
448
449 restore_flags(){
450 flags_saved || return
451 CFLAGS="$SAVE_CFLAGS"
452 LDFLAGS="$SAVE_LDFLAGS"
453 extralibs="$SAVE_extralibs"
454 unset SAVE_CFLAGS
455 unset SAVE_LDFLAGS
456 unset SAVE_extralibs
457 }
458
459 temp_cflags(){
460 save_flags
461 CFLAGS="$CFLAGS $*"
462 }
463
464 temp_ldflags(){
465 save_flags
466 LDFLAGS="$LDFLAGS $*"
467 }
468
469 temp_extralibs(){
470 save_flags
471 extralibs="$extralibs $*"
472 }
473
474 append(){
475 var=$1
476 shift
477 flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
478 eval "$var=\"\$$var $*\""
479 }
480
481 add_cflags(){
482 append CFLAGS "$@"
483 }
484
485 add_ldflags(){
486 append LDFLAGS "$@"
487 }
488
489 add_extralibs(){
490 append extralibs "$@"
491 }
492
493 check_cmd(){
494 log "$@"
495 "$@" >> $logfile 2>&1
496 }
497
498 check_cc(){
499 log check_cc "$@"
500 cat > $TMPC
501 log_file $TMPC
502 check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
503 }
504
505 check_cpp(){
506 log check_cpp "$@"
507 cat > $TMPC
508 log_file $TMPC
509 check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
510 }
511
512 check_asm(){
513 log check_asm "$@"
514 name="$1"
515 asm="$2"
516 shift 2
517 check_cc "$@" <<EOF && enable $name || disable $name
518 void foo(void){ __asm__ volatile($asm); }
519 EOF
520 }
521
522 check_yasm(){
523 log check_yasm "$@"
524 echo "$1" > $TMPS
525 log_file $TMPS
526 shift 1
527 check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
528 }
529
530 check_ld(){
531 log check_ld "$@"
532 check_cc || return
533 flags=''
534 libs=''
535 for f; do
536 test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
537 done
538 check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
539 }
540
541 check_cflags(){
542 log check_cflags "$@"
543 check_cc "$@" <<EOF && add_cflags "$@"
544 int x;
545 EOF
546 }
547
548 check_ldflags(){
549 log check_ldflags "$@"
550 check_ld "$@" <<EOF && add_ldflags "$@"
551 int main(void){ return 0; }
552 EOF
553 }
554
555 check_header(){
556 log check_header "$@"
557 header=$1
558 shift
559 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
560 disable $var
561 check_cpp "$@" <<EOF && enable $var
562 #include <$header>
563 int x;
564 EOF
565 }
566
567 check_func(){
568 log check_func "$@"
569 func=$1
570 shift
571 disable $func
572 check_ld "$@" <<EOF && enable $func
573 extern int $func();
574 int main(void){ $func(); }
575 EOF
576 }
577
578 check_func_headers(){
579 log check_func_headers "$@"
580 headers=$1
581 func=$2
582 shift 2
583 disable $func
584 incs=""
585 for hdr in $headers; do
586 incs="$incs
587 #include <$hdr>"
588 done
589 check_ld "$@" <<EOF && enable $func
590 $incs
591 int main(int argc, char **argv){
592 (void) $func;
593 return 0;
594 }
595 EOF
596 }
597
598 check_cpp_condition(){
599 log check_cpp_condition "$@"
600 header=$1
601 condition=$2
602 check_cpp <<EOF
603 #include <$header>
604 #if !($condition)
605 #error "unsatisfied condition: $condition"
606 #endif
607 EOF
608 }
609
610 check_lib(){
611 log check_lib "$@"
612 header="$1"
613 func="$2"
614 shift 2
615 temp_extralibs "$@"
616 check_header $header && check_func $func && add_extralibs "$@"
617 err=$?
618 restore_flags
619 return $err
620 }
621
622 check_lib2(){
623 log check_lib2 "$@"
624 headers="$1"
625 func="$2"
626 shift 2
627 temp_extralibs "$@"
628 check_func_headers "$headers" $func && add_extralibs "$@"
629 err=$?
630 restore_flags
631 return $err
632 }
633
634 check_exec(){
635 check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
636 }
637
638 check_exec_crash(){
639 code=`cat`
640
641 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
642 # are safe but may not be available everywhere. Thus we use
643 # raise(SIGTERM) instead. The check is run in a subshell so we
644 # can redirect the "Terminated" message from the shell. SIGBUS
645 # is not defined by standard C so it is used conditionally.
646
647 (check_exec "$@") >> $logfile 2>&1 <<EOF
648 #include <signal.h>
649 static void sighandler(int sig){
650 raise(SIGTERM);
651 }
652 int main(void){
653 signal(SIGILL, sighandler);
654 signal(SIGFPE, sighandler);
655 signal(SIGSEGV, sighandler);
656 #ifdef SIGBUS
657 signal(SIGBUS, sighandler);
658 #endif
659 { $code }
660 }
661 EOF
662 }
663
664 check_type(){
665 log check_type "$@"
666 headers=$1
667 type=$2
668 shift 2
669 disable $type
670 incs=""
671 for hdr in $headers; do
672 incs="$incs
673 #include <$hdr>"
674 done
675 check_cc "$@" <<EOF && enable $type
676 $incs
677 $type v;
678 EOF
679 }
680
681 require(){
682 name="$1"
683 header="$2"
684 func="$3"
685 shift 3
686 check_lib $header $func "$@" || die "ERROR: $name not found"
687 }
688
689 require2(){
690 name="$1"
691 headers="$2"
692 func="$3"
693 shift 3
694 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
695 }
696
697 check_foo_config(){
698 cfg=$1
699 pkg=$2
700 header=$3
701 func=$4
702 shift 4
703 disable $cfg
704 check_cmd ${pkg}-config --version
705 err=$?
706 if test "$err" = 0; then
707 temp_cflags `${pkg}-config --cflags`
708 temp_extralibs `${pkg}-config --libs`
709 check_lib "$@" $header $func && enable $cfg
710 fi
711 return $err
712 }
713
714 apply(){
715 file=$1
716 shift
717 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
718 }
719
720 # CONFIG_LIST contains configurable options, while HAVE_LIST is for
721 # system-dependent things.
722
723 COMPONENT_LIST="
724 bsfs
725 decoders
726 demuxers
727 encoders
728 filters
729 indevs
730 muxers
731 outdevs
732 parsers
733 protocols
734 "
735
736 CONFIG_LIST="
737 $COMPONENT_LIST
738 aandct
739 avfilter
740 avfilter_lavf
741 avisynth
742 beos_netserver
743 bzlib
744 fastdiv
745 ffmpeg
746 ffplay
747 ffserver
748 fft
749 golomb
750 gpl
751 gprof
752 gray
753 hardcoded_tables
754 ipv6
755 libamr_nb
756 libamr_wb
757 libdc1394
758 libdirac
759 libfaac
760 libfaad
761 libfaadbin
762 libgsm
763 libmp3lame
764 libnut
765 libschroedinger
766 libspeex
767 libtheora
768 libvorbis
769 libx264
770 libxvid
771 mdct
772 memalign_hack
773 mlib
774 mpegaudio_hp
775 network
776 nonfree
777 postproc
778 powerpc_perf
779 shared
780 small
781 static
782 swscale
783 vdpau
784 vhook
785 x11grab
786 xvmc
787 zlib
788 "
789
790 THREADS_LIST='
791 beosthreads
792 os2threads
793 pthreads
794 w32threads
795 '
796
797 ARCH_LIST='
798 alpha
799 arm
800 bfin
801 ia64
802 m68k
803 mips
804 parisc
805 ppc
806 s390
807 sh4
808 sparc
809 sparc64
810 x86
811 x86_32
812 x86_64
813 '
814
815 ARCH_EXT_LIST='
816 altivec
817 amd3dnow
818 armv5te
819 armv6
820 armv6t2
821 armvfp
822 iwmmxt
823 mmi
824 mmx
825 mmx2
826 neon
827 ppc4xx
828 sse
829 ssse3
830 vis
831 '
832
833 HAVE_LIST="
834 $ARCH_EXT_LIST
835 $THREADS_LIST
836 altivec_h
837 arpa_inet_h
838 bswap
839 closesocket
840 cmov
841 conio_h
842 dcbzl
843 dev_bktr_ioctl_bt848_h
844 dev_bktr_ioctl_meteor_h
845 dev_ic_bt8xx_h
846 dev_video_meteor_ioctl_meteor_h
847 dev_video_bktr_ioctl_bt848_h
848 dlfcn_h
849 dlopen
850 dos_paths
851 ebp_available
852 ebx_available
853 fast_64bit
854 fast_cmov
855 fast_unaligned
856 fork
857 freetype2
858 gethrtime
859 GetProcessTimes
860 getrusage
861 imlib2
862 inet_aton
863 inline_asm
864 libdc1394_1
865 libdc1394_2
866 llrint
867 lrint
868 lrintf
869 machine_ioctl_bt848_h
870 machine_ioctl_meteor_h
871 malloc_h
872 memalign
873 mkstemp
874 pld
875 posix_memalign
876 ppc64
877 round
878 roundf
879 sdl
880 sdl_video_size
881 setmode
882 socklen_t
883 soundcard_h
884 poll_h
885 sys_mman_h
886 sys_resource_h
887 sys_select_h
888 sys_soundcard_h
889 sys_videoio_h
890 termios_h
891 threads
892 truncf
893 winsock2_h
894 yasm
895 "
896
897 # options emitted with CONFIG_ prefix but not available on command line
898 CONFIG_EXTRA="
899 fft_mmx
900 oldscaler
901 "
902
903 CMDLINE_SELECT="
904 $ARCH_EXT_LIST
905 $CONFIG_LIST
906 $THREADS_LIST
907 cross_compile
908 debug
909 extra_warnings
910 logging
911 optimizations
912 stripping
913 "
914
915 PATHS_LIST='
916 bindir
917 incdir
918 libdir
919 mandir
920 prefix
921 shlibdir
922 '
923
924 CMDLINE_SET="
925 $PATHS_LIST
926 arch
927 build_suffix
928 cc
929 cpu
930 cross_prefix
931 extra_version
932 host_cc
933 host_cflags
934 host_ldflags
935 host_libs
936 logfile
937 nm
938 source_path
939 target_exec
940 target_os
941 target_path
942 "
943
944 # code dependency declarations
945
946 # architecture extensions
947 altivec_deps="ppc"
948 amd3dnow_deps="mmx"
949 armv5te_deps="arm"
950 armv6_deps="arm"
951 armv6t2_deps="arm"
952 armvfp_deps="arm"
953 iwmmxt_deps="arm"
954 mmi_deps="mips"
955 mmx_deps="x86"
956 mmx2_deps="mmx"
957 neon_deps="arm"
958 ppc4xx_deps="ppc"
959 sse_deps="mmx"
960 ssse3_deps="sse"
961 vis_deps="sparc"
962
963 # common features
964 fft_suggest="fft_mmx"
965 fft_mmx_deps="mmx yasm"
966 oldscaler_deps="!swscale"
967
968 # decoders / encoders
969 aac_decoder_select="fft mdct"
970 ac3_decoder_deps="gpl"
971 ac3_decoder_select="fft mdct"
972 atrac3_decoder_select="fft mdct"
973 cavs_decoder_select="golomb"
974 cook_decoder_select="fft mdct"
975 cscd_decoder_suggest="zlib"
976 dca_decoder_select="fft mdct"
977 dnxhd_encoder_select="aandct"
978 dxa_decoder_select="zlib"
979 eac3_decoder_deps="gpl"
980 eac3_decoder_select="fft mdct"
981 eatgq_decoder_select="aandct"
982 ffv1_decoder_select="golomb"
983 flac_decoder_select="golomb"
984 flac_encoder_select="golomb"
985 flashsv_decoder_select="zlib"
986 flashsv_encoder_select="zlib"
987 flv_encoder_select="aandct"
988 h261_encoder_select="aandct"
989 h263_encoder_select="aandct"
990 h263p_encoder_select="aandct"
991 h264_decoder_select="golomb"
992 h264_vdpau_decoder_deps="vdpau"
993 imc_decoder_select="fft mdct"
994 jpegls_decoder_select="golomb"
995 jpegls_encoder_select="golomb"
996 ljpeg_encoder_select="aandct"
997 loco_decoder_select="golomb"
998 mjpeg_encoder_select="aandct"
999 mpeg1video_encoder_select="aandct"
1000 mpeg2video_encoder_select="aandct"
1001 mpeg4_encoder_select="aandct"
1002 mpeg_vdpau_decoder_deps="vdpau"
1003 mpeg1_vdpau_decoder_deps="vdpau"
1004 mpeg_xvmc_decoder_deps="xvmc X11_extensions_XvMClib_h"
1005 msmpeg4v1_encoder_select="aandct"
1006 msmpeg4v2_encoder_select="aandct"
1007 msmpeg4v3_encoder_select="aandct"
1008 nellymoser_decoder_select="fft mdct"
1009 nellymoser_encoder_select="fft mdct"
1010 png_decoder_select="zlib"
1011 png_encoder_select="zlib"
1012 qdm2_decoder_select="fft mdct"
1013 rv10_encoder_select="aandct"
1014 rv20_encoder_select="aandct"
1015 shorten_decoder_select="golomb"
1016 sonic_decoder_select="golomb"
1017 sonic_encoder_select="golomb"
1018 sonic_ls_encoder_select="golomb"
1019 svq3_decoder_select="golomb"
1020 svq3_decoder_suggest="zlib"
1021 tiff_decoder_suggest="zlib"
1022 tiff_encoder_suggest="zlib"
1023 tscc_decoder_select="zlib"
1024 vc1_vdpau_decoder_deps="vdpau"
1025 vorbis_decoder_select="fft mdct"
1026 vorbis_encoder_select="fft mdct"
1027 wmav1_decoder_select="fft mdct"
1028 wmav1_encoder_select="fft mdct"
1029 wmav2_decoder_select="fft mdct"
1030 wmav2_encoder_select="fft mdct"
1031 wmv1_encoder_select="aandct"
1032 wmv2_encoder_select="aandct"
1033 wmv3_vdpau_decoder_deps="vdpau"
1034 zlib_decoder_select="zlib"
1035 zlib_encoder_select="zlib"
1036 zmbv_decoder_select="zlib"
1037 zmbv_encoder_select="zlib"
1038
1039 # external libraries
1040 libamr_nb_decoder_deps="libamr_nb"
1041 libamr_nb_encoder_deps="libamr_nb"
1042 libamr_wb_decoder_deps="libamr_wb"
1043 libamr_wb_encoder_deps="libamr_wb"
1044 libdirac_decoder_deps="libdirac !libschroedinger"
1045 libdirac_encoder_deps="libdirac"
1046 libfaac_encoder_deps="libfaac"
1047 libfaad_decoder_deps="libfaad"
1048 libfaadbin_decoder_extralibs='$ldl'
1049 libgsm_decoder_deps="libgsm"
1050 libgsm_encoder_deps="libgsm"
1051 libgsm_ms_decoder_deps="libgsm"
1052 libgsm_ms_encoder_deps="libgsm"
1053 libmp3lame_encoder_deps="libmp3lame"
1054 libschroedinger_decoder_deps="libschroedinger"
1055 libschroedinger_encoder_deps="libschroedinger"
1056 libspeex_decoder_deps="libspeex"
1057 libtheora_encoder_deps="libtheora"
1058 libvorbis_encoder_deps="libvorbis"
1059 libx264_encoder_deps="libx264"
1060 libxvid_encoder_deps="libxvid"
1061 mpeg4aac_decoder_deps="libfaad"
1062 vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1063
1064 # demuxers / muxers
1065 ac3_demuxer_deps="ac3_parser"
1066 audio_beos_demuxer_deps="audio_beos"
1067 audio_beos_demuxer_extralibs="-lmedia -lbe"
1068 audio_beos_muxer_deps="audio_beos"
1069 audio_beos_muxer_extralibs="-lmedia -lbe"
1070 avisynth_demuxer_deps="avisynth"
1071 bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
1072 dirac_demuxer_deps="dirac_parser"
1073 dv1394_demuxer_deps="dv1394 dv_demuxer"
1074 libdc1394_demuxer_deps="libdc1394"
1075 libnut_demuxer_deps="libnut"
1076 libnut_muxer_deps="libnut"
1077 matroska_demuxer_suggest="zlib bzlib"
1078 mov_demuxer_suggest="zlib"
1079 mp3_demuxer_deps="mpegaudio_parser"
1080 oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
1081 oss_muxer_deps_any="soundcard_h sys_soundcard_h"
1082 redir_demuxer_deps="network"
1083 rtp_muxer_deps="network rtp_protocol"
1084 rtsp_demuxer_deps="sdp_demuxer"
1085 sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
1086 v4l_demuxer_deps="linux_videodev_h"
1087 v4l2_demuxer_deps_any="linux_videodev2_h sys_videoio_h"
1088 vfwcap_demuxer_deps="capCreateCaptureWindow"
1089 vfwcap_demuxer_extralibs="-lvfw32"
1090 x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
1091 x11_grab_device_demuxer_extralibs="-lX11 -lXext"
1092
1093 # protocols
1094 http_protocol_deps="network"
1095 rtp_protocol_deps="udp_protocol"
1096 tcp_protocol_deps="network"
1097 udp_protocol_deps="network"
1098
1099 # filters
1100 movie_filter_deps="avfilter_lavf"
1101
1102 # programs
1103 ffplay_deps="sdl"
1104 ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
1105 ffserver_extralibs='$ldl'
1106 vhook_extralibs='$ldl'
1107
1108
1109 # default parameters
1110
1111 logfile="config.err"
1112
1113 # installation paths
1114 prefix_default="/usr/local"
1115 bindir_default='${prefix}/bin'
1116 incdir_default='${prefix}/include'
1117 libdir_default='${prefix}/lib'
1118 mandir_default='${prefix}/share/man'
1119 shlibdir_default="$libdir_default"
1120
1121 # toolchain
1122 ar="ar"
1123 cc_default="gcc"
1124 host_cc_default="gcc"
1125 ln_s="ln -sf"
1126 nm_default="nm"
1127 objformat="elf"
1128 ranlib="ranlib"
1129 strip="strip"
1130 yasmexe="yasm"
1131
1132 # machine
1133 arch=`uname -m`
1134 cpu="generic"
1135
1136 # OS
1137 target_os=$(tolower $(uname -s))
1138
1139 # configurable options
1140 enable debug
1141 enable ffmpeg
1142 enable ffplay
1143 enable ffserver
1144 enable ipv6
1145 enable mpegaudio_hp
1146 enable network
1147 enable oldscaler
1148 enable optimizations
1149 enable protocols
1150 enable static
1151 enable stripping
1152 vhook="default"
1153
1154 # build settings
1155 add_cflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
1156 SHFLAGS='-shared -Wl,-soname,$$(@F)'
1157 VHOOKSHFLAGS='$(SHFLAGS)'
1158 FFSERVERLDFLAGS=-Wl,-E
1159 LIBPREF="lib"
1160 LIBSUF=".a"
1161 FULLNAME='$(NAME)$(BUILDSUF)'
1162 LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
1163 SLIBPREF="lib"
1164 SLIBSUF=".so"
1165 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
1166 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
1167 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
1168 LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
1169
1170 host_cflags='-O3 -g -Wall'
1171 host_libs='-lm'
1172
1173 target_path='.'
1174
1175 # gcc stupidly only outputs the basename of targets with -MM, but we need the
1176 # full relative path for objects in subdirectories for non-recursive Make.
1177 DEPEND_CMD='$(CC) $(CFLAGS) -MM -MG $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," -e "s,\\([[:space:]]\\)\\(version\\.h\\),\\1\$$(BUILD_ROOT_REL)/\\2,"'
1178
1179 # find source path
1180 source_path="`dirname \"$0\"`"
1181 enable source_path_used
1182 if test -z "$source_path" -o "$source_path" = "." ; then
1183 source_path="`pwd`"
1184 disable source_path_used
1185 else
1186 source_path="`cd \"$source_path\"; pwd`"
1187 echo "$source_path" | grep -q '[[:blank:]]' &&
1188 die "Out of tree builds are impossible with whitespace in source path."
1189 fi
1190
1191 FFMPEG_CONFIGURATION="$@"
1192
1193 find_things(){
1194 thing=$1
1195 pattern=$2
1196 file=$source_path/$3
1197 sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
1198 }
1199
1200 ENCODER_LIST=$(find_things encoder ENC libavcodec/allcodecs.c)
1201 DECODER_LIST=$(find_things decoder DEC libavcodec/allcodecs.c)
1202 PARSER_LIST=$(find_things parser PARSER libavcodec/allcodecs.c)
1203 BSF_LIST=$(find_things bsf BSF libavcodec/allcodecs.c)
1204 MUXER_LIST=$(find_things muxer _MUX libavformat/allformats.c)
1205 DEMUXER_LIST=$(find_things demuxer DEMUX libavformat/allformats.c)
1206 OUTDEV_LIST=$(find_things muxer _MUX libavdevice/alldevices.c)
1207 INDEV_LIST=$(find_things demuxer DEMUX libavdevice/alldevices.c)
1208 PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
1209 FILTER_LIST=$(find_things filter FILTER libavfilter/allfilters.c)
1210
1211 enable $ARCH_EXT_LIST \
1212 $DECODER_LIST \
1213 $ENCODER_LIST \
1214 $PARSER_LIST \
1215 $BSF_LIST \
1216 $DEMUXER_LIST \
1217 $MUXER_LIST \
1218 $FILTER_LIST \
1219 $PROTOCOL_LIST \
1220 $INDEV_LIST \
1221 $OUTDEV_LIST \
1222
1223 die_unknown(){
1224 echo "Unknown option \"$1\"."
1225 echo "See $0 --help for available options."
1226 exit 1
1227 }
1228
1229 show_list() {
1230 suffix=_$1
1231 shift
1232 echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
1233 exit 0
1234 }
1235
1236 for opt do
1237 optval="${opt#*=}"
1238 case "$opt" in
1239 --extra-cflags=*) add_cflags $optval
1240 ;;
1241 --extra-ldflags=*) add_ldflags $optval
1242 ;;
1243 --extra-libs=*) add_extralibs $optval
1244 ;;
1245 --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
1246 ;;
1247 --enable-debug=*) debuglevel="$optval"
1248 ;;
1249 --enable-*=*|--disable-*=*)
1250 eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
1251 case "$thing" in
1252 encoder|decoder|muxer|demuxer|parser|bsf|protocol|filter) $action ${optval}_${thing} ;;
1253 *) die_unknown "$opt" ;;
1254 esac
1255 ;;
1256 --enable-?*|--disable-?*)
1257 eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
1258 if is_in $option $COMPONENT_LIST; then
1259 eval $action \$$(toupper ${option%s})_LIST
1260 elif is_in $option $CMDLINE_SELECT; then
1261 $action $option
1262 else
1263 die_unknown $opt
1264 fi
1265 ;;
1266 --list-*)
1267 NAME="${opt#--list-}"
1268 is_in $NAME $COMPONENT_LIST || die_unknown $opt
1269 NAME=${NAME%s}
1270 eval show_list $NAME \$$(toupper $NAME)_LIST
1271 ;;
1272 --help|-h) show_help
1273 ;;
1274 *)
1275 optname="${opt%%=*}"
1276 optname="${optname#--}"
1277 optname=$(echo "$optname" | sed 's/-/_/g')
1278 is_in $optname $CMDLINE_SET || die_unknown $opt
1279 eval $optname='$optval'
1280 ;;
1281 esac
1282 done
1283
1284 disabled logging && logfile=/dev/null
1285
1286 echo "# $0 $@" > $logfile
1287 set >> $logfile
1288
1289 test -n "$cross_prefix" && enable cross_compile
1290
1291 ar="${cross_prefix}${ar}"
1292 cc_default="${cross_prefix}${cc_default}"
1293 nm_default="${cross_prefix}${nm_default}"
1294 ranlib="${cross_prefix}${ranlib}"
1295 strip="${cross_prefix}${strip}"
1296
1297 set_default cc nm
1298 enabled cross_compile || host_cc_default=$cc
1299 set_default host_cc
1300
1301 # set temporary file name
1302 : ${TMPDIR:=$TEMPDIR}
1303 : ${TMPDIR:=$TMP}
1304 : ${TMPDIR:=/tmp}
1305
1306 TMPC="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
1307 TMPE="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}${EXESUF}"
1308 TMPH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
1309 TMPO="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
1310 TMPS="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
1311 TMPSH="${TMPDIR}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh"
1312
1313 check_cflags -std=c99
1314
1315 case "$arch" in
1316 i386|i486|i586|i686|i86pc|BePC)
1317 arch="x86"
1318 subarch="x86_32"
1319 enable fast_unaligned
1320 ;;
1321 x86_64|amd64)
1322 arch="x86"
1323 subarch="x86_32"
1324 enable cmov
1325 enable fast_cmov
1326 enable fast_unaligned
1327 check_cc <<EOF && enable fast_64bit && subarch="x86_64"
1328 int test[sizeof(char*) - 7];
1329 EOF
1330 ;;
1331 arm|armv[4567]*l)
1332 arch="arm"
1333 ;;
1334 alpha)
1335 arch="alpha"
1336 enable fast_64bit
1337 check_cflags -mieee
1338 ;;
1339 "Power Macintosh"|ppc|powerpc)
1340 arch="ppc"
1341 enable fast_unaligned
1342 ;;
1343 ppc64)
1344 arch="ppc"
1345 enable fast_64bit
1346 enable fast_unaligned
1347 ;;
1348 mips|mipsel|IP*)
1349 arch="mips"
1350 ;;
1351 mips64)
1352 arch="mips"
1353 enable fast_64bit
1354 ;;
1355 sun4u|sparc64)
1356 arch="sparc"
1357 subarch="sparc64"
1358 enable fast_64bit
1359 ;;
1360 sparc)
1361 arch="sparc"
1362 ;;
1363 sh4|sh)
1364 arch="sh4"
1365 ;;
1366 parisc|hppa)
1367 arch="parisc"
1368 ;;
1369 parisc64|hppa64)
1370 arch="parisc"
1371 enable fast_64bit
1372 ;;
1373 s390|s390x)
1374 arch="s390"
1375 ;;
1376 m68k)
1377 arch="m68k"
1378 ;;
1379 ia64)
1380 arch="ia64"
1381 enable fast_64bit
1382 ;;
1383 bfin)
1384 arch="bfin"
1385 ;;
1386 *)
1387 arch="unknown"
1388 ;;
1389 esac
1390
1391 enable $arch $subarch
1392
1393 # OS specific
1394 case $target_os in
1395 beos|haiku|zeta)
1396 prefix_default="$HOME/config"
1397 # helps building libavcodec
1398 add_cflags -DPIC -fomit-frame-pointer
1399 # 3 gcc releases known for BeOS, each with ugly bugs
1400 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1401 case "$gcc_version" in
1402 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
1403 disable mmx
1404 ;;
1405 *20010315*) echo "BeBits gcc"
1406 add_cflags -fno-expensive-optimizations
1407 ;;
1408 esac
1409 SHFLAGS=-nostart
1410 # enable BeOS things
1411 enable audio_beos
1412 # no need for libm, but the inet stuff
1413 # Check for BONE
1414 # XXX: actually should check for NOT net_server
1415 if echo $BEINCLUDES | grep -q 'headers/be/bone'; then
1416 network_extralibs="-lbind -lsocket"
1417 else
1418 enable beos_netserver
1419 network_extralibs="-lnet"
1420 fi ;;
1421 sunos)
1422 FFSERVERLDFLAGS=""
1423 SHFLAGS='-shared -Wl,-h,$$(@F)'
1424 network_extralibs="-lsocket -lnsl"
1425 add_cflags -D__EXTENSIONS__
1426 ;;
1427 netbsd)
1428 oss_demuxer_extralibs="-lossaudio"
1429 oss_muxer_extralibs="-lossaudio"
1430 ;;
1431 openbsd)
1432 disable need_memalign
1433 LIBOBJFLAGS='$(PIC)'
1434 SHFLAGS='-shared'
1435 oss_demuxer_extralibs="-lossaudio"
1436 oss_muxer_extralibs="-lossaudio"
1437 ;;
1438 freebsd)
1439 disable need_memalign
1440 ;;
1441 bsd/os)
1442 osextralibs="-lpoll -lgnugetopt"
1443 strip="strip -d"
1444 ;;
1445 darwin)
1446 disable need_memalign
1447 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
1448 VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$$(@F)'
1449 strip="strip -x"
1450 FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
1451 SLIBSUF=".dylib"
1452 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
1453 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
1454 FFSERVERLDFLAGS=-Wl,-bind_at_load
1455 objformat="macho"
1456 enabled x86_64 && objformat="macho64"
1457 ;;
1458 mingw32*)
1459 target_os=mingw32
1460 LIBTARGET=i386
1461 if enabled x86_64; then
1462 disable need_memalign
1463 LIBTARGET=x64
1464 fi
1465 shlibdir_default="$bindir_default"
1466 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1467 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1468 if enabled swscale; then
1469 VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1470 VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1471 fi
1472 disable ffserver
1473 SLIBPREF=""
1474 SLIBSUF=".dll"
1475 EXESUF=".exe"
1476 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1477 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1478 SLIB_EXTRA_CMD='-lib /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
1479 SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
1480 install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"'
1481 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
1482 SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
1483 objformat="win32"
1484 enable dos_paths
1485 check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
1486 die "ERROR: MinGW runtime version must be >= 3.15."
1487 enabled_any avisynth vfwcap_demuxer &&
1488 { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
1489 die "ERROR: avisynth and vfwcap_demuxer require w32api version 3.13 or later."; }
1490 ;;
1491 cygwin*)
1492 target_os=cygwin
1493 shlibdir_default="$bindir_default"
1494 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1495 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1496 if enabled swscale; then
1497 VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1498 VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1499 fi
1500 EXESUF=".exe"
1501 SLIBPREF="cyg"
1502 SLIBSUF=".dll"
1503 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1504 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1505 SHFLAGS='-shared -Wl,--enable-auto-image-base'
1506 objformat="win32"
1507 enable dos_paths
1508 ;;
1509 *-dos|freedos|opendos)
1510 disable ffplay ffserver vhook
1511 disable $INDEV_LIST $OUTDEV_LIST
1512 network_extralibs="-lsocket"
1513 EXESUF=".exe"
1514 objformat="coff"
1515 enable dos_paths
1516 ;;
1517 linux)
1518 enable dv1394
1519 ;;
1520 irix*)
1521 target_os=irix
1522 ranlib="echo ignoring ranlib"
1523 ;;
1524 os/2*)
1525 strip="lxlite"
1526 ln_s="cp -f"
1527 EXESUF=".exe"
1528 FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
1529 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
1530 FFSERVERLDFLAGS=""
1531 LIBSUF="_s.a"
1532 SLIBPREF=""
1533 SLIBSUF=".dll"
1534 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1535 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
1536 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
1537 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
1538 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
1539 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
1540 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
1541 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
1542 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
1543 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
1544 SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
1545 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
1546 disable vhook
1547 enable dos_paths
1548 ;;
1549 interix)
1550 disable vhook
1551 ;;
1552
1553 *)
1554 target_os="${target_os}-UNKNOWN"
1555 ;;
1556 esac
1557
1558 set_default $PATHS_LIST
1559
1560 add_extralibs $osextralibs
1561
1562 # Combine FFLDFLAGS and the LDFLAGS environment variable.
1563 LDFLAGS="$FFLDFLAGS $LDFLAGS"
1564
1565 # we need to build at least one lib type
1566 if ! enabled_any static shared; then
1567 cat <<EOF
1568 At least one library type must be built.
1569 Specify --enable-static to build the static libraries or --enable-shared to
1570 build the shared libraries as well. To only build the shared libraries specify
1571 --disable-static in addition to --enable-shared.
1572 EOF
1573 exit 1;
1574 fi
1575
1576 disabled static && LIBNAME=""
1577
1578 if enabled_any libfaad libfaadbin ; then
1579 if check_header faad.h; then
1580 check_cc <<EOF
1581 #include <faad.h>
1582 #ifndef FAAD2_VERSION
1583 ok faad1
1584 #endif
1585 int main(void) { return 0; }
1586 EOF
1587 test $? = 0 && enable libfaad2
1588 else
1589 die "FAAD test failed."
1590 fi
1591 fi
1592
1593
1594 if ! enabled gpl; then
1595 die_gpl_disabled(){
1596 name=$1
1597 shift
1598 enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
1599 }
1600 die_gpl_disabled "The Postprocessing code" postproc
1601 die_gpl_disabled "libx264" libx264
1602 die_gpl_disabled "libxvidcore" libxvid
1603 die_gpl_disabled "FAAD2" libfaad2
1604 die_gpl_disabled "The X11 grabber" x11grab
1605 die_gpl_disabled "The software scaler" swscale
1606 fi
1607
1608 if ! enabled nonfree && enabled_any libamr_nb libamr_wb; then
1609 die "libamr is nonfree and --enable-nonfree is not specified."
1610 fi
1611
1612 check_deps $ARCH_EXT_LIST
1613
1614 test -z "$need_memalign" && need_memalign="$mmx"
1615
1616 #Darwin CC versions
1617 if test $target_os = darwin; then
1618 if $cc -v 2>&1 | grep -q xlc; then
1619 add_cflags -qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto
1620 else
1621 add_cflags -pipe
1622 check_cflags -force_cpusubtype_ALL
1623 check_cflags -Wno-sign-compare
1624 enabled shared || check_cflags -mdynamic-no-pic
1625 fi
1626 fi
1627
1628 disabled optimizations || check_cflags -fomit-frame-pointer
1629
1630 # Add processor-specific flags
1631 if test $cpu != "generic"; then
1632 warn_altivec(){
1633 $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
1634 }
1635 case $cpu in
1636 601|ppc601|PowerPC601)
1637 add_cflags -mcpu=601
1638 warn_altivec enabled PPC601
1639 ;;
1640 603*|ppc603*|PowerPC603*)
1641 add_cflags -mcpu=603
1642 warn_altivec enabled PPC603
1643 ;;
1644 604*|ppc604*|PowerPC604*)
1645 add_cflags -mcpu=604
1646 warn_altivec enabled PPC604
1647 ;;
1648 G3|g3|75*|ppc75*|PowerPC75*)
1649 add_cflags -mcpu=750 -mpowerpc-gfxopt
1650 warn_altivec enabled PPC75x
1651 ;;
1652 G4|g4|745*|ppc745*|PowerPC745*)
1653 add_cflags -mcpu=7450 -mpowerpc-gfxopt
1654 warn_altivec disabled PPC745x
1655 ;;
1656 74*|ppc74*|PowerPC74*)
1657 add_cflags -mcpu=7400 -mpowerpc-gfxopt
1658 warn_altivec disabled PPC74xx
1659 ;;
1660 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1661 add_cflags -mcpu=970 -mpowerpc-gfxopt -mpowerpc64
1662 warn_altivec disabled PPC970
1663 enable ppc64
1664 ;;
1665 Cell|CELL|cell)
1666 add_cflags -mcpu=cell
1667 warn_altivec disabled Cell
1668 enable ppc64
1669 ;;
1670 # targets that do NOT support conditional mov (cmov)
1671 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1672 add_cflags -march=$cpu
1673 disable cmov
1674 ;;
1675 # targets that do support conditional mov (cmov)
1676 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
1677 add_cflags -march=$cpu
1678 enable cmov
1679 enable fast_cmov
1680 ;;
1681 # targets that do support conditional mov but on which it's slow
1682 pentium4|pentium4m|prescott|nocona)
1683 add_cflags -march=$cpu
1684 enable cmov
1685 disable fast_cmov
1686 ;;
1687 sparc64)
1688 add_cflags -mcpu=v9
1689 ;;
1690 arm11*|cortex*)
1691 add_cflags -mcpu=$cpu
1692 enable fast_unaligned
1693 ;;
1694 armv*)
1695 add_cflags -march=$cpu
1696 ;;
1697 arm*)
1698 add_cflags -mcpu=$cpu
1699 ;;
1700 ev4|ev45|ev5|ev56|pca56|ev6|ev67)
1701 add_cflags -mcpu=$cpu
1702 ;;
1703 *)
1704 echo "WARNING: Unknown CPU \"$cpu\", ignored."
1705 ;;
1706 esac
1707 fi
1708
1709 # make sure we can execute files in $TMPDIR
1710 cat > $TMPSH 2>> $logfile <<EOF
1711 #! /bin/sh
1712 EOF
1713 chmod +x $TMPSH >> $logfile 2>&1
1714 if ! $TMPSH >> $logfile 2>&1; then
1715 cat <<EOF
1716 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
1717 variable to another directory and make sure that it is not mounted noexec.
1718 EOF
1719 die "Sanity test failed."
1720 fi
1721 rm $TMPSH
1722
1723 # compiler sanity check
1724 check_exec <<EOF
1725 int main(void){ return 0; }
1726 EOF
1727 if test "$?" != 0; then
1728 echo "$cc is unable to create an executable file."
1729 if test -z "$cross_prefix" && ! enabled cross_compile ; then
1730 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
1731 echo "Only do this if you know what cross compiling means."
1732 fi
1733 die "C compiler test failed."
1734 fi
1735
1736 check_cc <<EOF || die "Symbol mangling check failed."
1737 int ff_extern;
1738 EOF
1739 sym=$($nm -P -g $TMPO | grep ff_extern)
1740 extern_prefix=${sym%%ff_extern*}
1741
1742 check_asm inline_asm '""'
1743
1744 if enabled x86; then
1745 # check whether EBP is available on x86
1746 # As 'i' is stored on the stack, this program will crash
1747 # if the base pointer is used to access it because the
1748 # base pointer is cleared in the inline assembly code.
1749 check_exec_crash <<EOF && enable ebp_available
1750 volatile int i=0;
1751 __asm__ volatile (
1752 "xorl %%ebp, %%ebp"
1753 ::: "%ebp");
1754 return i;
1755 EOF
1756
1757 # check wether EBX is available on x86
1758 check_asm ebx_available '"":::"%ebx"'
1759
1760 # check whether binutils is new enough to compile SSSE3/MMX2
1761 enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
1762 enabled mmx2 && check_asm mmx2 '"movss %xmm0, %xmm0"'
1763
1764 check_asm bswap '"bswap %%eax" ::: "%eax"'
1765
1766 YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)"
1767 enabled x86_64 && append YASMFLAGS "-m amd64"
1768 enabled_all x86_64 shared && append YASMFLAGS "-DPIC"
1769 case "$objformat" in
1770 elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
1771 macho64) append YASMFLAGS "-DPIC -DPREFIX" ;;
1772 *) append YASMFLAGS "-DPREFIX" ;;
1773 esac
1774 check_yasm "pabsw xmm0, xmm0" && enable yasm
1775 fi
1776
1777 # check for assembler specific support
1778
1779 enabled ppc && check_asm dcbzl '"dcbzl 0, 1"'
1780 enabled ppc && check_asm ppc4xx '"maclhw r10, r11, r12"'
1781
1782 # check for SIMD availability
1783
1784 # AltiVec flags: The FSF version of GCC differs from the Apple version
1785 if enabled altivec; then
1786 check_cflags -maltivec -mabi=altivec &&
1787 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
1788 check_cflags -faltivec
1789
1790 # check if our compiler supports Motorola AltiVec C API
1791 check_cc <<EOF || disable altivec
1792 $inc_altivec_h
1793 int main(void) {
1794 vector signed int v1, v2, v3;
1795 v1 = vec_add(v2,v3);
1796 return 0;
1797 }
1798 EOF
1799
1800 # check if our compiler supports braces for vector declarations
1801 check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
1802 $inc_altivec_h
1803 int main (void) { (vector int) {1}; return 0; }
1804 EOF
1805 fi
1806
1807 # We have to check if pld is a nop and disable it.
1808 enabled arm && check_asm pld '"pld [r0]"'
1809 enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
1810 enabled armv6 && check_asm armv6 '"sadd16 r0, r0, r0"'
1811 enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
1812 enabled armvfp && check_asm armvfp '"fadds s0, s0, s0"'
1813 enabled iwmmxt && check_asm iwmmxt '"wunpckelub wr6, wr4"'
1814 enabled mmi && check_asm mmi '"lq $2, 0($2)"'
1815 enabled neon && check_asm neon '"vadd.i16 q0, q0, q0"'
1816 enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc
1817
1818 enabled vis && add_cflags -mcpu=ultrasparc -mtune=ultrasparc
1819
1820 # ---
1821 # big/little-endian test
1822 check_cc <<EOF || die "endian test failed"
1823 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
1824 EOF
1825 od -A n -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
1826
1827 # ---
1828 # check availability of some header files
1829
1830 if check_func dlopen; then
1831 ldl=
1832 elif check_func dlopen -ldl; then
1833 ldl=-ldl
1834 fi
1835
1836 check_func fork
1837 check_func gethrtime
1838 check_func getrusage
1839 check_func inet_aton $network_extralibs
1840 check_func memalign
1841 check_func mkstemp
1842 check_func posix_memalign
1843 check_func_headers io.h setmode
1844 check_func_headers windows.h GetProcessTimes
1845
1846 check_header conio.h
1847 check_header dlfcn.h
1848 check_header malloc.h
1849 check_header poll.h
1850 check_header sys/mman.h
1851 check_header sys/resource.h
1852 check_header sys/select.h
1853 check_header termios.h
1854 check_header vdpau/vdpau.h
1855 check_header vdpau/vdpau_x11.h
1856 check_header X11/extensions/XvMClib.h
1857
1858 if ! enabled_any memalign memalign_hack posix_memalign && enabled need_memalign ; then
1859 die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
1860 fi
1861
1862 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
1863 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
1864
1865 # check for some common methods of building with pthread support
1866 # do this before the optional library checks as some of them require pthreads
1867 if enabled pthreads; then
1868 if check_func pthread_create; then
1869 :
1870 elif check_func pthread_create -pthread; then
1871 add_cflags -pthread
1872 add_extralibs -pthread
1873 elif check_func pthread_create -pthreads; then
1874 add_cflags -pthreads
1875 add_extralibs -pthreads
1876 elif check_func pthread_create -lpthreadGC2; then
1877 add_extralibs -lpthreadGC2
1878 elif ! check_lib pthread.h pthread_create -lpthread; then
1879 die "ERROR: can't find pthreads library"
1880 fi
1881 fi
1882
1883 for thread in $THREADS_LIST; do
1884 if enabled $thread; then
1885 test -n "$thread_type" &&
1886 die "ERROR: Only one thread type must be selected." ||
1887 thread_type="$thread"
1888 fi
1889 done
1890
1891 check_lib math.h sin -lm
1892
1893 # test for C99 functions in math.h
1894 for func in llrint lrint lrintf round roundf truncf; do
1895 check_exec <<EOF && enable $func || disable $func
1896 #include <math.h>
1897 int main(void) { return ($func(3.999f) > 0)?0:1; }
1898 EOF
1899 done
1900
1901 # these are off by default, so fail if requested and not available
1902 enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
1903 enabled libamr_nb && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
1904 enabled libamr_wb && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
1905 enabled libdirac && add_cflags $(pkg-config --cflags dirac) &&
1906 require libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init -ldirac_decoder &&
1907 require libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init -ldirac_encoder
1908 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
1909 enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
1910 enabled libgsm && require libgsm gsm.h gsm_create -lgsm
1911 enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame -lm
1912 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
1913 enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
1914 require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
1915 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
1916 enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
1917 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
1918 enabled libx264 && require libx264 x264.h x264_encoder_open -lx264 -lm &&
1919 { check_cpp_condition x264.h "X264_BUILD >= 65" ||
1920 die "ERROR: libx264 version must be >= 0.65."; }
1921 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
1922 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1923
1924 # libdc1394 check
1925 if enabled libdc1394; then
1926 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
1927 enable libdc1394_2; } ||
1928 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
1929 enable libdc1394_1; } ||
1930 die "ERROR: No version of libdc1394 found "
1931 fi
1932
1933
1934 _restrict=
1935 for restrict_keyword in restrict __restrict__ __restrict; do
1936 check_cc <<EOF && _restrict=$restrict_keyword && break
1937 void foo(char * $restrict_keyword p);
1938 EOF
1939 done
1940
1941 test "$vhook" = "default" && vhook="$dlopen"
1942
1943 if test "$target_os" = cygwin -o "$target_os" = mingw32 && enabled_all static vhook ; then
1944 disable vhook
1945 echo
1946 echo "At the moment vhooks don't work on Cygwin or MinGW static builds."
1947 echo "Patches welcome."
1948 echo
1949 fi
1950
1951 if enabled vhook; then
1952 check_ldflags -rdynamic
1953 check_ldflags -export-dynamic
1954 fi
1955
1956 check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
1957 check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType
1958
1959 ##########################################
1960 # SDL check
1961
1962 disable sdl_too_old
1963 disable sdl
1964 SDL_CONFIG="${cross_prefix}sdl-config"
1965 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
1966 sdl_cflags=`"${SDL_CONFIG}" --cflags`
1967 temp_cflags $sdl_cflags
1968 temp_extralibs `"${SDL_CONFIG}" --libs`
1969 if check_lib2 SDL.h SDL_Init; then
1970 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1971 if test "$_sdlversion" -lt 121 ; then
1972 enable sdl_too_old
1973 else
1974 enable sdl
1975 check_cc $sdl_cflags <<EOF && enable sdl_video_size
1976 #include <SDL.h>
1977 int main(int argc, char **argv){
1978 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1979 int w = vi->current_w;
1980 return 0;
1981 }
1982 EOF
1983 fi
1984 fi
1985 restore_flags
1986 fi
1987
1988 texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
1989
1990 ##########################################
1991 # Network check
1992
1993 if enabled network; then
1994 check_type "sys/types.h sys/socket.h" socklen_t
1995 # Prefer arpa/inet.h over winsock2
1996 if check_header arpa/inet.h ; then
1997 check_func closesocket
1998 elif check_header winsock2.h ; then
1999 network_extralibs="-lws2_32"
2000 check_type ws2tcpip.h socklen_t
2001 check_func_headers winsock2.h closesocket
2002 fi
2003 fi
2004
2005 ##########################################
2006 # IPv6 check
2007
2008 enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
2009 #include <sys/types.h>
2010 #include <sys/socket.h>
2011 #include <netinet/in.h>
2012 #include <netdb.h>
2013 int main(void) {
2014 struct sockaddr_storage saddr;
2015 struct ipv6_mreq mreq6;
2016 getaddrinfo(0,0,0,0);
2017 getnameinfo(0,0,0,0,0,0,0);
2018 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
2019 }
2020 EOF
2021
2022 check_header linux/videodev.h
2023 check_header linux/videodev2.h
2024 check_header sys/videoio.h
2025
2026 check_func_headers "windows.h vfw.h" capCreateCaptureWindow -lvfw32
2027
2028 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
2029 { check_header dev/bktr/ioctl_meteor.h &&
2030 check_header dev/bktr/ioctl_bt848.h; } ||
2031 { check_header machine/ioctl_meteor.h &&
2032 check_header machine/ioctl_bt848.h; } ||
2033 { check_header dev/video/meteor/ioctl_meteor.h &&
2034 check_header dev/video/bktr/ioctl_bt848.h; } ||
2035 check_header dev/ic/bt8xx.h
2036
2037 check_header sys/soundcard.h
2038 check_header soundcard.h
2039
2040 # deal with the X11 frame grabber
2041 enabled x11grab &&
2042 check_header X11/Xlib.h &&
2043 check_header X11/extensions/XShm.h &&
2044 check_func XOpenDisplay -lX11 &&
2045 check_func XShmCreateImage -lX11 -lXext
2046
2047 enabled debug && add_cflags -g"$debuglevel"
2048
2049 # add some useful compiler flags if supported
2050 check_cflags -Wdeclaration-after-statement
2051 check_cflags -Wall
2052 check_cflags -Wno-switch
2053 check_cflags -Wdisabled-optimization
2054 check_cflags -Wpointer-arith
2055 check_cflags -Wredundant-decls
2056 check_cflags -Wno-pointer-sign
2057 check_cflags -Wcast-qual
2058 check_cflags -Wwrite-strings
2059 check_cflags -Wtype-limits
2060 check_cflags -Wundef
2061 enabled extra_warnings && check_cflags -Winline
2062
2063 # add some linker flags
2064 check_ldflags -Wl,--warn-common
2065 check_ldflags -Wl,--as-needed
2066 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'
2067 check_ldflags -Wl,-Bsymbolic
2068
2069 if enabled small; then
2070 check_cflags -Os # not all compilers support -Os
2071 optimizations="small"
2072 elif enabled optimizations; then
2073 if $cc -v 2>&1 | grep -q xlc; then
2074 add_cflags -O5
2075 add_ldflags -O5
2076 else
2077 add_cflags -O3
2078 fi
2079 fi
2080 check_cflags -fno-math-errno
2081 check_cflags -fno-signed-zeros
2082
2083 # add some flags for Intel C Compiler
2084 if $cc --version 2> /dev/null | grep -q Intel; then
2085 # Just warnings, no remarks
2086 check_cflags -w1
2087 # -wd: Disable following warnings
2088 # 144, 167, 556: -Wno-pointer-sign
2089 # 10006: ignoring unknown option -fno-signed-zeros
2090 # 10156: ignoring option '-W'; no argument required
2091 check_cflags -wd144,167,556,10006,10156
2092 # 11030: Warning unknown option --as-needed
2093 # 10156: ignoring option '-export'; no argument required
2094 check_ldflags -wd10156,11030
2095 # Allow to compile with optimizations
2096 check_ldflags -march=$cpu
2097 fi
2098
2099 # PIC flags for shared library objects where they are needed
2100 if enabled shared; then
2101 # LIBOBJFLAGS may have already been set in the OS configuration
2102 if test -z "$LIBOBJFLAGS" ; then
2103 case "${subarch-$arch}" in
2104 x86_64|ia64|alpha|sparc*|power*|parisc*|mips*) LIBOBJFLAGS='$(PIC)' ;;
2105 esac
2106 fi
2107 fi
2108
2109 if enabled gprof; then
2110 add_cflags -p
2111 add_ldflags -p
2112 fi
2113
2114 VHOOKCFLAGS="-fPIC"
2115
2116 # Find out if the .align argument is a power of two or not.
2117 check_asm asmalign_pot '".align 3"'
2118
2119 enabled_any $DECODER_LIST && enable decoders
2120 enabled_any $ENCODER_LIST && enable encoders
2121 enabled_any $BSF_LIST && enable bsfs
2122 enabled_any $DEMUXER_LIST && enable demuxers
2123 enabled_any $MUXER_LIST && enable muxers
2124 enabled_any $FILTER_LIST && enable filters
2125 enabled_any $INDEV_LIST && enable demuxers
2126 enabled_any $OUTDEV_LIST && enable muxers
2127 enabled_any $PROTOCOL_LIST && enable protocols
2128
2129 enabled_any $THREADS_LIST && enable threads
2130
2131 check_deps $CONFIG_LIST \
2132 $CONFIG_EXTRA \
2133 $HAVE_LIST \
2134 $DECODER_LIST \
2135 $ENCODER_LIST \
2136 $PARSER_LIST \
2137 $BSF_LIST \
2138 $DEMUXER_LIST \
2139 $MUXER_LIST \
2140 $FILTER_LIST \
2141 $INDEV_LIST \
2142 $OUTDEV_LIST \
2143 $PROTOCOL_LIST \
2144
2145 echo "install prefix $prefix"
2146 echo "source path $source_path"
2147 echo "C compiler $cc"
2148 echo ".align is power-of-two $asmalign_pot"
2149 echo "ARCH $arch ($cpu)"
2150 if test "$build_suffix" != ""; then
2151 echo "build suffix $build_suffix"
2152 fi
2153 if test "$extra_version" != ""; then
2154 echo "version string suffix $extra_version"
2155 fi
2156 echo "big-endian ${bigendian-no}"
2157 if enabled x86; then
2158 echo "yasm ${yasm-no}"
2159 echo "MMX enabled ${mmx-no}"
2160 echo "MMX2 enabled ${mmx2-no}"
2161 echo "3DNow! enabled ${amd3dnow-no}"
2162 echo "SSE enabled ${sse-no}"
2163 echo "SSSE3 enabled ${ssse3-no}"
2164 echo "CMOV enabled ${cmov-no}"
2165 echo "CMOV is fast ${fast_cmov-no}"
2166 echo "EBX available ${ebx_available-no}"
2167 echo "EBP available ${ebp_available-no}"
2168 fi
2169 if enabled arm; then
2170 echo "ARMv5TE enabled ${armv5te-no}"
2171 echo "ARMv6 enabled ${armv6-no}"
2172 echo "ARMv6T2 enabled ${armv6t2-no}"
2173 echo "ARM VFP enabled ${armvfp-no}"
2174 echo "IWMMXT enabled ${iwmmxt-no}"
2175 echo "NEON enabled ${neon-no}"
2176 fi
2177 if enabled mips; then
2178 echo "MMI enabled ${mmi-no}"
2179 fi
2180 if enabled ppc; then
2181 echo "AltiVec enabled ${altivec-no}"
2182 echo "PPC 4xx optimizations ${ppc4xx-no}"
2183 echo "dcbzl available ${dcbzl-no}"
2184 echo "performance report ${powerpc_perf-no}"
2185 fi
2186 if enabled sparc; then
2187 echo "VIS enabled ${vis-no}"
2188 fi
2189 echo "gprof enabled ${gprof-no}"
2190 echo "debug symbols ${debug-no}"
2191 echo "strip symbols ${stripping-no}"
2192 echo "optimizations ${optimizations-no}"
2193 echo "static ${static-no}"
2194 echo "shared ${shared-no}"
2195 echo "postprocessing support ${postproc-no}"
2196 echo "software scaler enabled ${swscale-no}"
2197 echo "new filter support ${avfilter-no}"
2198 echo "filters using lavformat ${avfilter_lavf-no}"
2199 echo "video hooking ${vhook-no}"
2200 if enabled vhook; then
2201 echo "Imlib2 support ${imlib2-no}"
2202 echo "FreeType support ${freetype2-no}"
2203 fi
2204 echo "network support ${network-no}"
2205 if enabled network; then
2206 echo "IPv6 support ${ipv6-no}"
2207 fi
2208 echo "threading support ${thread_type-no}"
2209 echo "SDL support ${sdl-no}"
2210 if enabled sdl_too_old; then
2211 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
2212 fi
2213 echo "Sun medialib support ${mlib-no}"
2214 echo "AVISynth enabled ${avisynth-no}"
2215 echo "libamr-nb support ${libamr_nb-no}"
2216 echo "libamr-wb support ${libamr_wb-no}"
2217 echo "libdc1394 support ${libdc1394-no}"
2218 echo "libdirac enabled ${libdirac-no}"
2219 echo "libfaac enabled ${libfaac-no}"
2220 echo "libfaad enabled ${libfaad-no}"
2221 echo "libfaad dlopened ${libfaadbin-no}"
2222 echo "libgsm enabled ${libgsm-no}"
2223 echo "libmp3lame enabled ${libmp3lame-no}"
2224 echo "libnut enabled ${libnut-no}"
2225 echo "libschroedinger enabled ${libschroedinger-no}"
2226 echo "libspeex enabled ${libspeex-no}"
2227 echo "libtheora enabled ${libtheora-no}"
2228 echo "libvorbis enabled ${libvorbis-no}"
2229 echo "libx264 enabled ${libx264-no}"
2230 echo "libxvid enabled ${libxvid-no}"
2231 echo "vdpau enabled ${vdpau-no}"
2232 echo "zlib enabled ${zlib-no}"
2233 echo "bzlib enabled ${bzlib-no}"
2234 echo
2235
2236 for type in decoder encoder parser demuxer muxer protocol filter bsf indev outdev; do
2237 echo "Enabled ${type}s:"
2238 eval list=\$$(toupper $type)_LIST
2239 for part in $list; do
2240 enabled $part && echo ${part%_*}
2241 done | sort | pr -3 -t
2242 echo
2243 done
2244
2245 license="LGPL"
2246 if enabled nonfree; then
2247 license="unredistributable"
2248 elif enabled gpl; then
2249 license="GPL"
2250 fi
2251
2252 echo "License: $license"
2253
2254 echo "Creating config.mak and config.h..."
2255
2256 echo "# Automatically generated by configure - do not modify!" > config.mak
2257 echo "/* Automatically generated by configure - do not modify! */" > $TMPH
2258 echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
2259 echo "#define FFMPEG_CONFIG_H" >> $TMPH
2260 echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
2261
2262 echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak
2263 echo "prefix=$prefix" >> config.mak
2264 echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
2265 echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
2266 echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
2267 echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
2268 echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
2269 echo "CC=$cc" >> config.mak
2270 echo "YASM=$yasmexe" >> config.mak
2271 echo "AR=$ar" >> config.mak
2272 echo "RANLIB=$ranlib" >> config.mak
2273 echo "LN_S=$ln_s" >> config.mak
2274 enabled stripping &&
2275 echo "STRIP=$strip" >> config.mak ||
2276 echo "STRIP=echo ignoring strip" >> config.mak
2277
2278 echo "OPTFLAGS=$CFLAGS" >> config.mak
2279 echo "VHOOKCFLAGS=$VHOOKCFLAGS" >> config.mak
2280 echo "LDFLAGS=$LDFLAGS" >> config.mak
2281 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
2282 echo "SHFLAGS=$SHFLAGS" >> config.mak
2283 echo "YASMFLAGS=$YASMFLAGS" >> config.mak
2284 echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
2285 echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
2286 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
2287 echo "BUILD_STATIC=$static" >> config.mak
2288 echo "BUILDSUF=$build_suffix" >> config.mak
2289 echo "FULLNAME=$FULLNAME" >> config.mak
2290 echo "LIBPREF=$LIBPREF" >> config.mak
2291 echo "LIBSUF=$LIBSUF" >> config.mak
2292 echo "LIBNAME=$LIBNAME" >> config.mak
2293 echo "SLIBPREF=$SLIBPREF" >> config.mak
2294 echo "SLIBSUF=$SLIBSUF" >> config.mak
2295 echo "EXESUF=$EXESUF" >> config.mak
2296 echo "EXTRA_VERSION=$extra_version" >> config.mak
2297 echo "DEPEND_CMD=$DEPEND_CMD" >> config.mak
2298 echo "HOSTCC=$host_cc" >> config.mak
2299 echo "HOSTCFLAGS=$host_cflags" >> config.mak
2300 echo "HOSTLDFLAGS=$host_ldflags" >> config.mak
2301 echo "HOSTLIBS=$host_libs" >> config.mak
2302 echo "TARGET_EXEC=$target_exec" >> config.mak
2303 echo "TARGET_PATH=$target_path" >> config.mak
2304
2305 if enabled bigendian; then
2306 echo "WORDS_BIGENDIAN=yes" >> config.mak
2307 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
2308 fi
2309
2310 if enabled sdl; then
2311 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
2312 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
2313 fi
2314 if enabled texi2html; then
2315 echo "BUILD_DOC=yes" >> config.mak
2316 fi
2317
2318 get_version(){
2319 name=$1
2320 file=$source_path/$2
2321 eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
2322 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
2323 lcname=$(tolower $name)
2324 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
2325 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
2326 }
2327
2328 get_version LIBSWSCALE libswscale/swscale.h
2329 get_version LIBPOSTPROC libpostproc/postprocess.h
2330 get_version LIBAVCODEC libavcodec/avcodec.h
2331 get_version LIBAVDEVICE libavdevice/avdevice.h
2332 get_version LIBAVFORMAT libavformat/avformat.h
2333 get_version LIBAVUTIL libavutil/avutil.h
2334 get_version LIBAVFILTER libavfilter/avfilter.h
2335
2336 if enabled shared; then
2337 echo "BUILD_SHARED=yes" >> config.mak
2338 echo "PIC=-fPIC -DPIC" >> config.mak
2339 echo "LIBTARGET=${LIBTARGET}" >> config.mak
2340 echo "SLIBNAME=${SLIBNAME}" >> config.mak
2341 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2342 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
2343 echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
2344 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
2345 echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
2346 echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
2347 fi
2348 echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
2349 echo "EXTRALIBS=$extralibs" >> config.mak
2350
2351 echo "ARCH=$arch" >> config.mak
2352
2353 print_config ARCH_ $TMPH config.mak $ARCH_LIST
2354 print_config HAVE_ $TMPH config.mak $HAVE_LIST
2355 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \
2356 $CONFIG_EXTRA \
2357 $DECODER_LIST \
2358 $ENCODER_LIST \
2359 $PARSER_LIST \
2360 $BSF_LIST \
2361 $DEMUXER_LIST \
2362 $MUXER_LIST \
2363 $FILTER_LIST \
2364 $PROTOCOL_LIST \
2365 $INDEV_LIST \
2366 $OUTDEV_LIST \
2367
2368 echo "#define restrict $_restrict" >> $TMPH
2369
2370 if enabled small; then
2371 echo "#define av_always_inline" >> $TMPH
2372 fi
2373
2374 echo "SRC_PATH=\"$source_path\"" >> config.mak
2375 echo "SRC_PATH_BARE=$source_path" >> config.mak
2376 echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2377
2378 # Apparently it's not possible to portably echo a backslash.
2379 enabled asmalign_pot &&
2380 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
2381 printf '#define ASMALIGN(ZEROBITS) ".align 1 << " #ZEROBITS "\\n\\t"\n' >> $TMPH
2382
2383 echo "#define EXTERN_PREFIX \"${extern_prefix}\"" >> $TMPH
2384
2385 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
2386
2387 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
2388 cmp -s $TMPH config.h &&
2389 echo "config.h is unchanged" ||
2390 mv -f $TMPH config.h
2391
2392 rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
2393
2394 # build tree in object directory if source path is different from current one
2395 if enabled source_path_used; then
2396 DIRS="\
2397 doc \
2398 libavcodec \
2399 libavcodec/alpha \
2400 libavcodec/arm \
2401 libavcodec/bfin \
2402 libavcodec/mlib \
2403 libavcodec/ppc \
2404 libavcodec/sh4 \
2405 libavcodec/sparc \
2406 libavcodec/x86 \
2407 libavdevice \
2408 libavfilter \
2409 libavformat \
2410 libavutil \
2411 libpostproc \
2412 libswscale \
2413 tests \
2414 tools \
2415 vhook \
2416 "
2417 FILES="\
2418 Makefile \
2419 common.mak \
2420 subdir.mak \
2421 doc/texi2pod.pl \
2422 libavcodec/Makefile \
2423 libavdevice/Makefile \
2424 libavfilter/Makefile \
2425 libavformat/Makefile \
2426 libavutil/Makefile \
2427 libpostproc/Makefile \
2428 libswscale/Makefile \
2429 "
2430 for dir in $DIRS ; do
2431 mkdir -p $dir
2432 done
2433 for f in $FILES ; do
2434 $ln_s "$source_path/$f" $f
2435 done
2436 fi
2437
2438
2439 # build pkg-config files
2440
2441 pkgconfig_generate(){
2442 name=$1
2443 shortname=${name#lib}${build_suffix}
2444 comment=$2
2445 version=$3
2446 libs=$4
2447 requires=$5
2448 cat <<EOF > $name/$name.pc
2449 prefix=$prefix
2450 exec_prefix=\${prefix}
2451 libdir=$libdir
2452 includedir=$incdir
2453
2454 Name: $name
2455 Description: $comment
2456 Version: $version
2457 Requires: $(disabled shared && echo $requires)
2458 Requires.private: $(enabled shared && echo $requires)
2459 Conflicts:
2460 Libs: -L\${libdir} -l${shortname} $(disabled shared && echo $libs)
2461 Libs.private: $(enabled shared && echo $libs)
2462 Cflags: -I\${includedir}
2463 EOF
2464 cat <<EOF > $name/$name-uninstalled.pc
2465 prefix=
2466 exec_prefix=
2467 libdir=\${pcfiledir}
2468 includedir=${source_path}
2469
2470 Name: $name
2471 Description: $comment
2472 Version: $version
2473 Requires: $requires
2474 Conflicts:
2475 Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
2476 Cflags: -I\${includedir}
2477 EOF
2478 }
2479
2480 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
2481 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
2482 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
2483 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
2484 enabled avfilter &&
2485 pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
2486 enabled postproc &&
2487 pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
2488 if enabled swscale; then
2489 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
2490 else
2491 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavcodec = $LIBAVCODEC_VERSION"
2492 apply libswscale/libswscale.pc sed s/^Libs:.*$/Libs:/
2493 fi