Statistics
| Branch: | Revision:

ffmpeg / configure @ b4f93564

History | View | Annotate | Download (82.7 KB)

1 aeb29222 Måns Rullgård
#!/bin/sh
2 0f3cb305 Fabrice Bellard
#
3 f57620d5 Måns Rullgård
# FFmpeg configure script
4
#
5 949906ea Diego Biurrun
# Copyright (c) 2000-2002 Fabrice Bellard
6
# Copyright (c) 2005-2008 Diego Biurrun
7
# Copyright (c) 2005-2008 Mans Rullgard
8 0f3cb305 Fabrice Bellard
#
9 cf9d24ad Dan Christiansen
10 31e647f8 Diego Biurrun
# Prevent locale nonsense from breaking basic text processing.
11 79ab96ba Diego Biurrun
LC_ALL=C
12
export LC_ALL
13 31e647f8 Diego Biurrun
14 cde2d79a Måns Rullgård
# make sure we are running under a compatible shell
15 c21d6325 Måns Rullgård
# try to make this part work with most shells
16
17
try_exec(){
18 0dbe81bb Måns Rullgård
    echo "Trying shell $1"
19 2270b4b2 Diego Biurrun
    type "$1" > /dev/null 2>&1 && exec "$@"
20 c21d6325 Måns Rullgård
}
21
22 5237ce67 Måns Rullgård
unset foo
23 2270b4b2 Diego Biurrun
(: ${foo%%bar}) 2> /dev/null
24 0dbe81bb Måns Rullgård
E1="$?"
25
26 2270b4b2 Diego Biurrun
(: ${foo?}) 2> /dev/null
27 0dbe81bb Måns Rullgård
E2="$?"
28
29
if test "$E1" != 0 || test "$E2" = 0; then
30
    echo "Broken shell detected.  Trying alternatives."
31 c21d6325 Måns Rullgård
    export FF_CONF_EXEC
32
    if test "0$FF_CONF_EXEC" -lt 1; then
33
        FF_CONF_EXEC=1
34
        try_exec bash "$0" "$@"
35
    fi
36
    if test "0$FF_CONF_EXEC" -lt 2; then
37
        FF_CONF_EXEC=2
38
        try_exec ksh "$0" "$@"
39
    fi
40
    if test "0$FF_CONF_EXEC" -lt 3; then
41
        FF_CONF_EXEC=3
42
        try_exec /usr/xpg4/bin/sh "$0" "$@"
43 cde2d79a Måns Rullgård
    fi
44
    echo "No compatible shell script interpreter found."
45 fc53da20 Diego Biurrun
    echo "This configure script requires a POSIX-compatible shell"
46 c21d6325 Måns Rullgård
    echo "such as bash or ksh."
47 505dfb09 Diego Biurrun
    echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
48
    echo "Instead, install a working POSIX-compatible shell."
49
    echo "Disabling this configure test will create a broken FFmpeg."
50 c21d6325 Måns Rullgård
    if test "$BASH_VERSION" = '2.04.0(1)-release'; then
51
        echo "This bash version ($BASH_VERSION) is broken on your platform."
52
        echo "Upgrade to a later version if available."
53
    fi
54 cde2d79a Måns Rullgård
    exit 1
55
fi
56
57 74c53c2d Måns Rullgård
show_help(){
58
  echo "Usage: configure [options]"
59
  echo "Options: [defaults in brackets after descriptions]"
60
  echo
61
  echo "Standard options:"
62
  echo "  --help                   print this message"
63 8c6afa4d Diego Biurrun
  echo "  --logfile=FILE           log tests and output to FILE [config.err]"
64
  echo "  --disable-logging        do not log configure debug information"
65 3e89171a Måns Rullgård
  echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
66 d156bede Diego Biurrun
  echo "  --bindir=DIR             install binaries in DIR [PREFIX/bin]"
67 14a8acf1 Måns Rullgård
  echo "  --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]"
68 74c53c2d Måns Rullgård
  echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
69 84c22efd Diego Biurrun
  echo "  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]"
70 5341d856 Diego Biurrun
  echo "  --incdir=DIR             install includes in DIR [PREFIX/include]"
71 4ca5ece5 Stefano Sabatini
  echo "  --mandir=DIR             install man page in DIR [PREFIX/share/man]"
72 62560865 Diego Biurrun
  echo
73
  echo "Configuration options:"
74 e6b9d588 Diego Biurrun
  echo "  --disable-static         do not build static libraries [no]"
75
  echo "  --enable-shared          build shared libraries [no]"
76 0a23c0bb Diego Biurrun
  echo "  --enable-gpl             allow use of GPL code, the resulting libs"
77
  echo "                           and binaries will be under GPL [no]"
78 9cad0e4e Diego Biurrun
  echo "  --enable-version3        upgrade (L)GPL to version 3 [no]"
79 0a23c0bb Diego Biurrun
  echo "  --enable-nonfree         allow use of nonfree code, the resulting libs"
80
  echo "                           and binaries will be unredistributable [no]"
81 c73f65d9 Måns Rullgård
  echo "  --disable-doc            do not build documentation"
82 62560865 Diego Biurrun
  echo "  --disable-ffmpeg         disable ffmpeg build"
83
  echo "  --disable-ffplay         disable ffplay build"
84
  echo "  --disable-ffserver       disable ffserver build"
85 e6b9d588 Diego Biurrun
  echo "  --enable-postproc        enable GPLed postprocessing support [no]"
86 fdf11906 Diego Biurrun
  echo "  --enable-avfilter        video filter support [no]"
87 0a23c0bb Diego Biurrun
  echo "  --enable-avfilter-lavf   video filters dependent on avformat [no]"
88 e6b9d588 Diego Biurrun
  echo "  --enable-beosthreads     use BeOS threads [no]"
89
  echo "  --enable-os2threads      use OS/2 threads [no]"
90
  echo "  --enable-pthreads        use pthreads [no]"
91
  echo "  --enable-w32threads      use Win32 threads [no]"
92
  echo "  --enable-x11grab         enable X11 grabbing [no]"
93 62560865 Diego Biurrun
  echo "  --disable-network        disable network support [no]"
94
  echo "  --disable-ipv6           disable IPv6 support [no]"
95
  echo "  --disable-mpegaudio-hp   faster (but less accurate) MPEG audio decoding [no]"
96
  echo "  --enable-gray            enable full grayscale support (slower color)"
97 a9ddb5b1 Cédric Schieli
  echo "  --disable-swscale-alpha  disable alpha channel support in swscale"
98 aa033b1e Måns Rullgård
  echo "  --disable-fastdiv        disable table-based division"
99 62560865 Diego Biurrun
  echo "  --enable-small           optimize for size instead of speed"
100
  echo "  --disable-aandct         disable AAN DCT code"
101
  echo "  --disable-fft            disable FFT code"
102
  echo "  --disable-golomb         disable Golomb code"
103 f4d608e3 Justin Ruggles
  echo "  --disable-lpc            disable LPC code"
104 62560865 Diego Biurrun
  echo "  --disable-mdct           disable MDCT code"
105 68602540 Alex Converse
  echo "  --disable-rdft           disable RDFT code"
106 17492d5e Diego Biurrun
  echo "  --disable-vaapi          disable VAAPI code"
107
  echo "  --disable-vdpau          disable VDPAU code"
108 e90f5b5a Ramiro Polla
  echo "  --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)"
109 62560865 Diego Biurrun
  echo "  --enable-hardcoded-tables use hardcoded tables instead of runtime generation"
110
  echo "  --enable-memalign-hack   emulate memalign, interferes with memory debuggers"
111
  echo "  --enable-beos-netserver  enable BeOS netserver"
112
  echo "  --disable-encoder=NAME   disable encoder NAME"
113
  echo "  --enable-encoder=NAME    enable encoder NAME"
114
  echo "  --disable-encoders       disable all encoders"
115
  echo "  --disable-decoder=NAME   disable decoder NAME"
116
  echo "  --enable-decoder=NAME    enable decoder NAME"
117
  echo "  --disable-decoders       disable all decoders"
118 5666fd73 Gwenole Beauchesne
  echo "  --disable-hwaccel=NAME   disable hwaccel NAME"
119
  echo "  --enable-hwaccel=NAME    enable hwaccel NAME"
120
  echo "  --disable-hwaccels       disable all hwaccels"
121 62560865 Diego Biurrun
  echo "  --disable-muxer=NAME     disable muxer NAME"
122
  echo "  --enable-muxer=NAME      enable muxer NAME"
123
  echo "  --disable-muxers         disable all muxers"
124
  echo "  --disable-demuxer=NAME   disable demuxer NAME"
125
  echo "  --enable-demuxer=NAME    enable demuxer NAME"
126
  echo "  --disable-demuxers       disable all demuxers"
127
  echo "  --enable-parser=NAME     enable parser NAME"
128
  echo "  --disable-parser=NAME    disable parser NAME"
129
  echo "  --disable-parsers        disable all parsers"
130
  echo "  --enable-bsf=NAME        enable bitstream filter NAME"
131
  echo "  --disable-bsf=NAME       disable bitstream filter NAME"
132
  echo "  --disable-bsfs           disable all bitstream filters"
133
  echo "  --enable-protocol=NAME   enable protocol NAME"
134
  echo "  --disable-protocol=NAME  disable protocol NAME"
135
  echo "  --disable-protocols      disable all protocols"
136 38e54a75 Stefano Sabatini
  echo "  --disable-indev=NAME     disable input device NAME"
137
  echo "  --disable-outdev=NAME    disable output device NAME"
138 62560865 Diego Biurrun
  echo "  --disable-indevs         disable input devices"
139
  echo "  --disable-outdevs        disable output devices"
140
  echo "  --disable-devices        disable all devices"
141
  echo "  --enable-filter=NAME     enable filter NAME"
142
  echo "  --disable-filter=NAME    disable filter NAME"
143
  echo "  --disable-filters        disable all filters"
144
  echo "  --list-decoders          show all available decoders"
145
  echo "  --list-encoders          show all available encoders"
146 5666fd73 Gwenole Beauchesne
  echo "  --list-hwaccels          show all available hardware accelerators"
147 62560865 Diego Biurrun
  echo "  --list-muxers            show all available muxers"
148
  echo "  --list-demuxers          show all available demuxers"
149
  echo "  --list-parsers           show all available parsers"
150
  echo "  --list-protocols         show all available protocols"
151
  echo "  --list-bsfs              show all available bitstream filters"
152
  echo "  --list-indevs            show all available input devices"
153
  echo "  --list-outdevs           show all available output devices"
154
  echo "  --list-filters           show all available filters"
155 0a622b98 Måns Rullgård
  echo
156
  echo "External library support:"
157 0a23c0bb Diego Biurrun
  echo "  --enable-avisynth        enable reading of AVISynth script files [no]"
158 27cb5cbc Carl Eugen Hoyos
  echo "  --enable-bzlib           enable bzlib [autodetect]"
159 0b175caa Diego Biurrun
  echo "  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]"
160
  echo "  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]"
161 f7b8bffe Ramiro Polla
  echo "  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394"
162 e6b9d588 Diego Biurrun
  echo "                           and libraw1394 [no]"
163
  echo "  --enable-libdirac        enable Dirac support via libdirac [no]"
164
  echo "  --enable-libfaac         enable FAAC support via libfaac [no]"
165
  echo "  --enable-libfaad         enable FAAD support via libfaad [no]"
166
  echo "  --enable-libfaadbin      open libfaad.so.0 at runtime [no]"
167
  echo "  --enable-libgsm          enable GSM support via libgsm [no]"
168
  echo "  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]"
169 31235134 Diego Biurrun
  echo "  --enable-libnut          enable NUT (de)muxing via libnut,"
170 0a23c0bb Diego Biurrun
  echo "                           native (de)muxer exists [no]"
171 9a77d59a Jai Menon
  echo "  --enable-libopenjpeg     enable JPEG 2000 decoding via OpenJPEG [no]"
172 e6b9d588 Diego Biurrun
  echo "  --enable-libschroedinger enable Dirac support via libschroedinger [no]"
173
  echo "  --enable-libspeex        enable Speex decoding via libspeex [no]"
174
  echo "  --enable-libtheora       enable Theora encoding via libtheora [no]"
175 f9def9cc Diego Biurrun
  echo "  --enable-libvorbis       enable Vorbis encoding via libvorbis,"
176 e6b9d588 Diego Biurrun
  echo "                           native implementation exists [no]"
177
  echo "  --enable-libx264         enable H.264 encoding via x264 [no]"
178 1cc60c47 Diego Biurrun
  echo "  --enable-libxvid         enable Xvid encoding via xvidcore,"
179 e6b9d588 Diego Biurrun
  echo "                           native MPEG-4/Xvid encoder exists [no]"
180 732c9a34 Diego Biurrun
  echo "  --enable-mlib            enable Sun medialib [no]"
181 27cb5cbc Carl Eugen Hoyos
  echo "  --enable-zlib            enable zlib [autodetect]"
182 74c53c2d Måns Rullgård
  echo ""
183
  echo "Advanced options (experts only):"
184
  echo "  --source-path=PATH       path to source code [$source_path]"
185
  echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]"
186 db6107b6 Diego Biurrun
  echo "  --enable-cross-compile   assume a cross-compiler is used"
187 c5200f17 Måns Rullgård
  echo "  --sysroot=PATH           root of cross-build tree"
188
  echo "  --sysinclude=PATH        location of cross-build system headers"
189 4f854758 Diego Biurrun
  echo "  --target-os=OS           compiler targets OS [$target_os]"
190 a7ada2ba Måns Rullgård
  echo "  --target-exec=CMD        command to run executables on target"
191
  echo "  --target-path=DIR        path to view of build directory on target"
192 89641463 Reimar Döffinger
  echo "  --nm=NM                  use nm tool"
193 313c46a6 Måns Rullgård
  echo "  --as=AS                  use assembler AS [$as_default]"
194 15396d5c Diego Biurrun
  echo "  --cc=CC                  use C compiler CC [$cc_default]"
195 684b28e0 Måns Rullgård
  echo "  --ld=LD                  use linker LD"
196 9da6609f Måns Rullgård
  echo "  --host-cc=HOSTCC         use host C compiler HOSTCC"
197
  echo "  --host-cflags=HCFLAGS    use HCFLAGS when compiling for host"
198
  echo "  --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host"
199
  echo "  --host-libs=HLIBS        use libs HLIBS when linking for host"
200 74c53c2d Måns Rullgård
  echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
201
  echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
202
  echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
203 ac63af34 Diego Biurrun
  echo "  --extra-version=STRING   version string suffix []"
204 0a23c0bb Diego Biurrun
  echo "  --build-suffix=SUFFIX    library name suffix []"
205
  echo "  --arch=ARCH              select architecture [$arch]"
206
  echo "  --cpu=CPU                select the minimum required CPU (affects"
207 7c758d33 Diego Biurrun
  echo "                           instruction selection, may crash on older CPUs)"
208 2b4c3615 Måns Rullgård
  echo "  --enable-powerpc-perf    enable performance report on PPC"
209 74c53c2d Måns Rullgård
  echo "                           (requires enabling PMC)"
210 4f50c3d5 Diego Biurrun
  echo "  --disable-altivec        disable AltiVec optimizations"
211 3bf96eec Diego Biurrun
  echo "  --disable-amd3dnow       disable 3DNow! optimizations"
212 a1ef9f08 Diego Biurrun
  echo "  --disable-amd3dnowext    disable 3DNow! extended optimizations"
213 0a23c0bb Diego Biurrun
  echo "  --disable-mmx            disable MMX optimizations"
214
  echo "  --disable-mmx2           disable MMX2 optimizations"
215 1bb04d5a Ramiro Polla
  echo "  --disable-sse            disable SSE optimizations"
216 0a23c0bb Diego Biurrun
  echo "  --disable-ssse3          disable SSSE3 optimizations"
217
  echo "  --disable-armv5te        disable armv5te optimizations"
218
  echo "  --disable-armv6          disable armv6 optimizations"
219 26c7aa17 Diego Biurrun
  echo "  --disable-armv6t2        disable armv6t2 optimizations"
220 3bbcba32 Diego Biurrun
  echo "  --disable-armvfp         disable ARM VFP optimizations"
221 0a23c0bb Diego Biurrun
  echo "  --disable-iwmmxt         disable iwmmxt optimizations"
222 49276307 Diego Biurrun
  echo "  --disable-mmi            disable MMI optimizations"
223
  echo "  --disable-neon           disable neon optimizations"
224
  echo "  --disable-vis            disable VIS optimizations"
225 7595a5e4 Måns Rullgård
  echo "  --disable-yasm           disable use of yasm assembler"
226 8a3c8627 Måns Rullgård
  echo "  --enable-pic             build position-independent code"
227 0a622b98 Måns Rullgård
  echo
228
  echo "Developer options (useful when working on FFmpeg itself):"
229 9c56a1f9 Diego Biurrun
  echo "  --disable-debug          disable debugging symbols"
230 b7d49373 Stefano Sabatini
  echo "  --enable-debug=LEVEL     set the debug level [$debuglevel]"
231 0a622b98 Måns Rullgård
  echo "  --enable-gprof           enable profiling with gprof [$gprof]"
232 d2bbb2f7 Diego Biurrun
  echo "  --disable-optimizations  disable compiler optimizations"
233 0a622b98 Måns Rullgård
  echo "  --enable-extra-warnings  enable more compiler warnings"
234 87a0fb62 Diego Biurrun
  echo "  --disable-stripping      disable stripping of executables and shared libraries"
235 74c53c2d Måns Rullgård
  echo ""
236
  echo "NOTE: Object files are built at the place where configure is launched."
237 60e8bc13 Stefano Sabatini
  exit 0
