Statistics
| Branch: | Revision:

ffmpeg / configure @ 98ef6079

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