mingw: don't check for minimum mingw runtime and w32api versions for mingw-w64
[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 if ! enabled x86_64; then
1498 check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
1499 die "ERROR: MinGW runtime version must be >= 3.15."
1500 enabled_any avisynth vfwcap_demuxer &&
1501 { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
1502 die "ERROR: avisynth and vfwcap_demuxer require w32api version 3.13 or later."; }
1503 fi
1504 ;;
1505 cygwin*)
1506 target_os=cygwin
1507 shlibdir_default="$bindir_default"
1508 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1509 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1510 if enabled swscale; then
1511 VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1512 VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1513 fi
1514 EXESUF=".exe"
1515 SLIBPREF="cyg"
1516 SLIBSUF=".dll"
1517 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1518 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1519 SHFLAGS='-shared -Wl,--enable-auto-image-base'
1520 objformat="win32"
1521 enable dos_paths
1522 ;;
1523 *-dos|freedos|opendos)
1524 disable ffplay ffserver vhook
1525 disable $INDEV_LIST $OUTDEV_LIST
1526 network_extralibs="-lsocket"
1527 EXESUF=".exe"
1528 objformat="coff"
1529 enable dos_paths
1530 ;;
1531 linux)
1532 enable dv1394
1533 ;;
1534 irix*)
1535 target_os=irix
1536 ranlib="echo ignoring ranlib"
1537 ;;
1538 os/2*)
1539 strip="lxlite"
1540 ln_s="cp -f"
1541 EXESUF=".exe"
1542 FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
1543 SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
1544 FFSERVERLDFLAGS=""
1545 LIBSUF="_s.a"
1546 SLIBPREF=""
1547 SLIBSUF=".dll"
1548 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1549 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
1550 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
1551 echo PROTMODE >> $(SUBDIR)$(NAME).def; \
1552 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
1553 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
1554 echo EXPORTS >> $(SUBDIR)$(NAME).def; \
1555 emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
1556 SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
1557 emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
1558 SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
1559 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
1560 disable vhook
1561 enable dos_paths
1562 ;;
1563 interix)
1564 disable vhook
1565 ;;
1566
1567 *)
1568 die "Unknown OS '$target_os'."
1569 ;;
1570 esac
1571
1572 set_default $PATHS_LIST
1573
1574 add_extralibs $osextralibs
1575
1576 # Combine FFLDFLAGS and the LDFLAGS environment variable.
1577 LDFLAGS="$FFLDFLAGS $LDFLAGS"
1578
1579 # we need to build at least one lib type
1580 if ! enabled_any static shared; then
1581 cat <<EOF
1582 At least one library type must be built.
1583 Specify --enable-static to build the static libraries or --enable-shared to
1584 build the shared libraries as well. To only build the shared libraries specify
1585 --disable-static in addition to --enable-shared.
1586 EOF
1587 exit 1;
1588 fi
1589
1590 disabled static && LIBNAME=""
1591
1592 if enabled_any libfaad libfaadbin ; then
1593 if check_header faad.h; then
1594 check_cc <<EOF
1595 #include <faad.h>
1596 #ifndef FAAD2_VERSION
1597 ok faad1
1598 #endif
1599 int main(void) { return 0; }
1600 EOF
1601 test $? = 0 && enable libfaad2
1602 else
1603 die "FAAD test failed."
1604 fi
1605 fi
1606
1607
1608 if ! enabled gpl; then
1609 die_gpl_disabled(){
1610 name=$1
1611 shift
1612 enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
1613 }
1614 die_gpl_disabled "The Postprocessing code" postproc
1615 die_gpl_disabled "libx264" libx264
1616 die_gpl_disabled "libxvidcore" libxvid
1617 die_gpl_disabled "FAAD2" libfaad2
1618 die_gpl_disabled "The X11 grabber" x11grab
1619 die_gpl_disabled "The software scaler" swscale
1620 fi
1621
1622 if ! enabled nonfree && enabled_any libamr_nb libamr_wb; then
1623 die "libamr is nonfree and --enable-nonfree is not specified."
1624 fi
1625
1626 check_deps $ARCH_EXT_LIST
1627
1628 test -z "$need_memalign" && need_memalign="$mmx"
1629
1630 #Darwin CC versions
1631 if test $target_os = darwin; then
1632 if $cc -v 2>&1 | grep -q xlc; then
1633 add_cflags -qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto
1634 else
1635 add_cflags -pipe
1636 check_cflags -force_cpusubtype_ALL
1637 check_cflags -Wno-sign-compare
1638 enabled shared || check_cflags -mdynamic-no-pic
1639 fi
1640 fi
1641
1642 disabled optimizations || check_cflags -fomit-frame-pointer
1643
1644 # Add processor-specific flags
1645 if test $cpu != "generic"; then
1646 warn_altivec(){
1647 $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
1648 }
1649 case $cpu in
1650 601|ppc601|PowerPC601)
1651 add_cflags -mcpu=601
1652 warn_altivec enabled PPC601
1653 ;;
1654 603*|ppc603*|PowerPC603*)
1655 add_cflags -mcpu=603
1656 warn_altivec enabled PPC603
1657 ;;
1658 604*|ppc604*|PowerPC604*)
1659 add_cflags -mcpu=604
1660 warn_altivec enabled PPC604
1661 ;;
1662 G3|g3|75*|ppc75*|PowerPC75*)
1663 add_cflags -mcpu=750 -mpowerpc-gfxopt
1664 warn_altivec enabled PPC75x
1665 ;;
1666 G4|g4|745*|ppc745*|PowerPC745*)
1667 add_cflags -mcpu=7450 -mpowerpc-gfxopt
1668 warn_altivec disabled PPC745x
1669 ;;
1670 74*|ppc74*|PowerPC74*)
1671 add_cflags -mcpu=7400 -mpowerpc-gfxopt
1672 warn_altivec disabled PPC74xx
1673 ;;
1674 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1675 add_cflags -mcpu=970 -mpowerpc-gfxopt -mpowerpc64
1676 warn_altivec disabled PPC970
1677 enable ppc64
1678 ;;
1679 Cell|CELL|cell)
1680 add_cflags -mcpu=cell
1681 warn_altivec disabled Cell
1682 enable ppc64
1683 ;;
1684 # targets that do NOT support conditional mov (cmov)
1685 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1686 add_cflags -march=$cpu
1687 disable cmov
1688 ;;
1689 # targets that do support conditional mov (cmov)
1690 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
1691 add_cflags -march=$cpu
1692 enable cmov
1693 enable fast_cmov
1694 ;;
1695 # targets that do support conditional mov but on which it's slow
1696 pentium4|pentium4m|prescott|nocona)
1697 add_cflags -march=$cpu
1698 enable cmov
1699 disable fast_cmov
1700 ;;
1701 sparc64)
1702 add_cflags -mcpu=v9
1703 ;;
1704 arm11*|cortex*)
1705 add_cflags -mcpu=$cpu
1706 enable fast_unaligned
1707 ;;
1708 armv*)
1709 add_cflags -march=$cpu
1710 ;;
1711 arm*)
1712 add_cflags -mcpu=$cpu
1713 ;;
1714 ev4|ev45|ev5|ev56|pca56|ev6|ev67)
1715 add_cflags -mcpu=$cpu
1716 ;;
1717 *)
1718 echo "WARNING: Unknown CPU \"$cpu\", ignored."
1719 ;;
1720 esac
1721 fi
1722
1723 # make sure we can execute files in $TMPDIR
1724 cat > $TMPSH 2>> $logfile <<EOF
1725 #! /bin/sh
1726 EOF
1727 chmod +x $TMPSH >> $logfile 2>&1
1728 if ! $TMPSH >> $logfile 2>&1; then
1729 cat <<EOF
1730 Unable to create and execute files in $TMPDIR. Set the TMPDIR environment
1731 variable to another directory and make sure that it is not mounted noexec.
1732 EOF
1733 die "Sanity test failed."
1734 fi
1735 rm $TMPSH
1736
1737 # compiler sanity check
1738 check_exec <<EOF
1739 int main(void){ return 0; }
1740 EOF
1741 if test "$?" != 0; then
1742 echo "$cc is unable to create an executable file."
1743 if test -z "$cross_prefix" && ! enabled cross_compile ; then
1744 echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
1745 echo "Only do this if you know what cross compiling means."
1746 fi
1747 die "C compiler test failed."
1748 fi
1749
1750 check_cc <<EOF || die "Symbol mangling check failed."
1751 int ff_extern;
1752 EOF
1753 sym=$($nm -P -g $TMPO | grep ff_extern)
1754 extern_prefix=${sym%%ff_extern*}
1755
1756 check_asm inline_asm '""'
1757
1758 if enabled x86; then
1759 # check whether EBP is available on x86
1760 # As 'i' is stored on the stack, this program will crash
1761 # if the base pointer is used to access it because the
1762 # base pointer is cleared in the inline assembly code.
1763 check_exec_crash <<EOF && enable ebp_available
1764 volatile int i=0;
1765 __asm__ volatile (
1766 "xorl %%ebp, %%ebp"
1767 ::: "%ebp");
1768 return i;
1769 EOF
1770
1771 # check wether EBX is available on x86
1772 check_asm ebx_available '"":::"%ebx"'
1773
1774 # check whether binutils is new enough to compile SSSE3/MMX2
1775 enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
1776 enabled mmx2 && check_asm mmx2 '"movss %xmm0, %xmm0"'
1777
1778 check_asm bswap '"bswap %%eax" ::: "%eax"'
1779
1780 YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)"
1781 enabled x86_64 && append YASMFLAGS "-m amd64"
1782 enabled_all x86_64 shared && append YASMFLAGS "-DPIC"
1783 case "$objformat" in
1784 elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
1785 macho64) append YASMFLAGS "-DPIC -DPREFIX" ;;
1786 *) append YASMFLAGS "-DPREFIX" ;;
1787 esac
1788 check_yasm "pabsw xmm0, xmm0" && enable yasm
1789 fi
1790
1791 # check for assembler specific support
1792
1793 enabled ppc && check_asm dcbzl '"dcbzl 0, 1"'
1794 enabled ppc && check_asm ppc4xx '"maclhw r10, r11, r12"'
1795
1796 # check for SIMD availability
1797
1798 # AltiVec flags: The FSF version of GCC differs from the Apple version
1799 if enabled altivec; then
1800 check_cflags -maltivec -mabi=altivec &&
1801 { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
1802 check_cflags -faltivec
1803
1804 # check if our compiler supports Motorola AltiVec C API
1805 check_cc <<EOF || disable altivec
1806 $inc_altivec_h
1807 int main(void) {
1808 vector signed int v1, v2, v3;
1809 v1 = vec_add(v2,v3);
1810 return 0;
1811 }
1812 EOF
1813
1814 # check if our compiler supports braces for vector declarations
1815 check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
1816 $inc_altivec_h
1817 int main (void) { (vector int) {1}; return 0; }
1818 EOF
1819 fi
1820
1821 # We have to check if pld is a nop and disable it.
1822 enabled arm && check_asm pld '"pld [r0]"'
1823 enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
1824 enabled armv6 && check_asm armv6 '"sadd16 r0, r0, r0"'
1825 enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
1826 enabled armvfp && check_asm armvfp '"fadds s0, s0, s0"'
1827 enabled iwmmxt && check_asm iwmmxt '"wunpckelub wr6, wr4"'
1828 enabled mmi && check_asm mmi '"lq $2, 0($2)"'
1829 enabled neon && check_asm neon '"vadd.i16 q0, q0, q0"'
1830 enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc
1831
1832 enabled vis && add_cflags -mcpu=ultrasparc -mtune=ultrasparc
1833
1834 # ---
1835 # big/little-endian test
1836 check_cc <<EOF || die "endian test failed"
1837 unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
1838 EOF
1839 od -A n -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
1840
1841 # ---
1842 # check availability of some header files
1843
1844 if check_func dlopen; then
1845 ldl=
1846 elif check_func dlopen -ldl; then
1847 ldl=-ldl
1848 fi
1849
1850 check_func fork
1851 check_func gethrtime
1852 check_func getrusage
1853 check_func inet_aton $network_extralibs
1854 check_func memalign
1855 check_func mkstemp
1856 check_func posix_memalign
1857 check_func_headers io.h setmode
1858 check_func_headers windows.h GetProcessTimes
1859
1860 check_header conio.h
1861 check_header dlfcn.h
1862 check_header malloc.h
1863 check_header poll.h
1864 check_header sys/mman.h
1865 check_header sys/resource.h
1866 check_header sys/select.h
1867 check_header termios.h
1868 check_header vdpau/vdpau.h
1869 check_header vdpau/vdpau_x11.h
1870 check_header X11/extensions/XvMClib.h
1871
1872 if ! enabled_any memalign memalign_hack posix_memalign && enabled need_memalign ; then
1873 die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
1874 fi
1875
1876 disabled zlib || check_lib zlib.h zlibVersion -lz || disable zlib
1877 disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
1878
1879 # check for some common methods of building with pthread support
1880 # do this before the optional library checks as some of them require pthreads
1881 if enabled pthreads; then
1882 if check_func pthread_create; then
1883 :
1884 elif check_func pthread_create -pthread; then
1885 add_cflags -pthread
1886 add_extralibs -pthread
1887 elif check_func pthread_create -pthreads; then
1888 add_cflags -pthreads
1889 add_extralibs -pthreads
1890 elif check_func pthread_create -lpthreadGC2; then
1891 add_extralibs -lpthreadGC2
1892 elif ! check_lib pthread.h pthread_create -lpthread; then
1893 die "ERROR: can't find pthreads library"
1894 fi
1895 fi
1896
1897 for thread in $THREADS_LIST; do
1898 if enabled $thread; then
1899 test -n "$thread_type" &&
1900 die "ERROR: Only one thread type must be selected." ||
1901 thread_type="$thread"
1902 fi
1903 done
1904
1905 check_lib math.h sin -lm
1906
1907 # test for C99 functions in math.h
1908 for func in llrint lrint lrintf round roundf truncf; do
1909 check_exec <<EOF && enable $func || disable $func
1910 #include <math.h>
1911 int main(void) { return ($func(3.999f) > 0)?0:1; }
1912 EOF
1913 done
1914
1915 # these are off by default, so fail if requested and not available
1916 enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
1917 enabled libamr_nb && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
1918 enabled libamr_wb && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
1919 enabled libdirac && add_cflags $(pkg-config --cflags dirac) &&
1920 require libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init -ldirac_decoder &&
1921 require libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init -ldirac_encoder
1922 enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
1923 enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
1924 enabled libgsm && require libgsm gsm.h gsm_create -lgsm
1925 enabled libmp3lame && require libmp3lame lame/lame.h lame_init -lmp3lame -lm
1926 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
1927 enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
1928 require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
1929 enabled libspeex && require libspeex speex/speex.h speex_decoder_init -lspeex
1930 enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
1931 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
1932 enabled libx264 && require libx264 x264.h x264_encoder_open -lx264 -lm &&
1933 { check_cpp_condition x264.h "X264_BUILD >= 65" ||
1934 die "ERROR: libx264 version must be >= 0.65."; }
1935 enabled libxvid && require libxvid xvid.h xvid_global -lxvidcore
1936 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1937
1938 # libdc1394 check
1939 if enabled libdc1394; then
1940 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
1941 enable libdc1394_2; } ||
1942 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
1943 enable libdc1394_1; } ||
1944 die "ERROR: No version of libdc1394 found "
1945 fi
1946
1947
1948 _restrict=
1949 for restrict_keyword in restrict __restrict__ __restrict; do
1950 check_cc <<EOF && _restrict=$restrict_keyword && break
1951 void foo(char * $restrict_keyword p);
1952 EOF
1953 done
1954
1955 test "$vhook" = "default" && vhook="$dlopen"
1956
1957 if test "$target_os" = cygwin -o "$target_os" = mingw32 && enabled_all static vhook ; then
1958 disable vhook
1959 echo
1960 echo "At the moment vhooks don't work on Cygwin or MinGW static builds."
1961 echo "Patches welcome."
1962 echo
1963 fi
1964
1965 if enabled vhook; then
1966 check_ldflags -rdynamic
1967 check_ldflags -export-dynamic
1968 fi
1969
1970 check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
1971 check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType
1972
1973 ##########################################
1974 # SDL check
1975
1976 disable sdl_too_old
1977 disable sdl
1978 SDL_CONFIG="${cross_prefix}sdl-config"
1979 if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
1980 sdl_cflags=`"${SDL_CONFIG}" --cflags`
1981 temp_cflags $sdl_cflags
1982 temp_extralibs `"${SDL_CONFIG}" --libs`
1983 if check_lib2 SDL.h SDL_Init; then
1984 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1985 if test "$_sdlversion" -lt 121 ; then
1986 enable sdl_too_old
1987 else
1988 enable sdl
1989 check_cc $sdl_cflags <<EOF && enable sdl_video_size
1990 #include <SDL.h>
1991 int main(int argc, char **argv){
1992 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1993 int w = vi->current_w;
1994 return 0;
1995 }
1996 EOF
1997 fi
1998 fi
1999 restore_flags
2000 fi
2001
2002 texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
2003
2004 ##########################################
2005 # Network check
2006
2007 if enabled network; then
2008 check_type "sys/types.h sys/socket.h" socklen_t
2009 # Prefer arpa/inet.h over winsock2
2010 if check_header arpa/inet.h ; then
2011 check_func closesocket
2012 elif check_header winsock2.h ; then
2013 network_extralibs="-lws2_32"
2014 check_type ws2tcpip.h socklen_t
2015 check_func_headers winsock2.h closesocket
2016 fi
2017 fi
2018
2019 ##########################################
2020 # IPv6 check
2021
2022 enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
2023 #include <sys/types.h>
2024 #include <sys/socket.h>
2025 #include <netinet/in.h>
2026 #include <netdb.h>
2027 int main(void) {
2028 struct sockaddr_storage saddr;
2029 struct ipv6_mreq mreq6;
2030 getaddrinfo(0,0,0,0);
2031 getnameinfo(0,0,0,0,0,0,0);
2032 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
2033 }
2034 EOF
2035
2036 check_header linux/videodev.h
2037 check_header linux/videodev2.h
2038 check_header sys/videoio.h
2039
2040 check_func_headers "windows.h vfw.h" capCreateCaptureWindow -lvfw32
2041
2042 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
2043 { check_header dev/bktr/ioctl_meteor.h &&
2044 check_header dev/bktr/ioctl_bt848.h; } ||
2045 { check_header machine/ioctl_meteor.h &&
2046 check_header machine/ioctl_bt848.h; } ||
2047 { check_header dev/video/meteor/ioctl_meteor.h &&
2048 check_header dev/video/bktr/ioctl_bt848.h; } ||
2049 check_header dev/ic/bt8xx.h
2050
2051 check_header sys/soundcard.h
2052 check_header soundcard.h
2053
2054 check_header alsa/asoundlib.h &&
2055 check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
2056
2057 # deal with the X11 frame grabber
2058 enabled x11grab &&
2059 check_header X11/Xlib.h &&
2060 check_header X11/extensions/XShm.h &&
2061 check_func XOpenDisplay -lX11 &&
2062 check_func XShmCreateImage -lX11 -lXext
2063
2064 enabled debug && add_cflags -g"$debuglevel"
2065
2066 # add some useful compiler flags if supported
2067 check_cflags -Wdeclaration-after-statement
2068 check_cflags -Wall
2069 check_cflags -Wno-switch
2070 check_cflags -Wdisabled-optimization
2071 check_cflags -Wpointer-arith
2072 check_cflags -Wredundant-decls
2073 check_cflags -Wno-pointer-sign
2074 check_cflags -Wcast-qual
2075 check_cflags -Wwrite-strings
2076 check_cflags -Wtype-limits
2077 check_cflags -Wundef
2078 enabled extra_warnings && check_cflags -Winline
2079
2080 # add some linker flags
2081 check_ldflags -Wl,--warn-common
2082 check_ldflags -Wl,--as-needed
2083 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'
2084 check_ldflags -Wl,-Bsymbolic
2085
2086 if enabled small; then
2087 check_cflags -Os # not all compilers support -Os
2088 optimizations="small"
2089 elif enabled optimizations; then
2090 if $cc -v 2>&1 | grep -q xlc; then
2091 add_cflags -O5
2092 add_ldflags -O5
2093 else
2094 add_cflags -O3
2095 fi
2096 fi
2097 check_cflags -fno-math-errno
2098 check_cflags -fno-signed-zeros
2099
2100 # add some flags for Intel C Compiler
2101 if $cc --version 2> /dev/null | grep -q Intel; then
2102 # Just warnings, no remarks
2103 check_cflags -w1
2104 # -wd: Disable following warnings
2105 # 144, 167, 556: -Wno-pointer-sign
2106 # 10006: ignoring unknown option -fno-signed-zeros
2107 # 10156: ignoring option '-W'; no argument required
2108 check_cflags -wd144,167,556,10006,10156
2109 # 11030: Warning unknown option --as-needed
2110 # 10156: ignoring option '-export'; no argument required
2111 check_ldflags -wd10156,11030
2112 # Allow to compile with optimizations
2113 check_ldflags -march=$cpu
2114 fi
2115
2116 # PIC flags for shared library objects where they are needed
2117 if enabled shared; then
2118 # LIBOBJFLAGS may have already been set in the OS configuration
2119 if test -z "$LIBOBJFLAGS" ; then
2120 case "${subarch-$arch}" in
2121 x86_64|ia64|alpha|sparc*|power*|parisc*|mips*) LIBOBJFLAGS='$(PIC)' ;;
2122 esac
2123 fi
2124 fi
2125
2126 if enabled gprof; then
2127 add_cflags -p
2128 add_ldflags -p
2129 fi
2130
2131 VHOOKCFLAGS="-fPIC"
2132
2133 # Find out if the .align argument is a power of two or not.
2134 check_asm asmalign_pot '".align 3"'
2135
2136 enabled_any $DECODER_LIST && enable decoders
2137 enabled_any $ENCODER_LIST && enable encoders
2138 enabled_any $BSF_LIST && enable bsfs
2139 enabled_any $DEMUXER_LIST && enable demuxers
2140 enabled_any $MUXER_LIST && enable muxers
2141 enabled_any $FILTER_LIST && enable filters
2142 enabled_any $INDEV_LIST && enable demuxers
2143 enabled_any $OUTDEV_LIST && enable muxers
2144 enabled_any $PROTOCOL_LIST && enable protocols
2145
2146 enabled_any $THREADS_LIST && enable threads
2147
2148 check_deps $CONFIG_LIST \
2149 $CONFIG_EXTRA \
2150 $HAVE_LIST \
2151 $DECODER_LIST \
2152 $ENCODER_LIST \
2153 $PARSER_LIST \
2154 $BSF_LIST \
2155 $DEMUXER_LIST \
2156 $MUXER_LIST \
2157 $FILTER_LIST \
2158 $INDEV_LIST \
2159 $OUTDEV_LIST \
2160 $PROTOCOL_LIST \
2161
2162 echo "install prefix $prefix"
2163 echo "source path $source_path"
2164 echo "C compiler $cc"
2165 echo ".align is power-of-two $asmalign_pot"
2166 echo "ARCH $arch ($cpu)"
2167 if test "$build_suffix" != ""; then
2168 echo "build suffix $build_suffix"
2169 fi
2170 if test "$extra_version" != ""; then
2171 echo "version string suffix $extra_version"
2172 fi
2173 echo "big-endian ${bigendian-no}"
2174 if enabled x86; then
2175 echo "yasm ${yasm-no}"
2176 echo "MMX enabled ${mmx-no}"
2177 echo "MMX2 enabled ${mmx2-no}"
2178 echo "3DNow! enabled ${amd3dnow-no}"
2179 echo "SSE enabled ${sse-no}"
2180 echo "SSSE3 enabled ${ssse3-no}"
2181 echo "CMOV enabled ${cmov-no}"
2182 echo "CMOV is fast ${fast_cmov-no}"
2183 echo "EBX available ${ebx_available-no}"
2184 echo "EBP available ${ebp_available-no}"
2185 fi
2186 if enabled arm; then
2187 echo "ARMv5TE enabled ${armv5te-no}"
2188 echo "ARMv6 enabled ${armv6-no}"
2189 echo "ARMv6T2 enabled ${armv6t2-no}"
2190 echo "ARM VFP enabled ${armvfp-no}"
2191 echo "IWMMXT enabled ${iwmmxt-no}"
2192 echo "NEON enabled ${neon-no}"
2193 fi
2194 if enabled mips; then
2195 echo "MMI enabled ${mmi-no}"
2196 fi
2197 if enabled ppc; then
2198 echo "AltiVec enabled ${altivec-no}"
2199 echo "PPC 4xx optimizations ${ppc4xx-no}"
2200 echo "dcbzl available ${dcbzl-no}"
2201 echo "performance report ${powerpc_perf-no}"
2202 fi
2203 if enabled sparc; then
2204 echo "VIS enabled ${vis-no}"
2205 fi
2206 echo "gprof enabled ${gprof-no}"
2207 echo "debug symbols ${debug-no}"
2208 echo "strip symbols ${stripping-no}"
2209 echo "optimizations ${optimizations-no}"
2210 echo "static ${static-no}"
2211 echo "shared ${shared-no}"
2212 echo "postprocessing support ${postproc-no}"
2213 echo "software scaler enabled ${swscale-no}"
2214 echo "new filter support ${avfilter-no}"
2215 echo "filters using lavformat ${avfilter_lavf-no}"
2216 echo "video hooking ${vhook-no}"
2217 if enabled vhook; then
2218 echo "Imlib2 support ${imlib2-no}"
2219 echo "FreeType support ${freetype2-no}"
2220 fi
2221 echo "network support ${network-no}"
2222 if enabled network; then
2223 echo "IPv6 support ${ipv6-no}"
2224 fi
2225 echo "threading support ${thread_type-no}"
2226 echo "SDL support ${sdl-no}"
2227 if enabled sdl_too_old; then
2228 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
2229 fi
2230 echo "Sun medialib support ${mlib-no}"
2231 echo "AVISynth enabled ${avisynth-no}"
2232 echo "libamr-nb support ${libamr_nb-no}"
2233 echo "libamr-wb support ${libamr_wb-no}"
2234 echo "libdc1394 support ${libdc1394-no}"
2235 echo "libdirac enabled ${libdirac-no}"
2236 echo "libfaac enabled ${libfaac-no}"
2237 echo "libfaad enabled ${libfaad-no}"
2238 echo "libfaad dlopened ${libfaadbin-no}"
2239 echo "libgsm enabled ${libgsm-no}"
2240 echo "libmp3lame enabled ${libmp3lame-no}"
2241 echo "libnut enabled ${libnut-no}"
2242 echo "libschroedinger enabled ${libschroedinger-no}"
2243 echo "libspeex enabled ${libspeex-no}"
2244 echo "libtheora enabled ${libtheora-no}"
2245 echo "libvorbis enabled ${libvorbis-no}"
2246 echo "libx264 enabled ${libx264-no}"
2247 echo "libxvid enabled ${libxvid-no}"
2248 echo "vdpau enabled ${vdpau-no}"
2249 echo "zlib enabled ${zlib-no}"
2250 echo "bzlib enabled ${bzlib-no}"
2251 echo
2252
2253 for type in decoder encoder parser demuxer muxer protocol filter bsf indev outdev; do
2254 echo "Enabled ${type}s:"
2255 eval list=\$$(toupper $type)_LIST
2256 for part in $list; do
2257 enabled $part && echo ${part%_*}
2258 done | sort | pr -3 -t
2259 echo
2260 done
2261
2262 license="LGPL"
2263 if enabled nonfree; then
2264 license="unredistributable"
2265 elif enabled gpl; then
2266 license="GPL"
2267 fi
2268
2269 echo "License: $license"
2270
2271 echo "Creating config.mak and config.h..."
2272
2273 echo "# Automatically generated by configure - do not modify!" > config.mak
2274 echo "/* Automatically generated by configure - do not modify! */" > $TMPH
2275 echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
2276 echo "#define FFMPEG_CONFIG_H" >> $TMPH
2277 echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
2278 echo "#define FFMPEG_DATADIR \"$(eval c_escape $datadir)\"" >> $TMPH
2279
2280 echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak
2281 echo "prefix=$prefix" >> config.mak
2282 echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
2283 echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
2284 echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
2285 echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
2286 echo "DATADIR=\$(DESTDIR)$datadir" >> config.mak
2287 echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
2288 echo "CC=$cc" >> config.mak
2289 echo "YASM=$yasmexe" >> config.mak
2290 echo "AR=$ar" >> config.mak
2291 echo "RANLIB=$ranlib" >> config.mak
2292 echo "LN_S=$ln_s" >> config.mak
2293 enabled stripping &&
2294 echo "STRIP=$strip" >> config.mak ||
2295 echo "STRIP=echo ignoring strip" >> config.mak
2296
2297 echo "OPTFLAGS=$CFLAGS" >> config.mak
2298 echo "VHOOKCFLAGS=$VHOOKCFLAGS" >> config.mak
2299 echo "LDFLAGS=$LDFLAGS" >> config.mak
2300 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
2301 echo "SHFLAGS=$SHFLAGS" >> config.mak
2302 echo "YASMFLAGS=$YASMFLAGS" >> config.mak
2303 echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
2304 echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
2305 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
2306 echo "BUILD_STATIC=$static" >> config.mak
2307 echo "BUILDSUF=$build_suffix" >> config.mak
2308 echo "FULLNAME=$FULLNAME" >> config.mak
2309 echo "LIBPREF=$LIBPREF" >> config.mak
2310 echo "LIBSUF=$LIBSUF" >> config.mak
2311 echo "LIBNAME=$LIBNAME" >> config.mak
2312 echo "SLIBPREF=$SLIBPREF" >> config.mak
2313 echo "SLIBSUF=$SLIBSUF" >> config.mak
2314 echo "EXESUF=$EXESUF" >> config.mak
2315 echo "EXTRA_VERSION=$extra_version" >> config.mak
2316 echo "DEPEND_CMD=$DEPEND_CMD" >> config.mak
2317 echo "HOSTCC=$host_cc" >> config.mak
2318 echo "HOSTCFLAGS=$host_cflags" >> config.mak
2319 echo "HOSTLDFLAGS=$host_ldflags" >> config.mak
2320 echo "HOSTLIBS=$host_libs" >> config.mak
2321 echo "TARGET_EXEC=$target_exec" >> config.mak
2322 echo "TARGET_PATH=$target_path" >> config.mak
2323
2324 if enabled bigendian; then
2325 echo "WORDS_BIGENDIAN=yes" >> config.mak
2326 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
2327 fi
2328
2329 if enabled sdl; then
2330 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
2331 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
2332 fi
2333 if enabled texi2html; then
2334 echo "BUILD_DOC=yes" >> config.mak
2335 fi
2336
2337 get_version(){
2338 name=$1
2339 file=$source_path/$2
2340 eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
2341 eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
2342 lcname=$(tolower $name)
2343 eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
2344 eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
2345 }
2346
2347 get_version LIBSWSCALE libswscale/swscale.h
2348 get_version LIBPOSTPROC libpostproc/postprocess.h
2349 get_version LIBAVCODEC libavcodec/avcodec.h
2350 get_version LIBAVDEVICE libavdevice/avdevice.h
2351 get_version LIBAVFORMAT libavformat/avformat.h
2352 get_version LIBAVUTIL libavutil/avutil.h
2353 get_version LIBAVFILTER libavfilter/avfilter.h
2354
2355 if enabled shared; then
2356 echo "BUILD_SHARED=yes" >> config.mak
2357 echo "PIC=-fPIC -DPIC" >> config.mak
2358 echo "LIBTARGET=${LIBTARGET}" >> config.mak
2359 echo "SLIBNAME=${SLIBNAME}" >> config.mak
2360 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2361 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
2362 echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
2363 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
2364 echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
2365 echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
2366 fi
2367 echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
2368 echo "EXTRALIBS=$extralibs" >> config.mak
2369
2370 echo "ARCH=$arch" >> config.mak
2371
2372 print_config ARCH_ $TMPH config.mak $ARCH_LIST
2373 print_config HAVE_ $TMPH config.mak $HAVE_LIST
2374 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \
2375 $CONFIG_EXTRA \
2376 $DECODER_LIST \
2377 $ENCODER_LIST \
2378 $PARSER_LIST \
2379 $BSF_LIST \
2380 $DEMUXER_LIST \
2381 $MUXER_LIST \
2382 $FILTER_LIST \
2383 $PROTOCOL_LIST \
2384 $INDEV_LIST \
2385 $OUTDEV_LIST \
2386
2387 echo "#define restrict $_restrict" >> $TMPH
2388
2389 if enabled small; then
2390 echo "#define av_always_inline" >> $TMPH
2391 fi
2392
2393 echo "SRC_PATH=\"$source_path\"" >> config.mak
2394 echo "SRC_PATH_BARE=$source_path" >> config.mak
2395 echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2396
2397 # Apparently it's not possible to portably echo a backslash.
2398 enabled asmalign_pot &&
2399 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
2400 printf '#define ASMALIGN(ZEROBITS) ".align 1 << " #ZEROBITS "\\n\\t"\n' >> $TMPH
2401
2402 echo "#define EXTERN_PREFIX \"${extern_prefix}\"" >> $TMPH
2403
2404 echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
2405
2406 # Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
2407 cmp -s $TMPH config.h &&
2408 echo "config.h is unchanged" ||
2409 mv -f $TMPH config.h
2410
2411 rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
2412
2413 # build tree in object directory if source path is different from current one
2414 if enabled source_path_used; then
2415 DIRS="\
2416 doc \
2417 libavcodec \
2418 libavcodec/alpha \
2419 libavcodec/arm \
2420 libavcodec/bfin \
2421 libavcodec/mlib \
2422 libavcodec/ppc \
2423 libavcodec/sh4 \
2424 libavcodec/sparc \
2425 libavcodec/x86 \
2426 libavdevice \
2427 libavfilter \
2428 libavformat \
2429 libavutil \
2430 libpostproc \
2431 libswscale \
2432 tests \
2433 tools \
2434 vhook \
2435 "
2436 FILES="\
2437 Makefile \
2438 common.mak \
2439 subdir.mak \
2440 doc/texi2pod.pl \
2441 libavcodec/Makefile \
2442 libavdevice/Makefile \
2443 libavfilter/Makefile \
2444 libavformat/Makefile \
2445 libavutil/Makefile \
2446 libpostproc/Makefile \
2447 libswscale/Makefile \
2448 "
2449 for dir in $DIRS ; do
2450 mkdir -p $dir
2451 done
2452 for f in $FILES ; do
2453 $ln_s "$source_path/$f" $f
2454 done
2455 fi
2456
2457
2458 # build pkg-config files
2459
2460 pkgconfig_generate(){
2461 name=$1
2462 shortname=${name#lib}${build_suffix}
2463 comment=$2
2464 version=$3
2465 libs=$4
2466 requires=$5
2467 cat <<EOF > $name/$name.pc
2468 prefix=$prefix
2469 exec_prefix=\${prefix}
2470 libdir=$libdir
2471 includedir=$incdir
2472
2473 Name: $name
2474 Description: $comment
2475 Version: $version
2476 Requires: $(disabled shared && echo $requires)
2477 Requires.private: $(enabled shared && echo $requires)
2478 Conflicts:
2479 Libs: -L\${libdir} -l${shortname} $(disabled shared && echo $libs)
2480 Libs.private: $(enabled shared && echo $libs)
2481 Cflags: -I\${includedir}
2482 EOF
2483 cat <<EOF > $name/$name-uninstalled.pc
2484 prefix=
2485 exec_prefix=
2486 libdir=\${pcfiledir}
2487 includedir=${source_path}
2488
2489 Name: $name
2490 Description: $comment
2491 Version: $version
2492 Requires: $requires
2493 Conflicts:
2494 Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
2495 Cflags: -I\${includedir}
2496 EOF
2497 }
2498
2499 pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
2500 pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
2501 pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
2502 pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
2503 enabled avfilter &&
2504 pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
2505 enabled postproc &&
2506 pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
2507 if enabled swscale; then
2508 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
2509 else
2510 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavcodec = $LIBAVCODEC_VERSION"
2511 apply libswscale/libswscale.pc sed s/^Libs:.*$/Libs:/
2512 fi