238 74c53c2d Måns Rullgård
}
239 cf9d24ad Dan Christiansen
240 57bd82d4 Måns Rullgård
log(){
241 2270b4b2 Diego Biurrun
    echo "$@" >> $logfile
242 57bd82d4 Måns Rullgård
}
243
244 720c69da Måns Rullgård
log_file(){
245 c8e9f801 Måns Rullgård
    log BEGIN $1
246 2270b4b2 Diego Biurrun
    pr -n -t $1 >> $logfile
247 c8e9f801 Måns Rullgård
    log END $1
248
}
249
250 2ba042a7 Måns Rullgård
echolog(){
251 c8e9f801 Måns Rullgård
    log "$@"
252 57bd82d4 Måns Rullgård
    echo "$@"
253 2ba042a7 Måns Rullgård
}
254
255
die(){
256
    echolog "$@"
257
    cat <<EOF
258 d326cf7f Diego Biurrun
259 2ba042a7 Måns Rullgård
If you think configure made a mistake, make sure you are using the latest
260
version from SVN.  If the latest version fails, report the problem to the
261 e5d8ccd7 Måns Rullgård
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
262 2ba042a7 Måns Rullgård
EOF
263 e155a21a Diego Biurrun
    if disabled logging; then
264 2ba042a7 Måns Rullgård
        cat <<EOF
265 e155a21a Diego Biurrun
Rerun configure with logging enabled (do not use --disable-logging), and
266
include the log this produces with your report.
267 2ba042a7 Måns Rullgård
EOF
268
    else
269
cat <<EOF
270 e155a21a Diego Biurrun
Include the log file "$logfile" produced by configure as this will help
271
solving the problem.
272 2ba042a7 Måns Rullgård
EOF
273
    fi
274 57bd82d4 Måns Rullgård
    exit 1
275
}
276
277 6c6007d6 Diego Biurrun
# Avoid locale weirdness, besides we really just want to translate ASCII.
278 44161118 Måns Rullgård
toupper(){
279 6c6007d6 Diego Biurrun
    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
280 44161118 Måns Rullgård
}
281
282 4a5444db Måns Rullgård
tolower(){
283 6c6007d6 Diego Biurrun
    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
284 4a5444db Måns Rullgård
}
285
286 14a8acf1 Måns Rullgård
c_escape(){
287
    echo "$*" | sed 's/["\\]/\\\0/g'
288
}
289
290 b04251c5 Måns Rullgård
sh_quote(){
291
    v=$(echo "$1" | sed "s/'/'\\\\''/g")
292
    test "$v" = "${v#*[ |&;<>()$\`\\\"\'*?\[\]#~=%]}" || v="'$v'"
293
    echo "$v"
294
}
295
296 be8f2501 Måns Rullgård
filter(){
297
    pat=$1
298
    shift
299
    for v; do
300 98ef6079 Måns Rullgård
        eval "case $v in $pat) echo $v ;; esac"
301 be8f2501 Måns Rullgård
    done
302
}
303
304 a8d04fba Måns Rullgård
set_all(){
305
    value=$1
306
    shift
307
    for var in $*; do
308
        eval $var=$value
309
    done
310
}
311
312 72a43668 Måns Rullgård
set_weak(){
313
    value=$1
314
    shift
315
    for var; do
316
        eval : \${$var:=$value}
317
    done
318
}
319
320 799c9e9b Måns Rullgård
pushvar(){
321
    for var in $*; do
322
        eval level=\${${var}_level:=0}
323
        eval ${var}_${level}="\$$var"
324
        eval ${var}_level=$(($level+1))
325
    done
326
}
327
328
popvar(){
329
    for var in $*; do
330
        eval level=\${${var}_level:-0}
331
        test $level = 0 && continue
332
        eval level=$(($level-1))
333
        eval $var="\${${var}_${level}}"
334
        eval ${var}_level=$level
335
        eval unset ${var}_${level}
336
    done
337
}
338
339 a8d04fba Måns Rullgård
enable(){
340
    set_all yes $*
341
}
342
343
disable(){
344
    set_all no $*
345
}
346
347 72a43668 Måns Rullgård
enable_weak(){
348
    set_weak yes $*
349
}
350
351
disable_weak(){
352
    set_weak no $*
353
}
354
355 72702705 Måns Rullgård
enable_safe(){
356
    enable $(echo "$*" | sed 's/[^A-Za-z0-9_ ]/_/g')
357
}
358
359
disable_safe(){
360
    disable $(echo "$*" | sed 's/[^A-Za-z0-9_ ]/_/g')
361
}
362
363 f9d328da Måns Rullgård
do_enable_deep(){
364
    for var; do
365
        enabled $var && continue
366
        eval sel="\$${var}_select"
367 c510c7b5 Måns Rullgård
        eval sgs="\$${var}_suggest"
368
        pushvar var sgs
369 f9d328da Måns Rullgård
        enable_deep $sel
370 c510c7b5 Måns Rullgård
        popvar sgs
371
        enable_deep_weak $sgs
372 f9d328da Måns Rullgård
        popvar var
373
    done
374
}
375
376
enable_deep(){
377
    do_enable_deep $*
378
    enable $*
379
}
380
381 72a43668 Måns Rullgård
enable_deep_weak(){
382
    do_enable_deep $*
383
    enable_weak $*
384
}
385
386 57bd82d4 Måns Rullgård
enabled(){
387 3250003c Måns Rullgård
    test "${1#!}" = "$1" && op== || op=!=
388
    eval test "x\$${1#!}" $op "xyes"
389 44161118 Måns Rullgård
}
390
391 37970ebf Ramiro Polla
disabled(){
392 3250003c Måns Rullgård
    test "${1#!}" = "$1" && op== || op=!=
393
    eval test "x\$${1#!}" $op "xno"
394 37970ebf Ramiro Polla
}
395
396 44161118 Måns Rullgård
enabled_all(){
397
    for opt; do
398
        enabled $opt || return 1
399
    done
400
}
401
402 85bca2c5 Diego Biurrun
disabled_all(){
403
    for opt; do
404
        disabled $opt || return 1
405
    done
406
}
407
408 44161118 Måns Rullgård
enabled_any(){
409
    for opt; do
410
        enabled $opt && return 0
411
    done
412
}
413
414 85bca2c5 Diego Biurrun
disabled_any(){
415
    for opt; do
416
        disabled $opt && return 0
417
    done
418 f7b230a7 Måns Rullgård
    return 1
419 85bca2c5 Diego Biurrun
}
420
421 c9d19248 Måns Rullgård
set_default(){
422
    for opt; do
423 88268e94 Måns Rullgård
        eval : \${$opt:=\$${opt}_default}
424 c9d19248 Måns Rullgård
    done
425
}
426
427 4a0d6686 Aurelien Jacobs
is_in(){
428
    value=$1
429
    shift
430
    for var in $*; do
431
        [ $var = $value ] && return 0
432
    done
433
    return 1
434
}
435
436 30fd06be Måns Rullgård
check_deps(){
437
    for cfg; do
438 3250003c Måns Rullgård
        cfg="${cfg#!}"
439 799c9e9b Måns Rullgård
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
440
        disabled ${cfg}_checking && continue
441
        enable ${cfg}_checking
442
443 30fd06be Måns Rullgård
        eval dep_all="\$${cfg}_deps"
444
        eval dep_any="\$${cfg}_deps_any"
445 7ef3425f Måns Rullgård
        eval dep_sel="\$${cfg}_select"
446 c510c7b5 Måns Rullgård
        eval dep_sgs="\$${cfg}_suggest"
447 799c9e9b Måns Rullgård
448 c510c7b5 Måns Rullgård
        pushvar cfg dep_all dep_any dep_sel dep_sgs
449
        check_deps $dep_all $dep_any $dep_sel $dep_sgs
450
        popvar cfg dep_all dep_any dep_sel dep_sgs
451 799c9e9b Måns Rullgård
452 6a702d4c Måns Rullgård
        enabled_all  $dep_all || disable $cfg
453
        enabled_any  $dep_any || disable $cfg
454 7ef3425f Måns Rullgård
        disabled_any $dep_sel && disable $cfg
455 799c9e9b Måns Rullgård
456 4ec45764 Ramiro Polla
        if enabled $cfg; then
457
            eval dep_extralibs="\$${cfg}_extralibs"
458
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
459 f9d328da Måns Rullgård
            enable_deep $dep_sel
460 c510c7b5 Måns Rullgård
            enable_deep_weak $dep_sgs
461 4ec45764 Ramiro Polla
        fi
462
463 799c9e9b Måns Rullgård
        disable ${cfg}_checking
464 30fd06be Måns Rullgård
    done
465
}
466
467 44161118 Måns Rullgård
print_config(){
468
    pfx=$1
469
    header=$2
470
    makefile=$3
471
    shift 3
472
    for cfg; do
473 5e622c40 Diego Biurrun
        ucname="$(toupper $cfg)"
474 44161118 Måns Rullgård
        if enabled $cfg; then
475 3d907e22 Måns Rullgård
            echo "#define ${pfx}${ucname} 1" >> $header
476
            echo "${pfx}${ucname}=yes" >> $makefile
477
        else
478 b250f9c6 Aurelien Jacobs
            echo "#define ${pfx}${ucname} 0" >> $header
479 44161118 Måns Rullgård
        fi
480
    done
481 57bd82d4 Måns Rullgård
}
482
483
flags_saved(){
484 2270b4b2 Diego Biurrun
    (: ${SAVE_CFLAGS?}) 2> /dev/null
485 57bd82d4 Måns Rullgård
}
486
487 dcd479c0 Måns Rullgård
save_flags(){
488 57bd82d4 Måns Rullgård
    flags_saved && return
489 dcd479c0 Måns Rullgård
    SAVE_CFLAGS="$CFLAGS"
490
    SAVE_LDFLAGS="$LDFLAGS"
491
    SAVE_extralibs="$extralibs"
492
}
493
494
restore_flags(){
495 f5d28d10 Måns Rullgård
    flags_saved || return
496 dcd479c0 Måns Rullgård
    CFLAGS="$SAVE_CFLAGS"
497
    LDFLAGS="$SAVE_LDFLAGS"
498
    extralibs="$SAVE_extralibs"
499
    unset SAVE_CFLAGS
500
    unset SAVE_LDFLAGS
501
    unset SAVE_extralibs
502
}
503
504
temp_cflags(){
505
    save_flags
506
    CFLAGS="$CFLAGS $*"
507
}
508
509
temp_ldflags(){
510
    save_flags
511
    LDFLAGS="$LDFLAGS $*"
512
}
513
514
temp_extralibs(){
515
    save_flags
516
    extralibs="$extralibs $*"
517
}
518
519 57bd82d4 Måns Rullgård
append(){
520
    var=$1
521
    shift
522
    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
523
    eval "$var=\"\$$var $*\""
524
}
525
526 50a334e4 Måns Rullgård
add_cppflags(){
527 caf458dd Måns Rullgård
    append CPPFLAGS $($filter_cppflags "$@")
528 50a334e4 Måns Rullgård
}
529
530 57bd82d4 Måns Rullgård
add_cflags(){
531 caf458dd Måns Rullgård
    append CFLAGS $($filter_cflags "$@")
532 57bd82d4 Måns Rullgård
}
533
534 2f2e6c7c Måns Rullgård
add_asflags(){
535 caf458dd Måns Rullgård
    append ASFLAGS $($filter_asflags "$@")
536 2f2e6c7c Måns Rullgård
}
537
538 57bd82d4 Måns Rullgård
add_ldflags(){
539
    append LDFLAGS "$@"
540
}
541
542
add_extralibs(){
543
    append extralibs "$@"
544
}
545
546 b0cfb663 Måns Rullgård
check_cmd(){
547 b3cb5d51 Måns Rullgård
    log "$@"
548 2270b4b2 Diego Biurrun
    "$@" >> $logfile 2>&1
549 b0cfb663 Måns Rullgård
}
550
551 dcd479c0 Måns Rullgård
check_cc(){
552 57bd82d4 Måns Rullgård
    log check_cc "$@"
553 2270b4b2 Diego Biurrun
    cat > $TMPC
554 720c69da Måns Rullgård
    log_file $TMPC
555 50a334e4 Måns Rullgård
    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC
556 57bd82d4 Måns Rullgård
}
557
558
check_cpp(){
559
    log check_cpp "$@"
560 2270b4b2 Diego Biurrun
    cat > $TMPC
561 720c69da Måns Rullgård
    log_file $TMPC
562 9e7f3277 Måns Rullgård
    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC
563 dcd479c0 Måns Rullgård
}
564
565 f65883c8 Måns Rullgård
check_as(){
566
    log check_as "$@"
567
    cat > $TMPC
568
    log_file $TMPC
569 2f2e6c7c Måns Rullgård
    check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC
570 f65883c8 Måns Rullgård
}
571
572 940f335a Måns Rullgård
check_asm(){
573
    log check_asm "$@"
574
    name="$1"
575
    asm="$2"
576
    shift 2
577 49214f61 Måns Rullgård
    disable $name
578
    check_as "$@" <<EOF && enable $name
579 124c21d7 Marc Mason
void foo(void){ __asm__ volatile($asm); }
580 940f335a Måns Rullgård
EOF
581
}
582
583 304d586d Loren Merritt
check_yasm(){
584
    log check_yasm "$@"
585
    echo "$1" > $TMPS
586
    log_file $TMPS
587
    shift 1
588
    check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
589
}
590
591 dcd479c0 Måns Rullgård
check_ld(){
592 57bd82d4 Måns Rullgård
    log check_ld "$@"
593 0607887f Måns Rullgård
    check_cc || return
594 3155a644 Måns Rullgård
    flags=''
595
    libs=''
596
    for f; do
597
        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
598
    done
599 684b28e0 Måns Rullgård
    check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
600 dcd479c0 Måns Rullgård
}
601
602 50a334e4 Måns Rullgård
check_cppflags(){
603
    log check_cppflags "$@"
604 caf458dd Måns Rullgård
    set -- $($filter_cppflags "$@")
605
    check_cc "$@" <<EOF && append CPPFLAGS "$@"
606 50a334e4 Måns Rullgård
int x;
607
EOF
608
}
609
610 dcd479c0 Måns Rullgård
check_cflags(){
611 57bd82d4 Måns Rullgård
    log check_cflags "$@"
612 caf458dd Måns Rullgård
    set -- $($filter_cflags "$@")
613
    check_cc "$@" <<EOF && append CFLAGS "$@"
614 dcd479c0 Måns Rullgård
int x;
615
EOF
616
}
617
618
check_ldflags(){
619 57bd82d4 Måns Rullgård
    log check_ldflags "$@"
620
    check_ld "$@" <<EOF && add_ldflags "$@"
621 c23a0ac8 Diego Biurrun
int main(void){ return 0; }
622 dcd479c0 Måns Rullgård
EOF
623
}
624
625
check_header(){
626 57bd82d4 Måns Rullgård
    log check_header "$@"
627 dcd479c0 Måns Rullgård
    header=$1
628
    shift
629 b77df637 Måns Rullgård
    disable_safe $header
630
    check_cpp "$@" <<EOF && enable_safe $header
631 dcd479c0 Måns Rullgård
#include <$header>
632
int x;
633
EOF
634
}
635
636
check_func(){
637 57bd82d4 Måns Rullgård
    log check_func "$@"
638 dcd479c0 Måns Rullgård
    func=$1
639
    shift
640 d8bc5f06 Måns Rullgård
    disable $func
641
    check_ld "$@" <<EOF && enable $func
642 dcd479c0 Måns Rullgård
extern int $func();
643 c23a0ac8 Diego Biurrun
int main(void){ $func(); }
644 dcd479c0 Måns Rullgård
EOF
645
}
646
647 2446d3d6 Diego Biurrun
check_func_headers(){
648
    log check_func_headers "$@"
649 f8d7b072 Måns Rullgård
    headers=$1
650
    func=$2
651
    shift 2
652
    disable $func
653
    incs=""
654
    for hdr in $headers; do
655
        incs="$incs
656
#include <$hdr>"
657
    done
658 cd0d9a9d Måns Rullgård
    check_ld "$@" <<EOF && enable $func && enable_safe $headers
659 f8d7b072 Måns Rullgård
$incs
660 d6773f56 Diego Biurrun
int main(int argc, char **argv){
661 2b2c2a81 Martin Storsjö
    return (long) $func;
662 f8d7b072 Måns Rullgård
}
663
EOF
664
}
665
666 a5344cf7 Stefano Sabatini
check_cpp_condition(){
667
    log check_cpp_condition "$@"
668
    header=$1
669
    condition=$2
670
    check_cpp <<EOF
671
#include <$header>
672
#if !($condition)
673
#error "unsatisfied condition: $condition"
674
#endif
675
EOF
676
}
677
678 57bd82d4 Måns Rullgård
check_lib(){
679
    log check_lib "$@"
680
    header="$1"
681
    func="$2"
682
    shift 2
683 fcfcde17 Måns Rullgård
    temp_extralibs "$@"
684
    check_header $header && check_func $func && add_extralibs "$@"
685
    err=$?
686
    restore_flags
687
    return $err
688 57bd82d4 Måns Rullgård
}
689
690 f8d7b072 Måns Rullgård
check_lib2(){
691
    log check_lib2 "$@"
692
    headers="$1"
693
    func="$2"
694
    shift 2
695
    temp_extralibs "$@"
696 2446d3d6 Diego Biurrun
    check_func_headers "$headers" $func && add_extralibs "$@"
697 f8d7b072 Måns Rullgård
    err=$?
698
    restore_flags
699
    return $err
700
}
701
702 dcd479c0 Måns Rullgård
check_exec(){
703 2270b4b2 Diego Biurrun
    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
704 57bd82d4 Måns Rullgård
}
705
706 7dfef245 Måns Rullgård
check_exec_crash(){
707 5e622c40 Diego Biurrun
    code=$(cat)
708 7dfef245 Måns Rullgård
709
    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
710
    # are safe but may not be available everywhere.  Thus we use
711
    # raise(SIGTERM) instead.  The check is run in a subshell so we
712
    # can redirect the "Terminated" message from the shell.  SIGBUS
713
    # is not defined by standard C so it is used conditionally.
714
715 2270b4b2 Diego Biurrun
    (check_exec "$@") >> $logfile 2>&1 <<EOF
716 7dfef245 Måns Rullgård
#include <signal.h>
717
static void sighandler(int sig){
718
    raise(SIGTERM);
719
}
720 e5af4a11 Diego Biurrun
int main(void){
721 7dfef245 Måns Rullgård
    signal(SIGILL, sighandler);
722
    signal(SIGFPE, sighandler);
723
    signal(SIGSEGV, sighandler);
724
#ifdef SIGBUS
725
    signal(SIGBUS, sighandler);
726
#endif
727
    { $code }
728
}
729
EOF
730
}
731
732 72be9e73 Dave Yeo
check_type(){
733
    log check_type "$@"
734
    headers=$1
735
    type=$2
736
    shift 2
737
    disable $type
738
    incs=""
739
    for hdr in $headers; do
740
        incs="$incs
741
#include <$hdr>"
742
    done
743
    check_cc "$@" <<EOF && enable $type
744
$incs
745
$type v;
746
EOF
747
}
748
749 57bd82d4 Måns Rullgård
require(){
750
    name="$1"
751
    header="$2"
752
    func="$3"
753
    shift 3
754
    check_lib $header $func "$@" || die "ERROR: $name not found"
755 dcd479c0 Måns Rullgård
}
756
757 f8d7b072 Måns Rullgård
require2(){
758
    name="$1"
759
    headers="$2"
760
    func="$3"
761
    shift 3
762
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
763
}
764
765 eea50282 Måns Rullgård
check_foo_config(){
766
    cfg=$1
767
    pkg=$2
768
    header=$3
769
    func=$4
770
    shift 4
771
    disable $cfg
772
    check_cmd ${pkg}-config --version
773
    err=$?
774
    if test "$err" = 0; then
775 5e622c40 Diego Biurrun
        temp_cflags $(${pkg}-config --cflags)
776
        temp_extralibs $(${pkg}-config --libs)
777 eea50282 Måns Rullgård
        check_lib "$@" $header $func && enable $cfg
778
    fi
779
    return $err
780
}
781
782 f0125de9 Måns Rullgård
check_host_cc(){
783
    log check_host_cc "$@"
784
    cat > $TMPC
785
    log_file $TMPC
786
    check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC
787
}
788
789
check_host_cflags(){
790
    log check_host_cflags "$@"
791
    check_host_cc "$@" <<EOF && append host_cflags "$@"
792
int x;
793
EOF
794
}
795
796 c505dd31 Måns Rullgård
apply(){
797
    file=$1
798
    shift
799
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
800
}
801
802 dcd61286 Diego Biurrun
# CONFIG_LIST contains configurable options, while HAVE_LIST is for
803
# system-dependent things.
804
805 4a0d6686 Aurelien Jacobs
COMPONENT_LIST="
806
    bsfs
