clean up definition of DECLARE_ALIGNED_8 and STRIDE_ALIGN
[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"
c75560ae 885incdir='$(PREFIX)/include/ffmpeg'
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
facbea95
AJ
952ENCODER_LIST=`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
953DECODER_LIST=`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
954PARSER_LIST=`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
955BSF_LIST=`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' "$source_path/libavcodec/allcodecs.c"`
956MUXER_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
957DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
c4035e5d
LA
958OUTDEV_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavdevice/alldevices.c"`
959INDEV_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavdevice/alldevices.c"`
facbea95 960PROTOCOL_LIST=`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' "$source_path/libavformat/allformats.c"`
c597172e 961
7483e694
DB
962enable $ARCH_EXT_LIST \
963 $DECODER_LIST \
964 $ENCODER_LIST \
965 $PARSER_LIST \
966 $BSF_LIST \
967 $DEMUXER_LIST \
968 $MUXER_LIST \
969 $PROTOCOL_LIST \
970 $INDEV_LIST \
971 $OUTDEV_LIST \
c597172e
MR
972
973die_unknown(){
974 echo "Unknown option \"$1\"."
975 echo "See $0 --help for available options."
976 exit 1
977}
978
794f8e97 979show_list() {
bf0c4afa
RP
980 suffix=_$1
981 shift
982 echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
794f8e97
PI
983 exit 0
984}
985
c597172e 986for opt do
7483e694
DB
987 optval="${opt#*=}"
988 case "$opt" in
989 --log)
990 ;;
991 --log=*) logging="$optval"
992 ;;
993 --prefix=*) PREFIX="$optval"
994 ;;
995 --libdir=*) libdir="$optval"
996 ;;
997 --shlibdir=*) shlibdir="$optval"
998 ;;
999 --incdir=*) incdir="$optval"
1000 ;;
1001 --mandir=*) mandir="$optval"
1002 ;;
1003 --source-path=*) source_path="$optval"
1004 ;;
1005 --cross-prefix=*) cross_prefix="$optval"
1006 ;;
1007 --cross-compile) enable cross_compile
1008 ;;
1009 --target-os=*) targetos="$optval"
1010 ;;
1011 --cc=*) cc="$optval"
1012 ;;
1013 --make=*) make="$optval"
1014 ;;
1015 --extra-cflags=*) add_cflags "$optval"
1016 ;;
1017 --extra-ldflags=*) add_ldflags "$optval"
1018 ;;
1019 --extra-libs=*) add_extralibs "$optval"
1020 ;;
1021 --build-suffix=*) BUILDSUF="$optval"
1022 ;;
1023 --arch=*) arch="$optval"
1024 ;;
1025 --cpu=*) cpu="$optval"
1026 ;;
1027 --enable-sunmlib) enable mlib
1028 ;;
1029 --disable-strip) disable dostrip
1030 ;;
1031 --disable-encoders) disable $ENCODER_LIST
1032 ;;
1033 --disable-decoders) disable $DECODER_LIST
1034 ;;
1035 --disable-muxers) disable $MUXER_LIST
1036 ;;
1037 --disable-demuxers) disable $DEMUXER_LIST
1038 ;;
1039 --disable-parsers) disable $PARSER_LIST
1040 ;;
1041 --disable-bsfs) disable $BSF_LIST
1042 ;;
1043 --disable-protocols) disable $PROTOCOL_LIST
1044 ;;
8fb1cb58 1045 --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
9aa8ed9d 1046 ;;
7483e694
DB
1047 --enable-*=*|--disable-*=*)
1048 eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
1049 case "$thing" in
1050 encoder|decoder|muxer|demuxer|parser|bsf|protocol) $action ${optval}_${thing} ;;
1051 *) die_unknown "$opt" ;;
1052 esac
1053 ;;
1054 --enable-?*|--disable-?*)
1055 eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
1056 echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
1057 $action $option
1058 ;;
1059 --list-*)
1060 NAME="${opt#--list-}"
1061 is_in $NAME $COMPONENT_LIST || die_unknown $opt
1062 NAME=${NAME%s}
1063 eval show_list $NAME \$$(toupper $NAME)_LIST
1064 ;;
1065 --help|-h) show_help
1066 ;;
1067 *)
1068 die_unknown $opt
1069 ;;
1070 esac
c597172e
MR
1071done
1072
270739bb 1073case "$arch" in
7483e694
DB
1074 i386|i486|i586|i686|i86pc|BePC)
1075 arch="x86_32"
1076 enable fast_unaligned
1077 ;;
1078 x86_64|amd64)
1079 arch="x86_32"
1080 enable fast_unaligned
1081 canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
1082 if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
1083 if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
1084 arch="x86_64"
1085 enable fast_64bit
1086 fi
1087 fi
1088 ;;
1089 # armv4l is a subset of armv[567]*l
1090 arm|armv[4567]*l)
1091 arch="armv4l"
1092 ;;
1093 alpha)
1094 arch="alpha"
1095 enable fast_64bit
1096 ;;
1097 "Power Macintosh"|ppc|powerpc)
1098 arch="powerpc"
1099 ;;
1100 ppc64)
1101 arch="powerpc"
c2a29455 1102 enable fast_64bit
d474299a 1103 ;;
7483e694
DB
1104 mips|mipsel|IP*)
1105 arch="mips"
d474299a 1106 ;;
7483e694
DB
1107 sun4u|sparc64)
1108 arch="sparc64"
1109 enable fast_64bit
d474299a 1110 ;;
7483e694
DB
1111 sparc)
1112 arch="sparc"
d474299a 1113 ;;
7483e694
DB
1114 sh4)
1115 arch="sh4"
d474299a 1116 ;;
7483e694
DB
1117 parisc)
1118 arch="parisc"
d474299a 1119 ;;
7483e694
DB
1120 parisc64)
1121 arch="parisc"
1122 enable fast_64bit
d474299a 1123 ;;
7483e694
DB
1124 s390|s390x)
1125 arch="s390"
d474299a 1126 ;;
7483e694
DB
1127 m68k)
1128 arch="m68k"
d474299a 1129 ;;
7483e694
DB
1130 ia64)
1131 arch="ia64"
1132 enable fast_64bit
d474299a 1133 ;;
7483e694
DB
1134 bfin)
1135 arch="bfin"
1136 ;;
1137 *)
1138 arch="unknown"
d474299a 1139 ;;
ef0bc4c9 1140esac
de6d9b64 1141
7483e694
DB
1142enable $arch
1143enabled_any x86_32 x86_64 && enable x86
1144enabled sparc64 && enable sparc
1145
1146# OS specific
1147case $targetos in
1148 beos|haiku|zeta)
1149 PREFIX="$HOME/config"
1150 # helps building libavcodec
1151 add_cflags "-DPIC -fomit-frame-pointer"
1152 # 3 gcc releases known for BeOS, each with ugly bugs
1153 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1154 case "$gcc_version" in
1155 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
1156 disable mmx
1157 ;;
1158 *20010315*) echo "BeBits gcc"
1159 add_cflags "-fno-expensive-optimizations"
1160 ;;
1161 esac
7483e694
DB
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)'
7483e694
DB
1186 SHFLAGS='-shared'
1187 SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF).$(LIBVERSION)'
1188 SLIBNAME_WITH_VERSION='$(SLIBNAME)'
1189 SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
1190 oss_demuxer_extralibs="-lossaudio"
1191 oss_muxer_extralibs="-lossaudio"
1192 ;;
1193 freebsd)
1194 disable need_memalign
1195 ;;
1196 bsd/os)
1197 osextralibs="-lpoll -lgnugetopt"
1198 strip="strip -d"
1199 ;;
1200 darwin)
1201 disable need_memalign
1202 SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(SPPVERSION),-compatibility_version,$(SPPVERSION) -Wl,-read_only_relocs,suppress'
1203 VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$@'
1204 strip="strip -x"
1205 FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
1206 SLIBSUF=".dylib"
1207 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
1208 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
1209 FFSERVERLDFLAGS=-Wl,-bind_at_load
1210 ;;
1211 mingw32*)
1212 targetos=mingw32
1213 shlibdir="$bindir"
1214 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1215 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1216 if enabled swscaler; then
1217 VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1218 VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1219 fi
1220 disable ffserver
1221 SLIBPREF=""
1222 SLIBSUF=".dll"
1223 EXESUF=".exe"
1224 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1225 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1226 SLIB_EXTRA_CMD='-lib /machine:i386 /def:$(@:$(SLIBSUF)=.def)'
1227 SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
1228 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
1229 SHFLAGS='-shared -Wl,--output-def,$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
1230 ;;
1231 cygwin*)
1232 targetos=cygwin
1233 shlibdir="$bindir"
1234 VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1235 VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1236 if enabled swscaler; then
1237 VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1238 VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1239 fi
1240 EXESUF=".exe"
1241 SLIBPREF="cyg"
1242 SLIBSUF=".dll"
1243 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1244 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1245 SHFLAGS='-shared -Wl,--enable-auto-image-base'
1246 ;;
4f365f37
MK
1247 *-dos|freedos|opendos)
1248 enable memalign_hack
1249 disable ffplay ffserver vhook
1250 disable $INDEV_LIST $OUTDEV_LIST
1251 network_extralibs="-lsocket"
1252 EXESUF=".exe"
1253 ;;
7483e694
DB
1254 linux)
1255 LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
1256 enable dv1394
1257 ;;
1258 irix*)
1259 targetos=irix
1260 ranlib="echo ignoring ranlib"
1261 ;;
d22e8442
DY
1262 os/2*)
1263 ar="emxomfar -p256"
1264 ranlib="echo ignoring ranlib"
1265 strip="lxlite"
1266 ln_s="cp -f"
1267 add_cflags "-Zomf"
1268 EXESUF=".exe"
1269 FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
1270 SHFLAGS='$(NAME).def -Zdll -Zomf'
1271 FFSERVERLDFLAGS=""
1272 LIBSUF="_s.lib"
1273 SLIBPREF=""
1274 SLIBSUF=".dll"
1275 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1276 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
1277 SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(NAME).def; \
1278 echo PROTMODE >> $(NAME).def; \
1279 echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(NAME).def; \
1280 echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(NAME).def; \
1281 echo EXPORTS >> $(NAME).def; \
1282 emxexp -o $(OBJS) >> $(NAME).def'
1283 SLIB_EXTRA_CMD='emximp -o $(LIBPREF)$(NAME)_dll.a $(NAME).def; \
1284 emximp -o $(LIBPREF)$(NAME)_dll.lib $(NAME).def;'
1285 SLIB_INSTALL_EXTRA_CMD='install -m 644 $(LIBPREF)$(NAME)_dll.a $(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
1286 SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
1287 vhook="no"
1288 ;;
1289
7483e694
DB
1290 *)
1291 targetos="${targetos}-UNKNOWN"
1292 ;;
1293esac
1294
c597172e 1295add_extralibs $osextralibs
de6d9b64 1296
e3c00e34 1297if ! disabled logging ; then
90be59ef 1298 enabled logging || logfile="$logging"
57bd82d4
MR
1299 echo "# $0 $@" >$logfile
1300 set >>$logfile
2ba042a7
MR
1301else
1302 logfile=/dev/null
57bd82d4 1303fi
e89b8b0a 1304
28d8e661
DB
1305# Combine FFLDFLAGS and the LDFLAGS environment variable.
1306LDFLAGS="$FFLDFLAGS $LDFLAGS"
e89b8b0a 1307
497237c7 1308test -n "$cross_prefix" && enable cross_compile
1ea46bed
MR
1309cc="${cross_prefix}${cc}"
1310ar="${cross_prefix}${ar}"
1311ranlib="${cross_prefix}${ranlib}"
1312strip="${cross_prefix}${strip}"
1313
320d060a 1314# we need to build at least one lib type
93b3c083 1315if ! enabled_any static shared; then
320d060a
DB
1316 cat <<EOF
1317At least one library type must be built.
1318Specify --enable-static to build the static libraries or --enable-shared to
1319build the shared libraries as well. To only build the shared libraries specify
1320--disable-static in addition to --enable-shared.
1321EOF
1322 exit 1;
1323fi
1324
abc4e572 1325disabled static && LIBNAME=""
2a320695 1326
a2234ceb
RP
1327if enabled_any libfaad libfaadbin ; then
1328 if check_header faad.h; then
1329 check_cc << EOF
1330#include <faad.h>
1331#ifndef FAAD2_VERSION
1332ok faad1
1333#endif
db817cf3 1334int main(void) { return 0; }
a2234ceb
RP
1335EOF
1336 test $? = 0 && enable libfaad2
1337 else
ff3dac65 1338 die "FAAD test failed."
a2234ceb
RP
1339 fi
1340fi
1341
1342
93b3c083 1343if ! enabled gpl; then
54118497
RP
1344 die_gpl_disabled(){
1345 name=$1
1346 shift
1347 enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
1348 }
1349 die_gpl_disabled "The Postprocessing code" pp
7bc5f2a8 1350 die_gpl_disabled "liba52" liba52
1cc60c47
DB
1351 die_gpl_disabled "libx264" libx264
1352 die_gpl_disabled "libxvidcore" libxvid
54118497
RP
1353 die_gpl_disabled "FAAD2" libfaad2
1354 die_gpl_disabled "The X11 grabber" x11grab
1355 die_gpl_disabled "The software scaler" swscaler
ebb810d9 1356fi
b2e3c528 1357
3fe142e2
DB
1358if ! enabled nonfree && enabled_any libamr_nb libamr_wb; then
1359 die "libamr is nonfree and --enable-nonfree is not specified."
1360fi
1361
9eeed841 1362check_deps $ARCH_EXT_LIST
0f3cb305 1363
5d323602
MR
1364test -z "$need_memalign" && need_memalign="$mmx"
1365
cf9d24ad 1366#Darwin CC versions
ced75d92 1367if test $targetos = darwin; then
b2924696 1368 if test -n "`$cc -v 2>&1 | grep xlc`"; then
30a3e5d4 1369 add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
cf9d24ad 1370 else
26c1b3be
DB
1371 add_cflags "-no-cpp-precomp -pipe"
1372 check_cflags "-force_cpusubtype_ALL"
1373 check_cflags "-Wno-sign-compare"
7799eeec 1374 disabled shared && add_cflags -mdynamic-no-pic
cf9d24ad 1375 fi
2a1a6b64
MN
1376fi
1377
8400d6b8 1378disabled optimizations || add_cflags -fomit-frame-pointer
cf9d24ad 1379
a4adb608 1380# Add processor-specific flags
38d0a8aa 1381if test $cpu != "generic"; then
bc8ec47b
MR
1382 warn_altivec(){
1383 $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
1658bc4f 1384 }
38d0a8aa 1385 case $cpu in
bb270c08 1386 601|ppc601|PowerPC601)
1c5d830c 1387 add_cflags "-mcpu=601"
bc8ec47b 1388 warn_altivec enabled PPC601
bb270c08
DB
1389 ;;
1390 603*|ppc603*|PowerPC603*)
1c5d830c 1391 add_cflags "-mcpu=603"
bc8ec47b 1392 warn_altivec enabled PPC603
bb270c08
DB
1393 ;;
1394 604*|ppc604*|PowerPC604*)
1c5d830c 1395 add_cflags "-mcpu=604"
bc8ec47b 1396 warn_altivec enabled PPC604
bb270c08
DB
1397 ;;
1398 G3|g3|75*|ppc75*|PowerPC75*)
1c5d830c 1399 add_cflags "-mcpu=750 -mpowerpc-gfxopt"
bc8ec47b 1400 warn_altivec enabled PPC75x
bb270c08
DB
1401 ;;
1402 G4|g4|745*|ppc745*|PowerPC745*)
1c5d830c 1403 add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
bc8ec47b 1404 warn_altivec disabled PPC745x
bb270c08
DB
1405 ;;
1406 74*|ppc74*|PowerPC74*)
1c5d830c 1407 add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
bc8ec47b 1408 warn_altivec disabled PPC74xx
bb270c08
DB
1409 ;;
1410 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1c5d830c 1411 add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
bc8ec47b 1412 warn_altivec disabled PPC970
9cafbd6c 1413 enable ppc64
bb270c08 1414 ;;
e07e357d
LB
1415 Cell|CELL|cell)
1416 add_cflags "-mcpu=cell"
1417 warn_altivec disabled Cell
9cafbd6c 1418 enable ppc64
e07e357d 1419 ;;
e7768fc5
GP
1420 # targets that do NOT support conditional mov (cmov)
1421 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
38d0a8aa 1422 add_cflags "-march=$cpu"
497237c7 1423 disable cmov
e7768fc5
GP
1424 ;;
1425 # targets that do support conditional mov (cmov)
416519dd 1426 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
e7768fc5 1427 add_cflags "-march=$cpu"
497237c7
RP
1428 enable cmov
1429 enable fast_cmov
94e4c3a3
GP
1430 ;;
1431 # targets that do support conditional mov but on which it's slow
800a5a19 1432 pentium4|pentium4m|prescott|nocona)
94e4c3a3 1433 add_cflags "-march=$cpu"
497237c7
RP
1434 enable cmov
1435 disable fast_cmov
bb270c08 1436 ;;
d7b34d08 1437 sparc64)
1c5d830c 1438 add_cflags "-mcpu=v9"
d7b34d08 1439 ;;
6b19786b
MR
1440 arm*)
1441 add_cflags "-mcpu=$cpu"
1442 ;;
bb270c08 1443 *)
7483e694 1444 echo "WARNING: Unknown CPU \"$cpu\", ignored."
bb270c08 1445 ;;
a4adb608
MN
1446 esac
1447fi
1448
412c1562
MR
1449gnu_make(){
1450 $1 --version 2>&1 | grep -q GNU
1451}
1452
1453if ! gnu_make $make; then
1454 gnu_make gmake && make=gmake || die "GNU make not found."
1455fi
1456
be0d52ab
MR
1457# make sure we can execute files in $TMPDIR
1458cat >$TMPE 2>>$logfile <<EOF
1459#! /bin/sh
1460EOF
1461chmod +x $TMPE >>$logfile 2>&1
1462if ! $TMPE >>$logfile 2>&1; then
1463 cat <<EOF
1464Unable to create and execute files in $TMPDIR1. Set the TMPDIR environment
68300911
DB
1465variable to another directory and make sure that $TMPDIR1 is not mounted
1466noexec.
be0d52ab
MR
1467EOF
1468 die "Sanity test failed."
1469fi
0244f743 1470rm $TMPE
be0d52ab 1471
1a268acc
MR
1472# compiler sanity check
1473check_exec <<EOF
e5af4a11 1474int main(void){
1a268acc
MR
1475 return 0;
1476}
1477EOF
1478if test "$?" != 0; then
1479 echo "$cc is unable to create an executable file."
93b3c083 1480 if test -z "$cross_prefix" && ! enabled cross_compile ; then
1a268acc 1481 echo "If $cc is a cross-compiler, use the --cross-compile option."
c7ae6345 1482 echo "Only do this if you know what cross compiling means."
1a268acc
MR
1483 fi
1484 die "C compiler test failed."
1485fi
1486
9eeed841 1487if enabled x86; then
44965991
PI
1488 # check whether EBP is available on x86
1489 # As 'i' is stored on the stack, this program will crash
1490 # if the base pointer is used to access it because the
1491 # base pointer is cleared in the inline assembly code.
7dfef245 1492 check_exec_crash <<EOF && enable ebp_available
44965991
PI
1493 volatile int i=0;
1494 asm volatile (
1495 "xorl %%ebp, %%ebp"
1496 ::: "%ebp");
1497 return i;
44965991
PI
1498EOF
1499
1500 # check wether EBX is available on x86
940f335a 1501 check_asm ebx_available '"":::"%ebx"'
8e380710
LM
1502
1503 # check whether binutils is new enough to compile SSSE3
940f335a 1504 enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
44965991
PI
1505fi
1506
87ea51e0
LB
1507# check for assembler specific support
1508
cc6a90dd 1509if test $arch = "powerpc"; then
497237c7 1510check_cc <<EOF && enable dcbzl
87ea51e0
LB
1511int main(void) {
1512 register long zero = 0;
1513 char data[1024];
1514 asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1515return 0;
1516}
1517EOF
1518fi
1519
57bd82d4
MR
1520# check for SIMD availability
1521
115329f1 1522# AltiVec flags: The FSF version of GCC differs from the Apple version
9eeed841 1523if enabled altivec; then
3ae3b721
RP
1524 test -n "`$cc -v 2>&1 | grep version | grep Apple`" &&
1525 add_cflags "-faltivec" ||
0182fee8 1526 add_cflags "-maltivec -mabi=altivec"
b6e52719 1527
0182fee8 1528 check_header altivec.h
a9a07762 1529
0182fee8 1530 # check if our compiler supports Motorola AltiVec C API
3ae3b721
RP
1531 enabled altivec_h &&
1532 inc_altivec_h="#include <altivec.h>" ||
f25fc9b1 1533 inc_altivec_h=
497237c7 1534 check_cc <<EOF || disable altivec
dcd479c0 1535$inc_altivec_h
a9a07762
MN
1536int main(void) {
1537 vector signed int v1, v2, v3;
1538 v1 = vec_add(v2,v3);
1539 return 0;
1540}
1541EOF
1542fi
ab6c65f6 1543
940f335a
MR
1544enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
1545enabled armv6 && check_asm armv6 '"sadd16 r0, r0, r0"'
1546enabled iwmmxt && check_asm iwmmxt '"wunpckelub wr6, wr4"'
1547enabled mmi && check_asm mmi '"lq $2, 0($2)"'
1548enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc
bd9d34a0 1549
8b03def6
DB
1550enabled vis && add_cflags "-mcpu=ultrasparc -mtune=ultrasparc"
1551
57bd82d4
MR
1552# ---
1553# big/little-endian test
9eebe687
MR
1554check_cc <<EOF || die "endian test failed"
1555unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
a3999908 1556EOF
e89d9fd8 1557grep -q BIGE $TMPO && enable bigendian
487a54d7 1558
a3999908 1559# ---
3d204385
NK
1560# check availability of some header files
1561
a98bb16d
RP
1562if check_func dlopen; then
1563 ldl=
1564elif check_func dlopen -ldl; then
1565 ldl=-ldl
8bf5d58f
MN
1566fi
1567
7483e694
DB
1568check_func fork
1569check_func gethrtime
1570check_func getrusage
094c09bb 1571check_func inet_aton $network_extralibs
7483e694
DB
1572check_func memalign
1573check_func mkstemp
a98bb16d 1574check_func2 windows.h GetProcessTimes
6ffa87d3 1575
a98bb16d 1576check_header byteswap.h
e16e49ac 1577check_header conio.h
a98bb16d
RP
1578check_header dlfcn.h
1579check_header malloc.h
1580check_header termios.h
1581
1582if ! enabled_any memalign memalign_hack && enabled need_memalign ; then
1583 die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1584fi
e16e49ac 1585
497237c7 1586enabled zlib && check_lib zlib.h zlibVersion -lz || disable zlib
57bd82d4 1587
b0c858d8
FR
1588# ffserver uses poll(),
1589# if it's not found we can emulate it using select().
1590if enabled ffserver; then
f8cda19e 1591 check_header poll.h
81644c2e 1592 check_header sys/select.h
b0c858d8
FR
1593fi
1594
57bd82d4
MR
1595# check for some common methods of building with pthread support
1596# do this before the optional library checks as some of them require pthreads
1597if enabled pthreads; then
9e7fd101
MR
1598 if check_func pthread_create; then
1599 :
1600 elif check_func pthread_create -pthread; then
1601 add_cflags -pthread
afc9aee2 1602 add_extralibs -pthread
9e7fd101
MR
1603 elif check_func pthread_create -pthreads; then
1604 add_cflags -pthreads
afc9aee2 1605 add_extralibs -pthreads
9e7fd101
MR
1606 elif ! check_lib pthread.h pthread_create -lpthread; then
1607 die "ERROR: can't find pthreads library"
1608 fi
57bd82d4
MR
1609fi
1610
8eee7025 1611for thread in $THREADS_LIST; do
e5f94c2b 1612 if enabled $thread; then
3ae3b721
RP
1613 test -n "$thread_type" &&
1614 die "ERROR: Only one thread type must be selected." ||
e5f94c2b 1615 thread_type="$thread"
e5f94c2b
RP
1616 fi
1617done
1618
fdf88598
MR
1619check_lib math.h sin -lm
1620
a33cab3a
MK
1621# test for C99 functions in math.h
1622for func in llrint lrint lrintf round roundf; do
1623 check_exec <<EOF && enable $func || disable $func
f32adb22
MR
1624#define _ISOC9X_SOURCE 1
1625#include <math.h>
a33cab3a 1626int main(void) { return ($func(3.999f) > 0)?0:1; }
f32adb22 1627EOF
a33cab3a 1628done
f32adb22 1629
57bd82d4 1630# these are off by default, so fail if requested and not available
79fda097 1631enabled avisynth && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
7483e694
DB
1632enabled liba52 && require liba52 a52dec/a52.h a52_init -la52
1633enabled libamr_nb && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
1634enabled libamr_wb && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
79fda097
DB
1635enabled libfaac && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
1636enabled libfaad && require2 libfaad faad.h faacDecOpen -lfaad
7483e694
DB
1637enabled libgsm && require libgsm gsm.h gsm_create -lgsm
1638enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
1639enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
1640enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
1641enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
1642enabled libx264 && require x264 x264.h x264_encoder_open -lx264
1643enabled libxvid && require Xvid xvid.h xvid_global -lxvidcore
1644enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
8ac17293 1645
6ea67bbb
JR
1646# disable the native AC-3 decoder if liba52 is enabled
1647enabled liba52 && disable ac3_decoder
1648
0b4a1821
AS
1649# libdc1394 check
1650if enabled libdc1394; then
1651 { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
1652 enable libdc1394_2; } ||
1653 { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
1654 enable libdc1394_1; } ||
1655 die "ERROR: No version of libdc1394 found "
1656fi
1657
1658
c13e1abd
FH
1659_restrict=
1660for restrict_keyword in restrict __restrict__ __restrict; do
57bd82d4 1661 check_cc <<EOF && _restrict=$restrict_keyword && break
dcd479c0
MR
1662void foo(char * $restrict_keyword p);
1663EOF
c13e1abd
FH
1664done
1665
703afd07 1666test "$vhook" = "default" && vhook="$dlopen"
a8721c09 1667
b0268cc0 1668if test "$targetos" = cygwin -o "$targetos" = mingw32 && enabled_all static vhook ; then
497237c7 1669 disable vhook
fbb9d104 1670 echo
b0268cc0 1671 echo "At the moment vhooks don't work on Cygwin or MinGW static builds."
fbb9d104
VP
1672 echo "Patches welcome."
1673 echo
1674fi
1675
8d923001
MR
1676if enabled vhook; then
1677 check_ldflags -rdynamic
1678 check_ldflags -export-dynamic
1679fi
bfd2edeb 1680
eea50282
MR
1681check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
1682check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType
04511d53 1683
a86b921c 1684##########################################
29799f8b 1685# SDL check
a86b921c 1686
497237c7
RP
1687disable sdl_too_old
1688disable sdl
6a1a892f 1689SDL_CONFIG="${cross_prefix}sdl-config"
225e21ef
MR
1690if "${SDL_CONFIG}" --version >/dev/null 2>&1; then
1691 sdl_cflags=`"${SDL_CONFIG}" --cflags`
1692 temp_cflags $sdl_cflags
dcd479c0 1693 temp_extralibs `"${SDL_CONFIG}" --libs`
1ca5d97f 1694 if check_lib2 SDL.h SDL_Init; then
dcd479c0 1695 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
29f3b38a 1696 if test "$_sdlversion" -lt 121 ; then
497237c7 1697 enable sdl_too_old
dcd479c0 1698 else
497237c7 1699 enable sdl
225e21ef 1700 check_cc $sdl_cflags <<EOF && enable sdl_video_size
29f3b38a 1701#include <SDL.h>
d6773f56 1702int main(int argc, char **argv){
29f3b38a
MR
1703 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1704 int w = vi->current_w;
1705 return 0;
1706}
1707EOF
dcd479c0
MR
1708 fi
1709 fi
29f3b38a 1710 restore_flags
c3f6b472 1711fi
57bd82d4 1712
d5697779 1713texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html
146ea952 1714
72be9e73
DY
1715check_type sys/socket.h socklen_t
1716
7a91333f 1717##########################################
73b46a95
RP
1718# Network check
1719
1720if enabled network; then
1721 # Prefer arpa/inet.h over winsock2
1722 if check_header arpa/inet.h ; then
1723 check_func closesocket
1724 elif check_header winsock2.h ; then
ea10ddde 1725 network_extralibs="-lws2_32"
72be9e73 1726 check_type ws2tcpip.h socklen_t
73b46a95
RP
1727 check_func2 winsock2.h closesocket
1728 fi
1729fi
1730
1731##########################################
29799f8b 1732# IPv6 check
7a91333f 1733
497237c7 1734enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
7a91333f
HZ
1735#include <sys/types.h>
1736#include <sys/socket.h>
1737#include <netinet/in.h>
1738#include <netdb.h>
db817cf3 1739int main(void) {
7483e694
DB
1740 struct sockaddr_storage saddr;
1741 struct ipv6_mreq mreq6;
1742 getaddrinfo(0,0,0,0);
1743 getnameinfo(0,0,0,0,0,0,0);
1744 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
7a91333f
HZ
1745}
1746EOF
1747
06e31011
RP
1748check_header linux/videodev.h
1749check_header linux/videodev2.h
47f38850 1750
f8aa696f 1751# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1c915f83
RP
1752{ check_header dev/bktr/ioctl_meteor.h &&
1753 check_header dev/bktr/ioctl_bt848.h; } ||
1754{ check_header machine/ioctl_meteor.h &&
1755 check_header machine/ioctl_bt848.h; } ||
1756{ check_header dev/video/meteor/ioctl_meteor.h &&
1757 check_header dev/video/bktr/ioctl_bt848.h; } ||
1758check_header dev/ic/bt8xx.h
f8aa696f 1759
c7682de0
RP
1760check_header sys/soundcard.h
1761check_header soundcard.h
deb29777 1762
7483e694 1763# deal with the X11 frame grabber
56a059ac 1764enabled x11grab &&
f58f4ce1
GP
1765check_header X11/Xlib.h &&
1766check_header X11/extensions/XShm.h &&
1767check_func XOpenDisplay -lX11 &&
06eab4ba 1768check_func XShmCreateImage -lX11 -lXext
f58f4ce1 1769
57bd82d4
MR
1770enabled debug && add_cflags -g
1771
1772# add some useful compiler flags if supported
1773check_cflags -Wdeclaration-after-statement
dcd479c0
MR
1774check_cflags -Wall
1775check_cflags -Wno-switch
c07bd6a9
MN
1776check_cflags -Wdisabled-optimization
1777check_cflags -Wpointer-arith
1778check_cflags -Wredundant-decls
cc1fb623 1779check_cflags -Wno-pointer-sign
f4929996 1780check_cflags -Wcast-qual
9aceb3cf 1781check_cflags -Wwrite-strings
652a5bf6 1782check_cflags -Wtype-limits
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
3fe142e2
DB
1934enabled nonfree &&
1935 echo "License: unredistributable" ||
1936 (enabled gpl &&
1937 echo "License: GPL" ||
1938 echo "License: LGPL")
ca5323af 1939
cf1392e9
DB
1940echo "Creating config.mak and config.h..."
1941
29799f8b
DB
1942echo "# Automatically generated by configure - do not modify!" > config.mak
1943echo "/* Automatically generated by configure - do not modify! */" > $TMPH
9c05103f
DB
1944echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
1945echo "#define FFMPEG_CONFIG_H" >> $TMPH
0fd12426 1946echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
de6d9b64 1947
2266e085 1948echo "PREFIX=$PREFIX" >> config.mak
c75560ae 1949echo "prefix=\$(DESTDIR)\$(PREFIX)" >> config.mak
22a324da
DB
1950echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
1951echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
1952echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
1953echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
1954echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
4a908fbc 1955echo "MAKE=$make" >> config.mak
980fc7b8
FB
1956echo "CC=$cc" >> config.mak
1957echo "AR=$ar" >> config.mak
be7109c1 1958echo "RANLIB=$ranlib" >> config.mak
20369773 1959echo "LN_S=$ln_s" >> config.mak
3ae3b721
RP
1960enabled dostrip &&
1961 echo "STRIP=$strip" >> config.mak ||
f25fc9b1 1962 echo "STRIP=echo ignoring strip" >> config.mak
75388c74 1963
a9b3f630 1964echo "OPTFLAGS=$CFLAGS" >> config.mak
408382a4 1965echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
0f3cb305 1966echo "LDFLAGS=$LDFLAGS" >> config.mak
c536cb09 1967echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
e1707f52 1968echo "SHFLAGS=$SHFLAGS" >> config.mak
408382a4 1969echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
fbb9d104 1970echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
80581e98 1971echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
5af4e0cc 1972echo "BUILD_STATIC=$static" >> config.mak
eb94aca9 1973echo "BUILDSUF=$BUILDSUF" >> config.mak
c5f14466 1974echo "FULLNAME=$FULLNAME" >> config.mak
f3ec2d46 1975echo "LIBPREF=$LIBPREF" >> config.mak
c5f14466 1976echo "LIBSUF=$LIBSUF" >> config.mak
24743a76 1977echo "LIBNAME=$LIBNAME" >> config.mak
f3ec2d46 1978echo "SLIBPREF=$SLIBPREF" >> config.mak
c5f14466
RP
1979echo "SLIBSUF=$SLIBSUF" >> config.mak
1980echo "EXESUF=$EXESUF" >> config.mak
4dc62701 1981
90be59ef 1982if enabled bigendian; then
7483e694
DB
1983 echo "WORDS_BIGENDIAN=yes" >> config.mak
1984 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
91d1f1a4 1985fi
90be59ef 1986if enabled mmx; then
7483e694 1987 echo "#define __CPU__ 586" >> $TMPH
de6d9b64 1988fi
44161118 1989
90be59ef 1990if enabled sdl; then
7483e694
DB
1991 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
1992 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
a86b921c 1993fi
90be59ef 1994if enabled texi2html; then
7483e694 1995 echo "BUILD_DOC=yes" >> config.mak
146ea952 1996fi
5a872801 1997
790c9ca7 1998sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
6d9a2421 1999pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
5a872801 2000lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
c721d803 2001lavd_version=`grep '#define LIBAVDEVICE_VERSION ' "$source_path/libavdevice/avdevice.h" | sed 's/[^0-9\.]//g'`
5a872801
LB
2002lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
2003lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
2004
2005
2006
5af4e0cc 2007if enabled shared; then
7483e694
DB
2008 echo "BUILD_SHARED=yes" >> config.mak
2009 echo "PIC=-fPIC -DPIC" >> config.mak
2010 echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
2011 echo "SPPVERSION=$pp_version" >> config.mak
2012 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
2013 echo "LAVCVERSION=$lavc_version" >> config.mak
2014 echo "LAVDMAJOR=${lavd_version%%.*}" >> config.mak
2015 echo "LAVDVERSION=$lavd_version" >> config.mak
2016 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
2017 echo "LAVFVERSION=$lavf_version" >> config.mak
2018 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
2019 echo "LAVUVERSION=$lavu_version" >> config.mak
2020 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
2021 echo "SWSVERSION=$sws_version" >> config.mak
2022 echo "SLIBNAME=${SLIBNAME}" >> config.mak
2023 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2024 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
d22e8442 2025 echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
7483e694
DB
2026 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
2027 echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
2028 echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
0319c531 2029fi
d7e27559 2030echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
ef0bc4c9 2031echo "EXTRALIBS=$extralibs" >> config.mak
d2845d68 2032
3d907e22
MR
2033print_config ARCH_ $TMPH config.mak $ARCH_LIST
2034print_config HAVE_ $TMPH config.mak $HAVE_LIST
7483e694
DB
2035print_config CONFIG_ $TMPH config.mak $CONFIG_LIST \
2036 $DECODER_LIST \
2037 $ENCODER_LIST \
2038 $PARSER_LIST \
2039 $BSF_LIST \
2040 $DEMUXER_LIST \
2041 $MUXER_LIST \
2042 $PROTOCOL_LIST \
2043 $INDEV_LIST \
2044 $OUTDEV_LIST \
8ac17293 2045
c13e1abd
FH
2046echo "#define restrict $_restrict" >> $TMPH
2047
bd2216e4 2048if enabled small; then
7483e694 2049 echo "#define av_always_inline" >> $TMPH
bb801c97
MN
2050fi
2051
997baf01
MR
2052echo "SRC_PATH=\"$source_path\"" >> config.mak
2053echo "SRC_PATH_BARE=$source_path" >> config.mak
2054echo "BUILD_ROOT=\"$PWD\"" >> config.mak
0f3cb305 2055
8156056e 2056# Apparently it's not possible to portably echo a backslash.
3ae3b721 2057enabled asmalign_pot &&
7483e694
DB
2058 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
2059 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
4454dc1b 2060
bc634f6f 2061
9c05103f
DB
2062echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
2063
9cb2cf10 2064# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
3ae3b721
RP
2065cmp -s $TMPH config.h &&
2066 echo "config.h is unchanged" ||
2067 mv -f $TMPH config.h
3d204385 2068
f3ec2d46 2069rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
def4272a 2070
165af439 2071# build tree in object directory if source path is different from current one
90be59ef 2072if enabled source_path_used; then
165af439 2073 DIRS="\
7483e694
DB
2074 doc \
2075 libavcodec \
2076 libavcodec/alpha \
2077 libavcodec/armv4l \
2078 libavcodec/bfin \
2079 libavcodec/i386 \
2080 libavcodec/mlib \
2081 libavcodec/ppc \
2082 libavcodec/sh4 \
2083 libavcodec/sparc \
52a9cf34 2084 libavdevice \
7483e694
DB
2085 libavformat \
2086 libavutil \
2087 libpostproc \
2088 libswscale \
2089 tests \
2090 tools \
2091 vhook \
2092 "
165af439 2093 FILES="\
7483e694
DB
2094 Makefile \
2095 common.mak \
2096 doc/texi2pod.pl \
2097 libavcodec/Makefile \
52a9cf34 2098 libavdevice/Makefile \
7483e694
DB
2099 libavformat/Makefile \
2100 libavutil/Makefile \
2101 libpostproc/Makefile \
2102 libswscale/Makefile \
2103 "
165af439 2104 for dir in $DIRS ; do
7483e694 2105 mkdir -p $dir
165af439
MR
2106 done
2107 for f in $FILES ; do
20369773 2108 $ln_s "$source_path/$f" $f
165af439
MR
2109 done
2110fi
def4272a 2111
def4272a 2112
d0674868 2113# build pkg-config files
77aee36c 2114# FIXME: libdir and includedir are hardcoded and may differ from the real path.
def4272a 2115
d0674868
DB
2116pkgconfig_generate(){
2117name=$1
2118comment=$2
2119version=$3
2120libs=$4
2121requires=$5
2122include=$6
2123cat <<EOF >$name.pc
2266e085 2124prefix=$PREFIX
a94e666c 2125exec_prefix=\${prefix}
def4272a 2126libdir=\${exec_prefix}/lib
a94e666c 2127includedir=\${prefix}/include
def4272a 2128
d0674868
DB
2129Name: $name
2130Description: $comment
2131Version: $version
2132Requires: $requires
def4272a 2133Conflicts:
d0674868 2134Libs: -L\${libdir} $libs
08c015c0 2135Cflags: -I\${includedir}/$include
def4272a 2136EOF
d0674868 2137}
def4272a 2138
d0674868
DB
2139pkgconfig_generate_uninstalled(){
2140name=$1
9c476fd6 2141shortname=${name#lib}
d0674868
DB
2142comment=$2
2143version=$3
2144libs=$4
2145requires=$5
2146cat <<EOF >$name-uninstalled.pc
def4272a
AJ
2147prefix=
2148exec_prefix=
d0674868
DB
2149libdir=\${pcfiledir}/$name
2150includedir=\${pcfiledir}/$name
def4272a 2151
d0674868
DB
2152Name: $name
2153Description: $comment
2154Version: $version
2155Requires: $requires
def4272a 2156Conflicts:
d0674868 2157Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
def4272a
AJ
2158Cflags: -I\${includedir}
2159EOF
d0674868 2160}
def4272a 2161
9d824ad1 2162pkgconfig_generate libavutil "FFmpeg utility library" "$lavu_version" -lavutil "" ffmpeg
d0674868 2163pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$lavu_version"
def4272a 2164
d0674868
DB
2165pkgconfig_generate libavcodec "FFmpeg codec library" "$lavc_version" "-lavcodec $extralibs" "$pkg_requires libavutil = $lavu_version" ffmpeg
2166pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$lavc_version" "$extralibs" "$pkg_requires libavutil = $lavu_version"
def4272a 2167
d0674868
DB
2168pkgconfig_generate libavformat "FFmpeg container format library" "$lavf_version" "-lavformat $extralibs" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2169pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$lavf_version" "$extralibs" "$pkg_requires libavcodec = $lavc_version"
def4272a 2170
c721d803
LA
2171pkgconfig_generate libavdevice "FFmpeg device handling library" "$lavd_version" "-lavdevice $extralibs" "$pkg_requires libavformat = $lavf_version" ffmpeg
2172pkgconfig_generate_uninstalled libavdevice "FFmpeg device handling library" "$lavd_version" "$extralibs" "$pkg_requires libavformat = $lavf_version"
90be59ef 2173if enabled pp; then
7483e694
DB
2174 pkgconfig_generate libpostproc "FFmpeg post processing library" "$pp_version" -lpostproc "" postproc
2175 pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$pp_version"
2e3bcd38 2176fi
790c9ca7 2177
c839db53 2178if enabled swscaler; then
7483e694
DB
2179 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" -lswscale "libavutil = $lavu_version" ffmpeg
2180 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
6c0d0413 2181else
7483e694
DB
2182 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2183 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
2184 apply libswscale.pc sed s/^Libs:.*$/Libs:/
2185 apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/
6c0d0413 2186fi