Statistics
| Branch: | Revision:

ffmpeg / configure @ 732c9a34

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