better warning
[libav.git] / configure
CommitLineData
de6d9b64 1#!/bin/sh
0f3cb305 2#
f57620d5
MR
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
0f3cb305 8#
cf9d24ad 9
cde2d79a 10# make sure we are running under a compatible shell
c21d6325
MR
11# try to make this part work with most shells
12
13try_exec(){
14 type "$1" >/dev/null 2>&1 && exec "$@"
15}
16
5237ce67
MR
17unset foo
18(: ${foo%%bar}) 2>/dev/null && ! (: ${foo?}) 2>/dev/null
cde2d79a 19if test "$?" != 0; then
c21d6325
MR
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" "$@"
cde2d79a
MR
32 fi
33 echo "No compatible shell script interpreter found."
c21d6325
MR
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
cde2d79a
MR
40 exit 1
41fi
42
74c53c2d
MR
43show_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"
2ba042a7 49 echo " --log[=FILE|yes|no] log tests and output to FILE [config.err]"
2266e085 50 echo " --prefix=PREFIX install in PREFIX [$PREFIX]"
74c53c2d 51 echo " --libdir=DIR install libs in DIR [PREFIX/lib]"
84c22efd 52 echo " --shlibdir=DIR install shared libs in DIR [PREFIX/lib]"
74c53c2d
MR
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]"
f956e129 56 echo " --enable-libnut enable NUT support via libnut [default=no]"
74c53c2d
MR
57 echo " --enable-libogg enable Ogg support via libogg [default=no]"
58 echo " --enable-vorbis enable Vorbis support via libvorbis [default=no]"
74c53c2d
MR
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]"
790c9ca7 83 echo " --enable-swscaler software scaler support [default=no]"
8ac17293 84 echo " --enable-avisynth allow reading AVISynth script files [default=no]"
74c53c2d
MR
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]"
fac252f9 91 echo " --cross-compile assume a cross-compiler is used"
74c53c2d
MR
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 []"
cc6a90dd 98 echo " --arch=ARCH select architecture [$arch]"
38d0a8aa
GP
99 echo " --cpu=CPU selects the minimum cpu required (affects
100 instruction selection, may crash on older CPUs)"
74c53c2d
MR
101 echo " --powerpc-perf-enable enable performance report on PPC"
102 echo " (requires enabling PMC)"
103 echo " --disable-mmx disable MMX usage"
1839e854 104 echo " --disable-armv5te disable armv5te usage"
74c53c2d
MR
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]"
0c7bb0e5 114 echo " --disable-ipv6 disable ipv6 support [default=no]"
74c53c2d 115 echo " --disable-zlib disable zlib [default=no]"
74c53c2d
MR
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"
78fcba8f 120 echo " --enable-extra-warnings enable more compiler warnings"
74c53c2d
MR
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]"
786b30af 124 echo " --disable-ffmpeg disable ffmpeg build"
74c53c2d
MR
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"
ff70e601
MR
136 echo " --disable-muxer=NAME disables muxer NAME"
137 echo " --enable-muxer=NAME enables muxer NAME"
74c53c2d 138 echo " --disable-muxers disables all muxers"
ff70e601
MR
139 echo " --disable-demuxer=NAME disables demuxer NAME"
140 echo " --enable-demuxer=NAME enables demuxer NAME"
74c53c2d 141 echo " --disable-demuxers disables all demuxers"
af9e7d18
MR
142 echo " --enable-parser=NAME enables parser NAME"
143 echo " --disable-parser=NAME disables parser NAME"
144 echo " --disable-parsers disables all parsers"
74c53c2d
MR
145 echo ""
146 echo "NOTE: Object files are built at the place where configure is launched."
147 exit 1
148}
cf9d24ad 149
57bd82d4
MR
150log(){
151 echo "$@" >>$logfile
152}
153
720c69da 154log_file(){
c8e9f801
MR
155 log BEGIN $1
156 cat -n $1 >>$logfile
157 log END $1
158}
159
2ba042a7 160echolog(){
c8e9f801 161 log "$@"
57bd82d4 162 echo "$@"
2ba042a7
MR
163}
164
165die(){
166 echolog "$@"
167 cat <<EOF
168If you think configure made a mistake, make sure you are using the latest
169version from SVN. If the latest version fails, report the problem to the
170ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
171EOF
720c69da 172 if enabled logging; then
2ba042a7
MR
173 cat <<EOF
174Include the log file "$logfile" produced by configure as this will help
175solving the problem.
176EOF
177 else
178cat <<EOF
179Rerun configure with logging enabled (do not use --log=no), and include the
180log this produces with your report.
181EOF
182 fi
57bd82d4
MR
183 rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
184 exit 1
185}
186
904e48f1 187# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
44161118
MR
188toupper(){
189 echo "$@" | tr '[a-z]' '[A-Z]'
190}
191
a8d04fba
MR
192set_all(){
193 value=$1
194 shift
195 for var in $*; do
196 eval $var=$value
197 done
198}
199
200enable(){
201 set_all yes $*
202}
203
204disable(){
205 set_all no $*
206}
207
57bd82d4 208enabled(){
44161118
MR
209 eval test "x\$$1" = "xyes"
210}
211
212enabled_all(){
213 for opt; do
214 enabled $opt || return 1
215 done
216}
217
218enabled_any(){
219 for opt; do
220 enabled $opt && return 0
221 done
222}
223
224print_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
57bd82d4
MR
236}
237
238flags_saved(){
239 (: ${SAVE_CFLAGS?}) 2>/dev/null
240}
241
dcd479c0 242save_flags(){
57bd82d4 243 flags_saved && return
dcd479c0
MR
244 SAVE_CFLAGS="$CFLAGS"
245 SAVE_LDFLAGS="$LDFLAGS"
246 SAVE_extralibs="$extralibs"
247}
248
249restore_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
258temp_cflags(){
259 save_flags
260 CFLAGS="$CFLAGS $*"
261}
262
263temp_ldflags(){
264 save_flags
265 LDFLAGS="$LDFLAGS $*"
266}
267
268temp_extralibs(){
269 save_flags
270 extralibs="$extralibs $*"
271}
272
57bd82d4
MR
273append(){
274 var=$1
275 shift
276 flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
277 eval "$var=\"\$$var $*\""
278}
279
280add_cflags(){
281 append CFLAGS "$@"
282}
283
284add_ldflags(){
285 append LDFLAGS "$@"
286}
287
288add_extralibs(){
289 append extralibs "$@"
290}
291
b0cfb663 292check_cmd(){
b3cb5d51 293 log "$@"
9b4f605c 294 "$@" >>$logfile 2>&1
b0cfb663
MR
295}
296
dcd479c0 297check_cc(){
57bd82d4
MR
298 log check_cc "$@"
299 cat >$TMPC
720c69da 300 log_file $TMPC
b0cfb663 301 check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
57bd82d4
MR
302}
303
304check_cpp(){
305 log check_cpp "$@"
dcd479c0 306 cat >$TMPC
720c69da 307 log_file $TMPC
b0cfb663 308 check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
dcd479c0
MR
309}
310
311check_ld(){
57bd82d4 312 log check_ld "$@"
0607887f 313 check_cc || return
b0cfb663 314 check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
dcd479c0
MR
315}
316
317check_cflags(){
57bd82d4
MR
318 log check_cflags "$@"
319 check_cc "$@" <<EOF && add_cflags "$@"
dcd479c0
MR
320int x;
321EOF
322}
323
324check_ldflags(){
57bd82d4
MR
325 log check_ldflags "$@"
326 check_ld "$@" <<EOF && add_ldflags "$@"
327int main(){
328 return 0;
329}
dcd479c0
MR
330EOF
331}
332
333check_header(){
57bd82d4 334 log check_header "$@"
dcd479c0
MR
335 header=$1
336 shift
57bd82d4 337 check_cpp "$@" <<EOF
dcd479c0
MR
338#include <$header>
339int x;
340EOF
0701ca7f
MR
341 err=$?
342 var=`echo $header | sed 's/[^[:alnum:]]/_/g'`
343 test "$err" = 0 && enable $var || disable $var
344 return $err
dcd479c0
MR
345}
346
347check_func(){
57bd82d4 348 log check_func "$@"
dcd479c0
MR
349 func=$1
350 shift
351 check_ld "$@" <<EOF
352extern int $func();
353int main(){
354 $func();
355}
356EOF
0701ca7f
MR
357 err=$?
358 test "$err" = 0 && enable $func || disable $func
359 return $err
dcd479c0
MR
360}
361
57bd82d4
MR
362check_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
dcd479c0 374check_exec(){
bd4700b1 375 check_ld "$@" && { test "$cross_compile" = yes || $TMPE >>$logfile 2>&1; }
57bd82d4
MR
376}
377
378require(){
379 name="$1"
380 header="$2"
381 func="$3"
382 shift 3
383 check_lib $header $func "$@" || die "ERROR: $name not found"
dcd479c0
MR
384}
385
c88f5d72
MR
386CONFIG_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
860391a5 428 wince
c88f5d72
MR
429 x264
430 xvid
431 zlib
432'
433
434HAVE_LIST='
435 altivec_h
b265431e 436 beosthreads
c88f5d72
MR
437 byteswap_h
438 dcbzl
18b67ae5 439 dlfcn_h
c88f5d72
MR
440 dlopen
441 freetype2
442 gprof
443 imlib2
2e1913b1 444 inet_aton
c88f5d72
MR
445 localtime_r
446 lrintf
447 malloc_h
448 memalign
449 mlib
9c914398 450 os2
b265431e
MR
451 os2threads
452 pthreads
c88f5d72
MR
453 sdl
454 sdl_video_size
b265431e
MR
455 threads
456 w32threads
c88f5d72 457'
44161118 458
0f3cb305 459# set temporary file name
57514323 460if test ! -z "$TMPDIR" ; then
0f3cb305 461 TMPDIR1="${TMPDIR}"
57514323 462elif test ! -z "$TEMPDIR" ; then
0f3cb305 463 TMPDIR1="${TEMPDIR}"
3d204385 464else
0f3cb305 465 TMPDIR1="/tmp"
3d204385
NK
466fi
467
0f3cb305
FB
468TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
469TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
f3ec2d46 470TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
0f3cb305
FB
471TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
472TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
473
de6d9b64 474# default parameters
720c69da 475logging="yes"
2ba042a7 476logfile="config.err"
2266e085
DB
477PREFIX="/usr/local"
478libdir='${PREFIX}/lib'
84c22efd 479shlibdir="$libdir"
2266e085
DB
480incdir='${PREFIX}/include/ffmpeg'
481mandir='${PREFIX}/man'
482bindir='${PREFIX}/bin'
0f3cb305 483cross_prefix=""
fac252f9 484cross_compile="no"
de6d9b64
FB
485cc="gcc"
486ar="ar"
be7109c1 487ranlib="ranlib"
4a908fbc 488make="make"
0f3cb305 489strip="strip"
cc6a90dd 490arch=`uname -m`
38d0a8aa 491cpu="generic"
e45a2872 492powerpc_perf="no"
0f3cb305 493mmx="default"
e7768fc5 494cmov="no"
94e4c3a3 495cmov_is_fast="no"
1839e854 496armv5te="default"
eba9ae3c 497iwmmxt="default"
ab6c65f6 498altivec="default"
87ea51e0 499dcbzl="no"
d46aba26 500mmi="default"
cc6a90dd 501case "$arch" in
ef0bc4c9 502 i386|i486|i586|i686|i86pc|BePC)
419b8784 503 arch="x86_32"
de6d9b64 504 ;;
7bf9648e 505 x86_64|amd64)
a63e5f1c 506 arch="x86_32"
32255f6c 507 canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
7bf9648e
JM
508 if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
509 if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
cc6a90dd 510 arch="x86_64"
7bf9648e 511 fi
053dea12
AJ
512 fi
513 ;;
6dc7b6b3
DB
514 # armv4l is a subset of armv[567]*l
515 arm|armv[4567]*l)
cc6a90dd 516 arch="armv4l"
6ed7422a 517 ;;
91d1f1a4 518 alpha)
cc6a90dd 519 arch="alpha"
91d1f1a4 520 ;;
2645e80f 521 "Power Macintosh"|ppc|ppc64|powerpc)
cc6a90dd 522 arch="powerpc"
90cee0c3 523 ;;
b028a866 524 mips|mipsel|IP*)
cc6a90dd 525 arch="mips"
d46aba26 526 ;;
bb476ff3 527 sun4u|sparc64)
cc6a90dd 528 arch="sparc64"
a7beab73 529 ;;
bb476ff3 530 sparc)
cc6a90dd 531 arch="sparc"
bb476ff3 532 ;;
bdb2e37c 533 sh4)
cc6a90dd 534 arch="sh4"
bdb2e37c 535 ;;
67860b26 536 parisc|parisc64)
cc6a90dd 537 arch="parisc"
67860b26
SH
538 ;;
539 s390|s390x)
cc6a90dd 540 arch="s390"
67860b26
SH
541 ;;
542 m68k)
cc6a90dd 543 arch="m68k"
67860b26
SH
544 ;;
545 ia64)
cc6a90dd 546 arch="ia64"
67860b26 547 ;;
81a9b052 548 bfin)
cc6a90dd 549 arch="bfin"
81a9b052 550 ;;
de6d9b64 551 *)
cc6a90dd 552 arch="unknown"
de6d9b64
FB
553 ;;
554esac
555gprof="no"
9d2a0f1c
MR
556video4linux="yes"
557video4linux2="yes"
6beefa40 558bktr="no"
5cbcf02c 559audio_oss="yes"
dfdfa47c 560audio_beos="no"
8aa3ee32 561dv1394="yes"
f02be79d 562dc1394="no"
5cbcf02c 563network="yes"
0c7bb0e5 564ipv6="yes"
0147f198 565zlib="yes"
bb4c2140 566libgsm="no"
a6741398 567mp3lame="no"
f956e129 568libnut="no"
9146ca37 569libogg="no"
be74741c 570libvorbis="no"
0fc50e58
ZK
571faad="no"
572faadbin="no"
29d48296 573faac="no"
1ddadfa9 574xvid="no"
6662ec29 575x264="no"
ba9261e5 576a52="no"
57514323 577a52bin="no"
23c99253 578dts="no"
ba9261e5 579pp="no"
732d9245 580mingw32="no"
860391a5 581wince="no"
f3ec2d46 582os2="no"
320d060a 583lstatic="yes"
83286d2a 584lshared="no"
cddf3f45
GM
585optimize="yes"
586debug="yes"
78fcba8f 587extrawarnings="no"
65d1bea2 588dostrip="yes"
da186ae2 589installstrip="-s"
ef0bc4c9 590extralibs="-lm"
0f3cb305 591bigendian="no"
a8721c09 592vhook="default"
8ac17293 593avisynth="no"
18b67ae5 594dlfcn_h="no"
adbc0510 595dlopen="no"
1eb2212e 596mpegaudio_hp="yes"
baa3a937 597SHFLAGS='-shared -Wl,-soname,$@'
cab3ef82 598VHOOKSHFLAGS='$(SHFLAGS)'
8e72b130 599beos_netserver="no"
04f46ced 600protocols="yes"
786b30af 601ffmpeg="yes"
8154d2e0 602ffserver="yes"
a86b921c 603ffplay="yes"
80581e98 604LIBOBJFLAGS=""
e89b8b0a 605FFLDFLAGS=-Wl,--warn-common
e240ee67 606LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
c536cb09 607FFSERVERLDFLAGS=-Wl,-E
f39e56a8 608LDCONFIG="ldconfig"
f3ec2d46
SG
609LIBPREF="lib"
610LIBSUF=".a"
4bdd05e7 611LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
f3ec2d46
SG
612SLIBPREF="lib"
613SLIBSUF=".so"
4bdd05e7 614SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
b29bddab
DB
615SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
616SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
951bf3e6 617EXESUF=""
eb94aca9 618BUILDSUF=""
891f64b3 619amr_nb="no"
d663a1fd 620amr_wb="no"
bc634f6f 621amr_nb_fixed="no"
2a515c08 622amr_if2="no"
bde24d6e 623mlib="no"
9c3d33d6 624pthreads="no"
790c9ca7 625swscaler="no"
b2e3c528 626gpl="no"
9ddbcae6 627memalign_hack="no"
4454dc1b 628asmalign_pot="unknown"
d4596ae3 629LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
ef0bc4c9
FR
630
631# OS specific
632targetos=`uname -s`
633case $targetos in
634BeOS)
2266e085 635PREFIX="/boot/home/config"
ef0bc4c9 636# helps building libavcodec
30a3e5d4 637add_cflags "-DPIC -fomit-frame-pointer"
31ba0b4d 638# 3 gcc releases known for BeOS, each with ugly bugs
b2924696 639gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
31ba0b4d
FR
640case "$gcc_version" in
6412.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
642mmx="no"
643;;
644*20010315*) echo "BeBits gcc"
30a3e5d4 645add_cflags "-fno-expensive-optimizations"
31ba0b4d
FR
646;;
647esac
e1707f52 648SHFLAGS=-nostart
29799f8b 649# disable Linux things
e1707f52 650audio_oss="no"
9d2a0f1c
MR
651video4linux="no"
652video4linux2="no"
8aa3ee32 653dv1394="no"
29799f8b 654# enable BeOS things
dfdfa47c 655audio_beos="yes"
b265431e 656beosthreads="yes"
ef0bc4c9
FR
657# no need for libm, but the inet stuff
658# Check for BONE
659if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
660extralibs="-lbind -lsocket"
661else
8e72b130 662beos_netserver="yes"
26b35efb 663extralibs="-lnet"
ef0bc4c9 664fi ;;
4baca069 665SunOS)
9d2a0f1c
MR
666video4linux="no"
667video4linux2="no"
4baca069 668audio_oss="no"
8aa3ee32 669dv1394="no"
4baca069 670make="gmake"
e89b8b0a 671FFLDFLAGS=""
c536cb09 672FFSERVERLDFLAGS=""
813457e5 673SHFLAGS="-shared -Wl,-h,\$@"
30a3e5d4 674add_extralibs "-lsocket -lnsl"
4baca069 675;;
b7aa4a59 676NetBSD)
9d2a0f1c
MR
677video4linux="no"
678video4linux2="no"
6beefa40 679bktr="yes"
b7aa4a59
SS
680audio_oss="yes"
681dv1394="no"
682make="gmake"
30a3e5d4 683add_extralibs "-lossaudio"
b7aa4a59 684;;
8c802695 685OpenBSD)
9d2a0f1c
MR
686video4linux="no"
687video4linux2="no"
6beefa40 688bktr="yes"
8c802695
JM
689audio_oss="yes"
690dv1394="no"
691make="gmake"
80581e98 692LIBOBJFLAGS="\$(PIC)"
a1309f8f 693LDCONFIG="ldconfig -m \$(shlibdir)"
30a3e5d4 694add_extralibs "-lossaudio"
8c802695 695;;
9c938e77 696FreeBSD)
9d2a0f1c
MR
697video4linux="no"
698video4linux2="no"
6beefa40 699bktr="yes"
9c938e77 700audio_oss="yes"
8aa3ee32 701dv1394="no"
9c938e77 702make="gmake"
30a3e5d4 703add_cflags "-pthread"
9c938e77 704;;
38f0d3ce 705GNU/kFreeBSD)
9d2a0f1c
MR
706video4linux="no"
707video4linux2="no"
38f0d3ce
DB
708bktr="yes"
709audio_oss="yes"
710dv1394="no"
30a3e5d4 711add_cflags "-pthread"
38f0d3ce 712;;
4a908fbc 713BSD/OS)
9d2a0f1c
MR
714video4linux="no"
715video4linux2="no"
6beefa40 716bktr="yes"
6063bce7 717audio_oss="yes"
8aa3ee32 718dv1394="no"
4a908fbc
AB
719extralibs="-lpoll -lgnugetopt -lm"
720make="gmake"
1db68540
SS
721strip="strip -d"
722installstrip=""
4a908fbc 723;;
90cee0c3 724Darwin)
a43bd1d7 725cc="cc"
9d2a0f1c
MR
726video4linux="no"
727video4linux2="no"
90cee0c3 728audio_oss="no"
8aa3ee32 729dv1394="no"
a1309f8f 730SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION)"
408382a4 731VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
90cee0c3 732extralibs=""
47930f09 733strip="strip -x"
da186ae2 734installstrip=""
e89b8b0a 735FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
4e159595 736SLIBSUF=".dylib"
f3b60109
DB
737SLIBNAME_WITH_FULLVERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
738SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
c536cb09 739FFSERVERLDFLAGS=-Wl,-bind_at_load
d4596ae3 740LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
90cee0c3 741;;
732d9245 742MINGW32*)
951bf3e6 743# Note: the rest of the mingw32 config is done afterwards as mingw32
29799f8b 744# can be forced on the command line for Linux cross compilation.
732d9245
BE
745mingw32="yes"
746;;
3f027ca7 747CYGWIN*)
b2828252 748targetos=CYGWIN
6bc0e1cf 749shlibdir="$bindir"
9d2a0f1c
MR
750video4linux="no"
751video4linux2="no"
3f027ca7 752audio_oss="yes"
8aa3ee32 753dv1394="no"
07a1b05e 754VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
fbb9d104 755VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
3f027ca7 756extralibs=""
487c2fad 757EXESUF=".exe"
4581fdff
VP
758SLIBPREF="cyg"
759SLIBSUF=".dll"
760SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
761SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
762SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
3f027ca7 763;;
b55e4ef4 764Linux)
e240ee67 765LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
b55e4ef4 766;;
99614dd4 767IRIX*)
b2828252 768targetos=IRIX
99614dd4 769ranlib="echo ignoring ranlib"
9d2a0f1c
MR
770video4linux="no"
771video4linux2="no"
99614dd4
MB
772audio_oss="no"
773make="gmake"
774;;
f3ec2d46
SG
775OS/2)
776TMPE=$TMPE".exe"
3ca4b654 777ar="emxomfar -p128"
69db4e10
SG
778ranlib="echo ignoring ranlib"
779strip="echo ignoring strip"
30a3e5d4 780add_cflags "-Zomf"
e89b8b0a 781FFLDFLAGS="-Zomf -Zstack 16384 -s"
3ca4b654 782SHFLAGS="-Zdll -Zomf"
c536cb09 783FFSERVERLDFLAGS=""
f3ec2d46
SG
784LIBPREF=""
785LIBSUF=".lib"
786SLIBPREF=""
787SLIBSUF=".dll"
951bf3e6 788EXESUF=".exe"
f3ec2d46 789extralibs=""
c99dd233 790pkg_requires=""
9d2a0f1c
MR
791video4linux="no"
792video4linux2="no"
f3ec2d46 793audio_oss="no"
8aa3ee32 794dv1394="no"
f3ec2d46 795ffserver="no"
3ca4b654 796vhook="no"
f3ec2d46 797os2="yes"
b265431e 798os2threads="yes"
f3ec2d46 799;;
b2828252
DB
800*)
801targetos="${targetos}-UNKNOWN"
802;;
ef0bc4c9 803esac
de6d9b64 804
0f3cb305 805# find source path
997baf01 806source_path="`dirname \"$0\"`"
0f3cb305
FB
807source_path_used="yes"
808if test -z "$source_path" -o "$source_path" = "." ; then
997baf01 809 source_path="`pwd`"
0f3cb305 810 source_path_used="no"
e7a4dafb
MR
811else
812 source_path="`cd \"$source_path\"; pwd`"
997baf01
MR
813 echo "$source_path" | grep -q '[[:blank:]]' &&
814 die "Out of tree builds are impossible with whitespace in source path."
de6d9b64
FB
815fi
816
7d6ed4aa
MR
817if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
818 show_help
819fi
820
f255e0ab
MB
821FFMPEG_CONFIGURATION=" "
822for opt do
823 FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
824done
825
f3902026
AJ
826ENCODER_LIST=`sed -n 's/^[^#]*ENC.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
827DECODER_LIST=`sed -n 's/^[^#]*DEC.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
828PARSER_LIST=`sed -n 's/^[^#]*PARSER.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
5b9b3b68
AJ
829MUXER_LIST=`sed -n 's/^[^#]*_MUX.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
830DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
009cf97d 831
a8d04fba
MR
832enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST
833
de6d9b64 834for opt do
fce53524 835 optval="${opt#*=}"
de6d9b64 836 case "$opt" in
2ba042a7
MR
837 --log)
838 ;;
fce53524 839 --log=*) logging="$optval"
57bd82d4 840 ;;
e48dc873 841 --prefix=*) PREFIX="$optval"
de6d9b64 842 ;;
e48dc873 843 --libdir=*) libdir="$optval"
cc973ecb 844 ;;
84c22efd
DB
845 --shlibdir=*) shlibdir="$optval"
846 ;;
fce53524 847 --incdir=*) incdir="$optval"
1d67a1d4 848 ;;
fce53524 849 --mandir=*) mandir="$optval"
23a65308 850 ;;
fce53524 851 --source-path=*) source_path="$optval"
0f3cb305 852 ;;
fce53524 853 --cross-prefix=*) cross_prefix="$optval"
0f3cb305 854 ;;
fac252f9
MR
855 --cross-compile) cross_compile=yes
856 ;;
fce53524 857 --cc=*) cc="$optval"
de6d9b64 858 ;;
fce53524 859 --make=*) make="$optval"
4a908fbc 860 ;;
30a3e5d4 861 --extra-cflags=*) add_cflags "$optval"
0f3cb305 862 ;;
28d8e661 863 --extra-ldflags=*) add_ldflags "$optval"
0f3cb305 864 ;;
28d8e661 865 --extra-libs=*) add_extralibs "$optval"
0f3cb305 866 ;;
fce53524 867 --build-suffix=*) BUILDSUF="$optval"
eb94aca9 868 ;;
cc6a90dd 869 --arch=*) arch="$optval"
de6d9b64 870 ;;
38d0a8aa 871 --cpu=*) cpu="$optval"
a4adb608 872 ;;
e45a2872
RD
873 --powerpc-perf-enable) powerpc_perf="yes"
874 ;;
de6d9b64
FB
875 --disable-mmx) mmx="no"
876 ;;
1839e854
SS
877 --disable-armv5te) armv5te="no"
878 ;;
eba9ae3c
GB
879 --disable-iwmmxt) iwmmxt="no"
880 ;;
ab6c65f6
BF
881 --disable-altivec) altivec="no"
882 ;;
de6d9b64
FB
883 --enable-gprof) gprof="yes"
884 ;;
9d2a0f1c 885 --disable-v4l) video4linux="no"
5cbcf02c 886 ;;
9d2a0f1c 887 --disable-v4l2) video4linux2="no"
0a7b514f 888 ;;
6beefa40
MN
889 --disable-bktr) bktr="no"
890 ;;
5cbcf02c
FB
891 --disable-audio-oss) audio_oss="no"
892 ;;
dfdfa47c
FR
893 --disable-audio-beos) audio_beos="no"
894 ;;
8aa3ee32
MK
895 --disable-dv1394) dv1394="no"
896 ;;
ffc0ef96 897 --disable-network) network="no"; ffserver="no"
5cbcf02c 898 ;;
0c7bb0e5
LB
899 --disable-ipv6) ipv6="no";
900 ;;
0147f198
FR
901 --disable-zlib) zlib="no"
902 ;;
ba9261e5 903 --enable-a52) a52="yes"
6ed7422a 904 ;;
bfd2edeb 905 --enable-a52bin) a52bin="yes"
57514323 906 ;;
c99dd233 907 --enable-dts) dts="yes"
23c99253 908 ;;
ba9261e5 909 --enable-pp) pp="yes"
bba9b16c 910 ;;
bb4c2140
MN
911 --enable-libgsm) libgsm="yes"
912 ;;
c99dd233 913 --enable-mp3lame) mp3lame="yes"
a6741398 914 ;;
f956e129
OS
915 --enable-libnut) libnut="yes"
916 ;;
9146ca37 917 --enable-libogg) libogg="yes"
c99dd233 918 pkg_requires="$pkg_requires ogg >= 1.1"
5c5dea3f 919 ;;
be74741c 920 --enable-vorbis) libvorbis="yes"
c99dd233 921 pkg_requires="$pkg_requires vorbis vorbisenc"
81e0d0b4 922 ;;
445ad18d
ZK
923 --enable-faad) faad="yes"
924 ;;
925 --enable-faadbin) faadbin="yes"
926 ;;
c99dd233 927 --enable-faac) faac="yes"
29d48296 928 ;;
1ddadfa9
AT
929 --enable-xvid) xvid="yes"
930 ;;
c99dd233 931 --enable-x264) x264="yes"
6662ec29 932 ;;
8ac17293
SH
933 --enable-avisynth) avisynth="yes";
934 ;;
f02be79d 935 --enable-dc1394) dc1394="yes"
c99dd233 936 pkg_requires="$pkg_requires libraw1394"
f02be79d 937 ;;
68892110
PG
938 --disable-vhook) vhook="no"
939 ;;
732d9245
BE
940 --enable-mingw32) mingw32="yes"
941 ;;
860391a5 942 --enable-mingwce) wince="yes"
ac44871c 943 ;;
320d060a
DB
944 --enable-static) lstatic="yes"
945 ;;
946 --disable-static) lstatic="no"
947 ;;
83286d2a 948 --enable-shared) lshared="yes"
0319c531 949 ;;
320d060a
DB
950 --disable-shared) lshared="no"
951 ;;
cddf3f45
GM
952 --disable-debug) debug="no"
953 ;;
954 --disable-opts) optimize="no"
955 ;;
78fcba8f
MR
956 --enable-extra-warnings) extrawarnings="yes"
957 ;;
1eb2212e
FB
958 --disable-mpegaudio-hp) mpegaudio_hp="no"
959 ;;
04f46ced
GB
960 --disable-protocols) protocols="no"; network="no"; ffserver="no"
961 ;;
786b30af
DB
962 --disable-ffmpeg) ffmpeg="no"
963 ;;
8154d2e0
FB
964 --disable-ffserver) ffserver="no"
965 ;;
a86b921c
FB
966 --disable-ffplay) ffplay="no"
967 ;;
cddf3f45 968 --enable-small) optimize="small"
553a6284 969 ;;
60827a1a 970 --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no"
891f64b3 971 ;;
60827a1a 972 --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no"
bc634f6f 973 ;;
60827a1a 974 --enable-amr_wb) amr="yes"; amr_wb="yes"
115329f1 975 ;;
60827a1a 976 --enable-amr_if2) amr="yes"; amr_if2="yes"
2a515c08 977 ;;
bde24d6e 978 --enable-sunmlib) mlib="yes"
f80f7964 979 ;;
9c3d33d6
MN
980 --enable-pthreads) pthreads="yes"
981 ;;
790c9ca7
LA
982 --enable-swscaler) swscaler="yes"
983 ;;
b2e3c528
MN
984 --enable-gpl) gpl="yes"
985 ;;
9ddbcae6 986 --enable-memalign-hack) memalign_hack="yes"
da9b170c 987 ;;
65d1bea2
MB
988 --disable-strip) dostrip="no"
989 ;;
a8d04fba 990 --enable-encoder=*) enable ${optval}_encoder
009cf97d 991 ;;
a8d04fba 992 --enable-decoder=*) enable ${optval}_decoder
f593b273 993 ;;
a8d04fba 994 --disable-encoder=*) disable ${optval}_encoder
f593b273 995 ;;
a8d04fba 996 --disable-decoder=*) disable ${optval}_decoder
009cf97d 997 ;;
a8d04fba 998 --disable-encoders) disable $ENCODER_LIST
009cf97d 999 ;;
a8d04fba 1000 --disable-decoders) disable $DECODER_LIST
b4cad537 1001 ;;
a8d04fba 1002 --enable-muxer=*) enable ${optval}_muxer
a9e35095 1003 ;;
a8d04fba 1004 --disable-muxer=*) disable ${optval}_muxer
ff70e601 1005 ;;
a8d04fba 1006 --disable-muxers) disable $MUXER_LIST; ffserver="no"
ff70e601 1007 ;;
a8d04fba 1008 --enable-demuxer=*) enable ${optval}_demuxer
ff70e601 1009 ;;
a8d04fba 1010 --disable-demuxer=*) disable ${optval}_demuxer
ff70e601 1011 ;;
a8d04fba 1012 --disable-demuxers) disable $DEMUXER_LIST
a9e35095 1013 ;;
a8d04fba 1014 --enable-parser=*) enable ${optval}_parser
af9e7d18 1015 ;;
a8d04fba 1016 --disable-parser=*) disable ${optval}_parser
af9e7d18 1017 ;;
a8d04fba 1018 --disable-parsers) disable $PARSER_LIST
af9e7d18 1019 ;;
74c53c2d
MR
1020 --help) show_help
1021 ;;
b34c63f7
DB
1022 *)
1023 echo "Unknown option \"$opt\"."
1024 echo "See $0 --help for available options."
1025 exit 1
1026 ;;
de6d9b64
FB
1027 esac
1028done
1029
720c69da
MR
1030if test "$logging" != no; then
1031 test "$logging" = yes || logfile="$logging"
57bd82d4
MR
1032 echo "# $0 $@" >$logfile
1033 set >>$logfile
2ba042a7
MR
1034else
1035 logfile=/dev/null
57bd82d4 1036fi
e89b8b0a 1037
860391a5 1038if test "$mingw32" = "yes" -o "$wince" = "yes"; then
e67bcdd9
DB
1039 if test "$lshared" = "yes" && test "$lstatic" = "yes" ; then
1040 cat <<EOF
1041You can only build one library type at once on MinGW.
1042Specify --disable-static --enable-shared to only build
1043the shared libraries. To build only the static libraries
1044you do not need to pass additional options.
1045EOF
1046 exit 1
1047 fi
9d2a0f1c
MR
1048 video4linux="no"
1049 video4linux2="no"
e67bcdd9
DB
1050 bktr="no"
1051 audio_oss="no"
1052 dv1394="no"
1053 dc1394="no"
1054 ffserver="no"
1055 network="no"
b265431e
MR
1056 if enabled mingw32; then
1057 w32threads="yes"
1058 fi
860391a5 1059 if test "$wince" = "yes"; then
e67bcdd9
DB
1060 protocols="no"
1061 fi
e67bcdd9
DB
1062 SLIBPREF=""
1063 SLIBSUF=".dll"
1064 EXESUF=".exe"
d6a07a13
DB
1065 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1066 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
dfeb80a5 1067 SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
b89c8f58 1068 SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a)"
e67bcdd9
DB
1069fi
1070
28d8e661
DB
1071# Combine FFLDFLAGS and the LDFLAGS environment variable.
1072LDFLAGS="$FFLDFLAGS $LDFLAGS"
e89b8b0a 1073
fac252f9 1074test -n "$cross_prefix" && cross_compile=yes
1ea46bed
MR
1075cc="${cross_prefix}${cc}"
1076ar="${cross_prefix}${ar}"
1077ranlib="${cross_prefix}${ranlib}"
1078strip="${cross_prefix}${strip}"
1079
320d060a
DB
1080# we need to build at least one lib type
1081if test "$lstatic" = "no" && test "$lshared" = "no" ; then
1082 cat <<EOF
1083At least one library type must be built.
1084Specify --enable-static to build the static libraries or --enable-shared to
1085build the shared libraries as well. To only build the shared libraries specify
1086--disable-static in addition to --enable-shared.
1087EOF
1088 exit 1;
1089fi
1090
be74741c 1091if test "$libvorbis" = "yes" ; then
9146ca37 1092 if test "$libogg" = "no"; then
29799f8b 1093 echo "libogg must be enabled to enable Vorbis."
5c5dea3f 1094 fail="yes"
5c5dea3f
NB
1095 fi
1096fi
1097
b2e3c528 1098if test "$gpl" != "yes"; then
ba64106a 1099 if test "$pp" != "no"; then
29799f8b 1100 echo "The Postprocessing code is under GPL and --enable-gpl is not specified."
b2e3c528
MN
1101 fail="yes"
1102 fi
1103
1104 if test "$a52" != "no" -o "$a52bin" != "no"; then
29799f8b 1105 echo "liba52 is under GPL and --enable-gpl is not specified."
b2e3c528
MN
1106 fail="yes"
1107 fi
23c99253 1108
1ddadfa9 1109 if test "$xvid" != "no"; then
29799f8b 1110 echo "libxvidcore is under GPL and --enable-gpl is not specified."
1ddadfa9
AT
1111 fail="yes"
1112 fi
1113
6662ec29 1114 if test "$x264" != "no"; then
29799f8b 1115 echo "x264 is under GPL and --enable-gpl is not specified."
6662ec29
MN
1116 fail="yes"
1117 fi
1118
23c99253 1119 if test "$dts" != "no"; then
29799f8b 1120 echo "libdts is under GPL and --enable-gpl is not specified."
23c99253
MN
1121 fail="yes"
1122 fi
115329f1 1123
b2e3c528 1124 if test "$faad" != "no" -o "$faadbin" != "no"; then
dcd479c0
MR
1125 if check_header faad.h; then
1126 check_cc << EOF
b2e3c528
MN
1127 #include <faad.h>
1128 #ifndef FAAD2_VERSION
1129 ok faad1
1130 #endif
1131 int main( void ) { return 0; }
1132EOF
dcd479c0 1133 if test $? = 0 ; then
29799f8b 1134 echo "FAAD2 is under GPL and --enable-gpl is not specified."
b2e3c528
MN
1135 fail="yes"
1136 fi
1137 else
1138 faad="no"
1139 faadbin="no"
29799f8b 1140 echo "FAAD test failed."
b2e3c528
MN
1141 fi
1142 fi
115329f1 1143
790c9ca7
LA
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
ebb810d9 1148fi
b2e3c528 1149
ebb810d9
RP
1150if test "$fail" = "yes"; then
1151 exit 1
b2e3c528
MN
1152fi
1153
29799f8b 1154# compute MMX state
0f3cb305 1155if test $mmx = "default"; then
419b8784 1156 if test $arch = "x86_32" -o $arch = "x86_64"; then
0f3cb305
FB
1157 mmx="yes"
1158 else
1159 mmx="no"
1160 fi
1161fi
1162
cf9d24ad 1163#Darwin CC versions
75388c74 1164needmdynamicnopic="no"
cf9d24ad 1165if test $targetos = Darwin; then
b2924696 1166 if test -n "`$cc -v 2>&1 | grep xlc`"; then
30a3e5d4 1167 add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
cf9d24ad 1168 else
bb270c08
DB
1169 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1170 case "$gcc_version" in
1171 *2.95*)
30a3e5d4 1172 add_cflags "-no-cpp-precomp -pipe"
bb270c08
DB
1173 ;;
1174 *[34].*)
30a3e5d4 1175 add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
bb270c08
DB
1176 if test "$lshared" = no; then
1177 needmdynamicnopic="yes"
1178 fi
1179 ;;
1180 *)
30a3e5d4 1181 add_cflags "-no-cpp-precomp -pipe"
bb270c08
DB
1182 if test "$lshared" = no; then
1183 needmdynamicnopic="yes"
1184 fi
1185 ;;
1186 esac
cf9d24ad 1187 fi
2a1a6b64
MN
1188fi
1189
1190if test $optimize != "no"; then
1191 add_cflags "-fomit-frame-pointer"
cf9d24ad
DC
1192fi
1193
ab6c65f6
BF
1194# Can only do AltiVec on PowerPC
1195if test $altivec = "default"; then
cc6a90dd 1196 if test $arch = "powerpc"; then
ab6c65f6
BF
1197 altivec="yes"
1198 else
1199 altivec="no"
1200 fi
1201fi
1202
a4adb608 1203# Add processor-specific flags
9007f514 1204POWERPCMODE="32bits"
38d0a8aa
GP
1205if test $cpu != "generic"; then
1206 case $cpu in
bb270c08 1207 601|ppc601|PowerPC601)
1c5d830c 1208 add_cflags "-mcpu=601"
bb270c08
DB
1209 if test $altivec = "yes"; then
1210 echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
1211 fi
bb270c08
DB
1212 ;;
1213 603*|ppc603*|PowerPC603*)
1c5d830c 1214 add_cflags "-mcpu=603"
bb270c08
DB
1215 if test $altivec = "yes"; then
1216 echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
1217 fi
bb270c08
DB
1218 ;;
1219 604*|ppc604*|PowerPC604*)
1c5d830c 1220 add_cflags "-mcpu=604"
bb270c08
DB
1221 if test $altivec = "yes"; then
1222 echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
1223 fi
bb270c08
DB
1224 ;;
1225 G3|g3|75*|ppc75*|PowerPC75*)
1c5d830c 1226 add_cflags "-mcpu=750 -mpowerpc-gfxopt"
bb270c08
DB
1227 if test $altivec = "yes"; then
1228 echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
1229 fi
bb270c08
DB
1230 ;;
1231 G4|g4|745*|ppc745*|PowerPC745*)
1c5d830c 1232 add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
bb270c08
DB
1233 if test $altivec = "no"; then
1234 echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
1235 fi
bb270c08
DB
1236 ;;
1237 74*|ppc74*|PowerPC74*)
1c5d830c 1238 add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
bb270c08
DB
1239 if test $altivec = "no"; then
1240 echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
1241 fi
bb270c08
DB
1242 ;;
1243 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1c5d830c 1244 add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
bb270c08
DB
1245 if test $altivec = "no"; then
1246 echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
1247 fi
9007f514 1248 POWERPCMODE="64bits"
bb270c08 1249 ;;
e7768fc5
GP
1250 # targets that do NOT support conditional mov (cmov)
1251 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
38d0a8aa 1252 add_cflags "-march=$cpu"
e7768fc5
GP
1253 cmov="no"
1254 ;;
1255 # targets that do support conditional mov (cmov)
94e4c3a3 1256 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx)
e7768fc5 1257 add_cflags "-march=$cpu"
4c8d81fa 1258 cmov="yes"
94e4c3a3
GP
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"
bb270c08 1266 ;;
d7b34d08 1267 sparc64)
1c5d830c 1268 add_cflags "-mcpu=v9"
d7b34d08 1269 ;;
bb270c08 1270 *)
38d0a8aa 1271 echo "WARNING: Unknown CPU \"$cpu\", ignored."
bb270c08 1272 ;;
a4adb608
MN
1273 esac
1274fi
1275
be0d52ab
MR
1276# make sure we can execute files in $TMPDIR
1277cat >$TMPE 2>>$logfile <<EOF
1278#! /bin/sh
1279EOF
1280chmod +x $TMPE >>$logfile 2>&1
1281if ! $TMPE >>$logfile 2>&1; then
1282 cat <<EOF
1283Unable to create and execute files in $TMPDIR1. Set the TMPDIR environment
68300911
DB
1284variable to another directory and make sure that $TMPDIR1 is not mounted
1285noexec.
be0d52ab
MR
1286EOF
1287 die "Sanity test failed."
1288fi
0244f743 1289rm $TMPE
be0d52ab 1290
1a268acc
MR
1291# compiler sanity check
1292check_exec <<EOF
1293int main(){
1294 return 0;
1295}
1296EOF
1297if 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."
c7ae6345 1301 echo "Only do this if you know what cross compiling means."
1a268acc
MR
1302 fi
1303 die "C compiler test failed."
1304fi
1305
87ea51e0
LB
1306# check for assembler specific support
1307
cc6a90dd 1308if test $arch = "powerpc"; then
87ea51e0
LB
1309check_cc <<EOF && dcbzl=yes
1310int main(void) {
1311 register long zero = 0;
1312 char data[1024];
1313 asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1314return 0;
1315}
1316EOF
1317fi
1318
57bd82d4
MR
1319# check for SIMD availability
1320
115329f1 1321# AltiVec flags: The FSF version of GCC differs from the Apple version
cc6a90dd 1322if test $arch = "powerpc"; then
b6e52719 1323 if test $altivec = "yes"; then
b2924696 1324 if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
30a3e5d4 1325 add_cflags "-faltivec"
b6e52719 1326 else
30a3e5d4 1327 add_cflags "-maltivec -mabi=altivec"
b6e52719
MD
1328 fi
1329 fi
1330fi
1331
0701ca7f 1332check_header altivec.h
a9a07762 1333
29799f8b 1334# check if our compiler supports Motorola AltiVec C API
ab6c65f6 1335if test $altivec = "yes"; then
6e7a01e4 1336 if test $altivec_h = "yes"; then
f25fc9b1
MR
1337 inc_altivec_h="#include <altivec.h>"
1338 else
1339 inc_altivec_h=
1340 fi
1341 check_cc <<EOF || altivec=no
dcd479c0 1342$inc_altivec_h
a9a07762
MN
1343int main(void) {
1344 vector signed int v1, v2, v3;
1345 v1 = vec_add(v2,v3);
1346 return 0;
1347}
1348EOF
1349fi
ab6c65f6 1350
854fdb51 1351# check armv5te instructions support
cc6a90dd 1352if test $armv5te = "default" -a $arch = "armv4l"; then
854fdb51
MR
1353 armv5te=no
1354 check_cc <<EOF && armv5te=yes
1355 int main(void) {
1356 __asm__ __volatile__ ("qadd r0, r0, r0");
1357 }
1358EOF
1359fi
1360
1361# check iwmmxt support
cc6a90dd 1362if test $iwmmxt = "default" -a $arch = "armv4l"; then
854fdb51
MR
1363 iwmmxt=no
1364 check_cc <<EOF && iwmmxt=yes
1365 int main(void) {
1366 __asm__ __volatile__ ("wunpckelub wr6, wr4");
1367 }
1368EOF
1369fi
1370
29799f8b 1371# mmi only available on mips
d46aba26 1372if test $mmi = "default"; then
cc6a90dd 1373 if test $arch = "mips"; then
d46aba26
LS
1374 mmi="yes"
1375 else
1376 mmi="no"
1377 fi
1378fi
1379
29799f8b 1380# check if our compiler supports mmi
57bd82d4 1381enabled mmi && check_cc <<EOF || mmi="no"
d46aba26
LS
1382int main(void) {
1383 __asm__ ("lq \$2, 0(\$2)");
1384 return 0;
1385}
1386EOF
57bd82d4 1387
57bd82d4
MR
1388# ---
1389# big/little-endian test
fac252f9 1390if test "$cross_compile" = "no"; then
57bd82d4 1391 check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
a3999908
MN
1392#include <inttypes.h>
1393int main(int argc, char ** argv){
bb270c08
DB
1394 volatile uint32_t i=0x01234567;
1395 return (*((uint8_t*)(&i))) == 0x67;
a3999908
MN
1396}
1397EOF
487a54d7 1398else
f25fc9b1 1399 # programs cannot be launched if cross compiling, so make a static guess
cc6a90dd 1400 if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
f25fc9b1
MR
1401 bigendian="yes"
1402 fi
487a54d7
FB
1403fi
1404
a3999908 1405# ---
3d204385
NK
1406# check availability of some header files
1407
0701ca7f
MR
1408check_header malloc.h
1409check_func memalign
3d204385 1410
1981aafc 1411if test "$memalign" = "no" -a "$mmx" = "yes" -a \
9ddbcae6 1412 "$memalign_hack" != "yes" -a "$targetos" != "Darwin" -a \
a9907393 1413 "$targetos" != "FreeBSD" ; then
57bd82d4 1414 die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
8bf5d58f
MN
1415fi
1416
0701ca7f 1417check_header byteswap.h
47d23bbf 1418
0701ca7f
MR
1419check_func inet_aton
1420check_func localtime_r
57bd82d4 1421enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
57bd82d4
MR
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
1425if enabled pthreads; then
9e7fd101
MR
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
57bd82d4
MR
1437fi
1438
1439# these are off by default, so fail if requested and not available
4cbed916 1440enabled dts && require libdts dts.h dts_init -ldts -lm
57bd82d4 1441enabled libgsm && require libgsm gsm.h gsm_create -lgsm
4cbed916 1442enabled mp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
be74741c 1443enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
aedf11f8 1444enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg
4d8aa1c3 1445enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
57bd82d4
MR
1446enabled xvid && require XviD xvid.h xvid_global -lxvidcore
1447enabled x264 && require x264 x264.h x264_encoder_open -lx264
1448enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
bde24d6e 1449enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
e0f80bd7 1450
3b9bee88
MR
1451# Ugh, faac uses stdcall calling convention on win32 so we can't use
1452# the generic test functions
1453if 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>
1459int main(){
1460 char *id, *cpr;
1461 faacEncGetVersion(&id, &cpr);
1462 return 0;
1463}
1464EOF
1465 restore_flags
1466fi
1467
87f1c97e
MR
1468# Ugh, recent faad2 versions have renamed all functions and #define the
1469# old names in faad.h. Generic tests won't work.
1470if 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>
1475int main(){
1476 faacDecOpen();
1477 return 0;
1478}
1479EOF
1480 restore_flags
1481fi
1482
8ac17293
SH
1483# Ugh, avisynth uses WINAPI calls. Generic tests won't work.
1484if 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>
1490int main(){
1491 AVIFileInit();
1492 return 0;
1493}
1494EOF
1495 restore_flags
1496fi
1497
1498
95e2ce4a 1499# test for lrintf in math.h
fc2b267f 1500check_exec <<EOF && lrintf=yes || lrintf=no
95e2ce4a
MN
1501#define _ISOC9X_SOURCE 1
1502#include <math.h>
1503int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1504EOF
1505
c13e1abd
FH
1506_restrict=
1507for restrict_keyword in restrict __restrict__ __restrict; do
57bd82d4 1508 check_cc <<EOF && _restrict=$restrict_keyword && break
dcd479c0
MR
1509void foo(char * $restrict_keyword p);
1510EOF
c13e1abd
FH
1511done
1512
a8721c09
FB
1513# dlopen/dlfcn.h probing
1514
0701ca7f 1515check_header dlfcn.h
a8721c09 1516
dcd479c0 1517if check_func dlopen; then
dcd479c0 1518 ldl=
0701ca7f
MR
1519elif check_func dlopen -ldl; then
1520 ldl=-ldl
a8721c09
FB
1521fi
1522
f25fc9b1
MR
1523if test "$vhook" = "default"; then
1524 vhook="$dlopen"
a8721c09
FB
1525fi
1526
22df6d18 1527if enabled_any vhook a52bin faadbin; then
57bd82d4 1528 add_extralibs $ldl
bfd2edeb
MN
1529fi
1530
fbb9d104
VP
1531if 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
1537fi
1538
8d923001
MR
1539if enabled vhook; then
1540 check_ldflags -rdynamic
1541 check_ldflags -export-dynamic
1542fi
bfd2edeb 1543
9464f2b8
DB
1544if enabled audio_beos; then
1545 add_extralibs "-lmedia -lbe"
1546fi
1547
a86b921c 1548##########################################
29799f8b 1549# imlib check
a86b921c 1550
dcd479c0
MR
1551temp_extralibs -lImlib2
1552check_ld <<EOF && imlib2=yes || imlib2=no
a8721c09
FB
1553#include <X11/Xlib.h>
1554#include <Imlib2.h>
1555int main( void ) { return (int) imlib_load_font("foo"); }
1556EOF
dcd479c0 1557restore_flags
52b41d7f 1558
a86b921c 1559##########################################
29799f8b 1560# FreeType check
a86b921c 1561
04511d53 1562freetype2=no
e2a5fd20 1563if test "x$targetos" != "xBeOS"; then
e2a3cd59 1564 if (freetype-config --version) >/dev/null 2>&1 ; then
dcd479c0
MR
1565 temp_cflags `freetype-config --cflags`
1566 temp_extralibs `freetype-config --libs`
1567 check_ld <<EOF && freetype2=yes
1568#include <ft2build.h>
1569int main( void ) { return (int) FT_Init_FreeType(0); }
1570EOF
1571 restore_flags
dee076fc 1572 fi
04511d53
PG
1573fi
1574
a86b921c 1575##########################################
29799f8b 1576# SDL check
a86b921c 1577
a86b921c
FB
1578sdl_too_old=no
1579sdl=no
6a1a892f
FD
1580SDL_CONFIG="${cross_prefix}sdl-config"
1581if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
dcd479c0
MR
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() */
1587int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1588EOF
dcd479c0
MR
1589 if test $? = 0; then
1590 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
29f3b38a 1591 if test "$_sdlversion" -lt 121 ; then
dcd479c0
MR
1592 sdl_too_old=yes
1593 else
1594 sdl=yes
29f3b38a
MR
1595 check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
1596#include <SDL.h>
1597int main(void){
1598 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1599 int w = vi->current_w;
1600 return 0;
1601}
1602EOF
dcd479c0
MR
1603 fi
1604 fi
29f3b38a 1605 restore_flags
c3f6b472 1606fi
a86b921c 1607
57bd82d4
MR
1608enabled sdl || ffplay=no
1609
146ea952 1610##########################################
29799f8b 1611# texi2html check
146ea952
NB
1612
1613texi2html=no
e2a3cd59 1614if (texi2html -version) >/dev/null 2>&1; then
146ea952
NB
1615texi2html=yes
1616fi
1617
7a91333f 1618##########################################
29799f8b 1619# IPv6 check
7a91333f 1620
0c7bb0e5 1621enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
7a91333f
HZ
1622#include <sys/types.h>
1623#include <sys/socket.h>
1624#include <netinet/in.h>
1625#include <netdb.h>
1626int 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);
12fe88b4 1631 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
7a91333f
HZ
1632}
1633EOF
1634
47f38850 1635# check for video4linux2 --- V4L2_PIX_FMT_YUV420
9d2a0f1c 1636enabled video4linux2 && check_cc <<EOF || video4linux2="no"
84fe9963 1637#include <sys/time.h>
f743a062
LA
1638#include <asm/types.h>
1639#include <linux/videodev2.h>
47f38850 1640int dummy = V4L2_PIX_FMT_YUV420;
490c189b 1641struct v4l2_buffer dummy1;
47f38850 1642EOF
47f38850 1643
57bd82d4
MR
1644enabled debug && add_cflags -g
1645
1646# add some useful compiler flags if supported
1647check_cflags -Wdeclaration-after-statement
dcd479c0
MR
1648check_cflags -Wall
1649check_cflags -Wno-switch
c07bd6a9
MN
1650check_cflags -Wdisabled-optimization
1651check_cflags -Wpointer-arith
1652check_cflags -Wredundant-decls
78fcba8f 1653enabled extrawarnings && check_cflags -Winline
cf9d24ad 1654
57bd82d4 1655# add some linker flags
e240ee67 1656check_ldflags $LDLATEFLAGS
94a3401e 1657
57bd82d4
MR
1658# not all compilers support -Os
1659test "$optimize" = "small" && check_cflags -Os
cddf3f45 1660
57bd82d4 1661if enabled optimize; then
b2924696 1662 if test -n "`$cc -v 2>&1 | grep xlc`"; then
30a3e5d4
NP
1663 add_cflags "-O5"
1664 add_ldflags "-O5"
cf9d24ad 1665 else
30a3e5d4 1666 add_cflags "-O3"
cf9d24ad 1667 fi
cddf3f45
GM
1668fi
1669
80581e98
MN
1670# PIC flags for shared library objects where they are needed
1671if test "$lshared" = "yes" ; then
f25fc9b1
MR
1672 # LIBOBJFLAGS may have already been set in the OS configuration
1673 if test -z "$LIBOBJFLAGS" ; then
cc6a90dd 1674 case "$arch" in
813457e5
MR
1675 x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
1676 esac
80581e98 1677 fi
80581e98
MN
1678fi
1679
1db54e20 1680if test "$gprof" = "yes" ; then
30a3e5d4
NP
1681 add_cflags "-p"
1682 add_ldflags "-p"
1db54e20
DB
1683fi
1684
18451f7d
MR
1685VHOOKCFLAGS="-fPIC $CFLAGS"
1686test "$needmdynamicnopic" = yes && add_cflags -mdynamic-no-pic
1687
4454dc1b
JD
1688# find if .align arg is power-of-two or not
1689if test $asmalign_pot = "unknown"; then
1690 asmalign_pot="no"
1691 echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1692fi
1693
2266e085 1694echo "install prefix $PREFIX"
29799f8b 1695echo "source path $source_path"
de6d9b64 1696echo "C compiler $cc"
4a908fbc 1697echo "make $make"
38d0a8aa 1698echo "ARCH $arch ($cpu)"
eb94aca9 1699if test "$BUILDSUF" != ""; then
f25fc9b1 1700 echo "build suffix $BUILDSUF"
eb94aca9 1701fi
29799f8b 1702echo "big-endian $bigendian"
419b8784 1703if test $arch = "x86_32" -o $arch = "x86_64"; then
f25fc9b1 1704 echo "MMX enabled $mmx"
e7768fc5 1705 echo "CMOV enabled $cmov"
94e4c3a3 1706 echo "CMOV is fast $cmov_is_fast"
e41e8342 1707fi
cc6a90dd 1708if test $arch = "armv4l"; then
1839e854 1709 echo "ARMv5TE enabled $armv5te"
f25fc9b1 1710 echo "IWMMXT enabled $iwmmxt"
eba9ae3c 1711fi
cc6a90dd 1712if test $arch = "mips"; then
f25fc9b1 1713 echo "MMI enabled $mmi"
e41e8342 1714fi
cc6a90dd 1715if test $arch = "powerpc"; then
f25fc9b1 1716 echo "AltiVec enabled $altivec"
87ea51e0 1717 echo "dcbzl available $dcbzl"
e41e8342 1718fi
de6d9b64 1719echo "gprof enabled $gprof"
0147f198 1720echo "zlib enabled $zlib"
bb4c2140 1721echo "libgsm enabled $libgsm"
a6741398 1722echo "mp3lame enabled $mp3lame"
f956e129 1723echo "libnut enabled $libnut"
9146ca37 1724echo "libogg enabled $libogg"
be74741c 1725echo "Vorbis enabled $libvorbis"
29799f8b 1726echo "FAAD enabled $faad"
445ad18d 1727echo "faadbin enabled $faadbin"
29799f8b
DB
1728echo "FAAC enabled $faac"
1729echo "XviD enabled $xvid"
6662ec29 1730echo "x264 enabled $x264"
5cbcf02c 1731echo "a52 support $a52"
57514323 1732echo "a52 dlopened $a52bin"
29799f8b 1733echo "DTS support $dts"
bba9b16c 1734echo "pp support $pp"
790c9ca7 1735echo "Software Scaler enabled $swscaler"
8ac17293 1736echo "AVISynth enabled $avisynth"
cddf3f45 1737echo "debug symbols $debug"
65d1bea2 1738echo "strip symbols $dostrip"
cddf3f45 1739echo "optimize $optimize"
320d060a 1740echo "static $lstatic"
1ddf5ba1 1741echo "shared $lshared"
29799f8b 1742echo "video hooking $vhook"
a86b921c
FB
1743echo "SDL support $sdl"
1744if test $sdl_too_old = "yes"; then
f25fc9b1 1745 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
a86b921c 1746fi
68892110 1747
f25fc9b1
MR
1748if test "$vhook" = "yes"; then
1749 echo "Imlib2 support $imlib2"
1750 echo "FreeType support $freetype2"
68892110 1751fi
bde24d6e 1752echo "Sun medialib support" $mlib
9c3d33d6 1753echo "pthreads support" $pthreads
bc634f6f
ZK
1754echo "AMR-NB float support" $amr_nb
1755echo "AMR-NB fixed support" $amr_nb_fixed
d663a1fd 1756echo "AMR-WB float support" $amr_wb
2a515c08 1757echo "AMR-WB IF2 support" $amr_if2
7a91333f
HZ
1758echo "network support $network"
1759if test "$network" = "yes" ; then
f25fc9b1 1760 echo "IPv6 support $ipv6"
7a91333f 1761fi
4454dc1b 1762echo ".align is power-of-two" $asmalign_pot
b2e3c528 1763if test "$gpl" = "no" ; then
f25fc9b1 1764 echo "License: LGPL"
b2e3c528 1765else
f25fc9b1 1766 echo "License: GPL"
b2e3c528 1767fi
de6d9b64 1768
29799f8b 1769echo "Creating config.mak and config.h..."
de6d9b64 1770
29799f8b
DB
1771echo "# Automatically generated by configure - do not modify!" > config.mak
1772echo "/* Automatically generated by configure - do not modify! */" > $TMPH
f255e0ab 1773echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
de6d9b64 1774
2266e085
DB
1775echo "PREFIX=$PREFIX" >> config.mak
1776echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
9a695e98 1777echo "libdir=\$(DESTDIR)$libdir" >> config.mak
84c22efd 1778echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1d67a1d4 1779echo "incdir=\$(DESTDIR)$incdir" >> config.mak
9a695e98
DB
1780echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1781echo "mandir=\$(DESTDIR)$mandir" >> config.mak
4a908fbc 1782echo "MAKE=$make" >> config.mak
980fc7b8
FB
1783echo "CC=$cc" >> config.mak
1784echo "AR=$ar" >> config.mak
be7109c1 1785echo "RANLIB=$ranlib" >> config.mak
65d1bea2 1786if test "$dostrip" = "yes" ; then
f25fc9b1
MR
1787 echo "STRIP=$strip" >> config.mak
1788 echo "INSTALLSTRIP=$installstrip" >> config.mak
65d1bea2 1789else
f25fc9b1
MR
1790 echo "STRIP=echo ignoring strip" >> config.mak
1791 echo "INSTALLSTRIP=" >> config.mak
65d1bea2 1792fi
75388c74 1793
a9b3f630 1794echo "OPTFLAGS=$CFLAGS" >> config.mak
408382a4 1795echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
0f3cb305 1796echo "LDFLAGS=$LDFLAGS" >> config.mak
f39e56a8 1797echo "LDCONFIG=$LDCONFIG" >> config.mak
c536cb09 1798echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
e1707f52 1799echo "SHFLAGS=$SHFLAGS" >> config.mak
408382a4 1800echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
fbb9d104 1801echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
80581e98 1802echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
b12f8273 1803echo "BUILD_STATIC=$lstatic" >> config.mak
eb94aca9 1804echo "BUILDSUF=$BUILDSUF" >> config.mak
f3ec2d46 1805echo "LIBPREF=$LIBPREF" >> config.mak
eb94aca9 1806echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
320d060a
DB
1807if test "$lstatic" = "yes" ; then
1808 echo "LIB=$LIB" >> config.mak
1a44a8b6
AS
1809else # Some Make complain if this variable does not exist.
1810 echo "LIB=" >> config.mak
320d060a 1811fi
f3ec2d46 1812echo "SLIBPREF=$SLIBPREF" >> config.mak
eb94aca9
CY
1813echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1814echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
b2828252 1815echo "TARGET_OS=$targetos" >> config.mak
4dc62701
MR
1816
1817ucarch=`toupper $arch`
1818echo "TARGET_ARCH_${ucarch}=yes" >> config.mak
1819echo "#define ARCH_${ucarch} 1" >> $TMPH
1820
1821# special cases
1822case "$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 ;;
1839esac
1840
0f3cb305
FB
1841if test "$bigendian" = "yes" ; then
1842 echo "WORDS_BIGENDIAN=yes" >> config.mak
1843 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
91d1f1a4 1844fi
57514323 1845if test "$mmx" = "yes" ; then
980fc7b8 1846 echo "TARGET_MMX=yes" >> config.mak
045ed63f 1847 echo "#define HAVE_MMX 1" >> $TMPH
e82c5a8c 1848 echo "#define __CPU__ 586" >> $TMPH
de6d9b64 1849fi
e7768fc5
GP
1850if test "$cmov" = "yes" ; then
1851 echo "TARGET_CMOV=yes" >> config.mak
1852 echo "#define HAVE_CMOV 1" >> $TMPH
1853fi
94e4c3a3
GP
1854if test "$cmov_is_fast" = "yes" ; then
1855 echo "TARGET_CMOV_IS_FAST=yes" >> config.mak
1856 echo "#define CMOV_IS_FAST 1" >> $TMPH
1857fi
1839e854
SS
1858if test "$armv5te" = "yes" ; then
1859 echo "TARGET_ARMV5TE=yes" >> config.mak
1860 echo "#define HAVE_ARMV5TE 1" >> $TMPH
1861fi
eba9ae3c
GB
1862if test "$iwmmxt" = "yes" ; then
1863 echo "TARGET_IWMMXT=yes" >> config.mak
1864 echo "#define HAVE_IWMMXT 1" >> $TMPH
1865fi
d46aba26
LS
1866if test "$mmi" = "yes" ; then
1867 echo "TARGET_MMI=yes" >> config.mak
1868 echo "#define HAVE_MMI 1" >> $TMPH
1869fi
87ea51e0 1870
ab6c65f6
BF
1871if test "$altivec" = "yes" ; then
1872 echo "TARGET_ALTIVEC=yes" >> config.mak
1873 echo "#define HAVE_ALTIVEC 1" >> $TMPH
f80f7964 1874fi
44161118 1875
a86b921c 1876if test "$sdl" = "yes" ; then
6a1a892f
FD
1877 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1878 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
a86b921c 1879fi
146ea952
NB
1880if test "$texi2html" = "yes"; then
1881 echo "BUILD_DOC=yes" >> config.mak
1882fi
5a872801 1883
790c9ca7 1884sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
6d9a2421 1885pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
5a872801
LB
1886lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
1887lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1888lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1889
1890
1891
57514323 1892if test "$lshared" = "yes" ; then
320d060a 1893 echo "#define BUILD_SHARED_AV 1" >> $TMPH
0319c531 1894 echo "BUILD_SHARED=yes" >> config.mak
97006039 1895 echo "PIC=-fPIC -DPIC" >> config.mak
39503a27 1896 echo "SPPMAJOR=${lavc_version%%.*}" >> config.mak
5a872801 1897 echo "SPPVERSION=$lavc_version" >> config.mak
39503a27 1898 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
5a872801 1899 echo "LAVCVERSION=$lavc_version" >> config.mak
39503a27 1900 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
5a872801 1901 echo "LAVFVERSION=$lavf_version" >> config.mak
39503a27 1902 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
5a872801 1903 echo "LAVUVERSION=$lavu_version" >> config.mak
790c9ca7
LA
1904 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
1905 echo "SWSVERSION=$sws_version" >> config.mak
4bdd05e7 1906 echo "SLIBNAME=${SLIBNAME}" >> config.mak
f3b60109
DB
1907 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
1908 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
5cb854e1 1909 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
0319c531 1910fi
d7e27559 1911echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
ef0bc4c9 1912echo "EXTRALIBS=$extralibs" >> config.mak
d2845d68 1913
44161118
MR
1914enabled_any $ENCODER_LIST && enable encoders
1915enabled_any $DECODER_LIST && enable decoders
1916enabled_any $MUXER_LIST && enable muxers
1917enabled_any $DEMUXER_LIST && enable demuxers
f956e129 1918
b265431e
MR
1919enabled_any pthreads beosthreads os2threads w32threads && enable threads
1920
44161118
MR
1921print_config HAVE_ $TMPH config.mak $HAVE_LIST
1922print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
8ac17293 1923
b2828252 1924if test "$targetos" = "Darwin"; then
90cee0c3 1925 echo "#define CONFIG_DARWIN 1" >> $TMPH
90cee0c3
MN
1926fi
1927
c13e1abd
FH
1928echo "#define restrict $_restrict" >> $TMPH
1929
bb801c97
MN
1930if test "$optimize" = "small"; then
1931 echo "#define always_inline" >> $TMPH
e5f28e8f 1932 echo "#define CONFIG_SMALL 1" >> $TMPH
bb801c97
MN
1933fi
1934
997baf01
MR
1935echo "SRC_PATH=\"$source_path\"" >> config.mak
1936echo "SRC_PATH_BARE=$source_path" >> config.mak
1937echo "BUILD_ROOT=\"$PWD\"" >> config.mak
0f3cb305 1938
2a515c08
TM
1939if test "$amr_if2" = "yes" ; then
1940 echo "AMR_CFLAGS=-DIF2=1" >> config.mak
1941fi
1942
8156056e 1943# Apparently it's not possible to portably echo a backslash.
4454dc1b 1944if test "$asmalign_pot" = "yes" ; then
8156056e 1945 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
4454dc1b 1946else
8156056e 1947 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
4454dc1b
JD
1948fi
1949
bc634f6f 1950
55006fc0 1951for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
44161118 1952 ucname="`toupper $codec`"
a8d04fba
MR
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
009cf97d
MN
1962done
1963
9cb2cf10 1964# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
c683a5d1 1965if ! cmp -s $TMPH config.h; then
9cb2cf10
DB
1966 mv -f $TMPH config.h
1967else
1968 echo "config.h is unchanged"
1969fi
3d204385 1970
f3ec2d46 1971rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
def4272a 1972
165af439
MR
1973# build tree in object directory if source path is different from current one
1974if 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
2012fi
def4272a 2013
29799f8b 2014# build pkg-config files libav*.pc and libpostproc.pc
31abdc45 2015# libavutil.pc
2016cat <<EOF >libavutil.pc
2266e085 2017prefix=$PREFIX
a94e666c 2018exec_prefix=\${prefix}
31abdc45 2019libdir=\${exec_prefix}/lib
a94e666c 2020includedir=\${prefix}/include
31abdc45 2021
2022Name: libavutil
2023Description: FFmpeg utility library
2024Version: $lavu_version
115329f1 2025Requires:
31abdc45 2026Conflicts:
2027Libs: -L\${libdir} -lavutil
2028Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2029EOF
2030
2031cat <<EOF >libavutil-uninstalled.pc
2032prefix=
2033exec_prefix=
2034libdir=\${pcfiledir}/libavutil
2035includedir=\${pcfiledir}/libavutil
2036
2037Name: libavutil
2038Description: FFmpeg utility library
2039Version: $lavu_version
115329f1 2040Requires:
31abdc45 2041Conflicts:
2042Libs: \${libdir}/${LIBPREF}avutil${LIBSUF}
2043Cflags: -I\${includedir}
2044EOF
def4272a
AJ
2045
2046# libavcodec.pc
2047cat <<EOF >libavcodec.pc
2266e085 2048prefix=$PREFIX
a94e666c 2049exec_prefix=\${prefix}
def4272a 2050libdir=\${exec_prefix}/lib
a94e666c 2051includedir=\${prefix}/include
def4272a
AJ
2052
2053Name: libavcodec
2054Description: FFmpeg codec library
31abdc45 2055Version: $lavc_version
c99dd233 2056Requires: $pkg_requires libavutil = $lavu_version
def4272a
AJ
2057Conflicts:
2058Libs: -L\${libdir} -lavcodec $extralibs
2059Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2060EOF
2061
2062cat <<EOF >libavcodec-uninstalled.pc
2063prefix=
2064exec_prefix=
2065libdir=\${pcfiledir}/libavcodec
2066includedir=\${pcfiledir}/libavcodec
2067
2068Name: libavcodec
2069Description: FFmpeg codec library
31abdc45 2070Version: $lavc_version
c99dd233 2071Requires: $pkg_requires libavutil = $lavu_version
def4272a
AJ
2072Conflicts:
2073Libs: \${libdir}/${LIBPREF}avcodec${LIBSUF} $extralibs
2074Cflags: -I\${includedir}
2075EOF
2076
2077# libavformat.pc
2078cat <<EOF >libavformat.pc
2266e085 2079prefix=$PREFIX
a94e666c 2080exec_prefix=\${prefix}
def4272a 2081libdir=\${exec_prefix}/lib
a94e666c 2082includedir=\${prefix}/include
def4272a
AJ
2083
2084Name: libavformat
2085Description: FFmpeg container format library
31abdc45 2086Version: $lavf_version
c99dd233 2087Requires: $pkg_requires libavcodec = $lavc_version
def4272a
AJ
2088Conflicts:
2089Libs: -L\${libdir} -lavformat $extralibs
2090Cflags: -I\${includedir} -I\${includedir}/ffmpeg
2091EOF
2092
2093cat <<EOF >libavformat-uninstalled.pc
2094prefix=
2095exec_prefix=
2096libdir=\${pcfiledir}/libavformat
2097includedir=\${pcfiledir}/libavformat
2098
2099Name: libavformat
2100Description: FFmpeg container format library
31abdc45 2101Version: $lavf_version
c99dd233 2102Requires: $pkg_requires libavcodec = $lavc_version
def4272a
AJ
2103Conflicts:
2104Libs: \${libdir}/${LIBPREF}avformat${LIBSUF} $extralibs
2105Cflags: -I\${includedir}
2106EOF
2107
2108
2109# libpostproc.pc
2110cat <<EOF >libpostproc.pc
2266e085 2111prefix=$PREFIX
a94e666c 2112exec_prefix=\${prefix}
def4272a 2113libdir=\${exec_prefix}/lib
a94e666c 2114includedir=\${prefix}/include
def4272a
AJ
2115
2116Name: libpostproc
2117Description: FFmpeg post processing library
31abdc45 2118Version: $lavc_version
115329f1 2119Requires:
def4272a
AJ
2120Conflicts:
2121Libs: -L\${libdir} -lpostproc
2122Cflags: -I\${includedir} -I\${includedir}/postproc
2123EOF
2124
2125cat <<EOF >libpostproc-uninstalled.pc
2126prefix=
2127exec_prefix=
6d9a2421
DB
2128libdir=\${pcfiledir}/libpostproc
2129includedir=\${pcfiledir}/libpostproc
def4272a
AJ
2130
2131Name: libpostproc
2132Description: FFmpeg post processing library
31abdc45 2133Version: $lavc_version
115329f1 2134Requires:
def4272a
AJ
2135Conflicts:
2136Libs: \${libdir}/${LIBPREF}postproc${LIBSUF}
2137Cflags: -I\${includedir}
2138EOF
790c9ca7 2139
6c0d0413 2140if 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"
2144else
2145 sws_pc_libs=""
2146 sws_pc_uninstalled_libs=""
2147 sws_pc_requires="$pkg_requires libavcodec = $lavc_version"
2148fi
790c9ca7
LA
2149# libswscale.pc
2150cat <<EOF >libswscale.pc
2151prefix=$PREFIX
2152exec_prefix=\${prefix}
2153libdir=\${exec_prefix}/lib
2154includedir=\${prefix}/include
2155
2156Name: libswscale
2157Description: FFmpeg image rescaling library
2158Version: $sws_version
6c0d0413 2159Requires: $sws_pc_requires
790c9ca7 2160Conflicts:
6c0d0413 2161Libs: $sws_pc_libs
790c9ca7
LA
2162Cflags: -I\${includedir} -I\${includedir}/swscale
2163EOF
2164
2165cat <<EOF >libswscale-uninstalled.pc
2166prefix=
2167exec_prefix=
2168libdir=\${pcfiledir}/libswscale
2169includedir=\${pcfiledir}/libswscale
2170
2171Name: libswscale
2172Description: FFmpeg image rescaling library
2173Version: $sws_version
6c0d0413 2174Requires: $sws_pc_requires
790c9ca7 2175Conflicts:
6c0d0413 2176Libs: $sws_pc_uninstalled_libs
790c9ca7
LA
2177Cflags: -I\${includedir}
2178EOF