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