Statistics
| Branch: | Revision:

ffmpeg / configure @ 598ef02b

History | View | Annotate | Download (84 KB)

1
#!/bin/sh
2
#
3
# FFmpeg configure script
4
#
5
# Copyright (c) 2000-2002 Fabrice Bellard
6
# Copyright (c) 2005-2008 Diego Biurrun
7
# Copyright (c) 2005-2008 Mans Rullgard
8
#
9

    
10
# Prevent locale nonsense from breaking basic text processing.
11
LC_ALL=C
12
export LC_ALL
13

    
14
# make sure we are running under a compatible shell
15
# try to make this part work with most shells
16

    
17
try_exec(){
18
    echo "Trying shell $1"
19
    type "$1" > /dev/null 2>&1 && exec "$@"
20
}
21

    
22
unset foo
23
(: ${foo%%bar}) 2> /dev/null
24
E1="$?"
25

    
26
(: ${foo?}) 2> /dev/null
27
E2="$?"
28

    
29
if test "$E1" != 0 || test "$E2" = 0; then
30
    echo "Broken shell detected.  Trying alternatives."
31
    export FF_CONF_EXEC
32
    if test "0$FF_CONF_EXEC" -lt 1; then
33
        FF_CONF_EXEC=1
34
        try_exec bash "$0" "$@"
35
    fi
36
    if test "0$FF_CONF_EXEC" -lt 2; then
37
        FF_CONF_EXEC=2
38
        try_exec ksh "$0" "$@"
39
    fi
40
    if test "0$FF_CONF_EXEC" -lt 3; then
41
        FF_CONF_EXEC=3
42
        try_exec /usr/xpg4/bin/sh "$0" "$@"
43
    fi
44
    echo "No compatible shell script interpreter found."
45
    echo "This configure script requires a POSIX-compatible shell"
46
    echo "such as bash or ksh."
47
    echo "THIS IS NOT A BUG IN FFMPEG, DO NOT REPORT IT AS SUCH."
48
    echo "Instead, install a working POSIX-compatible shell."
49
    echo "Disabling this configure test will create a broken FFmpeg."
50
    if test "$BASH_VERSION" = '2.04.0(1)-release'; then
51
        echo "This bash version ($BASH_VERSION) is broken on your platform."
52
        echo "Upgrade to a later version if available."
53
    fi
54
    exit 1
55
fi
56

    
57
show_help(){
58
cat <<EOF
59
Usage: configure [options]
60
Options: [defaults in brackets after descriptions]
61

    
62
Standard options:
63
  --help                   print this message
64
  --logfile=FILE           log tests and output to FILE [config.err]
65
  --disable-logging        do not log configure debug information
66
  --prefix=PREFIX          install in PREFIX [$prefix]
67
  --bindir=DIR             install binaries in DIR [PREFIX/bin]
68
  --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
69
  --libdir=DIR             install libs in DIR [PREFIX/lib]
70
  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]
71
  --incdir=DIR             install includes in DIR [PREFIX/include]
72
  --mandir=DIR             install man page in DIR [PREFIX/share/man]
73

    
74
Configuration options:
75
  --disable-static         do not build static libraries [no]
76
  --enable-shared          build shared libraries [no]
77
  --enable-gpl             allow use of GPL code, the resulting libs
78
                           and binaries will be under GPL [no]
79
  --enable-version3        upgrade (L)GPL to version 3 [no]
80
  --enable-nonfree         allow use of nonfree code, the resulting libs
81
                           and binaries will be unredistributable [no]
82
  --disable-doc            do not build documentation
83
  --disable-ffmpeg         disable ffmpeg build
84
  --disable-ffplay         disable ffplay build
85
  --disable-ffserver       disable ffserver build
86
  --enable-postproc        enable GPLed postprocessing support [no]
87
  --enable-avfilter        video filter support [no]
88
  --enable-avfilter-lavf   video filters dependent on avformat [no]
89
  --enable-beosthreads     use BeOS threads [no]
90
  --enable-os2threads      use OS/2 threads [no]
91
  --enable-pthreads        use pthreads [no]
92
  --enable-w32threads      use Win32 threads [no]
93
  --enable-x11grab         enable X11 grabbing [no]
94
  --disable-network        disable network support [no]
95
  --disable-ipv6           disable IPv6 support [no]
96
  --disable-mpegaudio-hp   faster (but less accurate) MPEG audio decoding [no]
97
  --enable-gray            enable full grayscale support (slower color)
98
  --disable-swscale-alpha  disable alpha channel support in swscale
99
  --disable-fastdiv        disable table-based division
100
  --enable-small           optimize for size instead of speed
101
  --disable-aandct         disable AAN DCT code
102
  --disable-fft            disable FFT code
103
  --disable-golomb         disable Golomb code
104
  --disable-lpc            disable LPC code
105
  --disable-mdct           disable MDCT code
106
  --disable-rdft           disable RDFT code
107
  --disable-vaapi          disable VAAPI code
108
  --disable-vdpau          disable VDPAU code
109
  --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
110
  --enable-hardcoded-tables use hardcoded tables instead of runtime generation
111
  --enable-memalign-hack   emulate memalign, interferes with memory debuggers
112
  --enable-beos-netserver  enable BeOS netserver
113
  --disable-encoder=NAME   disable encoder NAME
114
  --enable-encoder=NAME    enable encoder NAME
115
  --disable-encoders       disable all encoders
116
  --disable-decoder=NAME   disable decoder NAME
117
  --enable-decoder=NAME    enable decoder NAME
118
  --disable-decoders       disable all decoders
119
  --disable-hwaccel=NAME   disable hwaccel NAME
120
  --enable-hwaccel=NAME    enable hwaccel NAME
121
  --disable-hwaccels       disable all hwaccels
122
  --disable-muxer=NAME     disable muxer NAME
123
  --enable-muxer=NAME      enable muxer NAME
124
  --disable-muxers         disable all muxers
125
  --disable-demuxer=NAME   disable demuxer NAME
126
  --enable-demuxer=NAME    enable demuxer NAME
127
  --disable-demuxers       disable all demuxers
128
  --enable-parser=NAME     enable parser NAME
129
  --disable-parser=NAME    disable parser NAME
130
  --disable-parsers        disable all parsers
131
  --enable-bsf=NAME        enable bitstream filter NAME
132
  --disable-bsf=NAME       disable bitstream filter NAME
133
  --disable-bsfs           disable all bitstream filters
134
  --enable-protocol=NAME   enable protocol NAME
135
  --disable-protocol=NAME  disable protocol NAME
136
  --disable-protocols      disable all protocols
137
  --disable-indev=NAME     disable input device NAME
138
  --disable-outdev=NAME    disable output device NAME
139
  --disable-indevs         disable input devices
140
  --disable-outdevs        disable output devices
141
  --disable-devices        disable all devices
142
  --enable-filter=NAME     enable filter NAME
143
  --disable-filter=NAME    disable filter NAME
144
  --disable-filters        disable all filters
145
  --list-decoders          show all available decoders
146
  --list-encoders          show all available encoders
147
  --list-hwaccels          show all available hardware accelerators
148
  --list-muxers            show all available muxers
149
  --list-demuxers          show all available demuxers
150
  --list-parsers           show all available parsers
151
  --list-protocols         show all available protocols
152
  --list-bsfs              show all available bitstream filters
153
  --list-indevs            show all available input devices
154
  --list-outdevs           show all available output devices
155
  --list-filters           show all available filters
156

    
157
External library support:
158
  --enable-avisynth        enable reading of AVISynth script files [no]
159
  --enable-bzlib           enable bzlib [autodetect]
160
  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
161
  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
162
  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
163
                           and libraw1394 [no]
164
  --enable-libdirac        enable Dirac support via libdirac [no]
165
  --enable-libfaac         enable FAAC support via libfaac [no]
166
  --enable-libfaad         enable FAAD support via libfaad [no]
167
  --enable-libfaadbin      open libfaad.so.0 at runtime [no]
168
  --enable-libgsm          enable GSM support via libgsm [no]
169
  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
170
  --enable-libnut          enable NUT (de)muxing via libnut,
171
                           native (de)muxer exists [no]
172
  --enable-libopenjpeg     enable JPEG 2000 decoding via OpenJPEG [no]
173
  --enable-libschroedinger enable Dirac support via libschroedinger [no]
174
  --enable-libspeex        enable Speex decoding via libspeex [no]
175
  --enable-libtheora       enable Theora encoding via libtheora [no]
176
  --enable-libvorbis       enable Vorbis encoding via libvorbis,
177
                           native implementation exists [no]
178
  --enable-libx264         enable H.264 encoding via x264 [no]
179
  --enable-libxvid         enable Xvid encoding via xvidcore,
180
                           native MPEG-4/Xvid encoder exists [no]
181
  --enable-mlib            enable Sun medialib [no]
182
  --enable-zlib            enable zlib [autodetect]
183

    
184
Advanced options (experts only):
185
  --source-path=PATH       path to source code [$source_path]
186
  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
187
  --enable-cross-compile   assume a cross-compiler is used
188
  --sysroot=PATH           root of cross-build tree
189
  --sysinclude=PATH        location of cross-build system headers
190
  --target-os=OS           compiler targets OS [$target_os]
191
  --target-exec=CMD        command to run executables on target
192
  --target-path=DIR        path to view of build directory on target
193
  --nm=NM                  use nm tool
194
  --as=AS                  use assembler AS [$as_default]
195
  --cc=CC                  use C compiler CC [$cc_default]
196
  --ld=LD                  use linker LD
197
  --host-cc=HOSTCC         use host C compiler HOSTCC
198
  --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
199
  --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
200
  --host-libs=HLIBS        use libs HLIBS when linking for host
201
  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
202
  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
203
  --extra-libs=ELIBS       add ELIBS [$ELIBS]
204
  --extra-version=STRING   version string suffix []
205
  --build-suffix=SUFFIX    library name suffix []
206
  --arch=ARCH              select architecture [$arch]
207
  --cpu=CPU                select the minimum required CPU (affects
208
                           instruction selection, may crash on older CPUs)
209
  --enable-powerpc-perf    enable performance report on PPC
210
                           (requires enabling PMC)
211
  --disable-altivec        disable AltiVec optimizations
212
  --disable-amd3dnow       disable 3DNow! optimizations
213
  --disable-amd3dnowext    disable 3DNow! extended optimizations
214
  --disable-mmx            disable MMX optimizations
215
  --disable-mmx2           disable MMX2 optimizations
216
  --disable-sse            disable SSE optimizations
217
  --disable-ssse3          disable SSSE3 optimizations
218
  --disable-armv5te        disable armv5te optimizations
219
  --disable-armv6          disable armv6 optimizations
220
  --disable-armv6t2        disable armv6t2 optimizations
221
  --disable-armvfp         disable ARM VFP optimizations
222
  --disable-iwmmxt         disable iwmmxt optimizations
223
  --disable-mmi            disable MMI optimizations
224
  --disable-neon           disable neon optimizations
225
  --disable-vis            disable VIS optimizations
226
  --disable-yasm           disable use of yasm assembler
227
  --enable-pic             build position-independent code
228

    
229
Developer options (useful when working on FFmpeg itself):
230
  --disable-debug          disable debugging symbols
231
  --enable-debug=LEVEL     set the debug level [$debuglevel]
232
  --enable-gprof           enable profiling with gprof [$gprof]
233
  --disable-optimizations  disable compiler optimizations
234
  --enable-extra-warnings  enable more compiler warnings
235
  --disable-stripping      disable stripping of executables and shared libraries
236

    
237
NOTE: Object files are built at the place where configure is launched.
238
EOF
239
  exit 0
