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