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