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