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