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