Seeking support in WavPack
[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
e3c00e34 1164if ! disabled logging ; 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
e3c00e34 1317if ! disabled optimize ; then
2a1a6b64 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 1332if test $cpu != "generic"; then
1658bc4f
DB
1333 warn_altivec_enabled(){
1334 enabled altivec && echo "WARNING: Tuning for $1 but AltiVec enabled.";
1335 }
1336 warn_altivec_disabled(){
1337 disabled altivec && echo "WARNING: Tuning for $1 but AltiVec disabled.";
1338 }
38d0a8aa 1339 case $cpu in
bb270c08 1340 601|ppc601|PowerPC601)
1c5d830c 1341 add_cflags "-mcpu=601"
1658bc4f 1342 warn_altivec_enabled PPC601
bb270c08
DB
1343 ;;
1344 603*|ppc603*|PowerPC603*)
1c5d830c 1345 add_cflags "-mcpu=603"
1658bc4f 1346 warn_altivec_enabled PPC603
bb270c08
DB
1347 ;;
1348 604*|ppc604*|PowerPC604*)
1c5d830c 1349 add_cflags "-mcpu=604"
1658bc4f 1350 warn_altivec_enabled PPC604
bb270c08
DB
1351 ;;
1352 G3|g3|75*|ppc75*|PowerPC75*)
1c5d830c 1353 add_cflags "-mcpu=750 -mpowerpc-gfxopt"
1658bc4f 1354 warn_altivec_enabled PPC75x
bb270c08
DB
1355 ;;
1356 G4|g4|745*|ppc745*|PowerPC745*)
1c5d830c 1357 add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
1658bc4f 1358 warn_altivec_disabled PPC745x
bb270c08
DB
1359 ;;
1360 74*|ppc74*|PowerPC74*)
1c5d830c 1361 add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
1658bc4f 1362 warn_altivec_disabled PPC74xx
bb270c08
DB
1363 ;;
1364 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1c5d830c 1365 add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1658bc4f 1366 warn_altivec_disabled PPC970
9007f514 1367 POWERPCMODE="64bits"
bb270c08 1368 ;;
e7768fc5
GP
1369 # targets that do NOT support conditional mov (cmov)
1370 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
38d0a8aa 1371 add_cflags "-march=$cpu"
e7768fc5
GP
1372 cmov="no"
1373 ;;
1374 # targets that do support conditional mov (cmov)
416519dd 1375 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
e7768fc5 1376 add_cflags "-march=$cpu"
4c8d81fa 1377 cmov="yes"
7073e9fc 1378 fast_cmov="yes"
94e4c3a3
GP
1379 ;;
1380 # targets that do support conditional mov but on which it's slow
1381 pentium4|prescott|nocona)
1382 add_cflags "-march=$cpu"
1383 cmov="yes"
7073e9fc 1384 fast_cmov="no"
bb270c08 1385 ;;
d7b34d08 1386 sparc64)
1c5d830c 1387 add_cflags "-mcpu=v9"
d7b34d08 1388 ;;
bb270c08 1389 *)
38d0a8aa 1390 echo "WARNING: Unknown CPU \"$cpu\", ignored."
bb270c08 1391 ;;
a4adb608
MN
1392 esac
1393fi
1394
be0d52ab
MR
1395# make sure we can execute files in $TMPDIR
1396cat >$TMPE 2>>$logfile <<EOF
1397#! /bin/sh
1398EOF
1399chmod +x $TMPE >>$logfile 2>&1
1400if ! $TMPE >>$logfile 2>&1; then
1401 cat <<EOF
1402Unable to create and execute files in $TMPDIR1. Set the TMPDIR environment
68300911
DB
1403variable to another directory and make sure that $TMPDIR1 is not mounted
1404noexec.
be0d52ab
MR
1405EOF
1406 die "Sanity test failed."
1407fi
0244f743 1408rm $TMPE
be0d52ab 1409
1a268acc
MR
1410# compiler sanity check
1411check_exec <<EOF
1412int main(){
1413 return 0;
1414}
1415EOF
1416if test "$?" != 0; then
1417 echo "$cc is unable to create an executable file."
1418 if test -z "$cross_prefix" -a "$cross_compile" = no; then
1419 echo "If $cc is a cross-compiler, use the --cross-compile option."
c7ae6345 1420 echo "Only do this if you know what cross compiling means."
1a268acc
MR
1421 fi
1422 die "C compiler test failed."
1423fi
1424
87ea51e0
LB
1425# check for assembler specific support
1426
cc6a90dd 1427if test $arch = "powerpc"; then
87ea51e0
LB
1428check_cc <<EOF && dcbzl=yes
1429int main(void) {
1430 register long zero = 0;
1431 char data[1024];
1432 asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1433return 0;
1434}
1435EOF
1436fi
1437
57bd82d4
MR
1438# check for SIMD availability
1439
115329f1 1440# AltiVec flags: The FSF version of GCC differs from the Apple version
cc6a90dd 1441if test $arch = "powerpc"; then
90be59ef 1442 if enabled altivec; then
b2924696 1443 if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
30a3e5d4 1444 add_cflags "-faltivec"
b6e52719 1445 else
30a3e5d4 1446 add_cflags "-maltivec -mabi=altivec"
b6e52719
MD
1447 fi
1448 fi
1449fi
1450
0701ca7f 1451check_header altivec.h
a9a07762 1452
29799f8b 1453# check if our compiler supports Motorola AltiVec C API
90be59ef
RP
1454if enabled altivec; then
1455 if enabled altivec_h; then
f25fc9b1
MR
1456 inc_altivec_h="#include <altivec.h>"
1457 else
1458 inc_altivec_h=
1459 fi
1460 check_cc <<EOF || altivec=no
dcd479c0 1461$inc_altivec_h
a9a07762
MN
1462int main(void) {
1463 vector signed int v1, v2, v3;
1464 v1 = vec_add(v2,v3);
1465 return 0;
1466}
1467EOF
1468fi
ab6c65f6 1469
854fdb51 1470# check armv5te instructions support
cc6a90dd 1471if test $armv5te = "default" -a $arch = "armv4l"; then
854fdb51
MR
1472 armv5te=no
1473 check_cc <<EOF && armv5te=yes
1474 int main(void) {
1475 __asm__ __volatile__ ("qadd r0, r0, r0");
1476 }
1477EOF
1478fi
1479
edab3048
MR
1480if test $armv6 = "default" -a $arch = "armv4l"; then
1481 check_cc <<EOF && armv6=yes || armv6=no
1482int main(void) {
1483 __asm__ __volatile__ ("sadd16 r0, r0, r0");
1484}
1485EOF
1486fi
1487
854fdb51 1488# check iwmmxt support
cc6a90dd 1489if test $iwmmxt = "default" -a $arch = "armv4l"; then
854fdb51
MR
1490 iwmmxt=no
1491 check_cc <<EOF && iwmmxt=yes
1492 int main(void) {
1493 __asm__ __volatile__ ("wunpckelub wr6, wr4");
1494 }
1495EOF
1496fi
1497
29799f8b 1498# mmi only available on mips
d46aba26 1499if test $mmi = "default"; then
cc6a90dd 1500 if test $arch = "mips"; then
d46aba26
LS
1501 mmi="yes"
1502 else
1503 mmi="no"
1504 fi
1505fi
1506
29799f8b 1507# check if our compiler supports mmi
57bd82d4 1508enabled mmi && check_cc <<EOF || mmi="no"
d46aba26
LS
1509int main(void) {
1510 __asm__ ("lq \$2, 0(\$2)");
1511 return 0;
1512}
1513EOF
57bd82d4 1514
57bd82d4
MR
1515# ---
1516# big/little-endian test
37970ebf 1517if disabled cross_compile; then
57bd82d4 1518 check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
a3999908
MN
1519#include <inttypes.h>
1520int main(int argc, char ** argv){
bb270c08
DB
1521 volatile uint32_t i=0x01234567;
1522 return (*((uint8_t*)(&i))) == 0x67;
a3999908
MN
1523}
1524EOF
487a54d7 1525else
f25fc9b1 1526 # programs cannot be launched if cross compiling, so make a static guess
cc6a90dd 1527 if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
f25fc9b1
MR
1528 bigendian="yes"
1529 fi
487a54d7
FB
1530fi
1531
a3999908 1532# ---
3d204385
NK
1533# check availability of some header files
1534
0701ca7f
MR
1535check_header malloc.h
1536check_func memalign
3d204385 1537
d7a95624 1538if disabled_all memalign memalign_hack && enabled_all need_memalign ; then
57bd82d4 1539 die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
8bf5d58f
MN
1540fi
1541
0701ca7f 1542check_header byteswap.h
47d23bbf 1543
0701ca7f
MR
1544check_func inet_aton
1545check_func localtime_r
57bd82d4 1546enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
57bd82d4
MR
1547
1548# check for some common methods of building with pthread support
1549# do this before the optional library checks as some of them require pthreads
1550if enabled pthreads; then
9e7fd101
MR
1551 if check_func pthread_create; then
1552 :
1553 elif check_func pthread_create -pthread; then
1554 add_cflags -pthread
1555 add_ldflags -pthread
1556 elif check_func pthread_create -pthreads; then
1557 add_cflags -pthreads
1558 add_ldflags -pthreads
1559 elif ! check_lib pthread.h pthread_create -lpthread; then
1560 die "ERROR: can't find pthreads library"
1561 fi
57bd82d4
MR
1562fi
1563
e5f94c2b
RP
1564for thread in pthreads beosthreads os2threads w32threads; do
1565 if enabled $thread; then
e3c00e34 1566 if ! disabled thread_type ; then
e5f94c2b
RP
1567 die "ERROR: Only one thread type must be selected."
1568 else
1569 thread_type="$thread"
1570 fi
1571 fi
1572done
1573
57bd82d4 1574# these are off by default, so fail if requested and not available
910c62e1
DB
1575enabled libdts && require libdts dts.h dts_init -ldts -lm
1576enabled libgsm && require libgsm gsm.h gsm_create -lgsm
6ebe07fb 1577enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
910c62e1
DB
1578enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
1579enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
1580enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg
1581enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
1582enabled xvid && require XviD xvid.h xvid_global -lxvidcore
1583enabled x264 && require x264 x264.h x264_encoder_open -lx264
1584enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
1585enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
e0f80bd7 1586
2eed5a46 1587# Ugh, libfaac uses stdcall calling convention on win32 so we can't use
3b9bee88 1588# the generic test functions
2eed5a46 1589if enabled libfaac; then
3b9bee88
MR
1590 save_flags
1591 temp_extralibs -lfaac
1592 check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
1593#include <stdint.h>
1594#include <faac.h>
1595int main(){
1596 char *id, *cpr;
1597 faacEncGetVersion(&id, &cpr);
1598 return 0;
1599}
1600EOF
1601 restore_flags
1602fi
1603
87f1c97e
MR
1604# Ugh, recent faad2 versions have renamed all functions and #define the
1605# old names in faad.h. Generic tests won't work.
2eed5a46 1606if enabled libfaad; then
87f1c97e
MR
1607 save_flags
1608 temp_extralibs -lfaad
1609 check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
1610#include <faad.h>
1611int main(){
1612 faacDecOpen();
1613 return 0;
1614}
1615EOF
1616 restore_flags
1617fi
1618
8ac17293
SH
1619# Ugh, avisynth uses WINAPI calls. Generic tests won't work.
1620if enabled avisynth; then
1621 save_flags
1622 temp_extralibs -lvfw32
1623 check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
1624#include <windows.h>
1625#include <vfw.h>
1626int main(){
1627 AVIFileInit();
1628 return 0;
1629}
1630EOF
1631 restore_flags
1632fi
1633
1634
95e2ce4a 1635# test for lrintf in math.h
fc2b267f 1636check_exec <<EOF && lrintf=yes || lrintf=no
95e2ce4a
MN
1637#define _ISOC9X_SOURCE 1
1638#include <math.h>
1639int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1640EOF
1641
c13e1abd
FH
1642_restrict=
1643for restrict_keyword in restrict __restrict__ __restrict; do
57bd82d4 1644 check_cc <<EOF && _restrict=$restrict_keyword && break
dcd479c0
MR
1645void foo(char * $restrict_keyword p);
1646EOF
c13e1abd
FH
1647done
1648
a8721c09
FB
1649# dlopen/dlfcn.h probing
1650
0701ca7f 1651check_header dlfcn.h
a8721c09 1652
dcd479c0 1653if check_func dlopen; then
dcd479c0 1654 ldl=
0701ca7f
MR
1655elif check_func dlopen -ldl; then
1656 ldl=-ldl
a8721c09
FB
1657fi
1658
f25fc9b1
MR
1659if test "$vhook" = "default"; then
1660 vhook="$dlopen"
a8721c09
FB
1661fi
1662
2eed5a46 1663if enabled_any vhook liba52bin libfaadbin; then
57bd82d4 1664 add_extralibs $ldl
bfd2edeb
MN
1665fi
1666
fbb9d104
VP
1667if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
1668 vhook="no"
1669 echo
1670 echo "At the moment vhooks don't work on Cygwin static builds."
1671 echo "Patches welcome."
1672 echo
1673fi
1674
8d923001
MR
1675if enabled vhook; then
1676 check_ldflags -rdynamic
1677 check_ldflags -export-dynamic
1678fi
bfd2edeb 1679
9464f2b8
DB
1680if enabled audio_beos; then
1681 add_extralibs "-lmedia -lbe"
1682fi
1683
a86b921c 1684##########################################
29799f8b 1685# imlib check
a86b921c 1686
dcd479c0
MR
1687temp_extralibs -lImlib2
1688check_ld <<EOF && imlib2=yes || imlib2=no
a8721c09
FB
1689#include <X11/Xlib.h>
1690#include <Imlib2.h>
1691int main( void ) { return (int) imlib_load_font("foo"); }
1692EOF
dcd479c0 1693restore_flags
52b41d7f 1694
a86b921c 1695##########################################
29799f8b 1696# FreeType check
a86b921c 1697
04511d53 1698freetype2=no
e2a5fd20 1699if test "x$targetos" != "xBeOS"; then
e2a3cd59 1700 if (freetype-config --version) >/dev/null 2>&1 ; then
dcd479c0
MR
1701 temp_cflags `freetype-config --cflags`
1702 temp_extralibs `freetype-config --libs`
1703 check_ld <<EOF && freetype2=yes
1704#include <ft2build.h>
1705int main( void ) { return (int) FT_Init_FreeType(0); }
1706EOF
1707 restore_flags
dee076fc 1708 fi
04511d53
PG
1709fi
1710
a86b921c 1711##########################################
29799f8b 1712# SDL check
a86b921c 1713
a86b921c
FB
1714sdl_too_old=no
1715sdl=no
6a1a892f
FD
1716SDL_CONFIG="${cross_prefix}sdl-config"
1717if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
dcd479c0
MR
1718 temp_cflags `"${SDL_CONFIG}" --cflags`
1719 temp_extralibs `"${SDL_CONFIG}" --libs`
1720 check_ld <<EOF
1721#include <SDL.h>
1722#undef main /* We don't want SDL to override our main() */
1723int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1724EOF
dcd479c0
MR
1725 if test $? = 0; then
1726 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
29f3b38a 1727 if test "$_sdlversion" -lt 121 ; then
dcd479c0
MR
1728 sdl_too_old=yes
1729 else
1730 sdl=yes
29f3b38a
MR
1731 check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
1732#include <SDL.h>
1733int main(void){
1734 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1735 int w = vi->current_w;
1736 return 0;
1737}
1738EOF
dcd479c0
MR
1739 fi
1740 fi
29f3b38a 1741 restore_flags
c3f6b472 1742fi
a86b921c 1743
57bd82d4
MR
1744enabled sdl || ffplay=no
1745
146ea952 1746##########################################
29799f8b 1747# texi2html check
146ea952
NB
1748
1749texi2html=no
e2a3cd59 1750if (texi2html -version) >/dev/null 2>&1; then
146ea952
NB
1751texi2html=yes
1752fi
1753
7a91333f 1754##########################################
29799f8b 1755# IPv6 check
7a91333f 1756
0c7bb0e5 1757enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
7a91333f
HZ
1758#include <sys/types.h>
1759#include <sys/socket.h>
1760#include <netinet/in.h>
1761#include <netdb.h>
1762int main( void ) {
1763 struct sockaddr_storage saddr;
1764 struct ipv6_mreq mreq6;
1765 getaddrinfo(0,0,0,0);
1766 getnameinfo(0,0,0,0,0,0,0);
12fe88b4 1767 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
7a91333f
HZ
1768}
1769EOF
1770
47f38850 1771# check for video4linux2 --- V4L2_PIX_FMT_YUV420
9d2a0f1c 1772enabled video4linux2 && check_cc <<EOF || video4linux2="no"
84fe9963 1773#include <sys/time.h>
f743a062
LA
1774#include <asm/types.h>
1775#include <linux/videodev2.h>
47f38850 1776int dummy = V4L2_PIX_FMT_YUV420;
490c189b 1777struct v4l2_buffer dummy1;
47f38850 1778EOF
47f38850 1779
f8aa696f
DB
1780# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1781if enabled bktr; then
1782 check_header dev/bktr/ioctl_meteor.h
1783 check_header dev/bktr/ioctl_bt848.h
1784
1785 check_header machine/ioctl_meteor.h
1786 check_header machine/ioctl_bt848.h
1787
1788 check_header dev/video/meteor/ioctl_meteor.h
1789 check_header dev/video/bktr/ioctl_bt848.h
1790
1791 check_header dev/ic/bt8xx.h
1792fi
1793
f58f4ce1 1794# Deal with the x11 frame grabber
56a059ac 1795enabled x11grab &&
f58f4ce1
GP
1796enabled gpl &&
1797enabled x11_grab_device_demuxer &&
1798check_header X11/Xlib.h &&
1799check_header X11/extensions/XShm.h &&
1800check_func XOpenDisplay -lX11 &&
1801check_func XShmCreateImage -lX11 -lXext &&
1802add_extralibs -lX11 -lXext ||
1803disable x11_grab_device_demuxer
1804
57bd82d4
MR
1805enabled debug && add_cflags -g
1806
1807# add some useful compiler flags if supported
1808check_cflags -Wdeclaration-after-statement
dcd479c0
MR
1809check_cflags -Wall
1810check_cflags -Wno-switch
c07bd6a9
MN
1811check_cflags -Wdisabled-optimization
1812check_cflags -Wpointer-arith
1813check_cflags -Wredundant-decls
cc1fb623 1814check_cflags -Wno-pointer-sign
78fcba8f 1815enabled extrawarnings && check_cflags -Winline
cf9d24ad 1816
57bd82d4 1817# add some linker flags
e240ee67 1818check_ldflags $LDLATEFLAGS
94a3401e 1819
57bd82d4
MR
1820# not all compilers support -Os
1821test "$optimize" = "small" && check_cflags -Os
cddf3f45 1822
57bd82d4 1823if enabled optimize; then
b2924696 1824 if test -n "`$cc -v 2>&1 | grep xlc`"; then
30a3e5d4
NP
1825 add_cflags "-O5"
1826 add_ldflags "-O5"
cf9d24ad 1827 else
30a3e5d4 1828 add_cflags "-O3"
cf9d24ad 1829 fi
cddf3f45
GM
1830fi
1831
80581e98 1832# PIC flags for shared library objects where they are needed
90be59ef 1833if enabled lshared; then
f25fc9b1
MR
1834 # LIBOBJFLAGS may have already been set in the OS configuration
1835 if test -z "$LIBOBJFLAGS" ; then
cc6a90dd 1836 case "$arch" in
813457e5
MR
1837 x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
1838 esac
80581e98 1839 fi
80581e98
MN
1840fi
1841
90be59ef 1842if enabled gprof; then
30a3e5d4
NP
1843 add_cflags "-p"
1844 add_ldflags "-p"
1db54e20
DB
1845fi
1846
18451f7d 1847VHOOKCFLAGS="-fPIC $CFLAGS"
90be59ef 1848enabled needmdynamicnopic && add_cflags -mdynamic-no-pic
18451f7d 1849
4454dc1b
JD
1850# find if .align arg is power-of-two or not
1851if test $asmalign_pot = "unknown"; then
1852 asmalign_pot="no"
1853 echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1854fi
1855
f36958f8
DB
1856echo "install prefix $PREFIX"
1857echo "source path $source_path"
1858echo "C compiler $cc"
1859echo "make $make"
bfd5afd8 1860echo ".align is power-of-two $asmalign_pot"
f36958f8 1861echo "ARCH $arch ($cpu)"
eb94aca9 1862if test "$BUILDSUF" != ""; then
f36958f8 1863 echo "build suffix $BUILDSUF"
eb94aca9 1864fi
f36958f8 1865echo "big-endian $bigendian"
419b8784 1866if test $arch = "x86_32" -o $arch = "x86_64"; then
f36958f8
DB
1867 echo "MMX enabled $mmx"
1868 echo "CMOV enabled $cmov"
7073e9fc 1869 echo "CMOV is fast $fast_cmov"
e41e8342 1870fi
cc6a90dd 1871if test $arch = "armv4l"; then
f36958f8 1872 echo "ARMv5TE enabled $armv5te"
edab3048 1873 echo "ARMv6 enabled $armv6"
f36958f8 1874 echo "IWMMXT enabled $iwmmxt"
eba9ae3c 1875fi
cc6a90dd 1876if test $arch = "mips"; then
f36958f8 1877 echo "MMI enabled $mmi"
e41e8342 1878fi
cc6a90dd 1879if test $arch = "powerpc"; then
f36958f8
DB
1880 echo "AltiVec enabled $altivec"
1881 echo "dcbzl available $dcbzl"
e41e8342 1882fi
f36958f8 1883echo "gprof enabled $gprof"
f36958f8
DB
1884echo "debug symbols $debug"
1885echo "strip symbols $dostrip"
1886echo "optimize $optimize"
1887echo "static $lstatic"
1888echo "shared $lshared"
bfd5afd8
DB
1889echo "postprocessing support $pp"
1890echo "software scaler enabled $swscaler"
f36958f8 1891echo "video hooking $vhook"
90be59ef 1892if enabled vhook; then
f36958f8
DB
1893 echo "Imlib2 support $imlib2"
1894 echo "FreeType support $freetype2"
68892110 1895fi
bfd5afd8 1896echo "network support $network"
90be59ef 1897if enabled network; then
bfd5afd8
DB
1898 echo "IPv6 support $ipv6"
1899fi
e5f94c2b 1900echo "threading support $thread_type"
bfd5afd8 1901echo "SDL support $sdl"
90be59ef 1902if enabled sdl_too_old; then
bfd5afd8
DB
1903 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1904fi
1905echo "Sun medialib support $mlib"
1906echo "AVISynth enabled $avisynth"
f8904fd9
DB
1907echo "liba52 support $liba52"
1908echo "liba52 dlopened $liba52bin"
3ffab361 1909echo "libdts support $libdts"
2eed5a46
DB
1910echo "libfaac enabled $libfaac"
1911echo "libfaad enabled $libfaad"
1912echo "faadbin enabled $libfaadbin"
bfd5afd8 1913echo "libgsm enabled $libgsm"
6ebe07fb 1914echo "libmp3lame enabled $libmp3lame"
bfd5afd8
DB
1915echo "libnut enabled $libnut"
1916echo "libogg enabled $libogg"
150d2772 1917echo "libtheora enabled $libtheora"
bfd5afd8 1918echo "libvorbis enabled $libvorbis"
bfd5afd8 1919echo "x264 enabled $x264"
dc922953 1920echo "XviD enabled $xvid"
bfd5afd8 1921echo "zlib enabled $zlib"
f36958f8
DB
1922echo "AMR-NB float support $amr_nb"
1923echo "AMR-NB fixed support $amr_nb_fixed"
1924echo "AMR-WB float support $amr_wb"
1925echo "AMR-WB IF2 support $amr_if2"
37970ebf 1926if disabled gpl; then
f25fc9b1 1927 echo "License: LGPL"
b2e3c528 1928else
f25fc9b1 1929 echo "License: GPL"
b2e3c528 1930fi
de6d9b64 1931
29799f8b 1932echo "Creating config.mak and config.h..."
de6d9b64 1933
29799f8b
DB
1934echo "# Automatically generated by configure - do not modify!" > config.mak
1935echo "/* Automatically generated by configure - do not modify! */" > $TMPH
f255e0ab 1936echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
de6d9b64 1937
2266e085
DB
1938echo "PREFIX=$PREFIX" >> config.mak
1939echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
9a695e98 1940echo "libdir=\$(DESTDIR)$libdir" >> config.mak
84c22efd 1941echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1d67a1d4 1942echo "incdir=\$(DESTDIR)$incdir" >> config.mak
9a695e98
DB
1943echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1944echo "mandir=\$(DESTDIR)$mandir" >> config.mak
4a908fbc 1945echo "MAKE=$make" >> config.mak
980fc7b8
FB
1946echo "CC=$cc" >> config.mak
1947echo "AR=$ar" >> config.mak
be7109c1 1948echo "RANLIB=$ranlib" >> config.mak
90be59ef 1949if enabled dostrip; then
f25fc9b1 1950 echo "STRIP=$strip" >> config.mak
65d1bea2 1951else
f25fc9b1 1952 echo "STRIP=echo ignoring strip" >> config.mak
65d1bea2 1953fi
75388c74 1954
a9b3f630 1955echo "OPTFLAGS=$CFLAGS" >> config.mak
408382a4 1956echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
0f3cb305 1957echo "LDFLAGS=$LDFLAGS" >> config.mak
f39e56a8 1958echo "LDCONFIG=$LDCONFIG" >> config.mak
c536cb09 1959echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
e1707f52 1960echo "SHFLAGS=$SHFLAGS" >> config.mak
408382a4 1961echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
fbb9d104 1962echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
80581e98 1963echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
b12f8273 1964echo "BUILD_STATIC=$lstatic" >> config.mak
eb94aca9 1965echo "BUILDSUF=$BUILDSUF" >> config.mak
f3ec2d46 1966echo "LIBPREF=$LIBPREF" >> config.mak
eb94aca9 1967echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
90be59ef 1968if enabled lstatic; then
320d060a 1969 echo "LIB=$LIB" >> config.mak
1a44a8b6
AS
1970else # Some Make complain if this variable does not exist.
1971 echo "LIB=" >> config.mak
320d060a 1972fi
f3ec2d46 1973echo "SLIBPREF=$SLIBPREF" >> config.mak
eb94aca9
CY
1974echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1975echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
b2828252 1976echo "TARGET_OS=$targetos" >> config.mak
4dc62701
MR
1977
1978ucarch=`toupper $arch`
1979echo "TARGET_ARCH_${ucarch}=yes" >> config.mak
1980echo "#define ARCH_${ucarch} 1" >> $TMPH
1981
1982# special cases
1983case "$arch" in
1984 x86_32|x86_64)
1985 echo "TARGET_ARCH_X86=yes" >> config.mak
1986 echo "#define ARCH_X86 1" >> $TMPH
1987 ;;
1988 powerpc)
1989 if test "$POWERPCMODE" = "64bits"; then
1990 echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1991 fi
90be59ef 1992 if enabled powerpc_perf; then
4dc62701
MR
1993 echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1994 fi
1995 ;;
1996 sparc64)
1997 echo "TARGET_ARCH_SPARC=yes" >> config.mak
1998 echo "#define ARCH_SPARC 1" >> $TMPH
1999 ;;
2000esac
2001
90be59ef 2002if enabled bigendian; then
0f3cb305
FB
2003 echo "WORDS_BIGENDIAN=yes" >> config.mak
2004 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
91d1f1a4 2005fi
90be59ef 2006if enabled mmx; then
e82c5a8c 2007 echo "#define __CPU__ 586" >> $TMPH
de6d9b64 2008fi
44161118 2009
90be59ef 2010if enabled sdl; then
6a1a892f
FD
2011 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
2012 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
a86b921c 2013fi
90be59ef 2014if enabled texi2html; then
146ea952
NB
2015 echo "BUILD_DOC=yes" >> config.mak
2016fi
5a872801 2017
790c9ca7 2018sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
6d9a2421 2019pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
5a872801
LB
2020lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
2021lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
2022lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
2023
2024
2025
90be59ef 2026if enabled lshared; then
0319c531 2027 echo "BUILD_SHARED=yes" >> config.mak
97006039 2028 echo "PIC=-fPIC -DPIC" >> config.mak
7e303556
DB
2029 echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
2030 echo "SPPVERSION=$pp_version" >> config.mak
39503a27 2031 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
5a872801 2032 echo "LAVCVERSION=$lavc_version" >> config.mak
39503a27 2033 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
5a872801 2034 echo "LAVFVERSION=$lavf_version" >> config.mak
39503a27 2035 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
5a872801 2036 echo "LAVUVERSION=$lavu_version" >> config.mak
790c9ca7
LA
2037 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
2038 echo "SWSVERSION=$sws_version" >> config.mak
4bdd05e7 2039 echo "SLIBNAME=${SLIBNAME}" >> config.mak
f3b60109
DB
2040 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2041 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
5cb854e1 2042 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
8fbec4f4 2043 echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
0319c531 2044fi
d7e27559 2045echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
ef0bc4c9 2046echo "EXTRALIBS=$extralibs" >> config.mak
d2845d68 2047
44161118
MR
2048enabled_any $ENCODER_LIST && enable encoders
2049enabled_any $DECODER_LIST && enable decoders
2050enabled_any $MUXER_LIST && enable muxers
2051enabled_any $DEMUXER_LIST && enable demuxers
f956e129 2052
b265431e
MR
2053enabled_any pthreads beosthreads os2threads w32threads && enable threads
2054
30fd06be
MR
2055check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \
2056 $DEMUXER_LIST $MUXER_LIST
2057
44161118
MR
2058print_config HAVE_ $TMPH config.mak $HAVE_LIST
2059print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1ac9331a 2060print_config TARGET_ $TMPH config.mak $TARGET_LIST
8ac17293 2061
b2828252 2062if test "$targetos" = "Darwin"; then
90cee0c3 2063 echo "#define CONFIG_DARWIN 1" >> $TMPH
90cee0c3
MN
2064fi
2065
c13e1abd
FH
2066echo "#define restrict $_restrict" >> $TMPH
2067
bb801c97
MN
2068if test "$optimize" = "small"; then
2069 echo "#define always_inline" >> $TMPH
e5f28e8f 2070 echo "#define CONFIG_SMALL 1" >> $TMPH
bb801c97
MN
2071fi
2072
997baf01
MR
2073echo "SRC_PATH=\"$source_path\"" >> config.mak
2074echo "SRC_PATH_BARE=$source_path" >> config.mak
2075echo "BUILD_ROOT=\"$PWD\"" >> config.mak
0f3cb305 2076
90be59ef 2077if enabled amr_if2; then
2a515c08
TM
2078 echo "AMR_CFLAGS=-DIF2=1" >> config.mak
2079fi
2080
8156056e 2081# Apparently it's not possible to portably echo a backslash.
90be59ef 2082if enabled asmalign_pot; then
8156056e 2083 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
4454dc1b 2084else
8156056e 2085 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
4454dc1b
JD
2086fi
2087
bc634f6f 2088
55006fc0 2089for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
44161118 2090 ucname="`toupper $codec`"
a8d04fba
MR
2091 config_name="CONFIG_$ucname"
2092 enabled_name="ENABLE_$ucname"
2093 if enabled $codec; then
2094 echo "#define $config_name 1" >> $TMPH
2095 echo "#define $enabled_name 1" >> $TMPH
2096 echo "$config_name=yes" >> config.mak
2097 else
2098 echo "#define $enabled_name 0" >> $TMPH
2099 fi
009cf97d
MN
2100done
2101
9cb2cf10 2102# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
c683a5d1 2103if ! cmp -s $TMPH config.h; then
9cb2cf10
DB
2104 mv -f $TMPH config.h
2105else
2106 echo "config.h is unchanged"
2107fi
3d204385 2108
f3ec2d46 2109rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
def4272a 2110
165af439 2111# build tree in object directory if source path is different from current one
90be59ef 2112if enabled source_path_used; then
165af439
MR
2113 DIRS="\
2114 doc \
2115 libavformat \
2116 libavcodec \
2117 libavcodec/alpha \
2118 libavcodec/armv4l \
2119 libavcodec/bfin \
2120 libavcodec/i386 \
2121 libavcodec/sparc \
2122 libavcodec/mlib \
2123 libavcodec/ppc \
2124 libavcodec/liba52 \
3918dc4f
DB
2125 libavcodec/amr \
2126 libavcodec/amr_float \
2127 libavcodec/amrwb_float \
165af439
MR
2128 libpostproc \
2129 libavutil \
2130 libswscale \
2131 tests \
2132 vhook \
2133 "
2134 FILES="\
2135 Makefile \
2136 common.mak \
2137 libavformat/Makefile \
2138 libavcodec/Makefile \
2139 libpostproc/Makefile \
2140 libavutil/Makefile \
2141 libswscale/Makefile \
2142 tests/Makefile \
2143 vhook/Makefile \
2144 doc/Makefile \
2145 doc/texi2pod.pl \
2146 "
2147 for dir in $DIRS ; do
2148 mkdir -p $dir
2149 done
2150 for f in $FILES ; do
2151 ln -sf "$source_path/$f" $f
2152 done
2153fi
def4272a 2154
def4272a 2155
d0674868 2156# build pkg-config files
77aee36c 2157# FIXME: libdir and includedir are hardcoded and may differ from the real path.
def4272a 2158
d0674868
DB
2159pkgconfig_generate(){
2160name=$1
2161comment=$2
2162version=$3
2163libs=$4
2164requires=$5
2165include=$6
2166cat <<EOF >$name.pc
2266e085 2167prefix=$PREFIX
a94e666c 2168exec_prefix=\${prefix}
def4272a 2169libdir=\${exec_prefix}/lib
a94e666c 2170includedir=\${prefix}/include
def4272a 2171
d0674868
DB
2172Name: $name
2173Description: $comment
2174Version: $version
2175Requires: $requires
def4272a 2176Conflicts:
d0674868
DB
2177Libs: -L\${libdir} $libs
2178Cflags: -I\${includedir} -I\${includedir}/$include
def4272a 2179EOF
d0674868 2180}
def4272a 2181
d0674868
DB
2182pkgconfig_generate_uninstalled(){
2183name=$1
9c476fd6 2184shortname=${name#lib}
d0674868
DB
2185comment=$2
2186version=$3
2187libs=$4
2188requires=$5
2189cat <<EOF >$name-uninstalled.pc
def4272a
AJ
2190prefix=
2191exec_prefix=
d0674868
DB
2192libdir=\${pcfiledir}/$name
2193includedir=\${pcfiledir}/$name
def4272a 2194
d0674868
DB
2195Name: $name
2196Description: $comment
2197Version: $version
2198Requires: $requires
def4272a 2199Conflicts:
d0674868 2200Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
def4272a
AJ
2201Cflags: -I\${includedir}
2202EOF
d0674868 2203}
def4272a 2204
9d824ad1 2205pkgconfig_generate libavutil "FFmpeg utility library" "$lavu_version" -lavutil "" ffmpeg
d0674868 2206pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$lavu_version"
def4272a 2207
d0674868
DB
2208pkgconfig_generate libavcodec "FFmpeg codec library" "$lavc_version" "-lavcodec $extralibs" "$pkg_requires libavutil = $lavu_version" ffmpeg
2209pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$lavc_version" "$extralibs" "$pkg_requires libavutil = $lavu_version"
def4272a 2210
d0674868
DB
2211pkgconfig_generate libavformat "FFmpeg container format library" "$lavf_version" "-lavformat $extralibs" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2212pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$lavf_version" "$extralibs" "$pkg_requires libavcodec = $lavc_version"
def4272a 2213
90be59ef 2214if enabled pp; then
2e3bcd38
DB
2215 pkgconfig_generate libpostproc "FFmpeg post processing library" "$pp_version" -lpostproc "" postproc
2216 pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$pp_version"
2217fi
790c9ca7 2218
c839db53 2219if enabled swscaler; then
20c516c6
DM
2220 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "-lswscale" "libavutil = $lavu_version" swscale
2221 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
6c0d0413 2222else
d0674868
DB
2223 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" swscale
2224 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
c505dd31
MR
2225 apply libswscale.pc sed s/^Libs:.*$/Libs:/
2226 apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/
6c0d0413 2227fi