alternative test video generator by (Sebastien Bechet <s dot bechet at av7 dot net>)
[ffmpeg.git] / configure
1 #!/bin/sh
2 #
3 # ffmpeg configure script (c) 2000, 2001, 2002 Fabrice Bellard
4 #
5 # set temporary file name
6 if test ! -z "$TMPDIR" ; then
7     TMPDIR1="${TMPDIR}"
8 elif test ! -z "$TEMPDIR" ; then
9     TMPDIR1="${TEMPDIR}"
10 else
11     TMPDIR1="/tmp"
12 fi
13
14 TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
15 TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
16 TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
17 TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
18 TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
19
20 # default parameters
21 prefix="/usr/local"
22 cross_prefix=""
23 cc="gcc"
24 ar="ar"
25 ranlib="ranlib"
26 make="make"
27 strip="strip"
28 cpu=`uname -m`
29 mmx="default"
30 altivec="default"
31 mmi="default"
32 case "$cpu" in
33   i386|i486|i586|i686|i86pc|BePC)
34     cpu="x86"
35   ;;
36   armv4l)
37     cpu="armv4l"
38   ;;
39   alpha)
40     cpu="alpha"
41   ;;
42   "Power Macintosh"|ppc)
43     cpu="powerpc"
44   ;;
45   mips)
46     cpu="mips"
47   ;;
48   sun4u)
49     cpu="sparc64"
50   ;;
51   *)
52     cpu="unknown"
53   ;;
54 esac
55 gprof="no"
56 v4l="yes"
57 audio_oss="yes"
58 audio_beos="no"
59 dv1394="yes"
60 network="yes"
61 zlib="yes"
62 mp3lame="no"
63 vorbis="no"
64 a52="yes"
65 a52bin="no"
66 pp="yes"
67 shared_pp="no"
68 win32="no"
69 mingw32="no"
70 cygwin="no"
71 os2="no"
72 lshared="no"
73 extralibs="-lm"
74 simpleidct="yes"
75 bigendian="no"
76 vhook="default"
77 dlfcn="no"
78 dlopen="no"
79 mpegaudio_hp="yes"
80 SHFLAGS=-shared
81 netserver="no"
82 need_inet_aton="no"
83 ffserver="yes"
84 LDFLAGS=-Wl,--warn-common
85 FFSLDFLAGS=-Wl,-E
86 LIBPREF="lib"
87 LIBSUF=".a"
88 SLIBPREF="lib"
89 SLIBSUF=".so"
90 risky="yes"
91 small="no"
92
93 # OS specific
94 targetos=`uname -s`
95 case $targetos in
96 BeOS)
97 prefix="/boot/home/config"
98 # helps building libavcodec
99 CFLAGS="-O3 -DPIC -fomit-frame-pointer"
100 # 3 gcc releases known for BeOS, each with ugly bugs
101 gcc_version="$($cc -v 2>&1 | grep version | cut -d ' ' -f3-)"
102 case "$gcc_version" in
103 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
104 mmx="no"
105 ;;
106 *20010315*) echo "BeBits gcc"
107 CFLAGS="$CFLAGS -fno-expensive-optimizations"
108 ;;
109 esac
110 SHFLAGS=-nostart
111 # disable linux things
112 audio_oss="no"
113 v4l="no"
114 dv1394="no"
115 # enable beos things
116 audio_beos="yes"
117 # no need for libm, but the inet stuff
118 # Check for BONE
119 if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
120 extralibs="-lbind -lsocket"
121 else
122 netserver="yes"
123 need_inet_aton="yes"
124 extralibs="-lnet"
125 fi ;;
126 SunOS)
127 v4l="no"
128 audio_oss="no"
129 dv1394="no"
130 make="gmake"
131 LDFLAGS=""
132 FFSLDFLAGS=""
133 need_inet_aton="yes"
134 extralibs="$extralibs -lsocket -lnsl"
135 ;;
136 FreeBSD)
137 v4l="no"
138 audio_oss="yes"
139 dv1394="no"
140 make="gmake"
141 LDFLAGS="$LDFLAGS -export-dynamic"
142 ;;
143 BSD/OS)
144 v4l="no"
145 audio_oss="yes"
146 dv1394="no"
147 extralibs="-lpoll -lgnugetopt -lm"
148 make="gmake"
149 ;;
150 Darwin)
151 cc="cc"
152 v4l="no"
153 audio_oss="no"
154 dv1394="no"
155 SHFLAGS="-dynamiclib"
156 extralibs=""
157 darwin="yes"
158 strip="strip -x"
159 LDFLAGS="-d"
160 FFSLDFLAGS=-Wl,-bind_at_load
161 gcc_version="$($cc -v 2>&1 | grep version | cut -d ' ' -f4-)"
162 case "$gcc_version" in
163 *2.95*) 
164 CFLAGS="-no-cpp-precomp -pipe -O3 -fomit-frame-pointer"
165 ;;
166 *) 
167 CFLAGS="-no-cpp-precomp -pipe -O3 -fomit-frame-pointer -mdynamic-no-pic"
168 ;;
169 esac
170 ;;
171 MINGW32*)
172 v4l="no"
173 audio_oss="no"
174 dv1394="no"
175 ffserver="no"
176 network="no"
177 mingw32="yes"
178 ;;
179 CYGWIN*)
180 v4l="no"
181 audio_oss="yes"
182 dv1394="no"
183 extralibs=""
184 cygwin="yes"
185 test -f /usr/include/inttypes.h || \
186 test -f /usr/local/include/inttypes.h || \
187 echo "Missing inttypes.h, please copy cygwin_inttypes.h to" \
188      "/usr/include/inttypes.h !!!"
189 ;;
190 Linux)
191 LDFLAGS="$LDFLAGS -rdynamic"
192 ;;
193 OS/2)
194 TMPE=$TMPE".exe"
195 ar="emxomfar -p64"
196 ranlib="echo ignoring ranlib"
197 strip="echo ignoring strip"
198 CFLAGS="-Zomf -O3"
199 LDFLAGS="-Zomf -Zstack 16384 -s"
200 SHFLAGS=""
201 FFSLDFLAGS=""
202 LIBPREF=""
203 LIBSUF=".lib"
204 SLIBPREF=""
205 SLIBSUF=".dll"
206 extralibs=""
207 v4l="no"
208 audio_oss="no"
209 dv1394="no"
210 network="no"
211 ffserver="no"
212 os2="yes"
213 ;;
214 *) ;;
215 esac
216
217 # From mplayer configure. We need TARGET_OS available
218 # to the Makefile, so it can distinguish between flavors
219 # of AltiVec on PowerPC
220 TARGET_OS=`( uname -s ) 2>&1`
221   case "$TARGET_OS" in
222   Linux|FreeBSD|NetBSD|BSD/OS|OpenBSD|SunOS|QNX|Darwin|GNU)
223     ;;
224   IRIX*)
225     TARGET_OS=IRIX
226     ;;
227   HP-UX*)
228     TARGET_OS=HP-UX
229     ;;
230   [cC][yY][gG][wW][iI][nN]*)
231     TARGET_OS=CYGWIN
232     ;;
233   *)
234     TARGET_OS="$TARGET_OS-UNKNOWN"
235     ;;
236   esac
237
238 # find source path
239 # XXX: we assume an absolute path is given when launching configure, 
240 # except in './configure' case.
241 source_path="`echo $0 | sed -e 's#/configure##'`"
242 source_path_used="yes"
243 if test -z "$source_path" -o "$source_path" = "." ; then
244     source_path=`pwd`
245     source_path_used="no"
246 fi
247
248 for opt do
249   case "$opt" in
250   --prefix=*) prefix=`echo $opt | cut -d '=' -f 2`
251   ;;
252   --source-path=*) source_path=`echo $opt | cut -d '=' -f 2`
253   ;;
254   --cross-prefix=*) cross_prefix=`echo $opt | cut -d '=' -f 2`
255   ;;
256   --cc=*) cc=`echo $opt | cut -d '=' -f 2`
257   ;;
258   --make=*) make=`echo $opt | cut -d '=' -f 2`
259   ;;
260   --extra-cflags=*) CFLAGS="${opt#--extra-cflags=}"
261   ;;
262   --extra-ldflags=*) LDFLAGS=${opt#--extra-ldflags=}
263   ;;
264   --extra-libs=*) extralibs=${opt#--extra-libs=}
265   ;;
266   --cpu=*) cpu=`echo $opt | cut -d '=' -f 2`
267   ;;
268   --disable-mmx) mmx="no"
269   ;;
270   --disable-altivec) altivec="no"
271   ;;
272   --enable-gprof) gprof="yes"
273   ;;
274   --disable-v4l) v4l="no"
275   ;;
276   --disable-audio-oss) audio_oss="no"
277   ;;
278   --disable-audio-beos) audio_beos="no"
279   ;;
280   --disable-dv1394) dv1394="no"
281   ;;
282   --disable-network) network="no"
283   ;;
284   --disable-zlib) zlib="no"
285   ;;
286   --disable-a52) a52="no"
287   ;;
288   --enable-a52bin) a52bin="yes" ; extralibs="$ldl $extralibs"
289   ;;
290   --disable-pp) pp="no"
291   ;;
292   --enable-shared-pp) shared_pp="yes"
293   ;;
294   --enable-mp3lame) mp3lame="yes"
295   ;;
296   --enable-vorbis) vorbis="yes"
297   ;;
298   --disable-vhook) vhook="no"
299   ;;
300   --disable-simple_idct) simpleidct="no"
301   ;;
302   --enable-win32) win32="yes"
303   ;;
304   --enable-mingw32) mingw32="yes"
305   ;;
306   --enable-shared) lshared="yes"
307   ;;
308   --disable-mpegaudio-hp) mpegaudio_hp="no"
309   ;;
310   --disable-ffserver) ffserver="no"
311   ;;
312   --disable-risky) risky="no"
313   ;;
314   --enable-small) small="yes"
315   ;;
316   esac
317 done
318
319 # compute mmx state
320 if test $mmx = "default"; then
321     if test $cpu = "x86"; then
322         mmx="yes"
323     else
324         mmx="no"
325     fi
326 fi
327
328 # Can only do AltiVec on PowerPC
329 if test $altivec = "default"; then
330     if test $cpu = "powerpc"; then
331         altivec="yes"
332     else
333         altivec="no"
334     fi
335 fi
336
337 # See does our compiler support Motorola AltiVec C API
338 if test $altivec = "yes"; then
339 cat > $TMPC << EOF
340 int main(void) {
341     vector signed int v1, v2, v3;
342     v1 = vec_add(v2,v3);
343     return 0;
344 }
345 EOF
346 $cc -o $TMPE $TMPC -faltivec 2> /dev/null || altivec="no"
347 fi
348
349 # Can only do mmi on mips
350 if test $mmi = "default"; then
351     if test $cpu = "mips"; then
352         mmi="yes"
353     else
354         mmi="no"
355     fi
356 fi
357
358 # See does our compiler support mmi
359 if test $mmi = "yes"; then
360 cat > $TMPC << EOF
361 int main(void) {
362     __asm__ ("lq \$2, 0(\$2)");
363     return 0;
364 }
365 EOF
366 $cc -o $TMPE $TMPC 2> /dev/null || mmi="no"
367 fi
368
369 # Checking for CFLAGS
370 if test -z "$CFLAGS"; then
371     CFLAGS="-O3"
372 fi
373
374 if test "$win32" = "yes" ; then
375     cross_prefix="i386-mingw32msvc-"
376     v4l="no"
377     audio_oss="no"
378     dv1394="no"
379     network="no"
380 fi
381
382 if test "$mingw32" = "yes" ; then
383     cross_prefix=""
384     v4l="no"
385     audio_oss="no"
386     dv1394="no"
387     network="no"
388 fi
389
390 cc="${cross_prefix}${cc}"
391 ar="${cross_prefix}${ar}"
392 ranlib="${cross_prefix}${ranlib}"
393 strip="${cross_prefix}${strip}"
394
395 if test -z "$cross_prefix" ; then
396
397 # ---
398 # big/little endian test
399 cat > $TMPC << EOF
400 #include <inttypes.h>
401 int main(int argc, char ** argv){
402         volatile uint32_t i=0x01234567;
403         return (*((uint8_t*)(&i))) == 0x67;
404 }
405 EOF
406
407 if $cc -o $TMPE $TMPC 2>/dev/null ; then
408 $TMPE && bigendian="yes"
409 else
410 echo big/little test failed
411 fi
412
413 else
414
415 # if cross compiling, cannot launch a program, so make a static guess
416 if test "$cpu" = "powerpc" -o "$cpu" = "mips" ; then
417     bigendian="yes"
418 fi
419
420 fi
421
422 # ---
423 # check availability of some header files
424
425 cat > $TMPC << EOF
426 #include <malloc.h>
427 int main( void ) { return 0; }
428 EOF
429
430 _memalign=no
431 _malloc_h=no
432 if $cc -o $TMPE $TMPC 2> /dev/null ; then
433 _malloc_h=yes
434 _memalign=yes
435 # check for memalign - atmos
436 cat > $TMPC << EOF
437 #include <malloc.h>
438 int main ( void ) {
439 char *string = NULL;
440 string = memalign(64, sizeof(char));
441 return 0;
442 }
443 EOF
444 $cc -o $TMPE $TMPC 2> /dev/null || _memalign=no
445 fi
446
447 cat > $TMPC << EOF
448 #define _GNU_SOURCE
449 #include <time.h>
450 int main( void ) { return *strptime("", "", 0); }
451 EOF
452
453 strptime=no
454 if $cc -o $TMPE $TMPC 2> /dev/null ; then
455   strptime=yes
456 fi
457
458 if test "$zlib" = "yes"; then
459 # check for zlib - mmu_man
460 cat > $TMPC << EOF
461 #include <zlib.h>
462 int main ( void ) {
463 if (zlibVersion() != ZLIB_VERSION)
464    puts("zlib version differs !!!");
465    return 1;
466 return 0;
467 }
468 EOF
469 $cc -o $TMPE $TMPC -lz 2> /dev/null || zlib="no"
470 # $TMPE 2> /dev/null > /dev/null || zlib="no"
471 # XXX: more tests needed - runtime test
472 fi
473 if test "$zlib" = "yes"; then
474 extralibs="$extralibs -lz"
475 fi
476
477 # test for lrintf in math.h
478 cat > $TMPC << EOF
479 #define _ISOC9X_SOURCE  1
480 #include <math.h>
481 int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
482 EOF
483
484 have_lrintf="no"
485 if $cc $extralibs -o $TMPE $TMPC 2> /dev/null ; then
486   have_lrintf="yes"
487   $TMPE 2> /dev/null > /dev/null || have_lrintf="no"
488 fi
489
490 _restrict=
491 for restrict_keyword in restrict __restrict__ __restrict; do
492   echo "void foo(char * $restrict_keyword p);" > $TMPC
493   if $cc -c -o $TMPO $TMPC 2> /dev/null; then
494     _restrict=$restrict_keyword
495     break;
496   fi
497 done
498
499 # test gcc version to see if vector builtins can be used
500 # currently only used on i386 for MMX builtins
501 cat > $TMPC << EOF
502 int main(void) { 
503 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
504 return 0;
505 #else
506 #error no vector builtins
507 #endif
508 }
509 EOF
510
511 builtin_vector=no
512 if $cc -o $TMPO $TMPC 2> /dev/null ; then
513   builtin_vector=yes
514 fi
515
516 # dlopen/dlfcn.h probing
517
518 cat > $TMPC << EOF
519 #include <dlfcn.h>
520 int main( void ) { return (int) dlopen("foo", 0); }
521 EOF
522
523 ldl=-ldl
524
525 if $cc -o $TMPE $TMPC -ldl 2> /dev/null  ; then
526 dlfcn=yes
527 dlopen=yes
528 fi
529
530 if $cc -o $TMPE $TMPC 2> /dev/null  ; then
531 dlfcn=yes
532 dlopen=yes
533 ldl=""
534 fi
535
536 cat > $TMPC << EOF
537 int main( void ) { return (int) dlopen("foo", 0); }
538 EOF
539
540 if $cc -o $TMPE $TMPC -ldl 2> /dev/null  ; then
541 dlopen=yes
542 fi
543
544 if $cc -o $TMPE $TMPC 2> /dev/null  ; then
545 dlopen=yes
546 ldl=""
547 fi
548
549 if test "$vhook" = "default" ; then
550   vhook="$dlopen"
551 fi
552
553 cat > $TMPC << EOF
554 #include <X11/Xlib.h>
555 #include <Imlib2.h>
556 int main( void ) { return (int) imlib_load_font("foo"); }
557 EOF
558
559 imlib2=no
560 if $cc -o $TMPE $TMPC -lImlib2 2> /dev/null  ; then
561 imlib2=yes
562 fi
563
564 cat > $TMPC << EOF
565 #include <ft2build.h>
566 int main( void ) { return (int) FT_Init_FreeType(0); }
567 EOF
568
569 freetype2=no
570 if test "x$targetos" != "xBeOS" && test "$os2" != "yes"; then
571   which freetype-config > /dev/null
572   if test $? -eq 0; then
573     if $cc -o $TMPE $TMPC `freetype-config --cflags` `freetype-config --libs`  2> /dev/null ; then
574       freetype2=yes
575     fi
576   fi
577 fi
578
579 if test "$small" = "yes"; then
580 #  CFLAGS=${CFLAGS//-O3/-Os}
581   CFLAGS="$CFLAGS -Os"
582 fi
583
584 if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
585 cat << EOF
586
587 Usage: configure [options]
588 Options: [defaults in brackets after descriptions]
589
590 EOF
591 echo "Standard options:"
592 echo "  --help                   print this message"
593 echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
594 echo "  --enable-mp3lame         enable mp3 encoding via libmp3lame [default=no]"
595 echo "  --enable-vorbis          enable vorbis support via libvorbisenc [default=no]"
596 echo "  --enable-win32           enable win32 cross compile"
597 echo "  --enable-mingw32         enable mingw32 native windows compile"
598 echo "  --disable-a52            disable GPL'ed A52 support [default=no]"
599 echo "  --enable-a52bin          open liba52.so.0 at runtime [default=no]"
600 echo "  --disable-pp             disable GPL'ed post processing support [default=no]"
601 echo "  --enable-shared-pp       use libpostproc.so [default=no]"
602 echo "  --enable-shared          build shared libraries [default=no]"
603 echo ""
604 echo "Advanced options (experts only):"
605 echo "  --source-path=PATH       path of source code [$source_path]"
606 echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
607 echo "  --cc=CC                  use C compiler CC [$cc]"
608 echo "  --make=MAKE              use specified make [$make]"
609 echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
610 echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
611 echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
612 echo "  --cpu=CPU                force cpu to CPU  [$cpu]"
613 echo "  --disable-mmx            disable mmx usage"
614 echo "  --disable-altivec        disable AltiVec usage"
615 echo "  --disable-audio-oss      disable OSS audio support [default=no]"
616 echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
617 echo "  --disable-v4l            disable video4linux grabbing [default=no]"
618 echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
619 echo "  --disable-network        disable network support [default=no]"
620 echo "  --disable-zlib           disable zlib [default=no]"
621 echo "  --disable-simple_idct    disable simple IDCT routines [default=no]"
622 echo "  --disable-vhook          disable video hooking support"
623 echo "  --enable-gprof           enable profiling with gprof [$gprof]"
624 echo "  --disable-mpegaudio-hp   faster (but less accurate)"
625 echo "                           mpegaudio decoding [default=no]"
626 echo "  --disable-ffserver       disable ffserver build"
627 echo "  --disable-risky          disables patent encumbered codecs"
628 echo "  --enable-small           optimize for size instead of speed"
629 echo ""
630 echo "NOTE: The object files are build at the place where configure is launched"
631 exit 1
632 fi
633
634 echo "Install prefix   $prefix"
635 echo "Source path      $source_path"
636 echo "C compiler       $cc"
637 echo "make             $make"
638 echo "CPU              $cpu"
639 echo "Big Endian       $bigendian"
640 if test $cpu = "x86"; then
641 echo "MMX enabled      $mmx"
642 echo "Vector Builtins  $builtin_vector"
643 fi
644 if test $cpu = "mips"; then
645 echo "MMI enabled      $mmi"
646 fi
647 if test $cpu = "powerpc"; then
648 echo "AltiVec enabled  $altivec"
649 fi
650 echo "gprof enabled    $gprof"
651 echo "zlib enabled     $zlib"
652 echo "mp3lame enabled  $mp3lame"
653 echo "vorbis enabled   $vorbis"
654 echo "a52 support      $a52"
655 echo "a52 dlopened     $a52bin"
656 echo "pp support       $pp"
657 echo "shared pp        $shared_pp"
658 echo "Video hooking    $vhook"
659 echo "risky / patent encumbered codecs $risky"
660 echo "optimize for size $small"
661
662 if test "$vhook" = "yes" ; then
663 echo "Imlib2 support   $imlib2"
664 echo "freetype support $freetype2"
665 fi
666
667 echo "Creating config.mak and config.h"
668
669 echo "# Automatically generated by configure - do not modify" > config.mak
670 echo "/* Automatically generated by configure - do not modify */" > $TMPH
671
672 echo "prefix=$prefix" >> config.mak
673 echo "MAKE=$make" >> config.mak
674 echo "CC=$cc" >> config.mak
675 echo "AR=$ar" >> config.mak
676 echo "RANLIB=$ranlib" >> config.mak
677 echo "STRIP=$strip" >> config.mak
678 echo "OPTFLAGS=$CFLAGS" >> config.mak
679 echo "LDFLAGS=$LDFLAGS" >> config.mak
680 echo "FFSLDFLAGS=$FFSLDFLAGS" >> config.mak
681 echo "SHFLAGS=$SHFLAGS" >> config.mak
682 echo "LIBPREF=$LIBPREF" >> config.mak
683 echo "LIBSUF=$LIBSUF" >> config.mak
684 echo "SLIBPREF=$SLIBPREF" >> config.mak
685 echo "SLIBSUF=$SLIBSUF" >> config.mak
686 echo "TARGET_OS=$TARGET_OS" >> config.mak
687 if test "$cpu" = "x86" ; then
688   echo "TARGET_ARCH_X86=yes" >> config.mak
689   echo "#define ARCH_X86 1" >> $TMPH
690 elif test "$cpu" = "armv4l" ; then
691   echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
692   echo "#define ARCH_ARMV4L 1" >> $TMPH
693 elif test "$cpu" = "alpha" ; then
694   echo "TARGET_ARCH_ALPHA=yes" >> config.mak
695   echo "#define ARCH_ALPHA 1" >> $TMPH
696 elif test "$cpu" = "sparc64" ; then
697   echo "TARGET_ARCH_SPARC64=yes" >> config.mak
698   echo "#define ARCH_SPARC64 1" >> $TMPH
699 elif test "$cpu" = "powerpc" ; then
700   echo "TARGET_ARCH_POWERPC=yes" >> config.mak
701   echo "#define ARCH_POWERPC 1" >> $TMPH
702   echo "// Enable the next line to get PowerPC performance report" >> $TMPH
703   echo "// #define POWERPC_TBL_PERFORMANCE_REPORT 1" >> $TMPH
704   echo "// Enable the next line to use PMC registers instead of TBL" >> $TMPH
705   echo "// #define POWERPC_PERF_USE_PMC 1" >> $TMPH
706 elif test "$cpu" = "mips" ; then
707   echo "TARGET_ARCH_MIPS=yes" >> config.mak
708   echo "#define ARCH_MIPS 1" >> $TMPH
709 fi
710 if test "$bigendian" = "yes" ; then
711   echo "WORDS_BIGENDIAN=yes" >> config.mak
712   echo "#define WORDS_BIGENDIAN 1" >> $TMPH
713 fi
714 if test "$mmx" = "yes" ; then
715   echo "TARGET_MMX=yes" >> config.mak
716   echo "#define HAVE_MMX 1" >> $TMPH
717 fi
718 if test "$builtin_vector" = "yes" ; then
719   echo "TARGET_BUILTIN_VECTOR=yes" >> config.mak
720   echo "#define HAVE_BUILTIN_VECTOR 1" >> $TMPH
721 fi
722 if test "$mmi" = "yes" ; then
723   echo "TARGET_MMI=yes" >> config.mak
724   echo "#define HAVE_MMI 1" >> $TMPH
725 fi
726 if test "$altivec" = "yes" ; then
727   echo "TARGET_ALTIVEC=yes" >> config.mak
728   echo "#define HAVE_ALTIVEC 1" >> $TMPH
729   echo "// Enable the next line to use the reference C code instead of AltiVec" >> $TMPH
730   echo "// #define ALTIVEC_USE_REFERENCE_C_CODE 1" >> $TMPH
731 fi
732 if test "$gprof" = "yes" ; then
733   echo "TARGET_GPROF=yes" >> config.mak
734   echo "#define HAVE_GPROF 1" >> $TMPH
735 fi
736 if test "$strptime" = "yes" ; then
737   echo "#define HAVE_STRPTIME 1" >> $TMPH
738 else
739   echo "BUILD_STRPTIME=yes" >> config.mak
740 fi
741 if test "$imlib2" = "yes" ; then
742   echo "HAVE_IMLIB2=yes" >> config.mak
743 fi
744 if test "$freetype2" = "yes" ; then
745   echo "HAVE_FREETYPE2=yes" >> config.mak
746 fi
747 if test "$have_lrintf" = "yes" ; then
748   echo "#define HAVE_LRINTF 1" >> $TMPH
749 fi
750 if test "$vhook" = "yes" ; then
751   echo "BUILD_VHOOK=yes" >> config.mak
752   echo "#define HAVE_VHOOK 1" >> $TMPH
753   extralibs="$extralibs $ldl"
754 fi
755 if test "$lshared" = "yes" ; then
756   echo "BUILD_SHARED=yes" >> config.mak
757   echo "PIC=-fPIC" >> config.mak
758 fi
759 echo "EXTRALIBS=$extralibs" >> config.mak
760 echo "VERSION=`head $source_path/VERSION`" >>config.mak
761 echo "" >>config.mak
762 # if you do not want to use encoders, disable that.
763 echo "#define CONFIG_ENCODERS 1" >> $TMPH
764 echo "CONFIG_ENCODERS=yes" >> config.mak
765
766 # if you do not want to use decoders, disable that.
767 echo "#define CONFIG_DECODERS 1" >> $TMPH
768 echo "CONFIG_DECODERS=yes" >> config.mak
769
770 # AC3
771 if test "$a52" = "yes" ; then
772   echo "#define CONFIG_AC3 1" >> $TMPH
773   echo "CONFIG_AC3=yes" >> config.mak
774
775   if test "$a52bin" = "yes" ; then
776     echo "#define CONFIG_A52BIN 1" >> $TMPH
777     echo "CONFIG_A52BIN=yes" >> config.mak
778   fi
779 fi
780
781 # PP
782 if test "$pp" = "yes" ; then
783   echo "#define CONFIG_PP 1" >> $TMPH
784   echo "CONFIG_PP=yes" >> config.mak
785
786   if test "$shared_pp" = "yes" ; then
787     echo "#define SHARED_PP 1" >> $TMPH
788     echo "SHARED_PP=yes" >> config.mak
789   fi
790 fi
791
792 # mpeg audio high precision mode
793 if test "$mpegaudio_hp" = "yes" ; then
794   echo "#define CONFIG_MPEGAUDIO_HP 1" >> $TMPH
795 fi
796
797 if test "$v4l" = "yes" ; then
798   echo "#define CONFIG_VIDEO4LINUX 1" >> $TMPH
799   echo "CONFIG_VIDEO4LINUX=yes" >> config.mak
800 fi
801
802 if test "$dv1394" = "yes" ; then
803   echo "#define CONFIG_DV1394 1" >> $TMPH
804   echo "CONFIG_DV1394=yes" >> config.mak
805 fi
806
807 if test "$dlopen" = "yes" ; then
808   echo "#define CONFIG_HAVE_DLOPEN 1" >> $TMPH
809 fi
810
811 if test "$dlfcn" = "yes" ; then
812   echo "#define CONFIG_HAVE_DLFCN 1" >> $TMPH
813 fi
814
815 if test "$audio_oss" = "yes" ; then
816   echo "#define CONFIG_AUDIO_OSS 1" >> $TMPH
817   echo "CONFIG_AUDIO_OSS=yes" >> config.mak
818 fi
819
820 if test "$audio_beos" = "yes" ; then
821   echo "#define CONFIG_AUDIO_BEOS 1" >> $TMPH
822   echo "CONFIG_AUDIO_BEOS=yes" >> config.mak
823 fi
824
825 if test "$network" = "yes" ; then
826   echo "#define CONFIG_NETWORK 1" >> $TMPH
827   echo "CONFIG_NETWORK=yes" >> config.mak
828 fi
829
830 if test "$zlib" = "yes" ; then
831   echo "#define CONFIG_ZLIB 1" >> $TMPH
832   echo "CONFIG_ZLIB=yes" >> config.mak
833 fi
834
835 if test "$mp3lame" = "yes" ; then
836   echo "#define CONFIG_MP3LAME 1" >> $TMPH
837   echo "CONFIG_MP3LAME=yes" >> config.mak
838 fi
839
840 if test "$vorbis" = "yes" ; then
841   echo "#define CONFIG_VORBIS 1" >> $TMPH
842   echo "CONFIG_VORBIS=yes" >> config.mak
843 fi
844
845 if test "$win32" = "yes" ; then
846   echo "#define CONFIG_WIN32 1" >> $TMPH
847   echo "CONFIG_WIN32=yes" >> config.mak
848 fi
849
850 if test "$mingw32" = "yes" ; then
851   echo "#define CONFIG_WIN32 1" >> $TMPH
852   echo "CONFIG_WIN32=yes" >> config.mak
853   echo "#define __MINGW32__ 1" >> $TMPH
854   echo "__MINGW32__=1" >> config.mak
855 fi
856
857 if test "$cygwin" = "yes" ; then
858   # setup correct exesuffix
859   echo "CONFIG_WIN32=yes" >> config.mak
860 fi
861
862 if test "$os2" = "yes" ; then
863   echo "#define CONFIG_OS2 1" >> $TMPH
864   echo "CONFIG_OS2=yes" >> config.mak
865 fi
866
867 if test "$darwin" = "yes"; then
868   echo "#define CONFIG_DARWIN 1"  >> $TMPH
869   echo "CONFIG_DARWIN=yes" >> config.mak
870 fi
871
872 if test "$_malloc_h" = "yes" ; then
873   echo "#define HAVE_MALLOC_H 1" >> $TMPH
874 else
875   echo "#undef  HAVE_MALLOC_H" >> $TMPH
876 fi
877
878 if test "$_memalign" = "yes" ; then
879   echo "#define HAVE_MEMALIGN 1" >> $TMPH
880 else
881   echo "#undef  HAVE_MEMALIGN" >> $TMPH
882 fi
883
884 if test "$netserver" = "yes" ; then
885   echo "#define CONFIG_BEOS_NETSERVER 1" >> $TMPH
886   echo "CONFIG_BEOS_NETSERVER=yes" >> config.mak
887 fi
888
889 if test "$need_inet_aton" = "yes" ; then
890   echo "NEED_INET_ATON=yes" >> config.mak
891 fi
892
893 if test "$simpleidct" = "yes" ; then
894   echo "#define SIMPLE_IDCT 1" >> $TMPH
895 fi
896
897 if test "$ffserver" = "yes" ; then
898   echo "#define CONFIG_FFSERVER 1" >> $TMPH
899   echo "CONFIG_FFSERVER=yes" >> config.mak
900 fi
901
902 if test "$risky" = "yes" ; then
903   echo "#define CONFIG_RISKY 1" >> $TMPH
904   echo "CONFIG_RISKY=yes" >> config.mak
905 fi
906
907 echo "#define restrict $_restrict" >> $TMPH
908
909 # build tree in object directory if source path is different from current one
910 if test "$source_path_used" = "yes" ; then
911     DIRS="libavformat libavcodec libavcodec/alpha libavcodec/armv4l libavcodec/i386 \
912           libavcodec/ppc libavcodec/liba52 libavcodec/mlib tests vhook"
913     FILES="Makefile libavformat/Makefile libavcodec/Makefile tests/Makefile vhook/Makefile"
914     for dir in $DIRS ; do
915             mkdir -p $dir
916     done
917     for f in $FILES ; do
918         ln -sf $source_path/$f $f
919     done
920 fi
921 echo "SRC_PATH=$source_path" >> config.mak
922
923 diff $TMPH config.h >/dev/null 2>&1
924 if test $? -ne 0 ; then
925         mv -f $TMPH config.h
926 else
927         echo "config.h is unchanged"
928 fi
929
930 rm -f $TMPO $TMPC $TMPE $TMPS $TMPH