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