Statistics
| Branch: | Revision:

ffmpeg / configure @ 4815e246

History | View | Annotate | Download (71.7 KB)

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