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