Sort out the diffrent cook versions.
[libav.git] / configure
CommitLineData
de6d9b64 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
MR
63 echo " --incdir=DIR install includes in DIR [PREFIX/include/ffmpeg]"
64 echo " --mandir=DIR install man page in DIR [PREFIX/man]"
74c53c2d
MR
65 echo " --enable-mingw32 enable MinGW native/cross Windows compile"
66 echo " --enable-mingwce enable MinGW native/cross WinCE compile"
74c53c2d
MR
67 echo " --enable-static build static libraries [default=yes]"
68 echo " --disable-static do not build static libraries [default=no]"
69 echo " --enable-shared build shared libraries [default=no]"
70 echo " --disable-shared do not build shared libraries [default=yes]"
dc922953
DB
71 echo " --enable-pp enable GPLed postprocessing support [default=no]"
72 echo " --enable-swscaler software scaler support [default=no]"
74c53c2d 73 echo " --enable-sunmlib use Sun medialib [default=no]"
e5f94c2b
RP
74 echo " --enable-beosthreads use BeOS threads [default=no]"
75 echo " --enable-os2threads use OS/2 threads [default=no]"
74c53c2d 76 echo " --enable-pthreads use pthreads [default=no]"
eb113804 77 echo " --enable-w32threads use Win32 threads [default=no]"
56a059ac 78 echo " --enable-x11grab enable X11 grabbing [default=no]"
74c53c2d
MR
79 echo " --enable-dc1394 enable IIDC-1394 grabbing using libdc1394"
80 echo " and libraw1394 [default=no]"
dc922953
DB
81 echo " --enable-a52 enable GPLed liba52 support [default=no]"
82 echo " --enable-a52bin open liba52.so.0 at runtime [default=no]"
8ac17293 83 echo " --enable-avisynth allow reading AVISynth script files [default=no]"
dc922953
DB
84 echo " --enable-dts enable GPLed libdts support [default=no]"
85 echo " --enable-faac enable FAAC support via libfaac [default=no]"
86 echo " --enable-faad enable FAAD support via libfaad [default=no]"
87 echo " --enable-faadbin build FAAD support with runtime linking [default=no]"
88 echo " --enable-libgsm enable GSM support via libgsm [default=no]"
89 echo " --enable-mp3lame enable MP3 encoding via libmp3lame [default=no]"
90 echo " --enable-libnut enable NUT support via libnut [default=no]"
91 echo " --enable-libogg enable Ogg support via libogg [default=no]"
150d2772 92 echo " --enable-libtheora enable Theora support via libtheora [default=no]"
dc922953
DB
93 echo " --enable-vorbis enable Vorbis support via libvorbis [default=no]"
94 echo " --enable-x264 enable H.264 encoding via x264 [default=no]"
5577eafa 95 echo " --enable-xvid enable Xvid encoding via xvidcore [default=no]"
dc922953
DB
96 echo " --enable-amr_nb enable amr_nb float audio codec"
97 echo " --enable-amr_nb-fixed use fixed point for amr-nb codec"
98 echo " --enable-amr_wb enable amr_wb float audio codec"
99 echo " --enable-amr_if2 enable amr_wb IF2 audio codec"
74c53c2d
MR
100 echo " --enable-gpl allow use of GPL code, the resulting libav*"
101 echo " and ffmpeg will be under GPL [default=no]"
102 echo ""
103 echo "Advanced options (experts only):"
104 echo " --source-path=PATH path to source code [$source_path]"
105 echo " --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]"
fac252f9 106 echo " --cross-compile assume a cross-compiler is used"
74c53c2d
MR
107 echo " --cc=CC use C compiler CC [$cc]"
108 echo " --make=MAKE use specified make [$make]"
109 echo " --extra-cflags=ECFLAGS add ECFLAGS to CFLAGS [$CFLAGS]"
110 echo " --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
111 echo " --extra-libs=ELIBS add ELIBS [$ELIBS]"
112 echo " --build-suffix=SUFFIX suffix for application specific build []"
cc6a90dd 113 echo " --arch=ARCH select architecture [$arch]"
38d0a8aa
GP
114 echo " --cpu=CPU selects the minimum cpu required (affects
115 instruction selection, may crash on older CPUs)"
74c53c2d
MR
116 echo " --powerpc-perf-enable enable performance report on PPC"
117 echo " (requires enabling PMC)"
118 echo " --disable-mmx disable MMX usage"
1839e854 119 echo " --disable-armv5te disable armv5te usage"
edab3048 120 echo " --disable-armv6 disable armv6 usage"
74c53c2d
MR
121 echo " --disable-iwmmxt disable iwmmxt usage"
122 echo " --disable-altivec disable AltiVec usage"
123 echo " --disable-audio-oss disable OSS audio support [default=no]"
124 echo " --disable-audio-beos disable BeOS audio support [default=no]"
125 echo " --disable-v4l disable video4linux grabbing [default=no]"
126 echo " --disable-v4l2 disable video4linux2 grabbing [default=no]"
127 echo " --disable-bktr disable bktr video grabbing [default=no]"
128 echo " --disable-dv1394 disable DV1394 grabbing [default=no]"
129 echo " --disable-network disable network support [default=no]"
0c7bb0e5 130 echo " --disable-ipv6 disable ipv6 support [default=no]"
74c53c2d 131 echo " --disable-zlib disable zlib [default=no]"
74c53c2d
MR
132 echo " --disable-vhook disable video hooking support"
133 echo " --enable-gprof enable profiling with gprof [$gprof]"
134 echo " --disable-debug disable debugging symbols"
135 echo " --disable-opts disable compiler optimizations"
78fcba8f 136 echo " --enable-extra-warnings enable more compiler warnings"
74c53c2d
MR
137 echo " --disable-mpegaudio-hp faster (but less accurate)"
138 echo " MPEG audio decoding [default=no]"
139 echo " --disable-protocols disable I/O protocols support [default=no]"
786b30af 140 echo " --disable-ffmpeg disable ffmpeg build"
74c53c2d
MR
141 echo " --disable-ffserver disable ffserver build"
142 echo " --disable-ffplay disable ffplay build"
143 echo " --enable-small optimize for size instead of speed"
144 echo " --enable-memalign-hack emulate memalign, interferes with memory debuggers"
145 echo " --disable-strip disable stripping of executables and shared libraries"
146 echo " --disable-encoder=NAME disables encoder NAME"
147 echo " --enable-encoder=NAME enables encoder NAME"
148 echo " --disable-decoder=NAME disables decoder NAME"
149 echo " --enable-decoder=NAME enables decoder NAME"
150 echo " --disable-encoders disables all encoders"
151 echo " --disable-decoders disables all decoders"
ff70e601
MR
152 echo " --disable-muxer=NAME disables muxer NAME"
153 echo " --enable-muxer=NAME enables muxer NAME"
74c53c2d 154 echo " --disable-muxers disables all muxers"
ff70e601
MR
155 echo " --disable-demuxer=NAME disables demuxer NAME"
156 echo " --enable-demuxer=NAME enables demuxer NAME"
74c53c2d 157 echo " --disable-demuxers disables all demuxers"
af9e7d18
MR
158 echo " --enable-parser=NAME enables parser NAME"
159 echo " --disable-parser=NAME disables parser NAME"
160 echo " --disable-parsers disables all parsers"
74c53c2d
MR
161 echo ""
162 echo "NOTE: Object files are built at the place where configure is launched."
163 exit 1
164}
cf9d24ad 165
57bd82d4
MR
166log(){
167 echo "$@" >>$logfile
168}
169
720c69da 170log_file(){
c8e9f801
MR
171 log BEGIN $1
172 cat -n $1 >>$logfile
173 log END $1
174}
175
2ba042a7 176echolog(){
c8e9f801 177 log "$@"
57bd82d4 178 echo "$@"
2ba042a7
MR
179}
180
181die(){
182 echolog "$@"
183 cat <<EOF
184If you think configure made a mistake, make sure you are using the latest
185version from SVN. If the latest version fails, report the problem to the
186ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
187EOF
720c69da 188 if enabled logging; then
2ba042a7
MR
189 cat <<EOF
190Include the log file "$logfile" produced by configure as this will help
191solving the problem.
192EOF
193 else
194cat <<EOF
195Rerun configure with logging enabled (do not use --log=no), and include the
196log this produces with your report.
197EOF
198 fi
57bd82d4
MR
199 rm -f $TMPC $TMPO $TMPE $TMPS $TMPH
200 exit 1
201}
202
904e48f1 203# "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
44161118
MR
204toupper(){
205 echo "$@" | tr '[a-z]' '[A-Z]'
206}
207
a8d04fba
MR
208set_all(){
209 value=$1
210 shift
211 for var in $*; do
212 eval $var=$value
213 done
214}
215
216enable(){
217 set_all yes $*
218}
219
220disable(){
221 set_all no $*
222}
223
57bd82d4 224enabled(){
44161118
MR
225 eval test "x\$$1" = "xyes"
226}
227
228enabled_all(){
229 for opt; do
230 enabled $opt || return 1
231 done
232}
233
234enabled_any(){
235 for opt; do
236 enabled $opt && return 0
237 done
238}
239
30fd06be
MR
240check_deps(){
241 for cfg; do
242 eval dep_all="\$${cfg}_deps"
243 eval dep_any="\$${cfg}_deps_any"
244 enabled_all $dep_all || disable $cfg
245 enabled_any $dep_any || disable $cfg
246 done
247}
248
44161118
MR
249print_config(){
250 pfx=$1
251 header=$2
252 makefile=$3
253 shift 3
254 for cfg; do
255 if enabled $cfg; then
256 ucname="${pfx}`toupper $cfg`"
257 echo "#define ${ucname} 1" >> $header
258 echo "${ucname}=yes" >> $makefile
259 fi
260 done
57bd82d4
MR
261}
262
263flags_saved(){
264 (: ${SAVE_CFLAGS?}) 2>/dev/null
265}
266
dcd479c0 267save_flags(){
57bd82d4 268 flags_saved && return
dcd479c0
MR
269 SAVE_CFLAGS="$CFLAGS"
270 SAVE_LDFLAGS="$LDFLAGS"
271 SAVE_extralibs="$extralibs"
272}
273
274restore_flags(){
275 CFLAGS="$SAVE_CFLAGS"
276 LDFLAGS="$SAVE_LDFLAGS"
277 extralibs="$SAVE_extralibs"
278 unset SAVE_CFLAGS
279 unset SAVE_LDFLAGS
280 unset SAVE_extralibs
281}
282
283temp_cflags(){
284 save_flags
285 CFLAGS="$CFLAGS $*"
286}
287
288temp_ldflags(){
289 save_flags
290 LDFLAGS="$LDFLAGS $*"
291}
292
293temp_extralibs(){
294 save_flags
295 extralibs="$extralibs $*"
296}
297
57bd82d4
MR
298append(){
299 var=$1
300 shift
301 flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
302 eval "$var=\"\$$var $*\""
303}
304
305add_cflags(){
306 append CFLAGS "$@"
307}
308
309add_ldflags(){
310 append LDFLAGS "$@"
311}
312
313add_extralibs(){
314 append extralibs "$@"
315}
316
b0cfb663 317check_cmd(){
b3cb5d51 318 log "$@"
9b4f605c 319 "$@" >>$logfile 2>&1
b0cfb663
MR
320}
321
dcd479c0 322check_cc(){
57bd82d4
MR
323 log check_cc "$@"
324 cat >$TMPC
720c69da 325 log_file $TMPC
b0cfb663 326 check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
57bd82d4
MR
327}
328
329check_cpp(){
330 log check_cpp "$@"
dcd479c0 331 cat >$TMPC
720c69da 332 log_file $TMPC
b0cfb663 333 check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
dcd479c0
MR
334}
335
336check_ld(){
57bd82d4 337 log check_ld "$@"
0607887f 338 check_cc || return
b0cfb663 339 check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
dcd479c0
MR
340}
341
342check_cflags(){
57bd82d4
MR
343 log check_cflags "$@"
344 check_cc "$@" <<EOF && add_cflags "$@"
dcd479c0
MR
345int x;
346EOF
347}
348
349check_ldflags(){
57bd82d4
MR
350 log check_ldflags "$@"
351 check_ld "$@" <<EOF && add_ldflags "$@"
352int main(){
353 return 0;
354}
dcd479c0
MR
355EOF
356}
357
358check_header(){
57bd82d4 359 log check_header "$@"
dcd479c0
MR
360 header=$1
361 shift
57bd82d4 362 check_cpp "$@" <<EOF
dcd479c0
MR
363#include <$header>
364int x;
365EOF
0701ca7f 366 err=$?
0dbe81bb 367 var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
0701ca7f
MR
368 test "$err" = 0 && enable $var || disable $var
369 return $err
dcd479c0
MR
370}
371
372check_func(){
57bd82d4 373 log check_func "$@"
dcd479c0
MR
374 func=$1
375 shift
376 check_ld "$@" <<EOF
377extern int $func();
378int main(){
379 $func();
380}
381EOF
0701ca7f
MR
382 err=$?
383 test "$err" = 0 && enable $func || disable $func
384 return $err
dcd479c0
MR
385}
386
57bd82d4
MR
387check_lib(){
388 log check_lib "$@"
389 header="$1"
390 func="$2"
391 shift 2
392 temp_extralibs "$@"
393 check_header $header && check_func $func && add_extralibs "$@"
394 err=$?
395 restore_flags
396 return $err
397}
398
dcd479c0 399check_exec(){
90be59ef 400 check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
57bd82d4
MR
401}
402
403require(){
404 name="$1"
405 header="$2"
406 func="$3"
407 shift 3
408 check_lib $header $func "$@" || die "ERROR: $name not found"
dcd479c0
MR
409}
410
c505dd31
MR
411apply(){
412 file=$1
413 shift
414 "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
415}
416
c88f5d72
MR
417CONFIG_LIST='
418 encoders
419 decoders
420 parsers
421 muxers
422 demuxers
c88f5d72
MR
423 amr
424 amr_nb
425 amr_nb_fixed
426 amr_wb
427 audio_beos
428 audio_oss
429 avisynth
430 beos_netserver
431 bktr
432 dc1394
c88f5d72 433 dv1394
c88f5d72
MR
434 ffmpeg
435 ffplay
436 ffserver
437 gpl
438 ipv6
f8904fd9
DB
439 liba52
440 liba52bin
3ffab361 441 libdts
2eed5a46
DB
442 libfaac
443 libfaad
444 libfaadbin
c88f5d72 445 libgsm
6ebe07fb 446 libmp3lame
c88f5d72
MR
447 libnut
448 libogg
150d2772 449 libtheora
c88f5d72
MR
450 libvorbis
451 memalign_hack
c88f5d72
MR
452 mpegaudio_hp
453 network
454 pp
455 protocols
456 swscaler
457 vhook
458 video4linux
459 video4linux2
860391a5 460 wince
56a059ac 461 x11grab
c88f5d72
MR
462 x264
463 xvid
464 zlib
465'
466
467HAVE_LIST='
1ac9331a 468 altivec
c88f5d72 469 altivec_h
1ac9331a 470 armv5te
edab3048 471 armv6
b265431e 472 beosthreads
c88f5d72 473 byteswap_h
1ac9331a 474 cmov
c88f5d72 475 dcbzl
f8aa696f
DB
476 dev_bktr_ioctl_bt848_h
477 dev_bktr_ioctl_meteor_h
478 dev_ic_bt8xx_h
479 dev_video_meteor_ioctl_meteor_h
480 dev_video_bktr_ioctl_bt848_h
18b67ae5 481 dlfcn_h
c88f5d72 482 dlopen
7073e9fc 483 fast_cmov
c88f5d72
MR
484 freetype2
485 gprof
486 imlib2
2e1913b1 487 inet_aton
1ac9331a 488 iwmmxt
c88f5d72
MR
489 localtime_r
490 lrintf
f8aa696f
DB
491 machine_ioctl_bt848_h
492 machine_ioctl_meteor_h
c88f5d72
MR
493 malloc_h
494 memalign
495 mlib
1ac9331a
MR
496 mmi
497 mmx
9c914398 498 os2
b265431e
MR
499 os2threads
500 pthreads
c88f5d72
MR
501 sdl
502 sdl_video_size
b265431e
MR
503 threads
504 w32threads
c88f5d72 505'
44161118 506
1ac9331a
MR
507TARGET_LIST='
508 altivec
509 armv5te
1ac9331a
MR
510 iwmmxt
511 mmi
512 mmx
513'
514
30fd06be 515flashsv_decoder_deps="zlib"
773be23a 516flashsv_encoder_deps="zlib"
30fd06be
MR
517mpeg_xvmc_decoder_deps="xvmc"
518png_decoder_deps="zlib"
519png_encoder_deps="zlib"
520x264_encoder_deps="x264"
521xvid_encoder_deps="xvid"
522zmbv_decoder_deps="zlib"
523zmbv_encoder_deps="zlib"
524
525aac_decoder_deps="libfaad"
526mpeg4aac_decoder_deps="libfaad"
527ac3_decoder_deps="liba52"
528amr_nb_decoder_deps_any="amr_nb amr_nb_fixed"
529amr_nb_encoder_deps_any="amr_nb amr_nb_fixed"
530amr_wb_decoder_deps="amr_wb"
531amr_wb_encoder_deps="amr_wb"
532dts_decoder_deps="libdts"
533faac_encoder_deps="libfaac"
299c77d5
MR
534libgsm_decoder_deps="libgsm"
535libgsm_encoder_deps="libgsm"
150d2772 536libtheora_encoder_deps="libtheora"
30fd06be
MR
537mp3lame_encoder_deps="libmp3lame"
538oggvorbis_decoder_deps="libvorbis"
539oggvorbis_encoder_deps="libvorbis"
540
541audio_demuxer_deps_any="audio_oss audio_beos"
542audio_muxer_deps_any="audio_oss audio_beos"
543dc1394_demuxer_deps="dc1394"
544dv1394_demuxer_deps="dv1394"
545gxf_muxer_deps="gpl"
546nut_muxer_deps="libnut"
547ogg_muxer_deps="libogg"
548redir_demuxer_deps="network"
549rtp_muxer_deps="network"
550rtsp_demuxer_deps="network"
551sdp_demuxer_deps="network"
552v4l2_demuxer_deps="video4linux2"
3fb2ff0b 553video_grab_device_demuxer_deps_any="video4linux bktr"
30fd06be
MR
554x11_grab_device_demuxer_deps="x11grab"
555
0f3cb305 556# set temporary file name
57514323 557if test ! -z "$TMPDIR" ; then
0f3cb305 558 TMPDIR1="${TMPDIR}"
57514323 559elif test ! -z "$TEMPDIR" ; then
0f3cb305 560 TMPDIR1="${TEMPDIR}"
3d204385 561else
0f3cb305 562 TMPDIR1="/tmp"
3d204385
NK
563fi
564
0f3cb305
FB
565TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
566TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
f3ec2d46 567TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
0f3cb305
FB
568TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
569TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
570
de6d9b64 571# default parameters
720c69da 572logging="yes"
2ba042a7 573logfile="config.err"
2266e085
DB
574PREFIX="/usr/local"
575libdir='${PREFIX}/lib'
84c22efd 576shlibdir="$libdir"
2266e085
DB
577incdir='${PREFIX}/include/ffmpeg'
578mandir='${PREFIX}/man'
579bindir='${PREFIX}/bin'
0f3cb305 580cross_prefix=""
fac252f9 581cross_compile="no"
de6d9b64
FB
582cc="gcc"
583ar="ar"
be7109c1 584ranlib="ranlib"
4a908fbc 585make="make"
0f3cb305 586strip="strip"
cc6a90dd 587arch=`uname -m`
38d0a8aa 588cpu="generic"
e45a2872 589powerpc_perf="no"
0f3cb305 590mmx="default"
e7768fc5 591cmov="no"
7073e9fc 592fast_cmov="no"
1839e854 593armv5te="default"
edab3048 594armv6="default"
eba9ae3c 595iwmmxt="default"
ab6c65f6 596altivec="default"
87ea51e0 597dcbzl="no"
d46aba26 598mmi="default"
cc6a90dd 599case "$arch" in
ef0bc4c9 600 i386|i486|i586|i686|i86pc|BePC)
419b8784 601 arch="x86_32"
de6d9b64 602 ;;
7bf9648e 603 x86_64|amd64)
a63e5f1c 604 arch="x86_32"
32255f6c 605 canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
7bf9648e
JM
606 if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
607 if [ -z "`echo $CFLAGS | grep -- -m32`" ]; then
cc6a90dd 608 arch="x86_64"
7bf9648e 609 fi
053dea12
AJ
610 fi
611 ;;
6dc7b6b3
DB
612 # armv4l is a subset of armv[567]*l
613 arm|armv[4567]*l)
cc6a90dd 614 arch="armv4l"
6ed7422a 615 ;;
91d1f1a4 616 alpha)
cc6a90dd 617 arch="alpha"
91d1f1a4 618 ;;
2645e80f 619 "Power Macintosh"|ppc|ppc64|powerpc)
cc6a90dd 620 arch="powerpc"
90cee0c3 621 ;;
b028a866 622 mips|mipsel|IP*)
cc6a90dd 623 arch="mips"
d46aba26 624 ;;
bb476ff3 625 sun4u|sparc64)
cc6a90dd 626 arch="sparc64"
a7beab73 627 ;;
bb476ff3 628 sparc)
cc6a90dd 629 arch="sparc"
bb476ff3 630 ;;
bdb2e37c 631 sh4)
cc6a90dd 632 arch="sh4"
bdb2e37c 633 ;;
67860b26 634 parisc|parisc64)
cc6a90dd 635 arch="parisc"
67860b26
SH
636 ;;
637 s390|s390x)
cc6a90dd 638 arch="s390"
67860b26
SH
639 ;;
640 m68k)
cc6a90dd 641 arch="m68k"
67860b26
SH
642 ;;
643 ia64)
cc6a90dd 644 arch="ia64"
67860b26 645 ;;
81a9b052 646 bfin)
cc6a90dd 647 arch="bfin"
81a9b052 648 ;;
de6d9b64 649 *)
cc6a90dd 650 arch="unknown"
de6d9b64
FB
651 ;;
652esac
653gprof="no"
9d2a0f1c
MR
654video4linux="yes"
655video4linux2="yes"
6beefa40 656bktr="no"
5cbcf02c 657audio_oss="yes"
dfdfa47c 658audio_beos="no"
56a059ac 659x11grab="no"
8aa3ee32 660dv1394="yes"
f02be79d 661dc1394="no"
5cbcf02c 662network="yes"
0c7bb0e5 663ipv6="yes"
0147f198 664zlib="yes"
f8904fd9
DB
665liba52="no"
666liba52bin="no"
dc922953 667libdts="no"
2eed5a46
DB
668libfaac="no"
669libfaad="no"
670libfaadbin="no"
bb4c2140 671libgsm="no"
6ebe07fb 672libmp3lame="no"
f956e129 673libnut="no"
9146ca37 674libogg="no"
150d2772 675libtheora="no"
be74741c 676libvorbis="no"
1ddadfa9 677xvid="no"
6662ec29 678x264="no"
ba9261e5 679pp="no"
732d9245 680mingw32="no"
860391a5 681wince="no"
f3ec2d46 682os2="no"
320d060a 683lstatic="yes"
83286d2a 684lshared="no"
cddf3f45
GM
685optimize="yes"
686debug="yes"
78fcba8f 687extrawarnings="no"
65d1bea2 688dostrip="yes"
ef0bc4c9 689extralibs="-lm"
0f3cb305 690bigendian="no"
a8721c09 691vhook="default"
8ac17293 692avisynth="no"
18b67ae5 693dlfcn_h="no"
adbc0510 694dlopen="no"
1eb2212e 695mpegaudio_hp="yes"
baa3a937 696SHFLAGS='-shared -Wl,-soname,$@'
cab3ef82 697VHOOKSHFLAGS='$(SHFLAGS)'
8e72b130 698beos_netserver="no"
04f46ced 699protocols="yes"
786b30af 700ffmpeg="yes"
8154d2e0 701ffserver="yes"
a86b921c 702ffplay="yes"
80581e98 703LIBOBJFLAGS=""
e89b8b0a 704FFLDFLAGS=-Wl,--warn-common
e240ee67 705LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
c536cb09 706FFSERVERLDFLAGS=-Wl,-E
f39e56a8 707LDCONFIG="ldconfig"
f3ec2d46
SG
708LIBPREF="lib"
709LIBSUF=".a"
4bdd05e7 710LIB='$(LIBPREF)$(NAME)$(LIBSUF)'
f3ec2d46
SG
711SLIBPREF="lib"
712SLIBSUF=".so"
4bdd05e7 713SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
b29bddab
DB
714SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
715SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
951bf3e6 716EXESUF=""
eb94aca9 717BUILDSUF=""
891f64b3 718amr_nb="no"
d663a1fd 719amr_wb="no"
bc634f6f 720amr_nb_fixed="no"
2a515c08 721amr_if2="no"
bde24d6e 722mlib="no"
e5f94c2b
RP
723beosthreads="no"
724os2threads="no"
9c3d33d6 725pthreads="no"
eb113804 726w32threads="no"
e5f94c2b 727thread_type="no"
790c9ca7 728swscaler="no"
b2e3c528 729gpl="no"
9ddbcae6 730memalign_hack="no"
4454dc1b 731asmalign_pot="unknown"
d4596ae3 732LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
ef0bc4c9
FR
733
734# OS specific
735targetos=`uname -s`
736case $targetos in
737BeOS)
2266e085 738PREFIX="/boot/home/config"
ef0bc4c9 739# helps building libavcodec
30a3e5d4 740add_cflags "-DPIC -fomit-frame-pointer"
31ba0b4d 741# 3 gcc releases known for BeOS, each with ugly bugs
b2924696 742gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
31ba0b4d
FR
743case "$gcc_version" in
7442.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
745mmx="no"
746;;
747*20010315*) echo "BeBits gcc"
30a3e5d4 748add_cflags "-fno-expensive-optimizations"
31ba0b4d
FR
749;;
750esac
e1707f52 751SHFLAGS=-nostart
29799f8b 752# disable Linux things
e1707f52 753audio_oss="no"
9d2a0f1c
MR
754video4linux="no"
755video4linux2="no"
8aa3ee32 756dv1394="no"
29799f8b 757# enable BeOS things
dfdfa47c 758audio_beos="yes"
ef0bc4c9
FR
759# no need for libm, but the inet stuff
760# Check for BONE
761if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
762extralibs="-lbind -lsocket"
763else
8e72b130 764beos_netserver="yes"
26b35efb 765extralibs="-lnet"
ef0bc4c9 766fi ;;
4baca069 767SunOS)
9d2a0f1c
MR
768video4linux="no"
769video4linux2="no"
4baca069 770audio_oss="no"
8aa3ee32 771dv1394="no"
4baca069 772make="gmake"
e89b8b0a 773FFLDFLAGS=""
c536cb09 774FFSERVERLDFLAGS=""
813457e5 775SHFLAGS="-shared -Wl,-h,\$@"
30a3e5d4 776add_extralibs "-lsocket -lnsl"
4baca069 777;;
b7aa4a59 778NetBSD)
9d2a0f1c
MR
779video4linux="no"
780video4linux2="no"
6beefa40 781bktr="yes"
b7aa4a59
SS
782audio_oss="yes"
783dv1394="no"
784make="gmake"
30a3e5d4 785add_extralibs "-lossaudio"
b7aa4a59 786;;
8c802695 787OpenBSD)
9d2a0f1c
MR
788video4linux="no"
789video4linux2="no"
6beefa40 790bktr="yes"
8c802695
JM
791audio_oss="yes"
792dv1394="no"
8d0ba041 793need_memalign="no"
8c802695 794make="gmake"
80581e98 795LIBOBJFLAGS="\$(PIC)"
a1309f8f 796LDCONFIG="ldconfig -m \$(shlibdir)"
8d0ba041
MR
797SHFLAGS='-shared'
798SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
799SLIBNAME_WITH_VERSION='$(SLIBNAME)'
800SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
30a3e5d4 801add_extralibs "-lossaudio"
8c802695 802;;
9c938e77 803FreeBSD)
9d2a0f1c
MR
804video4linux="no"
805video4linux2="no"
6beefa40 806bktr="yes"
9c938e77 807audio_oss="yes"
8aa3ee32 808dv1394="no"
9c938e77 809make="gmake"
5d323602 810need_memalign="no"
30a3e5d4 811add_cflags "-pthread"
9c938e77 812;;
38f0d3ce 813GNU/kFreeBSD)
9d2a0f1c
MR
814video4linux="no"
815video4linux2="no"
38f0d3ce
DB
816bktr="yes"
817audio_oss="yes"
818dv1394="no"
30a3e5d4 819add_cflags "-pthread"
38f0d3ce 820;;
4a908fbc 821BSD/OS)
9d2a0f1c
MR
822video4linux="no"
823video4linux2="no"
6beefa40 824bktr="yes"
6063bce7 825audio_oss="yes"
8aa3ee32 826dv1394="no"
4a908fbc
AB
827extralibs="-lpoll -lgnugetopt -lm"
828make="gmake"
1db68540 829strip="strip -d"
4a908fbc 830;;
90cee0c3 831Darwin)
a43bd1d7 832cc="cc"
9d2a0f1c
MR
833video4linux="no"
834video4linux2="no"
90cee0c3 835audio_oss="no"
8aa3ee32 836dv1394="no"
5d323602 837need_memalign="no"
79cc11b3 838SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
408382a4 839VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
90cee0c3 840extralibs=""
47930f09 841strip="strip -x"
e89b8b0a 842FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
4e159595 843SLIBSUF=".dylib"
d0c2abb1 844SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
f3b60109 845SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
c536cb09 846FFSERVERLDFLAGS=-Wl,-bind_at_load
90cee0c3 847;;
732d9245 848MINGW32*)
951bf3e6 849# Note: the rest of the mingw32 config is done afterwards as mingw32
29799f8b 850# can be forced on the command line for Linux cross compilation.
732d9245
BE
851mingw32="yes"
852;;
3f027ca7 853CYGWIN*)
b2828252 854targetos=CYGWIN
6bc0e1cf 855shlibdir="$bindir"
9d2a0f1c
MR
856video4linux="no"
857video4linux2="no"
3f027ca7 858audio_oss="yes"
8aa3ee32 859dv1394="no"
07a1b05e 860VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
fbb9d104 861VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
3f027ca7 862extralibs=""
487c2fad 863EXESUF=".exe"
4581fdff
VP
864SLIBPREF="cyg"
865SLIBSUF=".dll"
866SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
867SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
868SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
3f027ca7 869;;
b55e4ef4 870Linux)
e240ee67 871LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
b55e4ef4 872;;
99614dd4 873IRIX*)
b2828252 874targetos=IRIX
99614dd4 875ranlib="echo ignoring ranlib"
9d2a0f1c
MR
876video4linux="no"
877video4linux2="no"
99614dd4
MB
878audio_oss="no"
879make="gmake"
880;;
f3ec2d46
SG
881OS/2)
882TMPE=$TMPE".exe"
3ca4b654 883ar="emxomfar -p128"
69db4e10
SG
884ranlib="echo ignoring ranlib"
885strip="echo ignoring strip"
30a3e5d4 886add_cflags "-Zomf"
e89b8b0a 887FFLDFLAGS="-Zomf -Zstack 16384 -s"
3ca4b654 888SHFLAGS="-Zdll -Zomf"
c536cb09 889FFSERVERLDFLAGS=""
f3ec2d46
SG
890LIBPREF=""
891LIBSUF=".lib"
892SLIBPREF=""
893SLIBSUF=".dll"
951bf3e6 894EXESUF=".exe"
f3ec2d46 895extralibs=""
c99dd233 896pkg_requires=""
9d2a0f1c
MR
897video4linux="no"
898video4linux2="no"
f3ec2d46 899audio_oss="no"
8aa3ee32 900dv1394="no"
f3ec2d46 901ffserver="no"
3ca4b654 902vhook="no"
f3ec2d46
SG
903os2="yes"
904;;
b2828252
DB
905*)
906targetos="${targetos}-UNKNOWN"
907;;
ef0bc4c9 908esac
de6d9b64 909
0f3cb305 910# find source path
997baf01 911source_path="`dirname \"$0\"`"
0f3cb305
FB
912source_path_used="yes"
913if test -z "$source_path" -o "$source_path" = "." ; then
997baf01 914 source_path="`pwd`"
0f3cb305 915 source_path_used="no"
e7a4dafb
MR
916else
917 source_path="`cd \"$source_path\"; pwd`"
997baf01
MR
918 echo "$source_path" | grep -q '[[:blank:]]' &&
919 die "Out of tree builds are impossible with whitespace in source path."
de6d9b64
FB
920fi
921
7d6ed4aa
MR
922if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
923 show_help
924fi
925
f255e0ab
MB
926FFMPEG_CONFIGURATION=" "
927for opt do
928 FFMPEG_CONFIGURATION="$FFMPEG_CONFIGURATION""$opt "
929done
930
f3902026
AJ
931ENCODER_LIST=`sed -n 's/^[^#]*ENC.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
932DECODER_LIST=`sed -n 's/^[^#]*DEC.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
933PARSER_LIST=`sed -n 's/^[^#]*PARSER.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
5b9b3b68
AJ
934MUXER_LIST=`sed -n 's/^[^#]*_MUX.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
935DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
009cf97d 936
a8d04fba
MR
937enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST
938
de6d9b64 939for opt do
fce53524 940 optval="${opt#*=}"
de6d9b64 941 case "$opt" in
2ba042a7
MR
942 --log)
943 ;;
fce53524 944 --log=*) logging="$optval"
57bd82d4 945 ;;
e48dc873 946 --prefix=*) PREFIX="$optval"
de6d9b64 947 ;;
e48dc873 948 --libdir=*) libdir="$optval"
cc973ecb 949 ;;
84c22efd
DB
950 --shlibdir=*) shlibdir="$optval"
951 ;;
fce53524 952 --incdir=*) incdir="$optval"
1d67a1d4 953 ;;
fce53524 954 --mandir=*) mandir="$optval"
23a65308 955 ;;
fce53524 956 --source-path=*) source_path="$optval"
0f3cb305 957 ;;
fce53524 958 --cross-prefix=*) cross_prefix="$optval"
0f3cb305 959 ;;
fac252f9
MR
960 --cross-compile) cross_compile=yes
961 ;;
fce53524 962 --cc=*) cc="$optval"
de6d9b64 963 ;;
fce53524 964 --make=*) make="$optval"
4a908fbc 965 ;;
30a3e5d4 966 --extra-cflags=*) add_cflags "$optval"
0f3cb305 967 ;;
28d8e661 968 --extra-ldflags=*) add_ldflags "$optval"
0f3cb305 969 ;;
28d8e661 970 --extra-libs=*) add_extralibs "$optval"
0f3cb305 971 ;;
fce53524 972 --build-suffix=*) BUILDSUF="$optval"
eb94aca9 973 ;;
cc6a90dd 974 --arch=*) arch="$optval"
de6d9b64 975 ;;
38d0a8aa 976 --cpu=*) cpu="$optval"
a4adb608 977 ;;
e45a2872
RD
978 --powerpc-perf-enable) powerpc_perf="yes"
979 ;;
de6d9b64
FB
980 --disable-mmx) mmx="no"
981 ;;
1839e854
SS
982 --disable-armv5te) armv5te="no"
983 ;;
edab3048
MR
984 --disable-armv6) armv6="no"
985 ;;
eba9ae3c
GB
986 --disable-iwmmxt) iwmmxt="no"
987 ;;
ab6c65f6
BF
988 --disable-altivec) altivec="no"
989 ;;
de6d9b64
FB
990 --enable-gprof) gprof="yes"
991 ;;
9d2a0f1c 992 --disable-v4l) video4linux="no"
5cbcf02c 993 ;;
9d2a0f1c 994 --disable-v4l2) video4linux2="no"
0a7b514f 995 ;;
6beefa40
MN
996 --disable-bktr) bktr="no"
997 ;;
5cbcf02c
FB
998 --disable-audio-oss) audio_oss="no"
999 ;;
dfdfa47c
FR
1000 --disable-audio-beos) audio_beos="no"
1001 ;;
8aa3ee32
MK
1002 --disable-dv1394) dv1394="no"
1003 ;;
ffc0ef96 1004 --disable-network) network="no"; ffserver="no"
5cbcf02c 1005 ;;
0c7bb0e5
LB
1006 --disable-ipv6) ipv6="no";
1007 ;;
0147f198
FR
1008 --disable-zlib) zlib="no"
1009 ;;
f8904fd9 1010 --enable-a52) liba52="yes"
6ed7422a 1011 ;;
f8904fd9 1012 --enable-a52bin) liba52bin="yes"
57514323 1013 ;;
3ffab361 1014 --enable-dts) libdts="yes"
23c99253 1015 ;;
ba9261e5 1016 --enable-pp) pp="yes"
bba9b16c 1017 ;;
bb4c2140
MN
1018 --enable-libgsm) libgsm="yes"
1019 ;;
6ebe07fb 1020 --enable-mp3lame) libmp3lame="yes"
a6741398 1021 ;;
f956e129
OS
1022 --enable-libnut) libnut="yes"
1023 ;;
9146ca37 1024 --enable-libogg) libogg="yes"
c99dd233 1025 pkg_requires="$pkg_requires ogg >= 1.1"
5c5dea3f 1026 ;;
150d2772
DB
1027 --enable-libtheora) libtheora="yes"
1028 pkg_requires="$pkg_requires theora"
1029 ;;
be74741c 1030 --enable-vorbis) libvorbis="yes"
c99dd233 1031 pkg_requires="$pkg_requires vorbis vorbisenc"
81e0d0b4 1032 ;;
2eed5a46 1033 --enable-faad) libfaad="yes"
445ad18d 1034 ;;
2eed5a46 1035 --enable-faadbin) libfaadbin="yes"
445ad18d 1036 ;;
2eed5a46 1037 --enable-faac) libfaac="yes"
29d48296 1038 ;;
1ddadfa9
AT
1039 --enable-xvid) xvid="yes"
1040 ;;
c99dd233 1041 --enable-x264) x264="yes"
6662ec29 1042 ;;
8ac17293
SH
1043 --enable-avisynth) avisynth="yes";
1044 ;;
56a059ac
DB
1045 --enable-x11grab) x11grab="yes";
1046 ;;
f02be79d 1047 --enable-dc1394) dc1394="yes"
c99dd233 1048 pkg_requires="$pkg_requires libraw1394"
f02be79d 1049 ;;
68892110
PG
1050 --disable-vhook) vhook="no"
1051 ;;
732d9245
BE
1052 --enable-mingw32) mingw32="yes"
1053 ;;
860391a5 1054 --enable-mingwce) wince="yes"
ac44871c 1055 ;;
320d060a
DB
1056 --enable-static) lstatic="yes"
1057 ;;
1058 --disable-static) lstatic="no"
1059 ;;
83286d2a 1060 --enable-shared) lshared="yes"
0319c531 1061 ;;
320d060a
DB
1062 --disable-shared) lshared="no"
1063 ;;
cddf3f45
GM
1064 --disable-debug) debug="no"
1065 ;;
1066 --disable-opts) optimize="no"
1067 ;;
78fcba8f
MR
1068 --enable-extra-warnings) extrawarnings="yes"
1069 ;;
1eb2212e
FB
1070 --disable-mpegaudio-hp) mpegaudio_hp="no"
1071 ;;
04f46ced
GB
1072 --disable-protocols) protocols="no"; network="no"; ffserver="no"
1073 ;;
786b30af
DB
1074 --disable-ffmpeg) ffmpeg="no"
1075 ;;
8154d2e0
FB
1076 --disable-ffserver) ffserver="no"
1077 ;;
a86b921c
FB
1078 --disable-ffplay) ffplay="no"
1079 ;;
cddf3f45 1080 --enable-small) optimize="small"
553a6284 1081 ;;
60827a1a 1082 --enable-amr_nb) amr="yes"; amr_nb="yes"; amr_nb_fixed="no"
891f64b3 1083 ;;
60827a1a 1084 --enable-amr_nb-fixed) amr="yes"; amr_nb_fixed="yes"; amr_nb="no"
bc634f6f 1085 ;;
60827a1a 1086 --enable-amr_wb) amr="yes"; amr_wb="yes"
115329f1 1087 ;;
60827a1a 1088 --enable-amr_if2) amr="yes"; amr_if2="yes"
2a515c08 1089 ;;
bde24d6e 1090 --enable-sunmlib) mlib="yes"
f80f7964 1091 ;;
9c3d33d6
MN
1092 --enable-pthreads) pthreads="yes"
1093 ;;
eb113804
DB
1094 --enable-w32threads) w32threads="yes"
1095 ;;
e5f94c2b
RP
1096 --enable-beosthreads) beosthreads="yes"
1097 ;;
1098 --enable-os2threads) os2threads="yes"
1099 ;;
790c9ca7
LA
1100 --enable-swscaler) swscaler="yes"
1101 ;;
b2e3c528
MN
1102 --enable-gpl) gpl="yes"
1103 ;;
9ddbcae6 1104 --enable-memalign-hack) memalign_hack="yes"
da9b170c 1105 ;;
65d1bea2
MB
1106 --disable-strip) dostrip="no"
1107 ;;
a8d04fba 1108 --enable-encoder=*) enable ${optval}_encoder
009cf97d 1109 ;;
a8d04fba 1110 --enable-decoder=*) enable ${optval}_decoder
f593b273 1111 ;;
a8d04fba 1112 --disable-encoder=*) disable ${optval}_encoder
f593b273 1113 ;;
a8d04fba 1114 --disable-decoder=*) disable ${optval}_decoder
009cf97d 1115 ;;
a8d04fba 1116 --disable-encoders) disable $ENCODER_LIST
009cf97d 1117 ;;
a8d04fba 1118 --disable-decoders) disable $DECODER_LIST
b4cad537 1119 ;;
a8d04fba 1120 --enable-muxer=*) enable ${optval}_muxer
a9e35095 1121 ;;
a8d04fba 1122 --disable-muxer=*) disable ${optval}_muxer
ff70e601 1123 ;;
a8d04fba 1124 --disable-muxers) disable $MUXER_LIST; ffserver="no"
ff70e601 1125 ;;
a8d04fba 1126 --enable-demuxer=*) enable ${optval}_demuxer
ff70e601 1127 ;;
a8d04fba 1128 --disable-demuxer=*) disable ${optval}_demuxer
ff70e601 1129 ;;
a8d04fba 1130 --disable-demuxers) disable $DEMUXER_LIST
a9e35095 1131 ;;
a8d04fba 1132 --enable-parser=*) enable ${optval}_parser
af9e7d18 1133 ;;
a8d04fba 1134 --disable-parser=*) disable ${optval}_parser
af9e7d18 1135 ;;
a8d04fba 1136 --disable-parsers) disable $PARSER_LIST
af9e7d18 1137 ;;
74c53c2d
MR
1138 --help) show_help
1139 ;;
b34c63f7
DB
1140 *)
1141 echo "Unknown option \"$opt\"."
1142 echo "See $0 --help for available options."
1143 exit 1
1144 ;;
de6d9b64
FB
1145 esac
1146done
1147
720c69da 1148if test "$logging" != no; then
90be59ef 1149 enabled logging || logfile="$logging"
57bd82d4
MR
1150 echo "# $0 $@" >$logfile
1151 set >>$logfile
2ba042a7
MR
1152else
1153 logfile=/dev/null
57bd82d4 1154fi
e89b8b0a 1155
9a46fe75
RP
1156if enabled_any mingw32 wince; then
1157 if enabled_all lshared lstatic; then
e67bcdd9
DB
1158 cat <<EOF
1159You can only build one library type at once on MinGW.
1160Specify --disable-static --enable-shared to only build
1161the shared libraries. To build only the static libraries
1162you do not need to pass additional options.
1163EOF
1164 exit 1
1165 fi
9d2a0f1c
MR
1166 video4linux="no"
1167 video4linux2="no"
e67bcdd9
DB
1168 audio_oss="no"
1169 dv1394="no"
1170 dc1394="no"
1171 ffserver="no"
1172 network="no"
90be59ef 1173 if enabled wince; then
e67bcdd9
DB
1174 protocols="no"
1175 fi
e67bcdd9
DB
1176 SLIBPREF=""
1177 SLIBSUF=".dll"
1178 EXESUF=".exe"
d6a07a13
DB
1179 SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1180 SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
dfeb80a5 1181 SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
b6f9a421 1182 SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
a77caa4d 1183 SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc"
e67bcdd9
DB
1184fi
1185
28d8e661
DB
1186# Combine FFLDFLAGS and the LDFLAGS environment variable.
1187LDFLAGS="$FFLDFLAGS $LDFLAGS"
e89b8b0a 1188
fac252f9 1189test -n "$cross_prefix" && cross_compile=yes
1ea46bed
MR
1190cc="${cross_prefix}${cc}"
1191ar="${cross_prefix}${ar}"
1192ranlib="${cross_prefix}${ranlib}"
1193strip="${cross_prefix}${strip}"
1194
320d060a
DB
1195# we need to build at least one lib type
1196if test "$lstatic" = "no" && test "$lshared" = "no" ; then
1197 cat <<EOF
1198At least one library type must be built.
1199Specify --enable-static to build the static libraries or --enable-shared to
1200build the shared libraries as well. To only build the shared libraries specify
1201--disable-static in addition to --enable-shared.
1202EOF
1203 exit 1;
1204fi
1205
90be59ef 1206if enabled libtheora && test "$libogg" = "no"; then
150d2772
DB
1207 die "libogg must be enabled to enable libtheora."
1208fi
1209
90be59ef 1210if enabled libvorbis && test "$libogg" = "no"; then
6cf161d2 1211 die "libogg must be enabled to enable libvorbis."
5c5dea3f
NB
1212fi
1213
b2e3c528 1214if test "$gpl" != "yes"; then
c839db53 1215 if enabled pp; then
6cf161d2 1216 die "The Postprocessing code is under GPL and --enable-gpl is not specified."
b2e3c528
MN
1217 fi
1218
f8904fd9 1219 if test "$liba52" != "no" -o "$liba52bin" != "no"; then
6cf161d2 1220 die "liba52 is under GPL and --enable-gpl is not specified."
b2e3c528 1221 fi
23c99253 1222
c839db53 1223 if enabled xvid; then
6cf161d2 1224 die "libxvidcore is under GPL and --enable-gpl is not specified."
1ddadfa9
AT
1225 fi
1226
c839db53 1227 if enabled x264; then
6cf161d2 1228 die "x264 is under GPL and --enable-gpl is not specified."
6662ec29
MN
1229 fi
1230
c839db53 1231 if enabled libdts; then
6cf161d2 1232 die "libdts is under GPL and --enable-gpl is not specified."
23c99253 1233 fi
115329f1 1234
2eed5a46 1235 if test "$libfaad" != "no" -o "$libfaadbin" != "no"; then
dcd479c0
MR
1236 if check_header faad.h; then
1237 check_cc << EOF
b2e3c528
MN
1238 #include <faad.h>
1239 #ifndef FAAD2_VERSION
1240 ok faad1
1241 #endif
1242 int main( void ) { return 0; }
1243EOF
dcd479c0 1244 if test $? = 0 ; then
6cf161d2 1245 die "FAAD2 is under GPL and --enable-gpl is not specified."
b2e3c528
MN
1246 fi
1247 else
2eed5a46
DB
1248 libfaad="no"
1249 libfaadbin="no"
29799f8b 1250 echo "FAAD test failed."
b2e3c528
MN
1251 fi
1252 fi
56a059ac 1253
c839db53 1254 if enabled x11grab; then
6cf161d2 1255 die "The X11 grabber is under GPL and --enable-gpl is not specified."
56a059ac 1256 fi
11c6f4a1 1257
c839db53 1258 if enabled swscaler; then
6cf161d2 1259 die "The software scaler is under GPL and --enable-gpl is not specified."
11c6f4a1 1260 fi
ebb810d9 1261fi
b2e3c528 1262
29799f8b 1263# compute MMX state
0f3cb305 1264if test $mmx = "default"; then
419b8784 1265 if test $arch = "x86_32" -o $arch = "x86_64"; then
0f3cb305
FB
1266 mmx="yes"
1267 else
1268 mmx="no"
1269 fi
1270fi
1271
5d323602
MR
1272test -z "$need_memalign" && need_memalign="$mmx"
1273
cf9d24ad 1274#Darwin CC versions
75388c74 1275needmdynamicnopic="no"
cf9d24ad 1276if test $targetos = Darwin; then
b2924696 1277 if test -n "`$cc -v 2>&1 | grep xlc`"; then
30a3e5d4 1278 add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
cf9d24ad 1279 else
bb270c08
DB
1280 gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1281 case "$gcc_version" in
1282 *2.95*)
30a3e5d4 1283 add_cflags "-no-cpp-precomp -pipe"
bb270c08
DB
1284 ;;
1285 *[34].*)
30a3e5d4 1286 add_cflags "-no-cpp-precomp -pipe -force_cpusubtype_ALL -Wno-sign-compare"
bb270c08
DB
1287 if test "$lshared" = no; then
1288 needmdynamicnopic="yes"
1289 fi
1290 ;;
1291 *)
30a3e5d4 1292 add_cflags "-no-cpp-precomp -pipe"
bb270c08
DB
1293 if test "$lshared" = no; then
1294 needmdynamicnopic="yes"
1295 fi
1296 ;;
1297 esac
cf9d24ad 1298 fi
2a1a6b64
MN
1299fi
1300
1301if test $optimize != "no"; then
1302 add_cflags "-fomit-frame-pointer"
cf9d24ad
DC
1303fi
1304
ab6c65f6
BF
1305# Can only do AltiVec on PowerPC
1306if test $altivec = "default"; then
cc6a90dd 1307 if test $arch = "powerpc"; then
ab6c65f6
BF
1308 altivec="yes"
1309 else
1310 altivec="no"
1311 fi
1312fi
1313
a4adb608 1314# Add processor-specific flags
9007f514 1315POWERPCMODE="32bits"
38d0a8aa
GP
1316if test $cpu != "generic"; then
1317 case $cpu in
bb270c08 1318 601|ppc601|PowerPC601)
1c5d830c 1319 add_cflags "-mcpu=601"
90be59ef 1320 if enabled altivec; then
bb270c08
DB
1321 echo "WARNING: Tuning for PPC601 but AltiVec enabled!";
1322 fi
bb270c08
DB
1323 ;;
1324 603*|ppc603*|PowerPC603*)
1c5d830c 1325 add_cflags "-mcpu=603"
90be59ef 1326 if enabled altivec; then
bb270c08
DB
1327 echo "WARNING: Tuning for PPC603 but AltiVec enabled!";
1328 fi
bb270c08
DB
1329 ;;
1330 604*|ppc604*|PowerPC604*)
1c5d830c 1331 add_cflags "-mcpu=604"
90be59ef 1332 if enabled altivec; then
bb270c08
DB
1333 echo "WARNING: Tuning for PPC604 but AltiVec enabled!";
1334 fi
bb270c08
DB
1335 ;;
1336 G3|g3|75*|ppc75*|PowerPC75*)
1c5d830c 1337 add_cflags "-mcpu=750 -mpowerpc-gfxopt"
90be59ef 1338 if enabled altivec; then
bb270c08
DB
1339 echo "WARNING: Tuning for PPC75x but AltiVec enabled!";
1340 fi
bb270c08
DB
1341 ;;
1342 G4|g4|745*|ppc745*|PowerPC745*)
1c5d830c 1343 add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
bb270c08
DB
1344 if test $altivec = "no"; then
1345 echo "WARNING: Tuning for PPC745x but AltiVec disabled!";
1346 fi
bb270c08
DB
1347 ;;
1348 74*|ppc74*|PowerPC74*)
1c5d830c 1349 add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
bb270c08
DB
1350 if test $altivec = "no"; then
1351 echo "WARNING: Tuning for PPC74xx but AltiVec disabled!";
1352 fi
bb270c08
DB
1353 ;;
1354 G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1c5d830c 1355 add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
bb270c08
DB
1356 if test $altivec = "no"; then
1357 echo "WARNING: Tuning for PPC970 but AltiVec disabled!";
1358 fi
9007f514 1359 POWERPCMODE="64bits"
bb270c08 1360 ;;
e7768fc5
GP
1361 # targets that do NOT support conditional mov (cmov)
1362 i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
38d0a8aa 1363 add_cflags "-march=$cpu"
e7768fc5
GP
1364 cmov="no"
1365 ;;
1366 # targets that do support conditional mov (cmov)
416519dd 1367 i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
e7768fc5 1368 add_cflags "-march=$cpu"
4c8d81fa 1369 cmov="yes"
7073e9fc 1370 fast_cmov="yes"
94e4c3a3
GP
1371 ;;
1372 # targets that do support conditional mov but on which it's slow
1373 pentium4|prescott|nocona)
1374 add_cflags "-march=$cpu"
1375 cmov="yes"
7073e9fc 1376 fast_cmov="no"
bb270c08 1377 ;;
d7b34d08 1378 sparc64)
1c5d830c 1379 add_cflags "-mcpu=v9"
d7b34d08 1380 ;;
bb270c08 1381 *)
38d0a8aa 1382 echo "WARNING: Unknown CPU \"$cpu\", ignored."
bb270c08 1383 ;;
a4adb608
MN
1384 esac
1385fi
1386
be0d52ab
MR
1387# make sure we can execute files in $TMPDIR
1388cat >$TMPE 2>>$logfile <<EOF
1389#! /bin/sh
1390EOF
1391chmod +x $TMPE >>$logfile 2>&1
1392if ! $TMPE >>$logfile 2>&1; then
1393 cat <<EOF
1394Unable to create and execute files in $TMPDIR1. Set the TMPDIR environment
68300911
DB
1395variable to another directory and make sure that $TMPDIR1 is not mounted
1396noexec.
be0d52ab
MR
1397EOF
1398 die "Sanity test failed."
1399fi
0244f743 1400rm $TMPE
be0d52ab 1401
1a268acc
MR
1402# compiler sanity check
1403check_exec <<EOF
1404int main(){
1405 return 0;
1406}
1407EOF
1408if test "$?" != 0; then
1409 echo "$cc is unable to create an executable file."
1410 if test -z "$cross_prefix" -a "$cross_compile" = no; then
1411 echo "If $cc is a cross-compiler, use the --cross-compile option."
c7ae6345 1412 echo "Only do this if you know what cross compiling means."
1a268acc
MR
1413 fi
1414 die "C compiler test failed."
1415fi
1416
87ea51e0
LB
1417# check for assembler specific support
1418
cc6a90dd 1419if test $arch = "powerpc"; then
87ea51e0
LB
1420check_cc <<EOF && dcbzl=yes
1421int main(void) {
1422 register long zero = 0;
1423 char data[1024];
1424 asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
1425return 0;
1426}
1427EOF
1428fi
1429
57bd82d4
MR
1430# check for SIMD availability
1431
115329f1 1432# AltiVec flags: The FSF version of GCC differs from the Apple version
cc6a90dd 1433if test $arch = "powerpc"; then
90be59ef 1434 if enabled altivec; then
b2924696 1435 if test -n "`$cc -v 2>&1 | grep version | grep Apple`"; then
30a3e5d4 1436 add_cflags "-faltivec"
b6e52719 1437 else
30a3e5d4 1438 add_cflags "-maltivec -mabi=altivec"
b6e52719
MD
1439 fi
1440 fi
1441fi
1442
0701ca7f 1443check_header altivec.h
a9a07762 1444
29799f8b 1445# check if our compiler supports Motorola AltiVec C API
90be59ef
RP
1446if enabled altivec; then
1447 if enabled altivec_h; then
f25fc9b1
MR
1448 inc_altivec_h="#include <altivec.h>"
1449 else
1450 inc_altivec_h=
1451 fi
1452 check_cc <<EOF || altivec=no
dcd479c0 1453$inc_altivec_h
a9a07762
MN
1454int main(void) {
1455 vector signed int v1, v2, v3;
1456 v1 = vec_add(v2,v3);
1457 return 0;
1458}
1459EOF
1460fi
ab6c65f6 1461
854fdb51 1462# check armv5te instructions support
cc6a90dd 1463if test $armv5te = "default" -a $arch = "armv4l"; then
854fdb51
MR
1464 armv5te=no
1465 check_cc <<EOF && armv5te=yes
1466 int main(void) {
1467 __asm__ __volatile__ ("qadd r0, r0, r0");
1468 }
1469EOF
1470fi
1471
edab3048
MR
1472if test $armv6 = "default" -a $arch = "armv4l"; then
1473 check_cc <<EOF && armv6=yes || armv6=no
1474int main(void) {
1475 __asm__ __volatile__ ("sadd16 r0, r0, r0");
1476}
1477EOF
1478fi
1479
854fdb51 1480# check iwmmxt support
cc6a90dd 1481if test $iwmmxt = "default" -a $arch = "armv4l"; then
854fdb51
MR
1482 iwmmxt=no
1483 check_cc <<EOF && iwmmxt=yes
1484 int main(void) {
1485 __asm__ __volatile__ ("wunpckelub wr6, wr4");
1486 }
1487EOF
1488fi
1489
29799f8b 1490# mmi only available on mips
d46aba26 1491if test $mmi = "default"; then
cc6a90dd 1492 if test $arch = "mips"; then
d46aba26
LS
1493 mmi="yes"
1494 else
1495 mmi="no"
1496 fi
1497fi
1498
29799f8b 1499# check if our compiler supports mmi
57bd82d4 1500enabled mmi && check_cc <<EOF || mmi="no"
d46aba26
LS
1501int main(void) {
1502 __asm__ ("lq \$2, 0(\$2)");
1503 return 0;
1504}
1505EOF
57bd82d4 1506
57bd82d4
MR
1507# ---
1508# big/little-endian test
fac252f9 1509if test "$cross_compile" = "no"; then
57bd82d4 1510 check_ld <<EOF || die "endian test failed" && $TMPE && bigendian="yes"
a3999908
MN
1511#include <inttypes.h>
1512int main(int argc, char ** argv){
bb270c08
DB
1513 volatile uint32_t i=0x01234567;
1514 return (*((uint8_t*)(&i))) == 0x67;
a3999908
MN
1515}
1516EOF
487a54d7 1517else
f25fc9b1 1518 # programs cannot be launched if cross compiling, so make a static guess
cc6a90dd 1519 if test "$arch" = "powerpc" -o "$arch" = "mips" ; then
f25fc9b1
MR
1520 bigendian="yes"
1521 fi
487a54d7
FB
1522fi
1523
a3999908 1524# ---
3d204385
NK
1525# check availability of some header files
1526
0701ca7f
MR
1527check_header malloc.h
1528check_func memalign
3d204385 1529
5d323602
MR
1530if test "$memalign" = "no" -a "$need_memalign" = "yes" -a \
1531 "$memalign_hack" != "yes"; then
57bd82d4 1532 die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
8bf5d58f
MN
1533fi
1534
0701ca7f 1535check_header byteswap.h
47d23bbf 1536
0701ca7f
MR
1537check_func inet_aton
1538check_func localtime_r
57bd82d4 1539enabled zlib && check_lib zlib.h zlibVersion -lz || zlib="no"
57bd82d4
MR
1540
1541# check for some common methods of building with pthread support
1542# do this before the optional library checks as some of them require pthreads
1543if enabled pthreads; then
9e7fd101
MR
1544 if check_func pthread_create; then
1545 :
1546 elif check_func pthread_create -pthread; then
1547 add_cflags -pthread
1548 add_ldflags -pthread
1549 elif check_func pthread_create -pthreads; then
1550 add_cflags -pthreads
1551 add_ldflags -pthreads
1552 elif ! check_lib pthread.h pthread_create -lpthread; then
1553 die "ERROR: can't find pthreads library"
1554 fi
57bd82d4
MR
1555fi
1556
e5f94c2b
RP
1557for thread in pthreads beosthreads os2threads w32threads; do
1558 if enabled $thread; then
1559 if test $thread_type != "no"; then
1560 die "ERROR: Only one thread type must be selected."
1561 else
1562 thread_type="$thread"
1563 fi
1564 fi
1565done
1566
57bd82d4 1567# these are off by default, so fail if requested and not available
3ffab361 1568enabled libdts && require libdts dts.h dts_init -ldts -lm
57bd82d4 1569enabled libgsm && require libgsm gsm.h gsm_create -lgsm
6ebe07fb 1570enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
150d2772 1571enabled libtheora && require libtheora theora/theora.h theora_info_init -ltheora -logg
be74741c 1572enabled libvorbis && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbis -lvorbisenc -logg
aedf11f8 1573enabled libogg && require libogg ogg/ogg.h ogg_sync_init -logg
4d8aa1c3 1574enabled libnut && require libnut libnut.h nut_demuxer_init -lnut
57bd82d4
MR
1575enabled xvid && require XviD xvid.h xvid_global -lxvidcore
1576enabled x264 && require x264 x264.h x264_encoder_open -lx264
1577enabled dc1394 && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
bde24d6e 1578enabled mlib && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
e0f80bd7 1579
2eed5a46 1580# Ugh, libfaac uses stdcall calling convention on win32 so we can't use
3b9bee88 1581# the generic test functions
2eed5a46 1582if enabled libfaac; then
3b9bee88
MR
1583 save_flags
1584 temp_extralibs -lfaac
1585 check_ld <<EOF && add_extralibs -lfaac || die "ERROR: libfaac not found"
1586#include <stdint.h>
1587#include <faac.h>
1588int main(){
1589 char *id, *cpr;
1590 faacEncGetVersion(&id, &cpr);
1591 return 0;
1592}
1593EOF
1594 restore_flags
1595fi
1596
87f1c97e
MR
1597# Ugh, recent faad2 versions have renamed all functions and #define the
1598# old names in faad.h. Generic tests won't work.
2eed5a46 1599if enabled libfaad; then
87f1c97e
MR
1600 save_flags
1601 temp_extralibs -lfaad
1602 check_ld <<EOF && add_extralibs -lfaad || die "ERROR: libfaad not found"
1603#include <faad.h>
1604int main(){
1605 faacDecOpen();
1606 return 0;
1607}
1608EOF
1609 restore_flags
1610fi
1611
8ac17293
SH
1612# Ugh, avisynth uses WINAPI calls. Generic tests won't work.
1613if enabled avisynth; then
1614 save_flags
1615 temp_extralibs -lvfw32
1616 check_ld <<EOF && add_extralibs -lvfw32 || die "ERROR: vfw32 not found"
1617#include <windows.h>
1618#include <vfw.h>
1619int main(){
1620 AVIFileInit();
1621 return 0;
1622}
1623EOF
1624 restore_flags
1625fi
1626
1627
95e2ce4a 1628# test for lrintf in math.h
fc2b267f 1629check_exec <<EOF && lrintf=yes || lrintf=no
95e2ce4a
MN
1630#define _ISOC9X_SOURCE 1
1631#include <math.h>
1632int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
1633EOF
1634
c13e1abd
FH
1635_restrict=
1636for restrict_keyword in restrict __restrict__ __restrict; do
57bd82d4 1637 check_cc <<EOF && _restrict=$restrict_keyword && break
dcd479c0
MR
1638void foo(char * $restrict_keyword p);
1639EOF
c13e1abd
FH
1640done
1641
a8721c09
FB
1642# dlopen/dlfcn.h probing
1643
0701ca7f 1644check_header dlfcn.h
a8721c09 1645
dcd479c0 1646if check_func dlopen; then
dcd479c0 1647 ldl=
0701ca7f
MR
1648elif check_func dlopen -ldl; then
1649 ldl=-ldl
a8721c09
FB
1650fi
1651
f25fc9b1
MR
1652if test "$vhook" = "default"; then
1653 vhook="$dlopen"
a8721c09
FB
1654fi
1655
2eed5a46 1656if enabled_any vhook liba52bin libfaadbin; then
57bd82d4 1657 add_extralibs $ldl
bfd2edeb
MN
1658fi
1659
fbb9d104
VP
1660if test "$targetos" = "CYGWIN" -a "$lstatic" = "yes" ; then
1661 vhook="no"
1662 echo
1663 echo "At the moment vhooks don't work on Cygwin static builds."
1664 echo "Patches welcome."
1665 echo
1666fi
1667
8d923001
MR
1668if enabled vhook; then
1669 check_ldflags -rdynamic
1670 check_ldflags -export-dynamic
1671fi
bfd2edeb 1672
9464f2b8
DB
1673if enabled audio_beos; then
1674 add_extralibs "-lmedia -lbe"
1675fi
1676
a86b921c 1677##########################################
29799f8b 1678# imlib check
a86b921c 1679
dcd479c0
MR
1680temp_extralibs -lImlib2
1681check_ld <<EOF && imlib2=yes || imlib2=no
a8721c09
FB
1682#include <X11/Xlib.h>
1683#include <Imlib2.h>
1684int main( void ) { return (int) imlib_load_font("foo"); }
1685EOF
dcd479c0 1686restore_flags
52b41d7f 1687
a86b921c 1688##########################################
29799f8b 1689# FreeType check
a86b921c 1690
04511d53 1691freetype2=no
e2a5fd20 1692if test "x$targetos" != "xBeOS"; then
e2a3cd59 1693 if (freetype-config --version) >/dev/null 2>&1 ; then
dcd479c0
MR
1694 temp_cflags `freetype-config --cflags`
1695 temp_extralibs `freetype-config --libs`
1696 check_ld <<EOF && freetype2=yes
1697#include <ft2build.h>
1698int main( void ) { return (int) FT_Init_FreeType(0); }
1699EOF
1700 restore_flags
dee076fc 1701 fi
04511d53
PG
1702fi
1703
a86b921c 1704##########################################
29799f8b 1705# SDL check
a86b921c 1706
a86b921c
FB
1707sdl_too_old=no
1708sdl=no
6a1a892f
FD
1709SDL_CONFIG="${cross_prefix}sdl-config"
1710if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then
dcd479c0
MR
1711 temp_cflags `"${SDL_CONFIG}" --cflags`
1712 temp_extralibs `"${SDL_CONFIG}" --libs`
1713 check_ld <<EOF
1714#include <SDL.h>
1715#undef main /* We don't want SDL to override our main() */
1716int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1717EOF
dcd479c0
MR
1718 if test $? = 0; then
1719 _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
29f3b38a 1720 if test "$_sdlversion" -lt 121 ; then
dcd479c0
MR
1721 sdl_too_old=yes
1722 else
1723 sdl=yes
29f3b38a
MR
1724 check_cc <<EOF && sdl_video_size=yes || sdl_video_size=no
1725#include <SDL.h>
1726int main(void){
1727 const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1728 int w = vi->current_w;
1729 return 0;
1730}
1731EOF
dcd479c0
MR
1732 fi
1733 fi
29f3b38a 1734 restore_flags
c3f6b472 1735fi
a86b921c 1736
57bd82d4
MR
1737enabled sdl || ffplay=no
1738
146ea952 1739##########################################
29799f8b 1740# texi2html check
146ea952
NB
1741
1742texi2html=no
e2a3cd59 1743if (texi2html -version) >/dev/null 2>&1; then
146ea952
NB
1744texi2html=yes
1745fi
1746
7a91333f 1747##########################################
29799f8b 1748# IPv6 check
7a91333f 1749
0c7bb0e5 1750enabled network && enabled ipv6 && check_ld <<EOF && ipv6=yes || ipv6=no
7a91333f
HZ
1751#include <sys/types.h>
1752#include <sys/socket.h>
1753#include <netinet/in.h>
1754#include <netdb.h>
1755int main( void ) {
1756 struct sockaddr_storage saddr;
1757 struct ipv6_mreq mreq6;
1758 getaddrinfo(0,0,0,0);
1759 getnameinfo(0,0,0,0,0,0,0);
12fe88b4 1760 IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
7a91333f
HZ
1761}
1762EOF
1763
47f38850 1764# check for video4linux2 --- V4L2_PIX_FMT_YUV420
9d2a0f1c 1765enabled video4linux2 && check_cc <<EOF || video4linux2="no"
84fe9963 1766#include <sys/time.h>
f743a062
LA
1767#include <asm/types.h>
1768#include <linux/videodev2.h>
47f38850 1769int dummy = V4L2_PIX_FMT_YUV420;
490c189b 1770struct v4l2_buffer dummy1;
47f38850 1771EOF
47f38850 1772
f8aa696f
DB
1773# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1774if enabled bktr; then
1775 check_header dev/bktr/ioctl_meteor.h
1776 check_header dev/bktr/ioctl_bt848.h
1777
1778 check_header machine/ioctl_meteor.h
1779 check_header machine/ioctl_bt848.h
1780
1781 check_header dev/video/meteor/ioctl_meteor.h
1782 check_header dev/video/bktr/ioctl_bt848.h
1783
1784 check_header dev/ic/bt8xx.h
1785fi
1786
f58f4ce1 1787# Deal with the x11 frame grabber
56a059ac 1788enabled x11grab &&
f58f4ce1
GP
1789enabled gpl &&
1790enabled x11_grab_device_demuxer &&
1791check_header X11/Xlib.h &&
1792check_header X11/extensions/XShm.h &&
1793check_func XOpenDisplay -lX11 &&
1794check_func XShmCreateImage -lX11 -lXext &&
1795add_extralibs -lX11 -lXext ||
1796disable x11_grab_device_demuxer
1797
57bd82d4
MR
1798enabled debug && add_cflags -g
1799
1800# add some useful compiler flags if supported
1801check_cflags -Wdeclaration-after-statement
dcd479c0
MR
1802check_cflags -Wall
1803check_cflags -Wno-switch
c07bd6a9
MN
1804check_cflags -Wdisabled-optimization
1805check_cflags -Wpointer-arith
1806check_cflags -Wredundant-decls
cc1fb623 1807check_cflags -Wno-pointer-sign
78fcba8f 1808enabled extrawarnings && check_cflags -Winline
cf9d24ad 1809
57bd82d4 1810# add some linker flags
e240ee67 1811check_ldflags $LDLATEFLAGS
94a3401e 1812
57bd82d4
MR
1813# not all compilers support -Os
1814test "$optimize" = "small" && check_cflags -Os
cddf3f45 1815
57bd82d4 1816if enabled optimize; then
b2924696 1817 if test -n "`$cc -v 2>&1 | grep xlc`"; then
30a3e5d4
NP
1818 add_cflags "-O5"
1819 add_ldflags "-O5"
cf9d24ad 1820 else
30a3e5d4 1821 add_cflags "-O3"
cf9d24ad 1822 fi
cddf3f45
GM
1823fi
1824
80581e98 1825# PIC flags for shared library objects where they are needed
90be59ef 1826if enabled lshared; then
f25fc9b1
MR
1827 # LIBOBJFLAGS may have already been set in the OS configuration
1828 if test -z "$LIBOBJFLAGS" ; then
cc6a90dd 1829 case "$arch" in
813457e5
MR
1830 x86_64|ia64|alpha|sparc*) LIBOBJFLAGS="\$(PIC)" ;;
1831 esac
80581e98 1832 fi
80581e98
MN
1833fi
1834
90be59ef 1835if enabled gprof; then
30a3e5d4
NP
1836 add_cflags "-p"
1837 add_ldflags "-p"
1db54e20
DB
1838fi
1839
18451f7d 1840VHOOKCFLAGS="-fPIC $CFLAGS"
90be59ef 1841enabled needmdynamicnopic && add_cflags -mdynamic-no-pic
18451f7d 1842
4454dc1b
JD
1843# find if .align arg is power-of-two or not
1844if test $asmalign_pot = "unknown"; then
1845 asmalign_pot="no"
1846 echo 'asm (".align 3");' | check_cc && asmalign_pot="yes"
1847fi
1848
f36958f8
DB
1849echo "install prefix $PREFIX"
1850echo "source path $source_path"
1851echo "C compiler $cc"
1852echo "make $make"
bfd5afd8 1853echo ".align is power-of-two $asmalign_pot"
f36958f8 1854echo "ARCH $arch ($cpu)"
eb94aca9 1855if test "$BUILDSUF" != ""; then
f36958f8 1856 echo "build suffix $BUILDSUF"
eb94aca9 1857fi
f36958f8 1858echo "big-endian $bigendian"
419b8784 1859if test $arch = "x86_32" -o $arch = "x86_64"; then
f36958f8
DB
1860 echo "MMX enabled $mmx"
1861 echo "CMOV enabled $cmov"
7073e9fc 1862 echo "CMOV is fast $fast_cmov"
e41e8342 1863fi
cc6a90dd 1864if test $arch = "armv4l"; then
f36958f8 1865 echo "ARMv5TE enabled $armv5te"
edab3048 1866 echo "ARMv6 enabled $armv6"
f36958f8 1867 echo "IWMMXT enabled $iwmmxt"
eba9ae3c 1868fi
cc6a90dd 1869if test $arch = "mips"; then
f36958f8 1870 echo "MMI enabled $mmi"
e41e8342 1871fi
cc6a90dd 1872if test $arch = "powerpc"; then
f36958f8
DB
1873 echo "AltiVec enabled $altivec"
1874 echo "dcbzl available $dcbzl"
e41e8342 1875fi
f36958f8 1876echo "gprof enabled $gprof"
f36958f8
DB
1877echo "debug symbols $debug"
1878echo "strip symbols $dostrip"
1879echo "optimize $optimize"
1880echo "static $lstatic"
1881echo "shared $lshared"
bfd5afd8
DB
1882echo "postprocessing support $pp"
1883echo "software scaler enabled $swscaler"
f36958f8 1884echo "video hooking $vhook"
90be59ef 1885if enabled vhook; then
f36958f8
DB
1886 echo "Imlib2 support $imlib2"
1887 echo "FreeType support $freetype2"
68892110 1888fi
bfd5afd8 1889echo "network support $network"
90be59ef 1890if enabled network; then
bfd5afd8
DB
1891 echo "IPv6 support $ipv6"
1892fi
e5f94c2b 1893echo "threading support $thread_type"
bfd5afd8 1894echo "SDL support $sdl"
90be59ef 1895if enabled sdl_too_old; then
bfd5afd8
DB
1896 echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
1897fi
1898echo "Sun medialib support $mlib"
1899echo "AVISynth enabled $avisynth"
f8904fd9
DB
1900echo "liba52 support $liba52"
1901echo "liba52 dlopened $liba52bin"
3ffab361 1902echo "libdts support $libdts"
2eed5a46
DB
1903echo "libfaac enabled $libfaac"
1904echo "libfaad enabled $libfaad"
1905echo "faadbin enabled $libfaadbin"
bfd5afd8 1906echo "libgsm enabled $libgsm"
6ebe07fb 1907echo "libmp3lame enabled $libmp3lame"
bfd5afd8
DB
1908echo "libnut enabled $libnut"
1909echo "libogg enabled $libogg"
150d2772 1910echo "libtheora enabled $libtheora"
bfd5afd8 1911echo "libvorbis enabled $libvorbis"
bfd5afd8 1912echo "x264 enabled $x264"
dc922953 1913echo "XviD enabled $xvid"
bfd5afd8 1914echo "zlib enabled $zlib"
f36958f8
DB
1915echo "AMR-NB float support $amr_nb"
1916echo "AMR-NB fixed support $amr_nb_fixed"
1917echo "AMR-WB float support $amr_wb"
1918echo "AMR-WB IF2 support $amr_if2"
b2e3c528 1919if test "$gpl" = "no" ; then
f25fc9b1 1920 echo "License: LGPL"
b2e3c528 1921else
f25fc9b1 1922 echo "License: GPL"
b2e3c528 1923fi
de6d9b64 1924
29799f8b 1925echo "Creating config.mak and config.h..."
de6d9b64 1926
29799f8b
DB
1927echo "# Automatically generated by configure - do not modify!" > config.mak
1928echo "/* Automatically generated by configure - do not modify! */" > $TMPH
f255e0ab 1929echo "#define FFMPEG_CONFIGURATION "'"'"$FFMPEG_CONFIGURATION"'"' >> $TMPH
de6d9b64 1930
2266e085
DB
1931echo "PREFIX=$PREFIX" >> config.mak
1932echo "prefix=\$(DESTDIR)\${PREFIX}" >> config.mak
9a695e98 1933echo "libdir=\$(DESTDIR)$libdir" >> config.mak
84c22efd 1934echo "shlibdir=\$(DESTDIR)$shlibdir" >> config.mak
1d67a1d4 1935echo "incdir=\$(DESTDIR)$incdir" >> config.mak
9a695e98
DB
1936echo "bindir=\$(DESTDIR)$bindir" >> config.mak
1937echo "mandir=\$(DESTDIR)$mandir" >> config.mak
4a908fbc 1938echo "MAKE=$make" >> config.mak
980fc7b8
FB
1939echo "CC=$cc" >> config.mak
1940echo "AR=$ar" >> config.mak
be7109c1 1941echo "RANLIB=$ranlib" >> config.mak
90be59ef 1942if enabled dostrip; then
f25fc9b1 1943 echo "STRIP=$strip" >> config.mak
65d1bea2 1944else
f25fc9b1 1945 echo "STRIP=echo ignoring strip" >> config.mak
65d1bea2 1946fi
75388c74 1947
a9b3f630 1948echo "OPTFLAGS=$CFLAGS" >> config.mak
408382a4 1949echo "VHOOKCFLAGS=$VHOOKCFLAGS">>config.mak
0f3cb305 1950echo "LDFLAGS=$LDFLAGS" >> config.mak
f39e56a8 1951echo "LDCONFIG=$LDCONFIG" >> config.mak
c536cb09 1952echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
e1707f52 1953echo "SHFLAGS=$SHFLAGS" >> config.mak
408382a4 1954echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
fbb9d104 1955echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
80581e98 1956echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
b12f8273 1957echo "BUILD_STATIC=$lstatic" >> config.mak
eb94aca9 1958echo "BUILDSUF=$BUILDSUF" >> config.mak
f3ec2d46 1959echo "LIBPREF=$LIBPREF" >> config.mak
eb94aca9 1960echo "LIBSUF=\${BUILDSUF}$LIBSUF" >> config.mak
90be59ef 1961if enabled lstatic; then
320d060a 1962 echo "LIB=$LIB" >> config.mak
1a44a8b6
AS
1963else # Some Make complain if this variable does not exist.
1964 echo "LIB=" >> config.mak
320d060a 1965fi
f3ec2d46 1966echo "SLIBPREF=$SLIBPREF" >> config.mak
eb94aca9
CY
1967echo "SLIBSUF=\${BUILDSUF}$SLIBSUF" >> config.mak
1968echo "EXESUF=\${BUILDSUF}$EXESUF" >> config.mak
b2828252 1969echo "TARGET_OS=$targetos" >> config.mak
4dc62701
MR
1970
1971ucarch=`toupper $arch`
1972echo "TARGET_ARCH_${ucarch}=yes" >> config.mak
1973echo "#define ARCH_${ucarch} 1" >> $TMPH
1974
1975# special cases
1976case "$arch" in
1977 x86_32|x86_64)
1978 echo "TARGET_ARCH_X86=yes" >> config.mak
1979 echo "#define ARCH_X86 1" >> $TMPH
1980 ;;
1981 powerpc)
1982 if test "$POWERPCMODE" = "64bits"; then
1983 echo "#define POWERPC_MODE_64BITS 1" >> $TMPH
1984 fi
90be59ef 1985 if enabled powerpc_perf; then
4dc62701
MR
1986 echo "#define POWERPC_PERFORMANCE_REPORT 1" >> $TMPH
1987 fi
1988 ;;
1989 sparc64)
1990 echo "TARGET_ARCH_SPARC=yes" >> config.mak
1991 echo "#define ARCH_SPARC 1" >> $TMPH
1992 ;;
1993esac
1994
90be59ef 1995if enabled bigendian; then
0f3cb305
FB
1996 echo "WORDS_BIGENDIAN=yes" >> config.mak
1997 echo "#define WORDS_BIGENDIAN 1" >> $TMPH
91d1f1a4 1998fi
90be59ef 1999if enabled mmx; then
e82c5a8c 2000 echo "#define __CPU__ 586" >> $TMPH
de6d9b64 2001fi
44161118 2002
90be59ef 2003if enabled sdl; then
6a1a892f
FD
2004 echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
2005 echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
a86b921c 2006fi
90be59ef 2007if enabled texi2html; then
146ea952
NB
2008 echo "BUILD_DOC=yes" >> config.mak
2009fi
5a872801 2010
790c9ca7 2011sws_version=`grep '#define LIBSWSCALE_VERSION ' "$source_path/libswscale/swscale.h" | sed 's/[^0-9\.]//g'`
6d9a2421 2012pp_version=`grep '#define LIBPOSTPROC_VERSION ' "$source_path/libpostproc/postprocess.h" | sed 's/[^0-9\.]//g'`
5a872801
LB
2013lavc_version=`grep '#define LIBAVCODEC_VERSION ' "$source_path/libavcodec/avcodec.h" | sed 's/[^0-9\.]//g'`
2014lavf_version=`grep '#define LIBAVFORMAT_VERSION ' "$source_path/libavformat/avformat.h" | sed 's/[^0-9\.]//g'`
2015lavu_version=`grep '#define LIBAVUTIL_VERSION ' "$source_path/libavutil/avutil.h" | sed 's/[^0-9\.]//g'`
2016
2017
2018
90be59ef 2019if enabled lshared; then
0319c531 2020 echo "BUILD_SHARED=yes" >> config.mak
97006039 2021 echo "PIC=-fPIC -DPIC" >> config.mak
7e303556
DB
2022 echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
2023 echo "SPPVERSION=$pp_version" >> config.mak
39503a27 2024 echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
5a872801 2025 echo "LAVCVERSION=$lavc_version" >> config.mak
39503a27 2026 echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
5a872801 2027 echo "LAVFVERSION=$lavf_version" >> config.mak
39503a27 2028 echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
5a872801 2029 echo "LAVUVERSION=$lavu_version" >> config.mak
790c9ca7
LA
2030 echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
2031 echo "SWSVERSION=$sws_version" >> config.mak
4bdd05e7 2032 echo "SLIBNAME=${SLIBNAME}" >> config.mak
f3b60109
DB
2033 echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2034 echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
5cb854e1 2035 echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
8fbec4f4 2036 echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
0319c531 2037fi
d7e27559 2038echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
ef0bc4c9 2039echo "EXTRALIBS=$extralibs" >> config.mak
d2845d68 2040
44161118
MR
2041enabled_any $ENCODER_LIST && enable encoders
2042enabled_any $DECODER_LIST && enable decoders
2043enabled_any $MUXER_LIST && enable muxers
2044enabled_any $DEMUXER_LIST && enable demuxers
f956e129 2045
b265431e
MR
2046enabled_any pthreads beosthreads os2threads w32threads && enable threads
2047
30fd06be
MR
2048check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \
2049 $DEMUXER_LIST $MUXER_LIST
2050
44161118
MR
2051print_config HAVE_ $TMPH config.mak $HAVE_LIST
2052print_config CONFIG_ $TMPH config.mak $CONFIG_LIST
1ac9331a 2053print_config TARGET_ $TMPH config.mak $TARGET_LIST
8ac17293 2054
b2828252 2055if test "$targetos" = "Darwin"; then
90cee0c3 2056 echo "#define CONFIG_DARWIN 1" >> $TMPH
90cee0c3
MN
2057fi
2058
c13e1abd
FH
2059echo "#define restrict $_restrict" >> $TMPH
2060
bb801c97
MN
2061if test "$optimize" = "small"; then
2062 echo "#define always_inline" >> $TMPH
e5f28e8f 2063 echo "#define CONFIG_SMALL 1" >> $TMPH
bb801c97
MN
2064fi
2065
997baf01
MR
2066echo "SRC_PATH=\"$source_path\"" >> config.mak
2067echo "SRC_PATH_BARE=$source_path" >> config.mak
2068echo "BUILD_ROOT=\"$PWD\"" >> config.mak
0f3cb305 2069
90be59ef 2070if enabled amr_if2; then
2a515c08
TM
2071 echo "AMR_CFLAGS=-DIF2=1" >> config.mak
2072fi
2073
8156056e 2074# Apparently it's not possible to portably echo a backslash.
90be59ef 2075if enabled asmalign_pot; then
8156056e 2076 printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH
4454dc1b 2077else
8156056e 2078 printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH
4454dc1b
JD
2079fi
2080
bc634f6f 2081
55006fc0 2082for codec in $DECODER_LIST $ENCODER_LIST $PARSER_LIST $DEMUXER_LIST $MUXER_LIST; do
44161118 2083 ucname="`toupper $codec`"
a8d04fba
MR
2084 config_name="CONFIG_$ucname"
2085 enabled_name="ENABLE_$ucname"
2086 if enabled $codec; then
2087 echo "#define $config_name 1" >> $TMPH
2088 echo "#define $enabled_name 1" >> $TMPH
2089 echo "$config_name=yes" >> config.mak
2090 else
2091 echo "#define $enabled_name 0" >> $TMPH
2092 fi
009cf97d
MN
2093done
2094
9cb2cf10 2095# Do not overwrite config.h if unchanged to avoid superfluous rebuilds.
c683a5d1 2096if ! cmp -s $TMPH config.h; then
9cb2cf10
DB
2097 mv -f $TMPH config.h
2098else
2099 echo "config.h is unchanged"
2100fi
3d204385 2101
f3ec2d46 2102rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
def4272a 2103
165af439 2104# build tree in object directory if source path is different from current one
90be59ef 2105if enabled source_path_used; then
165af439
MR
2106 DIRS="\
2107 doc \
2108 libavformat \
2109 libavcodec \
2110 libavcodec/alpha \
2111 libavcodec/armv4l \
2112 libavcodec/bfin \
2113 libavcodec/i386 \
2114 libavcodec/sparc \
2115 libavcodec/mlib \
2116 libavcodec/ppc \
2117 libavcodec/liba52 \
3918dc4f
DB
2118 libavcodec/amr \
2119 libavcodec/amr_float \
2120 libavcodec/amrwb_float \
165af439
MR
2121 libpostproc \
2122 libavutil \
2123 libswscale \
2124 tests \
2125 vhook \
2126 "
2127 FILES="\
2128 Makefile \
2129 common.mak \
2130 libavformat/Makefile \
2131 libavcodec/Makefile \
2132 libpostproc/Makefile \
2133 libavutil/Makefile \
2134 libswscale/Makefile \
2135 tests/Makefile \
2136 vhook/Makefile \
2137 doc/Makefile \
2138 doc/texi2pod.pl \
2139 "
2140 for dir in $DIRS ; do
2141 mkdir -p $dir
2142 done
2143 for f in $FILES ; do
2144 ln -sf "$source_path/$f" $f
2145 done
2146fi
def4272a 2147
def4272a 2148
d0674868 2149# build pkg-config files
77aee36c 2150# FIXME: libdir and includedir are hardcoded and may differ from the real path.
def4272a 2151
d0674868
DB
2152pkgconfig_generate(){
2153name=$1
2154comment=$2
2155version=$3
2156libs=$4
2157requires=$5
2158include=$6
2159cat <<EOF >$name.pc
2266e085 2160prefix=$PREFIX
a94e666c 2161exec_prefix=\${prefix}
def4272a 2162libdir=\${exec_prefix}/lib
a94e666c 2163includedir=\${prefix}/include
def4272a 2164
d0674868
DB
2165Name: $name
2166Description: $comment
2167Version: $version
2168Requires: $requires
def4272a 2169Conflicts:
d0674868
DB
2170Libs: -L\${libdir} $libs
2171Cflags: -I\${includedir} -I\${includedir}/$include
def4272a 2172EOF
d0674868 2173}
def4272a 2174
d0674868
DB
2175pkgconfig_generate_uninstalled(){
2176name=$1
9c476fd6 2177shortname=${name#lib}
d0674868
DB
2178comment=$2
2179version=$3
2180libs=$4
2181requires=$5
2182cat <<EOF >$name-uninstalled.pc
def4272a
AJ
2183prefix=
2184exec_prefix=
d0674868
DB
2185libdir=\${pcfiledir}/$name
2186includedir=\${pcfiledir}/$name
def4272a 2187
d0674868
DB
2188Name: $name
2189Description: $comment
2190Version: $version
2191Requires: $requires
def4272a 2192Conflicts:
d0674868 2193Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
def4272a
AJ
2194Cflags: -I\${includedir}
2195EOF
d0674868 2196}
def4272a 2197
9d824ad1 2198pkgconfig_generate libavutil "FFmpeg utility library" "$lavu_version" -lavutil "" ffmpeg
d0674868 2199pkgconfig_generate_uninstalled libavutil "FFmpeg utility library" "$lavu_version"
def4272a 2200
d0674868
DB
2201pkgconfig_generate libavcodec "FFmpeg codec library" "$lavc_version" "-lavcodec $extralibs" "$pkg_requires libavutil = $lavu_version" ffmpeg
2202pkgconfig_generate_uninstalled libavcodec "FFmpeg codec library" "$lavc_version" "$extralibs" "$pkg_requires libavutil = $lavu_version"
def4272a 2203
d0674868
DB
2204pkgconfig_generate libavformat "FFmpeg container format library" "$lavf_version" "-lavformat $extralibs" "$pkg_requires libavcodec = $lavc_version" ffmpeg
2205pkgconfig_generate_uninstalled libavformat "FFmpeg container format library" "$lavf_version" "$extralibs" "$pkg_requires libavcodec = $lavc_version"
def4272a 2206
90be59ef 2207if enabled pp; then
2e3bcd38
DB
2208 pkgconfig_generate libpostproc "FFmpeg post processing library" "$pp_version" -lpostproc "" postproc
2209 pkgconfig_generate_uninstalled libpostproc "FFmpeg post processing library" "$pp_version"
2210fi
790c9ca7 2211
c839db53 2212if enabled swscaler; then
20c516c6
DM
2213 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "-lswscale" "libavutil = $lavu_version" swscale
2214 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "libavutil = $lavu_version"
6c0d0413 2215else
d0674868
DB
2216 pkgconfig_generate libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version" swscale
2217 pkgconfig_generate_uninstalled libswscale "FFmpeg image rescaling library" "$sws_version" "" "$pkg_requires libavcodec = $lavc_version"
c505dd31
MR
2218 apply libswscale.pc sed s/^Libs:.*$/Libs:/
2219 apply libswscale-uninstalled.pc sed s/^Libs:.*$/Libs:/
6c0d0413 2220fi