Statistics
| Branch: | Revision:

ffmpeg / configure @ 336cc1b0

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