240
}
241

    
242
log(){
243
    echo "$@" >> $logfile
244
}
245

    
246
log_file(){
247
    log BEGIN $1
248
    pr -n -t $1 >> $logfile
249
    log END $1
250
}
251

    
252
echolog(){
253
    log "$@"
254
    echo "$@"
255
}
256

    
257
die(){
258
    echolog "$@"
259
    cat <<EOF
260

    
261
If you think configure made a mistake, make sure you are using the latest
262
version from SVN.  If the latest version fails, report the problem to the
263
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
264
EOF
265
    if disabled logging; then
266
        cat <<EOF
267
Rerun configure with logging enabled (do not use --disable-logging), and
268
include the log this produces with your report.
269
EOF
270
    else
271
cat <<EOF
272
Include the log file "$logfile" produced by configure as this will help
273
solving the problem.
274
EOF
275
    fi
276
    exit 1
277
}
278

    
279
# Avoid locale weirdness, besides we really just want to translate ASCII.
280
toupper(){
281
    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
282
}
283

    
284
tolower(){
285
    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
286
}
287

    
288
c_escape(){
289
    echo "$*" | sed 's/["\\]/\\\0/g'
290
}
291

    
292
sh_quote(){
293
    v=$(echo "$1" | sed "s/'/'\\\\''/g")
294
    test "$v" = "${v#*[ |&;<>()$\`\\\"\'*?\[\]#~=%]}" || v="'$v'"
295
    echo "$v"
296
}
297

    
298
filter(){
299
    pat=$1
300
    shift
301
    for v; do
302
        eval "case $v in $pat) echo $v ;; esac"
303
    done
304
}
305

    
306
set_all(){
307
    value=$1
308
    shift
309
    for var in $*; do
310
        eval $var=$value
311
    done
312
}
313

    
314
set_weak(){
315
    value=$1
316
    shift
317
    for var; do
318
        eval : \${$var:=$value}
319
    done
320
}
321

    
322
pushvar(){
323
    for var in $*; do
324
        eval level=\${${var}_level:=0}
325
        eval ${var}_${level}="\$$var"
326
        eval ${var}_level=$(($level+1))
327
    done
328
}
329

    
330
popvar(){
331
    for var in $*; do
332
        eval level=\${${var}_level:-0}
333
        test $level = 0 && continue
334
        eval level=$(($level-1))
335
        eval $var="\${${var}_${level}}"
336
        eval ${var}_level=$level
337
        eval unset ${var}_${level}
338
    done
339
}
340

    
341
enable(){
342
    set_all yes $*
343
}
344

    
345
disable(){
346
    set_all no $*
347
}
348

    
349
enable_weak(){
350
    set_weak yes $*
351
}
352

    
353
disable_weak(){
354
    set_weak no $*
355
}
356

    
357
enable_safe(){
358
    for var; do
359
        enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
360
    done
361
}
362

    
363
disable_safe(){
364
    for var; do
365
        disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
366
    done
367
}
368

    
369
do_enable_deep(){
370
    for var; do
371
        enabled $var && continue
372
        eval sel="\$${var}_select"
373
        eval sgs="\$${var}_suggest"
374
        pushvar var sgs
375
        enable_deep $sel
376
        popvar sgs
377
        enable_deep_weak $sgs
378
        popvar var
379
    done
380
}
381

    
382
enable_deep(){
383
    do_enable_deep $*
384
    enable $*
385
}
386

    
387
enable_deep_weak(){
388
    do_enable_deep $*
389
    enable_weak $*
390
}
391

    
392
enabled(){
393
    test "${1#!}" = "$1" && op== || op=!=
394
    eval test "x\$${1#!}" $op "xyes"
395
}
396

    
397
disabled(){
398
    test "${1#!}" = "$1" && op== || op=!=
399
    eval test "x\$${1#!}" $op "xno"
400
}
401

    
402
enabled_all(){
403
    for opt; do
404
        enabled $opt || return 1
405
    done
406
}
407

    
408
disabled_all(){
409
    for opt; do
410
        disabled $opt || return 1
411
    done
412
}
413

    
414
enabled_any(){
415
    for opt; do
416
        enabled $opt && return 0
417
    done
418
}
419

    
420
disabled_any(){
421
    for opt; do
422
        disabled $opt && return 0
423
    done
424
    return 1
425
}
426

    
427
set_default(){
428
    for opt; do
429
        eval : \${$opt:=\$${opt}_default}
430
    done
431
}
432

    
433
is_in(){
434
    value=$1
435
    shift
436
    for var in $*; do
437
        [ $var = $value ] && return 0
438
    done
439
    return 1
440
}
441

    
442
check_deps(){
443
    for cfg; do
444
        cfg="${cfg#!}"
445
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
446
        disabled ${cfg}_checking && continue
447
        enable ${cfg}_checking
448

    
449
        eval dep_all="\$${cfg}_deps"
450
        eval dep_any="\$${cfg}_deps_any"
451
        eval dep_sel="\$${cfg}_select"
452
        eval dep_sgs="\$${cfg}_suggest"
453
        eval dep_ifa="\$${cfg}_if"
454
        eval dep_ifn="\$${cfg}_if_any"
455

    
456
        pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
457
        check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
458
        popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
459

    
460
        [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
461
        [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
462
        enabled_all  $dep_all || disable $cfg
463
        enabled_any  $dep_any || disable $cfg
464
        disabled_any $dep_sel && disable $cfg
465

    
466
        if enabled $cfg; then
467
            eval dep_extralibs="\$${cfg}_extralibs"
468
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
469
            enable_deep $dep_sel
470
            enable_deep_weak $dep_sgs
471
        fi
472

    
473
        disable ${cfg}_checking
474
    done
475
}
476

    
477
print_config(){
478
    pfx=$1
479
    header=$2
480
    makefile=$3
481
    shift 3
482
    for cfg; do
483
        ucname="$(toupper $cfg)"
484
        if enabled $cfg; then
485
            echo "#define ${pfx}${ucname} 1" >> $header
486
            echo "${pfx}${ucname}=yes" >> $makefile
487
        else
488
            echo "#define ${pfx}${ucname} 0" >> $header
489
            echo "!${pfx}${ucname}=yes" >> $makefile
490
        fi
491
    done
492
}
493

    
494
flags_saved(){
495
    (: ${SAVE_CFLAGS?}) 2> /dev/null
496
}
497

    
498
save_flags(){
499
    flags_saved && return
500
    SAVE_CFLAGS="$CFLAGS"
501
    SAVE_LDFLAGS="$LDFLAGS"
502
    SAVE_extralibs="$extralibs"
503
}
504

    
505
restore_flags(){
506
    flags_saved || return
507
    CFLAGS="$SAVE_CFLAGS"
508
    LDFLAGS="$SAVE_LDFLAGS"
509
    extralibs="$SAVE_extralibs"
510
    unset SAVE_CFLAGS
511
    unset SAVE_LDFLAGS
512
    unset SAVE_extralibs
513
}
514

    
515
temp_cflags(){
516
    save_flags
517
    CFLAGS="$CFLAGS $*"
518
}
519

    
520
temp_ldflags(){
521
    save_flags
522
    LDFLAGS="$LDFLAGS $*"
523
}
524

    
525
temp_extralibs(){
526
    save_flags
527
    extralibs="$extralibs $*"
528
}
529

    
530
append(){
531
    var=$1
532
    shift
533
    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
534
    eval "$var=\"\$$var $*\""
535
}
536

    
537
add_cppflags(){
538
    append CPPFLAGS $($filter_cppflags "$@")
539
}
540

    
541
add_cflags(){
542
    append CFLAGS $($filter_cflags "$@")
543
}
544

    
545
add_asflags(){
546
    append ASFLAGS $($filter_asflags "$@")
547
}
548

    
549
add_ldflags(){
550
    append LDFLAGS "$@"
551
}
552

    
553
add_extralibs(){
554
    append extralibs "$@"
555
}
556

    
557
check_cmd(){
558
    log "$@"
559
    "$@" >> $logfile 2>&1
560
}
561

    
562
check_cc(){
563
    log check_cc "$@"
564
    cat > $TMPC
565
    log_file $TMPC
566
    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC
567
}
568

    
569
check_cpp(){
570
    log check_cpp "$@"
571
    cat > $TMPC
572
    log_file $TMPC
573
    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC
574
}
575

    
576
check_as(){
577
    log check_as "$@"
578
    cat > $TMPC
579
    log_file $TMPC
580
    check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC
581
}
582

    
583
check_asm(){
584
    log check_asm "$@"
585
    name="$1"
586
    asm="$2"
587
    shift 2
588
    disable $name
589
    check_as "$@" <<EOF && enable $name
590
void foo(void){ __asm__ volatile($asm); }
591
EOF
592
}
593

    
594
check_yasm(){
595
    log check_yasm "$@"
596
    echo "$1" > $TMPS
597
    log_file $TMPS
598
    shift 1
599
    check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
600
}
601

    
602
check_ld(){
603
    log check_ld "$@"
604
    check_cc || return
605
    flags=''
606
    libs=''
607
    for f; do
608
        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
609
    done
610
    check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
611
}
612

    
613
check_cppflags(){
614
    log check_cppflags "$@"
615
    set -- $($filter_cppflags "$@")
616
    check_cc "$@" <<EOF && append CPPFLAGS "$@"
617
int x;
618
EOF
619
}
620

    
621
check_cflags(){
622
    log check_cflags "$@"
623
    set -- $($filter_cflags "$@")
624
    check_cc "$@" <<EOF && append CFLAGS "$@"
625
int x;
626
EOF
627
}
628

    
629
check_ldflags(){
630
    log check_ldflags "$@"
631
    check_ld "$@" <<EOF && add_ldflags "$@"
632
int main(void){ return 0; }
633
EOF
634
}
635

    
636
check_header(){
637
    log check_header "$@"
638
    header=$1
639
    shift
640
    disable_safe $header
641
    check_cpp "$@" <<EOF && enable_safe $header
642
#include <$header>
643
int x;
644
EOF
645
}
646

    
647
check_func(){
648
    log check_func "$@"
649
    func=$1
650
    shift
651
    disable $func
652
    check_ld "$@" <<EOF && enable $func
653
extern int $func();
654
int main(void){ $func(); }
655
EOF
656
}
657

    
658
check_func_headers(){
659
    log check_func_headers "$@"
660
    headers=$1
661
    func=$2
662
    shift 2
663
    disable $func
664
    incs=""
665
    for hdr in $headers; do
666
        incs="$incs
667
#include <$hdr>"
668
    done
669
    check_ld "$@" <<EOF && enable $func && enable_safe $headers
670
$incs
671
int main(int argc, char **argv){
672
    return (long) $func;
673
}
674
EOF
675
}
676

    
677
check_cpp_condition(){
678
    log check_cpp_condition "$@"
679
    header=$1
680
    condition=$2
681
    check_cpp <<EOF
682
#include <$header>
683
#if !($condition)
684
#error "unsatisfied condition: $condition"
685
#endif
686
EOF
687
}
688

    
689
check_lib(){
690
    log check_lib "$@"
691
    header="$1"
692
    func="$2"
693
    shift 2
694
    temp_extralibs "$@"
695
    check_header $header && check_func $func && add_extralibs "$@"
696
    err=$?
697
    restore_flags
698
    return $err
699
}
700

    
701
check_lib2(){
702
    log check_lib2 "$@"
703
    headers="$1"
704
    func="$2"
705
    shift 2
706
    temp_extralibs "$@"
707
    check_func_headers "$headers" $func && add_extralibs "$@"
708
    err=$?
709
    restore_flags
710
    return $err
711
}
712

    
713
check_exec(){
714
    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
715
}
716

    
717
check_exec_crash(){
718
    code=$(cat)
719

    
720
    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
721
    # are safe but may not be available everywhere.  Thus we use
722
    # raise(SIGTERM) instead.  The check is run in a subshell so we
723
    # can redirect the "Terminated" message from the shell.  SIGBUS
724
    # is not defined by standard C so it is used conditionally.
725

    
726
    (check_exec "$@") >> $logfile 2>&1 <<EOF
727
#include <signal.h>
728
static void sighandler(int sig){
729
    raise(SIGTERM);
730
}
731
int main(void){
732
    signal(SIGILL, sighandler);
733
    signal(SIGFPE, sighandler);
734
    signal(SIGSEGV, sighandler);
735
#ifdef SIGBUS
736
    signal(SIGBUS, sighandler);
737
#endif
738
    { $code }
739
}
740
EOF
741
}
742

    
743
check_type(){
744
    log check_type "$@"
745
    headers=$1
746
    type=$2
747
    shift 2
748
    disable_safe "$type"
749
    incs=""
750
    for hdr in $headers; do
751
        incs="$incs
752
#include <$hdr>"
753
    done
754
    check_cc "$@" <<EOF && enable_safe "$type"
755
$incs
756
$type v;
757
EOF
758
}
759

    
760
require(){
761
    name="$1"
762
    header="$2"
763
    func="$3"
764
    shift 3
765
    check_lib $header $func "$@" || die "ERROR: $name not found"
766
}
767

    
768
require2(){
769
    name="$1"
770
    headers="$2"
771
    func="$3"
772
    shift 3
773
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
774
}
775

    
776
check_foo_config(){
777
    cfg=$1
778
    pkg=$2
779
    header=$3
780
    func=$4
781
    shift 4
782
    disable $cfg
783
    check_cmd ${pkg}-config --version
784
    err=$?
785
    if test "$err" = 0; then
786
        temp_cflags $(${pkg}-config --cflags)
787
        temp_extralibs $(${pkg}-config --libs)
788
        check_lib "$@" $header $func && enable $cfg
789
    fi
790
    return $err
791
}
792

    
793
check_host_cc(){
794
    log check_host_cc "$@"
795
    cat > $TMPC
796
    log_file $TMPC
797
    check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC
798
}
799

    
800
check_host_cflags(){
801
    log check_host_cflags "$@"
802
    check_host_cc "$@" <<EOF && append host_cflags "$@"
803
int x;
804
EOF
805
}
806

    
807
apply(){
808
    file=$1
809
    shift
810
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
811
}
812

    
813
# CONFIG_LIST contains configurable options, while HAVE_LIST is for
814
# system-dependent things.
815

    
816
COMPONENT_LIST="
817
    bsfs
818
    decoders
819
    demuxers
820
    encoders
821
    filters
822
    hwaccels
823
    indevs
824
    muxers
825
    outdevs
826
    parsers
827
    protocols
828
"
829

    
830
CONFIG_LIST="
831
    $COMPONENT_LIST
832
    aandct
833
    avfilter
834
    avfilter_lavf
835
    avisynth
836
    beos_netserver
837
    bzlib
838
    doc
839
    fastdiv
840
    ffmpeg
841
    ffplay
842
    ffserver
843
    fft
844
    golomb
845
    gpl
846
    gprof
847
    gray
848
    hardcoded_tables
849
    ipv6
850
    libdc1394
851
    libdirac
852
    libfaac
853
    libfaad
854
    libfaadbin
855
    libgsm
856
    libmp3lame
857
    libnut
858
    libopencore_amrnb
859
    libopencore_amrwb
860
    libopenjpeg
861
    libschroedinger
862
    libspeex
863
    libtheora
864
    libvorbis
865
    libx264
866
    libxvid
867
    lpc
868
    mdct
869
    memalign_hack
870
    mlib
871
    mpegaudio_hp
872
    network
873
    nonfree
874
    pic
875
    postproc
876
    powerpc_perf
877
    rdft
878
    runtime_cpudetect
879
    shared
880
    small
881
    static
882
    swscale_alpha
883
    vaapi
884
    vdpau
885
    version3
886
    x11grab
887
    zlib
888
"
889

    
890
THREADS_LIST='
891
    beosthreads
892
    os2threads
893
    pthreads
894
    w32threads
895
'
896

    
897
ARCH_LIST='
898
    alpha
899
    arm
900
    avr32
901
    avr32_ap
902
    avr32_uc
903
    bfin
904
    ia64
905
    m68k
906
    mips
907
    mips64
908
    parisc
909
    ppc
910
    ppc64
911
    s390
912
    sh4
913
    sparc
914
    sparc64
915
    x86
916
    x86_32
917
    x86_64
918
'
919

    
920
ARCH_EXT_LIST='
921
    altivec
922
    amd3dnow
923
    amd3dnowext
924
    armv5te
925
    armv6
926
    armv6t2
927
    armvfp
928
    iwmmxt
929
    mmi
930
    mmx
931
    mmx2
932
    neon
933
    ppc4xx
934
    sse
935
    ssse3
936
    vis
937
'
938

    
939
HAVE_LIST="
940
    $ARCH_EXT_LIST
941
    $THREADS_LIST
942
    alsa_asoundlib_h
943
    altivec_h
944
    arpa_inet_h
945
    attribute_packed
946
    bigendian
947
    bswap
948
    closesocket
949
    cmov
950
    conio_h
951
    dcbzl
952
    dev_bktr_ioctl_bt848_h
953
    dev_bktr_ioctl_meteor_h
954
    dev_ic_bt8xx_h
955
    dev_video_meteor_ioctl_meteor_h
956
    dev_video_bktr_ioctl_bt848_h
957
    dlfcn_h
958
    dlopen
959
    dos_paths
960
    ebp_available
961
    ebx_available
962
    exp2
963
    exp2f
964
    fast_64bit
965
    fast_clz
966
    fast_cmov
967
    fast_unaligned
968
    fork
969
    getaddrinfo
970
    gethrtime
971
    GetProcessTimes
972
    getrusage
973
    inet_aton
974
    inline_asm
975
    isatty
976
    ldbrx
977
    libdc1394_1
978
    libdc1394_2
979
    llrint
980
    log2
981
    log2f
982
    loongson
983
    lrint
984
    lrintf
985
    lzo1x_999_compress
986
    machine_ioctl_bt848_h
987
    machine_ioctl_meteor_h
988
    malloc_h
989
    memalign
990
    mkstemp
991
    pld
992
    posix_memalign
993
    round
994
    roundf
995
    sdl
996
    sdl_video_size
997
    setmode
998
    socklen_t
999
    soundcard_h
1000
    poll_h
1001
    struct_addrinfo
1002
    struct_sockaddr_storage
1003
    sys_mman_h
1004
    sys_resource_h
1005
    sys_select_h
1006
    sys_soundcard_h
1007
    sys_videoio_h
1008
    ten_operands
1009
    termios_h
1010
    threads
1011
    truncf
1012
    vfp_args
1013
    VirtualAlloc
1014
    winsock2_h
1015
    xform_asm
1016
    yasm
1017
"
1018

    
1019
# options emitted with CONFIG_ prefix but not available on command line
1020
CONFIG_EXTRA="
1021
    gplv3
1022
    lgplv3
1023
"
1024

    
1025
CMDLINE_SELECT="
1026
    $ARCH_EXT_LIST
1027
    $CONFIG_LIST
1028
    $THREADS_LIST
1029
    cross_compile
1030
    debug
1031
    extra_warnings
1032
    logging
1033
    optimizations
1034
    stripping
1035
    yasm
1036
"
1037

    
1038
PATHS_LIST='
1039
    bindir
1040
    datadir
1041
    incdir
1042
    libdir
1043
    mandir
1044
    prefix
1045
    shlibdir
1046
'
1047

    
1048
CMDLINE_SET="
1049
    $PATHS_LIST
1050
    arch
1051
    as
1052
    build_suffix
1053
    cc
1054
    cpu
1055
    cross_prefix
1056
    dep_cc
1057
    extra_version
1058
    host_cc
1059
    host_cflags
1060
    host_ldflags
1061
    host_libs
1062
    host_os
1063
    ld
1064
    logfile
1065
    nm
1066
    source_path
1067
    sysinclude
1068
    sysroot
1069
    target_exec
1070
    target_os
1071
    target_path
1072
"
1073

    
1074
CMDLINE_APPEND="
1075
    extra_cflags
1076
"
1077

    
1078
# code dependency declarations
1079

    
1080
# architecture extensions
1081
altivec_deps="ppc"
1082
amd3dnow_deps="mmx"
1083
amd3dnowext_deps="amd3dnow"
1084
armv5te_deps="arm"
1085
armv6_deps="arm"
1086
armv6t2_deps="arm"
1087
armvfp_deps="arm"
1088
iwmmxt_deps="arm"
1089
mmi_deps="mips"
1090
mmx_deps="x86"
1091
mmx2_deps="mmx"
1092
neon_deps="arm"
1093
ppc4xx_deps="ppc"
1094
sse_deps="mmx"
1095
ssse3_deps="sse"
1096
vis_deps="sparc"
1097

    
1098
fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
1099

    
1100
need_memalign="altivec neon sse"
1101
inline_asm_deps="!tms470"
1102

    
1103
# decoders / encoders / hardware accelerators
1104
aac_decoder_select="fft mdct aac_parser"
1105
aac_encoder_select="fft mdct"
1106
ac3_decoder_select="fft mdct ac3_parser"
1107
alac_encoder_select="lpc"
1108
atrac3_decoder_select="fft mdct"
1109
cavs_decoder_select="golomb"
1110
cook_decoder_select="fft mdct"
1111
cscd_decoder_suggest="zlib"
1112
dca_decoder_select="fft mdct"
1113
dnxhd_encoder_select="aandct"
1114
dxa_decoder_select="zlib"
1115
eac3_decoder_select="ac3_decoder"
1116
eamad_decoder_select="aandct"
1117
eatgq_decoder_select="aandct"
1118
eatqi_decoder_select="aandct"
1119
ffv1_decoder_select="golomb"
1120
flac_decoder_select="golomb"
1121
flac_encoder_select="golomb lpc"
1122
flashsv_decoder_select="zlib"
1123
flashsv_encoder_select="zlib"
1124
flv_decoder_select="h263_decoder"
1125
flv_encoder_select="h263_encoder"
1126
h261_encoder_select="aandct"
1127
h263_decoder_select="h263_parser"
1128
h263_encoder_select="aandct"
1129
h263_vaapi_hwaccel_deps="va_va_h"
1130
h263_vaapi_hwaccel_select="vaapi h263_decoder"
1131
h263i_decoder_select="h263_decoder"
1132
h263p_encoder_select="h263_encoder"
1133
h264_decoder_select="golomb"
1134
h264_vaapi_hwaccel_deps="va_va_h"
1135
h264_vaapi_hwaccel_select="vaapi"
1136
h264_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1137
h264_vdpau_decoder_select="vdpau h264_decoder"
1138
imc_decoder_select="fft mdct"
1139
jpegls_decoder_select="golomb"
1140
jpegls_encoder_select="golomb"
1141
ljpeg_encoder_select="aandct"
1142
loco_decoder_select="golomb"
1143
mjpeg_encoder_select="aandct"
1144
mlp_decoder_select="mlp_parser"
1145
mpeg1video_encoder_select="aandct"
1146
mpeg2video_encoder_select="aandct"
1147
mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1148
mpeg4_encoder_select="h263_encoder"
1149
mpeg_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1150
mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
1151
mpeg1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1152
mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
1153
mpeg2_vaapi_hwaccel_deps="va_va_h"
1154
mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
1155
mpeg4_vaapi_hwaccel_deps="va_va_h"
1156
mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
1157
mpeg4_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1158
mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
1159
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1160
mpeg_xvmc_decoder_select="mpegvideo_decoder"
1161
msmpeg4v1_decoder_select="h263_decoder"
1162
msmpeg4v1_encoder_select="h263_encoder"
1163
msmpeg4v2_decoder_select="h263_decoder"
1164
msmpeg4v2_encoder_select="h263_encoder"
1165
msmpeg4v3_decoder_select="h263_decoder"
1166
msmpeg4v3_encoder_select="h263_encoder"
1167
nellymoser_decoder_select="fft mdct"
1168
nellymoser_encoder_select="fft mdct"
1169
png_decoder_select="zlib"
1170
png_encoder_select="zlib"
1171
qdm2_decoder_select="fft mdct rdft"
1172
rv10_decoder_select="h263_decoder"
1173
rv10_encoder_select="h263_encoder"
1174
rv20_decoder_select="h263_decoder"
1175
rv20_encoder_select="h263_encoder"
1176
rv30_decoder_select="golomb"
1177
rv40_decoder_select="golomb"
1178
shorten_decoder_select="golomb"
1179
sonic_decoder_select="golomb"
1180
sonic_encoder_select="golomb"
1181
sonic_ls_encoder_select="golomb"
1182
svq3_decoder_select="golomb"
1183
svq3_decoder_suggest="zlib"
1184
theora_decoder_select="vp3_decoder"
1185
tiff_decoder_suggest="zlib"
1186
tiff_encoder_suggest="zlib"
1187
truehd_decoder_select="mlp_decoder"
1188
tscc_decoder_select="zlib"
1189
vc1_decoder_select="h263_decoder"
1190
vc1_vaapi_hwaccel_deps="va_va_h"
1191
vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
1192
vc1_vdpau_decoder_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1193
vc1_vdpau_decoder_select="vdpau vc1_decoder"
1194
vorbis_decoder_select="fft mdct"
1195
vorbis_encoder_select="fft mdct"
1196
vp6a_decoder_select="vp6_decoder"
1197
vp6f_decoder_select="vp6_decoder"
1198
wmav1_decoder_select="fft mdct"
1199
wmav1_encoder_select="fft mdct"
1200
wmav2_decoder_select="fft mdct"
1201
wmav2_encoder_select="fft mdct"
1202
wmv1_decoder_select="h263_decoder"
1203
wmv1_encoder_select="h263_encoder"
1204
wmv2_decoder_select="h263_decoder"
1205
wmv2_encoder_select="h263_encoder"
1206
wmv3_decoder_select="vc1_decoder"
1207
wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1208
wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1209
zlib_decoder_select="zlib"
1210
zlib_encoder_select="zlib"
1211
zmbv_decoder_select="zlib"
1212
zmbv_encoder_select="zlib"
1213

    
1214
# parsers
1215
h264_parser_select="golomb"
1216

    
1217
# bitstream_filters
1218
aac_adtstoasc_bsf_select="aac_parser"
1219

    
1220
# external libraries
1221
libdirac_decoder_deps="libdirac !libschroedinger"
1222
libdirac_encoder_deps="libdirac"
1223
libfaac_encoder_deps="libfaac"
1224
libfaad_decoder_deps="libfaad"
1225
libfaadbin_decoder_extralibs='$ldl'
1226
libgsm_decoder_deps="libgsm"
1227
libgsm_encoder_deps="libgsm"
1228
libgsm_ms_decoder_deps="libgsm"
1229
libgsm_ms_encoder_deps="libgsm"
1230
libmp3lame_encoder_deps="libmp3lame"
1231
libopencore_amrnb_decoder_deps="libopencore_amrnb"
1232
libopencore_amrnb_encoder_deps="libopencore_amrnb"
1233
libopencore_amrwb_decoder_deps="libopencore_amrwb"
1234
libopenjpeg_decoder_deps="libopenjpeg"
1235
libschroedinger_decoder_deps="libschroedinger"
1236
libschroedinger_encoder_deps="libschroedinger"
1237
libspeex_decoder_deps="libspeex"
1238
libtheora_encoder_deps="libtheora"
1239
libvorbis_encoder_deps="libvorbis"
1240
libx264_encoder_deps="libx264"
1241
libxvid_encoder_deps="libxvid"
1242

    
1243
# demuxers / muxers
1244
ac3_demuxer_deps="ac3_parser"
1245
asf_stream_muxer_select="asf_muxer"
1246
avisynth_demuxer_deps="avisynth"
1247
dirac_demuxer_deps="dirac_parser"
1248
eac3_demuxer_select="ac3_parser"
1249
ipod_muxer_select="mov_muxer"
1250
libnut_demuxer_deps="libnut"
1251
libnut_muxer_deps="libnut"
1252
matroska_audio_muxer_select="matroska_muxer"
1253
matroska_demuxer_suggest="zlib bzlib"
1254
mov_demuxer_suggest="zlib"
1255
mp3_demuxer_deps="mpegaudio_parser"
1256
mp4_muxer_select="mov_muxer"
1257
mpegtsraw_demuxer_select="mpegts_demuxer"
1258
mxf_d10_muxer_select="mxf_muxer"
1259
ogg_demuxer_select="golomb"
1260
psp_muxer_select="mov_muxer"
1261
rtsp_demuxer_deps="sdp_demuxer"
1262
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
1263
spdif_muxer_select="aac_parser"
1264
tg2_muxer_select="mov_muxer"
1265
tgp_muxer_select="mov_muxer"
1266
w64_demuxer_deps="wav_demuxer"
1267

    
1268
# indevs / outdevs
1269
alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
1270
alsa_indev_extralibs="-lasound"
1271
alsa_outdev_deps="alsa_asoundlib_h"
1272
alsa_outdev_extralibs="-lasound"
1273
audio_beos_indev_deps="audio_beos"
1274
audio_beos_indev_extralibs="-lmedia -lbe"
1275
audio_beos_outdev_deps="audio_beos"
1276
audio_beos_outdev_extralibs="-lmedia -lbe"
1277
bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
1278
dv1394_indev_deps="dv1394 dv_demuxer"
1279
jack_indev_deps="jack_jack_h"
1280
jack_indev_extralibs="-ljack"
1281
libdc1394_indev_deps="libdc1394"
1282
oss_indev_deps_any="soundcard_h sys_soundcard_h"
1283
oss_outdev_deps_any="soundcard_h sys_soundcard_h"
1284
v4l_indev_deps="linux_videodev_h"
1285
v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
1286
vfwcap_indev_deps="capCreateCaptureWindow"
1287
vfwcap_indev_extralibs="-lvfw32"
1288
x11_grab_device_indev_deps="x11grab XShmCreateImage"
1289
x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
1290

    
1291
# protocols
1292
gopher_protocol_deps="network"
1293
http_protocol_deps="network"
1294
rtmp_protocol_deps="tcp_protocol"
1295
rtp_protocol_deps="udp_protocol"
1296
tcp_protocol_deps="network"
1297
udp_protocol_deps="network"
1298

    
1299
# filters
1300
movie_filter_deps="avfilter_lavf"
1301

    
1302
# programs
1303
ffplay_deps="sdl"
1304
ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
1305
ffserver_extralibs='$ldl'
1306

    
1307
doc_deps="texi2html"
1308

    
1309
# default parameters
1310

    
1311
logfile="config.err"
1312

    
1313
# installation paths
1314
prefix_default="/usr/local"
1315
bindir_default='${prefix}/bin'
1316
datadir_default='${prefix}/share/ffmpeg'
1317
incdir_default='${prefix}/include'
1318
libdir_default='${prefix}/lib'
1319
mandir_default='${prefix}/share/man'
1320
shlibdir_default="$libdir_default"
1321

    
1322
# toolchain
1323
ar="ar"
1324
cc_default="gcc"
1325
cc_version=\"unknown\"
1326
host_cc_default="gcc"
1327
ln_s="ln -sf"
1328
nm_default="nm"
1329
objformat="elf"
1330
ranlib="ranlib"
1331
strip="strip"
1332
yasmexe="yasm"
1333

    
1334
# machine
1335
arch=$(uname -m)
1336
cpu="generic"
1337

    
1338
# OS
1339
target_os=$(tolower $(uname -s))
1340
host_os=$target_os
1341

    
1342
# configurable options
1343
enable debug
1344
enable doc
1345
enable fastdiv
1346
enable ffmpeg
1347
enable ffplay
1348
enable ffserver
1349
enable ipv6
1350
enable mpegaudio_hp
1351
enable network
1352
enable optimizations
1353
enable protocols
1354
enable static
1355
enable stripping
1356
enable swscale_alpha
1357

    
1358
# build settings
1359
SHFLAGS='-shared -Wl,-soname,$$(@F)'
1360
FFSERVERLDFLAGS=-Wl,-E
1361
LIBPREF="lib"
1362
LIBSUF=".a"
1363
FULLNAME='$(NAME)$(BUILDSUF)'
1364
LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
1365
SLIBPREF="lib"
1366
SLIBSUF=".so"
1367
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
1368
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
1369
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
1370
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
1371

    
1372
CC_O='-o $@'
1373

    
1374
host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall'
1375
host_libs='-lm'
1376

    
1377
target_path='.'
1378

    
1379
# gcc stupidly only outputs the basename of targets with -MM, but we need the
1380
# full relative path for objects in subdirectories for non-recursive Make.
1381
DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
1382
DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
1383

    
1384
# find source path
1385
source_path="$(dirname "$0")"
1386
enable source_path_used
1387
if test -f configure; then
1388
    source_path="$(pwd)"
1389
    disable source_path_used
1390
else
1391
    source_path="$(cd "$source_path"; pwd)"
1392
    echo "$source_path" | grep -q '[[:blank:]]' &&
1393
        die "Out of tree builds are impossible with whitespace in source path."
1394
    test -e "$source_path/config.h" &&
1395
        die "Out of tree builds are impossible with config.h in source dir."
1396
fi
1397

    
1398
for v in "$@"; do
1399
    r=${v#*=}
1400
    l=${v%"$r"}
1401
    r=$(sh_quote "$r")
1402
    FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
1403
done
1404

    
1405
find_things(){
1406
    thing=$1
1407
    pattern=$2
1408
    file=$source_path/$3
1409
    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
1410
}
1411

    
1412
ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
1413
DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
1414
HWACCEL_LIST=$(find_things  hwaccel  HWACCEL  libavcodec/allcodecs.c)
1415
PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
1416
BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
1417
MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
1418
DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
1419
OUTDEV_LIST=$(find_things   outdev   OUTDEV   libavdevice/alldevices.c)
1420
INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
1421
PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
1422
FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
1423

    
1424
enable $ARCH_EXT_LIST \
1425
       $DECODER_LIST \
1426
       $ENCODER_LIST \
1427
       $HWACCEL_LIST \
1428
       $PARSER_LIST \
1429
       $BSF_LIST \
1430
       $DEMUXER_LIST \
1431
       $MUXER_LIST \
1432
       $FILTER_LIST \
1433
       $PROTOCOL_LIST \
1434
       $INDEV_LIST \
1435
       $OUTDEV_LIST \
1436

    
1437
die_unknown(){
1438
    echo "Unknown option \"$1\"."
1439
    echo "See $0 --help for available options."
1440
    exit 1
1441
}
1442

    
1443
show_list() {
1444
    suffix=_$1
1445
    shift
1446
    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
1447
    exit 0
1448
}
1449

    
1450
for opt do
1451
    optval="${opt#*=}"
1452
    case "$opt" in
1453
    --extra-ldflags=*) add_ldflags $optval
1454
    ;;
1455
    --extra-libs=*) add_extralibs $optval
1456
    ;;
1457
    --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
1458
    ;;
1459
    --enable-debug=*) debuglevel="$optval"
