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