Statistics
| Branch: | Revision:

ffmpeg / configure @ d934de5c

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