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