d95a7bc89e6c604b7acb18b8e34054906bdf6cf8
[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 if test "$amr_wb" = "yes" ; then
1771 echo
1772 echo "AMR WB FLOAT NOTICE ! Make sure you have downloaded TS26.204"
1773 echo "V5.1.0 from "
1774 echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.204/26204-510.zip"
1775 echo "and extracted the source to libavcodec/amrwb_float"
1776 fi
1777
1778 if test "$amr_nb" = "yes" ; then
1779 echo
1780 echo "AMR NB FLOAT NOTICE ! Make sure you have downloaded TS26.104"
1781 echo "REL-5 V5.1.0 from "
1782 echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.104/26104-510.zip"
1783 echo "and extracted the source to libavcodec/amr_float"
1784 echo "If you try this on alpha, you may need to change Word32 to int in amr/typedef.h"
1785 fi
1786
1787 if test "$amr_nb_fixed" = "yes" ; then
1788 echo
1789 echo "AMR NB FIXED POINT NOTICE! Make sure you have downloaded TS26.073 "
1790 echo "REL-5 version 5.1.0 from "
1791 echo "http://www.3gpp.org/ftp/Specs/archive/26_series/26.073/26073-510.zip"
1792 echo "and extracted src to libavcodec/amr"
1793 echo "You must also add -DMMS_IO and remove -pedantic-errors to/from CFLAGS in libavcodec/amr/makefile."
1794 echo "i.e. CFLAGS = -Wall -I. \$(CFLAGS_\$(MODE)) -D\$(VAD) -DMMS_IO"
1795 fi
1796
1797 echo "Creating config.mak and config.h..."
1798
1799 date >> config.log
1800 echo " $0 $FFMPEG_CONFIGURATION" >> config.log
1801 echo "# Automatically generated by configure - do not modify!" > config.mak
1802 echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1803 echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
1804
1805 echo "PREFIX=$PREFIX" >> config.mak
1806 echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1807 echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1808 echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1809 echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1810 echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1811 echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1812 echo "MAKE=$make" >> config.mak
1813 echo "CC=$cc" >> config.mak
1814 echo "AR=$ar" >> config.mak
1815 echo "RANLIB=$ranlib" >> config.mak
1816 if test "$dostrip" = "yes" ; then
1817 echo "STRIP=$strip" >> config.mak
1818 echo "INSTALLSTRIP=$installstrip" >> config.mak
1819 else
1820 echo "STRIP=echo ignoring strip" >> config.mak
1821 echo "INSTALLSTRIP=" >> config.mak
1822 fi
1823
1824 echo "OPTFLAGS=$CFLAGS" >> config.mak
1825 echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1826 echo "LDFLAGS=$LDFLAGS" >> config.mak
1827 echo "LDCONFIG=$LDCONFIG" >> config.mak
1828 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1829 echo "SHFLAGS=$SHFLAGS" >> config.mak
1830 echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1831 echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1832 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1833 echo "BUILD_STATIC=$lstatic" >> config.mak
1834 echo "BUILDSUF=$BUILDSUF" >> config.mak
1835 echo "LIBPREF=$LIBPREF" >> config.mak
1836 echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1837 if test "$lstatic" = "yes" ; then
1838 echo "LIB=$LIB" >> config.mak
1839 else # Some Make complain if this variable does not exist.
1840 echo "LIB=" >> config.mak
1841 fi
1842 echo "SLIBPREF=$SLIBPREF" >> config.mak
1843 echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1844 echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1845 echo "TARGET_OS=$targetos" >> config.mak
1846 if test "$arch" = "x86_32" -o "$arch" = "x86_64" ; then
1847 echo "TARGET_ARCH_X86=yes" >> config.mak
1848 echo "#define ARCH_X86 1" >> $TMPH
1849 fi
1850 if test "$arch" = "x86_32" ; then
1851 echo "TARGET_ARCH_X86_32=yes" >> config.mak
1852 echo "#define ARCH_X86_32 1" >> $TMPH
1853 elif test "$arch" = "x86_64" ; then
1854 echo "TARGET_ARCH_X86_64=yes" >> config.mak
1855 echo "#define ARCH_X86_64 1" >> $TMPH
1856 elif test "$arch" = "armv4l" ; then
1857 echo "TARGET_ARCH_ARMV4L=yes" >> config.mak
1858 echo "#define ARCH_ARMV4L 1" >> $TMPH
1859 elif test "$arch" = "alpha" ; then
1860 echo "TARGET_ARCH_ALPHA=yes" >> config.mak
1861 echo "#define ARCH_ALPHA 1" >> $TMPH
1862 elif test "$arch" = "sparc64" ; then
1863 echo "TARGET_ARCH_SPARC64=yes" >> config.mak
1864 echo "#define ARCH_SPARC64 1" >> $TMPH
1865 echo "TARGET_ARCH_SPARC=yes" >> config.mak
1866 echo "#define ARCH_SPARC 1" >> $TMPH
1867 elif test "$arch" = "sparc" ; then
1868 echo "TARGET_ARCH_SPARC=yes" >> config.mak
1869 echo "#define ARCH_SPARC 1" >> $TMPH
1870 elif test "$arch" = "powerpc" ; then
1871 echo "TARGET_ARCH_POWERPC=yes" >> config.mak
1872 echo "#define ARCH_POWERPC 1" >> $TMPH
1873 if test $POWERPCMODE = "32bits"; then
1874 echo "#define POWERPC_MODE_32BITS 1" >> $TMPH
1875 else
1876 echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1877 fi
1878 if test "$powerpc_perf" = "yes"; then
1879 echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1880 fi
1881 elif test "$arch" = "mips" ; then
1882 echo "TARGET_ARCH_MIPS=yes" >> config.mak
1883 echo "#define ARCH_MIPS 1" >> $TMPH
1884 elif test "$arch" = "sh4" ; then
1885 echo "TARGET_ARCH_SH4=yes" >> config.mak
1886 echo "#define ARCH_SH4 1" >> $TMPH
1887 elif test "$arch" = "parisc" ; then
1888 echo "TARGET_ARCH_PARISC=yes" >> config.mak
1889 echo "#define ARCH_PARISC 1" >> $TMPH
1890 elif test "$arch" = "s390" ; then
1891 echo "TARGET_ARCH_S390=yes" >> config.mak
1892 echo "#define ARCH_S390 1" >> $TMPH
1893 elif test "$arch" = "m68k" ; then
1894 echo "TARGET_ARCH_M68K=yes" >> config.mak
1895 echo "#define ARCH_M68K 1" >> $TMPH
1896 elif test "$arch" = "ia64" ; then
1897 echo "TARGET_ARCH_IA64=yes" >> config.mak
1898 echo "#define ARCH_IA64 1" >> $TMPH
1899 elif test "$arch" = "bfin" ; then
1900 echo "TARGET_ARCH_BFIN=yes" >> config.mak
1901 echo "#define ARCH_BFIN 1" >> $TMPH
1902 fi
1903 echo "#define TUNECPU $TUNECPU" >> $TMPH
1904 if test "$bigendian" = "yes" ; then
1905 echo "WORDS_BIGENDIAN=yes" >> config.mak
1906 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1907 fi
1908 if test "$mmx" = "yes" ; then
1909 echo "TARGET_MMX=yes" >> config.mak
1910 echo "#define HAVE_MMX 1" >> $TMPH
1911 echo "#define __CPU__ 586" >> $TMPH
1912 fi
1913 if test "$cmov" = "yes" ; then
1914 echo "TARGET_CMOV=yes" >> config.mak
1915 echo "#define HAVE_CMOV 1" >> $TMPH
1916 fi
1917 if test "$cmov_is_fast" = "yes" ; then
1918 echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
1919 echo "#define CMOV_IS_FAST 1" >> $TMPH
1920 fi
1921 if test "$armv5te" = "yes" ; then
1922 echo "TARGET_ARMV5TE=yes" >> config.mak
1923 echo "#define HAVE_ARMV5TE 1" >> $TMPH
1924 fi
1925 if test "$iwmmxt" = "yes" ; then
1926 echo "TARGET_IWMMXT=yes" >> config.mak
1927 echo "#define HAVE_IWMMXT 1" >> $TMPH
1928 fi
1929 if test "$mmi" = "yes" ; then
1930 echo "TARGET_MMI=yes" >> config.mak
1931 echo "#define HAVE_MMI 1" >> $TMPH
1932 fi
1933
1934 if test "$altivec" = "yes" ; then
1935 echo "TARGET_ALTIVEC=yes" >> config.mak
1936 echo "#define HAVE_ALTIVEC 1" >> $TMPH
1937 fi
1938
1939 if test "$sdl" = "yes" ; then
1940 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1941 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1942 fi
1943 if test "$texi2html" = "yes"; then
1944 echo "BUILD_DOC=yes" >> config.mak
1945 fi
1946
1947 sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1948 pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
1949 lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1950 lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1951 lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1952
1953
1954
1955 if test "$lshared" = "yes" ; then
1956 echo "#define BUILD_SHARED_AV 1" >> $TMPH
1957 echo "BUILD_SHARED=yes" >> config.mak
1958 echo "PIC=-fPIC -DPIC" >> config.mak
1959 echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
1960 echo "SPPVERSION=$lavc_version" >> config.mak
1961 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
1962 echo "LAVCVERSION=$lavc_version" >> config.mak
1963 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
1964 echo "LAVFVERSION=$lavf_version" >> config.mak
1965 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
1966 echo "LAVUVERSION=$lavu_version" >> config.mak
1967 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1968 echo "SWSVERSION=$sws_version" >> config.mak
1969 echo "SLIBNAME=${SLIBNAME}" >> config.mak
1970 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1971 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1972 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
1973 fi
1974 echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1975 echo "EXTRALIBS=$extralibs" >> config.mak
1976
1977 enabled_any $ENCODER_LIST && enable encoders
1978 enabled_any $DECODER_LIST && enable decoders
1979 enabled_any $MUXER_LIST && enable muxers
1980 enabled_any $DEMUXER_LIST && enable demuxers
1981
1982 enabled_any pthreads beosthreads os2threads w32threads && enable threads
1983
1984 print_config HAVE_ $TMPH config.mak $HAVE_LIST
1985 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1986
1987 if test "$mingw32" = "yes" ; then
1988 echo "#ifndef __MINGW32__" >> $TMPH
1989 echo "#define __MINGW32__ 1" >> $TMPH
1990 echo "#endif" >> $TMPH
1991 fi
1992
1993 if test "$mingwce" = "yes" ; then
1994 echo "#define CONFIG_WINCE 1" >> $TMPH
1995 echo "#ifndef __MINGW32__" >> $TMPH
1996 echo "#define __MINGW32__ 1" >> $TMPH
1997 echo "#endif" >> $TMPH
1998 fi
1999
2000 if test "$os2" = "yes" ; then
2001 echo "#define CONFIG_OS2 1" >> $TMPH
2002 fi
2003
2004 if test "$targetos" = "Darwin"; then
2005 echo "#define CONFIG_DARWIN 1" >> $TMPH
2006 fi
2007
2008 echo "#define restrict $_restrict" >> $TMPH
2009
2010 if test "$optimize" = "small"; then
2011 echo "#define always_inline" >> $TMPH
2012 echo "#define CONFIG_SMALL 1" >> $TMPH
2013 fi
2014
2015 echo "SRC_PATH=\"$source_path\"" >> config.mak
2016 echo "SRC_PATH_BARE=$source_path" >> config.mak
2017 echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2018
2019 if test "$amr_if2" = "yes" ; then
2020 echo "AMR_CFLAGS=-DIF2=1" >> config.mak
2021 fi
2022
2023 # Apparently it's not possible to portably echo a backslash.
2024 if test "$asmalign_pot" = "yes" ; then
2025 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
2026 else
2027 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2028 fi
2029
2030
2031 for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2032 ucname="`toupper $codec`"
2033 config_name="CONFIG_$ucname"
2034 enabled_name="ENABLE_$ucname"
2035 if enabled $codec; then
2036 echo "#define $config_name 1" >> $TMPH
2037 echo "#define $enabled_name 1" >> $TMPH
2038 echo "$config_name=yes" >> config.mak
2039 else
2040 echo "#define $enabled_name 0" >> $TMPH
2041 fi
2042 done
2043
2044 # Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
2045 if ! cmp -s $TMPH config.h; then
2046 mv -f $TMPH config.h
2047 else
2048 echo "config.h is unchanged"
2049 fi
2050
2051 rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2052
2053 # build tree in object directory if source path is different from current one
2054 if test "$source_path_used" = "yes" ; then
2055 DIRS="\
2056 doc \
2057 libavformat \
2058 libavcodec \
2059 libavcodec/alpha \
2060 libavcodec/armv4l \
2061 libavcodec/bfin \
2062 libavcodec/i386 \
2063 libavcodec/sparc \
2064 libavcodec/mlib \
2065 libavcodec/ppc \
2066 libavcodec/liba52 \
2067 libpostproc \
2068 libavutil \
2069 libswscale \
2070 tests \
2071 vhook \
2072 "
2073 FILES="\
2074 Makefile \
2075 common.mak \
2076 libavformat/Makefile \
2077 libavcodec/Makefile \
2078 libpostproc/Makefile \
2079 libavutil/Makefile \
2080 libswscale/Makefile \
2081 tests/Makefile \
2082 vhook/Makefile \
2083 doc/Makefile \
2084 doc/texi2pod.pl \
2085 "
2086 for dir in $DIRS ; do
2087 mkdir -p $dir
2088 done
2089 for f in $FILES ; do
2090 ln -sf "$source_path/$f" $f
2091 done
2092 fi
2093
2094 # build pkg-config files libav*.pc and libpostproc.pc
2095 # libavutil.pc
2096 cat <<EOF >libavutil.pc
2097 prefix=$PREFIX
2098 exec_prefix=\${prefix}
2099 libdir=\${exec_prefix}/lib
2100 includedir=\${prefix}/include
2101
2102 Name: libavutil
2103 Description: FFmpeg utility library
2104 Version: $lavu_version
2105 Requires:
2106 Conflicts:
2107 Libs: -L\${libdir} -lavutil
2108 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2109 EOF
2110
2111 cat <<EOF >libavutil-uninstalled.pc
2112 prefix=
2113 exec_prefix=
2114 libdir=\${pcfiledir}/libavutil
2115 includedir=\${pcfiledir}/libavutil
2116
2117 Name: libavutil
2118 Description: FFmpeg utility library
2119 Version: $lavu_version
2120 Requires:
2121 Conflicts:
2122 Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
2123 Cflags: -I\${includedir}
2124 EOF
2125
2126 # libavcodec.pc
2127 cat <<EOF >libavcodec.pc
2128 prefix=$PREFIX
2129 exec_prefix=\${prefix}
2130 libdir=\${exec_prefix}/lib
2131 includedir=\${prefix}/include
2132
2133 Name: libavcodec
2134 Description: FFmpeg codec library
2135 Version: $lavc_version
2136 Requires: $pkg_requires libavutil = $lavu_version
2137 Conflicts:
2138 Libs: -L\${libdir} -lavcodec $extralibs
2139 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2140 EOF
2141
2142 cat <<EOF >libavcodec-uninstalled.pc
2143 prefix=
2144 exec_prefix=
2145 libdir=\${pcfiledir}/libavcodec
2146 includedir=\${pcfiledir}/libavcodec
2147
2148 Name: libavcodec
2149 Description: FFmpeg codec library
2150 Version: $lavc_version
2151 Requires: $pkg_requires libavutil = $lavu_version
2152 Conflicts:
2153 Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
2154 Cflags: -I\${includedir}
2155 EOF
2156
2157 # libavformat.pc
2158 cat <<EOF >libavformat.pc
2159 prefix=$PREFIX
2160 exec_prefix=\${prefix}
2161 libdir=\${exec_prefix}/lib
2162 includedir=\${prefix}/include
2163
2164 Name: libavformat
2165 Description: FFmpeg container format library
2166 Version: $lavf_version
2167 Requires: $pkg_requires libavcodec = $lavc_version
2168 Conflicts:
2169 Libs: -L\${libdir} -lavformat $extralibs
2170 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2171 EOF
2172
2173 cat <<EOF >libavformat-uninstalled.pc
2174 prefix=
2175 exec_prefix=
2176 libdir=\${pcfiledir}/libavformat
2177 includedir=\${pcfiledir}/libavformat
2178
2179 Name: libavformat
2180 Description: FFmpeg container format library
2181 Version: $lavf_version
2182 Requires: $pkg_requires libavcodec = $lavc_version
2183 Conflicts:
2184 Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
2185 Cflags: -I\${includedir}
2186 EOF
2187
2188
2189 # libpostproc.pc
2190 cat <<EOF >libpostproc.pc
2191 prefix=$PREFIX
2192 exec_prefix=\${prefix}
2193 libdir=\${exec_prefix}/lib
2194 includedir=\${prefix}/include
2195
2196 Name: libpostproc
2197 Description: FFmpeg post processing library
2198 Version: $lavc_version
2199 Requires:
2200 Conflicts:
2201 Libs: -L\${libdir} -lpostproc
2202 Cflags: -I\${includedir} -I\${includedir}/postproc
2203 EOF
2204
2205 cat <<EOF >libpostproc-uninstalled.pc
2206 prefix=
2207 exec_prefix=
2208 libdir=\${pcfiledir}/libpostproc
2209 includedir=\${pcfiledir}/libpostproc
2210
2211 Name: libpostproc
2212 Description: FFmpeg post processing library
2213 Version: $lavc_version
2214 Requires:
2215 Conflicts:
2216 Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
2217 Cflags: -I\${includedir}
2218 EOF
2219
2220 if test "$swscaler" != "no"; then
2221 sws_pc_libs="-L\${libdir} -lswscale"
2222 sws_pc_uninstalled_libs="\${libdir}/${LIBPREF}swscale${LIBSUF}"
2223 sws_pc_requires="$pkg_requires libavutil = $lavu_version"
2224 else
2225 sws_pc_libs=""
2226 sws_pc_uninstalled_libs=""
2227 sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
2228 fi
2229 # libswscale.pc
2230 cat <<EOF >libswscale.pc
2231 prefix=$PREFIX
2232 exec_prefix=\${prefix}
2233 libdir=\${exec_prefix}/lib
2234 includedir=\${prefix}/include
2235
2236 Name: libswscale
2237 Description: FFmpeg image rescaling library
2238 Version: $sws_version
2239 Requires: $sws_pc_requires
2240 Conflicts:
2241 Libs: $sws_pc_libs
2242 Cflags: -I\${includedir} -I\${includedir}/swscale
2243 EOF
2244
2245 cat <<EOF >libswscale-uninstalled.pc
2246 prefix=
2247 exec_prefix=
2248 libdir=\${pcfiledir}/libswscale
2249 includedir=\${pcfiledir}/libswscale
2250
2251 Name: libswscale
2252 Description: FFmpeg image rescaling library
2253 Version: $sws_version
2254 Requires: $sws_pc_requires
2255 Conflicts:
2256 Libs: $sws_pc_uninstalled_libs
2257 Cflags: -I\${includedir}
2258 EOF