]> git.sesse.net Git - ffmpeg/blob - configure
Move AMR support instructions into the documentation.
[ffmpeg] / configure
1 #!/bin/sh
2 #
3 # ffmpeg configure script (c) 2000, 2001, 2002 Fabrice Bellard
4 #
5
6 # make sure we are running under a compatible shell
7 unset foo
8 (: ${foo%%bar}) 2>/dev/null && ! (: ${foo?}) 2>/dev/null
9 if test "$?" != 0; then
10     if test "x$FFMPEG_CONFIGURE_EXEC" = x; then
11         FFMPEG_CONFIGURE_EXEC=1
12         export FFMPEG_CONFIGURE_EXEC
13         exec bash "$0" "$@"
14         exec ksh "$0" "$@"
15         exec /usr/xpg4/bin/sh "$0" "$@"
16     fi
17     echo "No compatible shell script interpreter found."
18     exit 1
19 fi
20
21 show_help(){
22   echo "Usage: configure [options]"
23   echo "Options: [defaults in brackets after descriptions]"
24   echo
25   echo "Standard options:"
26   echo "  --help                   print this message"
27   echo "  --log[=FILE|yes|no]      log tests and output to FILE [config.err]"
28   echo "  --prefix=PREFIX          install in PREFIX [$PREFIX]"
29   echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
30   echo "  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]"
31   echo "  --incdir=DIR             install includes in DIR [PREFIX/include/ffmpeg]"
32   echo "  --mandir=DIR             install man page in DIR [PREFIX/man]"
33   echo "  --enable-mp3lame         enable MP3 encoding via libmp3lame [default=no]"
34   echo "  --enable-libnut          enable NUT support via libnut [default=no]"
35   echo "  --enable-libogg          enable Ogg support via libogg [default=no]"
36   echo "  --enable-vorbis          enable Vorbis support via libvorbis [default=no]"
37   echo "  --enable-faad            enable FAAD support via libfaad [default=no]"
38   echo "  --enable-faadbin         build FAAD support with runtime linking [default=no]"
39   echo "  --enable-faac            enable FAAC support via libfaac [default=no]"
40   echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
41   echo "  --enable-xvid            enable XviD support via xvidcore [default=no]"
42   echo "  --enable-x264            enable H.264 encoding via x264 [default=no]"
43   echo "  --enable-mingw32         enable MinGW native/cross Windows compile"
44   echo "  --enable-mingwce         enable MinGW native/cross WinCE compile"
45   echo "  --enable-a52             enable GPLed A52 support [default=no]"
46   echo "  --enable-a52bin          open liba52.so.0 at runtime [default=no]"
47   echo "  --enable-dts             enable GPLed DTS support [default=no]"
48   echo "  --enable-pp              enable GPLed postprocessing support [default=no]"
49   echo "  --enable-static          build static libraries [default=yes]"
50   echo "  --disable-static         do not build static libraries [default=no]"
51   echo "  --enable-shared          build shared libraries [default=no]"
52   echo "  --disable-shared         do not build shared libraries [default=yes]"
53   echo "  --enable-amr_nb          enable amr_nb float audio codec"
54   echo "  --enable-amr_nb-fixed    use fixed point for amr-nb codec"
55   echo "  --enable-amr_wb          enable amr_wb float audio codec"
56   echo "  --enable-amr_if2         enable amr_wb IF2 audio codec"
57   echo "  --enable-sunmlib         use Sun medialib [default=no]"
58   echo "  --enable-pthreads        use pthreads [default=no]"
59   echo "  --enable-dc1394          enable IIDC-1394 grabbing using libdc1394"
60   echo "                           and libraw1394 [default=no]"
61   echo "  --enable-swscaler        software scaler support [default=no]"
62   echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
63   echo "  --enable-gpl             allow use of GPL code, the resulting libav*"
64   echo "                           and ffmpeg will be under GPL [default=no]"
65   echo ""
66   echo "Advanced options (experts only):"
67   echo "  --source-path=PATH       path to source code [$source_path]"
68   echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]"
69   echo "  --cross-compile          assume a cross-compiler is used"
70   echo "  --cc=CC                  use C compiler CC [$cc]"
71   echo "  --make=MAKE              use specified make [$make]"
72   echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
73   echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
74   echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
75   echo "  --build-suffix=SUFFIX    suffix for application specific build []"
76   echo "  --arch=ARCH              select architecture  [$arch]"
77   echo "  --cpu=CPU                selects the minimum cpu required (affects
78                                    instruction selection, may crash on older CPUs)"
79   echo "  --powerpc-perf-enable    enable performance report on PPC"
80   echo "                           (requires enabling PMC)"
81   echo "  --disable-mmx            disable MMX usage"
82   echo "  --disable-armv5te        disable armv5te usage"
83   echo "  --disable-iwmmxt         disable iwmmxt usage"
84   echo "  --disable-altivec        disable AltiVec usage"
85   echo "  --disable-audio-oss      disable OSS audio support [default=no]"
86   echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
87   echo "  --disable-v4l            disable video4linux grabbing [default=no]"
88   echo "  --disable-v4l2           disable video4linux2 grabbing [default=no]"
89   echo "  --disable-bktr           disable bktr video grabbing [default=no]"
90   echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
91   echo "  --disable-network        disable network support [default=no]"
92   echo "  --disable-ipv6           disable ipv6 support [default=no]"
93   echo "  --disable-zlib           disable zlib [default=no]"
94   echo "  --disable-vhook          disable video hooking support"
95   echo "  --enable-gprof           enable profiling with gprof [$gprof]"
96   echo "  --disable-debug          disable debugging symbols"
97   echo "  --disable-opts           disable compiler optimizations"
98   echo "  --enable-extra-warnings  enable more compiler warnings"
99   echo "  --disable-mpegaudio-hp   faster (but less accurate)"
100   echo "                           MPEG audio decoding [default=no]"
101   echo "  --disable-protocols      disable I/O protocols support [default=no]"
102   echo "  --disable-ffmpeg         disable ffmpeg build"
103   echo "  --disable-ffserver       disable ffserver build"
104   echo "  --disable-ffplay         disable ffplay build"
105   echo "  --enable-small           optimize for size instead of speed"
106   echo "  --enable-memalign-hack   emulate memalign, interferes with memory debuggers"
107   echo "  --disable-strip          disable stripping of executables and shared libraries"
108   echo "  --disable-encoder=NAME   disables encoder NAME"
109   echo "  --enable-encoder=NAME    enables encoder NAME"
110   echo "  --disable-decoder=NAME   disables decoder NAME"
111   echo "  --enable-decoder=NAME    enables decoder NAME"
112   echo "  --disable-encoders       disables all encoders"
113   echo "  --disable-decoders       disables all decoders"
114   echo "  --disable-muxer=NAME     disables muxer NAME"
115   echo "  --enable-muxer=NAME      enables muxer NAME"
116   echo "  --disable-muxers         disables all muxers"
117   echo "  --disable-demuxer=NAME   disables demuxer NAME"
118   echo "  --enable-demuxer=NAME    enables demuxer NAME"
119   echo "  --disable-demuxers       disables all demuxers"
120   echo "  --enable-parser=NAME     enables parser NAME"
121   echo "  --disable-parser=NAME    disables parser NAME"
122   echo "  --disable-parsers        disables all parsers"
123   echo ""
124   echo "NOTE: Object files are built at the place where configure is launched."
125   exit 1
126 }
127
128 log(){
129     echo "$@" >>$logfile
130 }
131
132 log_file(){
133     log BEGIN $1
134     cat -n $1 >>$logfile
135     log END $1
136 }
137
138 echolog(){
139     log "$@"
140     echo "$@"
141 }
142
143 die(){
144     echolog "$@"
145     cat <<EOF
146 If you think configure made a mistake, make sure you are using the latest
147 version from SVN.  If the latest version fails, report the problem to the
148 ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
149 EOF
150     if enabled logging; then
151         cat <<EOF
152 Include the log file "$logfile" produced by configure as this will help
153 solving the problem.
154 EOF
155     else
156 cat <<EOF
157 Rerun configure with logging enabled (do not use --log=no), and include the
158 log this produces with your report.
159 EOF
160     fi
161     rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
162     exit 1
163 }
164
165 # "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
166 toupper(){
167     echo "$@" | tr '[a-z]' '[A-Z]'
168 }
169
170 set_all(){
171     value=$1
172     shift
173     for var in $*; do
174         eval $var=$value
175     done
176 }
177
178 enable(){
179     set_all yes $*
180 }
181
182 disable(){
183     set_all no $*
184 }
185
186 enabled(){
187     eval test "x\$$1" = "xyes"
188 }
189
190 enabled_all(){
191     for opt; do
192         enabled $opt || return 1
193     done
194 }
195
196 enabled_any(){
197     for opt; do
198         enabled $opt && return 0
199     done
200 }
201
202 print_config(){
203     pfx=$1
204     header=$2
205     makefile=$3
206     shift 3
207     for cfg; do
208         if enabled $cfg; then
209             ucname="${pfx}`toupper $cfg`"
210             echo "#define ${ucname} 1" >> $header
211             echo "${ucname}=yes" >> $makefile
212         fi
213     done
214 }
215
216 flags_saved(){
217     (: ${SAVE_CFLAGS?}) 2>/dev/null
218 }
219
220 save_flags(){
221     flags_saved && return
222     SAVE_CFLAGS="$CFLAGS"
223     SAVE_LDFLAGS="$LDFLAGS"
224     SAVE_extralibs="$extralibs"
225 }
226
227 restore_flags(){
228     CFLAGS="$SAVE_CFLAGS"
229     LDFLAGS="$SAVE_LDFLAGS"
230     extralibs="$SAVE_extralibs"
231     unset SAVE_CFLAGS
232     unset SAVE_LDFLAGS
233     unset SAVE_extralibs
234 }
235
236 temp_cflags(){
237     save_flags
238     CFLAGS="$CFLAGS $*"
239 }
240
241 temp_ldflags(){
242     save_flags
243     LDFLAGS="$LDFLAGS $*"
244 }
245
246 temp_extralibs(){
247     save_flags
248     extralibs="$extralibs $*"
249 }
250
251 append(){
252     var=$1
253     shift
254     flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
255     eval "$var=\"\$$var $*\""
256 }
257
258 add_cflags(){
259     append CFLAGS "$@"
260 }
261
262 add_ldflags(){
263     append LDFLAGS "$@"
264 }
265
266 add_extralibs(){
267     append extralibs "$@"
268 }
269
270 check_cmd(){
271     log "$@"
272     "$@" >>$logfile 2>&1
273 }
274
275 check_cc(){
276     log check_cc "$@"
277     cat >$TMPC
278     log_file $TMPC
279     check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
280 }
281
282 check_cpp(){
283     log check_cpp "$@"
284     cat >$TMPC
285     log_file $TMPC
286     check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
287 }
288
289 check_ld(){
290     log check_ld "$@"
291     check_cc || return
292     check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
293 }
294
295 check_cflags(){
296     log check_cflags "$@"
297     check_cc "$@" <<EOF && add_cflags "$@"
298 int x;
299 EOF
300 }
301
302 check_ldflags(){
303     log check_ldflags "$@"
304     check_ld "$@" <<EOF && add_ldflags "$@"
305 int main(){
306     return 0;
307 }
308 EOF
309 }
310
311 check_header(){
312     log check_header "$@"
313     header=$1
314     shift
315     check_cpp "$@" <<EOF
316 #include <$header>
317 int x;
318 EOF
319 }
320
321 check_func(){
322     log check_func "$@"
323     func=$1
324     shift
325     check_ld "$@" <<EOF
326 extern int $func();
327 int main(){
328     $func();
329 }
330 EOF
331 }
332
333 check_lib(){
334     log check_lib "$@"
335     header="$1"
336     func="$2"
337     shift 2
338     temp_extralibs "$@"
339     check_header $header && check_func $func && add_extralibs "$@"
340     err=$?
341     restore_flags
342     return $err
343 }
344
345 check_exec(){
346     check_ld "$@" && { test "$cross_compile" = yes || $TMPE >>$logfile 2>&1; }
347 }
348
349 require(){
350     name="$1"
351     header="$2"
352     func="$3"
353     shift 3
354     check_lib $header $func "$@" || die "ERROR: $name not found"
355 }
356
357 CONFIG_LIST='
358     encoders
359     decoders
360     parsers
361     muxers
362     demuxers
363     a52
364     a52bin
365     amr
366     amr_nb
367     amr_nb_fixed
368     amr_wb
369     audio_beos
370     audio_oss
371     avisynth
372     beos_netserver
373     bktr
374     dc1394
375     dts
376     dv1394
377     faac
378     faad
379     faadbin
380     ffmpeg
381     ffplay
382     ffserver
383     gpl
384     ipv6
385     libgsm
386     libnut
387     libogg
388     libvorbis
389     memalign_hack
390     mp3lame
391     mpegaudio_hp
392     network
393     pp
394     protocols
395     swscaler
396     vhook
397     video4linux
398     video4linux2
399     x264
400     xvid
401     zlib
402 '
403
404 HAVE_LIST='
405     altivec_h
406     beosthreads
407     byteswap_h
408     dcbzl
409     dlfcn
410     dlopen
411     fast_int
412     freetype2
413     gprof
414     imlib2
415     inet_aton
416     inttypes
417     localtime_r
418     lrintf
419     malloc_h
420     memalign
421     mlib
422     os2threads
423     pthreads
424     sdl
425     sdl_video_size
426     threads
427     w32threads
428 '
429
430 # set temporary file name
431 if test ! -z "$TMPDIR" ; then
432     TMPDIR1="${TMPDIR}"
433 elif test ! -z "$TEMPDIR" ; then
434     TMPDIR1="${TEMPDIR}"
435 else
436     TMPDIR1="/tmp"
437 fi
438
439 TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
440 TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
441 TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
442 TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
443 TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
444
445 # default parameters
446 logging="yes"
447 logfile="config.err"
448 PREFIX="/usr/local"
449 libdir='${PREFIX}/lib'
450 shlibdir="$libdir"
451 incdir='${PREFIX}/include/ffmpeg'
452 mandir='${PREFIX}/man'
453 bindir='${PREFIX}/bin'
454 cross_prefix=""
455 cross_compile="no"
456 cc="gcc"
457 ar="ar"
458 ranlib="ranlib"
459 make="make"
460 strip="strip"
461 arch=`uname -m`
462 cpu="generic"
463 powerpc_perf="no"
464 mmx="default"
465 cmov="no"
466 cmov_is_fast="no"
467 armv5te="default"
468 iwmmxt="default"
469 altivec="default"
470 dcbzl="no"
471 mmi="default"
472 case "$arch" in
473   i386|i486|i586|i686|i86pc|BePC)
474     arch="x86_32"
475   ;;
476   x86_64|amd64)
477     arch="x86_32"
478     canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
479     if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
480       if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
481         arch="x86_64"
482       fi
483     fi
484   ;;
485   # armv4l is a subset of armv[567]*l
486   arm|armv[4567]*l)
487     arch="armv4l"
488   ;;
489   alpha)
490     arch="alpha"
491   ;;
492   "Power Macintosh"|ppc|ppc64|powerpc)
493     arch="powerpc"
494   ;;
495   mips|mipsel|IP*)
496     arch="mips"
497   ;;
498   sun4u|sparc64)
499     arch="sparc64"
500   ;;
501   sparc)
502     arch="sparc"
503   ;;
504   sh4)
505     arch="sh4"
506   ;;
507   parisc|parisc64)
508     arch="parisc"
509   ;;
510   s390|s390x)
511     arch="s390"
512   ;;
513   m68k)
514     arch="m68k"
515   ;;
516   ia64)
517     arch="ia64"
518   ;;
519   bfin)
520     arch="bfin"
521   ;;
522   *)
523     arch="unknown"
524   ;;
525 esac
526 gprof="no"
527 video4linux="yes"
528 video4linux2="yes"
529 bktr="no"
530 audio_oss="yes"
531 audio_beos="no"
532 dv1394="yes"
533 dc1394="no"
534 network="yes"
535 ipv6="yes"
536 zlib="yes"
537 libgsm="no"
538 mp3lame="no"
539 libnut="no"
540 libogg="no"
541 libvorbis="no"
542 faad="no"
543 faadbin="no"
544 faac="no"
545 xvid="no"
546 x264="no"
547 a52="no"
548 a52bin="no"
549 dts="no"
550 pp="no"
551 mingw32="no"
552 mingwce="no"
553 os2="no"
554 lstatic="yes"
555 lshared="no"
556 optimize="yes"
557 debug="yes"
558 extrawarnings="no"
559 dostrip="yes"
560 installstrip="-s"
561 extralibs="-lm"
562 bigendian="no"
563 inttypes="yes"
564 fast_int="yes"
565 vhook="default"
566 avisynth="no"
567 dlfcn="no"
568 dlopen="no"
569 mpegaudio_hp="yes"
570 SHFLAGS='-shared -Wl,-soname,$@'
571 VHOOKSHFLAGS='$(SHFLAGS)'
572 beos_netserver="no"
573 protocols="yes"
574 ffmpeg="yes"
575 ffserver="yes"
576 ffplay="yes"
577 LIBOBJFLAGS=""
578 FFLDFLAGS=-Wl,--warn-common
579 LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
580 FFSERVERLDFLAGS=-Wl,-E
581 LDCONFIG="ldconfig"
582 LIBPREF="lib"
583 LIBSUF=".a"
584 LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
585 SLIBPREF="lib"
586 SLIBSUF=".so"
587 SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
588 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
589 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
590 EXESUF=""
591 BUILDSUF=""
592 amr_nb="no"
593 amr_wb="no"
594 amr_nb_fixed="no"
595 amr_if2="no"
596 mlib="no"
597 pthreads="no"
598 swscaler="no"
599 gpl="no"
600 memalign_hack="no"
601 asmalign_pot="unknown"
602 LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
603
604 # OS specific
605 targetos=`uname -s`
606 case $targetos in
607 BeOS)
608 PREFIX="/boot/home/config"
609 # helps building libavcodec
610 add_cflags "-DPIC -fomit-frame-pointer"
611 # 3 gcc releases known for BeOS, each with ugly bugs
612 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
613 case "$gcc_version" in
614 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
615 mmx="no"
616 ;;
617 *20010315*) echo "BeBits gcc"
618 add_cflags "-fno-expensive-optimizations"
619 ;;
620 esac
621 SHFLAGS=-nostart
622 # disable Linux things
623 audio_oss="no"
624 video4linux="no"
625 video4linux2="no"
626 dv1394="no"
627 # enable BeOS things
628 audio_beos="yes"
629 beosthreads="yes"
630 # no need for libm, but the inet stuff
631 # Check for BONE
632 if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
633 extralibs="-lbind -lsocket"
634 else
635 beos_netserver="yes"
636 extralibs="-lnet"
637 fi ;;
638 SunOS)
639 video4linux="no"
640 video4linux2="no"
641 audio_oss="no"
642 dv1394="no"
643 make="gmake"
644 FFLDFLAGS=""
645 FFSERVERLDFLAGS=""
646 SHFLAGS="-shared -Wl,-h,\$@"
647 add_extralibs "-lsocket -lnsl"
648 ;;
649 NetBSD)
650 video4linux="no"
651 video4linux2="no"
652 bktr="yes"
653 audio_oss="yes"
654 dv1394="no"
655 make="gmake"
656 add_extralibs "-lossaudio"
657 ;;
658 OpenBSD)
659 video4linux="no"
660 video4linux2="no"
661 bktr="yes"
662 audio_oss="yes"
663 dv1394="no"
664 make="gmake"
665 LIBOBJFLAGS="\$(PIC)"
666 LDCONFIG="ldconfig -m \$(shlibdir)"
667 add_extralibs "-lossaudio"
668 ;;
669 FreeBSD)
670 video4linux="no"
671 video4linux2="no"
672 bktr="yes"
673 audio_oss="yes"
674 dv1394="no"
675 make="gmake"
676 add_cflags "-pthread"
677 ;;
678 GNU/kFreeBSD)
679 video4linux="no"
680 video4linux2="no"
681 bktr="yes"
682 audio_oss="yes"
683 dv1394="no"
684 add_cflags "-pthread"
685 ;;
686 BSD/OS)
687 video4linux="no"
688 video4linux2="no"
689 bktr="yes"
690 audio_oss="yes"
691 dv1394="no"
692 extralibs="-lpoll -lgnugetopt -lm"
693 make="gmake"
694 strip="strip -d"
695 installstrip=""
696 ;;
697 Darwin)
698 cc="cc"
699 video4linux="no"
700 video4linux2="no"
701 audio_oss="no"
702 dv1394="no"
703 SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION)"
704 VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
705 extralibs=""
706 strip="strip -x"
707 installstrip=""
708 FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
709 SLIBSUF=".dylib"
710 SLIBNAME_WITH_FULLVERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
711 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
712 FFSERVERLDFLAGS=-Wl,-bind_at_load
713 LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
714 ;;
715 MINGW32*)
716 # Note: the rest of the mingw32 config is done afterwards as mingw32
717 # can be forced on the command line for Linux cross compilation.
718 mingw32="yes"
719 ;;
720 CYGWIN*)
721 targetos=CYGWIN
722 shlibdir='${PREFIX}/bin'
723 video4linux="no"
724 video4linux2="no"
725 audio_oss="yes"
726 dv1394="no"
727 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
728 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
729 extralibs=""
730 EXESUF=".exe"
731 SLIBPREF="cyg"
732 SLIBSUF=".dll"
733 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
734 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
735 SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
736 ;;
737 Linux)
738 LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
739 ;;
740 IRIX*)
741 targetos=IRIX
742 ranlib="echo ignoring ranlib"
743 video4linux="no"
744 video4linux2="no"
745 audio_oss="no"
746 make="gmake"
747 ;;
748 OS/2)
749 TMPE=$TMPE".exe"
750 ar="emxomfar -p128"
751 ranlib="echo ignoring ranlib"
752 strip="echo ignoring strip"
753 add_cflags "-Zomf"
754 FFLDFLAGS="-Zomf -Zstack 16384 -s"
755 SHFLAGS="-Zdll -Zomf"
756 FFSERVERLDFLAGS=""
757 LIBPREF=""
758 LIBSUF=".lib"
759 SLIBPREF=""
760 SLIBSUF=".dll"
761 EXESUF=".exe"
762 extralibs=""
763 pkg_requires=""
764 video4linux="no"
765 video4linux2="no"
766 audio_oss="no"
767 dv1394="no"
768 ffserver="no"
769 vhook="no"
770 os2="yes"
771 os2threads="yes"
772 ;;
773 *)
774 targetos="${targetos}-UNKNOWN"
775 ;;
776 esac
777
778 # find source path
779 source_path="`dirname \"$0\"`"
780 source_path_used="yes"
781 if test -z "$source_path" -o "$source_path" = "." ; then
782     source_path="`pwd`"
783     source_path_used="no"
784 else
785     source_path="`cd \"$source_path\"; pwd`"
786     echo "$source_path" | grep -q '[[:blank:]]' &&
787       die "Out of tree builds are impossible with whitespace in source path."
788 fi
789
790 if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
791     show_help
792 fi
793
794 FFMPEG_CONFIGURATION=" "
795 for opt do
796   FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
797 done
798
799 ENCODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_encoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
800 DECODER_LIST=`grep 'register_avcodec(&[a-z0-9_]*_decoder)' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
801 PARSER_LIST=`grep 'av_register_codec_parser(&[a-z]' "$source_path/libavcodec/allcodecs.c"  | sed 's/.*&\(.*\)).*/\1/'`
802 MUXER_LIST=`grep 'av_register_output_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
803 DEMUXER_LIST=`grep 'av_register_input_format(&[a-z]' "$source_path/libavformat/allformats.c"  | sed 's/.*&\(.*\)).*/\1/'`
804
805 enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST
806
807 for opt do
808   optval="${opt#*=}"
809   case "$opt" in
810   --log)
811   ;;
812   --log=*) logging="$optval"
813   ;;
814   --prefix=*) PREFIX="$optval"; force_prefix=yes
815   ;;
816   --libdir=*) libdir="$optval"; force_libdir=yes
817   ;;
818   --shlibdir=*) shlibdir="$optval"
819   ;;
820   --incdir=*) incdir="$optval"
821   ;;
822   --mandir=*) mandir="$optval"
823   ;;
824   --source-path=*) source_path="$optval"
825   ;;
826   --cross-prefix=*) cross_prefix="$optval"
827   ;;
828   --cross-compile) cross_compile=yes
829   ;;
830   --cc=*) cc="$optval"
831   ;;
832   --make=*) make="$optval"
833   ;;
834   --extra-cflags=*) add_cflags "$optval"
835   ;;
836   --extra-ldflags=*) add_ldflags "$optval"
837   ;;
838   --extra-libs=*) add_extralibs "$optval"
839   ;;
840   --build-suffix=*) BUILDSUF="$optval"
841   ;;
842   --arch=*) arch="$optval"
843   ;;
844   --cpu=*) cpu="$optval"
845   ;;
846   --powerpc-perf-enable) powerpc_perf="yes"
847   ;;
848   --disable-mmx) mmx="no"
849   ;;
850   --disable-armv5te) armv5te="no"
851   ;;
852   --disable-iwmmxt) iwmmxt="no"
853   ;;
854   --disable-altivec) altivec="no"
855   ;;
856   --enable-gprof) gprof="yes"
857   ;;
858   --disable-v4l) video4linux="no"
859   ;;
860   --disable-v4l2) video4linux2="no"
861   ;;
862   --disable-bktr) bktr="no"
863   ;;
864   --disable-audio-oss) audio_oss="no"
865   ;;
866   --disable-audio-beos) audio_beos="no"
867   ;;
868   --disable-dv1394) dv1394="no"
869   ;;
870   --disable-network) network="no"; ffserver="no"
871   ;;
872   --disable-ipv6) ipv6="no";
873   ;;
874   --disable-zlib) zlib="no"
875   ;;
876   --enable-a52) a52="yes"
877   ;;
878   --enable-a52bin) a52bin="yes"
879   ;;
880   --enable-dts) dts="yes"
881   ;;
882   --enable-pp) pp="yes"
883   ;;
884   --enable-libgsm) libgsm="yes"
885   ;;
886   --enable-mp3lame) mp3lame="yes"
887   ;;
888   --enable-libnut) libnut="yes"
889   ;;
890   --enable-libogg) libogg="yes"
891     pkg_requires="$pkg_requires ogg >= 1.1"
892   ;;
893   --enable-vorbis) libvorbis="yes"
894     pkg_requires="$pkg_requires vorbis vorbisenc"
895   ;;
896   --enable-faad) faad="yes"
897   ;;
898   --enable-faadbin) faadbin="yes"
899   ;;
900   --enable-faac) faac="yes"
901   ;;
902   --enable-xvid) xvid="yes"
903   ;;
904   --enable-x264) x264="yes"
905   ;;
906   --enable-avisynth) avisynth="yes";
907   ;;
908   --enable-dc1394) dc1394="yes"
909     pkg_requires="$pkg_requires libraw1394"
910   ;;
911   --disable-vhook) vhook="no"
912   ;;
913   --enable-mingw32) mingw32="yes"
914   ;;
915   --enable-mingwce) mingwce="yes"
916   ;;
917   --enable-static) lstatic="yes"
918   ;;
919   --disable-static) lstatic="no"
920   ;;
921   --enable-shared) lshared="yes"
922   ;;
923   --disable-shared) lshared="no"
924   ;;
925   --disable-debug) debug="no"
926   ;;
927   --disable-opts) optimize="no"
928   ;;
929   --enable-extra-warnings) extrawarnings="yes"
930   ;;
931   --disable-mpegaudio-hp) mpegaudio_hp="no"
932   ;;
933   --disable-protocols) protocols="no"; network="no"; ffserver="no"
934   ;;
935   --disable-ffmpeg) ffmpeg="no"
936   ;;
937   --disable-ffserver) ffserver="no"
938   ;;
939   --disable-ffplay) ffplay="no"
940   ;;
941   --enable-small) optimize="small"
942   ;;
943   --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no"
944   ;;
945   --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no"
946   ;;
947   --enable-amr_wb) amr="yes"; amr_wb="yes"
948   ;;
949   --enable-amr_if2) amr="yes"; amr_if2="yes"
950   ;;
951   --enable-sunmlib) mlib="yes"
952   ;;
953   --enable-pthreads) pthreads="yes"
954   ;;
955   --enable-swscaler) swscaler="yes"
956   ;;
957   --enable-gpl) gpl="yes"
958   ;;
959   --enable-memalign-hack) memalign_hack="yes"
960   ;;
961   --disable-strip) dostrip="no"
962   ;;
963   --enable-encoder=*) enable ${optval}_encoder
964   ;;
965   --enable-decoder=*) enable ${optval}_decoder
966   ;;
967   --disable-encoder=*) disable ${optval}_encoder
968   ;;
969   --disable-decoder=*) disable ${optval}_decoder
970   ;;
971   --disable-encoders) disable $ENCODER_LIST
972   ;;
973   --disable-decoders) disable $DECODER_LIST
974   ;;
975   --enable-muxer=*) enable ${optval}_muxer
976   ;;
977   --disable-muxer=*) disable ${optval}_muxer
978   ;;
979   --disable-muxers) disable $MUXER_LIST; ffserver="no"
980   ;;
981   --enable-demuxer=*) enable ${optval}_demuxer
982   ;;
983   --disable-demuxer=*) disable ${optval}_demuxer
984   ;;
985   --disable-demuxers) disable $DEMUXER_LIST
986   ;;
987   --enable-parser=*) enable ${optval}_parser
988   ;;
989   --disable-parser=*) disable ${optval}_parser
990   ;;
991   --disable-parsers) disable $PARSER_LIST
992   ;;
993   --help) show_help
994   ;;
995   *)
996   echo "Unknown option \"$opt\"."
997   echo "See $0 --help for available options."
998   exit 1
999   ;;
1000   esac
1001 done
1002
1003 if test "$logging" != no; then
1004     test "$logging" = yes || logfile="$logging"
1005     echo "# $0 $@" >$logfile
1006     set >>$logfile
1007 else
1008     logfile=/dev/null
1009 fi
1010
1011 if test "$mingw32" = "yes" -o "$mingwce" = "yes"; then
1012     if test "$lshared" = "yes" && test "$lstatic" = "yes" ; then
1013         cat <<EOF
1014 You can only build one library type at once on MinGW.
1015 Specify --disable-static --enable-shared to only build
1016 the shared libraries. To build only the static libraries
1017 you do not need to pass additional options.
1018 EOF
1019         exit 1
1020     fi
1021     video4linux="no"
1022     video4linux2="no"
1023     bktr="no"
1024     audio_oss="no"
1025     dv1394="no"
1026     dc1394="no"
1027     ffserver="no"
1028     network="no"
1029     if enabled mingw32; then
1030         w32threads="yes"
1031     fi
1032     if test "$mingwce" = "yes"; then
1033         protocols="no"
1034     fi
1035     SLIBPREF=""
1036     SLIBSUF=".dll"
1037     EXESUF=".exe"
1038     SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1039     SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
1040     SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
1041     SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a)"
1042     if test "$force_prefix" != yes; then PREFIX="$PROGRAMFILES/FFmpeg"; fi
1043     if test "$force_libdir" != yes; then bindir='${PREFIX}'; fi
1044     shlibdir='${PREFIX}'
1045 fi
1046
1047 # Combine FFLDFLAGS and the LDFLAGS environment variable.
1048 LDFLAGS="$FFLDFLAGS $LDFLAGS"
1049
1050 test -n "$cross_prefix" && cross_compile=yes
1051 cc="${cross_prefix}${cc}"
1052 ar="${cross_prefix}${ar}"
1053 ranlib="${cross_prefix}${ranlib}"
1054 strip="${cross_prefix}${strip}"
1055
1056 # we need to build at least one lib type
1057 if test "$lstatic" = "no" && test "$lshared" = "no" ; then
1058     cat <<EOF
1059 At least one library type must be built.
1060 Specify --enable-static to build the static libraries or --enable-shared to
1061 build the shared libraries as well. To only build the shared libraries specify
1062 --disable-static in addition to --enable-shared.
1063 EOF
1064     exit 1;
1065 fi
1066
1067 if test "$libvorbis" = "yes" ; then
1068     if test "$libogg" = "no"; then
1069         echo "libogg must be enabled to enable Vorbis."
1070         fail="yes"
1071     fi
1072 fi
1073
1074 if test "$gpl" != "yes"; then
1075     if test "$pp" != "no"; then
1076         echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
1077         fail="yes"
1078     fi
1079
1080     if test "$a52" != "no" -o "$a52bin" != "no"; then
1081         echo "liba52 is under GPL and --enable-gpl is not specified."
1082         fail="yes"
1083     fi
1084
1085     if test "$xvid" != "no"; then
1086         echo "libxvidcore is under GPL and --enable-gpl is not specified."
1087         fail="yes"
1088     fi
1089
1090     if test "$x264" != "no"; then
1091         echo "x264 is under GPL and --enable-gpl is not specified."
1092         fail="yes"
1093     fi
1094
1095     if test "$dts" != "no"; then
1096         echo "libdts is under GPL and --enable-gpl is not specified."
1097         fail="yes"
1098     fi
1099
1100     if test "$faad" != "no" -o "$faadbin" != "no"; then
1101         if check_header faad.h; then
1102             check_cc << EOF
1103                 #include <faad.h>
1104                 #ifndef FAAD2_VERSION
1105                 ok faad1
1106                 #endif
1107                 int main( void ) { return 0; }
1108 EOF
1109             if test $? = 0 ; then
1110                 echo "FAAD2 is under GPL and --enable-gpl is not specified."
1111                 fail="yes"
1112             fi
1113         else
1114             faad="no"
1115             faadbin="no"
1116             echo "FAAD test failed."
1117         fi
1118     fi
1119
1120     if test "$swscaler" != "no"; then
1121         echo "The software scaler is under GPL and --enable-gpl is not specified."
1122         fail="yes"
1123     fi
1124 fi
1125
1126 if test "$fail" = "yes"; then
1127     exit 1
1128 fi
1129
1130 # compute MMX state
1131 if test $mmx = "default"; then
1132     if test $arch = "x86_32" -o $arch = "x86_64"; then
1133         mmx="yes"
1134     else
1135         mmx="no"
1136     fi
1137 fi
1138
1139 #Darwin CC versions
1140 needmdynamicnopic="no"
1141 if test $targetos = Darwin; then
1142     if test -n "`$cc -v 2>&1 | grep xlc`"; then
1143         add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1144     else
1145         gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1146         case "$gcc_version" in
1147             *2.95*)
1148                 add_cflags "-no-cpp-precomp -pipe"
1149                 ;;
1150             *[34].*)
1151                 add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
1152                 if test "$lshared" = no; then
1153                    needmdynamicnopic="yes"
1154                 fi
1155                 ;;
1156             *)
1157                 add_cflags "-no-cpp-precomp -pipe"
1158                 if test "$lshared" = no; then
1159                    needmdynamicnopic="yes"
1160                 fi
1161                 ;;
1162         esac
1163     fi
1164 fi
1165
1166 if test $optimize != "no"; then
1167     add_cflags "-fomit-frame-pointer"
1168 fi
1169
1170 # Can only do AltiVec on PowerPC
1171 if test $altivec = "default"; then
1172     if test $arch = "powerpc"; then
1173         altivec="yes"
1174     else
1175         altivec="no"
1176     fi
1177 fi
1178
1179 # Add processor-specific flags
1180 TUNECPU="generic"
1181 POWERPCMODE="32bits"
1182 if test $cpu != "generic"; then
1183     case $cpu in
1184         601|ppc601|PowerPC601)
1185             add_cflags "-mcpu=601"
1186             if test $altivec = "yes"; then
1187                 echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
1188             fi
1189             TUNECPU=ppc601
1190         ;;
1191         603*|ppc603*|PowerPC603*)
1192             add_cflags "-mcpu=603"
1193             if test $altivec = "yes"; then
1194                 echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
1195             fi
1196             TUNECPU=ppc603
1197         ;;
1198         604*|ppc604*|PowerPC604*)
1199             add_cflags "-mcpu=604"
1200             if test $altivec = "yes"; then
1201                 echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
1202             fi
1203             TUNECPU=ppc604
1204         ;;
1205         G3|g3|75*|ppc75*|PowerPC75*)
1206             add_cflags "-mcpu=750 -mpowerpc-gfxopt"
1207             if test $altivec = "yes"; then
1208                 echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
1209             fi
1210             TUNECPU=ppc750
1211         ;;
1212         G4|g4|745*|ppc745*|PowerPC745*)
1213             add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
1214             if test $altivec = "no"; then
1215                 echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
1216             fi
1217             TUNECPU=ppc7450
1218         ;;
1219         74*|ppc74*|PowerPC74*)
1220             add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
1221             if test $altivec = "no"; then
1222                 echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
1223             fi
1224             TUNECPU=ppc7400
1225         ;;
1226         G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1227             add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1228             if test $altivec = "no"; then
1229                 echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
1230             fi
1231             TUNECPU=ppc970
1232             POWERPCMODE="64bits"
1233         ;;
1234         # targets that do NOT support conditional mov (cmov)
1235         i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1236             add_cflags "-march=$cpu"
1237             cmov="no"
1238         ;;
1239         # targets that do support conditional mov (cmov)
1240         i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx)
1241             add_cflags "-march=$cpu"
1242             cmov="yes"
1243             cmov_is_fast="yes"
1244         ;;
1245         # targets that do support conditional mov but on which it's slow
1246         pentium4|prescott|nocona)
1247             add_cflags "-march=$cpu"
1248             cmov="yes"
1249             cmov_is_fast="no"
1250         ;;
1251         sparc64)
1252             add_cflags "-mcpu=v9"
1253         ;;
1254         *)
1255         echo "WARNING: Unknown CPU \"$cpu\", ignored."
1256         ;;
1257     esac
1258 fi
1259
1260 # make sure we can execute files in $TMPDIR
1261 cat >$TMPE 2>>$logfile <<EOF
1262 #! /bin/sh
1263 EOF
1264 chmod +x $TMPE >>$logfile 2>&1
1265 if ! $TMPE >>$logfile 2>&1; then
1266     cat <<EOF
1267 Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
1268 variable to another directory and make sure that $TMPDIR1 is not mounted
1269 noexec.
1270 EOF
1271     die "Sanity test failed."
1272 fi
1273 rm $TMPE
1274
1275 # compiler sanity check
1276 check_exec <<EOF
1277 int main(){
1278     return 0;
1279 }
1280 EOF
1281 if test "$?" != 0; then
1282     echo "$cc is unable to create an executable file."
1283     if test -z "$cross_prefix" -a "$cross_compile" = no; then
1284         echo "If $cc is a cross-compiler, use the --cross-compile option."
1285         echo "Only do this if you know what cross compiling means."
1286     fi
1287     die "C compiler test failed."
1288 fi
1289
1290 # check for assembler specific support
1291
1292 if test $arch = "powerpc"; then
1293 check_cc <<EOF && dcbzl=yes
1294 int main(void) {
1295     register long zero = 0;
1296     char data[1024];
1297     asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1298 return 0;
1299 }
1300 EOF
1301 fi
1302
1303 # check for SIMD availability
1304
1305 # AltiVec flags: The FSF version of GCC differs from the Apple version
1306 if test $arch = "powerpc"; then
1307     if test $altivec = "yes"; then
1308         if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1309             add_cflags "-faltivec"
1310         else
1311             add_cflags "-maltivec -mabi=altivec"
1312         fi
1313     fi
1314 fi
1315
1316 check_header altivec.h && altivec_h=yes || altivec_h=no
1317
1318 # check if our compiler supports Motorola AltiVec C API
1319 if test $altivec = "yes"; then
1320     if test $altivec_h = "yes"; then
1321         inc_altivec_h="#include <altivec.h>"
1322     else
1323         inc_altivec_h=
1324     fi
1325     check_cc <<EOF || altivec=no
1326 $inc_altivec_h
1327 int main(void) {
1328     vector signed int v1, v2, v3;
1329     v1 = vec_add(v2,v3);
1330     return 0;
1331 }
1332 EOF
1333 fi
1334
1335 # check armv5te instructions support
1336 if test $armv5te = "default" -a $arch = "armv4l"; then
1337     armv5te=no
1338     check_cc <<EOF && armv5te=yes
1339         int main(void) {
1340         __asm__ __volatile__ ("qadd r0, r0, r0");
1341         }
1342 EOF
1343 fi
1344
1345 # check iwmmxt support
1346 if test $iwmmxt = "default" -a $arch = "armv4l"; then
1347     iwmmxt=no
1348     check_cc <<EOF && iwmmxt=yes
1349         int main(void) {
1350         __asm__ __volatile__ ("wunpckelub wr6, wr4");
1351         }
1352 EOF
1353 fi
1354
1355 # mmi only available on mips
1356 if test $mmi = "default"; then
1357     if test $arch = "mips"; then
1358         mmi="yes"
1359     else
1360         mmi="no"
1361     fi
1362 fi
1363
1364 # check if our compiler supports mmi
1365 enabled mmi && check_cc <<EOF || mmi="no"
1366 int main(void) {
1367     __asm__ ("lq \$2, 0(\$2)");
1368     return 0;
1369 }
1370 EOF
1371
1372 # ---
1373 # big/little-endian test
1374 if test "$cross_compile" = "no"; then
1375     check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1376 #include <inttypes.h>
1377 int main(int argc, char ** argv){
1378         volatile uint32_t i=0x01234567;
1379         return (*((uint8_t*)(&i))) == 0x67;
1380 }
1381 EOF
1382 else
1383     # programs cannot be launched if cross compiling, so make a static guess
1384     if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
1385         bigendian="yes"
1386     fi
1387 fi
1388
1389 # ---
1390 # *inttypes.h* test
1391 check_header inttypes.h || inttypes=no
1392
1393 # ---
1394 # *int_fast* test
1395 check_cc <<EOF || fast_int=no
1396 #include <inttypes.h>
1397 int main(int argc, char ** argv){
1398         volatile uint_fast64_t i=0x01234567;
1399         return 0;
1400 }
1401 EOF
1402
1403 # ---
1404 # check availability of some header files
1405
1406 memalign=no
1407 malloc_h=no
1408 if check_header malloc.h; then
1409     malloc_h=yes
1410     memalign=yes
1411     check_func memalign || memalign="no"
1412 fi
1413
1414 if test "$memalign" = "no" -a "$mmx" = "yes" -a \
1415         "$memalign_hack" != "yes" -a "$targetos" != "Darwin" -a \
1416         "$targetos" != "FreeBSD" ; then
1417     die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1418 fi
1419
1420 check_header byteswap.h && byteswap_h=yes || byteswap_h=no
1421
1422 check_func inet_aton && inet_aton=yes || inet_aton=no
1423 check_func localtime_r && localtime_r=yes || localtime_r=no
1424 enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
1425
1426 # check for some common methods of building with pthread support
1427 # do this before the optional library checks as some of them require pthreads
1428 if enabled pthreads; then
1429     { check_cflags -pthread && check_ldflags -pthread; } ||
1430     { check_cflags -pthreads && check_ldflags -pthreads; } ||
1431     check_lib pthread.h pthread_create -lpthread ||
1432     check_func pthread_create ||
1433     die "ERROR: can't find pthreads library"
1434 fi
1435
1436 # these are off by default, so fail if requested and not available
1437 enabled dts     && require libdts dts.h dts_init -ldts -lm
1438 enabled libgsm  && require libgsm gsm.h gsm_create -lgsm
1439 enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1440 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1441 enabled libogg  && require libogg ogg/ogg.h ogg_sync_init -logg
1442 enabled libnut  && require libnut libnut.h nut_demuxer_init -lnut
1443 enabled xvid    && require XviD xvid.h xvid_global -lxvidcore
1444 enabled x264    && require x264 x264.h x264_encoder_open -lx264
1445 enabled dc1394  && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
1446 enabled mlib    && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1447
1448 # Ugh, faac uses stdcall calling convention on win32 so we can't use
1449 # the generic test functions
1450 if enabled faac; then
1451     save_flags
1452     temp_extralibs -lfaac
1453     check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
1454 #include <stdint.h>
1455 #include <faac.h>
1456 int main(){
1457     char *id, *cpr;
1458     faacEncGetVersion(&id, &cpr);
1459     return 0;
1460 }
1461 EOF
1462     restore_flags
1463 fi
1464
1465 # Ugh, recent faad2 versions have renamed all functions and #define the
1466 # old names in faad.h.  Generic tests won't work.
1467 if enabled faad; then
1468     save_flags
1469     temp_extralibs -lfaad
1470     check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
1471 #include <faad.h>
1472 int main(){
1473     faacDecOpen();
1474     return 0;
1475 }
1476 EOF
1477     restore_flags
1478 fi
1479
1480 # Ugh, avisynth uses WINAPI calls. Generic tests won't work.
1481 if enabled avisynth; then
1482     save_flags
1483     temp_extralibs -lvfw32
1484     check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
1485 #include <windows.h>
1486 #include <vfw.h>
1487 int main(){
1488     AVIFileInit();
1489     return 0;
1490 }
1491 EOF
1492     restore_flags
1493 fi
1494
1495
1496 # test for lrintf in math.h
1497 check_exec <<EOF && lrintf=yes || lrintf=no
1498 #define _ISOC9X_SOURCE  1
1499 #include <math.h>
1500 int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1501 EOF
1502
1503 _restrict=
1504 for restrict_keyword in restrict __restrict__ __restrict; do
1505     check_cc <<EOF && _restrict=$restrict_keyword && break
1506 void foo(char * $restrict_keyword p);
1507 EOF
1508 done
1509
1510 # dlopen/dlfcn.h probing
1511
1512 check_header dlfcn.h && dlfcn=yes
1513
1514 temp_extralibs -ldl
1515 if check_func dlopen; then
1516     dlopen=yes
1517     ldl=-ldl
1518 fi
1519 restore_flags
1520
1521 if check_func dlopen; then
1522     dlopen=yes
1523     ldl=
1524 fi
1525
1526 if test "$vhook" = "default"; then
1527     vhook="$dlopen"
1528 fi
1529
1530 if enabled_any vhook a52bin faadbin; then
1531     add_extralibs $ldl
1532 fi
1533
1534 if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
1535     vhook="no"
1536     echo
1537     echo "At the moment vhooks don't work on Cygwin static builds."
1538     echo "Patches welcome."
1539     echo
1540 fi
1541
1542 if enabled vhook; then
1543     check_ldflags -rdynamic
1544     check_ldflags -export-dynamic
1545 fi
1546
1547 ##########################################
1548 # imlib check
1549
1550 temp_extralibs -lImlib2
1551 check_ld <<EOF && imlib2=yes || imlib2=no
1552 #include <X11/Xlib.h>
1553 #include <Imlib2.h>
1554 int main( void ) { return (int) imlib_load_font("foo"); }
1555 EOF
1556 restore_flags
1557
1558 ##########################################
1559 # FreeType check
1560
1561 freetype2=no
1562 if test "x$targetos" != "xBeOS"; then
1563   if (freetype-config --version) >/dev/null 2>&1 ; then
1564       temp_cflags `freetype-config --cflags`
1565       temp_extralibs `freetype-config --libs`
1566       check_ld <<EOF && freetype2=yes
1567 #include <ft2build.h>
1568 int main( void ) { return (int) FT_Init_FreeType(0); }
1569 EOF
1570       restore_flags
1571   fi
1572 fi
1573
1574 ##########################################
1575 # SDL check
1576
1577 sdl_too_old=no
1578 sdl=no
1579 SDL_CONFIG="${cross_prefix}sdl-config"
1580 if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1581     temp_cflags `"${SDL_CONFIG}" --cflags`
1582     temp_extralibs `"${SDL_CONFIG}" --libs`
1583     check_ld <<EOF
1584 #include <SDL.h>
1585 #undef main /* We don't want SDL to override our main() */
1586 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1587 EOF
1588     if test $? = 0; then
1589         _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1590         if test "$_sdlversion" -lt 121 ; then
1591             sdl_too_old=yes
1592         else
1593             sdl=yes
1594             check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
1595 #include <SDL.h>
1596 int main(void){
1597     const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1598     int w = vi->current_w;
1599     return 0;
1600 }
1601 EOF
1602         fi
1603     fi
1604     restore_flags
1605 fi
1606
1607 enabled sdl || ffplay=no
1608
1609 ##########################################
1610 # texi2html check
1611
1612 texi2html=no
1613 if (texi2html -version) >/dev/null 2>&1; then
1614 texi2html=yes
1615 fi
1616
1617 ##########################################
1618 # IPv6 check
1619
1620 enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1621 #include <sys/types.h>
1622 #include <sys/socket.h>
1623 #include <netinet/in.h>
1624 #include <netdb.h>
1625 int main( void ) {
1626   struct sockaddr_storage saddr;
1627   struct ipv6_mreq mreq6;
1628   getaddrinfo(0,0,0,0);
1629   getnameinfo(0,0,0,0,0,0,0);
1630   IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1631 }
1632 EOF
1633
1634 # check for video4linux2 --- V4L2_PIX_FMT_YUV420
1635 enabled video4linux2 && check_cc <<EOF || video4linux2="no"
1636 #include <sys/time.h>
1637 #include <asm/types.h>
1638 #include <linux/videodev2.h>
1639 int dummy = V4L2_PIX_FMT_YUV420;
1640 struct v4l2_buffer dummy1;
1641 EOF
1642
1643 enabled debug && add_cflags -g
1644
1645 # add some useful compiler flags if supported
1646 check_cflags -Wdeclaration-after-statement
1647 check_cflags -Wall
1648 check_cflags -Wno-switch
1649 check_cflags -Wdisabled-optimization
1650 check_cflags -Wpointer-arith
1651 check_cflags -Wredundant-decls
1652 enabled extrawarnings && check_cflags -Winline
1653
1654 # add some linker flags
1655 check_ldflags $LDLATEFLAGS
1656
1657 # not all compilers support -Os
1658 test "$optimize" = "small" && check_cflags -Os
1659
1660 if enabled optimize; then
1661     if test -n "`$cc -v 2>&1 | grep xlc`"; then
1662         add_cflags  "-O5"
1663         add_ldflags "-O5"
1664     else
1665         add_cflags "-O3"
1666     fi
1667 fi
1668
1669 # PIC flags for shared library objects where they are needed
1670 if test "$lshared" = "yes" ; then
1671     # LIBOBJFLAGS may have already been set in the OS configuration
1672     if test -z "$LIBOBJFLAGS" ; then
1673         case "$arch" in
1674             x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
1675         esac
1676     fi
1677 fi
1678
1679 if test "$gprof" = "yes" ; then
1680     add_cflags  "-p"
1681     add_ldflags "-p"
1682 fi
1683
1684 VHOOKCFLAGS="-fPIC $CFLAGS"
1685 test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1686
1687 # find if .align arg is power-of-two or not
1688 if test $asmalign_pot = "unknown"; then
1689     asmalign_pot="no"
1690     echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1691 fi
1692
1693 echo "install prefix   $PREFIX"
1694 echo "source path      $source_path"
1695 echo "C compiler       $cc"
1696 echo "make             $make"
1697 echo "ARCH             $arch ($cpu)"
1698 if test "$BUILDSUF" != ""; then
1699     echo "build suffix     $BUILDSUF"
1700 fi
1701 echo "big-endian       $bigendian"
1702 echo "inttypes.h       $inttypes"
1703 echo "int_fastxx_t     $fast_int"
1704 if test $arch = "x86_32" -o $arch = "x86_64"; then
1705     echo "MMX enabled      $mmx"
1706     echo "CMOV enabled     $cmov"
1707     echo "CMOV is fast     $cmov_is_fast"
1708 fi
1709 if test $arch = "armv4l"; then
1710     echo "ARMv5TE enabled  $armv5te"
1711     echo "IWMMXT enabled   $iwmmxt"
1712 fi
1713 if test $arch = "mips"; then
1714     echo "MMI enabled      $mmi"
1715 fi
1716 if test $arch = "powerpc"; then
1717     echo "AltiVec enabled  $altivec"
1718     echo "dcbzl available  $dcbzl"
1719 fi
1720 echo "gprof enabled    $gprof"
1721 echo "zlib enabled     $zlib"
1722 echo "libgsm enabled   $libgsm"
1723 echo "mp3lame enabled  $mp3lame"
1724 echo "libnut enabled   $libnut"
1725 echo "libogg enabled   $libogg"
1726 echo "Vorbis enabled   $libvorbis"
1727 echo "FAAD enabled     $faad"
1728 echo "faadbin enabled  $faadbin"
1729 echo "FAAC enabled     $faac"
1730 echo "XviD enabled     $xvid"
1731 echo "x264 enabled     $x264"
1732 echo "a52 support      $a52"
1733 echo "a52 dlopened     $a52bin"
1734 echo "DTS support      $dts"
1735 echo "pp support       $pp"
1736 echo "Software Scaler enabled $swscaler"
1737 echo "AVISynth enabled $avisynth"
1738 echo "debug symbols    $debug"
1739 echo "strip symbols    $dostrip"
1740 echo "optimize         $optimize"
1741 echo "static           $lstatic"
1742 echo "shared           $lshared"
1743 echo "video hooking    $vhook"
1744 echo "SDL support      $sdl"
1745 if test $sdl_too_old = "yes"; then
1746     echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1747 fi
1748
1749 if test "$vhook" = "yes"; then
1750     echo "Imlib2 support   $imlib2"
1751     echo "FreeType support $freetype2"
1752 fi
1753 echo "Sun medialib support"  $mlib
1754 echo "pthreads support"      $pthreads
1755 echo "AMR-NB float support"  $amr_nb
1756 echo "AMR-NB fixed support"  $amr_nb_fixed
1757 echo "AMR-WB float support"  $amr_wb
1758 echo "AMR-WB IF2 support"    $amr_if2
1759 echo "network support      $network"
1760 if test "$network" = "yes" ; then
1761     echo "IPv6 support         $ipv6"
1762 fi
1763 echo ".align is power-of-two" $asmalign_pot
1764 if test "$gpl" = "no" ; then
1765     echo "License: LGPL"
1766 else
1767     echo "License: GPL"
1768 fi
1769
1770 echo "Creating config.mak and config.h..."
1771
1772 date >> config.log
1773 echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
1774 echo "# Automatically generated by configure - do not modify!" > config.mak
1775 echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1776 echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
1777
1778 echo "PREFIX=$PREFIX" >> config.mak
1779 echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1780 echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1781 echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1782 echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1783 echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1784 echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1785 echo "MAKE=$make" >> config.mak
1786 echo "CC=$cc" >> config.mak
1787 echo "AR=$ar" >> config.mak
1788 echo "RANLIB=$ranlib" >> config.mak
1789 if test "$dostrip" = "yes" ; then
1790     echo "STRIP=$strip" >> config.mak
1791     echo "INSTALLSTRIP=$installstrip" >> config.mak
1792 else
1793     echo "STRIP=echo ignoring strip" >> config.mak
1794     echo "INSTALLSTRIP=" >> config.mak
1795 fi
1796
1797 echo "OPTFLAGS=$CFLAGS" >> config.mak
1798 echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1799 echo "LDFLAGS=$LDFLAGS" >> config.mak
1800 echo "LDCONFIG=$LDCONFIG" >> config.mak
1801 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1802 echo "SHFLAGS=$SHFLAGS" >> config.mak
1803 echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1804 echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1805 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1806 echo "BUILD_STATIC=$lstatic" >> config.mak
1807 echo "BUILDSUF=$BUILDSUF" >> config.mak
1808 echo "LIBPREF=$LIBPREF" >> config.mak
1809 echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1810 if test "$lstatic" = "yes" ; then
1811   echo "LIB=$LIB" >> config.mak
1812 else # Some Make complain if this variable does not exist.
1813   echo "LIB=" >> config.mak
1814 fi
1815 echo "SLIBPREF=$SLIBPREF" >> config.mak
1816 echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1817 echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1818 echo "TARGET_OS=$targetos" >> config.mak
1819 if test "$arch" = "x86_32" -o "$arch" = "x86_64" ; then
1820   echo "TARGET_ARCH_X86=yes" >> config.mak
1821   echo "#define ARCH_X86 1" >> $TMPH
1822 fi
1823 if test "$arch" = "x86_32" ; then
1824   echo "TARGET_ARCH_X86_32=yes" >> config.mak
1825   echo "#define ARCH_X86_32 1" >> $TMPH
1826 elif test "$arch" = "x86_64" ; then
1827   echo "TARGET_ARCH_X86_64=yes" >> config.mak
1828   echo "#define ARCH_X86_64 1" >> $TMPH
1829 elif test "$arch" = "armv4l" ; then
1830   echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1831   echo "#define ARCH_ARMV4L 1" >> $TMPH
1832 elif test "$arch" = "alpha" ; then
1833   echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1834   echo "#define ARCH_ALPHA 1" >> $TMPH
1835 elif test "$arch" = "sparc64" ; then
1836   echo "TARGET_ARCH_SPARC64=yes" >> config.mak
1837   echo "#define ARCH_SPARC64 1" >> $TMPH
1838   echo "TARGET_ARCH_SPARC=yes" >> config.mak
1839   echo "#define ARCH_SPARC 1" >> $TMPH
1840 elif test "$arch" = "sparc" ; then
1841   echo "TARGET_ARCH_SPARC=yes" >> config.mak
1842   echo "#define ARCH_SPARC 1" >> $TMPH
1843 elif test "$arch" = "powerpc" ; then
1844   echo "TARGET_ARCH_POWERPC=yes" >> config.mak
1845   echo "#define ARCH_POWERPC 1" >> $TMPH
1846   if test $POWERPCMODE = "32bits"; then
1847     echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
1848   else
1849     echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1850   fi
1851   if test "$powerpc_perf" = "yes"; then
1852     echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1853   fi
1854 elif test "$arch" = "mips" ; then
1855   echo "TARGET_ARCH_MIPS=yes" >> config.mak
1856   echo "#define ARCH_MIPS 1" >> $TMPH
1857 elif test "$arch" = "sh4" ; then
1858   echo "TARGET_ARCH_SH4=yes" >> config.mak
1859   echo "#define ARCH_SH4 1" >> $TMPH
1860 elif test "$arch" = "parisc" ; then
1861   echo "TARGET_ARCH_PARISC=yes" >> config.mak
1862   echo "#define ARCH_PARISC 1" >> $TMPH
1863 elif test "$arch" = "s390" ; then
1864   echo "TARGET_ARCH_S390=yes" >> config.mak
1865   echo "#define ARCH_S390 1" >> $TMPH
1866 elif test "$arch" = "m68k" ; then
1867   echo "TARGET_ARCH_M68K=yes" >> config.mak
1868   echo "#define ARCH_M68K 1" >> $TMPH
1869 elif test "$arch" = "ia64" ; then
1870   echo "TARGET_ARCH_IA64=yes" >> config.mak
1871   echo "#define ARCH_IA64 1" >> $TMPH
1872 elif test "$arch" = "bfin" ; then
1873   echo "TARGET_ARCH_BFIN=yes" >> config.mak
1874   echo "#define ARCH_BFIN 1" >> $TMPH
1875 fi
1876 echo "#define TUNECPU $TUNECPU" >> $TMPH
1877 if test "$bigendian" = "yes" ; then
1878   echo "WORDS_BIGENDIAN=yes" >> config.mak
1879   echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1880 fi
1881 if test "$mmx" = "yes" ; then
1882   echo "TARGET_MMX=yes" >> config.mak
1883   echo "#define HAVE_MMX 1" >> $TMPH
1884   echo "#define __CPU__ 586" >> $TMPH
1885 fi
1886 if test "$cmov" = "yes" ; then
1887   echo "TARGET_CMOV=yes" >> config.mak
1888   echo "#define HAVE_CMOV 1" >> $TMPH
1889 fi
1890 if test "$cmov_is_fast" = "yes" ; then
1891   echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
1892   echo "#define CMOV_IS_FAST 1" >> $TMPH
1893 fi
1894 if test "$armv5te" = "yes" ; then
1895   echo "TARGET_ARMV5TE=yes" >> config.mak
1896   echo "#define HAVE_ARMV5TE 1" >> $TMPH
1897 fi
1898 if test "$iwmmxt" = "yes" ; then
1899   echo "TARGET_IWMMXT=yes" >> config.mak
1900   echo "#define HAVE_IWMMXT 1" >> $TMPH
1901 fi
1902 if test "$mmi" = "yes" ; then
1903   echo "TARGET_MMI=yes" >> config.mak
1904   echo "#define HAVE_MMI 1" >> $TMPH
1905 fi
1906
1907 if test "$altivec" = "yes" ; then
1908   echo "TARGET_ALTIVEC=yes" >> config.mak
1909   echo "#define HAVE_ALTIVEC 1" >> $TMPH
1910 fi
1911
1912 if test "$sdl" = "yes" ; then
1913   echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1914   echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1915 fi
1916 if test "$texi2html" = "yes"; then
1917   echo "BUILD_DOC=yes" >> config.mak
1918 fi
1919
1920 sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1921 pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
1922 lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1923 lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1924 lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1925
1926
1927
1928 if test "$lshared" = "yes" ; then
1929   echo "#define BUILD_SHARED_AV 1" >> $TMPH
1930   echo "BUILD_SHARED=yes" >> config.mak
1931   echo "PIC=-fPIC -DPIC" >> config.mak
1932   echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
1933   echo "SPPVERSION=$lavc_version" >> config.mak
1934   echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
1935   echo "LAVCVERSION=$lavc_version" >> config.mak
1936   echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
1937   echo "LAVFVERSION=$lavf_version" >> config.mak
1938   echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
1939   echo "LAVUVERSION=$lavu_version" >> config.mak
1940   echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1941   echo "SWSVERSION=$sws_version" >> config.mak
1942   echo "SLIBNAME=${SLIBNAME}" >> config.mak
1943   echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1944   echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1945   echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
1946 fi
1947 echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1948 echo "EXTRALIBS=$extralibs" >> config.mak
1949
1950 enabled_any $ENCODER_LIST && enable encoders
1951 enabled_any $DECODER_LIST && enable decoders
1952 enabled_any $MUXER_LIST   && enable muxers
1953 enabled_any $DEMUXER_LIST && enable demuxers
1954
1955 enabled_any pthreads beosthreads os2threads w32threads && enable threads
1956
1957 print_config HAVE_   $TMPH config.mak $HAVE_LIST
1958 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1959
1960 if test "$mingw32" = "yes" ; then
1961   echo "#ifndef __MINGW32__" >> $TMPH
1962   echo "#define __MINGW32__ 1" >> $TMPH
1963   echo "#endif" >> $TMPH
1964 fi
1965
1966 if test "$mingwce" = "yes" ; then
1967   echo "#define CONFIG_WINCE 1" >> $TMPH
1968   echo "#ifndef __MINGW32__" >> $TMPH
1969   echo "#define __MINGW32__ 1" >> $TMPH
1970   echo "#endif" >> $TMPH
1971 fi
1972
1973 if test "$os2" = "yes" ; then
1974   echo "#define CONFIG_OS2 1" >> $TMPH
1975 fi
1976
1977 if test "$targetos" = "Darwin"; then
1978   echo "#define CONFIG_DARWIN 1"  >> $TMPH
1979 fi
1980
1981 echo "#define restrict $_restrict" >> $TMPH
1982
1983 if test "$optimize" = "small"; then
1984   echo "#define always_inline"  >> $TMPH
1985   echo "#define CONFIG_SMALL 1" >> $TMPH
1986 fi
1987
1988 echo "SRC_PATH=\"$source_path\"" >> config.mak
1989 echo "SRC_PATH_BARE=$source_path" >> config.mak
1990 echo "BUILD_ROOT=\"$PWD\"" >> config.mak
1991
1992 if test "$amr_if2" = "yes" ; then
1993   echo "AMR_CFLAGS=-DIF2=1" >> config.mak
1994 fi
1995
1996 # Apparently it's not possible to portably echo a backslash.
1997 if test "$asmalign_pot" = "yes" ; then
1998   printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
1999 else
2000   printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2001 fi
2002
2003
2004 for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2005     ucname="`toupper $codec`"
2006     config_name="CONFIG_$ucname"
2007     enabled_name="ENABLE_$ucname"
2008     if enabled $codec; then
2009         echo "#define $config_name 1" >> $TMPH
2010         echo "#define $enabled_name 1" >> $TMPH
2011         echo "$config_name=yes" >> config.mak
2012     else
2013         echo "#define $enabled_name 0" >> $TMPH
2014     fi
2015 done
2016
2017 # Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
2018 if ! cmp -s $TMPH config.h; then
2019         mv -f $TMPH config.h
2020 else
2021         echo "config.h is unchanged"
2022 fi
2023
2024 rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2025
2026 # build tree in object directory if source path is different from current one
2027 if test "$source_path_used" = "yes" ; then
2028     DIRS="\
2029          doc \
2030          libavformat \
2031          libavcodec \
2032          libavcodec/alpha \
2033          libavcodec/armv4l \
2034          libavcodec/bfin \
2035          libavcodec/i386 \
2036          libavcodec/sparc \
2037          libavcodec/mlib \
2038          libavcodec/ppc \
2039          libavcodec/liba52 \
2040          libpostproc \
2041          libavutil \
2042          libswscale \
2043          tests \
2044          vhook \
2045          "
2046     FILES="\
2047           Makefile \
2048           common.mak \
2049           libavformat/Makefile \
2050           libavcodec/Makefile \
2051           libpostproc/Makefile \
2052           libavutil/Makefile \
2053           libswscale/Makefile \
2054           tests/Makefile \
2055           vhook/Makefile \
2056           doc/Makefile \
2057           doc/texi2pod.pl \
2058           "
2059     for dir in $DIRS ; do
2060             mkdir -p $dir
2061     done
2062     for f in $FILES ; do
2063         ln -sf "$source_path/$f" $f
2064     done
2065 fi
2066
2067 # build pkg-config files libav*.pc and libpostproc.pc
2068 # libavutil.pc
2069 cat <<EOF >libavutil.pc
2070 prefix=$PREFIX
2071 exec_prefix=\${prefix}
2072 libdir=\${exec_prefix}/lib
2073 includedir=\${prefix}/include
2074
2075 Name: libavutil
2076 Description: FFmpeg utility library
2077 Version: $lavu_version
2078 Requires:
2079 Conflicts:
2080 Libs: -L\${libdir} -lavutil
2081 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2082 EOF
2083
2084 cat <<EOF >libavutil-uninstalled.pc
2085 prefix=
2086 exec_prefix=
2087 libdir=\${pcfiledir}/libavutil
2088 includedir=\${pcfiledir}/libavutil
2089
2090 Name: libavutil
2091 Description: FFmpeg utility library
2092 Version: $lavu_version
2093 Requires:
2094 Conflicts:
2095 Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
2096 Cflags: -I\${includedir}
2097 EOF
2098
2099 # libavcodec.pc
2100 cat <<EOF >libavcodec.pc
2101 prefix=$PREFIX
2102 exec_prefix=\${prefix}
2103 libdir=\${exec_prefix}/lib
2104 includedir=\${prefix}/include
2105
2106 Name: libavcodec
2107 Description: FFmpeg codec library
2108 Version: $lavc_version
2109 Requires: $pkg_requires libavutil = $lavu_version
2110 Conflicts:
2111 Libs: -L\${libdir} -lavcodec $extralibs
2112 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2113 EOF
2114
2115 cat <<EOF >libavcodec-uninstalled.pc
2116 prefix=
2117 exec_prefix=
2118 libdir=\${pcfiledir}/libavcodec
2119 includedir=\${pcfiledir}/libavcodec
2120
2121 Name: libavcodec
2122 Description: FFmpeg codec library
2123 Version: $lavc_version
2124 Requires: $pkg_requires libavutil = $lavu_version
2125 Conflicts:
2126 Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
2127 Cflags: -I\${includedir}
2128 EOF
2129
2130 # libavformat.pc
2131 cat <<EOF >libavformat.pc
2132 prefix=$PREFIX
2133 exec_prefix=\${prefix}
2134 libdir=\${exec_prefix}/lib
2135 includedir=\${prefix}/include
2136
2137 Name: libavformat
2138 Description: FFmpeg container format library
2139 Version: $lavf_version
2140 Requires: $pkg_requires libavcodec = $lavc_version
2141 Conflicts:
2142 Libs: -L\${libdir} -lavformat $extralibs
2143 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2144 EOF
2145
2146 cat <<EOF >libavformat-uninstalled.pc
2147 prefix=
2148 exec_prefix=
2149 libdir=\${pcfiledir}/libavformat
2150 includedir=\${pcfiledir}/libavformat
2151
2152 Name: libavformat
2153 Description: FFmpeg container format library
2154 Version: $lavf_version
2155 Requires: $pkg_requires libavcodec = $lavc_version
2156 Conflicts:
2157 Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
2158 Cflags: -I\${includedir}
2159 EOF
2160
2161
2162 # libpostproc.pc
2163 cat <<EOF >libpostproc.pc
2164 prefix=$PREFIX
2165 exec_prefix=\${prefix}
2166 libdir=\${exec_prefix}/lib
2167 includedir=\${prefix}/include
2168
2169 Name: libpostproc
2170 Description: FFmpeg post processing library
2171 Version: $lavc_version
2172 Requires:
2173 Conflicts:
2174 Libs: -L\${libdir} -lpostproc
2175 Cflags: -I\${includedir} -I\${includedir}/postproc
2176 EOF
2177
2178 cat <<EOF >libpostproc-uninstalled.pc
2179 prefix=
2180 exec_prefix=
2181 libdir=\${pcfiledir}/libpostproc
2182 includedir=\${pcfiledir}/libpostproc
2183
2184 Name: libpostproc
2185 Description: FFmpeg post processing library
2186 Version: $lavc_version
2187 Requires:
2188 Conflicts:
2189 Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
2190 Cflags: -I\${includedir}
2191 EOF
2192
2193 if test "$swscaler" != "no"; then
2194   sws_pc_libs="-L\${libdir} -lswscale"
2195   sws_pc_uninstalled_libs="\${libdir}/${LIBPREF}swscale${LIBSUF}"
2196   sws_pc_requires="$pkg_requires libavutil = $lavu_version"
2197 else
2198   sws_pc_libs=""
2199   sws_pc_uninstalled_libs=""
2200   sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
2201 fi
2202 # libswscale.pc
2203 cat <<EOF >libswscale.pc
2204 prefix=$PREFIX
2205 exec_prefix=\${prefix}
2206 libdir=\${exec_prefix}/lib
2207 includedir=\${prefix}/include
2208
2209 Name: libswscale
2210 Description: FFmpeg image rescaling library
2211 Version: $sws_version
2212 Requires: $sws_pc_requires
2213 Conflicts:
2214 Libs: $sws_pc_libs
2215 Cflags: -I\${includedir} -I\${includedir}/swscale
2216 EOF
2217
2218 cat <<EOF >libswscale-uninstalled.pc
2219 prefix=
2220 exec_prefix=
2221 libdir=\${pcfiledir}/libswscale
2222 includedir=\${pcfiledir}/libswscale
2223
2224 Name: libswscale
2225 Description: FFmpeg image rescaling library
2226 Version: $sws_version
2227 Requires: $sws_pc_requires
2228 Conflicts:
2229 Libs: $sws_pc_uninstalled_libs
2230 Cflags: -I\${includedir}
2231 EOF