1460
    ;;
1461
    --enable-*=*|--disable-*=*)
1462
    eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
1463
    is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
1464
    eval list=\$$(toupper $thing)_LIST
1465
    name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
1466
    $action $(filter "$name" $list)
1467
    ;;
1468
    --enable-?*|--disable-?*)
1469
    eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
1470
    if is_in $option $COMPONENT_LIST; then
1471
        test $action = disable && action=unset
1472
        eval $action \$$(toupper ${option%s})_LIST
1473
    elif is_in $option $CMDLINE_SELECT; then
1474
        $action $option
1475
    else
1476
        die_unknown $opt
1477
    fi
1478
    ;;
1479
    --list-*)
1480
        NAME="${opt#--list-}"
1481
        is_in $NAME $COMPONENT_LIST || die_unknown $opt
1482
        NAME=${NAME%s}
1483
        eval show_list $NAME \$$(toupper $NAME)_LIST
1484
    ;;
1485
    --help|-h) show_help
1486
    ;;
1487
    *)
1488
    optname="${opt%%=*}"
1489
    optname="${optname#--}"
1490
    optname=$(echo "$optname" | sed 's/-/_/g')
1491
    if is_in $optname $CMDLINE_SET; then
1492
        eval $optname='$optval'
1493
    elif is_in $optname $CMDLINE_APPEND; then
