Statistics
| Branch: | Revision:

ffmpeg / configure @ 9dc92a38

History | View | Annotate | Download (62.8 KB)

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