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