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