1494
        append $optname "$optval"
1495
    else
1496
         die_unknown $opt
1497
    fi
1498
    ;;
1499
    esac
1500
done
1501

    
1502
disabled logging && logfile=/dev/null
1503

    
1504
echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
1505
set >> $logfile
1506

    
1507
test -n "$cross_prefix" && enable cross_compile
1508

    
1509
ar="${cross_prefix}${ar}"
1510
cc_default="${cross_prefix}${cc_default}"
1511
nm_default="${cross_prefix}${nm_default}"
1512
ranlib="${cross_prefix}${ranlib}"
1513
strip="${cross_prefix}${strip}"
1514

    
1515
sysinclude_default="${sysroot}/usr/include"
1516

    
1517
set_default cc nm sysinclude
1518
enabled cross_compile || host_cc_default=$cc
1519
set_default host_cc
1520

    
1521
exesuf() {
1522
    case $1 in
1523
        mingw32*|cygwin*|*-dos|freedos|opendos|os/2*) echo .exe ;;
1524
    esac
1525
}
1526

    
1527
EXESUF=$(exesuf $target_os)
1528
HOSTEXESUF=$(exesuf $host_os)
1529

    
1530
# set temporary file name
1531
: ${TMPDIR:=$TEMPDIR}
1532
: ${TMPDIR:=$TMP}
1533
: ${TMPDIR:=/tmp}
1534

    
1535
if ! check_cmd type mktemp; then
1536
    # simple replacement for missing mktemp
1537
    # NOT SAFE FOR GENERAL USE
1538
    mktemp(){
1539
        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
1540
    }
1541
fi
1542

    
1543
tmpfile(){
1544
    tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
1545
        (set -C; exec > $tmp) 2>/dev/null ||
1546
        die "Unable to create temporary file in $TMPDIR."
1547
    append TMPFILES $tmp
1548
    eval $1=$tmp
1549
}
1550

    
1551
trap 'rm -f -- $TMPFILES' EXIT
1552
trap exit HUP INT TERM
1553

    
1554
tmpfile TMPC  .c
1555
tmpfile TMPE  $EXESUF
1556
tmpfile TMPH  .h
1557
tmpfile TMPO  .o
1558
tmpfile TMPS  .S
1559
tmpfile TMPSH .sh
1560

    
1561
unset -f mktemp
1562

    
1563
# make sure we can execute files in $TMPDIR
1564
cat > $TMPSH 2>> $logfile <<EOF
1565
#! /bin/sh
1566
EOF
1567
chmod +x $TMPSH >> $logfile 2>&1
1568
if ! $TMPSH >> $logfile 2>&1; then
1569
    cat <<EOF
1570
Unable to create and execute files in $TMPDIR.  Set the TMPDIR environment
1571
variable to another directory and make sure that it is not mounted noexec.
1572
EOF
1573
    die "Sanity test failed."
1574
fi
1575

    
1576
filter_cflags=echo
1577
filter_cppflags=echo
1578
filter_asflags=echo
1579

    
1580
if   $cc -v 2>&1 | grep -qi ^gcc; then
1581
    cc_type=gcc
1582
    cc_version=__VERSION__
1583
    if ! $cc -dumpversion | grep -q '^2\.'; then
1584
        CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1585
        AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1586
    fi
1587
elif $cc --version 2>/dev/null | grep -q Intel; then
1588
    cc_type=icc
1589
    cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
1590
    CC_DEPFLAGS='-MMD'
1591
    AS_DEPFLAGS='-MMD'
1592
elif $cc -v 2>&1 | grep -q xlc; then
1593
    cc_type=xlc
1594
    cc_version="AV_STRINGIFY(__IBMC__)"
1595
elif $cc -V 2>/dev/null | grep -q Compaq; then
1596
    cc_type=ccc
