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