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