Dont crash if resampling is requested but no audio packets are ever processed.
[libav.git] / configure
CommitLineData
aeb29222 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 63 echo " --incdir=DIR install includes in DIR [PREFIX/include/ffmpeg]"
4ca5ece5 64 echo " --mandir=DIR install man page in DIR [PREFIX/share/man]"
74c53c2d
MR
65 echo " --enable-static build static libraries [default=yes]"
66 echo " --disable-static do not build static libraries [default=no]"
67 echo " --enable-shared build shared libraries [default=no]"
68 echo " --disable-shared do not build shared libraries [default=yes]"
0a622b98
MR
69 echo " --enable-gpl allow use of GPL code, the resulting libav*"
70 echo " and ffmpeg will be under GPL [default=no]"
dc922953
DB
71 echo " --enable-pp enable GPLed postprocessing support [default=no]"
72 echo " --enable-swscaler software scaler support [default=no]"
e5f94c2b 73 echo " --enable-beosthreads use BeOS threads [default=no]"
d22e8442 74 echo " --enable-os2threads use OS/2 threads [default=no]"
74c53c2d 75 echo " --enable-pthreads use pthreads [default=no]"
eb113804 76 echo " --enable-w32threads use Win32 threads [default=no]"
56a059ac 77 echo " --enable-x11grab enable X11 grabbing [default=no]"
0a622b98
MR
78 echo
79 echo "External library support:"
80 echo " --enable-sunmlib use Sun medialib [default=no]"
e2745046
MR
81 echo " --enable-liba52 enable GPLed liba52 support [default=no]"
82 echo " --enable-liba52bin open liba52.so.0 at runtime [default=no]"
8ac17293 83 echo " --enable-avisynth allow reading AVISynth script files [default=no]"
f5a756ef
DB
84 echo " --enable-libamr-nb enable libamr-nb floating point audio codec"
85 echo " --enable-libamr-wb enable libamr-wb floating point audio codec"
f7b8bffe
RP
86 echo " --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394"
87 echo " and libraw1394 [default=no]"
e2745046
MR
88 echo " --enable-libfaac enable FAAC support via libfaac [default=no]"
89 echo " --enable-libfaad enable FAAD support via libfaad [default=no]"
06f32b26 90 echo " --enable-libfaadbin open libfaad.so.0 at runtime [default=no]"
dc922953 91 echo " --enable-libgsm enable GSM support via libgsm [default=no]"
e2745046 92 echo " --enable-libmp3lame enable MP3 encoding via libmp3lame [default=no]"
31235134
DB
93 echo " --enable-libnut enable NUT (de)muxing via libnut,"
94 echo " native demuxer exists [default=no]"
71757822 95 echo " --enable-libtheora enable Theora encoding via libtheora [default=no]"
f9def9cc
DB
96 echo " --enable-libvorbis enable Vorbis encoding via libvorbis,"
97 echo " native implementation exists [default=no]"
1cc60c47
DB
98 echo " --enable-libx264 enable H.264 encoding via x264 [default=no]"
99 echo " --enable-libxvid enable Xvid encoding via xvidcore,"
31235134 100 echo " native MPEG-4/Xvid encoder exists [default=no]"
74c53c2d
MR
101 echo ""
102 echo "Advanced options (experts only):"
103 echo " --source-path=PATH path to source code [$source_path]"
104 echo " --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]"
fac252f9 105 echo " --cross-compile assume a cross-compiler is used"
abcd6d60 106 echo " --target-os=OS compiler targets OS [$targetos]"
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]"
7c758d33
DB
114 echo " --cpu=CPU selects the minimum cpu required (affects"
115 echo " instruction selection, may crash on older CPUs)"
2b4c3615 116 echo " --enable-powerpc-perf enable performance report on PPC"
74c53c2d
MR
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"
74c53c2d 123 echo " --disable-network disable network support [default=no]"
0c7bb0e5 124 echo " --disable-ipv6 disable ipv6 support [default=no]"
74c53c2d 125 echo " --disable-zlib disable zlib [default=no]"
74c53c2d 126 echo " --disable-vhook disable video hooking support"
74c53c2d 127 echo " --disable-debug disable debugging symbols"
74c53c2d
MR
128 echo " --disable-mpegaudio-hp faster (but less accurate)"
129 echo " MPEG audio decoding [default=no]"
cde9e780 130 echo " --enable-gray enable full grayscale support (slower color)"
786b30af 131 echo " --disable-ffmpeg disable ffmpeg build"
74c53c2d
MR
132 echo " --disable-ffserver disable ffserver build"
133 echo " --disable-ffplay disable ffplay build"
134 echo " --enable-small optimize for size instead of speed"
3abe5fbd 135 echo " --enable-hardcoded-tables use hardcoded tables instead of runtime generation"
74c53c2d 136 echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers"
74c53c2d
MR
137 echo " --disable-encoder=NAME disables encoder NAME"
138 echo " --enable-encoder=NAME enables encoder NAME"
139 echo " --disable-decoder=NAME disables decoder NAME"
140 echo " --enable-decoder=NAME enables decoder NAME"
141 echo " --disable-encoders disables all encoders"
142 echo " --disable-decoders disables all decoders"
ff70e601
MR
143 echo " --disable-muxer=NAME disables muxer NAME"
144 echo " --enable-muxer=NAME enables muxer NAME"
74c53c2d 145 echo " --disable-muxers disables all muxers"
ff70e601
MR
146 echo " --disable-demuxer=NAME disables demuxer NAME"
147 echo " --enable-demuxer=NAME enables demuxer NAME"
74c53c2d 148 echo " --disable-demuxers disables all demuxers"
af9e7d18
MR
149 echo " --enable-parser=NAME enables parser NAME"
150 echo " --disable-parser=NAME disables parser NAME"
151 echo " --disable-parsers disables all parsers"
cd61e407
JM
152 echo " --enable-bsf=NAME enables bitstream filter NAME"
153 echo " --disable-bsf=NAME disables bitstream filter NAME"
154 echo " --disable-bsfs disables all bitstream filters"
c08fb000
AB
155 echo " --enable-protocol=NAME enables protocol NAME"
156 echo " --disable-protocol=NAME disables protocol NAME"
157 echo " --disable-protocols disables all protocols"
10d46dd0 158 echo " --disable-devices disables all devices"
794f8e97
PI
159 echo " --list-decoders show all available decoders"
160 echo " --list-encoders show all available encoders"
161 echo " --list-muxers show all available muxers"
162 echo " --list-demuxers show all available demuxers"
163 echo " --list-parsers show all available parsers"
164 echo " --list-protocols show all available protocols"
165 echo " --list-bsfs show all available bitstream filters"
c552605c
DB
166 echo " --list-indevs show all available input devices"
167 echo " --list-outdevs show all available output devices"
0a622b98
MR
168 echo
169 echo "Developer options (useful when working on FFmpeg itself):"
170 echo " --enable-gprof enable profiling with gprof [$gprof]"
d2bbb2f7 171 echo " --disable-optimizations disable compiler optimizations"
0a622b98
MR
172 echo " --enable-extra-warnings enable more compiler warnings"
173 echo " --disable-strip disable stripping of executables and shared libraries"
74c53c2d
MR
174 echo ""
175 echo "NOTE: Object files are built at the place where configure is launched."
176 exit 1
177}
cf9d24ad 178
57bd82d4
MR
179log(){
180 echo "$@" >>$logfile
181}
182
720c69da 183log_file(){
c8e9f801 184 log BEGIN $1
6b324648 185 pr -n -t $1 >>$logfile
c8e9f801
MR
186 log END $1
187}
188
2ba042a7 189echolog(){
c8e9f801 190 log "$@"
57bd82d4 191 echo "$@"
2ba042a7
MR
192}
193
194die(){
195 echolog "$@"
196 cat <<EOF
197If you think configure made a mistake, make sure you are using the latest
198version from SVN. If the latest version fails, report the problem to the
199ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
200EOF
720c69da 201 if enabled logging; then
2ba042a7
MR
202 cat <<EOF
203Include the log file "$logfile" produced by configure as this will help
204solving the problem.
205EOF
206 else
207cat <<EOF
208Rerun configure with logging enabled (do not use --log=no), and include the
209log this produces with your report.
210EOF
211 fi
57bd82d4
MR
212 rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
213 exit 1
214}
215
904e48f1 216# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
44161118
MR
217toupper(){
218 echo "$@" | tr '[a-z]' '[A-Z]'
219}
220
4a5444db
MR
221tolower(){
222 echo "$@" | tr '[A-Z]' '[a-z]'
223}
224
a8d04fba
MR
225set_all(){
226 value=$1
227 shift
228 for var in $*; do
229 eval $var=$value
230 done
231}
232
799c9e9b
MR
233pushvar(){
234 for var in $*; do
235 eval level=\${${var}_level:=0}
236 eval ${var}_${level}="\$$var"
237 eval ${var}_level=$(($level+1))
238 done
239}
240
241popvar(){
242 for var in $*; do
243 eval level=\${${var}_level:-0}
244 test $level = 0 && continue
245 eval level=$(($level-1))
246 eval $var="\${${var}_${level}}"
247 eval ${var}_level=$level
248 eval unset ${var}_${level}
249 done
250}
251
a8d04fba
MR
252enable(){
253 set_all yes $*
254}
255
256disable(){
257 set_all no $*
258}
259
57bd82d4 260enabled(){
44161118
MR
261 eval test "x\$$1" = "xyes"
262}
263
37970ebf
RP
264disabled(){
265 eval test "x\$$1" = "xno"
266}
267
44161118
MR
268enabled_all(){
269 for opt; do
270 enabled $opt || return 1
271 done
272}
273
85bca2c5
DB
274disabled_all(){
275 for opt; do
276 disabled $opt || return 1
277 done
278}
279
44161118
MR
280enabled_any(){
281 for opt; do
282 enabled $opt && return 0
283 done
284}
285
85bca2c5
DB
286disabled_any(){
287 for opt; do
288 disabled $opt && return 0
289 done
290}
291
4a0d6686
AJ
292is_in(){
293 value=$1
294 shift
295 for var in $*; do
296 [ $var = $value ] && return 0
297 done
298 return 1
299}
300
30fd06be
MR
301check_deps(){
302 for cfg; do
799c9e9b
MR
303 enabled ${cfg}_checking && die "Circular dependency for $cfg."
304 disabled ${cfg}_checking && continue
305 enable ${cfg}_checking
306
30fd06be
MR
307 eval dep_all="\$${cfg}_deps"
308 eval dep_any="\$${cfg}_deps_any"
799c9e9b
MR
309
310 pushvar cfg dep_all dep_any
311 check_deps $dep_all $dep_any
312 popvar cfg dep_all dep_any
313
30fd06be
MR
314 enabled_all $dep_all || disable $cfg
315 enabled_any $dep_any || disable $cfg
799c9e9b 316
4ec45764
RP
317 if enabled $cfg; then
318 eval dep_extralibs="\$${cfg}_extralibs"
319 test -n "$dep_extralibs" && add_extralibs $dep_extralibs
320 fi
321
799c9e9b 322 disable ${cfg}_checking
30fd06be
MR
323 done
324}
325
44161118
MR
326print_config(){
327 pfx=$1
328 header=$2
329 makefile=$3
330 shift 3
331 for cfg; do
3d907e22 332 ucname="`toupper $cfg`"
44161118 333 if enabled $cfg; then
3d907e22
MR
334 echo "#define ${pfx}${ucname} 1" >> $header
335 echo "#define ENABLE_${ucname} 1" >> $header
336 echo "${pfx}${ucname}=yes" >> $makefile
337 else
338 echo "#define ENABLE_${ucname} 0" >> $header
44161118
MR
339 fi
340 done
57bd82d4
MR
341}
342
343flags_saved(){
344 (: ${SAVE_CFLAGS?}) 2>/dev/null
345}
346
dcd479c0 347save_flags(){
57bd82d4 348 flags_saved && return
dcd479c0
MR
349 SAVE_CFLAGS="$CFLAGS"
350 SAVE_LDFLAGS="$LDFLAGS"
351 SAVE_extralibs="$extralibs"
352}
353
354restore_flags(){
f5d28d10 355 flags_saved || return
dcd479c0
MR
356 CFLAGS="$SAVE_CFLAGS"
357 LDFLAGS="$SAVE_LDFLAGS"
358 extralibs="$SAVE_extralibs"
359 unset SAVE_CFLAGS
360 unset SAVE_LDFLAGS
361 unset SAVE_extralibs
362}
363
364temp_cflags(){
365 save_flags
366 CFLAGS="$CFLAGS $*"
367}
368
369temp_ldflags(){
370 save_flags
371 LDFLAGS="$LDFLAGS $*"
372}
373
374temp_extralibs(){
375 save_flags
376 extralibs="$extralibs $*"
377}
378
57bd82d4
MR
379append(){
380 var=$1
381 shift
382 flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
383 eval "$var=\"\$$var $*\""
384}
385
386add_cflags(){
387 append CFLAGS "$@"
388}
389
390add_ldflags(){
391 append LDFLAGS "$@"
392}
393
394add_extralibs(){
395 append extralibs "$@"
396}
397
b0cfb663 398check_cmd(){
b3cb5d51 399 log "$@"
9b4f605c 400 "$@" >>$logfile 2>&1
b0cfb663
MR
401}
402
dcd479c0 403check_cc(){
57bd82d4
MR
404 log check_cc "$@"
405 cat >$TMPC
720c69da 406 log_file $TMPC
b0cfb663 407 check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
57bd82d4
MR
408}
409
410check_cpp(){
411 log check_cpp "$@"
dcd479c0 412 cat >$TMPC
720c69da 413 log_file $TMPC
b0cfb663 414 check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
dcd479c0
MR
415}
416
940f335a
MR
417check_asm(){
418 log check_asm "$@"
419 name="$1"
420 asm="$2"
421 shift 2
422 check_cc "$@" <<EOF && enable $name || disable $name
423int foo(void){
424 asm volatile($asm);
425}
426EOF
427}
428
dcd479c0 429check_ld(){
57bd82d4 430 log check_ld "$@"
0607887f 431 check_cc || return
3155a644
MR
432 flags=''
433 libs=''
434 for f; do
435 test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
436 done
437 check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
dcd479c0
MR
438}
439
440check_cflags(){
57bd82d4
MR
441 log check_cflags "$@"
442 check_cc "$@" <<EOF && add_cflags "$@"
dcd479c0
MR
443int x;
444EOF
445}
446
447check_ldflags(){
57bd82d4
MR
448 log check_ldflags "$@"
449 check_ld "$@" <<EOF && add_ldflags "$@"
e5af4a11 450int main(void){
57bd82d4
MR
451 return 0;
452}
dcd479c0
MR
453EOF
454}
455
456check_header(){
57bd82d4 457 log check_header "$@"
dcd479c0
MR
458 header=$1
459 shift
d8bc5f06
MR
460 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
461 disable $var
462 check_cpp "$@" <<EOF && enable $var
dcd479c0
MR
463#include <$header>
464int x;
465EOF
466}
467
468check_func(){
57bd82d4 469 log check_func "$@"
dcd479c0
MR
470 func=$1
471 shift
d8bc5f06
MR
472 disable $func
473 check_ld "$@" <<EOF && enable $func
dcd479c0 474extern int $func();
e5af4a11 475int main(void){
dcd479c0
MR
476 $func();
477}
478EOF
479}
480
f8d7b072
MR
481check_func2(){
482 log check_func2 "$@"
483 headers=$1
484 func=$2
485 shift 2
486 disable $func
487 incs=""
488 for hdr in $headers; do
489 incs="$incs
490#include <$hdr>"
491 done
492 check_ld "$@" <<EOF && enable $func
493$incs
e5af4a11 494int main(void){
f8d7b072
MR
495 (void) $func;
496 return 0;
497}
498EOF
499}
500
57bd82d4
MR
501check_lib(){
502 log check_lib "$@"
503 header="$1"
504 func="$2"
505 shift 2
fcfcde17
MR
506 temp_extralibs "$@"
507 check_header $header && check_func $func && add_extralibs "$@"
508 err=$?
509 restore_flags
510 return $err
57bd82d4
MR
511}
512
f8d7b072
MR
513check_lib2(){
514 log check_lib2 "$@"
515 headers="$1"
516 func="$2"
517 shift 2
518 temp_extralibs "$@"
519 check_func2 "$headers" $func && add_extralibs "$@"
520 err=$?
521 restore_flags
522 return $err
523}
524
dcd479c0 525check_exec(){
90be59ef 526 check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
57bd82d4
MR
527}
528
7dfef245
MR
529check_exec_crash(){
530 code=`cat`
531
532 # exit() is not async signal safe. _Exit (C99) and _exit (POSIX)
533 # are safe but may not be available everywhere. Thus we use
534 # raise(SIGTERM) instead. The check is run in a subshell so we
535 # can redirect the "Terminated" message from the shell. SIGBUS
536 # is not defined by standard C so it is used conditionally.
537
538 (check_exec "$@") >>$logfile 2>&1 <<EOF
539#include <signal.h>
540static void sighandler(int sig){
541 raise(SIGTERM);
542}
e5af4a11 543int main(void){
7dfef245
MR
544 signal(SIGILL, sighandler);
545 signal(SIGFPE, sighandler);
546 signal(SIGSEGV, sighandler);
547#ifdef SIGBUS
548 signal(SIGBUS, sighandler);
549#endif
550 { $code }
551}
552EOF
553}
554
72be9e73
DY
555check_type(){
556 log check_type "$@"
557 headers=$1
558 type=$2
559 shift 2
560 disable $type
561 incs=""
562 for hdr in $headers; do
563 incs="$incs
564#include <$hdr>"
565 done
566 check_cc "$@" <<EOF && enable $type
567$incs
568$type v;
569EOF
570}
571
57bd82d4
MR
572require(){
573 name="$1"
574 header="$2"
575 func="$3"
576 shift 3
577 check_lib $header $func "$@" || die "ERROR: $name not found"
dcd479c0
MR
578}
579
f8d7b072
MR
580require2(){
581 name="$1"
582 headers="$2"
583 func="$3"
584 shift 3
585 check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
586}
587
eea50282
MR
588check_foo_config(){
589 cfg=$1
590 pkg=$2
591 header=$3
592 func=$4
593 shift 4
594 disable $cfg
595 check_cmd ${pkg}-config --version
596 err=$?
597 if test "$err" = 0; then
598 temp_cflags `${pkg}-config --cflags`
599 temp_extralibs `${pkg}-config --libs`
600 check_lib "$@" $header $func && enable $cfg
601 fi
602 return $err
603}
604
c505dd31
MR
605apply(){
606 file=$1
607 shift
608 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
609}
610
4a0d6686
AJ
611COMPONENT_LIST="
612 bsfs
613 decoders
614 demuxers
615 encoders
c552605c 616 indevs
4a0d6686 617 muxers
c552605c 618 outdevs
4a0d6686
AJ
619 parsers
620 protocols
621"
622
623CONFIG_LIST="
624 $COMPONENT_LIST
c88f5d72
MR
625 avisynth
626 beos_netserver
c88f5d72
MR
627 ffmpeg
628 ffplay
629 ffserver
630 gpl
ecfc4f44 631 gprof
d8d0d0b2 632 gray
3abe5fbd 633 hardcoded_tables
c88f5d72 634 ipv6
7bc5f2a8 635 liba52
f8904fd9 636 liba52bin
f5a756ef
DB
637 libamr
638 libamr_nb
639 libamr_wb
f7b8bffe 640 libdc1394
2eed5a46
DB
641 libfaac
642 libfaad
643 libfaadbin
c88f5d72 644 libgsm
6ebe07fb 645 libmp3lame
c88f5d72 646 libnut
150d2772 647 libtheora
c88f5d72 648 libvorbis
1cc60c47
DB
649 libx264
650 libxvid
c88f5d72 651 memalign_hack
c88f5d72
MR
652 mpegaudio_hp
653 network
2b4c3615 654 powerpc_perf
c88f5d72 655 pp
bd2216e4 656 small
c88f5d72
MR
657 swscaler
658 vhook
56a059ac 659 x11grab
c88f5d72 660 zlib
4a0d6686 661"
c88f5d72 662
8eee7025
DB
663THREADS_LIST='
664 beosthreads
d22e8442 665 os2threads
8eee7025
DB
666 pthreads
667 w32threads
668'
669
3f5b56e5
MR
670ARCH_LIST='
671 alpha
672 armv4l
673 bfin
674 ia64
675 m68k
676 mips
677 parisc
678 powerpc
679 s390
680 sh4
681 sparc
682 sparc64
683 x86
684 x86_32
685 x86_64
686'
687
688ARCH_EXT_LIST='
1ac9331a 689 altivec
1ac9331a 690 armv5te
edab3048 691 armv6
3f5b56e5
MR
692 iwmmxt
693 mmi
694 mmx
9eeed841 695 ssse3
bd9d34a0 696 vis
3f5b56e5
MR
697'
698
699HAVE_LIST="
700 $ARCH_EXT_LIST
701 $THREADS_LIST
702 altivec_h
c9fdab0d 703 arpa_inet_h
c88f5d72 704 byteswap_h
ecf97f22 705 closesocket
1ac9331a 706 cmov
e16e49ac 707 conio_h
c88f5d72 708 dcbzl
f8aa696f
DB
709 dev_bktr_ioctl_bt848_h
710 dev_bktr_ioctl_meteor_h
711 dev_ic_bt8xx_h
712 dev_video_meteor_ioctl_meteor_h
713 dev_video_bktr_ioctl_bt848_h
18b67ae5 714 dlfcn_h
c88f5d72 715 dlopen
245626d0
DB
716 ebp_available
717 ebx_available
c2a29455 718 fast_64bit
7073e9fc 719 fast_cmov
7b829d2a 720 fast_unaligned
9d99cc5a 721 fork
c88f5d72 722 freetype2
da9e86f8 723 gethrtime
4e68cb8a 724 GetProcessTimes
66be5b45 725 getrusage
c88f5d72 726 imlib2
2e1913b1 727 inet_aton
a33cab3a
MK
728 llrint
729 lrint
c88f5d72 730 lrintf
f8aa696f
DB
731 machine_ioctl_bt848_h
732 machine_ioctl_meteor_h
c88f5d72
MR
733 malloc_h
734 memalign
6ffa87d3 735 mkstemp
c88f5d72 736 mlib
9cafbd6c 737 ppc64
a33cab3a
MK
738 round
739 roundf
c88f5d72
MR
740 sdl
741 sdl_video_size
72be9e73 742 socklen_t
deb29777 743 soundcard_h
b0c858d8 744 sys_poll_h
81644c2e 745 sys_select_h
deb29777 746 sys_soundcard_h
e16e49ac 747 termios_h
b265431e 748 threads
6ff3f3e7 749 winsock2_h
0cb78cef 750"
44161118 751
520cc7f1 752CMDLINE_SELECT="
3f5b56e5 753 $ARCH_EXT_LIST
520cc7f1 754 $CONFIG_LIST
8eee7025 755 $THREADS_LIST
520cc7f1
MR
756 debug
757 extra_warnings
d2bbb2f7 758 optimizations
520cc7f1
MR
759 shared
760 static
761"
762
912f3148
DB
763# code dependency declarations
764
9eeed841
MR
765# architecture extensions
766altivec_deps="powerpc"
767armv5te_deps="armv4l"
768armv6_deps="armv4l"
769iwmmxt_deps="armv4l"
e241ba14 770mmi_deps="mips"
9eeed841
MR
771mmx_deps="x86"
772ssse3_deps="x86"
bd9d34a0 773vis_deps="sparc"
9eeed841 774
912f3148 775# decoders / encoders
6ea67bbb 776ac3_decoder_deps="gpl"
33a0dd37 777dxa_decoder_deps="zlib"
30fd06be 778flashsv_decoder_deps="zlib"
773be23a 779flashsv_encoder_deps="zlib"
4a815a7f 780flv_decoder_deps="h263_decoder"
df495dbd 781h263_decoder_deps="h263_parser mpeg4video_parser"
4a815a7f 782h263i_decoder_deps="h263_decoder"
26b4fe82 783h264_decoder_deps="h264_parser"
30fd06be 784mpeg_xvmc_decoder_deps="xvmc"
4a815a7f
DB
785mpeg4_decoder_deps="h263_decoder"
786msmpeg4v1_decoder_deps="h263_decoder"
787msmpeg4v2_decoder_deps="h263_decoder"
788msmpeg4v3_decoder_deps="h263_decoder"
30fd06be
MR
789png_decoder_deps="zlib"
790png_encoder_deps="zlib"
e2525c6f 791svq3_decoder_deps="h264_parser"
4a815a7f
DB
792vc1_decoder_deps="h263_decoder"
793wmv1_decoder_deps="h263_decoder"
794wmv2_decoder_deps="h263_decoder"
795wmv3_decoder_deps="h263_decoder"
30fd06be
MR
796zmbv_decoder_deps="zlib"
797zmbv_encoder_deps="zlib"
798
912f3148 799# external libraries
7bc5f2a8 800liba52_decoder_deps="liba52"
4ec45764 801liba52bin_decoder_extralibs='$ldl'
f5a756ef
DB
802libamr_nb_decoder_deps="libamr_nb"
803libamr_nb_encoder_deps="libamr_nb"
804libamr_wb_decoder_deps="libamr_wb"
805libamr_wb_encoder_deps="libamr_wb"
c9171a83 806libfaac_encoder_deps="libfaac"
69ddbd1d 807libfaad_decoder_deps="libfaad"
4ec45764 808libfaadbin_decoder_extralibs='$ldl'
299c77d5
MR
809libgsm_decoder_deps="libgsm"
810libgsm_encoder_deps="libgsm"
8ffed8d8
MR
811libgsm_ms_decoder_deps="libgsm"
812libgsm_ms_encoder_deps="libgsm"
1cc60c47 813libmp3lame_encoder_deps="libmp3lame"
150d2772 814libtheora_encoder_deps="libtheora"
b0caf888 815libvorbis_encoder_deps="libvorbis"
1cc60c47
DB
816libx264_encoder_deps="libx264"
817libxvid_encoder_deps="libxvid"
13566c31 818mpeg4aac_decoder_deps="libfaad"
30fd06be 819
912f3148 820# demuxers / muxers
03a76ba9 821ac3_demuxer_deps="ac3_parser"
50383e88 822audio_beos_demuxer_deps="audio_beos"
4ec45764 823audio_beos_demuxer_extralibs="-lmedia -lbe"
50383e88 824audio_beos_muxer_deps="audio_beos"
4ec45764 825audio_beos_muxer_extralibs="-lmedia -lbe"
53b73365 826avisynth_demuxer_deps="avisynth"
73483024 827bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
fe9bb347 828dv1394_demuxer_deps="dv1394 dv_demuxer"
f7b8bffe 829libdc1394_demuxer_deps="libdc1394"
d7c59247
DB
830libnut_demuxer_deps="libnut"
831libnut_muxer_deps="libnut"
4bd8e17c 832mp3_demuxer_deps="mpegaudio_parser"
c7682de0
RP
833oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
834oss_muxer_deps_any="soundcard_h sys_soundcard_h"
30fd06be 835redir_demuxer_deps="network"
8eb793c4 836rtp_muxer_deps="network rtp_protocol"
95c21842
LA
837rtsp_demuxer_deps="sdp_demuxer"
838sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
06e31011
RP
839v4l2_demuxer_deps="linux_videodev2_h"
840v4l_demuxer_deps="linux_videodev_h"
06eab4ba 841x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
4ec45764 842x11_grab_device_demuxer_extralibs="-lX11 -lXext"
30fd06be 843
912f3148 844# protocols
c08fb000
AB
845http_protocol_deps="network"
846rtp_protocol_deps="udp_protocol"
847tcp_protocol_deps="network"
848udp_protocol_deps="network"
849
912f3148 850# programs
fa859b4d 851ffplay_deps="sdl"
6ad42348 852ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
4ec45764
RP
853ffserver_extralibs='$ldl'
854vhook_extralibs='$ldl'
a2830dca 855
912f3148 856
0f3cb305 857# set temporary file name
57514323 858if test ! -z "$TMPDIR" ; then
0f3cb305 859 TMPDIR1="${TMPDIR}"
57514323 860elif test ! -z "$TEMPDIR" ; then
0f3cb305 861 TMPDIR1="${TEMPDIR}"
3d204385 862else
0f3cb305 863 TMPDIR1="/tmp"
3d204385
NK
864fi
865
0f3cb305
FB
866TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
867TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
f3ec2d46 868TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
0f3cb305
FB
869TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
870TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
871
de6d9b64 872# default parameters
8a608357 873
497237c7 874enable logging
2ba042a7 875logfile="config.err"
8a608357
MR
876
877# installation paths
2266e085 878PREFIX="/usr/local"
c75560ae 879libdir='$(PREFIX)/lib'
84c22efd 880shlibdir="$libdir"
c75560ae 881incdir='$(PREFIX)/include/ffmpeg'
4ca5ece5 882mandir='$(PREFIX)/share/man'
c75560ae 883bindir='$(PREFIX)/bin'
8a608357
MR
884
885# toolchain
de6d9b64
FB
886cc="gcc"
887ar="ar"
be7109c1 888ranlib="ranlib"
4a908fbc 889make="make"
0f3cb305 890strip="strip"
8a608357 891asmalign_pot="unknown"
20369773 892ln_s="ln -sf"
8a608357
MR
893
894# machine
cc6a90dd 895arch=`uname -m`
38d0a8aa 896cpu="generic"
8a608357 897
8a608357 898# OS
b9663405 899targetos=$(tolower $(uname -s))
8a608357 900
8a608357 901# libraries
497237c7 902enable zlib
8a608357
MR
903
904# configurable options
497237c7
RP
905enable debug
906enable dostrip
907enable ffmpeg
908enable ffplay
909enable ffserver
910enable ipv6
911enable static
912enable mpegaudio_hp
913enable network
8400d6b8 914enable optimizations
497237c7 915enable protocols
8a608357
MR
916vhook="default"
917
8a608357 918# build settings
baa3a937 919SHFLAGS='-shared -Wl,-soname,$@'
cab3ef82 920VHOOKSHFLAGS='$(SHFLAGS)'
e240ee67 921LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
c536cb09 922FFSERVERLDFLAGS=-Wl,-E
f39e56a8 923LDCONFIG="ldconfig"
f3ec2d46
SG
924LIBPREF="lib"
925LIBSUF=".a"
c5f14466
RP
926FULLNAME='$(NAME)$(BUILDSUF)'
927LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
f3ec2d46
SG
928SLIBPREF="lib"
929SLIBSUF=".so"
c5f14466 930SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
b29bddab
DB
931SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
932SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
24743a76 933LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
ef0bc4c9 934
c597172e
MR
935# find source path
936source_path="`dirname \"$0\"`"
497237c7 937enable source_path_used
c597172e
MR
938if test -z "$source_path" -o "$source_path" = "." ; then
939 source_path="`pwd`"
497237c7 940 disable source_path_used
c597172e
MR
941else
942 source_path="`cd \"$source_path\"; pwd`"
943 echo "$source_path" | grep -q '[[:blank:]]' &&
7483e694 944 die "Out of tree builds are impossible with whitespace in source path."
c597172e
MR
945fi
946
c597172e
MR
947FFMPEG_CONFIGURATION="$@"
948
facbea95
AJ
949ENCODER_LIST=`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
950DECODER_LIST=`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
951PARSER_LIST=`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
952BSF_LIST=`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' "$source_path/libavcodec/allcodecs.c"`
953MUXER_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
954DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
c4035e5d
LA
955OUTDEV_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavdevice/alldevices.c"`
956INDEV_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavdevice/alldevices.c"`
facbea95 957PROTOCOL_LIST=`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' "$source_path/libavformat/allformats.c"`
c597172e 958
7483e694
DB
959enable $ARCH_EXT_LIST \
960 $DECODER_LIST \
961 $ENCODER_LIST \
962 $PARSER_LIST \
963 $BSF_LIST \
964 $DEMUXER_LIST \
965 $MUXER_LIST \
966 $PROTOCOL_LIST \
967 $INDEV_LIST \
968 $OUTDEV_LIST \
c597172e
MR
969
970die_unknown(){
971 echo "Unknown option \"$1\"."
972 echo "See $0 --help for available options."
973 exit 1
974}
975
794f8e97 976show_list() {
bf0c4afa
RP
977 suffix=_$1
978 shift
979 echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
794f8e97
PI
980 exit 0
981}
982
c597172e 983for opt do
7483e694
DB
984 optval="${opt#*=}"
985 case "$opt" in
986 --log)
987 ;;
988 --log=*) logging="$optval"
989 ;;
990 --prefix=*) PREFIX="$optval"
991 ;;
992 --libdir=*) libdir="$optval"
993 ;;
994 --shlibdir=*) shlibdir="$optval"
995 ;;
996 --incdir=*) incdir="$optval"
997 ;;
998 --mandir=*) mandir="$optval"
999 ;;
1000 --source-path=*) source_path="$optval"
1001 ;;
1002 --cross-prefix=*) cross_prefix="$optval"
1003 ;;
1004 --cross-compile) enable cross_compile
1005 ;;
1006 --target-os=*) targetos="$optval"
1007 ;;
1008 --cc=*) cc="$optval"
1009 ;;
1010 --make=*) make="$optval"
1011 ;;
1012 --extra-cflags=*) add_cflags "$optval"
1013 ;;
1014 --extra-ldflags=*) add_ldflags "$optval"
1015 ;;
1016 --extra-libs=*) add_extralibs "$optval"
1017 ;;
1018 --build-suffix=*) BUILDSUF="$optval"
1019 ;;
1020 --arch=*) arch="$optval"
1021 ;;
1022 --cpu=*) cpu="$optval"
1023 ;;
1024 --enable-sunmlib) enable mlib
1025 ;;
1026 --disable-strip) disable dostrip
1027 ;;
1028 --disable-encoders) disable $ENCODER_LIST
1029 ;;
1030 --disable-decoders) disable $DECODER_LIST
1031 ;;
1032 --disable-muxers) disable $MUXER_LIST
1033 ;;
1034 --disable-demuxers) disable $DEMUXER_LIST
1035 ;;
1036 --disable-parsers) disable $PARSER_LIST
1037 ;;
1038 --disable-bsfs) disable $BSF_LIST
1039 ;;
1040 --disable-protocols) disable $PROTOCOL_LIST
1041 ;;
8fb1cb58 1042 --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
9aa8ed9d 1043 ;;
7483e694
DB
1044 --enable-*=*|--disable-*=*)
1045 eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
1046 case "$thing" in
1047 encoder|decoder|muxer|demuxer|parser|bsf|protocol) $action ${optval}_${thing} ;;
1048 *) die_unknown "$opt" ;;
1049 esac
1050 ;;
1051 --enable-?*|--disable-?*)
1052 eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
1053 echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
1054 $action $option
1055 ;;
1056 --list-*)
1057 NAME="${opt#--list-}"
1058 is_in $NAME $COMPONENT_LIST || die_unknown $opt
1059 NAME=${NAME%s}
1060 eval show_list $NAME \$$(toupper $NAME)_LIST
1061 ;;
1062 --help|-h) show_help
1063 ;;
1064 *)
1065 die_unknown $opt
1066 ;;
1067 esac
c597172e
MR
1068done
1069
270739bb 1070case "$arch" in
7483e694
DB
1071 i386|i486|i586|i686|i86pc|BePC)
1072 arch="x86_32"
1073 enable fast_unaligned
1074 ;;
1075 x86_64|amd64)
1076 arch="x86_32"
1077 enable fast_unaligned
1078 canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
1079 if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
1080 if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
1081 arch="x86_64"
1082 enable fast_64bit
1083 fi
1084 fi
1085 ;;
1086 # armv4l is a subset of armv[567]*l
1087 arm|armv[4567]*l)
1088 arch="armv4l"
1089 ;;
1090 alpha)
1091 arch="alpha"
1092 enable fast_64bit
1093 ;;
1094 "Power Macintosh"|ppc|powerpc)
1095 arch="powerpc"
1096 ;;
1097 ppc64)
1098 arch="powerpc"
c2a29455 1099 enable fast_64bit
d474299a 1100 ;;
7483e694
DB
1101 mips|mipsel|IP*)
1102 arch="mips"
d474299a 1103 ;;
7483e694
DB
1104 sun4u|sparc64)
1105 arch="sparc64"
1106 enable fast_64bit
d474299a 1107 ;;
7483e694
DB
1108 sparc)
1109 arch="sparc"
d474299a 1110 ;;
7483e694
DB
1111 sh4)
1112 arch="sh4"
d474299a 1113 ;;
7483e694
DB
1114 parisc)
1115 arch="parisc"
d474299a 1116 ;;
7483e694
DB
1117 parisc64)
1118 arch="parisc"
1119 enable fast_64bit
d474299a 1120 ;;
7483e694
DB
1121 s390|s390x)
1122 arch="s390"
d474299a 1123 ;;
7483e694
DB
1124 m68k)
1125 arch="m68k"
d474299a 1126 ;;
7483e694
DB
1127 ia64)
1128 arch="ia64"
1129 enable fast_64bit
d474299a 1130 ;;
7483e694
DB
1131 bfin)
1132 arch="bfin"
1133 ;;
1134 *)
1135 arch="unknown"
d474299a 1136 ;;
ef0bc4c9 1137esac
de6d9b64 1138
7483e694
DB
1139enable $arch
1140enabled_any x86_32 x86_64 && enable x86
1141enabled sparc64 && enable sparc
1142
1143# OS specific
1144case $targetos in
1145 beos|haiku|zeta)
1146 PREFIX="$HOME/config"
1147 # helps building libavcodec
1148 add_cflags "-DPIC -fomit-frame-pointer"
1149 # 3 gcc releases known for BeOS, each with ugly bugs
1150 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1151 case "$gcc_version" in
1152 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
1153 disable mmx
1154 ;;
1155 *20010315*) echo "BeBits gcc"
1156 add_cflags "-fno-expensive-optimizations"
1157 ;;
1158 esac
1159 LDCONFIG="echo ignoring ldconfig"
1160 SHFLAGS=-nostart
1161 # enable BeOS things
1162 enable audio_beos
1163 # no need for libm, but the inet stuff
1164 # Check for BONE
1165 # XXX: actually should check for NOT net_server
1166 if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
1167 network_extralibs="-lbind -lsocket"
1168 else
1169 enable beos_netserver
1170 network_extralibs="-lnet"
1171 fi ;;
1172 sunos)
1173 FFSERVERLDFLAGS=""
1174 SHFLAGS='-shared -Wl,-h,$@'
1175 network_extralibs="-lsocket -lnsl"
1176 ;;
1177 netbsd)
1178 oss_demuxer_extralibs="-lossaudio"
1179 oss_muxer_extralibs="-lossaudio"
1180 ;;
1181 openbsd)
1182 disable need_memalign
1183 LIBOBJFLAGS='$(PIC)'
1184 LDCONFIG='ldconfig -m $(SHLIBDIR)'
1185 SHFLAGS='-shared'
1186 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF).$(LIBVERSION)'
1187 SLIBNAME_WITH_VERSION='$(SLIBNAME)'
1188 SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
1189 oss_demuxer_extralibs="-lossaudio"
1190 oss_muxer_extralibs="-lossaudio"
1191 ;;
1192 freebsd)
1193 disable need_memalign
1194 ;;
1195 bsd/os)
1196 osextralibs="-lpoll -lgnugetopt"
1197 strip="strip -d"
1198 ;;
1199 darwin)
1200 disable need_memalign
1201 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(SPPVERSION),-compatibility_version,$(SPPVERSION) -Wl,-read_only_relocs,suppress'
1202 VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$@'
1203 strip="strip -x"
1204 FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
1205 SLIBSUF=".dylib"
1206 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
1207 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
1208 FFSERVERLDFLAGS=-Wl,-bind_at_load
1209 ;;
1210 mingw32*)
1211 targetos=mingw32
1212 shlibdir="$bindir"
1213 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1214 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1215 if enabled swscaler; then
1216 VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1217 VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1218 fi
1219 disable ffserver
1220 SLIBPREF=""
1221 SLIBSUF=".dll"
1222 EXESUF=".exe"
1223 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1224 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1225 SLIB_EXTRA_CMD='-lib /machine:i386 /def:$(@:$(SLIBSUF)=.def)'
1226 SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
1227 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
1228 SHFLAGS='-shared -Wl,--output-def,$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
1229 ;;
1230 cygwin*)
1231 targetos=cygwin
1232 shlibdir="$bindir"
1233 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1234 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1235 if enabled swscaler; then
1236 VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1237 VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1238 fi
1239 EXESUF=".exe"
1240 SLIBPREF="cyg"
1241 SLIBSUF=".dll"
1242 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1243 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1244 SHFLAGS='-shared -Wl,--enable-auto-image-base'
1245 ;;
4f365f37
MK
1246 *-dos|freedos|opendos)
1247 enable memalign_hack
1248 disable ffplay ffserver vhook
1249 disable $INDEV_LIST $OUTDEV_LIST
1250 network_extralibs="-lsocket"
1251 EXESUF=".exe"
1252 ;;
7483e694
DB
1253 linux)
1254 LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
1255 enable dv1394
1256 ;;
1257 irix*)
1258 targetos=irix
1259 ranlib="echo ignoring ranlib"
1260 ;;
d22e8442
DY
1261 os/2*)
1262 ar="emxomfar -p256"
1263 ranlib="echo ignoring ranlib"
1264 strip="lxlite"
1265 ln_s="cp -f"
1266 add_cflags "-Zomf"
1267 EXESUF=".exe"
1268 FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
1269 SHFLAGS='$(NAME).def -Zdll -Zomf'
1270 FFSERVERLDFLAGS=""
1271 LIBSUF="_s.lib"
1272 SLIBPREF=""
1273 SLIBSUF=".dll"
1274 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1275 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
1276 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(NAME).def; \
1277 echo PROTMODE >> $(NAME).def; \
1278 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(NAME).def; \
1279 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(NAME).def; \
1280 echo EXPORTS >> $(NAME).def; \
1281 emxexp -o $(OBJS) >> $(NAME).def'
1282 SLIB_EXTRA_CMD='emximp -o $(LIBPREF)$(NAME)_dll.a $(NAME).def; \
1283 emximp -o $(LIBPREF)$(NAME)_dll.lib $(NAME).def;'
1284 SLIB_INSTALL_EXTRA_CMD='install -m 644 $(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
1285 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
1286 vhook="no"
1287 ;;
1288
7483e694
DB
1289 *)
1290 targetos="${targetos}-UNKNOWN"
1291 ;;
1292esac
1293
c597172e 1294add_extralibs $osextralibs
de6d9b64 1295
e3c00e34 1296if ! disabled logging ; then
90be59ef 1297 enabled logging || logfile="$logging"
57bd82d4
MR
1298 echo "# $0 $@" >$logfile
1299 set >>$logfile
2ba042a7
MR
1300else
1301 logfile=/dev/null
57bd82d4 1302fi
e89b8b0a 1303
28d8e661
DB
1304# Combine FFLDFLAGS and the LDFLAGS environment variable.
1305LDFLAGS="$FFLDFLAGS $LDFLAGS"
e89b8b0a 1306
497237c7 1307test -n "$cross_prefix" && enable cross_compile
1ea46bed
MR
1308cc="${cross_prefix}${cc}"
1309ar="${cross_prefix}${ar}"
1310ranlib="${cross_prefix}${ranlib}"
1311strip="${cross_prefix}${strip}"
1312
320d060a 1313# we need to build at least one lib type
93b3c083 1314if ! enabled_any static shared; then
320d060a
DB
1315 cat <<EOF
1316At least one library type must be built.
1317Specify --enable-static to build the static libraries or --enable-shared to
1318build the shared libraries as well. To only build the shared libraries specify
1319--disable-static in addition to --enable-shared.
1320EOF
1321 exit 1;
1322fi
1323
abc4e572 1324disabled static && LIBNAME=""
2a320695 1325
a2234ceb
RP
1326if enabled_any libfaad libfaadbin ; then
1327 if check_header faad.h; then
1328 check_cc << EOF
1329#include <faad.h>
1330#ifndef FAAD2_VERSION
1331ok faad1
1332#endif
db817cf3 1333int main(void) { return 0; }
a2234ceb
RP
1334EOF
1335 test $? = 0 && enable libfaad2
1336 else
ff3dac65 1337 die "FAAD test failed."
a2234ceb
RP
1338 fi
1339fi
1340
1341
93b3c083 1342if ! enabled gpl; then
54118497
RP
1343 die_gpl_disabled(){
1344 name=$1
1345 shift
1346 enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
1347 }
1348 die_gpl_disabled "The Postprocessing code" pp
7bc5f2a8 1349 die_gpl_disabled "liba52" liba52
1cc60c47
DB
1350 die_gpl_disabled "libx264" libx264
1351 die_gpl_disabled "libxvidcore" libxvid
54118497
RP
1352 die_gpl_disabled "FAAD2" libfaad2
1353 die_gpl_disabled "The X11 grabber" x11grab
1354 die_gpl_disabled "The software scaler" swscaler
ebb810d9 1355fi
b2e3c528 1356
9eeed841 1357check_deps $ARCH_EXT_LIST
0f3cb305 1358
5d323602
MR
1359test -z "$need_memalign" && need_memalign="$mmx"
1360
cf9d24ad 1361#Darwin CC versions
ced75d92 1362if test $targetos = darwin; then
b2924696 1363 if test -n "`$cc -v 2>&1 | grep xlc`"; then
30a3e5d4 1364 add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
cf9d24ad 1365 else
26c1b3be
DB
1366 add_cflags "-no-cpp-precomp -pipe"
1367 check_cflags "-force_cpusubtype_ALL"
1368 check_cflags "-Wno-sign-compare"
7799eeec 1369 disabled shared && add_cflags -mdynamic-no-pic
cf9d24ad 1370 fi
2a1a6b64
MN
1371fi
1372
8400d6b8 1373disabled optimizations || add_cflags -fomit-frame-pointer
cf9d24ad 1374
a4adb608 1375# Add processor-specific flags
38d0a8aa 1376if test $cpu != "generic"; then
bc8ec47b
MR
1377 warn_altivec(){
1378 $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
1658bc4f 1379 }
38d0a8aa 1380 case $cpu in
bb270c08 1381 601|ppc601|PowerPC601)
1c5d830c 1382 add_cflags "-mcpu=601"
bc8ec47b 1383 warn_altivec enabled PPC601
bb270c08
DB
1384 ;;
1385 603*|ppc603*|PowerPC603*)
1c5d830c 1386 add_cflags "-mcpu=603"
bc8ec47b 1387 warn_altivec enabled PPC603
bb270c08
DB
1388 ;;
1389 604*|ppc604*|PowerPC604*)
1c5d830c 1390 add_cflags "-mcpu=604"
bc8ec47b 1391 warn_altivec enabled PPC604
bb270c08
DB
1392 ;;
1393 G3|g3|75*|ppc75*|PowerPC75*)
1c5d830c 1394 add_cflags "-mcpu=750 -mpowerpc-gfxopt"
bc8ec47b 1395 warn_altivec enabled PPC75x
bb270c08
DB
1396 ;;
1397 G4|g4|745*|ppc745*|PowerPC745*)
1c5d830c 1398 add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
bc8ec47b 1399 warn_altivec disabled PPC745x
bb270c08
DB
1400 ;;
1401 74*|ppc74*|PowerPC74*)
1c5d830c 1402 add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
bc8ec47b 1403 warn_altivec disabled PPC74xx
bb270c08
DB
1404 ;;
1405 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1c5d830c 1406 add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
bc8ec47b 1407 warn_altivec disabled PPC970
9cafbd6c 1408 enable ppc64
bb270c08 1409 ;;
e07e357d
LB
1410 Cell|CELL|cell)
1411 add_cflags "-mcpu=cell"
1412 warn_altivec disabled Cell
9cafbd6c 1413 enable ppc64
e07e357d 1414 ;;
e7768fc5
GP
1415 # targets that do NOT support conditional mov (cmov)
1416 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
38d0a8aa 1417 add_cflags "-march=$cpu"
497237c7 1418 disable cmov
e7768fc5
GP
1419 ;;
1420 # targets that do support conditional mov (cmov)
416519dd 1421 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
e7768fc5 1422 add_cflags "-march=$cpu"
497237c7
RP
1423 enable cmov
1424 enable fast_cmov
94e4c3a3
GP
1425 ;;
1426 # targets that do support conditional mov but on which it's slow
1427 pentium4|prescott|nocona)
1428 add_cflags "-march=$cpu"
497237c7
RP
1429 enable cmov
1430 disable fast_cmov
bb270c08 1431 ;;
d7b34d08 1432 sparc64)
1c5d830c 1433 add_cflags "-mcpu=v9"
d7b34d08 1434 ;;
8684704b
MH
1435 bf*) #bf531 bf532 bf533 bf561 bf5xx all get this config
1436 add_cflags "-mfdpic"
846dffeb 1437 add_ldflags "-mfdpic"
8684704b 1438 ;;
6b19786b
MR
1439 arm*)
1440 add_cflags "-mcpu=$cpu"
1441 ;;
bb270c08 1442 *)
7483e694 1443 echo "WARNING: Unknown CPU \"$cpu\", ignored."
bb270c08 1444 ;;
a4adb608
MN
1445 esac
1446fi
1447
412c1562
MR
1448gnu_make(){
1449 $1 --version 2>&1 | grep -q GNU
1450}
1451
1452if ! gnu_make $make; then
1453 gnu_make gmake && make=gmake || die "GNU make not found."
1454fi
1455
be0d52ab
MR
1456# make sure we can execute files in $TMPDIR
1457cat >$TMPE 2>>$logfile <<EOF
1458#! /bin/sh
1459EOF
1460chmod +x $TMPE >>$logfile 2>&1
1461if ! $TMPE >>$logfile 2>&1; then
1462 cat <<EOF
1463Unable to create and execute files in $TMPDIR1. Set the TMPDIR environment
68300911
DB
1464variable to another directory and make sure that $TMPDIR1 is not mounted
1465noexec.
be0d52ab
MR
1466EOF
1467 die "Sanity test failed."
1468fi
0244f743 1469rm $TMPE
be0d52ab 1470
1a268acc
MR
1471# compiler sanity check
1472check_exec <<EOF
e5af4a11 1473int main(void){
1a268acc
MR
1474 return 0;
1475}
1476EOF
1477if test "$?" != 0; then
1478 echo "$cc is unable to create an executable file."
93b3c083 1479 if test -z "$cross_prefix" && ! enabled cross_compile ; then
1a268acc 1480 echo "If $cc is a cross-compiler, use the --cross-compile option."
c7ae6345 1481 echo "Only do this if you know what cross compiling means."
1a268acc
MR
1482 fi
1483 die "C compiler test failed."
1484fi
1485
9eeed841 1486if enabled x86; then
44965991
PI
1487 # check whether EBP is available on x86
1488 # As 'i' is stored on the stack, this program will crash
1489 # if the base pointer is used to access it because the
1490 # base pointer is cleared in the inline assembly code.
7dfef245 1491 check_exec_crash <<EOF && enable ebp_available
44965991
PI
1492 volatile int i=0;
1493 asm volatile (
1494 "xorl %%ebp, %%ebp"
1495 ::: "%ebp");
1496 return i;
44965991
PI
1497EOF
1498
1499 # check wether EBX is available on x86
940f335a 1500 check_asm ebx_available '"":::"%ebx"'
8e380710
LM
1501
1502 # check whether binutils is new enough to compile SSSE3
940f335a 1503 enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
44965991
PI
1504fi
1505
87ea51e0
LB
1506# check for assembler specific support
1507
cc6a90dd 1508if test $arch = "powerpc"; then
497237c7 1509check_cc <<EOF && enable dcbzl
87ea51e0
LB
1510int main(void) {
1511 register long zero = 0;
1512 char data[1024];
1513 asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1514return 0;
1515}
1516EOF
1517fi
1518
57bd82d4
MR
1519# check for SIMD availability
1520
115329f1 1521# AltiVec flags: The FSF version of GCC differs from the Apple version
9eeed841 1522if enabled altivec; then
3ae3b721
RP
1523 test -n "`$cc -v 2>&1 | grep version | grep Apple`" &&
1524 add_cflags "-faltivec" ||
0182fee8 1525 add_cflags "-maltivec -mabi=altivec"
b6e52719 1526
0182fee8 1527 check_header altivec.h
a9a07762 1528
0182fee8 1529 # check if our compiler supports Motorola AltiVec C API
3ae3b721
RP
1530 enabled altivec_h &&
1531 inc_altivec_h="#include <altivec.h>" ||
f25fc9b1 1532 inc_altivec_h=
497237c7 1533 check_cc <<EOF || disable altivec
dcd479c0 1534$inc_altivec_h
a9a07762
MN
1535int main(void) {
1536 vector signed int v1, v2, v3;
1537 v1 = vec_add(v2,v3);
1538 return 0;
1539}
1540EOF
1541fi
ab6c65f6 1542
940f335a
MR
1543enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
1544enabled armv6 && check_asm armv6 '"sadd16 r0, r0, r0"'
1545enabled iwmmxt && check_asm iwmmxt '"wunpckelub wr6, wr4"'
1546enabled mmi && check_asm mmi '"lq $2, 0($2)"'
1547enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc
bd9d34a0 1548
8b03def6
DB
1549enabled vis && add_cflags "-mcpu=ultrasparc -mtune=ultrasparc"
1550
57bd82d4
MR
1551# ---
1552# big/little-endian test
9eebe687
MR
1553check_cc <<EOF || die "endian test failed"
1554unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
a3999908 1555EOF
e89d9fd8 1556grep -q BIGE $TMPO && enable bigendian
487a54d7 1557
a3999908 1558# ---
3d204385
NK
1559# check availability of some header files
1560
a98bb16d
RP
1561if check_func dlopen; then
1562 ldl=
1563elif check_func dlopen -ldl; then
1564 ldl=-ldl
8bf5d58f
MN
1565fi
1566
7483e694
DB
1567check_func fork
1568check_func gethrtime
1569check_func getrusage
1570check_func inet_aton
1571check_func memalign
1572check_func mkstemp
a98bb16d 1573check_func2 windows.h GetProcessTimes
6ffa87d3 1574
a98bb16d 1575check_header byteswap.h
e16e49ac 1576check_header conio.h
a98bb16d
RP
1577check_header dlfcn.h
1578check_header malloc.h
1579check_header termios.h
1580
1581if ! enabled_any memalign memalign_hack && enabled need_memalign ; then
1582 die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1583fi
e16e49ac 1584
497237c7 1585enabled zlib && check_lib zlib.h zlibVersion -lz || disable zlib
57bd82d4 1586
b0c858d8
FR
1587# ffserver uses poll(),
1588# if it's not found we can emulate it using select().
1589if enabled ffserver; then
1590 check_header sys/poll.h
81644c2e 1591 check_header sys/select.h
b0c858d8
FR
1592fi
1593
57bd82d4
MR
1594# check for some common methods of building with pthread support
1595# do this before the optional library checks as some of them require pthreads
1596if enabled pthreads; then
9e7fd101
MR
1597 if check_func pthread_create; then
1598 :
1599 elif check_func pthread_create -pthread; then
1600 add_cflags -pthread
1601 add_ldflags -pthread
1602 elif check_func pthread_create -pthreads; then
1603 add_cflags -pthreads
1604 add_ldflags -pthreads
1605 elif ! check_lib pthread.h pthread_create -lpthread; then
1606 die "ERROR: can't find pthreads library"
1607 fi
57bd82d4
MR
1608fi
1609
8eee7025 1610for thread in $THREADS_LIST; do
e5f94c2b 1611 if enabled $thread; then
3ae3b721
RP
1612 test -n "$thread_type" &&
1613 die "ERROR: Only one thread type must be selected." ||
e5f94c2b 1614 thread_type="$thread"
e5f94c2b
RP
1615 fi
1616done
1617
fdf88598
MR
1618check_lib math.h sin -lm
1619
a33cab3a
MK
1620# test for C99 functions in math.h
1621for func in llrint lrint lrintf round roundf; do
1622 check_exec <<EOF && enable $func || disable $func
f32adb22
MR
1623#define _ISOC9X_SOURCE 1
1624#include <math.h>
a33cab3a 1625int main(void) { return ($func(3.999f) > 0)?0:1; }
f32adb22 1626EOF
a33cab3a 1627done
f32adb22 1628
f5a756ef 1629enabled_any libamr_nb libamr_wb && enable libamr
12b61a74 1630
57bd82d4 1631# these are off by default, so fail if requested and not available
79fda097 1632enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
7483e694
DB
1633enabled liba52 && require liba52 a52dec/a52.h a52_init -la52
1634enabled libamr_nb && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
1635enabled libamr_wb && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
1636enabled libdc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
79fda097
DB
1637enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
1638enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
7483e694
DB
1639enabled libgsm && require libgsm gsm.h gsm_create -lgsm
1640enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1641enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
1642enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
1643enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
1644enabled libx264 && require x264 x264.h x264_encoder_open -lx264
1645enabled libxvid && require Xvid xvid.h xvid_global -lxvidcore
1646enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
8ac17293 1647
6ea67bbb
JR
1648# disable the native AC-3 decoder if liba52 is enabled
1649enabled liba52 && disable ac3_decoder
1650
c13e1abd
FH
1651_restrict=
1652for restrict_keyword in restrict __restrict__ __restrict; do
57bd82d4 1653 check_cc <<EOF && _restrict=$restrict_keyword && break
dcd479c0
MR
1654void foo(char * $restrict_keyword p);
1655EOF
c13e1abd
FH
1656done
1657
703afd07 1658test "$vhook" = "default" && vhook="$dlopen"
a8721c09 1659
b0268cc0 1660if test "$targetos" = cygwin -o "$targetos" = mingw32 && enabled_all static vhook ; then
497237c7 1661 disable vhook
fbb9d104 1662 echo
b0268cc0 1663 echo "At the moment vhooks don't work on Cygwin or MinGW static builds."
fbb9d104
VP
1664 echo "Patches welcome."
1665 echo
1666fi
1667
8d923001
MR
1668if enabled vhook; then
1669 check_ldflags -rdynamic
1670 check_ldflags -export-dynamic
1671fi
bfd2edeb 1672
eea50282
MR
1673check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
1674check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType
04511d53 1675
a86b921c 1676##########################################
29799f8b 1677# SDL check
a86b921c 1678
497237c7
RP
1679disable sdl_too_old
1680disable sdl
6a1a892f 1681SDL_CONFIG="${cross_prefix}sdl-config"
225e21ef
MR
1682if "${SDL_CONFIG}" --version >/dev/null 2>&1; then
1683 sdl_cflags=`"${SDL_CONFIG}" --cflags`
1684 temp_cflags $sdl_cflags
dcd479c0 1685 temp_extralibs `"${SDL_CONFIG}" --libs`
225e21ef 1686 if check_lib SDL.h SDL_Init; then
dcd479c0 1687 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
29f3b38a 1688 if test "$_sdlversion" -lt 121 ; then
497237c7 1689 enable sdl_too_old
dcd479c0 1690 else
497237c7 1691 enable sdl
225e21ef 1692 check_cc $sdl_cflags <<EOF && enable sdl_video_size
29f3b38a
MR
1693#include <SDL.h>
1694int main(void){
1695 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1696 int w = vi->current_w;
1697 return 0;
1698}
1699EOF
dcd479c0
MR
1700 fi
1701 fi
29f3b38a 1702 restore_flags
c3f6b472 1703fi
57bd82d4 1704
d5697779 1705texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html
146ea952 1706
72be9e73
DY
1707check_type sys/socket.h socklen_t
1708
7a91333f 1709##########################################
73b46a95
RP
1710# Network check
1711
1712if enabled network; then
1713 # Prefer arpa/inet.h over winsock2
1714 if check_header arpa/inet.h ; then
1715 check_func closesocket
1716 elif check_header winsock2.h ; then
ea10ddde 1717 network_extralibs="-lws2_32"
72be9e73 1718 check_type ws2tcpip.h socklen_t
73b46a95
RP
1719 check_func2 winsock2.h closesocket
1720 fi
1721fi
1722
1723##########################################
29799f8b 1724# IPv6 check
7a91333f 1725
497237c7 1726enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
7a91333f
HZ
1727#include <sys/types.h>
1728#include <sys/socket.h>
1729#include <netinet/in.h>
1730#include <netdb.h>
db817cf3 1731int main(void) {
7483e694
DB
1732 struct sockaddr_storage saddr;
1733 struct ipv6_mreq mreq6;
1734 getaddrinfo(0,0,0,0);
1735 getnameinfo(0,0,0,0,0,0,0);
1736 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
7a91333f
HZ
1737}
1738EOF
1739
06e31011
RP
1740check_header linux/videodev.h
1741check_header linux/videodev2.h
47f38850 1742
f8aa696f 1743# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1c915f83
RP
1744{ check_header dev/bktr/ioctl_meteor.h &&
1745 check_header dev/bktr/ioctl_bt848.h; } ||
1746{ check_header machine/ioctl_meteor.h &&
1747 check_header machine/ioctl_bt848.h; } ||
1748{ check_header dev/video/meteor/ioctl_meteor.h &&
1749 check_header dev/video/bktr/ioctl_bt848.h; } ||
1750check_header dev/ic/bt8xx.h
f8aa696f 1751
c7682de0
RP
1752check_header sys/soundcard.h
1753check_header soundcard.h
deb29777 1754
7483e694 1755# deal with the X11 frame grabber
56a059ac 1756enabled x11grab &&
f58f4ce1
GP
1757check_header X11/Xlib.h &&
1758check_header X11/extensions/XShm.h &&
1759check_func XOpenDisplay -lX11 &&
06eab4ba 1760check_func XShmCreateImage -lX11 -lXext
f58f4ce1 1761
57bd82d4
MR
1762enabled debug && add_cflags -g
1763
1764# add some useful compiler flags if supported
1765check_cflags -Wdeclaration-after-statement
dcd479c0
MR
1766check_cflags -Wall
1767check_cflags -Wno-switch
c07bd6a9
MN
1768check_cflags -Wdisabled-optimization
1769check_cflags -Wpointer-arith
1770check_cflags -Wredundant-decls
cc1fb623 1771check_cflags -Wno-pointer-sign
5af4e0cc 1772enabled extra_warnings && check_cflags -Winline
cf9d24ad 1773
57bd82d4 1774# add some linker flags
5c0e9479 1775check_ldflags -Wl,--warn-common
e240ee67 1776check_ldflags $LDLATEFLAGS
c2fd6530 1777check_ldflags -Wl,-Bsymbolic
94a3401e 1778
bd2216e4
MR
1779if enabled small; then
1780 check_cflags -Os # not all compilers support -Os
8400d6b8
DB
1781 optimizations="small"
1782elif enabled optimizations; then
b2924696 1783 if test -n "`$cc -v 2>&1 | grep xlc`"; then
30a3e5d4
NP
1784 add_cflags "-O5"
1785 add_ldflags "-O5"
cf9d24ad 1786 else
30a3e5d4 1787 add_cflags "-O3"
cf9d24ad 1788 fi
cddf3f45
GM
1789fi
1790
80581e98 1791# PIC flags for shared library objects where they are needed
5af4e0cc 1792if enabled shared; then
569cb218
MR
1793 # LIBOBJFLAGS may have already been set in the OS configuration
1794 if test -z "$LIBOBJFLAGS" ; then
1795 case "$arch" in
1796 x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS='$(PIC)' ;;
1797 esac
1798 fi
80581e98
MN
1799fi
1800
90be59ef 1801if enabled gprof; then
30a3e5d4
NP
1802 add_cflags "-p"
1803 add_ldflags "-p"
1db54e20
DB
1804fi
1805
3b26ee47 1806VHOOKCFLAGS="-fPIC"
18451f7d 1807
7f3c02fc 1808# Find out if the .align argument is a power of two or not.
4454dc1b 1809if test $asmalign_pot = "unknown"; then
497237c7
RP
1810 disable asmalign_pot
1811 echo 'asm (".align 3");' | check_cc && enable asmalign_pot
4454dc1b
JD
1812fi
1813
7483e694
DB
1814enabled_any $DECODER_LIST && enable decoders
1815enabled_any $ENCODER_LIST && enable encoders
1816enabled_any $BSF_LIST && enable bsfs
1817enabled_any $DEMUXER_LIST && enable demuxers
1818enabled_any $MUXER_LIST && enable muxers
1819enabled_any $INDEV_LIST && enable demuxers
1820enabled_any $OUTDEV_LIST && enable muxers
1821enabled_any $PROTOCOL_LIST && enable protocols
1822
1823enabled_any $THREADS_LIST && enable threads
1824
1825check_deps $CONFIG_LIST \
1826 $HAVE_LIST \
1827 $DECODER_LIST \
1828 $ENCODER_LIST \
1829 $PARSER_LIST \
1830 $BSF_LIST \
1831 $DEMUXER_LIST \
1832 $MUXER_LIST \
1833 $INDEV_LIST \
1834 $OUTDEV_LIST \
1835 $PROTOCOL_LIST \
f70f03f6 1836
f7b8bffe 1837enabled libdc1394 && append pkg_requires "libraw1394"
fb2ce7d9 1838enabled libtheora && append pkg_requires "theora"
f9def9cc 1839enabled libvorbis && append pkg_requires "vorbisenc"
fb2ce7d9 1840
f36958f8
DB
1841echo "install prefix $PREFIX"
1842echo "source path $source_path"
1843echo "C compiler $cc"
1844echo "make $make"
bfd5afd8 1845echo ".align is power-of-two $asmalign_pot"
f36958f8 1846echo "ARCH $arch ($cpu)"
eb94aca9 1847if test "$BUILDSUF" != ""; then
f36958f8 1848 echo "build suffix $BUILDSUF"
eb94aca9 1849fi
0db2ce77 1850echo "big-endian ${bigendian-no}"
419b8784 1851if test $arch = "x86_32" -o $arch = "x86_64"; then
0db2ce77
MR
1852 echo "MMX enabled ${mmx-no}"
1853 echo "CMOV enabled ${cmov-no}"
1854 echo "CMOV is fast ${fast_cmov-no}"
971cc990
MN
1855 echo "EBX available ${ebx_available-no}"
1856 echo "EBP available ${ebp_available-no}"
e41e8342 1857fi
cc6a90dd 1858if test $arch = "armv4l"; then
0db2ce77
MR
1859 echo "ARMv5TE enabled ${armv5te-no}"
1860 echo "ARMv6 enabled ${armv6-no}"
1861 echo "IWMMXT enabled ${iwmmxt-no}"
eba9ae3c 1862fi
e241ba14 1863if test $arch = "mips"; then
0db2ce77 1864 echo "MMI enabled ${mmi-no}"
e41e8342 1865fi
cc6a90dd 1866if test $arch = "powerpc"; then
0db2ce77
MR
1867 echo "AltiVec enabled ${altivec-no}"
1868 echo "dcbzl available ${dcbzl-no}"
e41e8342 1869fi
0db2ce77
MR
1870echo "gprof enabled ${gprof-no}"
1871echo "debug symbols ${debug-no}"
1872echo "strip symbols ${dostrip-no}"
8400d6b8 1873echo "optimizations ${optimizations-no}"
0db2ce77
MR
1874echo "static ${static-no}"
1875echo "shared ${shared-no}"
1876echo "postprocessing support ${pp-no}"
1877echo "software scaler enabled ${swscaler-no}"
1878echo "video hooking ${vhook-no}"
90be59ef 1879if enabled vhook; then
0db2ce77
MR
1880 echo "Imlib2 support ${imlib2-no}"
1881 echo "FreeType support ${freetype2-no}"
68892110 1882fi
0db2ce77 1883echo "network support ${network-no}"
90be59ef 1884if enabled network; then
0db2ce77 1885 echo "IPv6 support ${ipv6-no}"
bfd5afd8 1886fi
0db2ce77
MR
1887echo "threading support ${thread_type-no}"
1888echo "SDL support ${sdl-no}"
90be59ef 1889if enabled sdl_too_old; then
bfd5afd8
DB
1890 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1891fi
0db2ce77
MR
1892echo "Sun medialib support ${mlib-no}"
1893echo "AVISynth enabled ${avisynth-no}"
1894echo "liba52 support ${liba52-no}"
1895echo "liba52 dlopened ${liba52bin-no}"
1896echo "libamr-nb support ${libamr_nb-no}"
1897echo "libamr-wb support ${libamr_wb-no}"
f7b8bffe 1898echo "libdc1394 support ${libdc1394-no}"
0db2ce77
MR
1899echo "libfaac enabled ${libfaac-no}"
1900echo "libfaad enabled ${libfaad-no}"
7e0871a7 1901echo "libfaad dlopened ${libfaadbin-no}"
0db2ce77
MR
1902echo "libgsm enabled ${libgsm-no}"
1903echo "libmp3lame enabled ${libmp3lame-no}"
1904echo "libnut enabled ${libnut-no}"
0db2ce77
MR
1905echo "libtheora enabled ${libtheora-no}"
1906echo "libvorbis enabled ${libvorbis-no}"
1907echo "x264 enabled ${libx264-no}"
1908echo "XviD enabled ${libxvid-no}"
1909echo "zlib enabled ${zlib-no}"
3ae3b721
RP
1910enabled gpl &&
1911 echo "License: GPL" ||
f25fc9b1 1912 echo "License: LGPL"
de6d9b64 1913
7dd2862b 1914for type in decoder encoder parser demuxer muxer protocol bsf indev outdev; do
8138b9db
RP
1915 echo "Enabled ${type}s:"
1916 ucname="\$`toupper $type`_LIST"
1917 list="`eval echo $ucname`"
1918 partlist=""
1919 for part in $list; do
1920 enabled $part && partlist="$partlist $part"
1921 done
1922 partlist=`echo $partlist | sed s/_$type//g | tr ' ' '\n' | sort`
1923 echo $partlist
1924done
1925
29799f8b 1926echo "Creating config.mak and config.h..."
de6d9b64 1927
29799f8b
DB
1928echo "# Automatically generated by configure - do not modify!" > config.mak
1929echo "/* Automatically generated by configure - do not modify! */" > $TMPH
9c05103f
DB
1930echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
1931echo "#define FFMPEG_CONFIG_H" >> $TMPH
0fd12426 1932echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
de6d9b64 1933
2266e085 1934echo "PREFIX=$PREFIX" >> config.mak
c75560ae 1935echo "prefix=\$(DESTDIR)\$(PREFIX)" >> config.mak
22a324da
DB
1936echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
1937echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
1938echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
1939echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
1940echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
4a908fbc 1941echo "MAKE=$make" >> config.mak
980fc7b8
FB
1942echo "CC=$cc" >> config.mak
1943echo "AR=$ar" >> config.mak
be7109c1 1944echo "RANLIB=$ranlib" >> config.mak
78eb6531 1945echo "LDCONFIG=$LDCONFIG" >> config.mak
20369773 1946echo "LN_S=$ln_s" >> config.mak
3ae3b721
RP
1947enabled dostrip &&
1948 echo "STRIP=$strip" >> config.mak ||
f25fc9b1 1949 echo "STRIP=echo ignoring strip" >> config.mak
75388c74 1950
a9b3f630 1951echo "OPTFLAGS=$CFLAGS" >> config.mak
408382a4 1952echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
0f3cb305 1953echo "LDFLAGS=$LDFLAGS" >> config.mak
c536cb09 1954echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
e1707f52 1955echo "SHFLAGS=$SHFLAGS" >> config.mak
408382a4 1956echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
fbb9d104 1957echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
80581e98 1958echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
5af4e0cc 1959echo "BUILD_STATIC=$static" >> config.mak
eb94aca9 1960echo "BUILDSUF=$BUILDSUF" >> config.mak
c5f14466 1961echo "FULLNAME=$FULLNAME" >> config.mak
f3ec2d46 1962echo "LIBPREF=$LIBPREF" >> config.mak
c5f14466 1963echo "LIBSUF=$LIBSUF" >> config.mak
24743a76 1964echo "LIBNAME=$LIBNAME" >> config.mak
f3ec2d46 1965echo "SLIBPREF=$SLIBPREF" >> config.mak
c5f14466
RP
1966echo "SLIBSUF=$SLIBSUF" >> config.mak
1967echo "EXESUF=$EXESUF" >> config.mak
4dc62701 1968
90be59ef 1969if enabled bigendian; then
7483e694
DB
1970 echo "WORDS_BIGENDIAN=yes" >> config.mak
1971 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
91d1f1a4 1972fi
90be59ef 1973if enabled mmx; then
7483e694 1974 echo "#define __CPU__ 586" >> $TMPH
de6d9b64 1975fi
44161118 1976
90be59ef 1977if enabled sdl; then
7483e694
DB
1978 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1979 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
a86b921c 1980fi
90be59ef 1981if enabled texi2html; then
7483e694 1982 echo "BUILD_DOC=yes" >> config.mak
146ea952 1983fi
5a872801 1984
790c9ca7 1985sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
6d9a2421 1986pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
5a872801 1987lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
c721d803 1988lavd_version=`grep '#define LIBAVDEVICE_VERSION ' "$source_path/libavdevice/avdevice.h" | sed 's/[^0-9\.]//g'`
5a872801
LB
1989lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
1990lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
1991
1992
1993
5af4e0cc 1994if enabled shared; then
7483e694
DB
1995 echo "BUILD_SHARED=yes" >> config.mak
1996 echo "PIC=-fPIC -DPIC" >> config.mak
1997 echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
1998 echo "SPPVERSION=$pp_version" >> config.mak
1999 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
2000 echo "LAVCVERSION=$lavc_version" >> config.mak
2001 echo "LAVDMAJOR=${lavd_version%%.*}" >> config.mak
2002 echo "LAVDVERSION=$lavd_version" >> config.mak
2003 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
2004 echo "LAVFVERSION=$lavf_version" >> config.mak
2005 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
2006 echo "LAVUVERSION=$lavu_version" >> config.mak
2007 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
2008 echo "SWSVERSION=$sws_version" >> config.mak
2009 echo "SLIBNAME=${SLIBNAME}" >> config.mak
2010 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2011 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
d22e8442 2012 echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
7483e694
DB
2013 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
2014 echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
2015 echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
0319c531 2016fi
d7e27559 2017echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
ef0bc4c9 2018echo "EXTRALIBS=$extralibs" >> config.mak
d2845d68 2019
3d907e22
MR
2020print_config ARCH_ $TMPH config.mak $ARCH_LIST
2021print_config HAVE_ $TMPH config.mak $HAVE_LIST
7483e694
DB
2022print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \
2023 $DECODER_LIST \
2024 $ENCODER_LIST \
2025 $PARSER_LIST \
2026 $BSF_LIST \
2027 $DEMUXER_LIST \
2028 $MUXER_LIST \
2029 $PROTOCOL_LIST \
2030 $INDEV_LIST \
2031 $OUTDEV_LIST \
8ac17293 2032
c13e1abd
FH
2033echo "#define restrict $_restrict" >> $TMPH
2034
bd2216e4 2035if enabled small; then
7483e694 2036 echo "#define av_always_inline" >> $TMPH
bb801c97
MN
2037fi
2038
997baf01
MR
2039echo "SRC_PATH=\"$source_path\"" >> config.mak
2040echo "SRC_PATH_BARE=$source_path" >> config.mak
2041echo "BUILD_ROOT=\"$PWD\"" >> config.mak
0f3cb305 2042
8156056e 2043# Apparently it's not possible to portably echo a backslash.
3ae3b721 2044enabled asmalign_pot &&
7483e694
DB
2045 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
2046 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
4454dc1b 2047
bc634f6f 2048
9c05103f
DB
2049echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
2050
9cb2cf10 2051# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
3ae3b721
RP
2052cmp -s $TMPH config.h &&
2053 echo "config.h is unchanged" ||
2054 mv -f $TMPH config.h
3d204385 2055
f3ec2d46 2056rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
def4272a 2057
165af439 2058# build tree in object directory if source path is different from current one
90be59ef 2059if enabled source_path_used; then
165af439 2060 DIRS="\
7483e694
DB
2061 doc \
2062 libavcodec \
2063 libavcodec/alpha \
2064 libavcodec/armv4l \
2065 libavcodec/bfin \
2066 libavcodec/i386 \
2067 libavcodec/mlib \
2068 libavcodec/ppc \
2069 libavcodec/sh4 \
2070 libavcodec/sparc \
52a9cf34 2071 libavdevice \
7483e694
DB
2072 libavformat \
2073 libavutil \
2074 libpostproc \
2075 libswscale \
2076 tests \
2077 tools \
2078 vhook \
2079 "
165af439 2080 FILES="\
7483e694
DB
2081 Makefile \
2082 common.mak \
2083 doc/texi2pod.pl \
2084 libavcodec/Makefile \
52a9cf34 2085 libavdevice/Makefile \
7483e694
DB
2086 libavformat/Makefile \
2087 libavutil/Makefile \
2088 libpostproc/Makefile \
2089 libswscale/Makefile \
2090 "
165af439 2091 for dir in $DIRS ; do
7483e694 2092 mkdir -p $dir
165af439
MR
2093 done
2094 for f in $FILES ; do
20369773 2095 $ln_s "$source_path/$f" $f
165af439
MR
2096 done
2097fi
def4272a 2098
def4272a 2099
d0674868 2100# build pkg-config files
77aee36c 2101# FIXME: libdir and includedir are hardcoded and may differ from the real path.
def4272a 2102
d0674868
DB
2103pkgconfig_generate(){
2104name=$1
2105comment=$2
2106version=$3
2107libs=$4
2108requires=$5
2109include=$6
2110cat <<EOF >$name.pc
2266e085 2111prefix=$PREFIX
a94e666c 2112exec_prefix=\${prefix}
def4272a 2113libdir=\${exec_prefix}/lib
a94e666c 2114includedir=\${prefix}/include
def4272a 2115
d0674868
DB
2116Name: $name
2117Description: $comment
2118Version: $version
2119Requires: $requires
def4272a 2120Conflicts:
d0674868 2121Libs: -L\${libdir} $libs
08c015c0 2122Cflags: -I\${includedir}/$include
def4272a 2123EOF
d0674868 2124}
def4272a 2125
d0674868
DB
2126pkgconfig_generate_uninstalled(){
2127name=$1
9c476fd6 2128shortname=${name#lib}
d0674868
DB
2129comment=$2
2130version=$3
2131libs=$4
2132requires=$5
2133cat <<EOF >$name-uninstalled.pc
def4272a
AJ
2134prefix=
2135exec_prefix=
d0674868
DB
2136libdir=\${pcfiledir}/$name
2137includedir=\${pcfiledir}/$name
def4272a 2138
d0674868
DB
2139Name: $name
2140Description: $comment
2141Version: $version
2142Requires: $requires
def4272a 2143Conflicts:
d0674868 2144Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
def4272a
AJ
2145Cflags: -I\${includedir}
2146EOF
d0674868 2147}
def4272a 2148
9d824ad1 2149pkgconfig_generate libavutil "FFmpeg utility library" "$lavu_version" -lavutil "" ffmpeg
d0674868 2150pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$lavu_version"
def4272a 2151
d0674868
DB
2152pkgconfig_generate libavcodec "FFmpeg codec library" "$lavc_version" "-lavcodec $extralibs" "$pkg_requires libavutil = $lavu_version" ffmpeg
2153pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$lavc_version" "$extralibs" "$pkg_requires libavutil = $lavu_version"
def4272a 2154
d0674868
DB
2155pkgconfig_generate libavformat "FFmpeg container format library" "$lavf_version" "-lavformat $extralibs" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2156pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$lavf_version" "$extralibs" "$pkg_requires libavcodec = $lavc_version"
def4272a 2157
c721d803
LA
2158pkgconfig_generate libavdevice "FFmpeg device handling library" "$lavd_version" "-lavdevice $extralibs" "$pkg_requires libavformat = $lavf_version" ffmpeg
2159pkgconfig_generate_uninstalled libavdevice "FFmpeg device handling library" "$lavd_version" "$extralibs" "$pkg_requires libavformat = $lavf_version"
90be59ef 2160if enabled pp; then
7483e694
DB
2161 pkgconfig_generate libpostproc "FFmpeg post processing library" "$pp_version" -lpostproc "" postproc
2162 pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$pp_version"
2e3bcd38 2163fi
790c9ca7 2164
c839db53 2165if enabled swscaler; then
7483e694
DB
2166 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" -lswscale "libavutil = $lavu_version" ffmpeg
2167 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
6c0d0413 2168else
7483e694
DB
2169 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2170 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
2171 apply libswscale.pc sed s/^Libs:.*$/Libs:/
2172 apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/
6c0d0413 2173fi