807
    decoders
808
    demuxers
809
    encoders
810 3cde40aa Vitor Sessak
    filters
811 5666fd73 Gwenole Beauchesne
    hwaccels
812 c552605c Diego Biurrun
    indevs
813 4a0d6686 Aurelien Jacobs
    muxers
814 c552605c Diego Biurrun
    outdevs
815 4a0d6686 Aurelien Jacobs
    parsers
816
    protocols
817
"
818
819
CONFIG_LIST="
820
    $COMPONENT_LIST
821 e8ed9b7a Diego Biurrun
    aandct
822 f7679c54 Vitor Sessak
    avfilter
823
    avfilter_lavf
824 c88f5d72 Måns Rullgård
    avisynth
825
    beos_netserver
826 f402916e Aurelien Jacobs
    bzlib
827 c73f65d9 Måns Rullgård
    doc
828 27a9466b Måns Rullgård
    fastdiv
829 c88f5d72 Måns Rullgård
    ffmpeg
830
    ffplay
831
    ffserver
832 1848f7d9 Måns Rullgård
    fft
833 4f034993 Måns Rullgård
    golomb
834 c88f5d72 Måns Rullgård
    gpl
835 ecfc4f44 Måns Rullgård
    gprof
836 d8d0d0b2 Michael Niedermayer
    gray
837 3abe5fbd Aurelien Jacobs
    hardcoded_tables
838 c88f5d72 Måns Rullgård
    ipv6
839 f7b8bffe Ramiro Polla
    libdc1394
840 690bfceb Anuradha Suraparaju
    libdirac
841 2eed5a46 Diego Biurrun
    libfaac
842
    libfaad
843
    libfaadbin
844 c88f5d72 Måns Rullgård
    libgsm
845 6ebe07fb Diego Biurrun
    libmp3lame
846 c88f5d72 Måns Rullgård
    libnut
847 0b175caa Diego Biurrun
    libopencore_amrnb
848
    libopencore_amrwb
849 9a77d59a Jai Menon
    libopenjpeg
850 f7cd9eed Anuradha Suraparaju
    libschroedinger
851 ae14f311 David Conrad
    libspeex
852 150d2772 Diego Biurrun
    libtheora
853 c88f5d72 Måns Rullgård
    libvorbis
854 1cc60c47 Diego Biurrun
    libx264
855
    libxvid
856 f4d608e3 Justin Ruggles
    lpc
857 47a158cb Måns Rullgård
    mdct
858 c88f5d72 Måns Rullgård
    memalign_hack
859 a8150374 Diego Biurrun
    mlib
860 c88f5d72 Måns Rullgård
    mpegaudio_hp
861
    network
862 3fe142e2 Diego Biurrun
    nonfree
863 8a3c8627 Måns Rullgård
    pic
864 4a24ab64 Diego Biurrun
    postproc
865 2b4c3615 Måns Rullgård
    powerpc_perf
866 68602540 Alex Converse
    rdft
867 e90f5b5a Ramiro Polla
    runtime_cpudetect
868 2e35e684 Måns Rullgård
    shared
869 bd2216e4 Måns Rullgård
    small
870 2e35e684 Måns Rullgård
    static
871 a9ddb5b1 Cédric Schieli
    swscale_alpha
872 17492d5e Diego Biurrun
    vaapi
873
    vdpau
874 9cad0e4e Diego Biurrun
    version3
875 56a059ac Diego Biurrun
    x11grab
876 c88f5d72 Måns Rullgård
    zlib
877 4a0d6686 Aurelien Jacobs
"
878 c88f5d72 Måns Rullgård
879 8eee7025 Diego Biurrun
THREADS_LIST='
880
    beosthreads
881 d22e8442 Dave Yeo
    os2threads
882 8eee7025 Diego Biurrun
    pthreads
883
    w32threads
884
'
885
886 3f5b56e5 Måns Rullgård
ARCH_LIST='
887
    alpha
888 a2fc0f6a Måns Rullgård
    arm
889 fdcd782d Måns Rullgård
    avr32
890
    avr32_ap
891
    avr32_uc
892 3f5b56e5 Måns Rullgård
    bfin
893
    ia64
894
    m68k
895
    mips
896 bae3abb0 Måns Rullgård
    mips64
897 3f5b56e5 Måns Rullgård
    parisc
898 79cb09b2 Diego Biurrun
    ppc
899 34d11b87 Reimar Döffinger
    ppc64
900 3f5b56e5 Måns Rullgård
    s390
901
    sh4
902
    sparc
903
    sparc64
904
    x86
905
    x86_32
906
    x86_64
907
'
908
909
ARCH_EXT_LIST='
910 1ac9331a Måns Rullgård
    altivec
911 3bf96eec Diego Biurrun
    amd3dnow
912 a1ef9f08 Diego Biurrun
    amd3dnowext
913 1ac9331a Måns Rullgård
    armv5te
914 edab3048 Måns Rullgård
    armv6
915 ab5cb084 Måns Rullgård
    armv6t2
916 f55b299a Måns Rullgård
    armvfp
917 3f5b56e5 Måns Rullgård
    iwmmxt
918
    mmi
919
    mmx
920 d7f0920b Alexander Strange
    mmx2
921 6b18d278 Måns Rullgård
    neon
922 799fde37 Diego Biurrun
    ppc4xx
923 1bb04d5a Ramiro Polla
    sse
924 9eeed841 Måns Rullgård
    ssse3
925 bd9d34a0 Diego Biurrun
    vis
926 3f5b56e5 Måns Rullgård
'
927
928
HAVE_LIST="
929
    $ARCH_EXT_LIST
930
    $THREADS_LIST
931 35fd8122 Nicolas George
    alsa_asoundlib_h
932 3f5b56e5 Måns Rullgård
    altivec_h
933 c9fdab0d François Revol
    arpa_inet_h
934 e7ea5e3d Måns Rullgård
    attribute_packed
935 08a85a59 Måns Rullgård
    bigendian
936 6bd859d6 Måns Rullgård
    bswap
937 ecf97f22 Alex Beregszaszi
    closesocket
938 1ac9331a Måns Rullgård
    cmov
939 e16e49ac Ramiro Polla
    conio_h
940 c88f5d72 Måns Rullgård
    dcbzl
941 f8aa696f Diego Biurrun
    dev_bktr_ioctl_bt848_h
942
    dev_bktr_ioctl_meteor_h
943
    dev_ic_bt8xx_h
944
    dev_video_meteor_ioctl_meteor_h
945
    dev_video_bktr_ioctl_bt848_h
946 18b67ae5 Måns Rullgård
    dlfcn_h
947 c88f5d72 Måns Rullgård
    dlopen
948 bc574408 Ramiro Polla
    dos_paths
949 245626d0 Diego Biurrun
    ebp_available
950
    ebx_available
951 c2a29455 Aurelien Jacobs
    fast_64bit
952 7073e9fc Måns Rullgård
    fast_cmov
953 7b829d2a Ramiro Polla
    fast_unaligned
954 9d99cc5a Måns Rullgård
    fork
955 da9e86f8 Roman Shaposhnik
    gethrtime
956 4e68cb8a Roman Shaposhnik
    GetProcessTimes
957 66be5b45 Ramiro Polla
    getrusage
958 2e1913b1 Måns Rullgård
    inet_aton
959 61d251db Måns Rullgård
    inline_asm
960 abfc8d05 Martin Storsjö
    isatty
961 9f5ff83f Måns Rullgård
    ldbrx
962 0b4a1821 Alessandro Sappia
    libdc1394_1
963
    libdc1394_2
964 a33cab3a Michael Kostylev
    llrint
965 291fd18a Alex Converse
    log2
966 85dd97ad Måns Rullgård
    loongson
967 a33cab3a Michael Kostylev
    lrint
968 c88f5d72 Måns Rullgård
    lrintf
969 e4673692 Diego Biurrun
    lzo1x_999_compress
970 f8aa696f Diego Biurrun
    machine_ioctl_bt848_h
971
    machine_ioctl_meteor_h
972 c88f5d72 Måns Rullgård
    malloc_h
973
    memalign
974 6ffa87d3 Ramiro Polla
    mkstemp
975 b4e806b2 Matthieu Castet
    pld
976 1f91cdce Ramiro Polla
    posix_memalign
977 a33cab3a Michael Kostylev
    round
978
    roundf
979 c88f5d72 Måns Rullgård
    sdl
980
    sdl_video_size
981 b507ebd1 Ramiro Polla
    setmode
982 72be9e73 Dave Yeo
    socklen_t
983 deb29777 Måns Rullgård
    soundcard_h
984 f8cda19e Luca Abeni
    poll_h
985 b58412f1 Alexander Strange
    sys_mman_h
986 b091aa44 Ramiro Polla
    sys_resource_h
987 81644c2e Michael Kostylev
    sys_select_h
988 deb29777 Måns Rullgård
    sys_soundcard_h
989 1b6e8b73 Brad
    sys_videoio_h
990 d3a4b4e0 Diego Biurrun
    ten_operands
991 e16e49ac Ramiro Polla
    termios_h
992 b265431e Måns Rullgård
    threads
993 7b04b8a0 Michael Kostylev
    truncf
994 ce742de2 Måns Rullgård
    vfp_args
995 7c5bfe7a Ramiro Polla
    VirtualAlloc
996 6ff3f3e7 Ramiro Polla
    winsock2_h
997 cc078b5d Måns Rullgård
    xform_asm
998 304d586d Loren Merritt
    yasm
999 0cb78cef Diego Biurrun
"
1000 44161118 Måns Rullgård
1001 b6bb00b0 Måns Rullgård
# options emitted with CONFIG_ prefix but not available on command line
1002
CONFIG_EXTRA="
1003 9cad0e4e Diego Biurrun
    gplv3
1004
    lgplv3
1005 b6bb00b0 Måns Rullgård
"
1006
1007 520cc7f1 Måns Rullgård
CMDLINE_SELECT="
1008 3f5b56e5 Måns Rullgård
    $ARCH_EXT_LIST
1009 520cc7f1 Måns Rullgård
    $CONFIG_LIST
1010 8eee7025 Diego Biurrun
    $THREADS_LIST
1011 db6107b6 Diego Biurrun
    cross_compile
1012 520cc7f1 Måns Rullgård
    debug
1013
    extra_warnings
1014 8c6afa4d Diego Biurrun
    logging
1015 d2bbb2f7 Diego Biurrun
    optimizations
1016 87a0fb62 Diego Biurrun
    stripping
1017 7595a5e4 Måns Rullgård
    yasm
1018 520cc7f1 Måns Rullgård
"
1019 426be5dc Diego Biurrun
1020
PATHS_LIST='
1021 d156bede Diego Biurrun
    bindir
1022 14a8acf1 Måns Rullgård
    datadir
1023 26759c44 Måns Rullgård
    incdir
1024
    libdir
1025
    mandir
1026
    prefix
1027
    shlibdir
1028 426be5dc Diego Biurrun
'
1029
1030
CMDLINE_SET="
1031
    $PATHS_LIST
1032
    arch
1033 313c46a6 Måns Rullgård
    as
1034 426be5dc Diego Biurrun
    build_suffix
1035
    cc
1036
    cpu
1037
    cross_prefix
1038 50567afa Måns Rullgård
    dep_cc
1039 ac63af34 Diego Biurrun
    extra_version
1040 9da6609f Måns Rullgård
    host_cc
1041
    host_cflags
1042
    host_ldflags
1043
    host_libs
1044 82bb3329 Måns Rullgård
    host_os
1045 684b28e0 Måns Rullgård
    ld
1046 426be5dc Diego Biurrun
    logfile
1047 89641463 Reimar Döffinger
    nm
1048 26759c44 Måns Rullgård
    source_path
1049 c5200f17 Måns Rullgård
    sysinclude
1050
    sysroot
1051 a7ada2ba Måns Rullgård
    target_exec
1052 26759c44 Måns Rullgård
    target_os
1053 a7ada2ba Måns Rullgård
    target_path
1054 426be5dc Diego Biurrun
"
1055 520cc7f1 Måns Rullgård
1056 89f2932b Måns Rullgård
CMDLINE_APPEND="
1057
    extra_cflags