1597
    cc_version="AV_STRINGIFY(__DECC_VER)"
1598
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
1599
    debuglevel=3
1600
    add_ldflags -Wl,-z,now # calls to libots crash without this
1601
elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
1602
    test -d "$sysroot" || die "No valid sysroot specified."
1603
    cc_type=armcc
1604
    cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
1605
    armcc_conf="$PWD/armcc.conf"
1606
    $cc --arm_linux_configure                 \
1607
        --arm_linux_config_file="$armcc_conf" \
1608
        --configure_sysroot="$sysroot"        \
1609
        --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
1610
        die "Error creating armcc configuration file."
1611
    cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc"
1612
    as_default="${cross_prefix}gcc"
1613
    CC_DEPFLAGS='-MMD'
1614
    AS_DEPFLAGS='-MMD'
1615
elif $cc -version 2>/dev/null | grep -q TMS470; then
1616
    cc_type=tms470
1617
    cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
1618
    cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
1619
    CC_O='-fr=$(@D)'
1620
    as_default="${cross_prefix}gcc"
1621
    ld_default="${cross_prefix}gcc"
1622
    TMPO=$(basename $TMPC .c).o
1623
    append TMPFILES $TMPO
1624
    add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=
1625
    CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)'
1626
    AS_DEPFLAGS='-MMD'
1627
    filter_cflags=tms470_flags
1628
    tms470_flags(){
1629
        for flag; do
1630
            case $flag in
1631
                -march=*|-mcpu=*)
1632
                    case "${flag#*=}" in
1633
                        armv7-a|cortex-a*)      echo -mv=7a8 ;;
1634
                        armv7-r|cortex-r*)      echo -mv=7r4 ;;
1635
                        armv7-m|cortex-m*)      echo -mv=7m3 ;;
1636
                        armv6*|arm11*)          echo -mv=6   ;;
1637
                        armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
1638
                                                echo -mv=5e  ;;
1639
                        armv4*|arm7*|arm9[24]*) echo -mv=4   ;;
1640
                    esac
1641
                    ;;
1642
                -mfpu=neon)     echo --float_support=vfpv3 --neon ;;
1643
                -mfpu=vfp)      echo --float_support=vfpv2        ;;
1644
                -msoft-float)   echo --float_support=vfplib       ;;
1645
                -Os)            echo -O3 -mf=2                    ;;
1646
                -O[0-3])        echo $flag -mf=5                  ;;
1647
                -g)             echo -g -mn                       ;;
1648
            esac
1649
        done
1650
    }
1651
elif $cc -v 2>&1 | grep -q clang; then
1652
    cc_type=clang
1653
    cc_version=__VERSION__
1654
    CC_DEPFLAGS='-MMD'
1655
    AS_DEPFLAGS='-MMD'
1656
elif $cc -V 2>&1 | grep -q Sun; then
1657
    cc_type=suncc
1658
    cc_version="AV_STRINGIFY(__SUNPRO_C)"
1659
    DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
1660
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1'
1661
    filter_cflags=suncc_flags
1662
    suncc_flags(){
1663
        for flag; do
1664
            case $flag in
1665
                -march=*|-mcpu=*)
1666
                    case "${flag#*=}" in
1667
                        native)                   echo -xtarget=native       ;;
1668
                        v9)                       echo -xarch=sparc          ;;
1669
                        ultrasparc)               echo -xarch=sparcvis       ;;
1670
                        ultrasparc3|niagara*)     echo -xarch=sparcvis2      ;;
1671
                        i586|pentium)             echo -xchip=pentium        ;;
1672
                        i686|pentiumpro|pentium2) echo -xtarget=pentium_pro  ;;
1673
                        pentium3*|c3-2)           echo -xtarget=pentium3     ;;
1674
                        pentium-m)          echo -xarch=sse2 -xchip=pentium3 ;;
1675
                        pentium4*)          echo -xtarget=pentium4           ;;
1676
                        prescott|nocona)    echo -xarch=sse3 -xchip=pentium4 ;;
1677
                        *-sse3)             echo -xarch=sse3                 ;;
1678
                        core2)              echo -xarch=ssse3 -xchip=core2   ;;
1679
                        amdfam10|barcelona)       echo -xarch=sse4_1         ;;
1680
                        athlon-4|athlon-[mx]p)    echo -xarch=ssea           ;;
1681
                        k8|opteron|athlon64|athlon-fx)
1682
                                                  echo -xarch=sse2a          ;;
1683
                        athlon*)                  echo -xarch=pentium_proa   ;;
1684
                    esac
1685
                    ;;
1686
                -std=c99)             echo -xc99              ;;
1687
                -fomit-frame-pointer) echo -xregs=frameptr    ;;
1688
                -fPIC)                echo -KPIC -xcode=pic32 ;;
1689
                -Os)                  echo -O5 -xspace        ;;
1690
                -W*,*)                echo $flag              ;;
1691
                -f*-*|-W*)                                    ;;
1692
                *)                    echo $flag              ;;
1693
            esac
1694
        done
1695
    }
1696
fi
1697

    
1698
test -n "$cc_type" && enable $cc_type || echolog "Unknown C compiler $cc"
1699

    
1700
: ${as_default:=$cc}
1701
: ${dep_cc_default:=$cc}
1702
: ${ld_default:=$cc}
1703
set_default as dep_cc ld
1704

    
1705
test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
1706
test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
1707

    
1708
add_cflags $extra_cflags
1709
add_asflags $extra_cflags
1710

    
1711
if test -n "$sysroot"; then
1712
    case "$cc_type" in
1713
        gcc)
1714
            add_cppflags --sysroot="$sysroot"
1715
            add_ldflags --sysroot="$sysroot"
1716
        ;;
1717
        tms470)
1718
            add_cppflags -I"$sysinclude"
1719
            add_ldflags  --sysroot="$sysroot"
1720
        ;;
1721
        clang)
1722
            add_cppflags -isysroot="$sysroot"
1723
            add_ldflags -isysroot="$sysroot"
1724
        ;;
1725
    esac
1726
fi
1727

    
1728
if test "$cpu" = host; then
1729
    enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
1730

    
1731
    case "$cc_type" in
1732
        gcc)
1733
            check_native(){
1734
                $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
1735
                awk "/$1=/{ match(\$0, /$1=(\\w+)/, a);print a[1];exit }" $TMPE
1736
            }
1737
            cpu=$(check_native -march || check_native -mcpu)
1738
        ;;
1739
    esac
1740

    
1741
    test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
1742
fi
1743

    
1744
# Add processor-specific flags
1745
case $cpu in
1746
    601|ppc601|PowerPC601)
1747
        cpuflags="-mcpu=601"
1748
    ;;
1749
    603*|ppc603*|PowerPC603*)
1750
        cpuflags="-mcpu=603"
1751
    ;;
1752
    604*|ppc604*|PowerPC604*)
1753
        cpuflags="-mcpu=604"
1754
    ;;
1755
    G3|g3|75*|ppc75*|PowerPC75*)
1756
        cpuflags="-mcpu=750 -mpowerpc-gfxopt"
1757
    ;;
1758
    G4|g4|745*|ppc745*|PowerPC745*)
1759
        cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
1760
    ;;
1761
    74*|ppc74*|PowerPC74*)
1762
        cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
1763
    ;;
1764
    G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1765
        cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1766
    ;;
1767
    Cell|CELL|cell)
1768
        cpuflags="-mcpu=cell"
1769
        enable ldbrx
1770
    ;;
1771
    # targets that do NOT support conditional mov (cmov)
1772
    i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1773
        cpuflags="-march=$cpu"
1774
        disable cmov
1775
    ;;
1776
    # targets that do support conditional mov (cmov)
1777
    i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10)
1778
        cpuflags="-march=$cpu"
1779
        enable cmov
1780
        enable fast_cmov
1781
    ;;
1782
    # targets that do support conditional mov but on which it's slow
1783
    pentium4|pentium4m|prescott|nocona)
1784
        cpuflags="-march=$cpu"
1785
        enable cmov
1786
        disable fast_cmov
1787
    ;;
1788
    sparc64)
1789
        cpuflags="-mcpu=v9"
1790
    ;;
1791
    arm11*|cortex*)
1792
        cpuflags="-mcpu=$cpu"
1793
        enable fast_unaligned
1794
    ;;
1795
    armv[67]*)
1796
        cpuflags="-march=$cpu"
1797
        enable fast_unaligned
1798
    ;;
1799
    armv*)
1800
        cpuflags="-march=$cpu"
1801
    ;;
1802
    arm*)
1803
        cpuflags="-mcpu=$cpu"
1804
    ;;
1805
    ev4|ev45|ev5|ev56|pca56|ev6|ev67)
1806
        enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
1807
    ;;
1808
    bf*)
1809
        cpuflags="-mcpu=$cpu"
1810
    ;;
1811
    mips*|[45]k*|[237]4k*|m4k|r*000|loongson2[ef])
1812
        cpuflags="-march=$cpu"
1813
    ;;
1814
    ap7[02]0[0-2])
1815
        subarch="avr32_ap"
1816
        cpuflags="-mpart=$cpu"
1817
    ;;
1818
    ap)
1819
        subarch="avr32_ap"
1820
        cpuflags="-march=$cpu"
1821
    ;;
1822
    uc3[ab]*)
1823
        subarch="avr32_uc"
1824
        cpuflags="-mcpu=$cpu"
1825
    ;;
1826
    uc)
1827
        subarch="avr32_uc"
1828
        cpuflags="-march=$cpu"
1829
    ;;
1830
    generic)
1831
    ;;
1832
    *)
1833
        echo "WARNING: Unknown CPU \"$cpu\", ignored."
1834
    ;;
1835
esac
1836

    
1837
add_cflags $cpuflags
1838
add_asflags $cpuflags
1839

    
1840
# compiler sanity check
1841
check_exec <<EOF
1842
int main(void){ return 0; }
1843
EOF
1844
if test "$?" != 0; then
1845
    echo "$cc is unable to create an executable file."
1846
    if test -z "$cross_prefix" && ! enabled cross_compile ; then
1847
        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
1848
        echo "Only do this if you know what cross compiling means."
1849
    fi
1850
    die "C compiler test failed."
1851
fi
1852

    
1853
add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
1854
check_cflags -std=c99
1855
check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
1856
#include <stdlib.h>
1857
EOF
1858
check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
1859
#include <stdlib.h>
1860
EOF
1861

    
1862
check_host_cflags -std=c99
1863

    
1864
case "$arch" in
1865
    alpha)
1866
        arch="alpha"
1867
        enable fast_64bit
1868
        check_cflags -mieee
1869
        spic=$shared
1870
    ;;
1871
    arm|armv[4567]*l)
1872
        arch="arm"
1873
    ;;
1874
    avr32)
1875
    ;;
1876
    bfin)
1877
        arch="bfin"
1878
    ;;
1879
    ia64)
1880
        arch="ia64"
1881
        enable fast_64bit
1882
        spic=$shared
1883
        # HACK: currently fails to build if .bss is > 4MB and shared libs are built
1884
        enabled shared && enable_weak hardcoded_tables
1885
    ;;
1886
    m68k)
1887
        arch="m68k"
1888
    ;;
1889
    mips|mipsel|IP*)
1890
        arch="mips"
1891
        spic=$shared
1892
    ;;
1893
    mips64)
1894
        arch="mips"
1895
        subarch="mips64"
1896
        enable fast_64bit
1897
        spic=$shared
1898
    ;;
1899
    parisc|hppa)
1900
        arch="parisc"
1901
        spic=$shared
1902
    ;;
1903
    parisc64|hppa64)
1904
        arch="parisc"
1905
        enable fast_64bit
1906
        spic=$shared
1907
    ;;
1908
    "Power Macintosh"|ppc|powerpc)
1909
        arch="ppc"
1910
        enable fast_unaligned
1911
    ;;
1912
    ppc64)
1913
        arch="ppc"
1914
        subarch="ppc64"
1915
        enable fast_64bit
1916
        enable fast_unaligned
1917
    ;;
1918
    s390|s390x)
1919
        arch="s390"
1920
    ;;
1921
    sh4|sh)
1922
        arch="sh4"
1923
    ;;
1924
    sparc)
1925
        arch="sparc"
1926
        spic=$shared
1927
    ;;
1928
    sun4u|sparc64)
1929
        arch="sparc"
1930
        subarch="sparc64"
1931
        enable fast_64bit
1932
        spic=$shared
1933
    ;;
1934
    i386|i486|i586|i686|i86pc|BePC|x86_64|amd64)
1935
        arch="x86"
1936
        subarch="x86_32"
1937
        enable fast_unaligned
1938
        check_cc <<EOF && enable fast_64bit && subarch="x86_64" && spic=$shared
1939
        int test[(int)sizeof(char*) - 7];
1940
EOF
1941
        if test "$subarch" = "x86_64"; then
1942
            enable cmov
1943
            enable fast_cmov
1944
        fi
