Remove MinGW install path special-casing.
[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"
842 ;;
843 --libdir=*) libdir="$optval"
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 fi
1070
1071 # Combine FFLDFLAGS and the LDFLAGS environment variable.
1072 LDFLAGS="$FFLDFLAGS $LDFLAGS"
1073
1074 test -n "$cross_prefix" && cross_compile=yes
1075 cc="${cross_prefix}${cc}"
1076 ar="${cross_prefix}${ar}"
1077 ranlib="${cross_prefix}${ranlib}"
1078 strip="${cross_prefix}${strip}"
1079
1080 # we need to build at least one lib type
1081 if test "$lstatic" = "no" && test "$lshared" = "no" ; then
1082 cat <<EOF
1083 At least one library type must be built.
1084 Specify --enable-static to build the static libraries or --enable-shared to
1085 build the shared libraries as well. To only build the shared libraries specify
1086 --disable-static in addition to --enable-shared.
1087 EOF
1088 exit 1;
1089 fi
1090
1091 if test "$libvorbis" = "yes" ; then
1092 if test "$libogg" = "no"; then
1093 echo "libogg must be enabled to enable Vorbis."
1094 fail="yes"
1095 fi
1096 fi
1097
1098 if test "$gpl" != "yes"; then
1099 if test "$pp" != "no"; then
1100 echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
1101 fail="yes"
1102 fi
1103
1104 if test "$a52" != "no" -o "$a52bin" != "no"; then
1105 echo "liba52 is under GPL and --enable-gpl is not specified."
1106 fail="yes"
1107 fi
1108
1109 if test "$xvid" != "no"; then
1110 echo "libxvidcore is under GPL and --enable-gpl is not specified."
1111 fail="yes"
1112 fi
1113
1114 if test "$x264" != "no"; then
1115 echo "x264 is under GPL and --enable-gpl is not specified."
1116 fail="yes"
1117 fi
1118
1119 if test "$dts" != "no"; then
1120 echo "libdts is under GPL and --enable-gpl is not specified."
1121 fail="yes"
1122 fi
1123
1124 if test "$faad" != "no" -o "$faadbin" != "no"; then
1125 if check_header faad.h; then
1126 check_cc << EOF
1127 #include <faad.h>
1128 #ifndef FAAD2_VERSION
1129 ok faad1
1130 #endif
1131 int main( void ) { return 0; }
1132 EOF
1133 if test $? = 0 ; then
1134 echo "FAAD2 is under GPL and --enable-gpl is not specified."
1135 fail="yes"
1136 fi
1137 else
1138 faad="no"
1139 faadbin="no"
1140 echo "FAAD test failed."
1141 fi
1142 fi
1143
1144 if test "$swscaler" != "no"; then
1145 echo "The software scaler is under GPL and --enable-gpl is not specified."
1146 fail="yes"
1147 fi
1148 fi
1149
1150 if test "$fail" = "yes"; then
1151 exit 1
1152 fi
1153
1154 # compute MMX state
1155 if test $mmx = "default"; then
1156 if test $arch = "x86_32" -o $arch = "x86_64"; then
1157 mmx="yes"
1158 else
1159 mmx="no"
1160 fi
1161 fi
1162
1163 #Darwin CC versions
1164 needmdynamicnopic="no"
1165 if test $targetos = Darwin; then
1166 if test -n "`$cc -v 2>&1 | grep xlc`"; then
1167 add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1168 else
1169 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1170 case "$gcc_version" in
1171 *2.95*)
1172 add_cflags "-no-cpp-precomp -pipe"
1173 ;;
1174 *[34].*)
1175 add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
1176 if test "$lshared" = no; then
1177 needmdynamicnopic="yes"
1178 fi
1179 ;;
1180 *)
1181 add_cflags "-no-cpp-precomp -pipe"
1182 if test "$lshared" = no; then
1183 needmdynamicnopic="yes"
1184 fi
1185 ;;
1186 esac
1187 fi
1188 fi
1189
1190 if test $optimize != "no"; then
1191 add_cflags "-fomit-frame-pointer"
1192 fi
1193
1194 # Can only do AltiVec on PowerPC
1195 if test $altivec = "default"; then
1196 if test $arch = "powerpc"; then
1197 altivec="yes"
1198 else
1199 altivec="no"
1200 fi
1201 fi
1202
1203 # Add processor-specific flags
1204 POWERPCMODE="32bits"
1205 if test $cpu != "generic"; then
1206 case $cpu in
1207 601|ppc601|PowerPC601)
1208 add_cflags "-mcpu=601"
1209 if test $altivec = "yes"; then
1210 echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
1211 fi
1212 ;;
1213 603*|ppc603*|PowerPC603*)
1214 add_cflags "-mcpu=603"
1215 if test $altivec = "yes"; then
1216 echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
1217 fi
1218 ;;
1219 604*|ppc604*|PowerPC604*)
1220 add_cflags "-mcpu=604"
1221 if test $altivec = "yes"; then
1222 echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
1223 fi
1224 ;;
1225 G3|g3|75*|ppc75*|PowerPC75*)
1226 add_cflags "-mcpu=750 -mpowerpc-gfxopt"
1227 if test $altivec = "yes"; then
1228 echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
1229 fi
1230 ;;
1231 G4|g4|745*|ppc745*|PowerPC745*)
1232 add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
1233 if test $altivec = "no"; then
1234 echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
1235 fi
1236 ;;
1237 74*|ppc74*|PowerPC74*)
1238 add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
1239 if test $altivec = "no"; then
1240 echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
1241 fi
1242 ;;
1243 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1244 add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1245 if test $altivec = "no"; then
1246 echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
1247 fi
1248 POWERPCMODE="64bits"
1249 ;;
1250 # targets that do NOT support conditional mov (cmov)
1251 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1252 add_cflags "-march=$cpu"
1253 cmov="no"
1254 ;;
1255 # targets that do support conditional mov (cmov)
1256 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx)
1257 add_cflags "-march=$cpu"
1258 cmov="yes"
1259 cmov_is_fast="yes"
1260 ;;
1261 # targets that do support conditional mov but on which it's slow
1262 pentium4|prescott|nocona)
1263 add_cflags "-march=$cpu"
1264 cmov="yes"
1265 cmov_is_fast="no"
1266 ;;
1267 sparc64)
1268 add_cflags "-mcpu=v9"
1269 ;;
1270 *)
1271 echo "WARNING: Unknown CPU \"$cpu\", ignored."
1272 ;;
1273 esac
1274 fi
1275
1276 # make sure we can execute files in $TMPDIR
1277 cat >$TMPE 2>>$logfile <<EOF
1278 #! /bin/sh
1279 EOF
1280 chmod +x $TMPE >>$logfile 2>&1
1281 if ! $TMPE >>$logfile 2>&1; then
1282 cat <<EOF
1283 Unable to create and execute files in $TMPDIR1. Set the TMPDIR environment
1284 variable to another directory and make sure that $TMPDIR1 is not mounted
1285 noexec.
1286 EOF
1287 die "Sanity test failed."
1288 fi
1289 rm $TMPE
1290
1291 # compiler sanity check
1292 check_exec <<EOF
1293 int main(){
1294 return 0;
1295 }
1296 EOF
1297 if test "$?" != 0; then
1298 echo "$cc is unable to create an executable file."
1299 if test -z "$cross_prefix" -a "$cross_compile" = no; then
1300 echo "If $cc is a cross-compiler, use the --cross-compile option."
1301 echo "Only do this if you know what cross compiling means."
1302 fi
1303 die "C compiler test failed."
1304 fi
1305
1306 # check for assembler specific support
1307
1308 if test $arch = "powerpc"; then
1309 check_cc <<EOF && dcbzl=yes
1310 int main(void) {
1311 register long zero = 0;
1312 char data[1024];
1313 asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1314 return 0;
1315 }
1316 EOF
1317 fi
1318
1319 # check for SIMD availability
1320
1321 # AltiVec flags: The FSF version of GCC differs from the Apple version
1322 if test $arch = "powerpc"; then
1323 if test $altivec = "yes"; then
1324 if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
1325 add_cflags "-faltivec"
1326 else
1327 add_cflags "-maltivec -mabi=altivec"
1328 fi
1329 fi
1330 fi
1331
1332 check_header altivec.h
1333
1334 # check if our compiler supports Motorola AltiVec C API
1335 if test $altivec = "yes"; then
1336 if test $altivec_h = "yes"; then
1337 inc_altivec_h="#include <altivec.h>"
1338 else
1339 inc_altivec_h=
1340 fi
1341 check_cc <<EOF || altivec=no
1342 $inc_altivec_h
1343 int main(void) {
1344 vector signed int v1, v2, v3;
1345 v1 = vec_add(v2,v3);
1346 return 0;
1347 }
1348 EOF
1349 fi
1350
1351 # check armv5te instructions support
1352 if test $armv5te = "default" -a $arch = "armv4l"; then
1353 armv5te=no
1354 check_cc <<EOF && armv5te=yes
1355 int main(void) {
1356 __asm__ __volatile__ ("qadd r0, r0, r0");
1357 }
1358 EOF
1359 fi
1360
1361 # check iwmmxt support
1362 if test $iwmmxt = "default" -a $arch = "armv4l"; then
1363 iwmmxt=no
1364 check_cc <<EOF && iwmmxt=yes
1365 int main(void) {
1366 __asm__ __volatile__ ("wunpckelub wr6, wr4");
1367 }
1368 EOF
1369 fi
1370
1371 # mmi only available on mips
1372 if test $mmi = "default"; then
1373 if test $arch = "mips"; then
1374 mmi="yes"
1375 else
1376 mmi="no"
1377 fi
1378 fi
1379
1380 # check if our compiler supports mmi
1381 enabled mmi && check_cc <<EOF || mmi="no"
1382 int main(void) {
1383 __asm__ ("lq \$2, 0(\$2)");
1384 return 0;
1385 }
1386 EOF
1387
1388 # ---
1389 # big/little-endian test
1390 if test "$cross_compile" = "no"; then
1391 check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
1392 #include <inttypes.h>
1393 int main(int argc, char ** argv){
1394 volatile uint32_t i=0x01234567;
1395 return (*((uint8_t*)(&i))) == 0x67;
1396 }
1397 EOF
1398 else
1399 # programs cannot be launched if cross compiling, so make a static guess
1400 if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
1401 bigendian="yes"
1402 fi
1403 fi
1404
1405 # ---
1406 # check availability of some header files
1407
1408 check_header malloc.h
1409 check_func memalign
1410
1411 if test "$memalign" = "no" -a "$mmx" = "yes" -a \
1412 "$memalign_hack" != "yes" -a "$targetos" != "Darwin" -a \
1413 "$targetos" != "FreeBSD" ; then
1414 die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1415 fi
1416
1417 check_header byteswap.h
1418
1419 check_func inet_aton
1420 check_func localtime_r
1421 enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
1422
1423 # check for some common methods of building with pthread support
1424 # do this before the optional library checks as some of them require pthreads
1425 if enabled pthreads; then
1426 if check_func pthread_create; then
1427 :
1428 elif check_func pthread_create -pthread; then
1429 add_cflags -pthread
1430 add_ldflags -pthread
1431 elif check_func pthread_create -pthreads; then
1432 add_cflags -pthreads
1433 add_ldflags -pthreads
1434 elif ! check_lib pthread.h pthread_create -lpthread; then
1435 die "ERROR: can't find pthreads library"
1436 fi
1437 fi
1438
1439 # these are off by default, so fail if requested and not available
1440 enabled dts && require libdts dts.h dts_init -ldts -lm
1441 enabled libgsm && require libgsm gsm.h gsm_create -lgsm
1442 enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1443 enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1444 enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg
1445 enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
1446 enabled xvid && require XviD xvid.h xvid_global -lxvidcore
1447 enabled x264 && require x264 x264.h x264_encoder_open -lx264
1448 enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
1449 enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1450
1451 # Ugh, faac uses stdcall calling convention on win32 so we can't use
1452 # the generic test functions
1453 if enabled faac; then
1454 save_flags
1455 temp_extralibs -lfaac
1456 check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
1457 #include <stdint.h>
1458 #include <faac.h>
1459 int main(){
1460 char *id, *cpr;
1461 faacEncGetVersion(&id, &cpr);
1462 return 0;
1463 }
1464 EOF
1465 restore_flags
1466 fi
1467
1468 # Ugh, recent faad2 versions have renamed all functions and #define the
1469 # old names in faad.h. Generic tests won't work.
1470 if enabled faad; then
1471 save_flags
1472 temp_extralibs -lfaad
1473 check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
1474 #include <faad.h>
1475 int main(){
1476 faacDecOpen();
1477 return 0;
1478 }
1479 EOF
1480 restore_flags
1481 fi
1482
1483 # Ugh, avisynth uses WINAPI calls. Generic tests won't work.
1484 if enabled avisynth; then
1485 save_flags
1486 temp_extralibs -lvfw32
1487 check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
1488 #include <windows.h>
1489 #include <vfw.h>
1490 int main(){
1491 AVIFileInit();
1492 return 0;
1493 }
1494 EOF
1495 restore_flags
1496 fi
1497
1498
1499 # test for lrintf in math.h
1500 check_exec <<EOF && lrintf=yes || lrintf=no
1501 #define _ISOC9X_SOURCE 1
1502 #include <math.h>
1503 int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1504 EOF
1505
1506 _restrict=
1507 for restrict_keyword in restrict __restrict__ __restrict; do
1508 check_cc <<EOF && _restrict=$restrict_keyword && break
1509 void foo(char * $restrict_keyword p);
1510 EOF
1511 done
1512
1513 # dlopen/dlfcn.h probing
1514
1515 check_header dlfcn.h
1516
1517 if check_func dlopen; then
1518 ldl=
1519 elif check_func dlopen -ldl; then
1520 ldl=-ldl
1521 fi
1522
1523 if test "$vhook" = "default"; then
1524 vhook="$dlopen"
1525 fi
1526
1527 if enabled_any vhook a52bin faadbin; then
1528 add_extralibs $ldl
1529 fi
1530
1531 if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
1532 vhook="no"
1533 echo
1534 echo "At the moment vhooks don't work on Cygwin static builds."
1535 echo "Patches welcome."
1536 echo
1537 fi
1538
1539 if enabled vhook; then
1540 check_ldflags -rdynamic
1541 check_ldflags -export-dynamic
1542 fi
1543
1544 if enabled audio_beos; then
1545 add_extralibs "-lmedia -lbe"
1546 fi
1547
1548 ##########################################
1549 # imlib check
1550
1551 temp_extralibs -lImlib2
1552 check_ld <<EOF && imlib2=yes || imlib2=no
1553 #include <X11/Xlib.h>
1554 #include <Imlib2.h>
1555 int main( void ) { return (int) imlib_load_font("foo"); }
1556 EOF
1557 restore_flags
1558
1559 ##########################################
1560 # FreeType check
1561
1562 freetype2=no
1563 if test "x$targetos" != "xBeOS"; then
1564 if (freetype-config --version) >/dev/null 2>&1 ; then
1565 temp_cflags `freetype-config --cflags`
1566 temp_extralibs `freetype-config --libs`
1567 check_ld <<EOF && freetype2=yes
1568 #include <ft2build.h>
1569 int main( void ) { return (int) FT_Init_FreeType(0); }
1570 EOF
1571 restore_flags
1572 fi
1573 fi
1574
1575 ##########################################
1576 # SDL check
1577
1578 sdl_too_old=no
1579 sdl=no
1580 SDL_CONFIG="${cross_prefix}sdl-config"
1581 if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
1582 temp_cflags `"${SDL_CONFIG}" --cflags`
1583 temp_extralibs `"${SDL_CONFIG}" --libs`
1584 check_ld <<EOF
1585 #include <SDL.h>
1586 #undef main /* We don't want SDL to override our main() */
1587 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1588 EOF
1589 if test $? = 0; then
1590 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1591 if test "$_sdlversion" -lt 121 ; then
1592 sdl_too_old=yes
1593 else
1594 sdl=yes
1595 check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
1596 #include <SDL.h>
1597 int main(void){
1598 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1599 int w = vi->current_w;
1600 return 0;
1601 }
1602 EOF
1603 fi
1604 fi
1605 restore_flags
1606 fi
1607
1608 enabled sdl || ffplay=no
1609
1610 ##########################################
1611 # texi2html check
1612
1613 texi2html=no
1614 if (texi2html -version) >/dev/null 2>&1; then
1615 texi2html=yes
1616 fi
1617
1618 ##########################################
1619 # IPv6 check
1620
1621 enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
1622 #include <sys/types.h>
1623 #include <sys/socket.h>
1624 #include <netinet/in.h>
1625 #include <netdb.h>
1626 int main( void ) {
1627 struct sockaddr_storage saddr;
1628 struct ipv6_mreq mreq6;
1629 getaddrinfo(0,0,0,0);
1630 getnameinfo(0,0,0,0,0,0,0);
1631 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1632 }
1633 EOF
1634
1635 # check for video4linux2 --- V4L2_PIX_FMT_YUV420
1636 enabled video4linux2 && check_cc <<EOF || video4linux2="no"
1637 #include <sys/time.h>
1638 #include <asm/types.h>
1639 #include <linux/videodev2.h>
1640 int dummy = V4L2_PIX_FMT_YUV420;
1641 struct v4l2_buffer dummy1;
1642 EOF
1643
1644 enabled debug && add_cflags -g
1645
1646 # add some useful compiler flags if supported
1647 check_cflags -Wdeclaration-after-statement
1648 check_cflags -Wall
1649 check_cflags -Wno-switch
1650 check_cflags -Wdisabled-optimization
1651 check_cflags -Wpointer-arith
1652 check_cflags -Wredundant-decls
1653 enabled extrawarnings && check_cflags -Winline
1654
1655 # add some linker flags
1656 check_ldflags $LDLATEFLAGS
1657
1658 # not all compilers support -Os
1659 test "$optimize" = "small" && check_cflags -Os
1660
1661 if enabled optimize; then
1662 if test -n "`$cc -v 2>&1 | grep xlc`"; then
1663 add_cflags "-O5"
1664 add_ldflags "-O5"
1665 else
1666 add_cflags "-O3"
1667 fi
1668 fi
1669
1670 # PIC flags for shared library objects where they are needed
1671 if test "$lshared" = "yes" ; then
1672 # LIBOBJFLAGS may have already been set in the OS configuration
1673 if test -z "$LIBOBJFLAGS" ; then
1674 case "$arch" in
1675 x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
1676 esac
1677 fi
1678 fi
1679
1680 if test "$gprof" = "yes" ; then
1681 add_cflags "-p"
1682 add_ldflags "-p"
1683 fi
1684
1685 VHOOKCFLAGS="-fPIC $CFLAGS"
1686 test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1687
1688 # find if .align arg is power-of-two or not
1689 if test $asmalign_pot = "unknown"; then
1690 asmalign_pot="no"
1691 echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1692 fi
1693
1694 echo "install prefix $PREFIX"
1695 echo "source path $source_path"
1696 echo "C compiler $cc"
1697 echo "make $make"
1698 echo "ARCH $arch ($cpu)"
1699 if test "$BUILDSUF" != ""; then
1700 echo "build suffix $BUILDSUF"
1701 fi
1702 echo "big-endian $bigendian"
1703 if test $arch = "x86_32" -o $arch = "x86_64"; then
1704 echo "MMX enabled $mmx"
1705 echo "CMOV enabled $cmov"
1706 echo "CMOV is fast $cmov_is_fast"
1707 fi
1708 if test $arch = "armv4l"; then
1709 echo "ARMv5TE enabled $armv5te"
1710 echo "IWMMXT enabled $iwmmxt"
1711 fi
1712 if test $arch = "mips"; then
1713 echo "MMI enabled $mmi"
1714 fi
1715 if test $arch = "powerpc"; then
1716 echo "AltiVec enabled $altivec"
1717 echo "dcbzl available $dcbzl"
1718 fi
1719 echo "gprof enabled $gprof"
1720 echo "zlib enabled $zlib"
1721 echo "libgsm enabled $libgsm"
1722 echo "mp3lame enabled $mp3lame"
1723 echo "libnut enabled $libnut"
1724 echo "libogg enabled $libogg"
1725 echo "Vorbis enabled $libvorbis"
1726 echo "FAAD enabled $faad"
1727 echo "faadbin enabled $faadbin"
1728 echo "FAAC enabled $faac"
1729 echo "XviD enabled $xvid"
1730 echo "x264 enabled $x264"
1731 echo "a52 support $a52"
1732 echo "a52 dlopened $a52bin"
1733 echo "DTS support $dts"
1734 echo "pp support $pp"
1735 echo "Software Scaler enabled $swscaler"
1736 echo "AVISynth enabled $avisynth"
1737 echo "debug symbols $debug"
1738 echo "strip symbols $dostrip"
1739 echo "optimize $optimize"
1740 echo "static $lstatic"
1741 echo "shared $lshared"
1742 echo "video hooking $vhook"
1743 echo "SDL support $sdl"
1744 if test $sdl_too_old = "yes"; then
1745 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1746 fi
1747
1748 if test "$vhook" = "yes"; then
1749 echo "Imlib2 support $imlib2"
1750 echo "FreeType support $freetype2"
1751 fi
1752 echo "Sun medialib support" $mlib
1753 echo "pthreads support" $pthreads
1754 echo "AMR-NB float support" $amr_nb
1755 echo "AMR-NB fixed support" $amr_nb_fixed
1756 echo "AMR-WB float support" $amr_wb
1757 echo "AMR-WB IF2 support" $amr_if2
1758 echo "network support $network"
1759 if test "$network" = "yes" ; then
1760 echo "IPv6 support $ipv6"
1761 fi
1762 echo ".align is power-of-two" $asmalign_pot
1763 if test "$gpl" = "no" ; then
1764 echo "License: LGPL"
1765 else
1766 echo "License: GPL"
1767 fi
1768
1769 echo "Creating config.mak and config.h..."
1770
1771 echo "# Automatically generated by configure - do not modify!" > config.mak
1772 echo "/* Automatically generated by configure - do not modify! */" > $TMPH
1773 echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
1774
1775 echo "PREFIX=$PREFIX" >> config.mak
1776 echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
1777 echo "libdir=\$(DESTDIR)$libdir" >> config.mak
1778 echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1779 echo "incdir=\$(DESTDIR)$incdir" >> config.mak
1780 echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1781 echo "mandir=\$(DESTDIR)$mandir" >> config.mak
1782 echo "MAKE=$make" >> config.mak
1783 echo "CC=$cc" >> config.mak
1784 echo "AR=$ar" >> config.mak
1785 echo "RANLIB=$ranlib" >> config.mak
1786 if test "$dostrip" = "yes" ; then
1787 echo "STRIP=$strip" >> config.mak
1788 echo "INSTALLSTRIP=$installstrip" >> config.mak
1789 else
1790 echo "STRIP=echo ignoring strip" >> config.mak
1791 echo "INSTALLSTRIP=" >> config.mak
1792 fi
1793
1794 echo "OPTFLAGS=$CFLAGS" >> config.mak
1795 echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
1796 echo "LDFLAGS=$LDFLAGS" >> config.mak
1797 echo "LDCONFIG=$LDCONFIG" >> config.mak
1798 echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
1799 echo "SHFLAGS=$SHFLAGS" >> config.mak
1800 echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
1801 echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
1802 echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
1803 echo "BUILD_STATIC=$lstatic" >> config.mak
1804 echo "BUILDSUF=$BUILDSUF" >> config.mak
1805 echo "LIBPREF=$LIBPREF" >> config.mak
1806 echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
1807 if test "$lstatic" = "yes" ; then
1808 echo "LIB=$LIB" >> config.mak
1809 else # Some Make complain if this variable does not exist.
1810 echo "LIB=" >> config.mak
1811 fi
1812 echo "SLIBPREF=$SLIBPREF" >> config.mak
1813 echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1814 echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
1815 echo "TARGET_OS=$targetos" >> config.mak
1816
1817 ucarch=`toupper $arch`
1818 echo "TARGET_ARCH_${ucarch}=yes" >> config.mak
1819 echo "#define ARCH_${ucarch} 1" >> $TMPH
1820
1821 # special cases
1822 case "$arch" in
1823 x86_32|x86_64)
1824 echo "TARGET_ARCH_X86=yes" >> config.mak
1825 echo "#define ARCH_X86 1" >> $TMPH
1826 ;;
1827 powerpc)
1828 if test "$POWERPCMODE" = "64bits"; then
1829 echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1830 fi
1831 if test "$powerpc_perf" = "yes"; then
1832 echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1833 fi
1834 ;;
1835 sparc64)
1836 echo "TARGET_ARCH_SPARC=yes" >> config.mak
1837 echo "#define ARCH_SPARC 1" >> $TMPH
1838 ;;
1839 esac
1840
1841 if test "$bigendian" = "yes" ; then
1842 echo "WORDS_BIGENDIAN=yes" >> config.mak
1843 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
1844 fi
1845 if test "$mmx" = "yes" ; then
1846 echo "TARGET_MMX=yes" >> config.mak
1847 echo "#define HAVE_MMX 1" >> $TMPH
1848 echo "#define __CPU__ 586" >> $TMPH
1849 fi
1850 if test "$cmov" = "yes" ; then
1851 echo "TARGET_CMOV=yes" >> config.mak
1852 echo "#define HAVE_CMOV 1" >> $TMPH
1853 fi
1854 if test "$cmov_is_fast" = "yes" ; then
1855 echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
1856 echo "#define CMOV_IS_FAST 1" >> $TMPH
1857 fi
1858 if test "$armv5te" = "yes" ; then
1859 echo "TARGET_ARMV5TE=yes" >> config.mak
1860 echo "#define HAVE_ARMV5TE 1" >> $TMPH
1861 fi
1862 if test "$iwmmxt" = "yes" ; then
1863 echo "TARGET_IWMMXT=yes" >> config.mak
1864 echo "#define HAVE_IWMMXT 1" >> $TMPH
1865 fi
1866 if test "$mmi" = "yes" ; then
1867 echo "TARGET_MMI=yes" >> config.mak
1868 echo "#define HAVE_MMI 1" >> $TMPH
1869 fi
1870
1871 if test "$altivec" = "yes" ; then
1872 echo "TARGET_ALTIVEC=yes" >> config.mak
1873 echo "#define HAVE_ALTIVEC 1" >> $TMPH
1874 fi
1875
1876 if test "$sdl" = "yes" ; then
1877 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1878 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
1879 fi
1880 if test "$texi2html" = "yes"; then
1881 echo "BUILD_DOC=yes" >> config.mak
1882 fi
1883
1884 sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
1885 pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
1886 lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1887 lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1888 lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1889
1890
1891
1892 if test "$lshared" = "yes" ; then
1893 echo "#define BUILD_SHARED_AV 1" >> $TMPH
1894 echo "BUILD_SHARED=yes" >> config.mak
1895 echo "PIC=-fPIC -DPIC" >> config.mak
1896 echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
1897 echo "SPPVERSION=$lavc_version" >> config.mak
1898 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
1899 echo "LAVCVERSION=$lavc_version" >> config.mak
1900 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
1901 echo "LAVFVERSION=$lavf_version" >> config.mak
1902 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
1903 echo "LAVUVERSION=$lavu_version" >> config.mak
1904 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1905 echo "SWSVERSION=$sws_version" >> config.mak
1906 echo "SLIBNAME=${SLIBNAME}" >> config.mak
1907 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1908 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
1909 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
1910 fi
1911 echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
1912 echo "EXTRALIBS=$extralibs" >> config.mak
1913
1914 enabled_any $ENCODER_LIST && enable encoders
1915 enabled_any $DECODER_LIST && enable decoders
1916 enabled_any $MUXER_LIST && enable muxers
1917 enabled_any $DEMUXER_LIST && enable demuxers
1918
1919 enabled_any pthreads beosthreads os2threads w32threads && enable threads
1920
1921 print_config HAVE_ $TMPH config.mak $HAVE_LIST
1922 print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1923
1924 if test "$targetos" = "Darwin"; then
1925 echo "#define CONFIG_DARWIN 1" >> $TMPH
1926 fi
1927
1928 echo "#define restrict $_restrict" >> $TMPH
1929
1930 if test "$optimize" = "small"; then
1931 echo "#define always_inline" >> $TMPH
1932 echo "#define CONFIG_SMALL 1" >> $TMPH
1933 fi
1934
1935 echo "SRC_PATH=\"$source_path\"" >> config.mak
1936 echo "SRC_PATH_BARE=$source_path" >> config.mak
1937 echo "BUILD_ROOT=\"$PWD\"" >> config.mak
1938
1939 if test "$amr_if2" = "yes" ; then
1940 echo "AMR_CFLAGS=-DIF2=1" >> config.mak
1941 fi
1942
1943 # Apparently it's not possible to portably echo a backslash.
1944 if test "$asmalign_pot" = "yes" ; then
1945 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
1946 else
1947 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
1948 fi
1949
1950
1951 for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
1952 ucname="`toupper $codec`"
1953 config_name="CONFIG_$ucname"
1954 enabled_name="ENABLE_$ucname"
1955 if enabled $codec; then
1956 echo "#define $config_name 1" >> $TMPH
1957 echo "#define $enabled_name 1" >> $TMPH
1958 echo "$config_name=yes" >> config.mak
1959 else
1960 echo "#define $enabled_name 0" >> $TMPH
1961 fi
1962 done
1963
1964 # Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
1965 if ! cmp -s $TMPH config.h; then
1966 mv -f $TMPH config.h
1967 else
1968 echo "config.h is unchanged"
1969 fi
1970
1971 rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
1972
1973 # build tree in object directory if source path is different from current one
1974 if test "$source_path_used" = "yes" ; then
1975 DIRS="\
1976 doc \
1977 libavformat \
1978 libavcodec \
1979 libavcodec/alpha \
1980 libavcodec/armv4l \
1981 libavcodec/bfin \
1982 libavcodec/i386 \
1983 libavcodec/sparc \
1984 libavcodec/mlib \
1985 libavcodec/ppc \
1986 libavcodec/liba52 \
1987 libpostproc \
1988 libavutil \
1989 libswscale \
1990 tests \
1991 vhook \
1992 "
1993 FILES="\
1994 Makefile \
1995 common.mak \
1996 libavformat/Makefile \
1997 libavcodec/Makefile \
1998 libpostproc/Makefile \
1999 libavutil/Makefile \
2000 libswscale/Makefile \
2001 tests/Makefile \
2002 vhook/Makefile \
2003 doc/Makefile \
2004 doc/texi2pod.pl \
2005 "
2006 for dir in $DIRS ; do
2007 mkdir -p $dir
2008 done
2009 for f in $FILES ; do
2010 ln -sf "$source_path/$f" $f
2011 done
2012 fi
2013
2014 # build pkg-config files libav*.pc and libpostproc.pc
2015 # libavutil.pc
2016 cat <<EOF >libavutil.pc
2017 prefix=$PREFIX
2018 exec_prefix=\${prefix}
2019 libdir=\${exec_prefix}/lib
2020 includedir=\${prefix}/include
2021
2022 Name: libavutil
2023 Description: FFmpeg utility library
2024 Version: $lavu_version
2025 Requires:
2026 Conflicts:
2027 Libs: -L\${libdir} -lavutil
2028 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2029 EOF
2030
2031 cat <<EOF >libavutil-uninstalled.pc
2032 prefix=
2033 exec_prefix=
2034 libdir=\${pcfiledir}/libavutil
2035 includedir=\${pcfiledir}/libavutil
2036
2037 Name: libavutil
2038 Description: FFmpeg utility library
2039 Version: $lavu_version
2040 Requires:
2041 Conflicts:
2042 Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
2043 Cflags: -I\${includedir}
2044 EOF
2045
2046 # libavcodec.pc
2047 cat <<EOF >libavcodec.pc
2048 prefix=$PREFIX
2049 exec_prefix=\${prefix}
2050 libdir=\${exec_prefix}/lib
2051 includedir=\${prefix}/include
2052
2053 Name: libavcodec
2054 Description: FFmpeg codec library
2055 Version: $lavc_version
2056 Requires: $pkg_requires libavutil = $lavu_version
2057 Conflicts:
2058 Libs: -L\${libdir} -lavcodec $extralibs
2059 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2060 EOF
2061
2062 cat <<EOF >libavcodec-uninstalled.pc
2063 prefix=
2064 exec_prefix=
2065 libdir=\${pcfiledir}/libavcodec
2066 includedir=\${pcfiledir}/libavcodec
2067
2068 Name: libavcodec
2069 Description: FFmpeg codec library
2070 Version: $lavc_version
2071 Requires: $pkg_requires libavutil = $lavu_version
2072 Conflicts:
2073 Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
2074 Cflags: -I\${includedir}
2075 EOF
2076
2077 # libavformat.pc
2078 cat <<EOF >libavformat.pc
2079 prefix=$PREFIX
2080 exec_prefix=\${prefix}
2081 libdir=\${exec_prefix}/lib
2082 includedir=\${prefix}/include
2083
2084 Name: libavformat
2085 Description: FFmpeg container format library
2086 Version: $lavf_version
2087 Requires: $pkg_requires libavcodec = $lavc_version
2088 Conflicts:
2089 Libs: -L\${libdir} -lavformat $extralibs
2090 Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2091 EOF
2092
2093 cat <<EOF >libavformat-uninstalled.pc
2094 prefix=
2095 exec_prefix=
2096 libdir=\${pcfiledir}/libavformat
2097 includedir=\${pcfiledir}/libavformat
2098
2099 Name: libavformat
2100 Description: FFmpeg container format library
2101 Version: $lavf_version
2102 Requires: $pkg_requires libavcodec = $lavc_version
2103 Conflicts:
2104 Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
2105 Cflags: -I\${includedir}
2106 EOF
2107
2108
2109 # libpostproc.pc
2110 cat <<EOF >libpostproc.pc
2111 prefix=$PREFIX
2112 exec_prefix=\${prefix}
2113 libdir=\${exec_prefix}/lib
2114 includedir=\${prefix}/include
2115
2116 Name: libpostproc
2117 Description: FFmpeg post processing library
2118 Version: $lavc_version
2119 Requires:
2120 Conflicts:
2121 Libs: -L\${libdir} -lpostproc
2122 Cflags: -I\${includedir} -I\${includedir}/postproc
2123 EOF
2124
2125 cat <<EOF >libpostproc-uninstalled.pc
2126 prefix=
2127 exec_prefix=
2128 libdir=\${pcfiledir}/libpostproc
2129 includedir=\${pcfiledir}/libpostproc
2130
2131 Name: libpostproc
2132 Description: FFmpeg post processing library
2133 Version: $lavc_version
2134 Requires:
2135 Conflicts:
2136 Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
2137 Cflags: -I\${includedir}
2138 EOF
2139
2140 if test "$swscaler" != "no"; then
2141 sws_pc_libs="-L\${libdir} -lswscale"
2142 sws_pc_uninstalled_libs="\${libdir}/${LIBPREF}swscale${LIBSUF}"
2143 sws_pc_requires="$pkg_requires libavutil = $lavu_version"
2144 else
2145 sws_pc_libs=""
2146 sws_pc_uninstalled_libs=""
2147 sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
2148 fi
2149 # libswscale.pc
2150 cat <<EOF >libswscale.pc
2151 prefix=$PREFIX
2152 exec_prefix=\${prefix}
2153 libdir=\${exec_prefix}/lib
2154 includedir=\${prefix}/include
2155
2156 Name: libswscale
2157 Description: FFmpeg image rescaling library
2158 Version: $sws_version
2159 Requires: $sws_pc_requires
2160 Conflicts:
2161 Libs: $sws_pc_libs
2162 Cflags: -I\${includedir} -I\${includedir}/swscale
2163 EOF
2164
2165 cat <<EOF >libswscale-uninstalled.pc
2166 prefix=
2167 exec_prefix=
2168 libdir=\${pcfiledir}/libswscale
2169 includedir=\${pcfiledir}/libswscale
2170
2171 Name: libswscale
2172 Description: FFmpeg image rescaling library
2173 Version: $sws_version
2174 Requires: $sws_pc_requires
2175 Conflicts:
2176 Libs: $sws_pc_uninstalled_libs
2177 Cflags: -I\${includedir}
2178 EOF