move some CFLAGS settings away from config.* writing section
[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 freetype2
412 gprof
413 imlib2
414 localtime_r
415 lrintf
416 malloc_h
417 memalign
418 mlib
419 os2threads
420 pthreads
421 sdl
422 sdl_video_size
423 threads
424 w32threads
425 '
426
427 # set temporary file name
428 if test ! -z "$TMPDIR" ; then
429 TMPDIR1="${TMPDIR}"
430 elif test ! -z "$TEMPDIR" ; then
431 TMPDIR1="${TEMPDIR}"
432 else
433 TMPDIR1="/tmp"
434 fi
435
436 TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
437 TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
438 TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
439 TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
440 TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
441
442 # default parameters
443 logging="yes"
444 logfile="config.err"
445 PREFIX="/usr/local"
446 libdir='${PREFIX}/lib'
447 shlibdir="$libdir"
448 incdir='${PREFIX}/include/ffmpeg'
449 mandir='${PREFIX}/man'
450 bindir='${PREFIX}/bin'
451 cross_prefix=""
452 cross_compile="no"
453 cc="gcc"
454 ar="ar"
455 ranlib="ranlib"
456 make="make"
457 strip="strip"
458 arch=`uname -m`
459 cpu="generic"
460 powerpc_perf="no"
461 mmx="default"
462 cmov="no"
463 cmov_is_fast="no"
464 armv5te="default"
465 iwmmxt="default"
466 altivec="default"
467 dcbzl="no"
468 mmi="default"
469 case "$arch" in
470 i386|i486|i586|i686|i86pc|BePC)
471 arch="x86_32"
472 ;;
473 x86_64|amd64)
474 arch="x86_32"
475 canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
476 if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
477 if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
478 arch="x86_64"
479 fi
480 fi
481 ;;
482 # armv4l is a subset of armv[567]*l
483 arm|armv[4567]*l)
484 arch="armv4l"
485 ;;
486 alpha)
487 arch="alpha"
488 ;;
489 "Power Macintosh"|ppc|ppc64|powerpc)
490 arch="powerpc"
491 ;;
492 mips|mipsel|IP*)
493 arch="mips"
494 ;;
495 sun4u|sparc64)
496 arch="sparc64"
497 ;;
498 sparc)
499 arch="sparc"
500 ;;
501 sh4)
502 arch="sh4"
503 ;;
504 parisc|parisc64)
505 arch="parisc"
506 ;;
507 s390|s390x)
508 arch="s390"
509 ;;
510 m68k)
511 arch="m68k"
512 ;;
513 ia64)
514 arch="ia64"
515 ;;
516 bfin)
517 arch="bfin"
518 ;;
519 *)
520 arch="unknown"
521 ;;
522 esac
523 gprof="no"
524 video4linux="yes"
525 video4linux2="yes"
526 bktr="no"
527 audio_oss="yes"
528 audio_beos="no"
529 dv1394="yes"
530 dc1394="no"
531 network="yes"
532 ipv6="yes"
533 zlib="yes"
534 libgsm="no"
535 mp3lame="no"
536 libnut="no"
537 libogg="no"
538 libvorbis="no"
539 faad="no"
540 faadbin="no"
541 faac="no"
542 xvid="no"
543 x264="no"
544 a52="no"
545 a52bin="no"
546 dts="no"
547 pp="no"
548 mingw32="no"
549 mingwce="no"
550 os2="no"
551 lstatic="yes"
552 lshared="no"
553 optimize="yes"
554 debug="yes"
555 extrawarnings="no"
556 dostrip="yes"
557 installstrip="-s"
558 extralibs="-lm"
559 bigendian="no"
560 inttypes="yes"
561 emu_fast_int="no"
562 vhook="default"
563 avisynth="no"
564 dlfcn="no"
565 dlopen="no"
566 mpegaudio_hp="yes"
567 SHFLAGS='-shared -Wl,-soname,$@'
568 VHOOKSHFLAGS='$(SHFLAGS)'
569 beos_netserver="no"
570 need_inet_aton="no"
571 protocols="yes"
572 ffmpeg="yes"
573 ffserver="yes"
574 ffplay="yes"
575 LIBOBJFLAGS=""
576 FFLDFLAGS=-Wl,--warn-common
577 LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
578 FFSERVERLDFLAGS=-Wl,-E
579 LDCONFIG="ldconfig"
580 LIBPREF="lib"
581 LIBSUF=".a"
582 LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
583 SLIBPREF="lib"
584 SLIBSUF=".so"
585 SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
586 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
587 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
588 EXESUF=""
589 BUILDSUF=""
590 amr_nb="no"
591 amr_wb="no"
592 amr_nb_fixed="no"
593 amr_if2="no"
594 mlib="no"
595 pthreads="no"
596 swscaler="no"
597 gpl="no"
598 memalign_hack="no"
599 asmalign_pot="unknown"
600 LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
601
602 # OS specific
603 targetos=`uname -s`
604 case $targetos in
605 BeOS)
606 PREFIX="/boot/home/config"
607 # helps building libavcodec
608 add_cflags "-DPIC -fomit-frame-pointer"
609 # 3 gcc releases known for BeOS, each with ugly bugs
610 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
611 case "$gcc_version" in
612 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
613 mmx="no"
614 ;;
615 *20010315*) echo "BeBits gcc"
616 add_cflags "-fno-expensive-optimizations"
617 ;;
618 esac
619 SHFLAGS=-nostart
620 # disable Linux things
621 audio_oss="no"
622 video4linux="no"
623 video4linux2="no"
624 dv1394="no"
625 # enable BeOS things
626 audio_beos="yes"
627 beosthreads="yes"
628 # no need for libm, but the inet stuff
629 # Check for BONE
630 if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
631 extralibs="-lbind -lsocket"
632 else
633 beos_netserver="yes"
634 need_inet_aton="yes"
635 extralibs="-lnet"
636 fi ;;
637 SunOS)
638 video4linux="no"
639 video4linux2="no"
640 audio_oss="no"
641 dv1394="no"
642 make="gmake"
643 FFLDFLAGS=""
644 FFSERVERLDFLAGS=""
645 SHFLAGS="-shared -Wl,-h,\$@"
646 need_inet_aton="yes"
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 || emu_fast_int=yes
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 localtime_r && localtime_r=yes || localtime_r=no
1423 enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
1424
1425 # check for some common methods of building with pthread support
1426 # do this before the optional library checks as some of them require pthreads
1427 if enabled pthreads; then
1428 { check_cflags -pthread && check_ldflags -pthread; } ||
1429 { check_cflags -pthreads && check_ldflags -pthreads; } ||
1430 check_lib pthread.h pthread_create -lpthread ||
1431 check_func pthread_create ||
1432 die "ERROR: can't find pthreads library"
1433 fi
1434
1435 # these are off by default, so fail if requested and not available
1436 enabled dts && require libdts dts.h dts_init -ldts -lm
1437 enabled libgsm && require libgsm gsm.h gsm_create -lgsm
1438 enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1439 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1440 enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg
1441 enabled libnut && require libnut nut.h nut_demuxer_init -lnut
1442 enabled xvid && require XviD xvid.h xvid_global -lxvidcore
1443 enabled x264 && require x264 x264.h x264_encoder_open -lx264
1444 enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
1445 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1446
1447 # Ugh, faac uses stdcall calling convention on win32 so we can't use
1448 # the generic test functions
1449 if enabled faac; then
1450 save_flags
1451 temp_extralibs -lfaac
1452 check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
1453 #include <stdint.h>
1454 #include <faac.h>
1455 int main(){
1456 char *id, *cpr;
1457 faacEncGetVersion(&id, &cpr);
1458 return 0;
1459 }
1460 EOF
1461 restore_flags
1462 fi
1463
1464 # Ugh, recent faad2 versions have renamed all functions and #define the
1465 # old names in faad.h. Generic tests won't work.
1466 if enabled faad; then
1467 save_flags
1468 temp_extralibs -lfaad
1469 check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
1470 #include <faad.h>
1471 int main(){
1472 faacDecOpen();
1473 return 0;
1474 }
1475 EOF
1476 restore_flags
1477 fi
1478
1479 # Ugh, avisynth uses WINAPI calls. Generic tests won't work.
1480 if enabled avisynth; then
1481 save_flags
1482 temp_extralibs -lvfw32
1483 check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
1484 #include <windows.h>
1485 #include <vfw.h>
1486 int main(){
1487 AVIFileInit();
1488 return 0;
1489 }
1490 EOF
1491 restore_flags
1492 fi
1493
1494
1495 # test for lrintf in math.h
1496 check_exec <<EOF && lrintf=yes || lrintf=no
1497 #define _ISOC9X_SOURCE 1
1498 #include <math.h>
1499 int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1500 EOF
1501
1502 _restrict=
1503 for restrict_keyword in restrict __restrict__ __restrict; do
1504 check_cc <<EOF && _restrict=$restrict_keyword && break
1505 void foo(char * $restrict_keyword p);
1506 EOF
1507 done
1508
1509 # dlopen/dlfcn.h probing
1510
1511 check_header dlfcn.h && dlfcn=yes
1512
1513 temp_extralibs -ldl
1514 if check_func dlopen; then
1515 dlopen=yes
1516 ldl=-ldl
1517 fi
1518 restore_flags
1519
1520 if check_func dlopen; then
1521 dlopen=yes
1522 ldl=
1523 fi
1524
1525 if test "$vhook" = "default"; then
1526 vhook="$dlopen"
1527 fi
1528
1529 if enabled_any vhook a52bin faadbin; then
1530 add_extralibs $ldl
1531 fi
1532
1533 if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
1534 vhook="no"
1535 echo
1536 echo "At the moment vhooks don't work on Cygwin static builds."
1537 echo "Patches welcome."
1538 echo
1539 fi
1540
1541 if enabled vhook; then
1542 check_ldflags -rdynamic
1543 check_ldflags -export-dynamic
1544 fi
1545
1546 ##########################################
1547 # imlib check
1548
1549 temp_extralibs -lImlib2
1550 check_ld <<EOF && imlib2=yes || imlib2=no
1551 #include <X11/Xlib.h>
1552 #include <Imlib2.h>
1553 int main( void ) { return (int) imlib_load_font("foo"); }
1554 EOF
1555 restore_flags
1556
1557 ##########################################
1558 # FreeType check
1559
1560 freetype2=no
1561 if test "x$targetos" != "xBeOS"; then
1562 if (freetype-config --version) >/dev/null 2>&1 ; then
1563 temp_cflags `freetype-config --cflags`
1564 temp_extralibs `freetype-config --libs`
1565 check_ld <<EOF && freetype2=yes
1566 #include <ft2build.h>
1567 int main( void ) { return (int) FT_Init_FreeType(0); }
1568 EOF
1569 restore_flags
1570 fi
1571 fi
1572
1573 ##########################################
1574 # SDL check
1575
1576 sdl_too_old=no
1577 sdl=no
1578 SDL_CONFIG="${cross_prefix}sdl-config"
1579 if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1580 temp_cflags `"${SDL_CONFIG}" --cflags`
1581 temp_extralibs `"${SDL_CONFIG}" --libs`
1582 check_ld <<EOF
1583 #include <SDL.h>
1584 #undef main /* We don't want SDL to override our main() */
1585 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1586 EOF
1587 if test $? = 0; then
1588 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1589 if test "$_sdlversion" -lt 121 ; then
1590 sdl_too_old=yes
1591 else
1592 sdl=yes
1593 check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
1594 #include <SDL.h>
1595 int main(void){
1596 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1597 int w = vi->current_w;
1598 return 0;
1599 }
1600 EOF
1601 fi
1602 fi
1603 restore_flags
1604 fi
1605
1606 enabled sdl || ffplay=no
1607
1608 ##########################################
1609 # texi2html check
1610
1611 texi2html=no
1612 if (texi2html -version) >/dev/null 2>&1; then
1613 texi2html=yes
1614 fi
1615
1616 ##########################################
1617 # IPv6 check
1618
1619 enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1620 #include <sys/types.h>
1621 #include <sys/socket.h>
1622 #include <netinet/in.h>
1623 #include <netdb.h>
1624 int main( void ) {
1625 struct sockaddr_storage saddr;
1626 struct ipv6_mreq mreq6;
1627 getaddrinfo(0,0,0,0);
1628 getnameinfo(0,0,0,0,0,0,0);
1629 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1630 }
1631 EOF
1632
1633 # check for video4linux2 --- V4L2_PIX_FMT_YUV420
1634 enabled video4linux2 && check_cc <<EOF || video4linux2="no"
1635 #include <sys/time.h>
1636 #include <asm/types.h>
1637 #include <linux/videodev2.h>
1638 int dummy = V4L2_PIX_FMT_YUV420;
1639 struct v4l2_buffer dummy1;
1640 EOF
1641
1642 enabled debug && add_cflags -g
1643
1644 # add some useful compiler flags if supported
1645 check_cflags -Wdeclaration-after-statement
1646 check_cflags -Wall
1647 check_cflags -Wno-switch
1648 check_cflags -Wdisabled-optimization
1649 check_cflags -Wpointer-arith
1650 check_cflags -Wredundant-decls
1651 enabled extrawarnings && check_cflags -Winline
1652
1653 # add some linker flags
1654 check_ldflags $LDLATEFLAGS
1655
1656 # not all compilers support -Os
1657 test "$optimize" = "small" && check_cflags -Os
1658
1659 if enabled optimize; then
1660 if test -n "`$cc -v 2>&1 | grep xlc`"; then
1661 add_cflags "-O5"
1662 add_ldflags "-O5"
1663 else
1664 add_cflags "-O3"
1665 fi
1666 fi
1667
1668 # PIC flags for shared library objects where they are needed
1669 if test "$lshared" = "yes" ; then
1670 # LIBOBJFLAGS may have already been set in the OS configuration
1671 if test -z "$LIBOBJFLAGS" ; then
1672 case "$arch" in
1673 x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
1674 esac
1675 fi
1676 fi
1677
1678 if test "$gprof" = "yes" ; then
1679 add_cflags "-p"
1680 add_ldflags "-p"
1681 fi
1682
1683 VHOOKCFLAGS="-fPIC $CFLAGS"
1684 test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1685
1686 # find if .align arg is power-of-two or not
1687 if test $asmalign_pot = "unknown"; then
1688 asmalign_pot="no"
1689 echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1690 fi
1691
1692 echo "install prefix $PREFIX"
1693 echo "source path $source_path"
1694 echo "C compiler $cc"
1695 echo "make $make"
1696 echo "ARCH $arch ($cpu)"
1697 if test "$BUILDSUF" != ""; then
1698 echo "build suffix $BUILDSUF"
1699 fi
1700 echo "big-endian $bigendian"
1701 echo "inttypes.h $inttypes"
1702 echo "broken inttypes.h $emu_fast_int"
1703 if test $arch = "x86_32" -o $arch = "x86_64"; then
1704 echo "MMX enabled $mmx"
1705 echo "CMOV enabled $cmov"
1706 echo "CMOV is fast $cmov_is_fast"
1707 fi
1708 if test $arch = "armv4l"; then
1709 echo "ARMv5TE enabled $armv5te"
1710 echo "IWMMXT enabled $iwmmxt"
1711 fi
1712 if test $arch = "mips"; then
1713 echo "MMI enabled $mmi"
1714 fi
1715 if test $arch = "powerpc"; then
1716 echo "AltiVec enabled $altivec"
1717 echo "dcbzl available $dcbzl"
1718 fi
1719 echo "gprof enabled $gprof"
1720 echo "zlib enabled $zlib"
1721 echo "libgsm enabled $libgsm"
1722 echo "mp3lame enabled $mp3lame"
1723 echo "libnut enabled $libnut"
1724 echo "libogg enabled $libogg"
1725 echo "Vorbis enabled $libvorbis"
1726 echo "FAAD enabled $faad"
1727 echo "faadbin enabled $faadbin"
1728 echo "FAAC enabled $faac"
1729 echo "XviD enabled $xvid"
1730 echo "x264 enabled $x264"
1731 echo "a52 support $a52"
1732 echo "a52 dlopened $a52bin"
1733 echo "DTS support $dts"
1734 echo "pp support $pp"
1735 echo "Software Scaler enabled $swscaler"
1736 echo "AVISynth enabled $avisynth"
1737 echo "debug symbols $debug"
1738 echo "strip symbols $dostrip"
1739 echo "optimize $optimize"
1740 echo "static $lstatic"
1741 echo "shared $lshared"
1742 echo "video hooking $vhook"
1743 echo "SDL support $sdl"
1744 if test $sdl_too_old = "yes"; then
1745 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1746 fi
1747
1748 if test "$vhook" = "yes"; then
1749 echo "Imlib2 support $imlib2"
1750 echo "FreeType support $freetype2"
1751 fi
1752 echo "Sun medialib support" $mlib
1753 echo "pthreads support" $pthreads
1754 echo "AMR-NB float support" $amr_nb
1755 echo "AMR-NB fixed support" $amr_nb_fixed
1756 echo "AMR-WB float support" $amr_wb
1757 echo "AMR-WB IF2 support" $amr_if2
1758 echo "network support $network"
1759 if test "$network" = "yes" ; then
1760 echo "IPv6 support $ipv6"
1761 fi
1762 echo ".align is power-of-two" $asmalign_pot
1763 if test "$gpl" = "no" ; then
1764 echo "License: LGPL"
1765 else
1766 echo "License: GPL"
1767 fi
1768
1769 if test "$amr_wb" = "yes" ; then
1770 echo
1771 echo "AMR WB FLOAT NOTICE ! Make sure you have downloaded TS26.204"
1772 echo "V5.1.0 from "
1773 echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip"
1774 echo "and extracted the source to libavcodec/amrwb_float"
1775 fi
1776
1777 if test "$amr_nb" = "yes" ; then
1778 echo
1779 echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
1780 echo "REL-5 V5.1.0 from "
1781 echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
1782 echo "and extracted the source to libavcodec/amr_float"
1783 echo "If you try this on alpha, you may need to change Word32 to int in amr/typedef.h"
1784 fi
1785
1786 if test "$amr_nb_fixed" = "yes" ; then
1787 echo
1788 echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
1789 echo "REL-5 version 5.1.0 from "
1790 echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
1791 echo "and extracted src to libavcodec/amr"
1792 echo "You must also add -DMMS_IO and remove -pedantic-errors to/from CFLAGS in libavcodec/amr/makefile."
1793 echo "i.e. CFLAGS = -Wall -I. \$(CFLAGS_\$(MODE)) -D\$(VAD) -DMMS_IO"
1794 fi
1795
1796 echo "Creating config.mak and config.h..."
1797
1798 date >> config.log
1799 echo " $0 $FFMPEG_CONFIGURATION" >> config.log
1800 echo "# Automatically generated by configure - do not modify!" > config.mak
1801 echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1802 echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
1803
1804 echo "PREFIX=$PREFIX" >> config.mak
1805 echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1806 echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1807 echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1808 echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1809 echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1810 echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1811 echo "MAKE=$make" >> config.mak
1812 echo "CC=$cc" >> config.mak
1813 echo "AR=$ar" >> config.mak
1814 echo "RANLIB=$ranlib" >> config.mak
1815 if test "$dostrip" = "yes" ; then
1816 echo "STRIP=$strip" >> config.mak
1817 echo "INSTALLSTRIP=$installstrip" >> config.mak
1818 else
1819 echo "STRIP=echo ignoring strip" >> config.mak
1820 echo "INSTALLSTRIP=" >> config.mak
1821 fi
1822
1823 echo "OPTFLAGS=$CFLAGS" >> config.mak
1824 echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1825 echo "LDFLAGS=$LDFLAGS" >> config.mak
1826 echo "LDCONFIG=$LDCONFIG" >> config.mak
1827 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1828 echo "SHFLAGS=$SHFLAGS" >> config.mak
1829 echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1830 echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1831 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1832 echo "BUILD_STATIC=$lstatic" >> config.mak
1833 echo "BUILDSUF=$BUILDSUF" >> config.mak
1834 echo "LIBPREF=$LIBPREF" >> config.mak
1835 echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1836 if test "$lstatic" = "yes" ; then
1837 echo "LIB=$LIB" >> config.mak
1838 else # Some Make complain if this variable does not exist.
1839 echo "LIB=" >> config.mak
1840 fi
1841 echo "SLIBPREF=$SLIBPREF" >> config.mak
1842 echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1843 echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1844 echo "TARGET_OS=$targetos" >> config.mak
1845 if test "$arch" = "x86_32" -o "$arch" = "x86_64" ; then
1846 echo "TARGET_ARCH_X86=yes" >> config.mak
1847 echo "#define ARCH_X86 1" >> $TMPH
1848 fi
1849 if test "$arch" = "x86_32" ; then
1850 echo "TARGET_ARCH_X86_32=yes" >> config.mak
1851 echo "#define ARCH_X86_32 1" >> $TMPH
1852 elif test "$arch" = "x86_64" ; then
1853 echo "TARGET_ARCH_X86_64=yes" >> config.mak
1854 echo "#define ARCH_X86_64 1" >> $TMPH
1855 elif test "$arch" = "armv4l" ; then
1856 echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1857 echo "#define ARCH_ARMV4L 1" >> $TMPH
1858 elif test "$arch" = "alpha" ; then
1859 echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1860 echo "#define ARCH_ALPHA 1" >> $TMPH
1861 elif test "$arch" = "sparc64" ; then
1862 echo "TARGET_ARCH_SPARC64=yes" >> config.mak
1863 echo "#define ARCH_SPARC64 1" >> $TMPH
1864 echo "TARGET_ARCH_SPARC=yes" >> config.mak
1865 echo "#define ARCH_SPARC 1" >> $TMPH
1866 elif test "$arch" = "sparc" ; then
1867 echo "TARGET_ARCH_SPARC=yes" >> config.mak
1868 echo "#define ARCH_SPARC 1" >> $TMPH
1869 elif test "$arch" = "powerpc" ; then
1870 echo "TARGET_ARCH_POWERPC=yes" >> config.mak
1871 echo "#define ARCH_POWERPC 1" >> $TMPH
1872 if test $POWERPCMODE = "32bits"; then
1873 echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
1874 else
1875 echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1876 fi
1877 if test "$powerpc_perf" = "yes"; then
1878 echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1879 fi
1880 elif test "$arch" = "mips" ; then
1881 echo "TARGET_ARCH_MIPS=yes" >> config.mak
1882 echo "#define ARCH_MIPS 1" >> $TMPH
1883 elif test "$arch" = "sh4" ; then
1884 echo "TARGET_ARCH_SH4=yes" >> config.mak
1885 echo "#define ARCH_SH4 1" >> $TMPH
1886 elif test "$arch" = "parisc" ; then
1887 echo "TARGET_ARCH_PARISC=yes" >> config.mak
1888 echo "#define ARCH_PARISC 1" >> $TMPH
1889 elif test "$arch" = "s390" ; then
1890 echo "TARGET_ARCH_S390=yes" >> config.mak
1891 echo "#define ARCH_S390 1" >> $TMPH
1892 elif test "$arch" = "m68k" ; then
1893 echo "TARGET_ARCH_M68K=yes" >> config.mak
1894 echo "#define ARCH_M68K 1" >> $TMPH
1895 elif test "$arch" = "ia64" ; then
1896 echo "TARGET_ARCH_IA64=yes" >> config.mak
1897 echo "#define ARCH_IA64 1" >> $TMPH
1898 elif test "$arch" = "bfin" ; then
1899 echo "TARGET_ARCH_BFIN=yes" >> config.mak
1900 echo "#define ARCH_BFIN 1" >> $TMPH
1901 fi
1902 echo "#define TUNECPU $TUNECPU" >> $TMPH
1903 if test "$bigendian" = "yes" ; then
1904 echo "WORDS_BIGENDIAN=yes" >> config.mak
1905 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1906 fi
1907 if test "$inttypes" != "yes" ; then
1908 echo "#define EMULATE_INTTYPES 1" >> $TMPH
1909 fi
1910 if test "$emu_fast_int" = "yes" ; then
1911 echo "#define EMULATE_FAST_INT 1" >> $TMPH
1912 fi
1913 if test "$mmx" = "yes" ; then
1914 echo "TARGET_MMX=yes" >> config.mak
1915 echo "#define HAVE_MMX 1" >> $TMPH
1916 echo "#define __CPU__ 586" >> $TMPH
1917 fi
1918 if test "$cmov" = "yes" ; then
1919 echo "TARGET_CMOV=yes" >> config.mak
1920 echo "#define HAVE_CMOV 1" >> $TMPH
1921 fi
1922 if test "$cmov_is_fast" = "yes" ; then
1923 echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
1924 echo "#define CMOV_IS_FAST 1" >> $TMPH
1925 fi
1926 if test "$armv5te" = "yes" ; then
1927 echo "TARGET_ARMV5TE=yes" >> config.mak
1928 echo "#define HAVE_ARMV5TE 1" >> $TMPH
1929 fi
1930 if test "$iwmmxt" = "yes" ; then
1931 echo "TARGET_IWMMXT=yes" >> config.mak
1932 echo "#define HAVE_IWMMXT 1" >> $TMPH
1933 fi
1934 if test "$mmi" = "yes" ; then
1935 echo "TARGET_MMI=yes" >> config.mak
1936 echo "#define HAVE_MMI 1" >> $TMPH
1937 fi
1938
1939 if test "$altivec" = "yes" ; then
1940 echo "TARGET_ALTIVEC=yes" >> config.mak
1941 echo "#define HAVE_ALTIVEC 1" >> $TMPH
1942 fi
1943
1944 if test "$sdl" = "yes" ; then
1945 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1946 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1947 fi
1948 if test "$texi2html" = "yes"; then
1949 echo "BUILD_DOC=yes" >> config.mak
1950 fi
1951
1952 sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1953 pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
1954 lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1955 lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1956 lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1957
1958
1959
1960 if test "$lshared" = "yes" ; then
1961 echo "#define BUILD_SHARED_AV 1" >> $TMPH
1962 echo "BUILD_SHARED=yes" >> config.mak
1963 echo "PIC=-fPIC -DPIC" >> config.mak
1964 echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
1965 echo "SPPVERSION=$lavc_version" >> config.mak
1966 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
1967 echo "LAVCVERSION=$lavc_version" >> config.mak
1968 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
1969 echo "LAVFVERSION=$lavf_version" >> config.mak
1970 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
1971 echo "LAVUVERSION=$lavu_version" >> config.mak
1972 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1973 echo "SWSVERSION=$sws_version" >> config.mak
1974 echo "SLIBNAME=${SLIBNAME}" >> config.mak
1975 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1976 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1977 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
1978 fi
1979 echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1980 echo "EXTRALIBS=$extralibs" >> config.mak
1981
1982 enabled_any $ENCODER_LIST && enable encoders
1983 enabled_any $DECODER_LIST && enable decoders
1984 enabled_any $MUXER_LIST && enable muxers
1985 enabled_any $DEMUXER_LIST && enable demuxers
1986
1987 enabled_any pthreads beosthreads os2threads w32threads && enable threads
1988
1989 print_config HAVE_ $TMPH config.mak $HAVE_LIST
1990 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1991
1992 if test "$mingw32" = "yes" ; then
1993 echo "#ifndef __MINGW32__" >> $TMPH
1994 echo "#define __MINGW32__ 1" >> $TMPH
1995 echo "#endif" >> $TMPH
1996 fi
1997
1998 if test "$mingwce" = "yes" ; then
1999 echo "#define CONFIG_WINCE 1" >> $TMPH
2000 echo "#ifndef __MINGW32__" >> $TMPH
2001 echo "#define __MINGW32__ 1" >> $TMPH
2002 echo "#endif" >> $TMPH
2003 fi
2004
2005 if test "$os2" = "yes" ; then
2006 echo "#define CONFIG_OS2 1" >> $TMPH
2007 fi
2008
2009 if test "$targetos" = "Darwin"; then
2010 echo "#define CONFIG_DARWIN 1" >> $TMPH
2011 fi
2012
2013 if test "$need_inet_aton" = "yes" ; then
2014 echo "NEED_INET_ATON=yes" >> config.mak
2015 fi
2016
2017 echo "#define restrict $_restrict" >> $TMPH
2018
2019 if test "$optimize" = "small"; then
2020 echo "#define always_inline" >> $TMPH
2021 echo "#define CONFIG_SMALL 1" >> $TMPH
2022 fi
2023
2024 echo "SRC_PATH=\"$source_path\"" >> config.mak
2025 echo "SRC_PATH_BARE=$source_path" >> config.mak
2026 echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2027
2028 if test "$amr_if2" = "yes" ; then
2029 echo "AMR_CFLAGS=-DIF2=1" >> config.mak
2030 fi
2031
2032 # Apparently it's not possible to portably echo a backslash.
2033 if test "$asmalign_pot" = "yes" ; then
2034 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
2035 else
2036 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2037 fi
2038
2039
2040 for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2041 ucname="`toupper $codec`"
2042 config_name="CONFIG_$ucname"
2043 enabled_name="ENABLE_$ucname"
2044 if enabled $codec; then
2045 echo "#define $config_name 1" >> $TMPH
2046 echo "#define $enabled_name 1" >> $TMPH
2047 echo "$config_name=yes" >> config.mak
2048 else
2049 echo "#define $enabled_name 0" >> $TMPH
2050 fi
2051 done
2052
2053 # Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
2054 if ! cmp -s $TMPH config.h; then
2055 mv -f $TMPH config.h
2056 else
2057 echo "config.h is unchanged"
2058 fi
2059
2060 rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2061
2062 # build tree in object directory if source path is different from current one
2063 if test "$source_path_used" = "yes" ; then
2064 DIRS="\
2065 doc \
2066 libavformat \
2067 libavcodec \
2068 libavcodec/alpha \
2069 libavcodec/armv4l \
2070 libavcodec/bfin \
2071 libavcodec/i386 \
2072 libavcodec/sparc \
2073 libavcodec/mlib \
2074 libavcodec/ppc \
2075 libavcodec/liba52 \
2076 libpostproc \
2077 libavutil \
2078 libswscale \
2079 tests \
2080 vhook \
2081 "
2082 FILES="\
2083 Makefile \
2084 common.mak \
2085 libavformat/Makefile \
2086 libavcodec/Makefile \
2087 libpostproc/Makefile \
2088 libavutil/Makefile \
2089 libswscale/Makefile \
2090 tests/Makefile \
2091 vhook/Makefile \
2092 doc/Makefile \
2093 doc/texi2pod.pl \
2094 "
2095 for dir in $DIRS ; do
2096 mkdir -p $dir
2097 done
2098 for f in $FILES ; do
2099 ln -sf "$source_path/$f" $f
2100 done
2101 fi
2102
2103 # build pkg-config files libav*.pc and libpostproc.pc
2104 # libavutil.pc
2105 cat <<EOF >libavutil.pc
2106 prefix=$PREFIX
2107 exec_prefix=\${prefix}
2108 libdir=\${exec_prefix}/lib
2109 includedir=\${prefix}/include
2110
2111 Name: libavutil
2112 Description: FFmpeg utility library
2113 Version: $lavu_version
2114 Requires:
2115 Conflicts:
2116 Libs: -L\${libdir} -lavutil
2117 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2118 EOF
2119
2120 cat <<EOF >libavutil-uninstalled.pc
2121 prefix=
2122 exec_prefix=
2123 libdir=\${pcfiledir}/libavutil
2124 includedir=\${pcfiledir}/libavutil
2125
2126 Name: libavutil
2127 Description: FFmpeg utility library
2128 Version: $lavu_version
2129 Requires:
2130 Conflicts:
2131 Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
2132 Cflags: -I\${includedir}
2133 EOF
2134
2135 # libavcodec.pc
2136 cat <<EOF >libavcodec.pc
2137 prefix=$PREFIX
2138 exec_prefix=\${prefix}
2139 libdir=\${exec_prefix}/lib
2140 includedir=\${prefix}/include
2141
2142 Name: libavcodec
2143 Description: FFmpeg codec library
2144 Version: $lavc_version
2145 Requires: $pkg_requires libavutil = $lavu_version
2146 Conflicts:
2147 Libs: -L\${libdir} -lavcodec $extralibs
2148 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2149 EOF
2150
2151 cat <<EOF >libavcodec-uninstalled.pc
2152 prefix=
2153 exec_prefix=
2154 libdir=\${pcfiledir}/libavcodec
2155 includedir=\${pcfiledir}/libavcodec
2156
2157 Name: libavcodec
2158 Description: FFmpeg codec library
2159 Version: $lavc_version
2160 Requires: $pkg_requires libavutil = $lavu_version
2161 Conflicts:
2162 Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
2163 Cflags: -I\${includedir}
2164 EOF
2165
2166 # libavformat.pc
2167 cat <<EOF >libavformat.pc
2168 prefix=$PREFIX
2169 exec_prefix=\${prefix}
2170 libdir=\${exec_prefix}/lib
2171 includedir=\${prefix}/include
2172
2173 Name: libavformat
2174 Description: FFmpeg container format library
2175 Version: $lavf_version
2176 Requires: $pkg_requires libavcodec = $lavc_version
2177 Conflicts:
2178 Libs: -L\${libdir} -lavformat $extralibs
2179 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2180 EOF
2181
2182 cat <<EOF >libavformat-uninstalled.pc
2183 prefix=
2184 exec_prefix=
2185 libdir=\${pcfiledir}/libavformat
2186 includedir=\${pcfiledir}/libavformat
2187
2188 Name: libavformat
2189 Description: FFmpeg container format library
2190 Version: $lavf_version
2191 Requires: $pkg_requires libavcodec = $lavc_version
2192 Conflicts:
2193 Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
2194 Cflags: -I\${includedir}
2195 EOF
2196
2197
2198 # libpostproc.pc
2199 cat <<EOF >libpostproc.pc
2200 prefix=$PREFIX
2201 exec_prefix=\${prefix}
2202 libdir=\${exec_prefix}/lib
2203 includedir=\${prefix}/include
2204
2205 Name: libpostproc
2206 Description: FFmpeg post processing library
2207 Version: $lavc_version
2208 Requires:
2209 Conflicts:
2210 Libs: -L\${libdir} -lpostproc
2211 Cflags: -I\${includedir} -I\${includedir}/postproc
2212 EOF
2213
2214 cat <<EOF >libpostproc-uninstalled.pc
2215 prefix=
2216 exec_prefix=
2217 libdir=\${pcfiledir}/libpostproc
2218 includedir=\${pcfiledir}/libpostproc
2219
2220 Name: libpostproc
2221 Description: FFmpeg post processing library
2222 Version: $lavc_version
2223 Requires:
2224 Conflicts:
2225 Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
2226 Cflags: -I\${includedir}
2227 EOF
2228
2229 if test "$swscaler" != "no"; then
2230 sws_pc_libs="-L\${libdir} -lswscale"
2231 sws_pc_uninstalled_libs="\${libdir}/${LIBPREF}swscale${LIBSUF}"
2232 sws_pc_requires="$pkg_requires libavutil = $lavu_version"
2233 else
2234 sws_pc_libs=""
2235 sws_pc_uninstalled_libs=""
2236 sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
2237 fi
2238 # libswscale.pc
2239 cat <<EOF >libswscale.pc
2240 prefix=$PREFIX
2241 exec_prefix=\${prefix}
2242 libdir=\${exec_prefix}/lib
2243 includedir=\${prefix}/include
2244
2245 Name: libswscale
2246 Description: FFmpeg image rescaling library
2247 Version: $sws_version
2248 Requires: $sws_pc_requires
2249 Conflicts:
2250 Libs: $sws_pc_libs
2251 Cflags: -I\${includedir} -I\${includedir}/swscale
2252 EOF
2253
2254 cat <<EOF >libswscale-uninstalled.pc
2255 prefix=
2256 exec_prefix=
2257 libdir=\${pcfiledir}/libswscale
2258 includedir=\${pcfiledir}/libswscale
2259
2260 Name: libswscale
2261 Description: FFmpeg image rescaling library
2262 Version: $sws_version
2263 Requires: $sws_pc_requires
2264 Conflicts:
2265 Libs: $sws_pc_uninstalled_libs
2266 Cflags: -I\${includedir}
2267 EOF