1058
"
1059
1060 912f3148 Diego Biurrun
# code dependency declarations
1061
1062 9eeed841 Måns Rullgård
# architecture extensions
1063 79cb09b2 Diego Biurrun
altivec_deps="ppc"
1064 3bf96eec Diego Biurrun
amd3dnow_deps="mmx"
1065 a1ef9f08 Diego Biurrun
amd3dnowext_deps="amd3dnow"
1066 a2fc0f6a Måns Rullgård
armv5te_deps="arm"
1067
armv6_deps="arm"
1068 ab5cb084 Måns Rullgård
armv6t2_deps="arm"
1069 a2fc0f6a Måns Rullgård
armvfp_deps="arm"
1070
iwmmxt_deps="arm"
1071 e241ba14 Diego Biurrun
mmi_deps="mips"
1072 9eeed841 Måns Rullgård
mmx_deps="x86"
1073 75aa95a6 Diego Biurrun
mmx2_deps="mmx"
1074 a2fc0f6a Måns Rullgård
neon_deps="arm"
1075 799fde37 Diego Biurrun
ppc4xx_deps="ppc"
1076 75aa95a6 Diego Biurrun
sse_deps="mmx"
1077
ssse3_deps="sse"
1078 bd9d34a0 Diego Biurrun
vis_deps="sparc"
1079 9eeed841 Måns Rullgård
1080 89e053f8 Måns Rullgård
need_memalign="altivec neon sse"
1081 6fec122a Måns Rullgård
inline_asm_deps="!tms470"
1082 89e053f8 Måns Rullgård
1083 5666fd73 Gwenole Beauchesne
# decoders / encoders / hardware accelerators
1084 47a158cb Måns Rullgård
aac_decoder_select="fft mdct"
1085 84c04e25 Aurelien Jacobs
aac_encoder_select="fft mdct"
1086 47a158cb Måns Rullgård
ac3_decoder_select="fft mdct"
1087 f4d608e3 Justin Ruggles
alac_encoder_select="lpc"
1088 47a158cb Måns Rullgård
atrac3_decoder_select="fft mdct"
1089 4f034993 Måns Rullgård
cavs_decoder_select="golomb"
1090 47a158cb Måns Rullgård
cook_decoder_select="fft mdct"
1091 2eef7c62 Aurelien Jacobs
cscd_decoder_suggest="zlib"
1092 47a158cb Måns Rullgård
dca_decoder_select="fft mdct"
1093 e8ed9b7a Diego Biurrun
dnxhd_encoder_select="aandct"
1094 2eef7c62 Aurelien Jacobs
dxa_decoder_select="zlib"
1095 baf91bb9 Diego Biurrun
eac3_decoder_select="ac3_decoder"
1096 84c04e25 Aurelien Jacobs
eamad_decoder_select="aandct"
1097 e8ed9b7a Diego Biurrun
eatgq_decoder_select="aandct"
1098 d52b39c7 Aurelien Jacobs
eatqi_decoder_select="aandct"
1099 4f034993 Måns Rullgård
ffv1_decoder_select="golomb"
1100
flac_decoder_select="golomb"
1101 f4d608e3 Justin Ruggles
flac_encoder_select="golomb lpc"
1102 2eef7c62 Aurelien Jacobs
flashsv_decoder_select="zlib"
1103
flashsv_encoder_select="zlib"
1104 4d4b4bd1 Diego Biurrun
flv_encoder_select="h263_encoder"
1105 e8ed9b7a Diego Biurrun
h261_encoder_select="aandct"
1106
h263_encoder_select="aandct"
1107 ff418735 Gwenole Beauchesne
h263_vaapi_hwaccel_deps="va_va_h"
1108 95a61cfc Diego Biurrun
h263_vaapi_hwaccel_select="vaapi h263_decoder"
1109 fe629c2d Diego Biurrun
h263p_encoder_select="h263_encoder"
1110 4f034993 Måns Rullgård
h264_decoder_select="golomb"
1111 ff418735 Gwenole Beauchesne
h264_vaapi_hwaccel_deps="va_va_h"
1112 17492d5e Diego Biurrun
h264_vaapi_hwaccel_select="vaapi"
1113 711dae77 Diego Biurrun
h264_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1114 95a61cfc Diego Biurrun
h264_vdpau_decoder_select="vdpau h264_decoder"
1115 47a158cb Måns Rullgård
imc_decoder_select="fft mdct"
1116 4f034993 Måns Rullgård
jpegls_decoder_select="golomb"
1117
jpegls_encoder_select="golomb"
1118 e8ed9b7a Diego Biurrun
ljpeg_encoder_select="aandct"
1119 4f034993 Måns Rullgård
loco_decoder_select="golomb"
1120 e8ed9b7a Diego Biurrun
mjpeg_encoder_select="aandct"
1121
mpeg1video_encoder_select="aandct"
1122
mpeg2video_encoder_select="aandct"
1123 c37de5e1 Diego Biurrun
mpeg4_encoder_select="h263_encoder"
1124 711dae77 Diego Biurrun
mpeg_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1125 95a61cfc Diego Biurrun
mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
1126 711dae77 Diego Biurrun
mpeg1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1127 95a61cfc Diego Biurrun
mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
1128 ff418735 Gwenole Beauchesne
mpeg2_vaapi_hwaccel_deps="va_va_h"
1129 95a61cfc Diego Biurrun
mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
1130 ff418735 Gwenole Beauchesne
mpeg4_vaapi_hwaccel_deps="va_va_h"
1131 95a61cfc Diego Biurrun
mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
1132 8f6f050a Diego Biurrun
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1133 4d8eecf4 Diego Biurrun
mpeg_xvmc_decoder_select="mpegvideo_decoder"
1134 4e169d89 Diego Biurrun
msmpeg4v1_encoder_select="h263_encoder"
1135
msmpeg4v2_encoder_select="h263_encoder"
1136
msmpeg4v3_encoder_select="h263_encoder"
1137 47a158cb Måns Rullgård
nellymoser_decoder_select="fft mdct"
1138
nellymoser_encoder_select="fft mdct"
1139 2eef7c62 Aurelien Jacobs
png_decoder_select="zlib"
1140
png_encoder_select="zlib"
1141 63cae55d Alex Converse
qdm2_decoder_select="fft mdct rdft"
1142 b2bf38b4 Diego Biurrun
rv10_encoder_select="h263_encoder"
1143
rv20_encoder_select="h263_encoder"
1144 d52b39c7 Aurelien Jacobs
rv30_decoder_select="golomb"
1145
rv40_decoder_select="golomb"
1146 4f034993 Måns Rullgård
shorten_decoder_select="golomb"
1147
sonic_decoder_select="golomb"
1148
sonic_encoder_select="golomb"
1149
sonic_ls_encoder_select="golomb"
1150
svq3_decoder_select="golomb"
1151 bee2eac5 Baptiste Coudurier
svq3_decoder_suggest="zlib"
1152 4eef77c1 Diego Biurrun
theora_decoder_select="vp3_decoder"
1153 2eef7c62 Aurelien Jacobs
tiff_decoder_suggest="zlib"
1154
tiff_encoder_suggest="zlib"
1155
tscc_decoder_select="zlib"
1156 ff418735 Gwenole Beauchesne
vc1_vaapi_hwaccel_deps="va_va_h"
1157 95a61cfc Diego Biurrun
vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
1158 711dae77 Diego Biurrun
vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1159 95a61cfc Diego Biurrun
vc1_vdpau_decoder_select="vdpau vc1_decoder"
1160 47a158cb Måns Rullgård
vorbis_decoder_select="fft mdct"
1161
vorbis_encoder_select="fft mdct"
1162 e82dc4c9 Diego Biurrun
vp6a_decoder_select="vp6_decoder"
1163
vp6f_decoder_select="vp6_decoder"
1164 47a158cb Måns Rullgård
wmav1_decoder_select="fft mdct"
1165
wmav1_encoder_select="fft mdct"
1166
wmav2_decoder_select="fft mdct"
1167
wmav2_encoder_select="fft mdct"
1168 665507aa Diego Biurrun
wmv1_encoder_select="h263_encoder"
1169 1746e2a9 Diego Biurrun
wmv2_encoder_select="h263_encoder"
1170 015f8ee0 Diego Biurrun
wmv3_decoder_select="vc1_decoder"
1171
wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1172
wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1173 2eef7c62 Aurelien Jacobs
zlib_decoder_select="zlib"
1174
zlib_encoder_select="zlib"
1175
zmbv_decoder_select="zlib"
1176
zmbv_encoder_select="zlib"
1177 30fd06be Måns Rullgård
1178 28b80940 Diego Biurrun
# parsers
1179
h264_parser_select="golomb"
1180
1181 912f3148 Diego Biurrun
# external libraries
1182 1b71f045 Måns Rullgård
libdirac_decoder_deps="libdirac !libschroedinger"
1183 690bfceb Anuradha Suraparaju
libdirac_encoder_deps="libdirac"
1184 c9171a83 Diego Biurrun
libfaac_encoder_deps="libfaac"
1185 69ddbd1d Diego Biurrun
libfaad_decoder_deps="libfaad"
1186 4ec45764 Ramiro Polla
libfaadbin_decoder_extralibs='$ldl'
1187 299c77d5 Måns Rullgård
libgsm_decoder_deps="libgsm"
1188
libgsm_encoder_deps="libgsm"
1189 8ffed8d8 Måns Rullgård
libgsm_ms_decoder_deps="libgsm"
1190
libgsm_ms_encoder_deps="libgsm"
1191 1cc60c47 Diego Biurrun
libmp3lame_encoder_deps="libmp3lame"
1192 0b175caa Diego Biurrun
libopencore_amrnb_decoder_deps="libopencore_amrnb"
1193
libopencore_amrnb_encoder_deps="libopencore_amrnb"
1194
libopencore_amrwb_decoder_deps="libopencore_amrwb"
1195 9a77d59a Jai Menon
libopenjpeg_decoder_deps="libopenjpeg"
1196 f7cd9eed Anuradha Suraparaju
libschroedinger_decoder_deps="libschroedinger"
1197
libschroedinger_encoder_deps="libschroedinger"
1198 ae14f311 David Conrad
libspeex_decoder_deps="libspeex"
1199 150d2772 Diego Biurrun
libtheora_encoder_deps="libtheora"
1200 b0caf888 Diego Biurrun
libvorbis_encoder_deps="libvorbis"
1201 1cc60c47 Diego Biurrun
libx264_encoder_deps="libx264"
1202
libxvid_encoder_deps="libxvid"
1203 30fd06be Måns Rullgård
1204 912f3148 Diego Biurrun
# demuxers / muxers
1205 03a76ba9 Diego Biurrun
ac3_demuxer_deps="ac3_parser"
1206 647c2356 Diego Biurrun
asf_stream_muxer_select="asf_muxer"
1207 4e622dea Stefano Sabatini
avisynth_demuxer_deps="avisynth"
1208
dirac_demuxer_deps="dirac_parser"
1209 647c2356 Diego Biurrun
ipod_muxer_select="mov_muxer"
1210 4e622dea Stefano Sabatini
libnut_demuxer_deps="libnut"
1211
libnut_muxer_deps="libnut"
1212 647c2356 Diego Biurrun
matroska_audio_muxer_select="matroska_muxer"
1213 4e622dea Stefano Sabatini
matroska_demuxer_suggest="zlib bzlib"
1214
mov_demuxer_suggest="zlib"
1215
mp3_demuxer_deps="mpegaudio_parser"
1216 647c2356 Diego Biurrun
mp4_muxer_select="mov_muxer"
1217
mpegtsraw_demuxer_select="mpegts_demuxer"
1218
mxf_d10_muxer_select="mxf_muxer"
1219
psp_muxer_select="mov_muxer"
1220 4e622dea Stefano Sabatini
rtp_muxer_deps="network rtp_protocol"
1221
rtsp_demuxer_deps="sdp_demuxer"
1222
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
1223 647c2356 Diego Biurrun
tg2_muxer_select="mov_muxer"
1224
tgp_muxer_select="mov_muxer"
1225 6bdaa5f4 Diego Biurrun
w64_demuxer_deps="wav_demuxer"
1226 4e622dea Stefano Sabatini
1227
# indevs / outdevs
1228 38e54a75 Stefano Sabatini
alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
1229
alsa_indev_extralibs="-lasound"
1230
alsa_outdev_deps="alsa_asoundlib_h"
1231
alsa_outdev_extralibs="-lasound"
1232
audio_beos_indev_deps="audio_beos"
1233
audio_beos_indev_extralibs="-lmedia -lbe"
1234
audio_beos_outdev_deps="audio_beos"
1235
audio_beos_outdev_extralibs="-lmedia -lbe"
1236
bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
1237
dv1394_indev_deps="dv1394 dv_demuxer"
1238
jack_indev_deps="jack_jack_h"
1239
jack_indev_extralibs="-ljack"
1240
libdc1394_indev_deps="libdc1394"
1241
oss_indev_deps_any="soundcard_h sys_soundcard_h"
1242
oss_outdev_deps_any="soundcard_h sys_soundcard_h"
1243
v4l_indev_deps="linux_videodev_h"
1244
v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
1245
vfwcap_indev_deps="capCreateCaptureWindow"
1246
vfwcap_indev_extralibs="-lvfw32"
1247
x11_grab_device_indev_deps="x11grab XShmCreateImage"
1248
x11_grab_device_indev_extralibs="-lX11 -lXext"
1249 30fd06be Måns Rullgård
1250 912f3148 Diego Biurrun
# protocols
1251 3fff6382 Andreas Öman
gopher_protocol_deps="network"
1252 c08fb000 Alex Beregszaszi
http_protocol_deps="network"
1253 cbf29889 Måns Rullgård
rtmp_protocol_deps="tcp_protocol"
1254 c08fb000 Alex Beregszaszi
rtp_protocol_deps="udp_protocol"
1255
tcp_protocol_deps="network"
1256
udp_protocol_deps="network"
1257
1258 f7679c54 Vitor Sessak
# filters
1259 81124ba0 Vitor Sessak
movie_filter_deps="avfilter_lavf"
1260 f7679c54 Vitor Sessak
1261 912f3148 Diego Biurrun
# programs
1262 fa859b4d Måns Rullgård
ffplay_deps="sdl"
1263 6ad42348 Ramiro Polla
ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
1264 4ec45764 Ramiro Polla
ffserver_extralibs='$ldl'
1265 a2830dca Måns Rullgård
1266 c73f65d9 Måns Rullgård
doc_deps="texi2html"
1267 912f3148 Diego Biurrun
1268 de6d9b64 Fabrice Bellard
# default parameters
1269 8a608357 Måns Rullgård
1270 2ba042a7 Måns Rullgård
logfile="config.err"
1271 8a608357 Måns Rullgård
1272
# installation paths
1273 c9d19248 Måns Rullgård
prefix_default="/usr/local"
1274
bindir_default='${prefix}/bin'
1275 14a8acf1 Måns Rullgård
datadir_default='${prefix}/share/ffmpeg'
1276 c9d19248 Måns Rullgård
incdir_default='${prefix}/include'
1277
libdir_default='${prefix}/lib'
1278
mandir_default='${prefix}/share/man'
1279
shlibdir_default="$libdir_default"
1280 8a608357 Måns Rullgård
1281
# toolchain
1282 11e6d03a Diego Biurrun
ar="ar"
1283 13c7df3d Måns Rullgård
cc_default="gcc"
1284 a3d7c197 Diego Biurrun
cc_version=\"unknown\"
1285 9da6609f Måns Rullgård
host_cc_default="gcc"
1286 11e6d03a Diego Biurrun
ln_s="ln -sf"
1287 89641463 Reimar Döffinger
nm_default="nm"
1288 11e6d03a Diego Biurrun
objformat="elf"
1289 be7109c1 Michael Niedermayer
ranlib="ranlib"
1290 0f3cb305 Fabrice Bellard
strip="strip"
1291 11e6d03a Diego Biurrun
yasmexe="yasm"
1292 8a608357 Måns Rullgård
1293
# machine
1294 5e622c40 Diego Biurrun
arch=$(uname -m)
1295 38d0a8aa Guillaume Poirier
cpu="generic"
1296 8a608357 Måns Rullgård
1297
# OS
1298 4f854758 Diego Biurrun
target_os=$(tolower $(uname -s))
1299 82bb3329 Måns Rullgård
host_os=$target_os
1300 8a608357 Måns Rullgård
1301
# configurable options
1302 497237c7 Ramiro Polla
enable debug
1303 c73f65d9 Måns Rullgård
enable doc
1304 aa033b1e Måns Rullgård
enable fastdiv
1305 497237c7 Ramiro Polla
enable ffmpeg
1306
enable ffplay
1307
enable ffserver
1308
enable ipv6
1309
enable mpegaudio_hp
1310
enable network
1311 8400d6b8 Diego Biurrun
enable optimizations
1312 497237c7 Ramiro Polla
enable protocols
1313 530dc538 Diego Biurrun
enable static
1314 87a0fb62 Diego Biurrun
enable stripping
1315 a9ddb5b1 Cédric Schieli
enable swscale_alpha
1316 8a608357 Måns Rullgård
1317
# build settings
1318 9987769a Måns Rullgård
SHFLAGS='-shared -Wl,-soname,$$(@F)'
1319 c536cb09 Diego Biurrun
FFSERVERLDFLAGS=-Wl,-E
1320 f3ec2d46 Slavik Gnatenko
LIBPREF="lib"
1321
LIBSUF=".a"
1322 c5f14466 Ramiro Polla
FULLNAME='$(NAME)$(BUILDSUF)'
1323
LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
1324 f3ec2d46 Slavik Gnatenko
SLIBPREF="lib"
1325
SLIBSUF=".so"
1326 c5f14466 Ramiro Polla
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
1327 b29bddab Diego Biurrun
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
1328
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
1329 24743a76 Diego Biurrun
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
1330 ef0bc4c9 François Revol
1331 7e6c86e6 Måns Rullgård
CC_O='-o $@'
1332
1333 f0125de9 Måns Rullgård
host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall'
1334 9da6609f Måns Rullgård
host_libs='-lm'
1335
1336 a7ada2ba Måns Rullgård
target_path='.'
1337
1338 0d7dca36 Diego Biurrun
# gcc stupidly only outputs the basename of targets with -MM, but we need the
1339
# full relative path for objects in subdirectories for non-recursive Make.
1340 c1c3933a Måns Rullgård
DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
1341 d8059267 Måns Rullgård
DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
1342 315c741d Diego Biurrun
1343 c597172e Måns Rullgård
# find source path
1344 5e622c40 Diego Biurrun
source_path="$(dirname "$0")"
1345 497237c7 Ramiro Polla
enable source_path_used
1346 24524f36 Måns Rullgård
if test -f configure; then
1347 5e622c40 Diego Biurrun
    source_path="$(pwd)"
1348 497237c7 Ramiro Polla
    disable source_path_used
1349 c597172e Måns Rullgård
else
1350 5e622c40 Diego Biurrun
    source_path="$(cd "$source_path"; pwd)"
1351 c597172e Måns Rullgård
    echo "$source_path" | grep -q '[[:blank:]]' &&
1352 7483e694 Diego Biurrun
        die "Out of tree builds are impossible with whitespace in source path."
1353 337cee68 Matthieu Castet
    test -e "$source_path/config.h" &&
1354
        die "Out of tree builds are impossible with config.h in source dir."
1355 c597172e Måns Rullgård
fi
1356
1357 13cbe2c0 Måns Rullgård
for v in "$@"; do
1358 b04251c5 Måns Rullgård
    r=${v#*=}
1359
    l=${v%"$r"}
1360
    r=$(sh_quote "$r")
1361 13cbe2c0 Måns Rullgård
    FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
1362
done
1363 c597172e Måns Rullgård
1364 73ef8980 Måns Rullgård
find_things(){
1365
    thing=$1
1366
    pattern=$2
1367
    file=$source_path/$3
1368 932ccf39 Måns Rullgård
    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
1369 73ef8980 Måns Rullgård
}
1370
1371
ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
1372
DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
1373 5666fd73 Gwenole Beauchesne
HWACCEL_LIST=$(find_things  hwaccel  HWACCEL  libavcodec/allcodecs.c)
1374 73ef8980 Måns Rullgård
PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
1375
BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
1376
MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
1377
DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
1378 38e54a75 Stefano Sabatini
OUTDEV_LIST=$(find_things   outdev   OUTDEV   libavdevice/alldevices.c)
1379
INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
1380 73ef8980 Måns Rullgård
PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
1381 81124ba0 Vitor Sessak
FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
1382 c597172e Måns Rullgård
1383 7483e694 Diego Biurrun
enable $ARCH_EXT_LIST \
1384
       $DECODER_LIST \
1385
       $ENCODER_LIST \
1386 5666fd73 Gwenole Beauchesne
       $HWACCEL_LIST \
1387 7483e694 Diego Biurrun
       $PARSER_LIST \
1388
       $BSF_LIST \
1389
       $DEMUXER_LIST \
1390
       $MUXER_LIST \
1391 f7679c54 Vitor Sessak
       $FILTER_LIST \
1392 7483e694 Diego Biurrun
       $PROTOCOL_LIST \
1393
       $INDEV_LIST \
1394
       $OUTDEV_LIST \
1395 c597172e Måns Rullgård
1396
die_unknown(){
1397
    echo "Unknown option \"$1\"."
1398
    echo "See $0 --help for available options."
1399
    exit 1
1400
}
1401
1402 794f8e97 Panagiotis Issaris
show_list() {
1403 bf0c4afa Ramiro Polla
    suffix=_$1
1404
    shift
1405
    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
1406 794f8e97 Panagiotis Issaris
    exit 0
1407
}
1408
1409 c597172e Måns Rullgård
for opt do
1410 7483e694 Diego Biurrun
    optval="${opt#*=}"
1411
    case "$opt" in
1412 0f010b2f Diego Biurrun
    --extra-ldflags=*) add_ldflags $optval
1413 7483e694 Diego Biurrun
    ;;
1414 0f010b2f Diego Biurrun
    --extra-libs=*) add_extralibs $optval
1415 7483e694 Diego Biurrun
    ;;
1416 8fb1cb58 Diego Biurrun
    --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
1417 9aa8ed9d Panagiotis Issaris
    ;;
1418 40bcf4c7 Benjamin Larsson
    --enable-debug=*) debuglevel="$optval"
1419
    ;;
1420 7483e694 Diego Biurrun
    --enable-*=*|--disable-*=*)
1421 8b93ddc3 Måns Rullgård
    eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
1422 be8f2501 Måns Rullgård
    is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
1423
    eval list=\$$(toupper $thing)_LIST
1424 8b93ddc3 Måns Rullgård
    name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
1425
    $action $(filter "$name" $list)
1426 7483e694 Diego Biurrun
    ;;
1427
    --enable-?*|--disable-?*)
1428 5e622c40 Diego Biurrun
    eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
1429 e3773a55 Måns Rullgård
    if is_in $option $COMPONENT_LIST; then
1430 fed5d54b Måns Rullgård
        test $action = disable && action=unset
1431 e3773a55 Måns Rullgård
        eval $action \$$(toupper ${option%s})_LIST
1432
    elif is_in $option $CMDLINE_SELECT; then
1433
        $action $option
1434
    else
1435
        die_unknown $opt
1436
    fi
1437 7483e694 Diego Biurrun
    ;;
1438
    --list-*)
1439
        NAME="${opt#--list-}"
1440
        is_in $NAME $COMPONENT_LIST || die_unknown $opt
1441
        NAME=${NAME%s}
1442
        eval show_list $NAME \$$(toupper $NAME)_LIST
1443
    ;;
1444
    --help|-h) show_help
1445
    ;;
1446
    *)
1447 884a36a7 Måns Rullgård
    optname="${opt%%=*}"
1448 26759c44 Måns Rullgård
    optname="${optname#--}"
1449
    optname=$(echo "$optname" | sed 's/-/_/g')
1450 89f2932b Måns Rullgård
    if is_in $optname $CMDLINE_SET; then
1451
        eval $optname='$optval'
1452
    elif is_in $optname $CMDLINE_APPEND; then
1453
        append $optname "$optval"
1454
    else
1455
         die_unknown $opt
1456
    fi
1457 7483e694 Diego Biurrun
    ;;
1458
    esac
