Kill a warning and don't use modulus.
[FFMpeg-mirror/ordered_chapters.git] / configure
blobe9ae08d87359a54d7f0356aedfac680fe2b39456
1 #!/bin/sh
3 # FFmpeg configure script
5 # Copyright (c) 2000, 2001, 2002 Fabrice Bellard
6 # Copyright (c) 2005-2006 Diego Biurrun
7 # Copyright (c) 2005-2006 Mans Rullgard
10 # make sure we are running under a compatible shell
11 # try to make this part work with most shells
13 try_exec(){
14 echo "Trying shell $1"
15 type "$1" >/dev/null 2>&1 && exec "$@"
18 unset foo
19 (: ${foo%%bar}) 2>/dev/null
20 E1="$?"
22 (: ${foo?}) 2>/dev/null
23 E2="$?"
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" "$@"
32 if test "0$FF_CONF_EXEC" -lt 2; then
33 FF_CONF_EXEC=2
34 try_exec ksh "$0" "$@"
36 if test "0$FF_CONF_EXEC" -lt 3; then
37 FF_CONF_EXEC=3
38 try_exec /usr/xpg4/bin/sh "$0" "$@"
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."
50 exit 1
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-mingw32 enable MinGW native/cross Windows compile"
66 echo " --enable-mingwce enable MinGW native/cross WinCE compile"
67 echo " --enable-static build static libraries [default=yes]"
68 echo " --disable-static do not build static libraries [default=no]"
69 echo " --enable-shared build shared libraries [default=no]"
70 echo " --disable-shared do not build shared libraries [default=yes]"
71 echo " --enable-pp enable GPLed postprocessing support [default=no]"
72 echo " --enable-swscaler software scaler support [default=no]"
73 echo " --enable-sunmlib use Sun medialib [default=no]"
74 echo " --enable-beosthreads use BeOS threads [default=no]"
75 echo " --enable-os2threads use OS/2 threads [default=no]"
76 echo " --enable-pthreads use pthreads [default=no]"
77 echo " --enable-w32threads use Win32 threads [default=no]"
78 echo " --enable-x11grab enable X11 grabbing [default=no]"
79 echo " --enable-dc1394 enable IIDC-1394 grabbing using libdc1394"
80 echo " and libraw1394 [default=no]"
81 echo " --enable-a52 enable GPLed liba52 support [default=no]"
82 echo " --enable-a52bin open liba52.so.0 at runtime [default=no]"
83 echo " --enable-avisynth allow reading AVISynth script files [default=no]"
84 echo " --enable-dts enable GPLed libdts support [default=no]"
85 echo " --enable-faac enable FAAC support via libfaac [default=no]"
86 echo " --enable-faad enable FAAD support via libfaad [default=no]"
87 echo " --enable-faadbin build FAAD support with runtime linking [default=no]"
88 echo " --enable-libgsm enable GSM support via libgsm [default=no]"
89 echo " --enable-mp3lame enable MP3 encoding via libmp3lame [default=no]"
90 echo " --enable-libnut enable NUT support via libnut [default=no]"
91 echo " --enable-libogg enable Ogg support via libogg [default=no]"
92 echo " --enable-libtheora enable Theora support via libtheora [default=no]"
93 echo " --enable-vorbis enable Vorbis support via libvorbis [default=no]"
94 echo " --enable-x264 enable H.264 encoding via x264 [default=no]"
95 echo " --enable-xvid enable Xvid encoding via xvidcore [default=no]"
96 echo " --enable-amr_nb enable amr_nb float audio codec"
97 echo " --enable-amr_nb-fixed use fixed point for amr-nb codec"
98 echo " --enable-amr_wb enable amr_wb float audio codec"
99 echo " --enable-amr_if2 enable amr_wb IF2 audio codec"
100 echo " --enable-gpl allow use of GPL code, the resulting libav*"
101 echo " and ffmpeg will be under GPL [default=no]"
102 echo ""
103 echo "Advanced options (experts only):"
104 echo " --source-path=PATH path to source code [$source_path]"
105 echo " --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]"
106 echo " --cross-compile assume a cross-compiler is used"
107 echo " --cc=CC use C compiler CC [$cc]"
108 echo " --make=MAKE use specified make [$make]"
109 echo " --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]"
110 echo " --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
111 echo " --extra-libs=ELIBS add ELIBS [$ELIBS]"
112 echo " --build-suffix=SUFFIX suffix for application specific build []"
113 echo " --arch=ARCH select architecture [$arch]"
114 echo " --cpu=CPU selects the minimum cpu required (affects
115 instruction selection, may crash on older CPUs)"
116 echo " --powerpc-perf-enable enable performance report on PPC"
117 echo " (requires enabling PMC)"
118 echo " --disable-mmx disable MMX usage"
119 echo " --disable-armv5te disable armv5te usage"
120 echo " --disable-armv6 disable armv6 usage"
121 echo " --disable-iwmmxt disable iwmmxt usage"
122 echo " --disable-altivec disable AltiVec usage"
123 echo " --disable-audio-oss disable OSS audio support [default=no]"
124 echo " --disable-audio-beos disable BeOS audio support [default=no]"
125 echo " --disable-v4l disable video4linux grabbing [default=no]"
126 echo " --disable-v4l2 disable video4linux2 grabbing [default=no]"
127 echo " --disable-bktr disable bktr video grabbing [default=no]"
128 echo " --disable-dv1394 disable DV1394 grabbing [default=no]"
129 echo " --disable-network disable network support [default=no]"
130 echo " --disable-ipv6 disable ipv6 support [default=no]"
131 echo " --disable-zlib disable zlib [default=no]"
132 echo " --disable-vhook disable video hooking support"
133 echo " --enable-gprof enable profiling with gprof [$gprof]"
134 echo " --disable-debug disable debugging symbols"
135 echo " --disable-opts disable compiler optimizations"
136 echo " --enable-extra-warnings enable more compiler warnings"
137 echo " --disable-mpegaudio-hp faster (but less accurate)"
138 echo " MPEG audio decoding [default=no]"
139 echo " --disable-protocols disable I/O protocols support [default=no]"
140 echo " --disable-ffmpeg disable ffmpeg build"
141 echo " --disable-ffserver disable ffserver build"
142 echo " --disable-ffplay disable ffplay build"
143 echo " --enable-small optimize for size instead of speed"
144 echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers"
145 echo " --disable-strip disable stripping of executables and shared libraries"
146 echo " --disable-encoder=NAME disables encoder NAME"
147 echo " --enable-encoder=NAME enables encoder NAME"
148 echo " --disable-decoder=NAME disables decoder NAME"
149 echo " --enable-decoder=NAME enables decoder NAME"
150 echo " --disable-encoders disables all encoders"
151 echo " --disable-decoders disables all decoders"
152 echo " --disable-muxer=NAME disables muxer NAME"
153 echo " --enable-muxer=NAME enables muxer NAME"
154 echo " --disable-muxers disables all muxers"
155 echo " --disable-demuxer=NAME disables demuxer NAME"
156 echo " --enable-demuxer=NAME enables demuxer NAME"
157 echo " --disable-demuxers disables all demuxers"
158 echo " --enable-parser=NAME enables parser NAME"
159 echo " --disable-parser=NAME disables parser NAME"
160 echo " --disable-parsers disables all parsers"
161 echo ""
162 echo "NOTE: Object files are built at the place where configure is launched."
163 exit 1
166 log(){
167 echo "$@" >>$logfile
170 log_file(){
171 log BEGIN $1
172 cat -n $1 >>$logfile
173 log END $1
176 echolog(){
177 log "$@"
178 echo "$@"
181 die(){
182 echolog "$@"
183 cat <<EOF
184 If you think configure made a mistake, make sure you are using the latest
185 version from SVN. If the latest version fails, report the problem to the
186 ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
188 if enabled logging; then
189 cat <<EOF
190 Include the log file "$logfile" produced by configure as this will help
191 solving the problem.
193 else
194 cat <<EOF
195 Rerun configure with logging enabled (do not use --log=no), and include the
196 log this produces with your report.
199 rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
200 exit 1
203 # "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
204 toupper(){
205 echo "$@" | tr '[a-z]' '[A-Z]'
208 set_all(){
209 value=$1
210 shift
211 for var in $*; do
212 eval $var=$value
213 done
216 enable(){
217 set_all yes $*
220 disable(){
221 set_all no $*
224 enabled(){
225 eval test "x\$$1" = "xyes"
228 disabled(){
229 eval test "x\$$1" = "xno"
232 enabled_all(){
233 for opt; do
234 enabled $opt || return 1
235 done
238 disabled_all(){
239 for opt; do
240 disabled $opt || return 1
241 done
244 enabled_any(){
245 for opt; do
246 enabled $opt && return 0
247 done
250 disabled_any(){
251 for opt; do
252 disabled $opt && return 0
253 done
256 check_deps(){
257 for cfg; do
258 eval dep_all="\$${cfg}_deps"
259 eval dep_any="\$${cfg}_deps_any"
260 enabled_all $dep_all || disable $cfg
261 enabled_any $dep_any || disable $cfg
262 done
265 print_config(){
266 pfx=$1
267 header=$2
268 makefile=$3
269 shift 3
270 for cfg; do
271 if enabled $cfg; then
272 ucname="${pfx}`toupper $cfg`"
273 echo "#define ${ucname} 1" >> $header
274 echo "${ucname}=yes" >> $makefile
276 done
279 flags_saved(){
280 (: ${SAVE_CFLAGS?}) 2>/dev/null
283 save_flags(){
284 flags_saved && return
285 SAVE_CFLAGS="$CFLAGS"
286 SAVE_LDFLAGS="$LDFLAGS"
287 SAVE_extralibs="$extralibs"
290 restore_flags(){
291 CFLAGS="$SAVE_CFLAGS"
292 LDFLAGS="$SAVE_LDFLAGS"
293 extralibs="$SAVE_extralibs"
294 unset SAVE_CFLAGS
295 unset SAVE_LDFLAGS
296 unset SAVE_extralibs
299 temp_cflags(){
300 save_flags
301 CFLAGS="$CFLAGS $*"
304 temp_ldflags(){
305 save_flags
306 LDFLAGS="$LDFLAGS $*"
309 temp_extralibs(){
310 save_flags
311 extralibs="$extralibs $*"
314 append(){
315 var=$1
316 shift
317 flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
318 eval "$var=\"\$$var $*\""
321 add_cflags(){
322 append CFLAGS "$@"
325 add_ldflags(){
326 append LDFLAGS "$@"
329 add_extralibs(){
330 append extralibs "$@"
333 check_cmd(){
334 log "$@"
335 "$@" >>$logfile 2>&1
338 check_cc(){
339 log check_cc "$@"
340 cat >$TMPC
341 log_file $TMPC
342 check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
345 check_cpp(){
346 log check_cpp "$@"
347 cat >$TMPC
348 log_file $TMPC
349 check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
352 check_ld(){
353 log check_ld "$@"
354 check_cc || return
355 check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
358 check_cflags(){
359 log check_cflags "$@"
360 check_cc "$@" <<EOF && add_cflags "$@"
361 int x;
365 check_ldflags(){
366 log check_ldflags "$@"
367 check_ld "$@" <<EOF && add_ldflags "$@"
368 int main(){
369 return 0;
374 check_header(){
375 log check_header "$@"
376 header=$1
377 shift
378 check_cpp "$@" <<EOF
379 #include <$header>
380 int x;
382 err=$?
383 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
384 test "$err" = 0 && enable $var || disable $var
385 return $err
388 check_func(){
389 log check_func "$@"
390 func=$1
391 shift
392 check_ld "$@" <<EOF
393 extern int $func();
394 int main(){
395 $func();
398 err=$?
399 test "$err" = 0 && enable $func || disable $func
400 return $err
403 check_lib(){
404 log check_lib "$@"
405 header="$1"
406 func="$2"
407 shift 2
408 temp_extralibs "$@"
409 check_header $header && check_func $func && add_extralibs "$@"
410 err=$?
411 restore_flags
412 return $err
415 check_exec(){
416 check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
419 require(){
420 name="$1"
421 header="$2"
422 func="$3"
423 shift 3
424 check_lib $header $func "$@" || die "ERROR: $name not found"
427 apply(){
428 file=$1
429 shift
430 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
433 CONFIG_LIST='
434 encoders
435 decoders
436 parsers
437 muxers
438 demuxers
440 amr_nb
441 amr_nb_fixed
442 amr_wb
443 audio_beos
444 audio_oss
445 avisynth
446 beos_netserver
447 bktr
448 dc1394
449 dv1394
450 ffmpeg
451 ffplay
452 ffserver
454 ipv6
455 liba52
456 liba52bin
457 libdts
458 libfaac
459 libfaad
460 libfaadbin
461 libgsm
462 libmp3lame
463 libnut
464 libogg
465 libtheora
466 libvorbis
467 memalign_hack
468 mpegaudio_hp
469 network
471 protocols
472 swscaler
473 vhook
474 video4linux
475 video4linux2
476 wince
477 x11grab
478 x264
479 xvid
480 zlib
483 HAVE_LIST='
484 altivec
485 altivec_h
486 armv5te
487 armv6
488 beosthreads
489 byteswap_h
490 cmov
491 dcbzl
492 dev_bktr_ioctl_bt848_h
493 dev_bktr_ioctl_meteor_h
494 dev_ic_bt8xx_h
495 dev_video_meteor_ioctl_meteor_h
496 dev_video_bktr_ioctl_bt848_h
497 dlfcn_h
498 dlopen
499 fast_cmov
500 freetype2
501 gprof
502 imlib2
503 inet_aton
504 iwmmxt
505 localtime_r
506 lrintf
507 machine_ioctl_bt848_h
508 machine_ioctl_meteor_h
509 malloc_h
510 memalign
511 mlib
515 os2threads
516 pthreads
518 sdl_video_size
519 threads
520 w32threads
523 TARGET_LIST='
524 altivec
525 armv5te
526 iwmmxt
531 flashsv_decoder_deps="zlib"
532 flashsv_encoder_deps="zlib"
533 mpeg_xvmc_decoder_deps="xvmc"
534 png_decoder_deps="zlib"
535 png_encoder_deps="zlib"
536 x264_encoder_deps="x264"
537 xvid_encoder_deps="xvid"
538 zmbv_decoder_deps="zlib"
539 zmbv_encoder_deps="zlib"
541 aac_decoder_deps="libfaad"
542 mpeg4aac_decoder_deps="libfaad"
543 ac3_decoder_deps="liba52"
544 amr_nb_decoder_deps_any="amr_nb amr_nb_fixed"
545 amr_nb_encoder_deps_any="amr_nb amr_nb_fixed"
546 amr_wb_decoder_deps="amr_wb"
547 amr_wb_encoder_deps="amr_wb"
548 dts_decoder_deps="libdts"
549 faac_encoder_deps="libfaac"
550 libgsm_decoder_deps="libgsm"
551 libgsm_encoder_deps="libgsm"
552 libtheora_encoder_deps="libtheora"
553 mp3lame_encoder_deps="libmp3lame"
554 oggvorbis_decoder_deps="libvorbis"
555 oggvorbis_encoder_deps="libvorbis"
557 audio_demuxer_deps_any="audio_oss audio_beos"
558 audio_muxer_deps_any="audio_oss audio_beos"
559 dc1394_demuxer_deps="dc1394"
560 dv1394_demuxer_deps="dv1394"
561 gxf_muxer_deps="gpl"
562 nut_muxer_deps="libnut"
563 ogg_muxer_deps="libogg"
564 redir_demuxer_deps="network"
565 rtp_muxer_deps="network"
566 rtsp_demuxer_deps="network"
567 sdp_demuxer_deps="network"
568 v4l2_demuxer_deps="video4linux2"
569 video_grab_device_demuxer_deps_any="video4linux bktr"
570 x11_grab_device_demuxer_deps="x11grab"
572 # set temporary file name
573 if test ! -z "$TMPDIR" ; then
574 TMPDIR1="${TMPDIR}"
575 elif test ! -z "$TEMPDIR" ; then
576 TMPDIR1="${TEMPDIR}"
577 else
578 TMPDIR1="/tmp"
581 TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
582 TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
583 TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
584 TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
585 TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
587 # default parameters
588 logging="yes"
589 logfile="config.err"
590 PREFIX="/usr/local"
591 libdir='${PREFIX}/lib'
592 shlibdir="$libdir"
593 incdir='${PREFIX}/include/ffmpeg'
594 mandir='${PREFIX}/man'
595 bindir='${PREFIX}/bin'
596 cross_prefix=""
597 cross_compile="no"
598 cc="gcc"
599 ar="ar"
600 ranlib="ranlib"
601 make="make"
602 strip="strip"
603 arch=`uname -m`
604 cpu="generic"
605 powerpc_perf="no"
606 mmx="default"
607 cmov="no"
608 fast_cmov="no"
609 armv5te="default"
610 armv6="default"
611 iwmmxt="default"
612 altivec="default"
613 dcbzl="no"
614 mmi="default"
615 case "$arch" in
616 i386|i486|i586|i686|i86pc|BePC)
617 arch="x86_32"
619 x86_64|amd64)
620 arch="x86_32"
621 canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
622 if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
623 if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
624 arch="x86_64"
628 # armv4l is a subset of armv[567]*l
629 arm|armv[4567]*l)
630 arch="armv4l"
632 alpha)
633 arch="alpha"
635 "Power Macintosh"|ppc|ppc64|powerpc)
636 arch="powerpc"
638 mips|mipsel|IP*)
639 arch="mips"
641 sun4u|sparc64)
642 arch="sparc64"
644 sparc)
645 arch="sparc"
647 sh4)
648 arch="sh4"
650 parisc|parisc64)
651 arch="parisc"
653 s390|s390x)
654 arch="s390"
656 m68k)
657 arch="m68k"
659 ia64)
660 arch="ia64"
662 bfin)
663 arch="bfin"
666 arch="unknown"
668 esac
669 gprof="no"
670 video4linux="yes"
671 video4linux2="yes"
672 bktr="no"
673 audio_oss="yes"
674 audio_beos="no"
675 x11grab="no"
676 dv1394="yes"
677 dc1394="no"
678 network="yes"
679 ipv6="yes"
680 zlib="yes"
681 liba52="no"
682 liba52bin="no"
683 libdts="no"
684 libfaac="no"
685 libfaad="no"
686 libfaadbin="no"
687 libgsm="no"
688 libmp3lame="no"
689 libnut="no"
690 libogg="no"
691 libtheora="no"
692 libvorbis="no"
693 xvid="no"
694 x264="no"
695 pp="no"
696 mingw32="no"
697 wince="no"
698 os2="no"
699 lstatic="yes"
700 lshared="no"
701 optimize="yes"
702 debug="yes"
703 extrawarnings="no"
704 dostrip="yes"
705 extralibs="-lm"
706 bigendian="no"
707 vhook="default"
708 avisynth="no"
709 dlfcn_h="no"
710 dlopen="no"
711 mpegaudio_hp="yes"
712 SHFLAGS='-shared -Wl,-soname,$@'
713 VHOOKSHFLAGS='$(SHFLAGS)'
714 beos_netserver="no"
715 protocols="yes"
716 ffmpeg="yes"
717 ffserver="yes"
718 ffplay="yes"
719 LIBOBJFLAGS=""
720 FFLDFLAGS=-Wl,--warn-common
721 LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
722 FFSERVERLDFLAGS=-Wl,-E
723 LDCONFIG="ldconfig"
724 LIBPREF="lib"
725 LIBSUF=".a"
726 LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
727 SLIBPREF="lib"
728 SLIBSUF=".so"
729 SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
730 SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
731 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
732 EXESUF=""
733 BUILDSUF=""
734 amr_nb="no"
735 amr_wb="no"
736 amr_nb_fixed="no"
737 amr_if2="no"
738 mlib="no"
739 beosthreads="no"
740 os2threads="no"
741 pthreads="no"
742 w32threads="no"
743 thread_type="no"
744 swscaler="no"
745 gpl="no"
746 memalign_hack="no"
747 asmalign_pot="unknown"
748 LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
750 # OS specific
751 targetos=`uname -s`
752 case $targetos in
753 BeOS)
754 PREFIX="/boot/home/config"
755 # helps building libavcodec
756 add_cflags "-DPIC -fomit-frame-pointer"
757 # 3 gcc releases known for BeOS, each with ugly bugs
758 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
759 case "$gcc_version" in
760 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
761 mmx="no"
763 *20010315*) echo "BeBits gcc"
764 add_cflags "-fno-expensive-optimizations"
766 esac
767 SHFLAGS=-nostart
768 # disable Linux things
769 audio_oss="no"
770 video4linux="no"
771 video4linux2="no"
772 dv1394="no"
773 # enable BeOS things
774 audio_beos="yes"
775 # no need for libm, but the inet stuff
776 # Check for BONE
777 if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
778 extralibs="-lbind -lsocket"
779 else
780 beos_netserver="yes"
781 extralibs="-lnet"
782 fi ;;
783 SunOS)
784 video4linux="no"
785 video4linux2="no"
786 audio_oss="no"
787 dv1394="no"
788 make="gmake"
789 FFLDFLAGS=""
790 FFSERVERLDFLAGS=""
791 SHFLAGS="-shared -Wl,-h,\$@"
792 add_extralibs "-lsocket -lnsl"
794 NetBSD)
795 video4linux="no"
796 video4linux2="no"
797 bktr="yes"
798 audio_oss="yes"
799 dv1394="no"
800 make="gmake"
801 add_extralibs "-lossaudio"
803 OpenBSD)
804 video4linux="no"
805 video4linux2="no"
806 bktr="yes"
807 audio_oss="yes"
808 dv1394="no"
809 need_memalign="no"
810 make="gmake"
811 LIBOBJFLAGS="\$(PIC)"
812 LDCONFIG="ldconfig -m \$(shlibdir)"
813 SHFLAGS='-shared'
814 SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
815 SLIBNAME_WITH_VERSION='$(SLIBNAME)'
816 SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
817 add_extralibs "-lossaudio"
819 FreeBSD)
820 video4linux="no"
821 video4linux2="no"
822 bktr="yes"
823 audio_oss="yes"
824 dv1394="no"
825 make="gmake"
826 need_memalign="no"
827 add_cflags "-pthread"
829 GNU/kFreeBSD)
830 video4linux="no"
831 video4linux2="no"
832 bktr="yes"
833 audio_oss="yes"
834 dv1394="no"
835 add_cflags "-pthread"
837 BSD/OS)
838 video4linux="no"
839 video4linux2="no"
840 bktr="yes"
841 audio_oss="yes"
842 dv1394="no"
843 extralibs="-lpoll -lgnugetopt -lm"
844 make="gmake"
845 strip="strip -d"
847 Darwin)
848 cc="cc"
849 video4linux="no"
850 video4linux2="no"
851 audio_oss="no"
852 dv1394="no"
853 need_memalign="no"
854 SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
855 VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
856 extralibs=""
857 strip="strip -x"
858 FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
859 SLIBSUF=".dylib"
860 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
861 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
862 FFSERVERLDFLAGS=-Wl,-bind_at_load
864 MINGW32*)
865 # Note: the rest of the mingw32 config is done afterwards as mingw32
866 # can be forced on the command line for Linux cross compilation.
867 mingw32="yes"
869 CYGWIN*)
870 targetos=CYGWIN
871 shlibdir="$bindir"
872 video4linux="no"
873 video4linux2="no"
874 audio_oss="yes"
875 dv1394="no"
876 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
877 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
878 extralibs=""
879 EXESUF=".exe"
880 SLIBPREF="cyg"
881 SLIBSUF=".dll"
882 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
883 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
884 SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
886 Linux)
887 LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
889 IRIX*)
890 targetos=IRIX
891 ranlib="echo ignoring ranlib"
892 video4linux="no"
893 video4linux2="no"
894 audio_oss="no"
895 make="gmake"
897 OS/2)
898 TMPE=$TMPE".exe"
899 ar="emxomfar -p128"
900 ranlib="echo ignoring ranlib"
901 strip="echo ignoring strip"
902 add_cflags "-Zomf"
903 FFLDFLAGS="-Zomf -Zstack 16384 -s"
904 SHFLAGS="-Zdll -Zomf"
905 FFSERVERLDFLAGS=""
906 LIBPREF=""
907 LIBSUF=".lib"
908 SLIBPREF=""
909 SLIBSUF=".dll"
910 EXESUF=".exe"
911 extralibs=""
912 pkg_requires=""
913 video4linux="no"
914 video4linux2="no"
915 audio_oss="no"
916 dv1394="no"
917 ffserver="no"
918 vhook="no"
919 os2="yes"
922 targetos="${targetos}-UNKNOWN"
924 esac
926 # find source path
927 source_path="`dirname \"$0\"`"
928 source_path_used="yes"
929 if test -z "$source_path" -o "$source_path" = "." ; then
930 source_path="`pwd`"
931 source_path_used="no"
932 else
933 source_path="`cd \"$source_path\"; pwd`"
934 echo "$source_path" | grep -q '[[:blank:]]' &&
935 die "Out of tree builds are impossible with whitespace in source path."
938 if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
939 show_help
942 FFMPEG_CONFIGURATION=" "
943 for opt do
944 FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
945 done
947 ENCODER_LIST=`sed -n 's/^[^#]*ENC.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
948 DECODER_LIST=`sed -n 's/^[^#]*DEC.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
949 PARSER_LIST=`sed -n 's/^[^#]*PARSER.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
950 MUXER_LIST=`sed -n 's/^[^#]*_MUX.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
951 DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
953 enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST
955 for opt do
956 optval="${opt#*=}"
957 case "$opt" in
958 --log)
960 --log=*) logging="$optval"
962 --prefix=*) PREFIX="$optval"
964 --libdir=*) libdir="$optval"
966 --shlibdir=*) shlibdir="$optval"
968 --incdir=*) incdir="$optval"
970 --mandir=*) mandir="$optval"
972 --source-path=*) source_path="$optval"
974 --cross-prefix=*) cross_prefix="$optval"
976 --cross-compile) cross_compile=yes
978 --cc=*) cc="$optval"
980 --make=*) make="$optval"
982 --extra-cflags=*) add_cflags "$optval"
984 --extra-ldflags=*) add_ldflags "$optval"
986 --extra-libs=*) add_extralibs "$optval"
988 --build-suffix=*) BUILDSUF="$optval"
990 --arch=*) arch="$optval"
992 --cpu=*) cpu="$optval"
994 --powerpc-perf-enable) powerpc_perf="yes"
996 --disable-mmx) mmx="no"
998 --disable-armv5te) armv5te="no"
1000 --disable-armv6) armv6="no"
1002 --disable-iwmmxt) iwmmxt="no"
1004 --disable-altivec) altivec="no"
1006 --enable-gprof) gprof="yes"
1008 --disable-v4l) video4linux="no"
1010 --disable-v4l2) video4linux2="no"
1012 --disable-bktr) bktr="no"
1014 --disable-audio-oss) audio_oss="no"
1016 --disable-audio-beos) audio_beos="no"
1018 --disable-dv1394) dv1394="no"
1020 --disable-network) network="no"; ffserver="no"
1022 --disable-ipv6) ipv6="no";
1024 --disable-zlib) zlib="no"
1026 --enable-a52) liba52="yes"
1028 --enable-a52bin) liba52bin="yes"
1030 --enable-dts) libdts="yes"
1032 --enable-pp) pp="yes"
1034 --enable-libgsm) libgsm="yes"
1036 --enable-mp3lame) libmp3lame="yes"
1038 --enable-libnut) libnut="yes"
1040 --enable-libogg) libogg="yes"
1041 pkg_requires="$pkg_requires ogg >= 1.1"
1043 --enable-libtheora) libtheora="yes"
1044 pkg_requires="$pkg_requires theora"
1046 --enable-vorbis) libvorbis="yes"
1047 pkg_requires="$pkg_requires vorbis vorbisenc"
1049 --enable-faad) libfaad="yes"
1051 --enable-faadbin) libfaadbin="yes"
1053 --enable-faac) libfaac="yes"
1055 --enable-xvid) xvid="yes"
1057 --enable-x264) x264="yes"
1059 --enable-avisynth) avisynth="yes";
1061 --enable-x11grab) x11grab="yes";
1063 --enable-dc1394) dc1394="yes"
1064 pkg_requires="$pkg_requires libraw1394"
1066 --disable-vhook) vhook="no"
1068 --enable-mingw32) mingw32="yes"
1070 --enable-mingwce) wince="yes"
1072 --enable-static) lstatic="yes"
1074 --disable-static) lstatic="no"
1076 --enable-shared) lshared="yes"
1078 --disable-shared) lshared="no"
1080 --disable-debug) debug="no"
1082 --disable-opts) optimize="no"
1084 --enable-extra-warnings) extrawarnings="yes"
1086 --disable-mpegaudio-hp) mpegaudio_hp="no"
1088 --disable-protocols) protocols="no"; network="no"; ffserver="no"
1090 --disable-ffmpeg) ffmpeg="no"
1092 --disable-ffserver) ffserver="no"
1094 --disable-ffplay) ffplay="no"
1096 --enable-small) optimize="small"
1098 --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no"
1100 --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no"
1102 --enable-amr_wb) amr="yes"; amr_wb="yes"
1104 --enable-amr_if2) amr="yes"; amr_if2="yes"
1106 --enable-sunmlib) mlib="yes"
1108 --enable-pthreads) pthreads="yes"
1110 --enable-w32threads) w32threads="yes"
1112 --enable-beosthreads) beosthreads="yes"
1114 --enable-os2threads) os2threads="yes"
1116 --enable-swscaler) swscaler="yes"
1118 --enable-gpl) gpl="yes"
1120 --enable-memalign-hack) memalign_hack="yes"
1122 --disable-strip) dostrip="no"
1124 --enable-encoder=*) enable ${optval}_encoder
1126 --enable-decoder=*) enable ${optval}_decoder
1128 --disable-encoder=*) disable ${optval}_encoder
1130 --disable-decoder=*) disable ${optval}_decoder
1132 --disable-encoders) disable $ENCODER_LIST
1134 --disable-decoders) disable $DECODER_LIST
1136 --enable-muxer=*) enable ${optval}_muxer
1138 --disable-muxer=*) disable ${optval}_muxer
1140 --disable-muxers) disable $MUXER_LIST; ffserver="no"
1142 --enable-demuxer=*) enable ${optval}_demuxer
1144 --disable-demuxer=*) disable ${optval}_demuxer
1146 --disable-demuxers) disable $DEMUXER_LIST
1148 --enable-parser=*) enable ${optval}_parser
1150 --disable-parser=*) disable ${optval}_parser
1152 --disable-parsers) disable $PARSER_LIST
1154 --help) show_help
1157 echo "Unknown option \"$opt\"."
1158 echo "See $0 --help for available options."
1159 exit 1
1161 esac
1162 done
1164 if ! disabled logging ; then
1165 enabled logging || logfile="$logging"
1166 echo "# $0 $@" >$logfile
1167 set >>$logfile
1168 else
1169 logfile=/dev/null
1172 if enabled_any mingw32 wince; then
1173 if enabled_all lshared lstatic; then
1174 cat <<EOF
1175 You can only build one library type at once on MinGW.
1176 Specify --disable-static --enable-shared to only build
1177 the shared libraries. To build only the static libraries
1178 you do not need to pass additional options.
1180 exit 1
1182 video4linux="no"
1183 video4linux2="no"
1184 audio_oss="no"
1185 dv1394="no"
1186 dc1394="no"
1187 ffserver="no"
1188 network="no"
1189 if enabled wince; then
1190 protocols="no"
1192 SLIBPREF=""
1193 SLIBSUF=".dll"
1194 EXESUF=".exe"
1195 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1196 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
1197 SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
1198 SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
1199 SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc"
1202 # Combine FFLDFLAGS and the LDFLAGS environment variable.
1203 LDFLAGS="$FFLDFLAGS $LDFLAGS"
1205 test -n "$cross_prefix" && cross_compile=yes
1206 cc="${cross_prefix}${cc}"
1207 ar="${cross_prefix}${ar}"
1208 ranlib="${cross_prefix}${ranlib}"
1209 strip="${cross_prefix}${strip}"
1211 # we need to build at least one lib type
1212 if disabled_all lstatic lshared; then
1213 cat <<EOF
1214 At least one library type must be built.
1215 Specify --enable-static to build the static libraries or --enable-shared to
1216 build the shared libraries as well. To only build the shared libraries specify
1217 --disable-static in addition to --enable-shared.
1219 exit 1;
1222 if enabled libtheora && disabled libogg; then
1223 die "libogg must be enabled to enable libtheora."
1226 if enabled libvorbis && disabled libogg; then
1227 die "libogg must be enabled to enable libvorbis."
1230 if disabled gpl ; then
1231 if enabled pp; then
1232 die "The Postprocessing code is under GPL and --enable-gpl is not specified."
1235 if enabled_any liba52 liba52bin ; then
1236 die "liba52 is under GPL and --enable-gpl is not specified."
1239 if enabled xvid; then
1240 die "libxvidcore is under GPL and --enable-gpl is not specified."
1243 if enabled x264; then
1244 die "x264 is under GPL and --enable-gpl is not specified."
1247 if enabled libdts; then
1248 die "libdts is under GPL and --enable-gpl is not specified."
1251 if enabled_any libfaad libfaadbin ; then
1252 if check_header faad.h; then
1253 check_cc << EOF
1254 #include <faad.h>
1255 #ifndef FAAD2_VERSION
1256 ok faad1
1257 #endif
1258 int main( void ) { return 0; }
1260 if test $? = 0 ; then
1261 die "FAAD2 is under GPL and --enable-gpl is not specified."
1263 else
1264 libfaad="no"
1265 libfaadbin="no"
1266 echo "FAAD test failed."
1270 if enabled x11grab; then
1271 die "The X11 grabber is under GPL and --enable-gpl is not specified."
1274 if enabled swscaler; then
1275 die "The software scaler is under GPL and --enable-gpl is not specified."
1279 # compute MMX state
1280 if test $mmx = "default"; then
1281 if test $arch = "x86_32" -o $arch = "x86_64"; then
1282 mmx="yes"
1283 else
1284 mmx="no"
1288 test -z "$need_memalign" && need_memalign="$mmx"
1290 #Darwin CC versions
1291 needmdynamicnopic="no"
1292 if test $targetos = Darwin; then
1293 if test -n "`$cc -v 2>&1 | grep xlc`"; then
1294 add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1295 else
1296 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1297 case "$gcc_version" in
1298 *2.95*)
1299 add_cflags "-no-cpp-precomp -pipe"
1301 *[34].*)
1302 add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
1303 if disabled lshared; then
1304 needmdynamicnopic="yes"
1308 add_cflags "-no-cpp-precomp -pipe"
1309 if disabled lshared; then
1310 needmdynamicnopic="yes"
1313 esac
1317 if ! disabled optimize ; then
1318 add_cflags "-fomit-frame-pointer"
1321 # Can only do AltiVec on PowerPC
1322 if test $altivec = "default"; then
1323 if test $arch = "powerpc"; then
1324 altivec="yes"
1325 else
1326 altivec="no"
1330 # Add processor-specific flags
1331 POWERPCMODE="32bits"
1332 if test $cpu != "generic"; then
1333 warn_altivec_enabled(){
1334 enabled altivec && echo "WARNING: Tuning for $1 but AltiVec enabled.";
1336 warn_altivec_disabled(){
1337 disabled altivec && echo "WARNING: Tuning for $1 but AltiVec disabled.";
1339 case $cpu in
1340 601|ppc601|PowerPC601)
1341 add_cflags "-mcpu=601"
1342 warn_altivec_enabled PPC601
1344 603*|ppc603*|PowerPC603*)
1345 add_cflags "-mcpu=603"
1346 warn_altivec_enabled PPC603
1348 604*|ppc604*|PowerPC604*)
1349 add_cflags "-mcpu=604"
1350 warn_altivec_enabled PPC604
1352 G3|g3|75*|ppc75*|PowerPC75*)
1353 add_cflags "-mcpu=750 -mpowerpc-gfxopt"
1354 warn_altivec_enabled PPC75x
1356 G4|g4|745*|ppc745*|PowerPC745*)
1357 add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
1358 warn_altivec_disabled PPC745x
1360 74*|ppc74*|PowerPC74*)
1361 add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
1362 warn_altivec_disabled PPC74xx
1364 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1365 add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1366 warn_altivec_disabled PPC970
1367 POWERPCMODE="64bits"
1369 # targets that do NOT support conditional mov (cmov)
1370 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1371 add_cflags "-march=$cpu"
1372 cmov="no"
1374 # targets that do support conditional mov (cmov)
1375 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
1376 add_cflags "-march=$cpu"
1377 cmov="yes"
1378 fast_cmov="yes"
1380 # targets that do support conditional mov but on which it's slow
1381 pentium4|prescott|nocona)
1382 add_cflags "-march=$cpu"
1383 cmov="yes"
1384 fast_cmov="no"
1386 sparc64)
1387 add_cflags "-mcpu=v9"
1390 echo "WARNING: Unknown CPU \"$cpu\", ignored."
1392 esac
1395 # make sure we can execute files in $TMPDIR
1396 cat >$TMPE 2>>$logfile <<EOF
1397 #! /bin/sh
1399 chmod +x $TMPE >>$logfile 2>&1
1400 if ! $TMPE >>$logfile 2>&1; then
1401 cat <<EOF
1402 Unable to create and execute files in $TMPDIR1. Set the TMPDIR environment
1403 variable to another directory and make sure that $TMPDIR1 is not mounted
1404 noexec.
1406 die "Sanity test failed."
1408 rm $TMPE
1410 # compiler sanity check
1411 check_exec <<EOF
1412 int main(){
1413 return 0;
1416 if test "$?" != 0; then
1417 echo "$cc is unable to create an executable file."
1418 if test -z "$cross_prefix" -a "$cross_compile" = no; then
1419 echo "If $cc is a cross-compiler, use the --cross-compile option."
1420 echo "Only do this if you know what cross compiling means."
1422 die "C compiler test failed."
1425 # check for assembler specific support
1427 if test $arch = "powerpc"; then
1428 check_cc <<EOF && dcbzl=yes
1429 int main(void) {
1430 register long zero = 0;
1431 char data[1024];
1432 asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1433 return 0;
1438 # check for SIMD availability
1440 # AltiVec flags: The FSF version of GCC differs from the Apple version
1441 if test $arch = "powerpc"; then
1442 if enabled altivec; then
1443 if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1444 add_cflags "-faltivec"
1445 else
1446 add_cflags "-maltivec -mabi=altivec"
1451 check_header altivec.h
1453 # check if our compiler supports Motorola AltiVec C API
1454 if enabled altivec; then
1455 if enabled altivec_h; then
1456 inc_altivec_h="#include <altivec.h>"
1457 else
1458 inc_altivec_h=
1460 check_cc <<EOF || altivec=no
1461 $inc_altivec_h
1462 int main(void) {
1463 vector signed int v1, v2, v3;
1464 v1 = vec_add(v2,v3);
1465 return 0;
1470 # check armv5te instructions support
1471 if test $armv5te = "default" -a $arch = "armv4l"; then
1472 armv5te=no
1473 check_cc <<EOF && armv5te=yes
1474 int main(void) {
1475 __asm__ __volatile__ ("qadd r0, r0, r0");
1480 if test $armv6 = "default" -a $arch = "armv4l"; then
1481 check_cc <<EOF && armv6=yes || armv6=no
1482 int main(void) {
1483 __asm__ __volatile__ ("sadd16 r0, r0, r0");
1488 # check iwmmxt support
1489 if test $iwmmxt = "default" -a $arch = "armv4l"; then
1490 iwmmxt=no
1491 check_cc <<EOF && iwmmxt=yes
1492 int main(void) {
1493 __asm__ __volatile__ ("wunpckelub wr6, wr4");
1498 # mmi only available on mips
1499 if test $mmi = "default"; then
1500 if test $arch = "mips"; then
1501 mmi="yes"
1502 else
1503 mmi="no"
1507 # check if our compiler supports mmi
1508 enabled mmi && check_cc <<EOF || mmi="no"
1509 int main(void) {
1510 __asm__ ("lq \$2, 0(\$2)");
1511 return 0;
1515 # ---
1516 # big/little-endian test
1517 if disabled cross_compile; then
1518 check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1519 #include <inttypes.h>
1520 int main(int argc, char ** argv){
1521 volatile uint32_t i=0x01234567;
1522 return (*((uint8_t*)(&i))) == 0x67;
1525 else
1526 # programs cannot be launched if cross compiling, so make a static guess
1527 if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
1528 bigendian="yes"
1532 # ---
1533 # check availability of some header files
1535 check_header malloc.h
1536 check_func memalign
1538 if disabled_all memalign memalign_hack && enabled need_memalign ; then
1539 die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1542 check_header byteswap.h
1544 check_func inet_aton
1545 check_func localtime_r
1546 enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
1548 # check for some common methods of building with pthread support
1549 # do this before the optional library checks as some of them require pthreads
1550 if enabled pthreads; then
1551 if check_func pthread_create; then
1553 elif check_func pthread_create -pthread; then
1554 add_cflags -pthread
1555 add_ldflags -pthread
1556 elif check_func pthread_create -pthreads; then
1557 add_cflags -pthreads
1558 add_ldflags -pthreads
1559 elif ! check_lib pthread.h pthread_create -lpthread; then
1560 die "ERROR: can't find pthreads library"
1564 for thread in pthreads beosthreads os2threads w32threads; do
1565 if enabled $thread; then
1566 if ! disabled thread_type ; then
1567 die "ERROR: Only one thread type must be selected."
1568 else
1569 thread_type="$thread"
1572 done
1574 # these are off by default, so fail if requested and not available
1575 enabled libdts && require libdts dts.h dts_init -ldts -lm
1576 enabled libgsm && require libgsm gsm.h gsm_create -lgsm
1577 enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1578 enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
1579 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1580 enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg
1581 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
1582 enabled xvid && require XviD xvid.h xvid_global -lxvidcore
1583 enabled x264 && require x264 x264.h x264_encoder_open -lx264
1584 enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
1585 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1587 # Ugh, libfaac uses stdcall calling convention on win32 so we can't use
1588 # the generic test functions
1589 if enabled libfaac; then
1590 save_flags
1591 temp_extralibs -lfaac
1592 check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
1593 #include <stdint.h>
1594 #include <faac.h>
1595 int main(){
1596 char *id, *cpr;
1597 faacEncGetVersion(&id, &cpr);
1598 return 0;
1601 restore_flags
1604 # Ugh, recent faad2 versions have renamed all functions and #define the
1605 # old names in faad.h. Generic tests won't work.
1606 if enabled libfaad; then
1607 save_flags
1608 temp_extralibs -lfaad
1609 check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
1610 #include <faad.h>
1611 int main(){
1612 faacDecOpen();
1613 return 0;
1616 restore_flags
1619 # Ugh, avisynth uses WINAPI calls. Generic tests won't work.
1620 if enabled avisynth; then
1621 save_flags
1622 temp_extralibs -lvfw32
1623 check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
1624 #include <windows.h>
1625 #include <vfw.h>
1626 int main(){
1627 AVIFileInit();
1628 return 0;
1631 restore_flags
1635 # test for lrintf in math.h
1636 check_exec <<EOF && lrintf=yes || lrintf=no
1637 #define _ISOC9X_SOURCE 1
1638 #include <math.h>
1639 int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1642 _restrict=
1643 for restrict_keyword in restrict __restrict__ __restrict; do
1644 check_cc <<EOF && _restrict=$restrict_keyword && break
1645 void foo(char * $restrict_keyword p);
1647 done
1649 # dlopen/dlfcn.h probing
1651 check_header dlfcn.h
1653 if check_func dlopen; then
1654 ldl=
1655 elif check_func dlopen -ldl; then
1656 ldl=-ldl
1659 if test "$vhook" = "default"; then
1660 vhook="$dlopen"
1663 if enabled_any vhook liba52bin libfaadbin; then
1664 add_extralibs $ldl
1667 if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
1668 vhook="no"
1669 echo
1670 echo "At the moment vhooks don't work on Cygwin static builds."
1671 echo "Patches welcome."
1672 echo
1675 if enabled vhook; then
1676 check_ldflags -rdynamic
1677 check_ldflags -export-dynamic
1680 if enabled audio_beos; then
1681 add_extralibs "-lmedia -lbe"
1684 ##########################################
1685 # imlib check
1687 temp_extralibs -lImlib2
1688 check_ld <<EOF && imlib2=yes || imlib2=no
1689 #include <X11/Xlib.h>
1690 #include <Imlib2.h>
1691 int main( void ) { return (int) imlib_load_font("foo"); }
1693 restore_flags
1695 ##########################################
1696 # FreeType check
1698 freetype2=no
1699 if test "x$targetos" != "xBeOS"; then
1700 if (freetype-config --version) >/dev/null 2>&1 ; then
1701 temp_cflags `freetype-config --cflags`
1702 temp_extralibs `freetype-config --libs`
1703 check_ld <<EOF && freetype2=yes
1704 #include <ft2build.h>
1705 int main( void ) { return (int) FT_Init_FreeType(0); }
1707 restore_flags
1711 ##########################################
1712 # SDL check
1714 sdl_too_old=no
1715 sdl=no
1716 SDL_CONFIG="${cross_prefix}sdl-config"
1717 if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1718 temp_cflags `"${SDL_CONFIG}" --cflags`
1719 temp_extralibs `"${SDL_CONFIG}" --libs`
1720 check_ld <<EOF
1721 #include <SDL.h>
1722 #undef main /* We don't want SDL to override our main() */
1723 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1725 if test $? = 0; then
1726 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1727 if test "$_sdlversion" -lt 121 ; then
1728 sdl_too_old=yes
1729 else
1730 sdl=yes
1731 check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
1732 #include <SDL.h>
1733 int main(void){
1734 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1735 int w = vi->current_w;
1736 return 0;
1741 restore_flags
1744 enabled sdl || ffplay=no
1746 ##########################################
1747 # texi2html check
1749 texi2html=no
1750 if (texi2html -version) >/dev/null 2>&1; then
1751 texi2html=yes
1754 ##########################################
1755 # IPv6 check
1757 enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1758 #include <sys/types.h>
1759 #include <sys/socket.h>
1760 #include <netinet/in.h>
1761 #include <netdb.h>
1762 int main( void ) {
1763 struct sockaddr_storage saddr;
1764 struct ipv6_mreq mreq6;
1765 getaddrinfo(0,0,0,0);
1766 getnameinfo(0,0,0,0,0,0,0);
1767 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1771 # check for video4linux2 --- V4L2_PIX_FMT_YUV420
1772 enabled video4linux2 && check_cc <<EOF || video4linux2="no"
1773 #include <sys/time.h>
1774 #include <asm/types.h>
1775 #include <linux/videodev2.h>
1776 int dummy = V4L2_PIX_FMT_YUV420;
1777 struct v4l2_buffer dummy1;
1780 # check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1781 if enabled bktr; then
1782 check_header dev/bktr/ioctl_meteor.h
1783 check_header dev/bktr/ioctl_bt848.h
1785 check_header machine/ioctl_meteor.h
1786 check_header machine/ioctl_bt848.h
1788 check_header dev/video/meteor/ioctl_meteor.h
1789 check_header dev/video/bktr/ioctl_bt848.h
1791 check_header dev/ic/bt8xx.h
1794 # Deal with the x11 frame grabber
1795 enabled x11grab &&
1796 enabled gpl &&
1797 enabled x11_grab_device_demuxer &&
1798 check_header X11/Xlib.h &&
1799 check_header X11/extensions/XShm.h &&
1800 check_func XOpenDisplay -lX11 &&
1801 check_func XShmCreateImage -lX11 -lXext &&
1802 add_extralibs -lX11 -lXext ||
1803 disable x11_grab_device_demuxer
1805 enabled debug && add_cflags -g
1807 # add some useful compiler flags if supported
1808 check_cflags -Wdeclaration-after-statement
1809 check_cflags -Wall
1810 check_cflags -Wno-switch
1811 check_cflags -Wdisabled-optimization
1812 check_cflags -Wpointer-arith
1813 check_cflags -Wredundant-decls
1814 check_cflags -Wno-pointer-sign
1815 enabled extrawarnings && check_cflags -Winline
1817 # add some linker flags
1818 check_ldflags $LDLATEFLAGS
1820 # not all compilers support -Os
1821 test "$optimize" = "small" && check_cflags -Os
1823 if enabled optimize; then
1824 if test -n "`$cc -v 2>&1 | grep xlc`"; then
1825 add_cflags "-O5"
1826 add_ldflags "-O5"
1827 else
1828 add_cflags "-O3"
1832 # PIC flags for shared library objects where they are needed
1833 if enabled lshared; then
1834 # LIBOBJFLAGS may have already been set in the OS configuration
1835 if test -z "$LIBOBJFLAGS" ; then
1836 case "$arch" in
1837 x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
1838 esac
1842 if enabled gprof; then
1843 add_cflags "-p"
1844 add_ldflags "-p"
1847 VHOOKCFLAGS="-fPIC $CFLAGS"
1848 enabled needmdynamicnopic && add_cflags -mdynamic-no-pic
1850 # find if .align arg is power-of-two or not
1851 if test $asmalign_pot = "unknown"; then
1852 asmalign_pot="no"
1853 echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1856 echo "install prefix $PREFIX"
1857 echo "source path $source_path"
1858 echo "C compiler $cc"
1859 echo "make $make"
1860 echo ".align is power-of-two $asmalign_pot"
1861 echo "ARCH $arch ($cpu)"
1862 if test "$BUILDSUF" != ""; then
1863 echo "build suffix $BUILDSUF"
1865 echo "big-endian $bigendian"
1866 if test $arch = "x86_32" -o $arch = "x86_64"; then
1867 echo "MMX enabled $mmx"
1868 echo "CMOV enabled $cmov"
1869 echo "CMOV is fast $fast_cmov"
1871 if test $arch = "armv4l"; then
1872 echo "ARMv5TE enabled $armv5te"
1873 echo "ARMv6 enabled $armv6"
1874 echo "IWMMXT enabled $iwmmxt"
1876 if test $arch = "mips"; then
1877 echo "MMI enabled $mmi"
1879 if test $arch = "powerpc"; then
1880 echo "AltiVec enabled $altivec"
1881 echo "dcbzl available $dcbzl"
1883 echo "gprof enabled $gprof"
1884 echo "debug symbols $debug"
1885 echo "strip symbols $dostrip"
1886 echo "optimize $optimize"
1887 echo "static $lstatic"
1888 echo "shared $lshared"
1889 echo "postprocessing support $pp"
1890 echo "software scaler enabled $swscaler"
1891 echo "video hooking $vhook"
1892 if enabled vhook; then
1893 echo "Imlib2 support $imlib2"
1894 echo "FreeType support $freetype2"
1896 echo "network support $network"
1897 if enabled network; then
1898 echo "IPv6 support $ipv6"
1900 echo "threading support $thread_type"
1901 echo "SDL support $sdl"
1902 if enabled sdl_too_old; then
1903 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1905 echo "Sun medialib support $mlib"
1906 echo "AVISynth enabled $avisynth"
1907 echo "liba52 support $liba52"
1908 echo "liba52 dlopened $liba52bin"
1909 echo "libdts support $libdts"
1910 echo "libfaac enabled $libfaac"
1911 echo "libfaad enabled $libfaad"
1912 echo "faadbin enabled $libfaadbin"
1913 echo "libgsm enabled $libgsm"
1914 echo "libmp3lame enabled $libmp3lame"
1915 echo "libnut enabled $libnut"
1916 echo "libogg enabled $libogg"
1917 echo "libtheora enabled $libtheora"
1918 echo "libvorbis enabled $libvorbis"
1919 echo "x264 enabled $x264"
1920 echo "XviD enabled $xvid"
1921 echo "zlib enabled $zlib"
1922 echo "AMR-NB float support $amr_nb"
1923 echo "AMR-NB fixed support $amr_nb_fixed"
1924 echo "AMR-WB float support $amr_wb"
1925 echo "AMR-WB IF2 support $amr_if2"
1926 if disabled gpl; then
1927 echo "License: LGPL"
1928 else
1929 echo "License: GPL"
1932 echo "Creating config.mak and config.h..."
1934 echo "# Automatically generated by configure - do not modify!" > config.mak
1935 echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1936 echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
1938 echo "PREFIX=$PREFIX" >> config.mak
1939 echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1940 echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1941 echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1942 echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1943 echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1944 echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1945 echo "MAKE=$make" >> config.mak
1946 echo "CC=$cc" >> config.mak
1947 echo "AR=$ar" >> config.mak
1948 echo "RANLIB=$ranlib" >> config.mak
1949 if enabled dostrip; then
1950 echo "STRIP=$strip" >> config.mak
1951 else
1952 echo "STRIP=echo ignoring strip" >> config.mak
1955 echo "OPTFLAGS=$CFLAGS" >> config.mak
1956 echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1957 echo "LDFLAGS=$LDFLAGS" >> config.mak
1958 echo "LDCONFIG=$LDCONFIG" >> config.mak
1959 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1960 echo "SHFLAGS=$SHFLAGS" >> config.mak
1961 echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1962 echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1963 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1964 echo "BUILD_STATIC=$lstatic" >> config.mak
1965 echo "BUILDSUF=$BUILDSUF" >> config.mak
1966 echo "LIBPREF=$LIBPREF" >> config.mak
1967 echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1968 if enabled lstatic; then
1969 echo "LIB=$LIB" >> config.mak
1970 else # Some Make complain if this variable does not exist.
1971 echo "LIB=" >> config.mak
1973 echo "SLIBPREF=$SLIBPREF" >> config.mak
1974 echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1975 echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1976 echo "TARGET_OS=$targetos" >> config.mak
1978 ucarch=`toupper $arch`
1979 echo "TARGET_ARCH_${ucarch}=yes" >> config.mak
1980 echo "#define ARCH_${ucarch} 1" >> $TMPH
1982 # special cases
1983 case "$arch" in
1984 x86_32|x86_64)
1985 echo "TARGET_ARCH_X86=yes" >> config.mak
1986 echo "#define ARCH_X86 1" >> $TMPH
1988 powerpc)
1989 if test "$POWERPCMODE" = "64bits"; then
1990 echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1992 if enabled powerpc_perf; then
1993 echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1996 sparc64)
1997 echo "TARGET_ARCH_SPARC=yes" >> config.mak
1998 echo "#define ARCH_SPARC 1" >> $TMPH
2000 esac
2002 if enabled bigendian; then
2003 echo "WORDS_BIGENDIAN=yes" >> config.mak
2004 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
2006 if enabled mmx; then
2007 echo "#define __CPU__ 586" >> $TMPH
2010 if enabled sdl; then
2011 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
2012 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
2014 if enabled texi2html; then
2015 echo "BUILD_DOC=yes" >> config.mak
2018 sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
2019 pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
2020 lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
2021 lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
2022 lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
2026 if enabled lshared; then
2027 echo "BUILD_SHARED=yes" >> config.mak
2028 echo "PIC=-fPIC -DPIC" >> config.mak
2029 echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
2030 echo "SPPVERSION=$pp_version" >> config.mak
2031 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
2032 echo "LAVCVERSION=$lavc_version" >> config.mak
2033 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
2034 echo "LAVFVERSION=$lavf_version" >> config.mak
2035 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
2036 echo "LAVUVERSION=$lavu_version" >> config.mak
2037 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
2038 echo "SWSVERSION=$sws_version" >> config.mak
2039 echo "SLIBNAME=${SLIBNAME}" >> config.mak
2040 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2041 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
2042 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
2043 echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
2045 echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
2046 echo "EXTRALIBS=$extralibs" >> config.mak
2048 enabled_any $ENCODER_LIST && enable encoders
2049 enabled_any $DECODER_LIST && enable decoders
2050 enabled_any $MUXER_LIST && enable muxers
2051 enabled_any $DEMUXER_LIST && enable demuxers
2053 enabled_any pthreads beosthreads os2threads w32threads && enable threads
2055 check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \
2056 $DEMUXER_LIST $MUXER_LIST
2058 print_config HAVE_ $TMPH config.mak $HAVE_LIST
2059 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
2060 print_config TARGET_ $TMPH config.mak $TARGET_LIST
2062 if test "$targetos" = "Darwin"; then
2063 echo "#define CONFIG_DARWIN 1" >> $TMPH
2066 echo "#define restrict $_restrict" >> $TMPH
2068 if test "$optimize" = "small"; then
2069 echo "#define always_inline" >> $TMPH
2070 echo "#define CONFIG_SMALL 1" >> $TMPH
2073 echo "SRC_PATH=\"$source_path\"" >> config.mak
2074 echo "SRC_PATH_BARE=$source_path" >> config.mak
2075 echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2077 if enabled amr_if2; then
2078 echo "AMR_CFLAGS=-DIF2=1" >> config.mak
2081 # Apparently it's not possible to portably echo a backslash.
2082 if enabled asmalign_pot; then
2083 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
2084 else
2085 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
2089 for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
2090 ucname="`toupper $codec`"
2091 config_name="CONFIG_$ucname"
2092 enabled_name="ENABLE_$ucname"
2093 if enabled $codec; then
2094 echo "#define $config_name 1" >> $TMPH
2095 echo "#define $enabled_name 1" >> $TMPH
2096 echo "$config_name=yes" >> config.mak
2097 else
2098 echo "#define $enabled_name 0" >> $TMPH
2100 done
2102 # Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
2103 if ! cmp -s $TMPH config.h; then
2104 mv -f $TMPH config.h
2105 else
2106 echo "config.h is unchanged"
2109 rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
2111 # build tree in object directory if source path is different from current one
2112 if enabled source_path_used; then
2113 DIRS="\
2114 doc \
2115 libavformat \
2116 libavcodec \
2117 libavcodec/alpha \
2118 libavcodec/armv4l \
2119 libavcodec/bfin \
2120 libavcodec/i386 \
2121 libavcodec/sparc \
2122 libavcodec/mlib \
2123 libavcodec/ppc \
2124 libavcodec/liba52 \
2125 libavcodec/amr \
2126 libavcodec/amr_float \
2127 libavcodec/amrwb_float \
2128 libpostproc \
2129 libavutil \
2130 libswscale \
2131 tests \
2132 vhook \
2134 FILES="\
2135 Makefile \
2136 common.mak \
2137 libavformat/Makefile \
2138 libavcodec/Makefile \
2139 libpostproc/Makefile \
2140 libavutil/Makefile \
2141 libswscale/Makefile \
2142 tests/Makefile \
2143 vhook/Makefile \
2144 doc/Makefile \
2145 doc/texi2pod.pl \
2147 for dir in $DIRS ; do
2148 mkdir -p $dir
2149 done
2150 for f in $FILES ; do
2151 ln -sf "$source_path/$f" $f
2152 done
2156 # build pkg-config files
2157 # FIXME: libdir and includedir are hardcoded and may differ from the real path.
2159 pkgconfig_generate(){
2160 name=$1
2161 comment=$2
2162 version=$3
2163 libs=$4
2164 requires=$5
2165 include=$6
2166 cat <<EOF >$name.pc
2167 prefix=$PREFIX
2168 exec_prefix=\${prefix}
2169 libdir=\${exec_prefix}/lib
2170 includedir=\${prefix}/include
2172 Name: $name
2173 Description: $comment
2174 Version: $version
2175 Requires: $requires
2176 Conflicts:
2177 Libs: -L\${libdir} $libs
2178 Cflags: -I\${includedir} -I\${includedir}/$include
2182 pkgconfig_generate_uninstalled(){
2183 name=$1
2184 shortname=${name#lib}
2185 comment=$2
2186 version=$3
2187 libs=$4
2188 requires=$5
2189 cat <<EOF >$name-uninstalled.pc
2190 prefix=
2191 exec_prefix=
2192 libdir=\${pcfiledir}/$name
2193 includedir=\${pcfiledir}/$name
2195 Name: $name
2196 Description: $comment
2197 Version: $version
2198 Requires: $requires
2199 Conflicts:
2200 Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
2201 Cflags: -I\${includedir}
2205 pkgconfig_generate libavutil "FFmpeg utility library" "$lavu_version" -lavutil "" ffmpeg
2206 pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$lavu_version"
2208 pkgconfig_generate libavcodec "FFmpeg codec library" "$lavc_version" "-lavcodec $extralibs" "$pkg_requires libavutil = $lavu_version" ffmpeg
2209 pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$lavc_version" "$extralibs" "$pkg_requires libavutil = $lavu_version"
2211 pkgconfig_generate libavformat "FFmpeg container format library" "$lavf_version" "-lavformat $extralibs" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2212 pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$lavf_version" "$extralibs" "$pkg_requires libavcodec = $lavc_version"
2214 if enabled pp; then
2215 pkgconfig_generate libpostproc "FFmpeg post processing library" "$pp_version" -lpostproc "" postproc
2216 pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$pp_version"
2219 if enabled swscaler; then
2220 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "-lswscale" "libavutil = $lavu_version" swscale
2221 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
2222 else
2223 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" swscale
2224 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
2225 apply libswscale.pc sed s/^Libs:.*$/Libs:/
2226 apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/