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