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