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