Statistics
| Branch: | Revision:

ffmpeg / configure @ 63cae55d

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