1945
    ;;
1946
    *)
1947
        arch="unknown"
1948
    ;;
1949
esac
1950

    
1951
enable $arch $subarch
1952
enabled spic && enable pic
1953
check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
1954

    
1955
# OS specific
1956
case $target_os in
1957
    beos|haiku|zeta)
1958
        prefix_default="$HOME/config"
1959
        # 3 gcc releases known for BeOS, each with ugly bugs
1960
        gcc_version="$($cc -v 2>&1 | grep version | cut -d ' ' -f3-)"
1961
        case "$gcc_version" in
1962
          2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
1963
            disable mmx
1964
            ;;
1965
          *20010315*) echo "BeBits gcc"
1966
            add_cflags -fno-expensive-optimizations
1967
            ;;
1968
        esac
1969
        SHFLAGS=-nostart
1970
        # enable BeOS things
1971
        enable audio_beos
1972
        # no need for libm, but the inet stuff
1973
        # Check for BONE
1974
        # XXX: actually should check for NOT net_server
1975
        if echo $BEINCLUDES | grep -q 'headers/be/bone'; then
1976
            network_extralibs="-lbind -lsocket"
1977
        else
1978
            enable beos_netserver
1979
            network_extralibs="-lnet"
1980
        fi ;;
1981
    sunos)
1982
        FFSERVERLDFLAGS=""
1983
        SHFLAGS='-shared -Wl,-h,$$(@F)'
1984
        enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
1985
        network_extralibs="-lsocket -lnsl"
1986
        add_cppflags -D__EXTENSIONS__
1987
        ;;
1988
    netbsd)
1989
        oss_indev_extralibs="-lossaudio"
1990
        oss_outdev_extralibs="-lossaudio"
1991
        ;;
1992
    openbsd)
1993
        enable malloc_aligned
1994
        # On OpenBSD 4.5. the compiler does not use PIC unless
1995
        # explicitly using -fPIC. FFmpeg builds fine without PIC,
1996
        # however the generated executable will not do anything
1997
        # (simply quits with exit-code 1, no crash, no output).
1998
        # Thus explicitly enable PIC here.
1999
        enable pic
2000
        SHFLAGS='-shared'
2001
        oss_indev_extralibs="-lossaudio"
2002
        oss_outdev_extralibs="-lossaudio"
2003
        ;;
2004
    freebsd|dragonfly)
2005
        enable malloc_aligned
2006
        ;;
2007
    bsd/os)
2008
        osextralibs="-lpoll -lgnugetopt"
2009
        strip="strip -d"
2010
        ;;
2011
    darwin)
2012
        enable malloc_aligned
2013
        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
2014
        strip="strip -x"
2015
        FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
2016
        SLIBSUF=".dylib"
2017
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
2018
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
2019
        FFSERVERLDFLAGS=-Wl,-bind_at_load
2020
        objformat="macho"
2021
        enabled x86_64 && objformat="macho64"
2022
        enabled_any pic shared ||
2023
            { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
2024
        ;;
2025
    mingw32*)
2026
        if test $target_os = "mingw32ce"; then
2027
            disable network
2028
        else
2029
            target_os=mingw32
2030
        fi
2031
        LIBTARGET=i386
2032
        if enabled x86_64; then
2033
            enable malloc_aligned
2034
            LIBTARGET=x64
2035
        elif enabled arm; then
2036
            LIBTARGET=arm
2037
        fi
2038
        shlibdir_default="$bindir_default"
2039
        disable ffserver
2040
        SLIBPREF=""
2041
        SLIBSUF=".dll"
2042
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
2043
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2044
        SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
2045
        SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
2046
            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
2047
            install -d "$(LIBDIR)"; \
2048
            install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
2049
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
2050
        SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--out-implib,$(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
2051
        objformat="win32"
2052
        enable dos_paths
2053
        check_cflags -fno-common
2054
        if ! enabled x86_64; then
2055
            check_cpp_condition _mingw.h "(__MINGW32_MAJOR_VERSION > 3) || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
2056
                die "ERROR: MinGW runtime version must be >= 3.15."
2057
            enabled_any avisynth vfwcap_indev &&
2058
                { check_cpp_condition w32api.h "(__W32API_MAJOR_VERSION > 3) || (__W32API_MAJOR_VERSION == 3 && __W32API_MINOR_VERSION >= 13)" ||
2059
                  die "ERROR: avisynth and vfwcap_indev require w32api version 3.13 or later."; }
2060
            fi
2061
        ;;
2062
    cygwin*)
2063
        target_os=cygwin
2064
        shlibdir_default="$bindir_default"
2065
        SLIBPREF="cyg"
2066
        SLIBSUF=".dll"
2067
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
2068
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2069
        SHFLAGS='-shared -Wl,--enable-auto-image-base'
2070
        objformat="win32"
2071
        enable dos_paths
2072
        check_cflags -fno-common
2073
        ;;
2074
    *-dos|freedos|opendos)
2075
        disable ffplay ffserver
2076
        disable $INDEV_LIST $OUTDEV_LIST
2077
        network_extralibs="-lsocket"
2078
        objformat="coff"
2079
        enable dos_paths
2080
        ;;
2081
    linux)
2082
        enable dv1394
2083
        ;;
2084
    irix*)
2085
        target_os=irix
2086
        ranlib="echo ignoring ranlib"
2087
        ;;
2088
    os/2*)
2089
        strip="lxlite"
2090
        ln_s="cp -f"
2091
        FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
2092
        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
2093
        FFSERVERLDFLAGS=""
2094
        LIBSUF="_s.a"
2095
        SLIBPREF=""
2096
        SLIBSUF=".dll"
2097
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
2098
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
2099
        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
2100
          echo PROTMODE >> $(SUBDIR)$(NAME).def; \
2101
          echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
2102
          echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
2103
          echo EXPORTS >> $(SUBDIR)$(NAME).def; \
2104
          emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
2105
        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
2106
          emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
2107
        SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
2108
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
2109
        enable dos_paths
2110
        ;;
2111
    gnu/kfreebsd)
2112
        ;;
2113
    gnu)
2114
        ;;
2115

    
2116
    *)
2117
        die "Unknown OS '$target_os'."
2118
        ;;
2119
esac
2120

    
2121
set_default $PATHS_LIST
2122

    
2123
add_extralibs $osextralibs
2124

    
2125
# Combine FFLDFLAGS and the LDFLAGS environment variable.
2126
LDFLAGS="$FFLDFLAGS $LDFLAGS"
2127

    
2128
# we need to build at least one lib type
2129
if ! enabled_any static shared; then
2130
    cat <<EOF
2131
At least one library type must be built.
2132
Specify --enable-static to build the static libraries or --enable-shared to
2133
build the shared libraries as well. To only build the shared libraries specify
2134
--disable-static in addition to --enable-shared.
2135
EOF
2136
    exit 1;
2137
fi
2138

    
2139
disabled static && LIBNAME=""
2140

    
2141
if enabled_any libfaad libfaadbin ; then
2142
    if check_header faad.h; then
2143
        check_cc <<EOF
2144
#include <faad.h>
2145
#ifndef FAAD2_VERSION
2146
ok faad1
2147
#endif
2148
int main(void) { return 0; }
2149
EOF
2150
        test $? = 0 && enable libfaad2
2151
    else
2152
        die "FAAD test failed."
2153
    fi
2154
fi
2155

    
2156

    
2157
die_license_disabled() {
2158
    enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
2159
}
2160

    
2161
die_license_disabled gpl libfaad2
2162
die_license_disabled gpl libx264
2163
die_license_disabled gpl libxvid
2164
die_license_disabled gpl postproc
2165
die_license_disabled gpl x11grab
2166

    
2167
die_license_disabled nonfree libfaac
2168

    
2169
die_license_disabled version3 libopencore_amrnb
2170
die_license_disabled version3 libopencore_amrwb
2171

    
2172
enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
2173

    
2174
check_deps $ARCH_EXT_LIST
2175

    
2176
disabled optimizations || check_cflags -fomit-frame-pointer
2177

    
2178
enable_pic() {
2179
    enable pic
2180
    add_cppflags -DPIC
2181
    add_cflags   -fPIC
2182
    add_asflags  -fPIC
2183
}
2184

    
2185
enabled pic && enable_pic
2186

    
2187
check_cc <<EOF || die "Symbol mangling check failed."
2188
int ff_extern;
2189
EOF
2190
sym=$($nm -P -g $TMPO | grep ff_extern)
2191
extern_prefix=${sym%%ff_extern*}
2192

    
2193
check_cc <<EOF && enable inline_asm
2194
void foo(void) { __asm__ volatile ("" ::); }
2195
EOF
2196

    
2197
_restrict=
2198
for restrict_keyword in restrict __restrict__ __restrict; do
2199
    check_cc <<EOF && _restrict=$restrict_keyword && break
2200
void foo(char * $restrict_keyword p);
2201
EOF
2202
done
2203

    
2204
check_cc <<EOF && enable attribute_packed
2205
struct { int x; } __attribute__((packed)) x;
2206
EOF
2207

    
2208
check_cc <<EOF || die "endian test failed"
2209
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
2210
EOF
2211
od -A n -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
2212

    
2213
if enabled arm; then
2214

    
2215
    check_cflags -marm
2216

    
2217
    check_ld <<EOF && enable vfp_args
2218
__asm__ (".eabi_attribute 28, 1");
2219
int main(void) { return 0; }
2220
EOF
2221

    
2222
    # We have to check if pld is a nop and disable it.
2223
    check_asm pld '"pld [r0]"'
2224

    
2225
    enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
2226
    enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
2227
    enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
2228
    enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
2229
    enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
2230
    enabled neon    && check_asm neon    '"vadd.i16 q0, q0, q0"'
2231

    
2232
    enabled_all armv6t2 shared !pic && enable_pic
2233

    
2234
elif enabled mips; then
2235

    
2236
    check_asm loongson '"dmult.g $1, $2, $3"'
2237
    enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
2238

    
2239
elif enabled ppc; then
2240

    
2241
    check_asm dcbzl     '"dcbzl 0, 1"'
2242
    check_asm ppc4xx    '"maclhw r10, r11, r12"'
2243
    check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
2244

    
2245
    # AltiVec flags: The FSF version of GCC differs from the Apple version
2246
    if enabled altivec; then
2247
        check_cflags -maltivec -mabi=altivec &&