1459 c597172e Måns Rullgård
done
1460
1461 bcea99bb Måns Rullgård
disabled logging && logfile=/dev/null
1462
1463 13cbe2c0 Måns Rullgård
echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
1464 bcea99bb Måns Rullgård
set >> $logfile
1465
1466 9da6609f Måns Rullgård
test -n "$cross_prefix" && enable cross_compile
1467
1468 adb2b908 Ramiro Polla
ar="${cross_prefix}${ar}"
1469 11e6d03a Diego Biurrun
cc_default="${cross_prefix}${cc_default}"
1470 20e0ed95 Måns Rullgård
nm_default="${cross_prefix}${nm_default}"
1471 adb2b908 Ramiro Polla
ranlib="${cross_prefix}${ranlib}"
1472
strip="${cross_prefix}${strip}"
1473
1474 c5200f17 Måns Rullgård
sysinclude_default="${sysroot}/usr/include"
1475
1476 75800dce Måns Rullgård
set_default cc nm sysinclude
1477 9da6609f Måns Rullgård
enabled cross_compile || host_cc_default=$cc
1478
set_default host_cc
1479 13c7df3d Måns Rullgård
1480 82bb3329 Måns Rullgård
exesuf() {
1481
    case $1 in
1482
        mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;;
1483
    esac
1484
}
1485
1486
EXESUF=$(exesuf $target_os)
1487
HOSTEXESUF=$(exesuf $host_os)
1488 c0f5b7f1 Måns Rullgård
1489 e4e69e0b Måns Rullgård
# set temporary file name
1490 a49d42c2 Måns Rullgård
: ${TMPDIR:=$TEMPDIR}
1491 c51fafa1 Måns Rullgård
: ${TMPDIR:=$TMP}
1492 a49d42c2 Måns Rullgård
: ${TMPDIR:=/tmp}
1493 e4e69e0b Måns Rullgård
1494 54460a83 Måns Rullgård
if ! check_cmd type mktemp; then
1495
    # simple replacement for missing mktemp
1496
    # NOT SAFE FOR GENERAL USE
1497
    mktemp(){
1498
        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
1499
    }
1500
fi
1501
1502
tmpfile(){
1503
    tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
1504
        (set -C; exec > $tmp) 2>/dev/null ||
1505 f7ba16a7 Reimar Döffinger
        die "Unable to create temporary file in $TMPDIR."
1506 54460a83 Måns Rullgård
    append TMPFILES $tmp
1507
    eval $1=$tmp
1508
}
1509
1510
trap 'rm -f -- $TMPFILES' EXIT
1511
trap exit HUP INT TERM
1512
1513
tmpfile TMPC  .c
1514
tmpfile TMPE  $EXESUF
1515
tmpfile TMPH  .h
1516
tmpfile TMPO  .o
1517
tmpfile TMPS  .S
1518
tmpfile TMPSH .sh
1519
1520
unset -f mktemp
1521 e4e69e0b Måns Rullgård
1522 993f2d0f Måns Rullgård
# make sure we can execute files in $TMPDIR
1523
cat > $TMPSH 2>> $logfile <<EOF
1524
#! /bin/sh
1525
EOF
1526
chmod +x $TMPSH >> $logfile 2>&1
1527
if ! $TMPSH >> $logfile 2>&1; then
1528
    cat <<EOF
1529
Unable to create and execute files in $TMPDIR.  Set the TMPDIR environment
1530
variable to another directory and make sure that it is not mounted noexec.
1531
EOF
1532
    die "Sanity test failed."
1533
fi
1534
1535 19b4c628 Måns Rullgård
filter_cflags=echo
1536
filter_cppflags=echo
1537
filter_asflags=echo
1538
1539 8f0c157a Måns Rullgård
if   $cc -v 2>&1 | grep -qi ^gcc; then
1540 629687f6 Måns Rullgård
    cc_type=gcc
1541 a3d7c197 Diego Biurrun
    cc_version=__VERSION__
1542 aef6bd1b Måns Rullgård
    if ! $cc -dumpversion | grep -q '^2\.'; then
1543
        CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1544
        AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1545
    fi
1546 629687f6 Måns Rullgård
elif $cc --version 2>/dev/null | grep -q Intel; then
1547
    cc_type=icc
1548 6e3fa35d Måns Rullgård
    cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
1549 07dec06e Måns Rullgård
    CC_DEPFLAGS='-MMD'
1550
    AS_DEPFLAGS='-MMD'
1551 629687f6 Måns Rullgård
elif $cc -v 2>&1 | grep -q xlc; then
1552
    cc_type=xlc
1553 6e3fa35d Måns Rullgård
    cc_version="AV_STRINGIFY(__IBMC__)"
1554 df442a8d Måns Rullgård
elif $cc -V 2>/dev/null | grep -q Compaq; then
1555
    cc_type=ccc
1556 6e3fa35d Måns Rullgård
    cc_version="AV_STRINGIFY(__DECC_VER)"
1557 d8059267 Måns Rullgård
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
1558 03754fcd Måns Rullgård
    debuglevel=3
1559 df442a8d Måns Rullgård
    add_ldflags -Wl,-z,now # calls to libots crash without this
1560 6a0d5493 Måns Rullgård
elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
1561 03e37762 Måns Rullgård
    test -d "$sysroot" || die "No valid sysroot specified."
1562
    cc_type=armcc
1563 6e3fa35d Måns Rullgård
    cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
1564 03e37762 Måns Rullgård
    armcc_conf="$PWD/armcc.conf"
1565
    $cc --arm_linux_configure                 \
1566
        --arm_linux_config_file="$armcc_conf" \
1567
        --configure_sysroot="$sysroot"        \
1568
        --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
1569
        die "Error creating armcc configuration file."
1570
    cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc"
1571 75800dce Måns Rullgård
    as_default="${cross_prefix}gcc"
1572 07dec06e Måns Rullgård
    CC_DEPFLAGS='-MMD'
1573
    AS_DEPFLAGS='-MMD'
1574 6fec122a Måns Rullgård
elif $cc -version 2>/dev/null | grep -q TMS470; then
1575
    cc_type=tms470
1576 6e3fa35d Måns Rullgård
    cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
1577 6fec122a Måns Rullgård
    cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
1578
    CC_O='-fr=$(@D)'
1579
    as_default="${cross_prefix}gcc"
1580
    ld_default="${cross_prefix}gcc"
1581
    TMPO=$(basename $TMPC .c).o
1582
    append TMPFILES $TMPO
1583
    add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=
1584 07dec06e Måns Rullgård
    CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)'
1585
    AS_DEPFLAGS='-MMD'
1586 6fec122a Måns Rullgård
    filter_cflags=tms470_flags
1587
    tms470_flags(){
1588
        for flag; do
1589
            case $flag in
1590
                -march=*|-mcpu=*)
1591
                    case "${flag#*=}" in
1592
                        armv7-a|cortex-a*)      echo -mv=7a8 ;;
1593
                        armv7-r|cortex-r*)      echo -mv=7r4 ;;
1594
                        armv7-m|cortex-m*)      echo -mv=7m3 ;;
1595
                        armv6*|arm11*)          echo -mv=6   ;;
1596
                        armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
1597
                                                echo -mv=5e  ;;
1598
                        armv4*|arm7*|arm9[24]*) echo -mv=4   ;;
1599
                    esac
1600
                    ;;
1601
                -mfpu=neon)     echo --float_support=vfpv3 --neon ;;
1602
                -mfpu=vfp)      echo --float_support=vfpv2        ;;
1603 a2709020 Måns Rullgård
                -msoft-float)   echo --float_support=vfplib       ;;
1604 6fec122a Måns Rullgård
                -Os)            echo -O3 -mf=2                    ;;
1605
                -O[0-3])        echo $flag -mf=5                  ;;
1606
                -g)             echo -g -mn                       ;;
1607
            esac
1608
        done
1609
    }
1610 06da6943 David Conrad
elif $cc -v 2>&1 | grep -q clang; then
1611
    cc_type=clang
1612
    cc_version=__VERSION__
1613
    CC_DEPFLAGS='-MMD'
1614
    AS_DEPFLAGS='-MMD'
1615 2a472e9c Michael Kostylev
elif $cc -V 2>&1 | grep -q Sun; then
1616
    cc_type=suncc
1617
    cc_version="AV_STRINGIFY(__SUNPRO_C)"
1618
    DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\\\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
1619
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1'
1620 629687f6 Måns Rullgård
fi
1621
1622
test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
1623
1624 75bafbac Måns Rullgård
: ${as_default:=$cc}
1625 50567afa Måns Rullgård
: ${dep_cc_default:=$cc}
1626 684b28e0 Måns Rullgård
: ${ld_default:=$cc}
1627 50567afa Måns Rullgård
set_default as dep_cc ld
1628 75800dce Måns Rullgård
1629 07dec06e Måns Rullgård
test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
1630
test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
1631
1632 7f32f40c Måns Rullgård
add_cflags $extra_cflags
1633 2f2e6c7c Måns Rullgård
add_asflags $extra_cflags
1634 7f32f40c Måns Rullgård
1635 154d432c Måns Rullgård
if test -n "$sysroot"; then
1636
    case "$cc_type" in
1637
        gcc)
1638 467256f2 Måns Rullgård
            add_cppflags --sysroot="$sysroot"
1639 154d432c Måns Rullgård
            add_ldflags --sysroot="$sysroot"
1640
        ;;
1641 6fec122a Måns Rullgård
        tms470)
1642
            add_cppflags -I"$sysinclude"
1643
            add_ldflags  --sysroot="$sysroot"
1644
        ;;
1645 06da6943 David Conrad
        clang)
1646
            add_cppflags -isysroot="$sysroot"
1647
            add_ldflags -isysroot="$sysroot"
1648
        ;;
1649 154d432c Måns Rullgård
    esac
1650
fi
1651
1652 d22c13a8 Måns Rullgård
if test "$cpu" = host; then
1653
    enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
1654
1655
    case "$cc_type" in
1656
        gcc)
1657
            check_native(){
1658
                $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
1659
                awk "/$1=/{ match(\$0, /$1=(\\w+)/, a);print a[1];exit }" $TMPE
1660
            }
1661
            cpu=$(check_native -march || check_native -mcpu)
1662
        ;;
1663
    esac
1664
1665
    test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
1666
fi
1667
1668 df5cdc24 Måns Rullgård
# Add processor-specific flags
1669
case $cpu in
1670
    601|ppc601|PowerPC601)
1671
        cpuflags="-mcpu=601"
1672
    ;;
1673
    603*|ppc603*|PowerPC603*)
1674
        cpuflags="-mcpu=603"
1675
    ;;
1676
    604*|ppc604*|PowerPC604*)
1677
        cpuflags="-mcpu=604"
1678
    ;;
1679
    G3|g3|75*|ppc75*|PowerPC75*)
1680
        cpuflags="-mcpu=750 -mpowerpc-gfxopt"
1681
    ;;
1682
    G4|g4|745*|ppc745*|PowerPC745*)
1683
        cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
1684
    ;;
1685
    74*|ppc74*|PowerPC74*)
1686
        cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
1687
    ;;
1688
    G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1689
        cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1690
    ;;
1691
    Cell|CELL|cell)
1692
        cpuflags="-mcpu=cell"
1693
        enable ldbrx
1694
    ;;
1695
    # targets that do NOT support conditional mov (cmov)
1696
    i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1697
        cpuflags="-march=$cpu"
1698
        disable cmov
1699
    ;;
1700
    # targets that do support conditional mov (cmov)
1701 d3ee7715 Reimar Döffinger
    i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10)
1702 df5cdc24 Måns Rullgård
        cpuflags="-march=$cpu"
1703
        enable cmov
1704
        enable fast_cmov
1705
    ;;
1706
    # targets that do support conditional mov but on which it's slow
1707
    pentium4|pentium4m|prescott|nocona)
1708
        cpuflags="-march=$cpu"
1709
        enable cmov
1710
        disable fast_cmov
1711
    ;;
1712
    sparc64)
1713
        cpuflags="-mcpu=v9"
1714
    ;;
1715
    arm11*|cortex*)
1716
        cpuflags="-mcpu=$cpu"
1717
        enable fast_unaligned
1718
    ;;
1719
    armv[67]*)
1720
        cpuflags="-march=$cpu"
1721
        enable fast_unaligned
1722
    ;;
1723
    armv*)
1724
        cpuflags="-march=$cpu"
1725
    ;;
1726
    arm*)
1727
        cpuflags="-mcpu=$cpu"
1728
    ;;
1729
    ev4|ev45|ev5|ev56|pca56|ev6|ev67)
1730
        enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
1731
    ;;
1732
    bf*)
1733
        cpuflags="-mcpu=$cpu"
1734
    ;;
1735
    mips*|[45]k*|[237]4k*|m4k|r*000|loongson2[ef])
1736
        cpuflags="-march=$cpu"
1737
    ;;
1738 fdcd782d Måns Rullgård
    ap7[02]0[0-2])
1739
        subarch="avr32_ap"
1740
        cpuflags="-mpart=$cpu"
1741
    ;;
1742
    ap)
1743
        subarch="avr32_ap"
1744
        cpuflags="-march=$cpu"
1745
    ;;
1746
    uc3[ab]*)
1747
        subarch="avr32_uc"
1748
        cpuflags="-mcpu=$cpu"
1749
    ;;
1750
    uc)
1751
        subarch="avr32_uc"
1752
        cpuflags="-march=$cpu"
1753
    ;;
1754 df5cdc24 Måns Rullgård
    generic)
1755
    ;;
1756
    *)
1757
        echo "WARNING: Unknown CPU \"$cpu\", ignored."
1758
    ;;
1759
esac
1760
1761
add_cflags $cpuflags
1762
add_asflags $cpuflags
1763
1764 993f2d0f Måns Rullgård
# compiler sanity check
1765
check_exec <<EOF
1766
int main(void){ return 0; }
1767
EOF
1768
if test "$?" != 0; then
1769
    echo "$cc is unable to create an executable file."
1770
    if test -z "$cross_prefix" && ! enabled cross_compile ; then
1771
        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
1772
        echo "Only do this if you know what cross compiling means."
1773
    fi
1774
    die "C compiler test failed."
1775
fi
1776
1777 38a9c529 Måns Rullgård
add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
1778 e9b9a2f8 Michael Niedermayer
check_cflags -std=c99
1779 50a334e4 Måns Rullgård
check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
1780 9d821fc2 Diego Biurrun
#include <stdlib.h>
1781
EOF
1782 50a334e4 Måns Rullgård
check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
1783 9d821fc2 Diego Biurrun
#include <stdlib.h>
1784
EOF
1785 e9b9a2f8 Michael Niedermayer
1786 f0125de9 Måns Rullgård
check_host_cflags -std=c99
1787
1788 b24dbcbd Ramiro Polla
case "$arch" in
1789
    alpha)
1790
        arch="alpha"
1791
        enable fast_64bit
1792 c0a02a3e Måns Rullgård
        check_cflags -mieee
1793 8a3c8627 Måns Rullgård
        spic=$shared
1794 b24dbcbd Ramiro Polla
    ;;
1795 cfdb6148 Måns Rullgård
    arm|armv[4567]*l)
1796
        arch="arm"
1797 b24dbcbd Ramiro Polla
    ;;
1798 f4870943 Måns Rullgård
    avr32)
1799
    ;;
1800 cfdb6148 Måns Rullgård
    bfin)
1801
        arch="bfin"
1802
    ;;
1803
    ia64)
1804
        arch="ia64"
1805 b24dbcbd Ramiro Polla
        enable fast_64bit
1806 8a3c8627 Måns Rullgård
        spic=$shared
1807 0956bc9b Reimar Döffinger
        # HACK: currently fails to build if .bss is > 4MB and shared libs are built
1808
        enabled shared && enable hardcoded_tables
1809 cfdb6148 Måns Rullgård
    ;;
1810
    m68k)
1811
        arch="m68k"
1812 b24dbcbd Ramiro Polla
    ;;
1813 de3a1240 Diego Biurrun
    mips|mipsel|IP*)
1814 b24dbcbd Ramiro Polla
        arch="mips"
1815 8a3c8627 Måns Rullgård
        spic=$shared
1816 b24dbcbd Ramiro Polla
    ;;
1817 de3a1240 Diego Biurrun
    mips64)
1818
        arch="mips"
1819 bae3abb0 Måns Rullgård
        subarch="mips64"
1820 de3a1240 Diego Biurrun
        enable fast_64bit
1821 8a3c8627 Måns Rullgård
        spic=$shared
1822 de3a1240 Diego Biurrun
    ;;
1823 61597a98 Diego Biurrun
    parisc|hppa)
1824 b24dbcbd Ramiro Polla
        arch="parisc"
1825 8a3c8627 Måns Rullgård
        spic=$shared
1826 b24dbcbd Ramiro Polla
    ;;
1827 61597a98 Diego Biurrun
    parisc64|hppa64)
1828 b24dbcbd Ramiro Polla
        arch="parisc"
1829
        enable fast_64bit
1830 8a3c8627 Måns Rullgård
        spic=$shared
1831 b24dbcbd Ramiro Polla
    ;;
1832 cfdb6148 Måns Rullgård
    "Power Macintosh"|ppc|powerpc)
1833
        arch="ppc"
1834
        enable fast_unaligned
1835
    ;;
1836
    ppc64)
1837
        arch="ppc"
1838 34d11b87 Reimar Döffinger
        subarch="ppc64"
1839 cfdb6148 Måns Rullgård
        enable fast_64bit
1840
        enable fast_unaligned
1841
    ;;
1842 b24dbcbd Ramiro Polla
    s390|s390x)
1843
        arch="s390"
1844
    ;;
1845 cfdb6148 Måns Rullgård
    sh4|sh)
1846
        arch="sh4"
1847 b24dbcbd Ramiro Polla
    ;;
1848 cfdb6148 Måns Rullgård
    sparc)
1849
        arch="sparc"
1850 8a3c8627 Måns Rullgård
        spic=$shared
1851 cfdb6148 Måns Rullgård
    ;;
1852
    sun4u|sparc64)
1853
        arch="sparc"
1854
        subarch="sparc64"
1855 b24dbcbd Ramiro Polla
        enable fast_64bit
1856 8a3c8627 Måns Rullgård
        spic=$shared
1857 b24dbcbd Ramiro Polla
    ;;
1858 de27f4d9 David Conrad
    i386|i486|i586|i686|i86pc|BePC|x86_64|amd64)
1859 cfdb6148 Måns Rullgård
        arch="x86"
1860
        subarch="x86_32"
1861
        enable fast_unaligned
1862 8a3c8627 Måns Rullgård
        check_cc <<EOF && enable fast_64bit && subarch="x86_64" && spic=$shared
1863 cfdb6148 Måns Rullgård
        int test[sizeof(char*) - 7];
