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