2248
        { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
2249
        check_cflags -faltivec
2250

    
2251
        # check if our compiler supports Motorola AltiVec C API
2252
        check_cc <<EOF || disable altivec
2253
$inc_altivec_h
2254
int main(void) {
2255
    vector signed int v1, v2, v3;
2256
    v1 = vec_add(v2,v3);
2257
    return 0;
2258
}
2259
EOF
2260

    
2261
        # check if our compiler supports braces for vector declarations
2262
        check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
2263
$inc_altivec_h
2264
int main (void) { (vector int) {1}; return 0; }
2265
EOF
2266
    fi
2267

    
2268
elif enabled sparc; then
2269

    
2270
    enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
2271
        add_cflags -mcpu=ultrasparc -mtune=ultrasparc
2272

    
2273
elif enabled x86; then
2274

    
2275
    # check whether EBP is available on x86
2276
    # As 'i' is stored on the stack, this program will crash
2277
    # if the base pointer is used to access it because the
2278
    # base pointer is cleared in the inline assembly code.
2279
    check_exec_crash <<EOF && enable ebp_available
2280
    volatile int i=0;
2281
    __asm__ volatile (
2282
        "xorl %%ebp, %%ebp"
2283
    ::: "%ebp");
2284
    return i;
2285
EOF
2286

    
2287
    # check whether EBX is available on x86
2288
    check_asm ebx_available '""::"b"(0)' &&
2289
        check_asm ebx_available '"":::"%ebx"'
2290

    
2291
    # check whether more than 10 operands are supported
2292
    check_cc <<EOF && enable ten_operands
2293
int main(void) {
2294
    int x=0;
2295
    __asm__ volatile(
2296
        ""
2297
        :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
2298
    );
2299
    return 0;
2300
}
2301
EOF
2302

    
2303
    # check whether binutils is new enough to compile SSSE3/MMX2
2304
    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
2305
    enabled mmx2  && check_asm mmx2  '"pmaxub %mm0, %mm1"'
2306

    
2307
    check_asm bswap '"bswap %%eax" ::: "%eax"'
2308

    
2309
    YASMFLAGS="-f $objformat -DARCH_$(toupper $subarch)"
2310
    enabled     x86_64        && append YASMFLAGS "-m amd64"
2311
    enabled     pic           && append YASMFLAGS "-DPIC"
2312
    test -n "$extern_prefix"  && append YASMFLAGS "-DPREFIX"
2313
    case "$objformat" in
2314
        elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
2315
    esac
2316
    disabled yasm || { check_yasm "pabsw xmm0, xmm0" && enable yasm; }
2317

    
2318
    case "$cpu" in
2319
        athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
2320
            disable fast_clz
2321
        ;;
2322
    esac
2323

    
2324
fi
2325

    
2326
if check_func dlopen; then
2327
    ldl=
2328
elif check_func dlopen -ldl; then
2329
    ldl=-ldl
2330
fi
2331

    
2332
# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
2333
check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
2334

    
2335
check_func  fork
2336
check_func  getaddrinfo $network_extralibs
2337
check_func  gethrtime
2338
check_func  getrusage
2339
check_func  inet_aton $network_extralibs
2340
check_func  isatty
2341
check_func  memalign
2342
check_func  mkstemp
2343
check_func  posix_memalign
2344
check_func_headers io.h setmode
2345
check_func_headers lzo/lzo1x.h lzo1x_999_compress
2346
check_func_headers windows.h GetProcessTimes
2347
check_func_headers windows.h VirtualAlloc
2348

    
2349
check_header conio.h
2350
check_header dlfcn.h
2351
check_header malloc.h
2352
check_header poll.h
2353
check_header sys/mman.h
2354
check_header sys/resource.h
2355
check_header sys/select.h
2356
check_header termios.h
2357
check_header vdpau/vdpau.h
2358
check_header vdpau/vdpau_x11.h
2359
check_header X11/extensions/XvMClib.h
2360

    
2361
if ! enabled_any memalign memalign_hack posix_memalign malloc_aligned &&
2362
     enabled_any $need_memalign ; then
2363
    die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
2364
fi
2365

    
2366
disabled  zlib || check_lib   zlib.h      zlibVersion -lz   || disable  zlib
2367
disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
2368

    
2369
# check for some common methods of building with pthread support
2370
# do this before the optional library checks as some of them require pthreads
2371
if enabled pthreads; then
2372
    if check_func pthread_create; then
2373
        :
2374
    elif check_func pthread_create -pthread; then
2375
        add_cflags -pthread
2376
        add_extralibs -pthread
2377
    elif check_func pthread_create -pthreads; then
2378
        add_cflags -pthreads
2379
        add_extralibs -pthreads
2380
    elif check_func pthread_create -lpthreadGC2; then
2381
        add_extralibs -lpthreadGC2
2382
    elif ! check_lib pthread.h pthread_create -lpthread; then
2383
        die "ERROR: can't find pthreads library"
2384
    fi
2385
fi
2386

    
2387
for thread in $THREADS_LIST; do
2388
    if enabled $thread; then
2389
        test -n "$thread_type" &&
2390
            die "ERROR: Only one thread type must be selected." ||
2391
            thread_type="$thread"
2392
    fi
2393
done
2394

    
2395
check_lib math.h sin -lm
2396
check_lib va/va.h vaInitialize -lva
2397

    
2398
check_func exp2
2399
check_func exp2f
2400
check_func llrint
2401
check_func log2
2402
check_func log2f
2403
check_func lrint
2404
check_func lrintf
2405
check_func round
2406
check_func roundf
2407
check_func truncf
2408

    
2409
# these are off by default, so fail if requested and not available
2410
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
2411
enabled libdirac   && add_cflags $(pkg-config --cflags dirac) &&
2412
                      require  libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init $(pkg-config --libs dirac) &&
2413
                      require  libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init $(pkg-config --libs dirac)
2414
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
2415
enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
2416
enabled libgsm     && require  libgsm gsm.h gsm_create -lgsm
2417
enabled libmp3lame && require  libmp3lame lame/lame.h lame_init -lmp3lame -lm
2418
enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
2419
enabled libopencore_amrnb  && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb -lm
2420
enabled libopencore_amrwb  && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb -lm
2421
enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
2422
enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
2423
                           require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
2424
enabled libspeex   && require  libspeex speex/speex.h speex_decoder_init -lspeex
2425
enabled libtheora  && require  libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
2426
enabled libvorbis  && require  libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
2427
enabled libx264    && require  libx264 x264.h x264_encoder_encode -lx264 -lm &&
2428
                      { check_cpp_condition x264.h "X264_BUILD >= 79" ||
2429
                        die "ERROR: libx264 version must be >= 0.79."; }
2430
enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
2431
enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
2432

    
2433
# libdc1394 check
2434
if enabled libdc1394; then
2435
    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
2436
        enable libdc1394_2; } ||
2437
    { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
2438
        enable libdc1394_1; } ||
2439
    die "ERROR: No version of libdc1394 found "
2440
fi
2441

    
2442
disable sdl_too_old
2443
disable sdl
2444
SDL_CONFIG="${cross_prefix}sdl-config"
2445
if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
2446
    sdl_cflags=$("${SDL_CONFIG}" --cflags)
2447
    sdl_libs=$("${SDL_CONFIG}" --libs)
2448
    temp_cflags $sdl_cflags
2449
    temp_extralibs $sdl_libs
2450
    if check_lib2 SDL.h SDL_Init; then
2451
        _sdlversion=$("${SDL_CONFIG}" --version | sed 's/[^0-9]//g')
2452
        if test "$_sdlversion" -lt 121 ; then
2453
            enable sdl_too_old
2454
        else
2455
            enable sdl
2456
            check_cc $sdl_cflags <<EOF && enable sdl_video_size
2457
#include <SDL.h>
2458
int main(int argc, char **argv){
2459
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
2460
    int w = vi->current_w;
2461
    return 0;
2462
}
2463
EOF
2464
        fi
2465
    fi
2466
    restore_flags
2467
fi
2468

    
2469
texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
2470

    
2471
if enabled network; then
2472
    check_type "sys/types.h sys/socket.h" socklen_t
2473
    check_type netdb.h "struct addrinfo"
2474
    check_type sys/socket.h "struct sockaddr_storage"
2475
    # Prefer arpa/inet.h over winsock2
2476
    if check_header arpa/inet.h ; then
2477
        check_func closesocket
2478
    elif check_header winsock2.h ; then
2479
        check_func_headers winsock2.h closesocket -lws2 && \
2480
            network_extralibs="-lws2" || \
2481
        { check_func_headers winsock2.h closesocket -lws2_32 && \
2482
            network_extralibs="-lws2_32"; }
2483
        check_type ws2tcpip.h socklen_t
2484
        check_type ws2tcpip.h "struct addrinfo"
2485
        check_type ws2tcpip.h "struct sockaddr_storage"
2486
    else
2487
        disable network
2488
    fi
2489
fi
2490

    
2491
enabled_all network ipv6 && check_ld <<EOF || disable ipv6
2492
#include <sys/types.h>
2493
#include <sys/socket.h>
2494
#include <netinet/in.h>
2495
#include <netdb.h>
2496
int main(void) {
2497
    struct sockaddr_storage saddr;
2498
    struct ipv6_mreq mreq6;
2499
    getaddrinfo(0,0,0,0);
2500
    getnameinfo(0,0,0,0,0,0,0);
2501
    IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
2502
}
2503
EOF
2504

    
2505
check_header linux/videodev.h
2506
check_header linux/videodev2.h
2507
check_header sys/videoio.h
2508

    
2509
check_func_headers "windows.h vfw.h" capCreateCaptureWindow -lvfw32
2510

    
2511
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
2512
{ check_header dev/bktr/ioctl_meteor.h &&
2513
  check_header dev/bktr/ioctl_bt848.h; } ||
2514
{ check_header machine/ioctl_meteor.h &&
2515
  check_header machine/ioctl_bt848.h; } ||
2516
{ check_header dev/video/meteor/ioctl_meteor.h &&
2517
  check_header dev/video/bktr/ioctl_bt848.h; } ||
2518
check_header dev/ic/bt8xx.h
2519

    
2520
check_header sys/soundcard.h
2521
check_header soundcard.h
2522

    
2523
enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
2524

    
2525
enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack
2526

    
2527
enabled x11grab                         &&
2528
check_header X11/Xlib.h                 &&
2529
check_header X11/extensions/XShm.h      &&
2530
check_header X11/extensions/Xfixes.h    &&
2531
check_func XOpenDisplay -lX11           &&
2532
check_func XShmCreateImage -lX11 -lXext &&
2533
check_func XFixesGetCursorImage -lX11 -lXext -lXfixes
2534

    
2535
if ! disabled vdpau && enabled vdpau_vdpau_h; then
2536
check_cpp_condition \
2537
    vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
2538
    { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." &&
2539
      disable vdpau; }
2540
fi
2541

    
2542
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
2543

    
2544
# add some useful compiler flags if supported
2545
check_cflags -Wdeclaration-after-statement
2546
check_cflags -Wall
2547
check_cflags -Wno-switch
2548
check_cflags -Wdisabled-optimization
2549
check_cflags -Wpointer-arith
2550
check_cflags -Wredundant-decls
2551
check_cflags -Wno-pointer-sign
2552
check_cflags -Wcast-qual
2553
check_cflags -Wwrite-strings
2554
check_cflags -Wtype-limits
2555
check_cflags -Wundef
2556
enabled extra_warnings && check_cflags -Winline
2557

    
2558
# add some linker flags
2559
check_ldflags -Wl,--warn-common
2560
check_ldflags -Wl,--as-needed
2561
check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
2562
check_ldflags -Wl,-Bsymbolic
2563

    
2564
if enabled small; then
2565
    check_cflags -Os            # not all compilers support -Os
2566
    optimizations="small"
2567
elif enabled optimizations; then
2568
    if enabled xlc; then
2569
        add_cflags  -O5
2570
        add_ldflags -O5
2571
    elif enabled suncc; then
2572
        add_cflags -O5
2573
    elif enabled ccc; then
2574
        add_cflags -fast
2575
    else
2576
        add_cflags -O3
2577
    fi
2578
fi
2579
check_cflags -fno-math-errno
2580
check_cflags -fno-signed-zeros
2581

    
2582
if enabled icc; then
2583
    # Just warnings, no remarks
2584
    check_cflags -w1
2585
    # -wd: Disable following warnings
2586
    # 144, 167, 556: -Wno-pointer-sign
2587
    # 10006: ignoring unknown option -fno-signed-zeros
2588
    # 10156: ignoring option '-W'; no argument required
2589
    check_cflags -wd144,167,556,10006,10156
2590
    # 11030: Warning unknown option --as-needed
2591
    # 10156: ignoring option '-export'; no argument required
2592
    check_ldflags -wd10156,11030
2593
    # Allow to compile with optimizations
2594
    check_ldflags -march=$cpu
2595
    # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
2596
    enable ebp_available
2597
elif enabled ccc; then
2598
    # disable some annoying warnings
2599
    add_cflags -msg_disable cvtu32to64
2600
    add_cflags -msg_disable embedcomment
2601
    add_cflags -msg_disable needconstext
2602
    add_cflags -msg_disable nomainieee
2603
    add_cflags -msg_disable ptrmismatch1
2604
    add_cflags -msg_disable unreachcode
2605
elif enabled gcc; then
2606
    check_cflags -fno-tree-vectorize
2607
elif enabled clang; then
2608
    check_cflags -Qunused-arguments
2609
fi
2610

    
2611
if enabled gprof; then
2612
    add_cflags  -p
2613
    add_ldflags -p
2614
fi
2615

    
2616
# Find out if the .align argument is a power of two or not.
2617
check_asm asmalign_pot '".align 3"'
2618

    
2619
enabled_any $DECODER_LIST      && enable decoders
2620
enabled_any $ENCODER_LIST      && enable encoders
2621
enabled_any $HWACCEL_LIST      && enable hwaccels
2622
enabled_any $BSF_LIST          && enable bsfs
2623
enabled_any $DEMUXER_LIST      && enable demuxers
2624
enabled_any $MUXER_LIST        && enable muxers
2625
enabled_any $FILTER_LIST       && enable filters
2626
enabled_any $INDEV_LIST        && enable indevs
2627
enabled_any $OUTDEV_LIST       && enable outdevs
2628
enabled_any $PROTOCOL_LIST     && enable protocols
2629

    
2630
enabled_any $THREADS_LIST      && enable threads
2631

    
2632
check_deps $CONFIG_LIST       \
2633
           $CONFIG_EXTRA      \
2634
           $HAVE_LIST         \
2635
           $DECODER_LIST      \
2636
           $ENCODER_LIST      \
2637
           $HWACCEL_LIST      \
2638
           $PARSER_LIST       \
2639
           $BSF_LIST          \
2640
           $DEMUXER_LIST      \
2641
           $MUXER_LIST        \
2642
           $FILTER_LIST       \
2643
           $INDEV_LIST        \
2644
           $OUTDEV_LIST       \
2645
           $PROTOCOL_LIST     \
2646

    
2647
echo "install prefix            $prefix"
2648
echo "source path               $source_path"
2649
echo "C compiler                $cc"
2650
echo ".align is power-of-two    $asmalign_pot"
2651
echo "ARCH                      $arch ($cpu)"
2652
if test "$build_suffix" != ""; then
2653
    echo "build suffix              $build_suffix"
2654
fi
2655
if test "$extra_version" != ""; then
2656
    echo "version string suffix     $extra_version"