1864
EOF
1865 de27f4d9 David Conrad
        if test "$subarch" = "x86_64"; then
1866
            enable cmov
1867
            enable fast_cmov
1868
        fi
1869 b24dbcbd Ramiro Polla
    ;;
1870
    *)
1871
        arch="unknown"
1872
    ;;
1873
esac
1874
1875 62045d48 Diego Biurrun
enable $arch $subarch
1876 8a3c8627 Måns Rullgård
enabled spic && enable pic
1877 b24dbcbd Ramiro Polla
1878 7483e694 Diego Biurrun
# OS specific
1879 4f854758 Diego Biurrun
case $target_os in
1880 7483e694 Diego Biurrun
    beos|haiku|zeta)
1881 c9d19248 Måns Rullgård
        prefix_default="$HOME/config"
1882 7483e694 Diego Biurrun
        # helps building libavcodec
1883 50a334e4 Måns Rullgård
        add_cppflags -DPIC
1884
        add_cflags -fomit-frame-pointer
1885 7483e694 Diego Biurrun
        # 3 gcc releases known for BeOS, each with ugly bugs
1886 5e622c40 Diego Biurrun
        gcc_version="$($cc -v 2>&1 | grep version | cut -d ' ' -f3-)"
1887 7483e694 Diego Biurrun
        case "$gcc_version" in
1888
          2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
1889
            disable mmx
1890
            ;;
1891
          *20010315*) echo "BeBits gcc"
1892 0f010b2f Diego Biurrun
            add_cflags -fno-expensive-optimizations
1893 7483e694 Diego Biurrun
            ;;
1894
        esac
1895
        SHFLAGS=-nostart
1896
        # enable BeOS things
1897
        enable audio_beos
1898
        # no need for libm, but the inet stuff
1899
        # Check for BONE
1900
        # XXX: actually should check for NOT net_server
1901 78fe7631 Diego Biurrun
        if echo $BEINCLUDES | grep -q 'headers/be/bone'; then
1902 7483e694 Diego Biurrun
            network_extralibs="-lbind -lsocket"
1903
        else
1904
            enable beos_netserver
1905
            network_extralibs="-lnet"
1906
        fi ;;
1907
    sunos)
1908
        FFSERVERLDFLAGS=""
1909 9987769a Måns Rullgård
        SHFLAGS='-shared -Wl,-h,$$(@F)'
1910 0600d30a Michael Kostylev
        enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
1911 7483e694 Diego Biurrun
        network_extralibs="-lsocket -lnsl"
1912 50a334e4 Måns Rullgård
        add_cppflags -D__EXTENSIONS__
1913 7483e694 Diego Biurrun
        ;;
1914
    netbsd)
1915 07a8eef6 Måns Rullgård
        oss_indev_extralibs="-lossaudio"
1916
        oss_outdev_extralibs="-lossaudio"
1917 7483e694 Diego Biurrun
        ;;
1918
    openbsd)
1919 89e053f8 Måns Rullgård
        enable malloc_aligned
1920 cd78208b Måns Rullgård
        enable pic
1921 7483e694 Diego Biurrun
        SHFLAGS='-shared'
1922 07a8eef6 Måns Rullgård
        oss_indev_extralibs="-lossaudio"
1923
        oss_outdev_extralibs="-lossaudio"
1924 7483e694 Diego Biurrun
        ;;
1925 90b4f091 Diego Biurrun
    freebsd|dragonfly)
1926 89e053f8 Måns Rullgård
        enable malloc_aligned
1927 7483e694 Diego Biurrun
        ;;
1928
    bsd/os)
1929
        osextralibs="-lpoll -lgnugetopt"
1930
        strip="strip -d"
1931
        ;;
1932
    darwin)
1933 89e053f8 Måns Rullgård
        enable malloc_aligned
1934 0138c54e Diego Biurrun
        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
1935 7483e694 Diego Biurrun
        strip="strip -x"
1936
        FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
1937
        SLIBSUF=".dylib"
1938
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
1939
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
1940
        FFSERVERLDFLAGS=-Wl,-bind_at_load
1941 304d586d Loren Merritt
        objformat="macho"
1942 1b0f6fb8 David Conrad
        enabled x86_64 && objformat="macho64"
1943 8dfa86f7 Måns Rullgård
        enabled_any pic shared ||
1944 2704bd1a Alexander Strange
            { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
1945 7483e694 Diego Biurrun
        ;;
1946
    mingw32*)
1947 9d3f4f50 Martin Storsjö
        if test $target_os = "mingw32ce"; then
1948 1aa71e25 Martin Storsjö
            disable network
1949
        else
1950
            target_os=mingw32
1951
        fi
1952 dcc01c06 Ramiro Polla
        LIBTARGET=i386
1953 1fc9fb8a Diego Biurrun
        if enabled x86_64; then
1954 89e053f8 Måns Rullgård
            enable malloc_aligned
1955 dcc01c06 Ramiro Polla
            LIBTARGET=x64
1956 336cc1b0 Martin Storsjö
        elif enabled arm; then
1957
            LIBTARGET=arm
1958 dcc01c06 Ramiro Polla
        fi
1959 fbd971a4 Diego Biurrun
        shlibdir_default="$bindir_default"
1960 7483e694 Diego Biurrun
        disable ffserver
1961
        SLIBPREF=""
1962
        SLIBSUF=".dll"
1963
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1964
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1965 06abe7f5 Ramiro Polla
        SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
1966 4c25d159 Ramiro Polla
        SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
1967 b9349ff4 Martin Storsjö
            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
1968
            install -d "$(LIBDIR)"; \
1969
            install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
1970 7483e694 Diego Biurrun
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
1971 4b51fb1c Ramiro Polla
        SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
1972 304d586d Loren Merritt
        objformat="win32"
1973 bc574408 Ramiro Polla
        enable dos_paths
1974 1894e741 Ramiro Polla
        check_cflags -fno-common
1975 b1549d61 Ramiro Polla
        if ! enabled x86_64; then
1976 f7ad5aa2 Ramiro Polla
            check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
1977
                die "ERROR: MinGW runtime version must be >= 3.15."
1978 8beb4178 Stefano Sabatini
            enabled_any avisynth vfwcap_indev &&
1979 f7ad5aa2 Ramiro Polla
                { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
1980 8beb4178 Stefano Sabatini
                  die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; }
1981 f7ad5aa2 Ramiro Polla
            fi
1982 7483e694 Diego Biurrun
        ;;
1983
    cygwin*)
1984 4f854758 Diego Biurrun
        target_os=cygwin
1985 fbd971a4 Diego Biurrun
        shlibdir_default="$bindir_default"
1986 7483e694 Diego Biurrun
        SLIBPREF="cyg"
1987
        SLIBSUF=".dll"
1988
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1989
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1990
        SHFLAGS='-shared -Wl,--enable-auto-image-base'
1991 304d586d Loren Merritt
        objformat="win32"
1992 bc574408 Ramiro Polla
        enable dos_paths
1993 1894e741 Ramiro Polla
        check_cflags -fno-common
1994 7483e694 Diego Biurrun
        ;;
1995 4f365f37 Michael Kostylev
    *-dos|freedos|opendos)
1996 fdf11906 Diego Biurrun
        disable ffplay ffserver
1997 4f365f37 Michael Kostylev
        disable $INDEV_LIST $OUTDEV_LIST
1998
        network_extralibs="-lsocket"
1999 ff1c015d Michael Kostylev
        objformat="coff"
2000 bc574408 Ramiro Polla
        enable dos_paths
2001 4f365f37 Michael Kostylev
        ;;
2002 7483e694 Diego Biurrun
    linux)
2003
        enable dv1394
2004
        ;;
2005
    irix*)
2006 4f854758 Diego Biurrun
        target_os=irix
2007 7483e694 Diego Biurrun
        ranlib="echo ignoring ranlib"
2008
        ;;
2009 d22e8442 Dave Yeo
    os/2*)
2010
        strip="lxlite"
2011
        ln_s="cp -f"
2012
        FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
2013 71c61f62 Måns Rullgård
        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
2014 d22e8442 Dave Yeo
        FFSERVERLDFLAGS=""
2015 287d3b13 Dave Yeo
        LIBSUF="_s.a"
2016 d22e8442 Dave Yeo
        SLIBPREF=""
2017
        SLIBSUF=".dll"
2018
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
2019
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
2020 71c61f62 Måns Rullgård
        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
2021
          echo PROTMODE >> $(SUBDIR)$(NAME).def; \
2022
          echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
2023
          echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
2024
          echo EXPORTS >> $(SUBDIR)$(NAME).def; \
2025
          emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
2026
        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
2027
          emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
2028
        SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
2029 d22e8442 Dave Yeo
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
2030 bc574408 Ramiro Polla
        enable dos_paths
2031 d22e8442 Dave Yeo
        ;;
2032 83993c1c Andres Mejia
    gnu/kfreebsd)
2033
        ;;
2034 34e82167 Andres Mejia
    gnu)
2035
        ;;
2036 d22e8442 Dave Yeo
2037 7483e694 Diego Biurrun
    *)
2038 4f924f9a Måns Rullgård
        die "Unknown OS '$target_os'."
2039 7483e694 Diego Biurrun
        ;;
2040
esac
2041
2042 c9d19248 Måns Rullgård
set_default $PATHS_LIST
2043
2044 c597172e Måns Rullgård
add_extralibs $osextralibs
2045 de6d9b64 Fabrice Bellard
2046 28d8e661 Diego Biurrun
# Combine FFLDFLAGS and the LDFLAGS environment variable.
2047
LDFLAGS="$FFLDFLAGS $LDFLAGS"
2048 e89b8b0a Diego Biurrun
2049 320d060a Diego Biurrun
# we need to build at least one lib type
2050 93b3c083 Måns Rullgård
if ! enabled_any static shared; then
2051 320d060a Diego Biurrun
    cat <<EOF
2052
At least one library type must be built.
2053
Specify --enable-static to build the static libraries or --enable-shared to
2054
build the shared libraries as well. To only build the shared libraries specify
2055
--disable-static in addition to --enable-shared.
2056
EOF
2057
    exit 1;
2058
fi
2059
2060 abc4e572 Diego Biurrun
disabled static && LIBNAME=""
2061 2a320695 Ramiro Polla
2062 a2234ceb Ramiro Polla
if enabled_any libfaad libfaadbin ; then
2063
    if check_header faad.h; then
2064 295b8c70 Diego Biurrun
        check_cc <<EOF
2065 a2234ceb Ramiro Polla
#include <faad.h>
2066
#ifndef FAAD2_VERSION
2067
ok faad1
2068
#endif
2069 db817cf3 Diego Biurrun
int main(void) { return 0; }
2070 a2234ceb Ramiro Polla
EOF
2071
        test $? = 0 && enable libfaad2
2072
    else
2073 ff3dac65 Diego Biurrun
        die "FAAD test failed."
2074 a2234ceb Ramiro Polla
    fi
2075
fi
2076
2077
2078 2184c6f7 Diego Biurrun
die_license_disabled() {
2079 4c27207c Måns Rullgård
    enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
2080 2184c6f7 Diego Biurrun
}
2081
2082
die_license_disabled gpl libfaad2
2083
die_license_disabled gpl libx264
2084
die_license_disabled gpl libxvid
2085
die_license_disabled gpl postproc
2086
die_license_disabled gpl x11grab
2087
2088 2f7ae63b Diego Biurrun
die_license_disabled nonfree libfaac
2089 b2e3c528 Michael Niedermayer
2090 0b175caa Diego Biurrun
die_license_disabled version3 libopencore_amrnb
2091
die_license_disabled version3 libopencore_amrwb
2092
2093 9cad0e4e Diego Biurrun
enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
2094 3fe142e2 Diego Biurrun
2095 9eeed841 Måns Rullgård
check_deps $ARCH_EXT_LIST
2096 0f3cb305 Fabrice Bellard
2097 40617a6d Ben Taylor
disabled optimizations || check_cflags -fomit-frame-pointer
2098 cf9d24ad Dan Christiansen
2099 e276d9e8 Måns Rullgård
enable_pic() {
2100
    enable pic
2101 bce7b696 Måns Rullgård
    add_cppflags -DPIC
2102
    add_cflags   -fPIC
2103
    add_asflags  -fPIC
2104 e276d9e8 Måns Rullgård
}
2105
2106
enabled pic && enable_pic
2107 bce7b696 Måns Rullgård
2108 b4d96ba2 Måns Rullgård
check_cc <<EOF || die "Symbol mangling check failed."
2109
int ff_extern;
2110
EOF
2111 2f05d9c1 Matthieu Castet
sym=$($nm -P -g $TMPO | grep ff_extern)
2112 b4d96ba2 Måns Rullgård
extern_prefix=${sym%%ff_extern*}
2113
2114 f65883c8 Måns Rullgård
check_cc <<EOF && enable inline_asm
2115
void foo(void) { __asm__ volatile ("" ::); }
2116
EOF
2117 61d251db Måns Rullgård
2118 df5e3978 Måns Rullgård
_restrict=
2119
for restrict_keyword in restrict __restrict__ __restrict; do
2120
    check_cc <<EOF && _restrict=$restrict_keyword && break
2121
void foo(char * $restrict_keyword p);
2122
EOF
2123
done
2124
2125
check_cc <<EOF && enable attribute_packed
2126
struct { int x; } __attribute__((packed)) x;
2127
EOF
2128
2129
check_cc <<EOF || die "endian test failed"
2130
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
2131
EOF
2132
od -A n -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
2133
2134 fa0912fe Måns Rullgård
if enabled arm; then
2135 e45391bb Måns Rullgård
2136 50fa82e6 Måns Rullgård
    check_cflags -marm
2137
2138 fa0912fe Måns Rullgård
    check_ld <<EOF && enable vfp_args
2139
__asm__ (".eabi_attribute 28, 1");
2140
int main(void) { return 0; }
2141
EOF
2142
2143
    # We have to check if pld is a nop and disable it.
2144
    check_asm pld '"pld [r0]"'
2145
2146
    enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
2147
    enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
2148
    enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
2149
    enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
2150
    enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
2151
    enabled neon    && check_asm neon    '"vadd.i16 q0, q0, q0"'
2152 e45391bb Måns Rullgård
2153 e276d9e8 Måns Rullgård
    enabled_all armv6t2 shared !pic && enable_pic
2154
2155 fa0912fe Måns Rullgård
elif enabled mips; then
2156 e45391bb Måns Rullgård
2157 fa0912fe Måns Rullgård
    check_asm loongson '"dmult.g $1, $2, $3"'
2158
    enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
2159 e45391bb Måns Rullgård
2160 fa0912fe Måns Rullgård
elif enabled ppc; then
2161 e45391bb Måns Rullgård
2162 fa0912fe Måns Rullgård
    check_asm dcbzl     '"dcbzl 0, 1"'
2163
    check_asm ppc4xx    '"maclhw r10, r11, r12"'
2164
    check_asm xform_asm '"lwzx 0, %y0" :: "Z"(*(int*)0)'
2165
2166
    # AltiVec flags: The FSF version of GCC differs from the Apple version
2167
    if enabled altivec; then
2168
        check_cflags -maltivec -mabi=altivec &&
2169
        { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
2170
        check_cflags -faltivec
2171
2172
        # check if our compiler supports Motorola AltiVec C API
2173
        check_cc <<EOF || disable altivec
2174
$inc_altivec_h
2175
int main(void) {
2176
    vector signed int v1, v2, v3;
2177
    v1 = vec_add(v2,v3);
2178
    return 0;
2179
}
2180
EOF
2181
2182
        # check if our compiler supports braces for vector declarations
2183
        check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
2184
$inc_altivec_h
2185
int main (void) { (vector int) {1}; return 0; }
2186
EOF
2187
    fi
2188 e45391bb Måns Rullgård
2189 fa0912fe Måns Rullgård
elif enabled sparc; then
2190 e45391bb Måns Rullgård
2191 fa0912fe Måns Rullgård
    enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
2192
        add_cflags -mcpu=ultrasparc -mtune=ultrasparc
2193 e45391bb Måns Rullgård
2194 fa0912fe Måns Rullgård
elif enabled x86; then
2195 e45391bb Måns Rullgård
2196 44965991 Panagiotis Issaris
    # check whether EBP is available on x86
2197
    # As 'i' is stored on the stack, this program will crash
2198
    # if the base pointer is used to access it because the
2199
    # base pointer is cleared in the inline assembly code.
2200 7dfef245 Måns Rullgård
    check_exec_crash <<EOF && enable ebp_available
2201 44965991 Panagiotis Issaris
    volatile int i=0;
2202 be449fca Diego Pettenò
    __asm__ volatile (
2203 44965991 Panagiotis Issaris
        "xorl %%ebp, %%ebp"
2204
    ::: "%ebp");
2205
    return i;
2206
EOF
2207
2208 f494213c Reimar Döffinger
    # check whether EBX is available on x86
2209 7cee5421 Måns Rullgård
    check_asm ebx_available '""::"b"(0)' &&
2210
        check_asm ebx_available '"":::"%ebx"'
2211 8e380710 Loren Merritt
2212 d3a4b4e0 Diego Biurrun
    # check whether more than 10 operands are supported
2213
    check_cc <<EOF && enable ten_operands
2214
int main(void) {
2215
    int x=0;
2216
    __asm__ volatile(
2217
        ""
2218
        :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
2219
    );
2220
    return 0;
2221
}
2222
EOF
2223
2224 d7f0920b Alexander Strange
    # check whether binutils is new enough to compile SSSE3/MMX2
2225 940f335a Måns Rullgård
    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
2226 5fd89ca0 Diego Biurrun
    enabled mmx2  && check_asm mmx2  '"pmaxub %mm0, %mm1"'
2227 6bd859d6 Måns Rullgård
2228
    check_asm bswap '"bswap %%eax" ::: "%eax"'
2229 304d586d Loren Merritt
2230 d52481b9 Ramiro Polla
    YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)"
2231 304d586d Loren Merritt
    enabled     x86_64        && append YASMFLAGS "-m amd64"
2232
    enabled_all x86_64 shared && append YASMFLAGS "-DPIC"
2233
    case "$objformat" in
2234
        elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
2235 1b0f6fb8 David Conrad
        macho64)              append YASMFLAGS "-DPIC -DPREFIX" ;;
2236 304d586d Loren Merritt
        *)                    append YASMFLAGS "-DPREFIX"  ;;
2237
    esac
2238 7595a5e4 Måns Rullgård
    disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; }
2239 e45391bb Måns Rullgård
2240 44965991 Panagiotis Issaris
fi
2241
2242 a98bb16d Ramiro Polla
if check_func dlopen; then
2243
    ldl=
2244
elif check_func dlopen -ldl; then
2245
    ldl=-ldl
