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