2657
fi
2658
echo "big-endian                ${bigendian-no}"
2659
echo "runtime cpu detection     ${runtime_cpudetect-no}"
2660
if enabled x86; then
2661
    echo "yasm                      ${yasm-no}"
2662
    echo "MMX enabled               ${mmx-no}"
2663
    echo "MMX2 enabled              ${mmx2-no}"
2664
    echo "3DNow! enabled            ${amd3dnow-no}"
2665
    echo "3DNow! extended enabled   ${amd3dnowext-no}"
2666
    echo "SSE enabled               ${sse-no}"
2667
    echo "SSSE3 enabled             ${ssse3-no}"
2668
    echo "CMOV enabled              ${cmov-no}"
2669
    echo "CMOV is fast              ${fast_cmov-no}"
2670
    echo "EBX available             ${ebx_available-no}"
2671
    echo "EBP available             ${ebp_available-no}"
2672
    echo "10 operands supported     ${ten_operands-no}"
2673
fi
2674
if enabled arm; then
2675
    echo "ARMv5TE enabled           ${armv5te-no}"
2676
    echo "ARMv6 enabled             ${armv6-no}"
2677
    echo "ARMv6T2 enabled           ${armv6t2-no}"
2678
    echo "ARM VFP enabled           ${armvfp-no}"
2679
    echo "IWMMXT enabled            ${iwmmxt-no}"
2680
    echo "NEON enabled              ${neon-no}"
2681
fi
2682
if enabled mips; then
2683
    echo "MMI enabled               ${mmi-no}"
2684
fi
2685
if enabled ppc; then
2686
    echo "AltiVec enabled           ${altivec-no}"
2687
    echo "PPC 4xx optimizations     ${ppc4xx-no}"
2688
    echo "dcbzl available           ${dcbzl-no}"
2689
    echo "performance report        ${powerpc_perf-no}"
2690
fi
2691
if enabled sparc; then
2692
    echo "VIS enabled               ${vis-no}"
2693
fi
2694
echo "gprof enabled             ${gprof-no}"
2695
echo "debug symbols             ${debug-no}"
2696
echo "strip symbols             ${stripping-no}"
2697
echo "optimizations             ${optimizations-no}"
2698
echo "static                    ${static-no}"
2699
echo "shared                    ${shared-no}"
2700
echo "postprocessing support    ${postproc-no}"
2701
echo "new filter support        ${avfilter-no}"
2702
echo "filters using lavformat   ${avfilter_lavf-no}"
2703
echo "network support           ${network-no}"
2704
if enabled network; then
2705
    echo "IPv6 support              ${ipv6-no}"
2706
fi
2707
echo "threading support         ${thread_type-no}"
2708
echo "SDL support               ${sdl-no}"
2709
if enabled sdl_too_old; then
2710
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
2711
fi
2712
echo "Sun medialib support      ${mlib-no}"
2713
echo "AVISynth enabled          ${avisynth-no}"
2714
echo "libdc1394 support         ${libdc1394-no}"
2715
echo "libdirac enabled          ${libdirac-no}"
2716
echo "libfaac enabled           ${libfaac-no}"
2717
echo "libfaad enabled           ${libfaad-no}"
2718
echo "libfaad dlopened          ${libfaadbin-no}"
2719
echo "libgsm enabled            ${libgsm-no}"
2720
echo "libmp3lame enabled        ${libmp3lame-no}"
2721
echo "libnut enabled            ${libnut-no}"
2722
echo "libopencore-amrnb support ${libopencore_amrnb-no}"
2723
echo "libopencore-amrwb support ${libopencore_amrwb-no}"
2724
echo "libopenjpeg enabled       ${libopenjpeg-no}"
2725
echo "libschroedinger enabled   ${libschroedinger-no}"
2726
echo "libspeex enabled          ${libspeex-no}"
2727
echo "libtheora enabled         ${libtheora-no}"
2728
echo "libvorbis enabled         ${libvorbis-no}"
2729
echo "libx264 enabled           ${libx264-no}"
2730
echo "libxvid enabled           ${libxvid-no}"
2731
echo "zlib enabled              ${zlib-no}"
2732
echo "bzlib enabled             ${bzlib-no}"
2733
echo
2734

    
2735
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
2736
    echo "Enabled ${type}s:"
2737
    eval list=\$$(toupper $type)_LIST
2738
    for part in $list; do
2739
        enabled $part && echo ${part%_*}
2740
    done | sort | pr -3 -t
2741
    echo
2742
done
2743

    
2744
license="LGPL version 2.1 or later"
2745
if enabled nonfree; then
2746
    license="nonfree and unredistributable"
2747
elif enabled gplv3; then
2748
    license="GPL version 3 or later"
2749
elif enabled lgplv3; then
2750
    license="LGPL version 3 or later"
2751
elif enabled gpl; then
2752
    license="GPL version 2 or later"
2753
fi
2754

    
2755
echo "License: $license"
2756

    
2757
echo "Creating config.mak and config.h..."
2758

    
2759
enabled stripping || strip="echo skipping strip"
2760

    
2761
cat > config.mak <<EOF
2762
# Automatically generated by configure - do not modify!
2763
ifndef FFMPEG_CONFIG_MAK
2764
FFMPEG_CONFIG_MAK=1
2765
FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
2766
prefix=$prefix
2767
LIBDIR=\$(DESTDIR)$libdir
2768
SHLIBDIR=\$(DESTDIR)$shlibdir
2769
INCDIR=\$(DESTDIR)$incdir
2770
BINDIR=\$(DESTDIR)$bindir
2771
DATADIR=\$(DESTDIR)$datadir
2772
MANDIR=\$(DESTDIR)$mandir
2773
SRC_PATH="$source_path"
2774
SRC_PATH_BARE=$source_path
2775
BUILD_ROOT="$PWD"
2776
ARCH=$arch
2777
CC=$cc
2778
AS=$as
2779
LD=$ld
2780
DEPCC=$dep_cc
2781
YASM=$yasmexe
2782
AR=$ar
2783
RANLIB=$ranlib
2784
LN_S=$ln_s
2785
STRIP=$strip
2786
CPPFLAGS=$CPPFLAGS
2787
CFLAGS=$CFLAGS
2788
ASFLAGS=$ASFLAGS
2789
CC_O=$CC_O
2790
LDFLAGS=$LDFLAGS
2791
FFSERVERLDFLAGS=$FFSERVERLDFLAGS
2792
SHFLAGS=$SHFLAGS
2793
YASMFLAGS=$YASMFLAGS
2794
BUILDSUF=$build_suffix
2795
FULLNAME=$FULLNAME
2796
LIBPREF=$LIBPREF
2797
LIBSUF=$LIBSUF
2798
LIBNAME=$LIBNAME
2799
SLIBPREF=$SLIBPREF
2800
SLIBSUF=$SLIBSUF
2801
EXESUF=$EXESUF
2802
EXTRA_VERSION=$extra_version
2803
DEPFLAGS=$DEPFLAGS
2804
CCDEP=$CCDEP
2805
ASDEP=$ASDEP
2806
CC_DEPFLAGS=$CC_DEPFLAGS
2807
AS_DEPFLAGS=$AS_DEPFLAGS
2808
HOSTCC=$host_cc
2809
HOSTCFLAGS=$host_cflags
2810
HOSTEXESUF=$HOSTEXESUF
2811
HOSTLDFLAGS=$host_ldflags
2812
HOSTLIBS=$host_libs
2813
TARGET_EXEC=$target_exec
2814
TARGET_PATH=$target_path
2815
SDL_LIBS=$sdl_libs
2816
SDL_CFLAGS=$sdl_cflags
2817
LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
2818
EXTRALIBS=$extralibs
2819
EOF
2820

    
2821
get_version(){
2822
    name=$1
2823
    file=$source_path/$2
2824
    eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
2825
    eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
2826
    lcname=$(tolower $name)
2827
    eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
2828
    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
2829
}
2830

    
2831
get_version LIBSWSCALE  libswscale/swscale.h
2832
get_version LIBPOSTPROC libpostproc/postprocess.h
2833
get_version LIBAVCODEC  libavcodec/avcodec.h
2834
get_version LIBAVDEVICE libavdevice/avdevice.h
2835
get_version LIBAVFORMAT libavformat/avformat.h
2836
get_version LIBAVUTIL   libavutil/avutil.h
2837
get_version LIBAVFILTER libavfilter/avfilter.h
2838

    
2839
enabled shared && cat >> config.mak <<EOF
2840
LIBTARGET=${LIBTARGET}
2841
SLIBNAME=${SLIBNAME}
2842
SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
2843
SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
2844
SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
2845
SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
2846
SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
2847
SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
2848
EOF
2849

    
2850
enabled asmalign_pot || align_shift="1 <<"
2851

    
2852
cat > $TMPH <<EOF
2853
/* Automatically generated by configure - do not modify! */
2854
#ifndef FFMPEG_CONFIG_H
2855
#define FFMPEG_CONFIG_H
2856
#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
2857
#define FFMPEG_LICENSE "$(c_escape $license)"
2858
#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
2859
#define CC_TYPE "$cc_type"
2860
#define CC_VERSION $cc_version
2861
#define restrict $_restrict
2862
#define ASMALIGN(ZEROBITS) ".align $align_shift " #ZEROBITS "\\n\\t"
2863
#define EXTERN_PREFIX "${extern_prefix}"
2864
#define EXTERN_ASM ${extern_prefix}
2865
EOF
2866

    
2867
if enabled small || disabled optimizations; then
2868
    echo "#define av_always_inline"  >> $TMPH
2869
fi
2870

    
2871
print_config ARCH_   $TMPH config.mak $ARCH_LIST
2872
print_config HAVE_   $TMPH config.mak $HAVE_LIST
2873
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST       \
2874
                                      $CONFIG_EXTRA      \
2875
                                      $DECODER_LIST      \
2876
                                      $ENCODER_LIST      \
2877
                                      $HWACCEL_LIST      \
2878
                                      $PARSER_LIST       \
2879
                                      $BSF_LIST          \
2880
                                      $DEMUXER_LIST      \
2881
                                      $MUXER_LIST        \
2882
                                      $FILTER_LIST       \
2883
                                      $PROTOCOL_LIST     \
2884
                                      $INDEV_LIST        \
2885
                                      $OUTDEV_LIST       \
2886

    
2887
echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
2888
echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
2889

    
2890
# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
2891
cmp -s $TMPH config.h &&
2892
    echo "config.h is unchanged" ||
2893
    mv -f $TMPH config.h
2894

    
2895
# build tree in object directory if source path is different from current one
2896
if enabled source_path_used; then
2897
    DIRS="
2898
        doc
2899
        libavcodec
2900
        libavcodec/$arch
2901
        libavdevice
2902
        libavfilter
2903
        libavformat
2904
        libavutil
2905
        libavutil/$arch
2906
        libpostproc
2907
        libswscale
2908
        libswscale/$arch
2909
        tests
2910
        tools
2911
    "
2912
    FILES="
2913
        Makefile
2914
        common.mak
2915
        subdir.mak
2916
        doc/texi2pod.pl
2917
        libavcodec/Makefile
2918
        libavdevice/Makefile
2919
        libavfilter/Makefile
2920
        libavformat/Makefile
2921
        libavutil/Makefile
2922
        libpostproc/Makefile
2923
        libswscale/Makefile
2924
    "
2925
    for dir in $DIRS ; do
2926
        mkdir -p $dir
2927
    done
2928
    for f in $FILES ; do
2929
        $ln_s "$source_path/$f" $f
2930
    done
2931
fi
2932

    
2933

    
2934
# build pkg-config files
2935

    
2936
pkgconfig_generate(){
2937
name=$1
2938
shortname=${name#lib}${build_suffix}
2939
comment=$2
2940
version=$3
2941
libs=$4
2942
requires=$5
2943
cat <<EOF > $name/$name.pc
2944
prefix=$prefix
2945
exec_prefix=\${prefix}
2946
libdir=$libdir
2947
includedir=$incdir
2948

    
2949
Name: $name
2950
Description: $comment
2951
Version: $version
2952
Requires: $(enabled shared || echo $requires)
2953
Requires.private: $(enabled shared && echo $requires)
2954
Conflicts:
2955
Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
2956
Libs.private: $(enabled shared && echo $libs)
2957
Cflags: -I\${includedir}
2958
EOF
2959
cat <<EOF > $name/$name-uninstalled.pc
2960
prefix=
2961
exec_prefix=
2962
libdir=\${pcfiledir}
2963
includedir=${source_path}
2964

    
2965
Name: $name
2966
Description: $comment
2967
Version: $version
2968
Requires: $requires
2969
Conflicts:
2970
Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
2971
Cflags: -I\${includedir}
2972
EOF
2973
}
2974

    
2975
pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
2976
pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
2977
pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
2978
pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
2979
enabled avfilter &&
2980
    pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
2981
enabled postproc &&
2982
    pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
2983
pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"