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