2246 8bf5d58f Michael Niedermayer
fi
2247
2248 75ecf149 Diego Biurrun
# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
2249
check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
2250
2251 7483e694 Diego Biurrun
check_func  fork
2252
check_func  gethrtime
2253
check_func  getrusage
2254 094c09bb Michael Kostylev
check_func  inet_aton $network_extralibs
2255 abfc8d05 Martin Storsjö
check_func  isatty
2256 7483e694 Diego Biurrun
check_func  memalign
2257
check_func  mkstemp
2258 1f91cdce Ramiro Polla
check_func  posix_memalign
2259 b507ebd1 Ramiro Polla
check_func_headers io.h setmode
2260 e4673692 Diego Biurrun
check_func_headers lzo/lzo1x.h lzo1x_999_compress
2261 2446d3d6 Diego Biurrun
check_func_headers windows.h GetProcessTimes
2262 7c5bfe7a Ramiro Polla
check_func_headers windows.h VirtualAlloc
2263 6ffa87d3 Ramiro Polla
2264 e16e49ac Ramiro Polla
check_header conio.h
2265 a98bb16d Ramiro Polla
check_header dlfcn.h
2266
check_header malloc.h
2267 bf6ce82d Diego Biurrun
check_header poll.h
2268 b58412f1 Alexander Strange
check_header sys/mman.h
2269 b091aa44 Ramiro Polla
check_header sys/resource.h
2270 bf6ce82d Diego Biurrun
check_header sys/select.h
2271 a98bb16d Ramiro Polla
check_header termios.h
2272 272081b0 Carl Eugen Hoyos
check_header vdpau/vdpau.h
2273
check_header vdpau/vdpau_x11.h
2274 68178ca9 Diego Biurrun
check_header X11/extensions/XvMClib.h
2275 a98bb16d Ramiro Polla
2276 89e053f8 Måns Rullgård
if ! enabled_any memalign memalign_hack posix_memalign malloc_aligned &&
2277
     enabled_any $need_memalign ; then
2278 1f91cdce Ramiro Polla
    die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
2279 a98bb16d Ramiro Polla
fi
2280 e16e49ac Ramiro Polla
2281 a4fa192c Ramiro Polla
disabled  zlib || check_lib   zlib.h      zlibVersion -lz   || disable  zlib
2282 632948bd Ramiro Polla
disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
2283 57bd82d4 Måns Rullgård
2284
# check for some common methods of building with pthread support
2285
# do this before the optional library checks as some of them require pthreads
2286
if enabled pthreads; then
2287 9e7fd101 Måns Rullgård
    if check_func pthread_create; then
2288
        :
2289
    elif check_func pthread_create -pthread; then
2290
        add_cflags -pthread
2291 afc9aee2 Diego Biurrun
        add_extralibs -pthread
2292 9e7fd101 Måns Rullgård
    elif check_func pthread_create -pthreads; then
2293
        add_cflags -pthreads
2294 afc9aee2 Diego Biurrun
        add_extralibs -pthreads
2295 8d94f606 Gianluigi Tiesi
    elif check_func pthread_create -lpthreadGC2; then
2296
        add_extralibs -lpthreadGC2
2297 9e7fd101 Måns Rullgård
    elif ! check_lib pthread.h pthread_create -lpthread; then
2298
        die "ERROR: can't find pthreads library"
2299
    fi
2300 57bd82d4 Måns Rullgård
fi
2301
2302 8eee7025 Diego Biurrun
for thread in $THREADS_LIST; do
2303 e5f94c2b Ramiro Polla
    if enabled $thread; then
2304 3ae3b721 Ramiro Polla
        test -n "$thread_type" &&
2305
            die "ERROR: Only one thread type must be selected." ||
2306 e5f94c2b Ramiro Polla
            thread_type="$thread"
2307
    fi
2308
done
2309
2310 fdf88598 Måns Rullgård
check_lib math.h sin -lm
2311 ff418735 Gwenole Beauchesne
check_lib va/va.h vaInitialize -lva
2312 fdf88598 Måns Rullgård
2313 ad420e25 Måns Rullgård
check_func llrint
2314
check_func log2
2315
check_func lrint
2316
check_func lrintf
2317
check_func round
2318
check_func roundf
2319
check_func truncf
2320 f32adb22 Måns Rullgård
2321 57bd82d4 Måns Rullgård
# these are off by default, so fail if requested and not available
2322 79fda097 Diego Biurrun
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
2323 e3cc7d6f Diego Biurrun
enabled libdirac   && add_cflags $(pkg-config --cflags dirac) &&
2324 2513b2b4 Diego Biurrun
                      require  libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init $(pkg-config --libs dirac) &&
2325
                      require  libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init $(pkg-config --libs dirac)
2326 79fda097 Diego Biurrun
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
2327
enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
2328 7483e694 Diego Biurrun
enabled libgsm     && require  libgsm gsm.h gsm_create -lgsm
2329 2bfecf73 Stefano Sabatini
enabled libmp3lame && require  libmp3lame lame/lame.h lame_init -lmp3lame -lm
2330 7483e694 Diego Biurrun
enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
2331 0b175caa Diego Biurrun
enabled libopencore_amrnb  && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb -lm
2332
enabled libopencore_amrwb  && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb -lm
2333 3d6fac8c Mathieu Malaterre
enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
2334 36718e51 Diego Biurrun
enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
2335
                           require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
2336 ae14f311 David Conrad
enabled libspeex   && require  libspeex speex/speex.h speex_decoder_init -lspeex
2337 7483e694 Diego Biurrun
enabled libtheora  && require  libtheora theora/theora.h theora_info_init -ltheora -logg
2338
enabled libvorbis  && require  libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
2339 e69bb386 Måns Rullgård
enabled libx264    && require  libx264 x264.h x264_encoder_encode -lx264 -lm &&
2340 19538981 Jason Garrett-Glaser
                      { check_cpp_condition x264.h "X264_BUILD >= 78" ||
2341
                        die "ERROR: libx264 version must be >= 0.78."; }
2342 2bfecf73 Stefano Sabatini
enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
2343 7483e694 Diego Biurrun
enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
2344 8ac17293 Steve L'Homme
2345 0b4a1821 Alessandro Sappia
# libdc1394 check
2346
if enabled libdc1394; then
2347
    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
2348
        enable libdc1394_2; } ||
2349
    { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
2350
        enable libdc1394_1; } ||
2351
    die "ERROR: No version of libdc1394 found "
2352
fi
2353
2354 497237c7 Ramiro Polla
disable sdl_too_old
2355
disable sdl
2356 6a1a892f Frantisek Dvorak
SDL_CONFIG="${cross_prefix}sdl-config"
2357 2270b4b2 Diego Biurrun
if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
2358 5e622c40 Diego Biurrun
    sdl_cflags=$("${SDL_CONFIG}" --cflags)
2359 b4f93564 Måns Rullgård
    sdl_libs=$("${SDL_CONFIG}" --libs)
2360 225e21ef Måns Rullgård
    temp_cflags $sdl_cflags
2361 b4f93564 Måns Rullgård
    temp_extralibs $sdl_libs
2362 1ca5d97f KO Myung-Hun
    if check_lib2 SDL.h SDL_Init; then
2363 5e622c40 Diego Biurrun
        _sdlversion=$("${SDL_CONFIG}" --version | sed 's/[^0-9]//g')
2364 29f3b38a Måns Rullgård
        if test "$_sdlversion" -lt 121 ; then
2365 497237c7 Ramiro Polla
            enable sdl_too_old
2366 dcd479c0 Måns Rullgård
        else
2367 497237c7 Ramiro Polla
            enable sdl
2368 225e21ef Måns Rullgård
            check_cc $sdl_cflags <<EOF && enable sdl_video_size
2369 29f3b38a Måns Rullgård
#include <SDL.h>
2370 d6773f56 Diego Biurrun
int main(int argc, char **argv){
2371 29f3b38a Måns Rullgård
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
2372
    int w = vi->current_w;
2373
    return 0;
2374
}
2375
EOF
2376 dcd479c0 Måns Rullgård
        fi
2377
    fi
2378 29f3b38a Måns Rullgård
    restore_flags
2379 c3f6b472 Michael Niedermayer
fi
2380 57bd82d4 Måns Rullgård
2381 2270b4b2 Diego Biurrun
texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
2382 146ea952 Nicolas Boos
2383 73b46a95 Ramiro Polla
if enabled network; then
2384 96000432 Reimar Döffinger
    check_type "sys/types.h sys/socket.h" socklen_t
2385 73b46a95 Ramiro Polla
    # Prefer arpa/inet.h over winsock2
2386
    if check_header arpa/inet.h ; then
2387
        check_func closesocket
2388
    elif check_header winsock2.h ; then
2389 f4c13872 Martin Storsjö
        check_func_headers winsock2.h closesocket -lws2 && \
2390
            network_extralibs="-lws2" || \
2391
        { check_func_headers winsock2.h closesocket -lws2_32 && \
2392
            network_extralibs="-lws2_32"; }
2393 72be9e73 Dave Yeo
        check_type ws2tcpip.h socklen_t
2394 28c9f069 Michael Kostylev
    else
2395
        disable network
2396 73b46a95 Ramiro Polla
    fi
2397
fi
2398
2399 b6f3d925 Måns Rullgård
enabled_all network ipv6 && check_ld <<EOF || disable ipv6
2400 7a91333f Hans Zandbelt
#include <sys/types.h>
2401
#include <sys/socket.h>
2402
#include <netinet/in.h>
2403
#include <netdb.h>
2404 db817cf3 Diego Biurrun
int main(void) {
2405 7483e694 Diego Biurrun
    struct sockaddr_storage saddr;
2406
    struct ipv6_mreq mreq6;
2407
    getaddrinfo(0,0,0,0);
2408
    getnameinfo(0,0,0,0,0,0,0);
2409
    IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
2410 7a91333f Hans Zandbelt
}
2411
EOF
2412
2413 06e31011 Ramiro Polla
check_header linux/videodev.h
2414
check_header linux/videodev2.h
2415 1b6e8b73 Brad
check_header sys/videoio.h
2416 47f38850 Luca Abeni
2417 2446d3d6 Diego Biurrun
check_func_headers "windows.h vfw.h" capCreateCaptureWindow -lvfw32
2418 c2345207 Ramiro Polla
2419 f8aa696f Diego Biurrun
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
2420 1c915f83 Ramiro Polla
{ check_header dev/bktr/ioctl_meteor.h &&
2421
  check_header dev/bktr/ioctl_bt848.h; } ||
2422
{ check_header machine/ioctl_meteor.h &&
2423
  check_header machine/ioctl_bt848.h; } ||
2424
{ check_header dev/video/meteor/ioctl_meteor.h &&
2425
  check_header dev/video/bktr/ioctl_bt848.h; } ||
2426
check_header dev/ic/bt8xx.h
2427 f8aa696f Diego Biurrun
2428 c7682de0 Ramiro Polla
check_header sys/soundcard.h
2429
check_header soundcard.h
2430 deb29777 Måns Rullgård
2431 b6f3d925 Måns Rullgård
enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
2432 35fd8122 Nicolas George
2433 0e57fe17 Carl Eugen Hoyos
enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack
2434 80ff8a16 Olivier Guilyardi
2435 56a059ac Diego Biurrun
enabled x11grab                         &&
2436 f58f4ce1 Guillaume Poirier
check_header X11/Xlib.h                 &&
2437
check_header X11/extensions/XShm.h      &&
2438
check_func XOpenDisplay -lX11           &&
2439 06eab4ba Ramiro Polla
check_func XShmCreateImage -lX11 -lXext
2440 f58f4ce1 Guillaume Poirier
2441 95e561ec Måns Rullgård
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
2442 57bd82d4 Måns Rullgård
2443
# add some useful compiler flags if supported
2444
check_cflags -Wdeclaration-after-statement
2445 dcd479c0 Måns Rullgård
check_cflags -Wall
2446
check_cflags -Wno-switch
2447 c07bd6a9 Michael Niedermayer
check_cflags -Wdisabled-optimization
2448
check_cflags -Wpointer-arith
2449
check_cflags -Wredundant-decls
2450 cc1fb623 Måns Rullgård
check_cflags -Wno-pointer-sign
2451 f4929996 Michael Niedermayer
check_cflags -Wcast-qual
2452 9aceb3cf Michael Niedermayer
check_cflags -Wwrite-strings
2453 652a5bf6 Michael Niedermayer
check_cflags -Wtype-limits
2454 764551c6 Aurelien Jacobs
check_cflags -Wundef
2455 5af4e0cc Måns Rullgård
enabled extra_warnings && check_cflags -Winline
2456 cf9d24ad Dan Christiansen
2457 57bd82d4 Måns Rullgård
# add some linker flags
2458 5c0e9479 Måns Rullgård
check_ldflags -Wl,--warn-common
2459 8351d2ba Diego Biurrun
check_ldflags -Wl,--as-needed
2460
check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
2461 c2fd6530 Måns Rullgård
check_ldflags -Wl,-Bsymbolic
2462 94a3401e Fabrice Bellard
2463 bd2216e4 Måns Rullgård
if enabled small; then
2464
    check_cflags -Os            # not all compilers support -Os
2465 8400d6b8 Diego Biurrun
    optimizations="small"
2466
elif enabled optimizations; then
2467 629687f6 Måns Rullgård
    if enabled xlc; then
2468 0f010b2f Diego Biurrun
        add_cflags  -O5
2469
        add_ldflags -O5
2470 df442a8d Måns Rullgård
    elif enabled ccc; then
2471
        add_cflags -fast
2472 cf9d24ad Dan Christiansen
    else
2473 0f010b2f Diego Biurrun
        add_cflags -O3
2474 cf9d24ad Dan Christiansen
    fi
2475 cddf3f45 Glenn Maynard
fi
2476 11fdbc44 Michael Niedermayer
check_cflags -fno-math-errno
2477 b2eb2ff0 Michael Niedermayer
check_cflags -fno-signed-zeros
2478 cddf3f45 Glenn Maynard
2479 629687f6 Måns Rullgård
if enabled icc; then
2480 b1598b58 Måns Rullgård
    # Just warnings, no remarks
2481
    check_cflags -w1
2482
    # -wd: Disable following warnings
2483
    # 144, 167, 556: -Wno-pointer-sign
2484
    # 10006: ignoring unknown option -fno-signed-zeros
2485
    # 10156: ignoring option '-W'; no argument required
2486
    check_cflags -wd144,167,556,10006,10156
2487
    # 11030: Warning unknown option --as-needed
2488
    # 10156: ignoring option '-export'; no argument required
2489
    check_ldflags -wd10156,11030
2490
    # Allow to compile with optimizations
2491
    check_ldflags -march=$cpu
2492 be2cf98a Carl Eugen Hoyos
    # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
2493
    enable ebp_available
2494 df442a8d Måns Rullgård
elif enabled ccc; then
2495
    # disable some annoying warnings
2496
    add_cflags -msg_disable cvtu32to64
2497
    add_cflags -msg_disable embedcomment
2498
    add_cflags -msg_disable needconstext
2499
    add_cflags -msg_disable nomainieee
2500
    add_cflags -msg_disable ptrmismatch1
2501
    add_cflags -msg_disable unreachcode
2502 973859f5 Måns Rullgård
elif enabled gcc; then
2503
    check_cflags -fno-tree-vectorize
2504 06da6943 David Conrad
elif enabled clang; then
2505
    check_cflags -Qunused-arguments
2506 504a64b9 Carl Eugen Hoyos
fi
2507
2508 90be59ef Ramiro Polla
if enabled gprof; then
2509 0f010b2f Diego Biurrun
    add_cflags  -p
2510
    add_ldflags -p
2511 1db54e20 Diego Biurrun
fi
2512
2513 7f3c02fc Diego Biurrun
# Find out if the .align argument is a power of two or not.
2514 9377b6ce Måns Rullgård
check_asm asmalign_pot '".align 3"'
2515 4454dc1b John Dalgliesh
2516 7483e694 Diego Biurrun
enabled_any $DECODER_LIST      && enable decoders
2517
enabled_any $ENCODER_LIST      && enable encoders
2518 5666fd73 Gwenole Beauchesne
enabled_any $HWACCEL_LIST      && enable hwaccels
2519 7483e694 Diego Biurrun
enabled_any $BSF_LIST          && enable bsfs
2520
enabled_any $DEMUXER_LIST      && enable demuxers
2521
enabled_any $MUXER_LIST        && enable muxers
2522 f7679c54 Vitor Sessak
enabled_any $FILTER_LIST       && enable filters
2523 63d72fda Diego Biurrun
enabled_any $INDEV_LIST        && enable indevs
2524
enabled_any $OUTDEV_LIST       && enable outdevs
2525 7483e694 Diego Biurrun
enabled_any $PROTOCOL_LIST     && enable protocols
2526
2527
enabled_any $THREADS_LIST      && enable threads
2528
2529
check_deps $CONFIG_LIST       \
2530 b6bb00b0 Måns Rullgård
           $CONFIG_EXTRA      \
2531 7483e694 Diego Biurrun
           $HAVE_LIST         \
2532
           $DECODER_LIST      \
2533
           $ENCODER_LIST      \
2534 5666fd73 Gwenole Beauchesne
           $HWACCEL_LIST      \
2535 7483e694 Diego Biurrun
           $PARSER_LIST       \
2536
           $BSF_LIST          \
2537
           $DEMUXER_LIST      \
2538
           $MUXER_LIST        \
2539 f7679c54 Vitor Sessak
           $FILTER_LIST       \
2540 7483e694 Diego Biurrun
           $INDEV_LIST        \
2541
           $OUTDEV_LIST       \
2542
           $PROTOCOL_LIST     \
2543 f70f03f6 Måns Rullgård
2544 3e89171a Måns Rullgård
echo "install prefix            $prefix"
2545 f36958f8 Diego Biurrun
echo "source path               $source_path"
2546
echo "C compiler                $cc"
2547 bfd5afd8 Diego Biurrun
echo ".align is power-of-two    $asmalign_pot"
2548 f36958f8 Diego Biurrun
echo "ARCH                      $arch ($cpu)"
2549 ce8871c2 Måns Rullgård
if test "$build_suffix" != ""; then
2550
    echo "build suffix              $build_suffix"
2551 eb94aca9 Charles Yates
fi
2552 ac63af34 Diego Biurrun
if test "$extra_version" != ""; then
2553
    echo "version string suffix     $extra_version"
2554
fi
2555 0db2ce77 Måns Rullgård
echo "big-endian                ${bigendian-no}"
2556 e90f5b5a Ramiro Polla
echo "runtime cpu detection     ${runtime_cpudetect-no}"
2557 5b6c2cbd Diego Biurrun
if enabled x86; then
2558 af44e8e4 Carl Eugen Hoyos
    echo "yasm                      ${yasm-no}"
