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