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