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