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