2559 0db2ce77 Måns Rullgård
    echo "MMX enabled               ${mmx-no}"
2560 30e98e62 Diego Biurrun
    echo "MMX2 enabled              ${mmx2-no}"
2561 3bf96eec Diego Biurrun
    echo "3DNow! enabled            ${amd3dnow-no}"
2562 a1ef9f08 Diego Biurrun
    echo "3DNow! extended enabled   ${amd3dnowext-no}"
2563 1bb04d5a Ramiro Polla
    echo "SSE enabled               ${sse-no}"
2564 30e98e62 Diego Biurrun
    echo "SSSE3 enabled             ${ssse3-no}"
2565 0db2ce77 Måns Rullgård
    echo "CMOV enabled              ${cmov-no}"
2566
    echo "CMOV is fast              ${fast_cmov-no}"
2567 971cc990 Michael Niedermayer
    echo "EBX available             ${ebx_available-no}"
2568
    echo "EBP available             ${ebp_available-no}"
2569 d3a4b4e0 Diego Biurrun
    echo "10 operands supported     ${ten_operands-no}"
2570 e41e8342 Fabrice Bellard
fi
2571 5b6c2cbd Diego Biurrun
if enabled arm; then
2572 0db2ce77 Måns Rullgård
    echo "ARMv5TE enabled           ${armv5te-no}"
2573
    echo "ARMv6 enabled             ${armv6-no}"
2574 ab5cb084 Måns Rullgård
    echo "ARMv6T2 enabled           ${armv6t2-no}"
2575 f55b299a Måns Rullgård
    echo "ARM VFP enabled           ${armvfp-no}"
2576 0db2ce77 Måns Rullgård
    echo "IWMMXT enabled            ${iwmmxt-no}"
2577 6b18d278 Måns Rullgård
    echo "NEON enabled              ${neon-no}"
2578 eba9ae3c Gildas Bazin
fi
2579 5b6c2cbd Diego Biurrun
if enabled mips; then
2580 0db2ce77 Måns Rullgård
    echo "MMI enabled               ${mmi-no}"
2581 e41e8342 Fabrice Bellard
fi
2582 5b6c2cbd Diego Biurrun
if enabled ppc; then
2583 0db2ce77 Måns Rullgård
    echo "AltiVec enabled           ${altivec-no}"
2584 30e98e62 Diego Biurrun
    echo "PPC 4xx optimizations     ${ppc4xx-no}"
2585 0db2ce77 Måns Rullgård
    echo "dcbzl available           ${dcbzl-no}"
2586 30e98e62 Diego Biurrun
    echo "performance report        ${powerpc_perf-no}"
2587
fi
2588
if enabled sparc; then
2589
    echo "VIS enabled               ${vis-no}"
2590 e41e8342 Fabrice Bellard
fi
2591 0db2ce77 Måns Rullgård
echo "gprof enabled             ${gprof-no}"
2592
echo "debug symbols             ${debug-no}"
2593 87a0fb62 Diego Biurrun
echo "strip symbols             ${stripping-no}"
2594 8400d6b8 Diego Biurrun
echo "optimizations             ${optimizations-no}"
2595 0db2ce77 Måns Rullgård
echo "static                    ${static-no}"
2596
echo "shared                    ${shared-no}"
2597 4a24ab64 Diego Biurrun
echo "postprocessing support    ${postproc-no}"
2598 f7679c54 Vitor Sessak
echo "new filter support        ${avfilter-no}"
2599 81124ba0 Vitor Sessak
echo "filters using lavformat   ${avfilter_lavf-no}"
2600 0db2ce77 Måns Rullgård
echo "network support           ${network-no}"
2601 90be59ef Ramiro Polla
if enabled network; then
2602 0db2ce77 Måns Rullgård
    echo "IPv6 support              ${ipv6-no}"
2603 bfd5afd8 Diego Biurrun
fi
2604 0db2ce77 Måns Rullgård
echo "threading support         ${thread_type-no}"
2605
echo "SDL support               ${sdl-no}"
2606 90be59ef Ramiro Polla
if enabled sdl_too_old; then
2607 bfd5afd8 Diego Biurrun
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
2608
fi
2609 0db2ce77 Måns Rullgård
echo "Sun medialib support      ${mlib-no}"
2610
echo "AVISynth enabled          ${avisynth-no}"
2611 f7b8bffe Ramiro Polla
echo "libdc1394 support         ${libdc1394-no}"
2612 690bfceb Anuradha Suraparaju
echo "libdirac enabled          ${libdirac-no}"
2613 0db2ce77 Måns Rullgård
echo "libfaac enabled           ${libfaac-no}"
2614
echo "libfaad enabled           ${libfaad-no}"
2615 7e0871a7 Diego Biurrun
echo "libfaad dlopened          ${libfaadbin-no}"
2616 0db2ce77 Måns Rullgård
echo "libgsm enabled            ${libgsm-no}"
2617
echo "libmp3lame enabled        ${libmp3lame-no}"
2618
echo "libnut enabled            ${libnut-no}"
2619 0b175caa Diego Biurrun
echo "libopencore-amrnb support ${libopencore_amrnb-no}"
2620
echo "libopencore-amrwb support ${libopencore_amrwb-no}"
2621 9a77d59a Jai Menon
echo "libopenjpeg enabled       ${libopenjpeg-no}"
2622 f7cd9eed Anuradha Suraparaju
echo "libschroedinger enabled   ${libschroedinger-no}"
2623 ae14f311 David Conrad
echo "libspeex enabled          ${libspeex-no}"
2624 0db2ce77 Måns Rullgård
echo "libtheora enabled         ${libtheora-no}"
2625
echo "libvorbis enabled         ${libvorbis-no}"
2626 d6bd62db Diego Biurrun
echo "libx264 enabled           ${libx264-no}"
2627
echo "libxvid enabled           ${libxvid-no}"
2628 0db2ce77 Måns Rullgård
echo "zlib enabled              ${zlib-no}"
2629 f402916e Aurelien Jacobs
echo "bzlib enabled             ${bzlib-no}"
2630 2c62e737 Diego Biurrun
echo
2631 de6d9b64 Fabrice Bellard
2632 5666fd73 Gwenole Beauchesne
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
2633 8138b9db Ramiro Polla
    echo "Enabled ${type}s:"
2634 f65c9da1 Måns Rullgård
    eval list=\$$(toupper $type)_LIST
2635 8138b9db Ramiro Polla
    for part in $list; do
2636 f65c9da1 Måns Rullgård
        enabled $part && echo ${part%_*}
2637
    done | sort | pr -3 -t
2638
    echo
2639 8138b9db Ramiro Polla
done
2640
2641 ba7a7039 Diego Biurrun
license="LGPL version 2.1 or later"
2642 ba321adb Jeremy Kolb
if enabled nonfree; then
2643 ba7a7039 Diego Biurrun
    license="nonfree and unredistributable"
2644 9cad0e4e Diego Biurrun
elif enabled gplv3; then
2645
    license="GPL version 3 or later"
2646
elif enabled lgplv3; then
2647
    license="LGPL version 3 or later"
2648 ba321adb Jeremy Kolb
elif enabled gpl; then
2649 ba7a7039 Diego Biurrun
    license="GPL version 2 or later"
2650 ba321adb Jeremy Kolb
fi
2651
2652
echo "License: $license"
2653 ca5323af Roberto Togni
2654 cf1392e9 Diego Biurrun
echo "Creating config.mak and config.h..."
2655
2656 ad212cc6 Måns Rullgård
enabled stripping || strip="echo skipping strip"
2657
2658 29799f8b Diego Biurrun
echo "# Automatically generated by configure - do not modify!" > config.mak
2659 8c6d2da5 Måns Rullgård
echo "ifndef FFMPEG_CONFIG_MAK" >> config.mak
2660
echo "FFMPEG_CONFIG_MAK=1" >> config.mak
2661
2662 d921f03f Diego Biurrun
echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak
2663 c9d19248 Måns Rullgård
echo "prefix=$prefix" >> config.mak
2664 22a324da Diego Biurrun
echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
2665
echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
2666
echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
2667
echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
2668 14a8acf1 Måns Rullgård
echo "DATADIR=\$(DESTDIR)$datadir" >> config.mak
2669 22a324da Diego Biurrun
echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
2670 0a7ee3ef Diego Biurrun
echo "SRC_PATH=\"$source_path\"" >> config.mak
2671
echo "SRC_PATH_BARE=$source_path" >> config.mak
2672
echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2673 980fc7b8 Fabrice Bellard
echo "CC=$cc" >> config.mak
2674 313c46a6 Måns Rullgård
echo "AS=$as" >> config.mak
2675 684b28e0 Måns Rullgård
echo "LD=$ld" >> config.mak
2676 50567afa Måns Rullgård
echo "DEPCC=$dep_cc" >> config.mak
2677 304d586d Loren Merritt
echo "YASM=$yasmexe" >> config.mak
2678 980fc7b8 Fabrice Bellard
echo "AR=$ar" >> config.mak
2679 be7109c1 Michael Niedermayer
echo "RANLIB=$ranlib" >> config.mak
2680 20369773 Dave Yeo
echo "LN_S=$ln_s" >> config.mak
2681 ad212cc6 Måns Rullgård
echo "STRIP=$strip" >> config.mak
2682 ce40e347 Måns Rullgård
echo "CPPFLAGS=$CPPFLAGS" >> config.mak
2683 3198f618 Måns Rullgård
echo "CFLAGS=$CFLAGS" >> config.mak
2684 2f2e6c7c Måns Rullgård
echo "ASFLAGS=$ASFLAGS" >> config.mak
2685 7e6c86e6 Måns Rullgård
echo "CC_O=$CC_O" >> config.mak
2686 0f3cb305 Fabrice Bellard
echo "LDFLAGS=$LDFLAGS" >> config.mak
2687 c536cb09 Diego Biurrun
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
2688 e1707f52 Michael Niedermayer
echo "SHFLAGS=$SHFLAGS" >> config.mak
2689 304d586d Loren Merritt
echo "YASMFLAGS=$YASMFLAGS" >> config.mak
2690 ce8871c2 Måns Rullgård
echo "BUILDSUF=$build_suffix" >> config.mak
2691 c5f14466 Ramiro Polla
echo "FULLNAME=$FULLNAME" >> config.mak
2692 f3ec2d46 Slavik Gnatenko
echo "LIBPREF=$LIBPREF" >> config.mak
2693 c5f14466 Ramiro Polla
echo "LIBSUF=$LIBSUF" >> config.mak
2694 24743a76 Diego Biurrun
echo "LIBNAME=$LIBNAME" >> config.mak
2695 f3ec2d46 Slavik Gnatenko
echo "SLIBPREF=$SLIBPREF" >> config.mak
2696 c5f14466 Ramiro Polla
echo "SLIBSUF=$SLIBSUF" >> config.mak
2697
echo "EXESUF=$EXESUF" >> config.mak
2698 ac63af34 Diego Biurrun
echo "EXTRA_VERSION=$extra_version" >> config.mak
2699 d8059267 Måns Rullgård
echo "DEPFLAGS=$DEPFLAGS" >> config.mak
2700 07dec06e Måns Rullgård
echo "CCDEP=$CCDEP" >> config.mak
2701
echo "ASDEP=$ASDEP" >> config.mak
2702
echo "CC_DEPFLAGS=$CC_DEPFLAGS" >> config.mak
2703
echo "AS_DEPFLAGS=$AS_DEPFLAGS" >> config.mak
2704 9da6609f Måns Rullgård
echo "HOSTCC=$host_cc" >> config.mak
2705
echo "HOSTCFLAGS=$host_cflags" >> config.mak
2706 82bb3329 Måns Rullgård
echo "HOSTEXESUF=$HOSTEXESUF" >> config.mak
2707 9da6609f Måns Rullgård
echo "HOSTLDFLAGS=$host_ldflags" >> config.mak
2708
echo "HOSTLIBS=$host_libs" >> config.mak
2709 a7ada2ba Måns Rullgård
echo "TARGET_EXEC=$target_exec" >> config.mak
2710
echo "TARGET_PATH=$target_path" >> config.mak
2711 b4f93564 Måns Rullgård
echo "SDL_LIBS=$sdl_libs" >> config.mak
2712
echo "SDL_CFLAGS=$sdl_cflags" >> config.mak
2713 5a872801 Luca Barbato
2714 719c8e00 Måns Rullgård
get_version(){
2715
    name=$1
2716
    file=$source_path/$2
2717 147e7692 Måns Rullgård
    eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
2718
    eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
2719 0e32c8c6 Måns Rullgård
    lcname=$(tolower $name)
2720
    eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
2721
    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
2722 719c8e00 Måns Rullgård
}
2723
2724 147e7692 Måns Rullgård
get_version LIBSWSCALE  libswscale/swscale.h
2725
get_version LIBPOSTPROC libpostproc/postprocess.h
2726
get_version LIBAVCODEC  libavcodec/avcodec.h
2727
get_version LIBAVDEVICE libavdevice/avdevice.h
2728
get_version LIBAVFORMAT libavformat/avformat.h
2729
get_version LIBAVUTIL   libavutil/avutil.h
2730 a6601d69 Måns Rullgård
get_version LIBAVFILTER libavfilter/avfilter.h
2731 5a872801 Luca Barbato
2732 5af4e0cc Måns Rullgård
if enabled shared; then
2733 dcc01c06 Ramiro Polla
    echo "LIBTARGET=${LIBTARGET}" >> config.mak
2734 7483e694 Diego Biurrun
    echo "SLIBNAME=${SLIBNAME}" >> config.mak
2735
    echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2736
    echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
2737 d22e8442 Dave Yeo
    echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
2738 7483e694 Diego Biurrun
    echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
2739
    echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
2740
    echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
2741 0319c531 Nick Kurshev
fi
2742 d7e27559 Diego Biurrun
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
2743 ef0bc4c9 François Revol
echo "EXTRALIBS=$extralibs" >> config.mak
2744 d2845d68 Diego Biurrun
2745 7b5e8a27 Diego Biurrun
echo "ARCH=$arch" >> config.mak
2746
2747 523ef551 Diego Biurrun
2748
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
2749
echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
2750
echo "#define FFMPEG_CONFIG_H" >> $TMPH
2751
echo "#define FFMPEG_CONFIGURATION \"$(c_escape $FFMPEG_CONFIGURATION)\"" >> $TMPH
2752
echo "#define FFMPEG_DATADIR \"$(eval c_escape $datadir)\"" >> $TMPH
2753
2754 a3d7c197 Diego Biurrun
echo "#define CC_TYPE \"$cc_type\"" >> $TMPH
2755
echo "#define CC_VERSION $cc_version" >> $TMPH
2756 523ef551 Diego Biurrun
echo "#define restrict $_restrict" >> $TMPH
2757
2758
if enabled small || disabled optimizations; then
2759
    echo "#define av_always_inline"  >> $TMPH
2760
fi
2761
2762
2763
# Apparently it's not possible to portably echo a backslash.
2764
enabled asmalign_pot &&
2765
    printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
2766
    printf '#define ASMALIGN(ZEROBITS) ".align 1 << " #ZEROBITS "\\n\\t"\n' >> $TMPH
2767
2768
echo "#define EXTERN_PREFIX \"${extern_prefix}\"" >> $TMPH
2769 c7f7978a Måns Rullgård
echo "#define EXTERN_ASM ${extern_prefix}" >> $TMPH
2770 523ef551 Diego Biurrun
2771 3d907e22 Måns Rullgård
print_config ARCH_   $TMPH config.mak $ARCH_LIST
2772
print_config HAVE_   $TMPH config.mak $HAVE_LIST
2773 7483e694 Diego Biurrun
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST       \
2774 b6bb00b0 Måns Rullgård
                                      $CONFIG_EXTRA      \
2775 7483e694 Diego Biurrun
                                      $DECODER_LIST      \
2776
                                      $ENCODER_LIST      \
2777 5666fd73 Gwenole Beauchesne
                                      $HWACCEL_LIST      \
2778 7483e694 Diego Biurrun
                                      $PARSER_LIST       \
2779
                                      $BSF_LIST          \
2780
                                      $DEMUXER_LIST      \
2781
                                      $MUXER_LIST        \
2782 f7679c54 Vitor Sessak
                                      $FILTER_LIST       \
2783 7483e694 Diego Biurrun
                                      $PROTOCOL_LIST     \
2784
                                      $INDEV_LIST        \
2785
                                      $OUTDEV_LIST       \
2786 8ac17293 Steve L'Homme
2787 9c05103f Diego Biurrun
echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
2788 8c6d2da5 Måns Rullgård
echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
2789 9c05103f Diego Biurrun
2790 b7860763 Diego Biurrun
# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
2791 3ae3b721 Ramiro Polla
cmp -s $TMPH config.h &&
2792
    echo "config.h is unchanged" ||
2793
    mv -f $TMPH config.h
2794 3d204385 Nick Kurshev
2795 165af439 Måns Rullgård
# build tree in object directory if source path is different from current one
2796 90be59ef Ramiro Polla
if enabled source_path_used; then
2797 b767b9cd Måns Rullgård
    DIRS="
2798
        doc
2799
        libavcodec
2800
        libavcodec/$arch
2801
        libavdevice
2802
        libavfilter
2803
        libavformat
2804
        libavutil
2805
        libavutil/$arch
2806
        libpostproc
2807
        libswscale
2808
        libswscale/$arch
2809
        tests
2810
        tools
2811
    "
2812
    FILES="
2813
        Makefile
2814
        common.mak
2815
        subdir.mak
2816
        doc/texi2pod.pl
2817
        libavcodec/Makefile
2818
        libavdevice/Makefile
2819
        libavfilter/Makefile
2820
        libavformat/Makefile
2821
        libavutil/Makefile
2822
        libpostproc/Makefile
2823
        libswscale/Makefile
2824
    "
2825 165af439 Måns Rullgård
    for dir in $DIRS ; do
2826 7483e694 Diego Biurrun
        mkdir -p $dir
2827 165af439 Måns Rullgård
    done
2828
    for f in $FILES ; do
2829 20369773 Dave Yeo
        $ln_s "$source_path/$f" $f
2830 165af439 Måns Rullgård
    done
2831
fi
2832 def4272a Aurelien Jacobs
2833
2834 d0674868 Diego Biurrun
# build pkg-config files
2835 def4272a Aurelien Jacobs
2836 d0674868 Diego Biurrun
pkgconfig_generate(){
2837
name=$1
2838 b0dfd108 Charles Yates
shortname=${name#lib}${build_suffix}
2839 d0674868 Diego Biurrun
comment=$2
2840
version=$3
2841
libs=$4
2842
requires=$5
2843 25cd5cb3 Diego Biurrun
cat <<EOF > $name/$name.pc
2844 3e89171a Måns Rullgård
pre