Statistics
| Branch: | Revision:

ffmpeg / configure @ 6dafa706

History | View | Annotate | Download (103 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.log]
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-ffprobe        disable ffprobe build
86
  --disable-ffserver       disable ffserver build
87
  --disable-avdevice       disable libavdevice build
88
  --disable-avcodec        disable libavcodec build
89
  --disable-avformat       disable libavformat build
90
  --disable-swscale        disable libswscale build
91
  --enable-postproc        enable GPLed postprocessing support [no]
92
  --disable-avfilter       disable video filter support [no]
93
  --disable-pthreads       disable pthreads [auto]
94
  --enable-w32threads      use Win32 threads [no]
95
  --enable-x11grab         enable X11 grabbing [no]
96
  --disable-network        disable network support [no]
97
  --disable-mpegaudio-hp   faster (but less accurate) MPEG audio decoding [no]
98
  --enable-gray            enable full grayscale support (slower color)
99
  --disable-swscale-alpha  disable alpha channel support in swscale
100
  --disable-fastdiv        disable table-based division
101
  --enable-small           optimize for size instead of speed
102
  --disable-aandct         disable AAN DCT code
103
  --disable-dct            disable DCT code
104
  --disable-fft            disable FFT code
105
  --disable-golomb         disable Golomb code
106
  --disable-huffman        disable Huffman code
107
  --disable-lpc            disable LPC code
108
  --disable-mdct           disable MDCT code
109
  --disable-rdft           disable RDFT code
110
  --disable-vaapi          disable VAAPI code
111
  --disable-vdpau          disable VDPAU code
112
  --disable-dxva2          disable DXVA2 code
113
  --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
114
  --enable-hardcoded-tables use hardcoded tables instead of runtime generation
115
  --enable-memalign-hack   emulate memalign, interferes with memory debuggers
116
  --disable-everything     disable all components listed below
117
  --disable-encoder=NAME   disable encoder NAME
118
  --enable-encoder=NAME    enable encoder NAME
119
  --disable-encoders       disable all encoders
120
  --disable-decoder=NAME   disable decoder NAME
121
  --enable-decoder=NAME    enable decoder NAME
122
  --disable-decoders       disable all decoders
123
  --disable-hwaccel=NAME   disable hwaccel NAME
124
  --enable-hwaccel=NAME    enable hwaccel NAME
125
  --disable-hwaccels       disable all hwaccels
126
  --disable-muxer=NAME     disable muxer NAME
127
  --enable-muxer=NAME      enable muxer NAME
128
  --disable-muxers         disable all muxers
129
  --disable-demuxer=NAME   disable demuxer NAME
130
  --enable-demuxer=NAME    enable demuxer NAME
131
  --disable-demuxers       disable all demuxers
132
  --enable-parser=NAME     enable parser NAME
133
  --disable-parser=NAME    disable parser NAME
134
  --disable-parsers        disable all parsers
135
  --enable-bsf=NAME        enable bitstream filter NAME
136
  --disable-bsf=NAME       disable bitstream filter NAME
137
  --disable-bsfs           disable all bitstream filters
138
  --enable-protocol=NAME   enable protocol NAME
139
  --disable-protocol=NAME  disable protocol NAME
140
  --disable-protocols      disable all protocols
141
  --disable-indev=NAME     disable input device NAME
142
  --disable-outdev=NAME    disable output device NAME
143
  --disable-indevs         disable input devices
144
  --disable-outdevs        disable output devices
145
  --disable-devices        disable all devices
146
  --enable-filter=NAME     enable filter NAME
147
  --disable-filter=NAME    disable filter NAME
148
  --disable-filters        disable all filters
149
  --list-decoders          show all available decoders
150
  --list-encoders          show all available encoders
151
  --list-hwaccels          show all available hardware accelerators
152
  --list-muxers            show all available muxers
153
  --list-demuxers          show all available demuxers
154
  --list-parsers           show all available parsers
155
  --list-protocols         show all available protocols
156
  --list-bsfs              show all available bitstream filters
157
  --list-indevs            show all available input devices
158
  --list-outdevs           show all available output devices
159
  --list-filters           show all available filters
160

    
161
External library support:
162
  --enable-avisynth        enable reading of AVISynth script files [no]
163
  --enable-bzlib           enable bzlib [autodetect]
164
  --enable-libcelt         enable CELT/Opus decoding via libcelt [no]
165
  --enable-frei0r          enable frei0r video filtering
166
  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
167
  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
168
  --enable-libopencv       enable video filtering via libopencv [no]
169
  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
170
                           and libraw1394 [no]
171
  --enable-libdirac        enable Dirac support via libdirac [no]
172
  --enable-libfaac         enable FAAC support via libfaac [no]
173
  --enable-libfreetype     enable libfreetype [no]
174
  --enable-libgsm          enable GSM support via libgsm [no]
175
  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
176
  --enable-libnut          enable NUT (de)muxing via libnut,
177
                           native (de)muxer exists [no]
178
  --enable-libopenjpeg     enable JPEG 2000 decoding via OpenJPEG [no]
179
  --enable-librtmp         enable RTMP[E] support via librtmp [no]
180
  --enable-libschroedinger enable Dirac support via libschroedinger [no]
181
  --enable-libspeex        enable Speex decoding via libspeex [no]
182
  --enable-libtheora       enable Theora encoding via libtheora [no]
183
  --enable-libvo-aacenc    enable AAC encoding via libvo-aacenc [no]
184
  --enable-libvo-amrwbenc  enable AMR-WB encoding via libvo-amrwbenc [no]
185
  --enable-libvorbis       enable Vorbis encoding via libvorbis,
186
                           native implementation exists [no]
187
  --enable-libvpx          enable VP8 support via libvpx [no]
188
  --enable-libx264         enable H.264 encoding via x264 [no]
189
  --enable-libxavs         enable AVS encoding via xavs [no]
190
  --enable-libxvid         enable Xvid encoding via xvidcore,
191
                           native MPEG-4/Xvid encoder exists [no]
192
  --enable-mlib            enable Sun medialib [no]
193
  --enable-zlib            enable zlib [autodetect]
194

    
195
Advanced options (experts only):
196
  --source-path=PATH       path to source code [$source_path]
197
  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
198
  --enable-cross-compile   assume a cross-compiler is used
199
  --sysroot=PATH           root of cross-build tree
200
  --sysinclude=PATH        location of cross-build system headers
201
  --target-os=OS           compiler targets OS [$target_os]
202
  --target-exec=CMD        command to run executables on target
203
  --target-path=DIR        path to view of build directory on target
204
  --nm=NM                  use nm tool
205
  --ar=AR                  use archive tool AR [$ar_default]
206
  --as=AS                  use assembler AS [$as_default]
207
  --cc=CC                  use C compiler CC [$cc_default]
208
  --ld=LD                  use linker LD
209
  --host-cc=HOSTCC         use host C compiler HOSTCC
210
  --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
211
  --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
212
  --host-libs=HLIBS        use libs HLIBS when linking for host
213
  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
214
  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
215
  --extra-libs=ELIBS       add ELIBS [$ELIBS]
216
  --extra-version=STRING   version string suffix []
217
  --build-suffix=SUFFIX    library name suffix []
218
  --arch=ARCH              select architecture [$arch]
219
  --cpu=CPU                select the minimum required CPU (affects
220
                           instruction selection, may crash on older CPUs)
221
  --disable-asm            disable all assembler optimizations
222
  --disable-altivec        disable AltiVec optimizations
223
  --disable-amd3dnow       disable 3DNow! optimizations
224
  --disable-amd3dnowext    disable 3DNow! extended optimizations
225
  --disable-mmx            disable MMX optimizations
226
  --disable-mmx2           disable MMX2 optimizations
227
  --disable-sse            disable SSE optimizations
228
  --disable-ssse3          disable SSSE3 optimizations
229
  --disable-avx            disable AVX optimizations
230
  --disable-armv5te        disable armv5te optimizations
231
  --disable-armv6          disable armv6 optimizations
232
  --disable-armv6t2        disable armv6t2 optimizations
233
  --disable-armvfp         disable ARM VFP optimizations
234
  --disable-iwmmxt         disable iwmmxt optimizations
235
  --disable-mmi            disable MMI optimizations
236
  --disable-neon           disable neon optimizations
237
  --disable-vis            disable VIS optimizations
238
  --disable-yasm           disable use of yasm assembler
239
  --enable-pic             build position-independent code
240
  --malloc-prefix=PFX      prefix malloc and related names with PFX
241
  --enable-sram            allow use of on-chip SRAM
242
  --disable-symver         disable symbol versioning
243

    
244
Developer options (useful when working on FFmpeg itself):
245
  --disable-debug          disable debugging symbols
246
  --enable-debug=LEVEL     set the debug level [$debuglevel]
247
  --disable-optimizations  disable compiler optimizations
248
  --enable-extra-warnings  enable more compiler warnings
249
  --disable-stripping      disable stripping of executables and shared libraries
250
  --samples=PATH           location of test samples for FATE, if not set use
251
                           \$FATE_SAMPLES at make invocation time.
252

    
253
NOTE: Object files are built at the place where configure is launched.
254
EOF
255
  exit 0
256
}
257

    
258
quotes='""'
259

    
260
log(){
261
    echo "$@" >> $logfile
262
}
263

    
264
log_file(){
265
    log BEGIN $1
266
    pr -n -t $1 >> $logfile
267
    log END $1
268
}
269

    
270
echolog(){
271
    log "$@"
272
    echo "$@"
273
}
274

    
275
warn(){
276
    log "WARNING: $*"
277
    WARNINGS="${WARNINGS}WARNING: $*\n"
278
}
279

    
280
die(){
281
    echolog "$@"
282
    cat <<EOF
283

    
284
If you think configure made a mistake, make sure you are using the latest
285
version from Git.  If the latest version fails, report the problem to the
286
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
287
EOF
288
    if disabled logging; then
289
        cat <<EOF
290
Rerun configure with logging enabled (do not use --disable-logging), and
291
include the log this produces with your report.
292
EOF
293
    else
294
cat <<EOF
295
Include the log file "$logfile" produced by configure as this will help
296
solving the problem.
297
EOF
298
    fi
299
    exit 1
300
}
301

    
302
# Avoid locale weirdness, besides we really just want to translate ASCII.
303
toupper(){
304
    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
305
}
306

    
307
tolower(){
308
    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
309
}
310

    
311
c_escape(){
312
    echo "$*" | sed 's/["\\]/\\\0/g'
313
}
314

    
315
sh_quote(){
316
    v=$(echo "$1" | sed "s/'/'\\\\''/g")
317
    test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
318
    echo "$v"
319
}
320

    
321
cleanws(){
322
    echo "$@" | sed 's/^ *//;s/  */ /g;s/ *$//'
323
}
324

    
325
filter(){
326
    pat=$1
327
    shift
328
    for v; do
329
        eval "case $v in $pat) echo $v ;; esac"
330
    done
331
}
332

    
333
filter_out(){
334
    pat=$1
335
    shift
336
    for v; do
337
        eval "case $v in $pat) ;; *) echo $v ;; esac"
338
    done
339
}
340

    
341
map(){
342
    m=$1
343
    shift
344
    for v; do eval $m; done
345
}
346

    
347
set_all(){
348
    value=$1
349
    shift
350
    for var in $*; do
351
        eval $var=$value
352
    done
353
}
354

    
355
set_weak(){
356
    value=$1
357
    shift
358
    for var; do
359
        eval : \${$var:=$value}
360
    done
361
}
362

    
363
set_safe(){
364
    var=$1
365
    shift
366
    eval $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')='$*'
367
}
368

    
369
get_safe(){
370
    eval echo \$$(echo "$1" | sed 's/[^A-Za-z0-9_]/_/g')
371
}
372

    
373
pushvar(){
374
    for var in $*; do
375
        eval level=\${${var}_level:=0}
376
        eval ${var}_${level}="\$$var"
377
        eval ${var}_level=$(($level+1))
378
    done
379
}
380

    
381
popvar(){
382
    for var in $*; do
383
        eval level=\${${var}_level:-0}
384
        test $level = 0 && continue
385
        eval level=$(($level-1))
386
        eval $var="\${${var}_${level}}"
387
        eval ${var}_level=$level
388
        eval unset ${var}_${level}
389
    done
390
}
391

    
392
enable(){
393
    set_all yes $*
394
}
395

    
396
disable(){
397
    set_all no $*
398
}
399

    
400
enable_weak(){
401
    set_weak yes $*
402
}
403

    
404
disable_weak(){
405
    set_weak no $*
406
}
407

    
408
enable_safe(){
409
    for var; do
410
        enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
411
    done
412
}
413

    
414
disable_safe(){
415
    for var; do
416
        disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
417
    done
418
}
419

    
420
do_enable_deep(){
421
    for var; do
422
        enabled $var && continue
423
        eval sel="\$${var}_select"
424
        eval sgs="\$${var}_suggest"
425
        pushvar var sgs
426
        enable_deep $sel
427
        popvar sgs
428
        enable_deep_weak $sgs
429
        popvar var
430
    done
431
}
432

    
433
enable_deep(){
434
    do_enable_deep $*
435
    enable $*
436
}
437

    
438
enable_deep_weak(){
439
    do_enable_deep $*
440
    enable_weak $*
441
}
442

    
443
enabled(){
444
    test "${1#!}" = "$1" && op== || op=!=
445
    eval test "x\$${1#!}" $op "xyes"
446
}
447

    
448
disabled(){
449
    test "${1#!}" = "$1" && op== || op=!=
450
    eval test "x\$${1#!}" $op "xno"
451
}
452

    
453
enabled_all(){
454
    for opt; do
455
        enabled $opt || return 1
456
    done
457
}
458

    
459
disabled_all(){
460
    for opt; do
461
        disabled $opt || return 1
462
    done
463
}
464

    
465
enabled_any(){
466
    for opt; do
467
        enabled $opt && return 0
468
    done
469
}
470

    
471
disabled_any(){
472
    for opt; do
473
        disabled $opt && return 0
474
    done
475
    return 1
476
}
477

    
478
set_default(){
479
    for opt; do
480
        eval : \${$opt:=\$${opt}_default}
481
    done
482
}
483

    
484
is_in(){
485
    value=$1
486
    shift
487
    for var in $*; do
488
        [ $var = $value ] && return 0
489
    done
490
    return 1
491
}
492

    
493
check_deps(){
494
    for cfg; do
495
        cfg="${cfg#!}"
496
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
497
        disabled ${cfg}_checking && continue
498
        enable ${cfg}_checking
499

    
500
        eval dep_all="\$${cfg}_deps"
501
        eval dep_any="\$${cfg}_deps_any"
502
        eval dep_sel="\$${cfg}_select"
503
        eval dep_sgs="\$${cfg}_suggest"
504
        eval dep_ifa="\$${cfg}_if"
505
        eval dep_ifn="\$${cfg}_if_any"
506

    
507
        pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
508
        check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
509
        popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
510

    
511
        [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
512
        [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
513
        enabled_all  $dep_all || disable $cfg
514
        enabled_any  $dep_any || disable $cfg
515
        disabled_any $dep_sel && disable $cfg
516

    
517
        if enabled $cfg; then
518
            eval dep_extralibs="\$${cfg}_extralibs"
519
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
520
            enable_deep $dep_sel
521
            enable_deep_weak $dep_sgs
522
        fi
523

    
524
        disable ${cfg}_checking
525
    done
526
}
527

    
528
print_config_h(){
529
    enabled $1 && v=1 || v=0
530
    echo "#define $2 $v"
531
}
532

    
533
print_config_mak(){
534
    enabled $1 && v= || v=!
535
    echo "$v$2=yes"
536
}
537

    
538
print_config_asm(){
539
    enabled $1 && echo "%define $2"
540
}
541

    
542
print_config(){
543
    pfx=$1
544
    files=$2
545
    shift 2
546
    for cfg; do
547
        ucname="$(toupper $cfg)"
548
        for f in $files; do
549
            "print_config_${f##*.}" $cfg ${pfx}${ucname} >>$f
550
        done
551
    done
552
}
553

    
554
print_enabled(){
555
    test "$1" = -n && end=" " && shift || end="\n"
556
    suf=$1
557
    shift
558
    for v; do
559
        enabled $v && printf "%s$end" ${v%$suf};
560
    done
561
}
562

    
563
append(){
564
    var=$1
565
    shift
566
    eval "$var=\"\$$var $*\""
567
}
568

    
569
prepend(){
570
    var=$1
571
    shift
572
    eval "$var=\"$* \$$var\""
573
}
574

    
575
add_cppflags(){
576
    append CPPFLAGS $($filter_cppflags "$@")
577
}
578

    
579
add_cflags(){
580
    append CFLAGS $($filter_cflags "$@")
581
}
582

    
583
add_asflags(){
584
    append ASFLAGS $($filter_asflags "$@")
585
}
586

    
587
add_ldflags(){
588
    append LDFLAGS "$@"
589
}
590

    
591
add_extralibs(){
592
    prepend extralibs "$@"
593
}
594

    
595
check_cmd(){
596
    log "$@"
597
    "$@" >> $logfile 2>&1
598
}
599

    
600
check_cc(){
601
    log check_cc "$@"
602
    cat > $TMPC
603
    log_file $TMPC
604
    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC
605
}
606

    
607
check_cpp(){
608
    log check_cpp "$@"
609
    cat > $TMPC
610
    log_file $TMPC
611
    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC
612
}
613

    
614
check_as(){
615
    log check_as "$@"
616
    cat > $TMPC
617
    log_file $TMPC
618
    check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC
619
}
620

    
621
check_asm(){
622
    log check_asm "$@"
623
    name="$1"
624
    code="$2"
625
    shift 2
626
    disable $name
627
    check_as "$@" <<EOF && enable $name
628
void foo(void){ __asm__ volatile($code); }
629
EOF
630
}
631

    
632
check_yasm(){
633
    log check_yasm "$@"
634
    echo "$1" > $TMPS
635
    log_file $TMPS
636
    shift 1
637
    check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
638
}
639

    
640
check_ld(){
641
    log check_ld "$@"
642
    flags=''
643
    libs=''
644
    for f; do
645
        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
646
    done
647
    check_cc $($filter_cflags $flags) || return
648
    check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $libs $extralibs
649
}
650

    
651
check_cppflags(){
652
    log check_cppflags "$@"
653
    set -- $($filter_cppflags "$@")
654
    check_cc "$@" <<EOF && append CPPFLAGS "$@"
655
int x;
656
EOF
657
}
658

    
659
check_cflags(){
660
    log check_cflags "$@"
661
    set -- $($filter_cflags "$@")
662
    check_cc "$@" <<EOF && append CFLAGS "$@"
663
int x;
664
EOF
665
}
666

    
667
test_ldflags(){
668
    log test_ldflags "$@"
669
    check_ld "$@" <<EOF
670
int main(void){ return 0; }
671
EOF
672
}
673

    
674
check_ldflags(){
675
    log check_ldflags "$@"
676
    test_ldflags "$@" && add_ldflags "$@"
677
}
678

    
679
check_header(){
680
    log check_header "$@"
681
    header=$1
682
    shift
683
    disable_safe $header
684
    check_cpp "$@" <<EOF && enable_safe $header
685
#include <$header>
686
int x;
687
EOF
688
}
689

    
690
check_func(){
691
    log check_func "$@"
692
    func=$1
693
    shift
694
    disable $func
695
    check_ld "$@" <<EOF && enable $func
696
extern int $func();
697
int main(void){ $func(); }
698
EOF
699
}
700

    
701
check_mathfunc(){
702
    log check_mathfunc "$@"
703
    func=$1
704
    shift
705
    disable $func
706
    check_ld "$@" <<EOF && enable $func
707
#include <math.h>
708
float foo(float f) { return $func(f); }
709
int main(void){ return 0; }
710
EOF
711
}
712

    
713
check_func_headers(){
714
    log check_func_headers "$@"
715
    headers=$1
716
    funcs=$2
717
    shift 2
718
    {
719
        for hdr in $headers; do
720
            echo "#include <$hdr>"
721
        done
722
        for func in $funcs; do
723
            echo "long check_$func(void) { return (long) $func; }"
724
        done
725
        echo "int main(void) { return 0; }"
726
    } | check_ld "$@" && enable $funcs && enable_safe $headers
727
}
728

    
729
check_cpp_condition(){
730
    log check_cpp_condition "$@"
731
    header=$1
732
    condition=$2
733
    shift 2
734
    check_cpp $($filter_cppflags "$@") <<EOF
735
#include <$header>
736
#if !($condition)
737
#error "unsatisfied condition: $condition"
738
#endif
739
EOF
740
}
741

    
742
check_lib(){
743
    log check_lib "$@"
744
    header="$1"
745
    func="$2"
746
    shift 2
747
    check_header $header && check_func $func "$@" && add_extralibs "$@"
748
}
749

    
750
check_lib2(){
751
    log check_lib2 "$@"
752
    headers="$1"
753
    funcs="$2"
754
    shift 2
755
    check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
756
}
757

    
758
check_pkg_config(){
759
    log check_pkg_config "$@"
760
    pkg="$1"
761
    headers="$2"
762
    funcs="$3"
763
    shift 3
764
    $pkg_config --exists $pkg || return
765
    pkg_cflags=$($pkg_config --cflags $pkg)
766
    pkg_libs=$($pkg_config --libs $pkg)
767
    check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
768
        set_safe ${pkg}_cflags $pkg_cflags   &&
769
        set_safe ${pkg}_libs   $pkg_libs
770
}
771

    
772
check_exec(){
773
    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
774
}
775

    
776
check_exec_crash(){
777
    code=$(cat)
778

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

    
785
    (check_exec "$@") >> $logfile 2>&1 <<EOF
786
#include <signal.h>
787
static void sighandler(int sig){
788
    raise(SIGTERM);
789
}
790
int main(void){
791
    signal(SIGILL, sighandler);
792
    signal(SIGFPE, sighandler);
793
    signal(SIGSEGV, sighandler);
794
#ifdef SIGBUS
795
    signal(SIGBUS, sighandler);
796
#endif
797
    { $code }
798
}
799
EOF
800
}
801

    
802
check_type(){
803
    log check_type "$@"
804
    headers=$1
805
    type=$2
806
    shift 2
807
    disable_safe "$type"
808
    incs=""
809
    for hdr in $headers; do
810
        incs="$incs
811
#include <$hdr>"
812
    done
813
    check_cc "$@" <<EOF && enable_safe "$type"
814
$incs
815
$type v;
816
EOF
817
}
818

    
819
check_struct(){
820
    log check_type "$@"
821
    headers=$1
822
    struct=$2
823
    member=$3
824
    shift 3
825
    disable_safe "${struct}_${member}"
826
    incs=""
827
    for hdr in $headers; do
828
        incs="$incs
829
#include <$hdr>"
830
    done
831
    check_cc "$@" <<EOF && enable_safe "${struct}_${member}"
832
$incs
833
const void *p = &(($struct *)0)->$member;
834
EOF
835
}
836

    
837
require(){
838
    name="$1"
839
    header="$2"
840
    func="$3"
841
    shift 3
842
    check_lib $header $func "$@" || die "ERROR: $name not found"
843
}
844

    
845
require2(){
846
    name="$1"
847
    headers="$2"
848
    func="$3"
849
    shift 3
850
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
851
}
852

    
853
require_pkg_config(){
854
    pkg="$1"
855
    check_pkg_config "$@" || die "ERROR: $pkg not found"
856
    add_cflags    $(get_safe ${pkg}_cflags)
857
    add_extralibs $(get_safe ${pkg}_libs)
858
}
859

    
860
check_host_cc(){
861
    log check_host_cc "$@"
862
    cat > $TMPC
863
    log_file $TMPC
864
    check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC
865
}
866

    
867
check_host_cflags(){
868
    log check_host_cflags "$@"
869
    check_host_cc "$@" <<EOF && append host_cflags "$@"
870
int x;
871
EOF
872
}
873

    
874
apply(){
875
    file=$1
876
    shift
877
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
878
}
879

    
880
cp_if_changed(){
881
    cmp -s "$1" "$2" &&
882
        echo "$2 is unchanged" ||
883
        cp -f "$1" "$2"
884
}
885

    
886
# CONFIG_LIST contains configurable options, while HAVE_LIST is for
887
# system-dependent things.
888

    
889
COMPONENT_LIST="
890
    bsfs
891
    decoders
892
    demuxers
893
    encoders
894
    filters
895
    hwaccels
896
    indevs
897
    muxers
898
    outdevs
899
    parsers
900
    protocols
901
"
902

    
903
CONFIG_LIST="
904
    $COMPONENT_LIST
905
    aandct
906
    ac3dsp
907
    avcodec
908
    avdevice
909
    avfilter
910
    avformat
911
    avisynth
912
    bzlib
913
    crystalhd
914
    dct
915
    doc
916
    dwt
917
    dxva2
918
    fastdiv
919
    ffmpeg
920
    ffplay
921
    ffprobe
922
    ffserver
923
    fft
924
    frei0r
925
    golomb
926
    gpl
927
    gray
928
    h264dsp
929
    h264pred
930
    hardcoded_tables
931
    huffman
932
    libcelt
933
    libdc1394
934
    libdirac
935
    libfaac
936
    libfreetype
937
    libgsm
938
    libmp3lame
939
    libnut
940
    libopencore_amrnb
941
    libopencore_amrwb
942
    libopencv
943
    libopenjpeg
944
    librtmp
945
    libschroedinger
946
    libspeex
947
    libtheora
948
    libvo_aacenc
949
    libvo_amrwbenc
950
    libvorbis
951
    libvpx
952
    libx264
953
    libxavs
954
    libxvid
955
    lpc
956
    lsp
957
    mdct
958
    memalign_hack
959
    mlib
960
    mpegaudio_hp
961
    network
962
    nonfree
963
    pic
964
    postproc
965
    rdft
966
    rtpdec
967
    runtime_cpudetect
968
    shared
969
    sinewin
970
    small
971
    sram
972
    static
973
    swscale
974
    swscale_alpha
975
    vaapi
976
    vdpau
977
    version3
978
    x11grab
979
    zlib
980
"
981

    
982
THREADS_LIST='
983
    pthreads
984
    w32threads
985
'
986

    
987
ARCH_LIST='
988
    alpha
989
    arm
990
    avr32
991
    avr32_ap
992
    avr32_uc
993
    bfin
994
    ia64
995
    m68k
996
    mips
997
    mips64
998
    parisc
999
    ppc
1000
    ppc64
1001
    s390
1002
    sh4
1003
    sparc
1004
    sparc64
1005
    tomi
1006
    x86
1007
    x86_32
1008
    x86_64
1009
'
1010

    
1011
ARCH_EXT_LIST='
1012
    altivec
1013
    amd3dnow
1014
    amd3dnowext
1015
    armv5te
1016
    armv6
1017
    armv6t2
1018
    armvfp
1019
    avx
1020
    iwmmxt
1021
    mmi
1022
    mmx
1023
    mmx2
1024
    neon
1025
    ppc4xx
1026
    sse
1027
    ssse3
1028
    vis
1029
'
1030

    
1031
HAVE_LIST_PUB='
1032
    bigendian
1033
    fast_unaligned
1034
'
1035

    
1036
HAVE_LIST="
1037
    $ARCH_EXT_LIST
1038
    $HAVE_LIST_PUB
1039
    $THREADS_LIST
1040
    aligned_stack
1041
    alsa_asoundlib_h
1042
    altivec_h
1043
    arpa_inet_h
1044
    attribute_may_alias
1045
    attribute_packed
1046
    bswap
1047
    closesocket
1048
    cmov
1049
    dcbzl
1050
    dev_bktr_ioctl_bt848_h
1051
    dev_bktr_ioctl_meteor_h
1052
    dev_ic_bt8xx_h
1053
    dev_video_meteor_ioctl_meteor_h
1054
    dev_video_bktr_ioctl_bt848_h
1055
    dlfcn_h
1056
    dlopen
1057
    dos_paths
1058
    ebp_available
1059
    ebx_available
1060
    exp2
1061
    exp2f
1062
    fast_64bit
1063
    fast_clz
1064
    fast_cmov
1065
    fcntl
1066
    fork
1067
    getaddrinfo
1068
    gethrtime
1069
    GetProcessMemoryInfo
1070
    GetProcessTimes
1071
    getrusage
1072
    gnu_as
1073
    struct_rusage_ru_maxrss
1074
    ibm_asm
1075
    inet_aton
1076
    inline_asm
1077
    isatty
1078
    kbhit
1079
    ldbrx
1080
    libdc1394_1
1081
    libdc1394_2
1082
    llrint
1083
    llrintf
1084
    local_aligned_16
1085
    local_aligned_8
1086
    localtime_r
1087
    log2
1088
    log2f
1089
    loongson
1090
    lrint
1091
    lrintf
1092
    lzo1x_999_compress
1093
    machine_ioctl_bt848_h
1094
    machine_ioctl_meteor_h
1095
    malloc_h
1096
    MapViewOfFile
1097
    memalign
1098
    mkstemp
1099
    mmap
1100
    pld
1101
    posix_memalign
1102
    round
1103
    roundf
1104
    sdl
1105
    sdl_video_size
1106
    setmode
1107
    sndio_h
1108
    socklen_t
1109
    soundcard_h
1110
    poll_h
1111
    setrlimit
1112
    strerror_r
1113
    strtok_r
1114
    struct_addrinfo
1115
    struct_ipv6_mreq
1116
    struct_sockaddr_in6
1117
    struct_sockaddr_sa_len
1118
    struct_sockaddr_storage
1119
    symver
1120
    symver_gnu_asm
1121
    symver_asm_label
1122
    sys_mman_h
1123
    sys_resource_h
1124
    sys_select_h
1125
    sys_soundcard_h
1126
    sys_videoio_h
1127
    ten_operands
1128
    termios_h
1129
    threads
1130
    trunc
1131
    truncf
1132
    vfp_args
1133
    VirtualAlloc
1134
    winsock2_h
1135
    xform_asm
1136
    xmm_clobbers
1137
    yasm
1138
"
1139

    
1140
# options emitted with CONFIG_ prefix but not available on command line
1141
CONFIG_EXTRA="
1142
    avutil
1143
    gplv3
1144
    lgplv3
1145
"
1146

    
1147
CMDLINE_SELECT="
1148
    $ARCH_EXT_LIST
1149
    $CONFIG_LIST
1150
    $THREADS_LIST
1151
    asm
1152
    cross_compile
1153
    debug
1154
    extra_warnings
1155
    logging
1156
    optimizations
1157
    stripping
1158
    symver
1159
    yasm
1160
"
1161

    
1162
PATHS_LIST='
1163
    bindir
1164
    datadir
1165
    incdir
1166
    libdir
1167
    mandir
1168
    prefix
1169
    shlibdir
1170
'
1171

    
1172
CMDLINE_SET="
1173
    $PATHS_LIST
1174
    ar
1175
    arch
1176
    as
1177
    build_suffix
1178
    cc
1179
    cpu
1180
    cross_prefix
1181
    dep_cc
1182
    extra_version
1183
    host_cc
1184
    host_cflags
1185
    host_ldflags
1186
    host_libs
1187
    host_os
1188
    ld
1189
    logfile
1190
    malloc_prefix
1191
    nm
1192
    pkg_config
1193
    samples
1194
    source_path
1195
    strip
1196
    sysinclude
1197
    sysroot
1198
    target_exec
1199
    target_os
1200
    target_path
1201
"
1202

    
1203
CMDLINE_APPEND="
1204
    extra_cflags
1205
"
1206

    
1207
# code dependency declarations
1208

    
1209
# architecture extensions
1210

    
1211
armv5te_deps="arm"
1212
armv6_deps="arm"
1213
armv6t2_deps="arm"
1214
armvfp_deps="arm"
1215
iwmmxt_deps="arm"
1216
neon_deps="arm"
1217

    
1218
mmi_deps="mips"
1219

    
1220
altivec_deps="ppc"
1221
ppc4xx_deps="ppc"
1222

    
1223
vis_deps="sparc"
1224

    
1225
x86_64_suggest="cmov fast_cmov"
1226
amd3dnow_deps="mmx"
1227
amd3dnowext_deps="amd3dnow"
1228
mmx_deps="x86"
1229
mmx2_deps="mmx"
1230
sse_deps="mmx"
1231
ssse3_deps="sse"
1232
avx_deps="ssse3"
1233

    
1234
aligned_stack_if_any="ppc x86"
1235
fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
1236
fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
1237
fast_unaligned_if_any="armv6 ppc x86"
1238

    
1239
need_memalign="altivec neon sse"
1240
inline_asm_deps="!tms470"
1241

    
1242
symver_if_any="symver_asm_label symver_gnu_asm"
1243

    
1244
# subsystems
1245
dct_select="rdft"
1246
mdct_select="fft"
1247
rdft_select="fft"
1248

    
1249
# decoders / encoders / hardware accelerators
1250
aac_decoder_select="mdct sinewin"
1251
aac_encoder_select="mdct sinewin"
1252
aac_latm_decoder_select="aac_decoder aac_latm_parser"
1253
ac3_decoder_select="mdct ac3dsp ac3_parser"
1254
ac3_encoder_select="mdct ac3dsp"
1255
ac3_fixed_encoder_select="ac3dsp"
1256
alac_encoder_select="lpc"
1257
amrnb_decoder_select="lsp"
1258
amrwb_decoder_select="lsp"
1259
atrac1_decoder_select="mdct sinewin"
1260
atrac3_decoder_select="mdct"
1261
binkaudio_dct_decoder_select="mdct rdft dct"
1262
binkaudio_rdft_decoder_select="mdct rdft"
1263
cavs_decoder_select="golomb"
1264
cook_decoder_select="mdct sinewin"
1265
cscd_decoder_suggest="zlib"
1266
dca_decoder_select="mdct"
1267
dnxhd_encoder_select="aandct"
1268
dxa_decoder_select="zlib"
1269
eac3_decoder_select="ac3_decoder"
1270
eamad_decoder_select="aandct"
1271
eatgq_decoder_select="aandct"
1272
eatqi_decoder_select="aandct"
1273
ffv1_decoder_select="golomb"
1274
flac_decoder_select="golomb"
1275
flac_encoder_select="golomb lpc"
1276
flashsv_decoder_select="zlib"
1277
flashsv_encoder_select="zlib"
1278
flashsv2_encoder_select="zlib"
1279
flv_decoder_select="h263_decoder"
1280
flv_encoder_select="h263_encoder"
1281
fraps_decoder_select="huffman"
1282
h261_encoder_select="aandct"
1283
h263_decoder_select="h263_parser"
1284
h263_encoder_select="aandct"
1285
h263_vaapi_hwaccel_select="vaapi h263_decoder"
1286
h263i_decoder_select="h263_decoder"
1287
h263p_encoder_select="h263_encoder"
1288
h264_decoder_select="golomb h264dsp h264pred"
1289
h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
1290
h264_dxva2_hwaccel_deps="dxva2api_h"
1291
h264_dxva2_hwaccel_select="dxva2 h264_decoder"
1292
h264_vaapi_hwaccel_select="vaapi"
1293
h264_vdpau_decoder_select="vdpau h264_decoder"
1294
imc_decoder_select="fft mdct"
1295
jpegls_decoder_select="golomb"
1296
jpegls_encoder_select="golomb"
1297
ljpeg_encoder_select="aandct"
1298
loco_decoder_select="golomb"
1299
mjpeg_encoder_select="aandct"
1300
mlp_decoder_select="mlp_parser"
1301
mp1float_decoder_select="dct"
1302
mp2float_decoder_select="dct"
1303
mp3adufloat_decoder_select="dct"
1304
mp3float_decoder_select="dct"
1305
mp3on4float_decoder_select="dct"
1306
mpeg1video_encoder_select="aandct"
1307
mpeg2video_encoder_select="aandct"
1308
mpeg4_decoder_select="h263_decoder mpeg4video_parser"
1309
mpeg4_encoder_select="h263_encoder"
1310
mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
1311
mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
1312
mpeg1_vdpau_hwaccel_select="vdpau mpeg1video_decoder"
1313
mpeg2_crystalhd_decoder_select="crystalhd"
1314
mpeg2_dxva2_hwaccel_deps="dxva2api_h"
1315
mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
1316
mpeg2_vdpau_hwaccel_select="vdpau mpeg2video_decoder"
1317
mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
1318
mpeg4_crystalhd_decoder_select="crystalhd"
1319
mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
1320
mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
1321
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
1322
mpeg_xvmc_decoder_select="mpegvideo_decoder"
1323
msmpeg4_crystalhd_decoder_select="crystalhd"
1324
msmpeg4v1_decoder_select="h263_decoder"
1325
msmpeg4v1_encoder_select="h263_encoder"
1326
msmpeg4v2_decoder_select="h263_decoder"
1327
msmpeg4v2_encoder_select="h263_encoder"
1328
msmpeg4v3_decoder_select="h263_decoder"
1329
msmpeg4v3_encoder_select="h263_encoder"
1330
nellymoser_decoder_select="mdct sinewin"
1331
nellymoser_encoder_select="mdct sinewin"
1332
png_decoder_select="zlib"
1333
png_encoder_select="zlib"
1334
qcelp_decoder_select="lsp"
1335
qdm2_decoder_select="mdct rdft"
1336
ra_144_encoder_select="lpc"
1337
rv10_decoder_select="h263_decoder"
1338
rv10_encoder_select="h263_encoder"
1339
rv20_decoder_select="h263_decoder"
1340
rv20_encoder_select="h263_encoder"
1341
rv30_decoder_select="golomb h264pred"
1342
rv40_decoder_select="golomb h264pred"
1343
shorten_decoder_select="golomb"
1344
sipr_decoder_select="lsp"
1345
snow_decoder_select="dwt"
1346
snow_encoder_select="aandct dwt"
1347
sonic_decoder_select="golomb"
1348
sonic_encoder_select="golomb"
1349
sonic_ls_encoder_select="golomb"
1350
svq1_encoder_select="aandct"
1351
svq3_decoder_select="golomb h264dsp h264pred"
1352
svq3_decoder_suggest="zlib"
1353
theora_decoder_select="vp3_decoder"
1354
tiff_decoder_suggest="zlib"
1355
tiff_encoder_suggest="zlib"
1356
truehd_decoder_select="mlp_decoder"
1357
tscc_decoder_select="zlib"
1358
twinvq_decoder_select="mdct lsp sinewin"
1359
vc1_decoder_select="h263_decoder"
1360
vc1_crystalhd_decoder_select="crystalhd"
1361
vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
1362
vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
1363
vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
1364
vc1_vdpau_decoder_select="vdpau vc1_decoder"
1365
vorbis_decoder_select="mdct"
1366
vorbis_encoder_select="mdct"
1367
vp6_decoder_select="huffman"
1368
vp6a_decoder_select="vp6_decoder"
1369
vp6f_decoder_select="vp6_decoder"
1370
vp8_decoder_select="h264pred"
1371
wmapro_decoder_select="mdct sinewin"
1372
wmav1_decoder_select="mdct sinewin"
1373
wmav1_encoder_select="mdct sinewin"
1374
wmav2_decoder_select="mdct sinewin"
1375
wmav2_encoder_select="mdct sinewin"
1376
wmavoice_decoder_select="lsp rdft dct mdct sinewin"
1377
wmv1_decoder_select="h263_decoder"
1378
wmv1_encoder_select="h263_encoder"
1379
wmv2_decoder_select="h263_decoder"
1380
wmv2_encoder_select="h263_encoder"
1381
wmv3_decoder_select="vc1_decoder"
1382
wmv3_crystalhd_decoder_select="crystalhd"
1383
wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
1384
wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
1385
wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
1386
zlib_decoder_select="zlib"
1387
zlib_encoder_select="zlib"
1388
zmbv_decoder_select="zlib"
1389
zmbv_encoder_select="zlib"
1390

    
1391
crystalhd_deps="libcrystalhd_libcrystalhd_if_h"
1392
vaapi_deps="va_va_h"
1393
vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
1394

    
1395
# parsers
1396
h264_parser_select="golomb h264dsp h264pred"
1397

    
1398
# external libraries
1399
libcelt_decoder_deps="libcelt"
1400
libdirac_decoder_deps="libdirac !libschroedinger"
1401
libdirac_encoder_deps="libdirac"
1402
libfaac_encoder_deps="libfaac"
1403
libgsm_decoder_deps="libgsm"
1404
libgsm_encoder_deps="libgsm"
1405
libgsm_ms_decoder_deps="libgsm"
1406
libgsm_ms_encoder_deps="libgsm"
1407
libmp3lame_encoder_deps="libmp3lame"
1408
libopencore_amrnb_decoder_deps="libopencore_amrnb"
1409
libopencore_amrnb_encoder_deps="libopencore_amrnb"
1410
libopencore_amrwb_decoder_deps="libopencore_amrwb"
1411
libopenjpeg_decoder_deps="libopenjpeg"
1412
libschroedinger_decoder_deps="libschroedinger"
1413
libschroedinger_encoder_deps="libschroedinger"
1414
libspeex_decoder_deps="libspeex"
1415
libtheora_encoder_deps="libtheora"
1416
libvo_aacenc_encoder_deps="libvo_aacenc"
1417
libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
1418
libvorbis_encoder_deps="libvorbis"
1419
libvpx_decoder_deps="libvpx"
1420
libvpx_encoder_deps="libvpx"
1421
libx264_encoder_deps="libx264"
1422
libxavs_encoder_deps="libxavs"
1423
libxvid_encoder_deps="libxvid"
1424

    
1425
# demuxers / muxers
1426
ac3_demuxer_select="ac3_parser"
1427
asf_stream_muxer_select="asf_muxer"
1428
avisynth_demuxer_deps="avisynth"
1429
dirac_demuxer_select="dirac_parser"
1430
eac3_demuxer_select="ac3_parser"
1431
flac_demuxer_select="flac_parser"
1432
ipod_muxer_select="mov_muxer"
1433
libnut_demuxer_deps="libnut"
1434
libnut_muxer_deps="libnut"
1435
matroska_audio_muxer_select="matroska_muxer"
1436
matroska_demuxer_suggest="zlib bzlib"
1437
mov_demuxer_suggest="zlib"
1438
mp3_demuxer_select="mpegaudio_parser"
1439
mp4_muxer_select="mov_muxer"
1440
mpegtsraw_demuxer_select="mpegts_demuxer"
1441
mxf_d10_muxer_select="mxf_muxer"
1442
ogg_demuxer_select="golomb"
1443
psp_muxer_select="mov_muxer"
1444
rtp_demuxer_select="sdp_demuxer"
1445
rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
1446
rtsp_demuxer_select="http_protocol rtpdec"
1447
rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol"
1448
sap_demuxer_select="sdp_demuxer"
1449
sap_muxer_select="rtp_muxer rtp_protocol"
1450
sdp_demuxer_select="rtpdec"
1451
spdif_muxer_select="aac_parser"
1452
tg2_muxer_select="mov_muxer"
1453
tgp_muxer_select="mov_muxer"
1454
w64_demuxer_deps="wav_demuxer"
1455

    
1456
# indevs / outdevs
1457
alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
1458
alsa_outdev_deps="alsa_asoundlib_h"
1459
bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
1460
dv1394_indev_deps="dv1394 dv_demuxer"
1461
fbdev_indev_deps="linux_fb_h"
1462
jack_indev_deps="jack_jack_h sem_timedwait"
1463
libdc1394_indev_deps="libdc1394"
1464
oss_indev_deps_any="soundcard_h sys_soundcard_h"
1465
oss_outdev_deps_any="soundcard_h sys_soundcard_h"
1466
sndio_indev_deps="sndio_h"
1467
sndio_outdev_deps="sndio_h"
1468
v4l_indev_deps="linux_videodev_h"
1469
v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
1470
vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
1471
vfwcap_indev_extralibs="-lavicap32"
1472
x11_grab_device_indev_deps="x11grab XShmCreateImage"
1473
x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
1474

    
1475
# protocols
1476
gopher_protocol_deps="network"
1477
http_protocol_deps="network"
1478
http_protocol_select="tcp_protocol"
1479
mmsh_protocol_select="http_protocol"
1480
mmst_protocol_deps="network"
1481
rtmp_protocol_select="tcp_protocol"
1482
rtp_protocol_select="udp_protocol"
1483
tcp_protocol_deps="network"
1484
udp_protocol_deps="network"
1485

    
1486
# filters
1487
blackframe_filter_deps="gpl"
1488
cropdetect_filter_deps="gpl"
1489
drawtext_filter_deps="libfreetype"
1490
frei0r_filter_deps="frei0r dlopen strtok_r"
1491
frei0r_src_filter_deps="frei0r dlopen strtok_r"
1492
hqdn3d_filter_deps="gpl"
1493
mp_filter_deps="gpl"
1494
ocv_filter_deps="libopencv"
1495
scale_filter_deps="swscale"
1496
yadif_filter_deps="gpl"
1497

    
1498
# libraries
1499
avdevice_deps="avcodec avformat"
1500
avformat_deps="avcodec"
1501

    
1502
# programs
1503
ffmpeg_deps="avcodec avformat swscale"
1504
ffmpeg_select="buffer_filter"
1505
ffplay_deps="avcodec avformat swscale sdl"
1506
ffplay_select="rdft"
1507
ffprobe_deps="avcodec avformat"
1508
ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
1509
ffserver_extralibs='$ldl'
1510

    
1511
doc_deps="texi2html"
1512

    
1513
# tests
1514

    
1515
test_deps(){
1516
    suf1=$1
1517
    suf2=$2
1518
    shift 2
1519
    for v; do
1520
        dep=${v%=*}
1521
        tests=${v#*=}
1522
        for name in ${tests}; do
1523
            eval ${name}_test_deps="'${dep}$suf1 ${dep}$suf2'"
1524
        done
1525
    done
1526
}
1527

    
1528
set_ne_test_deps(){
1529
    eval ${1}_be_test_deps="bigendian"
1530
    eval ${1}_le_test_deps="!bigendian"
1531
}
1532

    
1533
test_deps _encoder _decoder                                             \
1534
    adpcm_g726=g726                                                     \
1535
    adpcm_ima_qt                                                        \
1536
    adpcm_ima_wav                                                       \
1537
    adpcm_ms                                                            \
1538
    adpcm_swf                                                           \
1539
    adpcm_yamaha=adpcm_yam                                              \
1540
    alac                                                                \
1541
    asv1                                                                \
1542
    asv2                                                                \
1543
    bmp                                                                 \
1544
    dnxhd="dnxhd_1080i dnxhd_720p dnxhd_720p_rd"                        \
1545
    dvvideo="dv dv50"                                                   \
1546
    ffv1                                                                \
1547
    flac                                                                \
1548
    flashsv                                                             \
1549
    flv                                                                 \
1550
    gif                                                                 \
1551
    h261                                                                \
1552
    h263="h263 h263p"                                                   \
1553
    huffyuv                                                             \
1554
    jpegls                                                              \
1555
    mjpeg="jpg mjpeg ljpeg"                                             \
1556
    mp2                                                                 \
1557
    mpeg1video="mpeg mpeg1b"                                            \
1558
    mpeg2video="mpeg2 mpeg2thread"                                      \
1559
    mpeg4="mpeg4 mpeg4adv mpeg4nr mpeg4thread error rc"                 \
1560
    msmpeg4v3=msmpeg4                                                   \
1561
    msmpeg4v2                                                           \
1562
    pbm=pbmpipe                                                         \
1563
    pcx                                                                 \
1564
    pgm="pgm pgmpipe"                                                   \
1565
    png                                                                 \
1566
    ppm="ppm ppmpipe"                                                   \
1567
    rawvideo="rgb yuv"                                                  \
1568
    roq                                                                 \
1569
    rv10                                                                \
1570
    rv20                                                                \
1571
    sgi                                                                 \
1572
    snow="snow snowll"                                                  \
1573
    svq1                                                                \
1574
    targa=tga                                                           \
1575
    tiff                                                                \
1576
    wmav1                                                               \
1577
    wmav2                                                               \
1578
    wmv1                                                                \
1579
    wmv2                                                                \
1580

    
1581
test_deps _muxer _demuxer                                               \
1582
    aiff                                                                \
1583
    pcm_alaw=alaw                                                       \
1584
    asf                                                                 \
1585
    au                                                                  \
1586
    avi                                                                 \
1587
    dv=dv_fmt                                                           \
1588
    ffm                                                                 \
1589
    flv=flv_fmt                                                         \
1590
    gxf                                                                 \
1591
    matroska=mkv                                                        \
1592
    mmf                                                                 \
1593
    mov                                                                 \
1594
    pcm_mulaw=mulaw                                                     \
1595
    mxf                                                                 \
1596
    nut                                                                 \
1597
    ogg                                                                 \
1598
    rawvideo=pixfmt                                                     \
1599
    rm                                                                  \
1600
    swf                                                                 \
1601
    mpegts=ts                                                           \
1602
    voc                                                                 \
1603
    wav                                                                 \
1604
    yuv4mpegpipe=yuv4mpeg                                               \
1605

    
1606
ac3_fixed_test_deps="ac3_fixed_encoder ac3_decoder rm_muxer rm_demuxer"
1607
mpg_test_deps="mpeg1system_muxer mpegps_demuxer"
1608

    
1609
set_ne_test_deps pixdesc
1610
set_ne_test_deps pixfmts_copy
1611
set_ne_test_deps pixfmts_crop
1612
set_ne_test_deps pixfmts_hflip
1613
set_ne_test_deps pixfmts_null
1614
set_ne_test_deps pixfmts_pad
1615
set_ne_test_deps pixfmts_scale
1616
set_ne_test_deps pixfmts_vflip
1617

    
1618
# default parameters
1619

    
1620
logfile="config.log"
1621

    
1622
# installation paths
1623
prefix_default="/usr/local"
1624
bindir_default='${prefix}/bin'
1625
datadir_default='${prefix}/share/ffmpeg'
1626
incdir_default='${prefix}/include'
1627
libdir_default='${prefix}/lib'
1628
mandir_default='${prefix}/share/man'
1629
shlibdir_default="$libdir_default"
1630

    
1631
# toolchain
1632
ar_default="ar"
1633
cc_default="gcc"
1634
cc_version=\"unknown\"
1635
host_cc_default="gcc"
1636
ln_s="ln -sf"
1637
nm_default="nm"
1638
objformat="elf"
1639
pkg_config_default=pkg-config
1640
ranlib="ranlib"
1641
strip_default="strip"
1642
yasmexe="yasm"
1643
nogas=":"
1644

    
1645
nm_opts='-g'
1646

    
1647
# machine
1648
arch_default=$(uname -m)
1649
cpu="generic"
1650

    
1651
# OS
1652
target_os_default=$(tolower $(uname -s))
1653
host_os=$target_os_default
1654

    
1655
# configurable options
1656
enable avcodec
1657
enable avdevice
1658
enable avfilter
1659
enable avformat
1660
enable avutil
1661
enable asm
1662
enable debug
1663
enable doc
1664
enable fastdiv
1665
enable ffmpeg
1666
enable ffplay
1667
enable ffprobe
1668
enable ffserver
1669
enable mpegaudio_hp
1670
enable network
1671
enable optimizations
1672
enable protocols
1673
enable static
1674
enable stripping
1675
enable swscale
1676
enable swscale_alpha
1677

    
1678
# build settings
1679
SHFLAGS='-shared -Wl,-soname,$$(@F)'
1680
FFSERVERLDFLAGS=-Wl,-E
1681
LIBPREF="lib"
1682
LIBSUF=".a"
1683
FULLNAME='$(NAME)$(BUILDSUF)'
1684
LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
1685
SLIBPREF="lib"
1686
SLIBSUF=".so"
1687
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
1688
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
1689
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
1690
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
1691

    
1692
CC_O='-o $@'
1693

    
1694
host_cflags='-D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -O3 -g -Wall'
1695
host_libs='-lm'
1696

    
1697
target_path='$(CURDIR)'
1698

    
1699
# since the object filename is not given with the -MM flag, the compiler
1700
# is only able to print the basename, and we must add the path ourselves
1701
DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
1702
DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
1703

    
1704
# find source path
1705
source_path="$(dirname "$0")"
1706
enable source_path_used
1707
if test -f configure; then
1708
    source_path="$(pwd)"
1709
    disable source_path_used
1710
else
1711
    source_path="$(cd "$source_path"; pwd)"
1712
    echo "$source_path" | grep -q '[[:blank:]]' &&
1713
        die "Out of tree builds are impossible with whitespace in source path."
1714
    test -e "$source_path/config.h" &&
1715
        die "Out of tree builds are impossible with config.h in source dir."
1716
fi
1717

    
1718
for v in "$@"; do
1719
    r=${v#*=}
1720
    l=${v%"$r"}
1721
    r=$(sh_quote "$r")
1722
    FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
1723
done
1724

    
1725
find_things(){
1726
    thing=$1
1727
    pattern=$2
1728
    file=$source_path/$3
1729
    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
1730
}
1731

    
1732
ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
1733
DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
1734
HWACCEL_LIST=$(find_things  hwaccel  HWACCEL  libavcodec/allcodecs.c)
1735
PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
1736
BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
1737
MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
1738
DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
1739
OUTDEV_LIST=$(find_things   outdev   OUTDEV   libavdevice/alldevices.c)
1740
INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
1741
PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
1742
FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
1743

    
1744
find_tests(){
1745
    map "echo ${2}\${v}_test" $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]')
1746
}
1747

    
1748
ACODEC_TESTS=$(find_tests acodec)
1749
VCODEC_TESTS=$(find_tests vsynth1)
1750
LAVF_TESTS=$(find_tests lavf)
1751
LAVFI_TESTS=$(find_tests lavfi)
1752
SEEK_TESTS=$(find_tests seek seek_)
1753

    
1754
pcm_test_deps=$(map 'echo ${v%_*}_decoder $v' $(filter pcm_* $ENCODER_LIST))
1755

    
1756
for n in $COMPONENT_LIST; do
1757
    v=$(toupper ${n%s})_LIST
1758
    eval enable \$$v
1759
    eval ${n}_if_any="\$$v"
1760
done
1761

    
1762
enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS $LAVFI_TESTS $SEEK_TESTS
1763

    
1764
die_unknown(){
1765
    echo "Unknown option \"$1\"."
1766
    echo "See $0 --help for available options."
1767
    exit 1
1768
}
1769

    
1770
show_list() {
1771
    suffix=_$1
1772
    shift
1773
    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t
1774
    exit 0
1775
}
1776

    
1777
for opt do
1778
    optval="${opt#*=}"
1779
    case "$opt" in
1780
    --extra-ldflags=*) add_ldflags $optval
1781
    ;;
1782
    --extra-libs=*) add_extralibs $optval
1783
    ;;
1784
    --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
1785
    ;;
1786
    --enable-debug=*) debuglevel="$optval"
1787
    ;;
1788
    --disable-everything)
1789
    map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
1790
    ;;
1791
    --enable-*=*|--disable-*=*)
1792
    eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
1793
    is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
1794
    eval list=\$$(toupper $thing)_LIST
1795
    name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
1796
    $action $(filter "$name" $list)
1797
    ;;
1798
    --enable-?*|--disable-?*)
1799
    eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
1800
    if is_in $option $COMPONENT_LIST; then
1801
        test $action = disable && action=unset
1802
        eval $action \$$(toupper ${option%s})_LIST
1803
    elif is_in $option $CMDLINE_SELECT; then
1804
        $action $option
1805
    else
1806
        die_unknown $opt
1807
    fi
1808
    ;;
1809
    --list-*)
1810
        NAME="${opt#--list-}"
1811
        is_in $NAME $COMPONENT_LIST || die_unknown $opt
1812
        NAME=${NAME%s}
1813
        eval show_list $NAME \$$(toupper $NAME)_LIST
1814
    ;;
1815
    --help|-h) show_help
1816
    ;;
1817
    *)
1818
    optname="${opt%%=*}"
1819
    optname="${optname#--}"
1820
    optname=$(echo "$optname" | sed 's/-/_/g')
1821
    if is_in $optname $CMDLINE_SET; then
1822
        eval $optname='$optval'
1823
    elif is_in $optname $CMDLINE_APPEND; then
1824
        append $optname "$optval"
1825
    else
1826
         die_unknown $opt
1827
    fi
1828
    ;;
1829
    esac
1830
done
1831

    
1832
disabled logging && logfile=/dev/null
1833

    
1834
echo "# $0 $FFMPEG_CONFIGURATION" > $logfile
1835
set >> $logfile
1836

    
1837
test -n "$cross_prefix" && enable cross_compile
1838

    
1839
if enabled cross_compile; then
1840
    test -n "$arch" && test -n "$target_os" ||
1841
        die "Must specify target arch and OS when cross-compiling"
1842
fi
1843

    
1844
set_default arch target_os
1845

    
1846
ar_default="${cross_prefix}${ar_default}"
1847
cc_default="${cross_prefix}${cc_default}"
1848
nm_default="${cross_prefix}${nm_default}"
1849
pkg_config_default="${cross_prefix}${pkg_config_default}"
1850
ranlib="${cross_prefix}${ranlib}"
1851
strip_default="${cross_prefix}${strip_default}"
1852

    
1853
sysinclude_default="${sysroot}/usr/include"
1854

    
1855
set_default cc nm pkg_config strip sysinclude
1856
enabled cross_compile || host_cc_default=$cc
1857
set_default host_cc
1858

    
1859
exesuf() {
1860
    case $1 in
1861
        mingw32*|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
1862
    esac
1863
}
1864

    
1865
EXESUF=$(exesuf $target_os)
1866
HOSTEXESUF=$(exesuf $host_os)
1867

    
1868
# set temporary file name
1869
: ${TMPDIR:=$TEMPDIR}
1870
: ${TMPDIR:=$TMP}
1871
: ${TMPDIR:=/tmp}
1872

    
1873
if ! check_cmd mktemp -u XXXXXX; then
1874
    # simple replacement for missing mktemp
1875
    # NOT SAFE FOR GENERAL USE
1876
    mktemp(){
1877
        echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
1878
    }
1879
fi
1880

    
1881
tmpfile(){
1882
    tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
1883
        (set -C; exec > $tmp) 2>/dev/null ||
1884
        die "Unable to create temporary file in $TMPDIR."
1885
    append TMPFILES $tmp
1886
    eval $1=$tmp
1887
}
1888

    
1889
trap 'rm -f -- $TMPFILES' EXIT
1890

    
1891
tmpfile TMPC  .c
1892
tmpfile TMPE  $EXESUF
1893
tmpfile TMPH  .h
1894
tmpfile TMPO  .o
1895
tmpfile TMPS  .S
1896
tmpfile TMPV  .ver
1897
tmpfile TMPSH .sh
1898
tmpfile TMPASM .asm
1899

    
1900
unset -f mktemp
1901

    
1902
chmod +x $TMPE
1903

    
1904
# make sure we can execute files in $TMPDIR
1905
cat > $TMPSH 2>> $logfile <<EOF
1906
#! /bin/sh
1907
EOF
1908
chmod +x $TMPSH >> $logfile 2>&1
1909
if ! $TMPSH >> $logfile 2>&1; then
1910
    cat <<EOF
1911
Unable to create and execute files in $TMPDIR.  Set the TMPDIR environment
1912
variable to another directory and make sure that it is not mounted noexec.
1913
EOF
1914
    die "Sanity test failed."
1915
fi
1916

    
1917
filter_cflags=echo
1918
filter_cppflags=echo
1919
filter_asflags=echo
1920

    
1921
if   $cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
1922
    cc_type=llvm_gcc
1923
    cc_version=__VERSION__
1924
    gcc_extra_ver=$(expr "$($cc --version | head -n1)" : '.*\((.*)\)')
1925
    cc_ident="llvm-gcc $($cc -dumpversion) $gcc_extra_ver"
1926
    CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1927
    AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1928
    speed_cflags='-O3'
1929
    size_cflags='-Os'
1930
elif $cc -v 2>&1 | grep -qi ^gcc; then
1931
    cc_type=gcc
1932
    cc_version=__VERSION__
1933
    gcc_version=$($cc --version | head -n1)
1934
    gcc_basever=$($cc -dumpversion)
1935
    gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
1936
    gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
1937
    cc_ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
1938
    if ! $cc -dumpversion | grep -q '^2\.'; then
1939
        CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1940
        AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
1941
    fi
1942
    speed_cflags='-O3'
1943
    size_cflags='-Os'
1944
elif $cc --version 2>/dev/null | grep -q Intel; then
1945
    cc_type=icc
1946
    cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
1947
    cc_ident=$($cc --version | head -n1)
1948
    icc_version=$($cc -dumpversion)
1949
    CC_DEPFLAGS='-MMD'
1950
    AS_DEPFLAGS='-MMD'
1951
    speed_cflags='-O3'
1952
    size_cflags='-Os'
1953
    noopt_cflags='-O1'
1954
elif $cc -v 2>&1 | grep -q xlc; then
1955
    cc_type=xlc
1956
    cc_version="AV_STRINGIFY(__IBMC__)"
1957
    cc_ident=$($cc -qversion 2>/dev/null | head -n1)
1958
    speed_cflags='-O5'
1959
    size_cflags='-O5 -qcompact'
1960
elif $cc -V 2>/dev/null | grep -q Compaq; then
1961
    cc_type=ccc
1962
    cc_version="AV_STRINGIFY(__DECC_VER)"
1963
    cc_ident=$($cc -V | head -n1 | cut -d' ' -f1-3)
1964
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
1965
    debuglevel=3
1966
    add_ldflags -Wl,-z,now # calls to libots crash without this
1967
    speed_cflags='-fast'
1968
    size_cflags='-O1'
1969
elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
1970
    test -d "$sysroot" || die "No valid sysroot specified."
1971
    cc_type=armcc
1972
    cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
1973
    cc_ident=$($cc --vsn | head -n1)
1974
    armcc_conf="$PWD/armcc.conf"
1975
    $cc --arm_linux_configure                 \
1976
        --arm_linux_config_file="$armcc_conf" \
1977
        --configure_sysroot="$sysroot"        \
1978
        --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
1979
        die "Error creating armcc configuration file."
1980
    $cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
1981
    cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc"
1982
    as_default="${cross_prefix}gcc"
1983
    CC_DEPFLAGS='-MMD'
1984
    AS_DEPFLAGS='-MMD'
1985
    speed_cflags='-O3'
1986
    size_cflags='-Os'
1987
    filter_asflags="filter_out -W${armcc_opt}*"
1988
elif $cc -version 2>/dev/null | grep -q TMS470; then
1989
    cc_type=tms470
1990
    cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
1991
    cc_ident=$($cc -version | head -n1 | tr -s ' ')
1992
    cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
1993
    CC_O='-fr=$(@D)'
1994
    as_default="${cross_prefix}gcc"
1995
    ld_default="${cross_prefix}gcc"
1996
    TMPO=$(basename $TMPC .c).o
1997
    append TMPFILES $TMPO
1998
    add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=
1999
    CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)'
2000
    AS_DEPFLAGS='-MMD'
2001
    speed_cflags='-O3 -mf=5'
2002
    size_cflags='-O3 -mf=2'
2003
    filter_cflags=tms470_flags
2004
    tms470_flags(){
2005
        for flag; do
2006
            case $flag in
2007
                -march=*|-mcpu=*)
2008
                    case "${flag#*=}" in
2009
                        armv7-a|cortex-a*)      echo -mv=7a8 ;;
2010
                        armv7-r|cortex-r*)      echo -mv=7r4 ;;
2011
                        armv7-m|cortex-m*)      echo -mv=7m3 ;;
2012
                        armv6*|arm11*)          echo -mv=6   ;;
2013
                        armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
2014
                                                echo -mv=5e  ;;
2015
                        armv4*|arm7*|arm9[24]*) echo -mv=4   ;;
2016
                    esac
2017
                    ;;
2018
                -mfpu=neon)     echo --float_support=vfpv3 --neon ;;
2019
                -mfpu=vfp)      echo --float_support=vfpv2        ;;
2020
                -mfpu=vfpv3)    echo --float_support=vfpv3        ;;
2021
                -msoft-float)   echo --float_support=vfplib       ;;
2022
                -O[0-3]|-mf=*)  echo $flag                        ;;
2023
                -g)             echo -g -mn                       ;;
2024
                -pds=*)         echo $flag                        ;;
2025
            esac
2026
        done
2027
    }
2028
elif $cc -v 2>&1 | grep -q clang; then
2029
    cc_type=clang
2030
    $cc -dM -E $TMPC | grep -q __clang_version__ &&
2031
        cc_version=__clang_version__ || cc_version=__VERSION__
2032
    cc_ident=$($cc --version | head -n1)
2033
    CC_DEPFLAGS='-MMD'
2034
    AS_DEPFLAGS='-MMD'
2035
    speed_cflags='-O3'
2036
    size_cflags='-Os'
2037
elif $cc -V 2>&1 | grep -q Sun; then
2038
    cc_type=suncc
2039
    cc_version="AV_STRINGIFY(__SUNPRO_C)"
2040
    cc_ident=$($cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
2041
    DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
2042
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1'
2043
    speed_cflags='-O5'
2044
    size_cflags='-O5 -xspace'
2045
    filter_cflags=suncc_flags
2046
    suncc_flags(){
2047
        for flag; do
2048
            case $flag in
2049
                -march=*|-mcpu=*)
2050
                    case "${flag#*=}" in
2051
                        native)                   echo -xtarget=native       ;;
2052
                        v9|niagara)               echo -xarch=sparc          ;;
2053
                        ultrasparc)               echo -xarch=sparcvis       ;;
2054
                        ultrasparc3|niagara2)     echo -xarch=sparcvis2      ;;
2055
                        i586|pentium)             echo -xchip=pentium        ;;
2056
                        i686|pentiumpro|pentium2) echo -xtarget=pentium_pro  ;;
2057
                        pentium3*|c3-2)           echo -xtarget=pentium3     ;;
2058
                        pentium-m)          echo -xarch=sse2 -xchip=pentium3 ;;
2059
                        pentium4*)          echo -xtarget=pentium4           ;;
2060
                        prescott|nocona)    echo -xarch=sse3 -xchip=pentium4 ;;
2061
                        *-sse3)             echo -xarch=sse3                 ;;
2062
                        core2)              echo -xarch=ssse3 -xchip=core2   ;;
2063
                        amdfam10|barcelona)       echo -xarch=sse4_1         ;;
2064
                        athlon-4|athlon-[mx]p)    echo -xarch=ssea           ;;
2065
                        k8|opteron|athlon64|athlon-fx)
2066
                                                  echo -xarch=sse2a          ;;
2067
                        athlon*)                  echo -xarch=pentium_proa   ;;
2068
                    esac
2069
                    ;;
2070
                -std=c99)             echo -xc99              ;;
2071
                -fomit-frame-pointer) echo -xregs=frameptr    ;;
2072
                -fPIC)                echo -KPIC -xcode=pic32 ;;
2073
                -W*,*)                echo $flag              ;;
2074
                -f*-*|-W*)                                    ;;
2075
                *)                    echo $flag              ;;
2076
            esac
2077
        done
2078
    }
2079
elif $cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
2080
    cc_type=pathscale
2081
    cc_version=__PATHSCALE__
2082
    cc_ident=$($cc -v 2>&1 | head -n1 | tr -d :)
2083
    CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
2084
    AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
2085
    speed_cflags='-O2'
2086
    size_cflags='-Os'
2087
elif $cc -v 2>&1 | grep -q Open64; then
2088
    cc_type=open64
2089
    cc_version=__OPEN64__
2090
    cc_ident=$($cc -v 2>&1 | head -n1 | tr -d :)
2091
    CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
2092
    AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
2093
    speed_cflags='-O2'
2094
    size_cflags='-Os'
2095
fi
2096

    
2097
test -n "$cc_type" && enable $cc_type ||
2098
    warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
2099

    
2100
: ${as_default:=$cc}
2101
: ${dep_cc_default:=$cc}
2102
: ${ld_default:=$cc}
2103
set_default ar as dep_cc ld
2104

    
2105
test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
2106
test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
2107

    
2108
add_cflags $extra_cflags
2109
add_asflags $extra_cflags
2110

    
2111
if test -n "$sysroot"; then
2112
    case "$cc_type" in
2113
        gcc|llvm_gcc|clang)
2114
            add_cppflags --sysroot="$sysroot"
2115
            add_ldflags --sysroot="$sysroot"
2116
        ;;
2117
        tms470)
2118
            add_cppflags -I"$sysinclude"
2119
            add_ldflags  --sysroot="$sysroot"
2120
        ;;
2121
    esac
2122
fi
2123

    
2124
if test "$cpu" = host; then
2125
    enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
2126

    
2127
    case "$cc_type" in
2128
        gcc|llvm_gcc)
2129
            check_native(){
2130
                $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
2131
                sed -n "/$1=/{
2132
                            s/.*$1=\\([^ ]*\\).*/\\1/
2133
                            p
2134
                            q
2135
                        }" $TMPE
2136
            }
2137
            cpu=$(check_native -march || check_native -mcpu)
2138
        ;;
2139
    esac
2140

    
2141
    test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
2142
fi
2143

    
2144
# Deal with common $arch aliases
2145
case "$arch" in
2146
    arm*)
2147
        arch="arm"
2148
    ;;
2149
    mips|mipsel|IP*)
2150
        arch="mips"
2151
    ;;
2152
    mips64*)
2153
        arch="mips"
2154
        subarch="mips64"
2155
    ;;
2156
    parisc|hppa)
2157
        arch="parisc"
2158
    ;;
2159
    parisc64|hppa64)
2160
        arch="parisc"
2161
        subarch="parisc64"
2162
    ;;
2163
    "Power Macintosh"|ppc|powerpc)
2164
        arch="ppc"
2165
    ;;
2166
    ppc64|powerpc64)
2167
        arch="ppc"
2168
        subarch="ppc64"
2169
    ;;
2170
    s390|s390x)
2171
        arch="s390"
2172
    ;;
2173
    sh4|sh)
2174
        arch="sh4"
2175
    ;;
2176
    sun4u|sparc64)
2177
        arch="sparc"
2178
        subarch="sparc64"
2179
    ;;
2180
    i[3-6]86|i86pc|BePC|x86pc|x86_64|amd64)
2181
        arch="x86"
2182
    ;;
2183
esac
2184

    
2185
is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
2186
enable $arch
2187

    
2188
# Add processor-specific flags
2189
if test "$cpu" = generic; then
2190
    : do nothing
2191
elif enabled ppc; then
2192

    
2193
    case $(tolower $cpu) in
2194
        601|ppc601|powerpc601)
2195
            cpuflags="-mcpu=601"
2196
            disable altivec
2197
        ;;
2198
        603*|ppc603*|powerpc603*)
2199
            cpuflags="-mcpu=603"
2200
            disable altivec
2201
        ;;
2202
        604*|ppc604*|powerpc604*)
2203
            cpuflags="-mcpu=604"
2204
            disable altivec
2205
        ;;
2206
        g3|75*|ppc75*|powerpc75*)
2207
            cpuflags="-mcpu=750 -mpowerpc-gfxopt"
2208
            disable altivec
2209
        ;;
2210
        g4|745*|ppc745*|powerpc745*)
2211
            cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
2212
        ;;
2213
        74*|ppc74*|powerpc74*)
2214
            cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
2215
        ;;
2216
        g5|970|ppc970|powerpc970|power4*)
2217
            cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
2218
        ;;
2219
        cell)
2220
            cpuflags="-mcpu=cell"
2221
            enable ldbrx
2222
        ;;
2223
        e500v2)
2224
            cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
2225
            disable altivec
2226
        ;;
2227
        e500)
2228
            cpuflags="-mcpu=8540 -mhard-float"
2229
            disable altivec
2230
        ;;
2231
    esac
2232

    
2233
elif enabled x86; then
2234

    
2235
    case $cpu in
2236
        i[345]86|pentium)
2237
            cpuflags="-march=$cpu"
2238
            disable mmx
2239
        ;;
2240
        # targets that do NOT support conditional mov (cmov)
2241
        pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
2242
            cpuflags="-march=$cpu"
2243
            disable cmov
2244
        ;;
2245
        # targets that do support conditional mov (cmov)
2246
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10|barcelona|atom)
2247
            cpuflags="-march=$cpu"
2248
            enable cmov
2249
            enable fast_cmov
2250
        ;;
2251
        # targets that do support conditional mov but on which it's slow
2252
        pentium4|pentium4m|prescott|nocona)
2253
            cpuflags="-march=$cpu"
2254
            enable cmov
2255
            disable fast_cmov
2256
        ;;
2257
    esac
2258

    
2259
elif enabled sparc; then
2260

    
2261
    case $cpu in
2262
        niagara)
2263
            cpuflags="-mcpu=$cpu"
2264
            disable vis
2265
        ;;
2266
        sparc64)
2267
            cpuflags="-mcpu=v9"
2268
        ;;
2269
    esac
2270

    
2271
elif enabled arm; then
2272

    
2273
    case $cpu in
2274
        armv*)
2275
            cpuflags="-march=$cpu"
2276
            subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
2277
        ;;
2278
        *)
2279
            cpuflags="-mcpu=$cpu"
2280
            case $cpu in
2281
                cortex-a*)                               subarch=armv7a  ;;
2282
                cortex-r*)                               subarch=armv7r  ;;
2283
                cortex-m*)                               subarch=armv7m  ;;
2284
                arm11*)                                  subarch=armv6   ;;
2285
                arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
2286
                armv4*|arm7*|arm9[24]*)                  subarch=armv4   ;;
2287
            esac
2288
        ;;
2289
    esac
2290

    
2291
elif enabled alpha; then
2292

    
2293
    enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
2294

    
2295
elif enabled bfin; then
2296

    
2297
    cpuflags="-mcpu=$cpu"
2298

    
2299
elif enabled mips; then
2300

    
2301
    cpuflags="-march=$cpu"
2302

    
2303
elif enabled avr32; then
2304

    
2305
    case $cpu in
2306
        ap7[02]0[0-2])
2307
            subarch="avr32_ap"
2308
            cpuflags="-mpart=$cpu"
2309
        ;;
2310
        ap)
2311
            subarch="avr32_ap"
2312
            cpuflags="-march=$cpu"
2313
        ;;
2314
        uc3[ab]*)
2315
            subarch="avr32_uc"
2316
            cpuflags="-mcpu=$cpu"
2317
        ;;
2318
        uc)
2319
            subarch="avr32_uc"
2320
            cpuflags="-march=$cpu"
2321
        ;;
2322
    esac
2323

    
2324
fi
2325

    
2326
add_cflags $cpuflags
2327
add_asflags $cpuflags
2328

    
2329
# compiler sanity check
2330
check_exec <<EOF
2331
int main(void){ return 0; }
2332
EOF
2333
if test "$?" != 0; then
2334
    echo "$cc is unable to create an executable file."
2335
    if test -z "$cross_prefix" && ! enabled cross_compile ; then
2336
        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
2337
        echo "Only do this if you know what cross compiling means."
2338
    fi
2339
    die "C compiler test failed."
2340
fi
2341

    
2342
add_cppflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
2343
check_cflags -std=c99
2344
check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
2345
#include <stdlib.h>
2346
EOF
2347
check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
2348
#include <stdlib.h>
2349
EOF
2350

    
2351
check_host_cflags -std=c99
2352

    
2353
case "$arch" in
2354
    alpha|ia64|mips|parisc|sparc)
2355
        spic=$shared
2356
    ;;
2357
    x86)
2358
        subarch="x86_32"
2359
        check_cc <<EOF && subarch="x86_64"
2360
        int test[(int)sizeof(char*) - 7];
2361
EOF
2362
        if test "$subarch" = "x86_64"; then
2363
            spic=$shared
2364
        fi
2365
    ;;
2366
esac
2367

    
2368
enable $subarch
2369
enabled spic && enable pic
2370

    
2371
# OS specific
2372
case $target_os in
2373
    haiku)
2374
        prefix_default="/boot/common"
2375
        network_extralibs="-lnetwork"
2376
        host_libs=
2377
        ;;
2378
    sunos)
2379
        FFSERVERLDFLAGS=""
2380
        SHFLAGS='-shared -Wl,-h,$$(@F)'
2381
        enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
2382
        network_extralibs="-lsocket -lnsl"
2383
        add_cppflags -D__EXTENSIONS__
2384
        nm_opts='-P -g'
2385
        ;;
2386
    netbsd)
2387
        disable symver
2388
        oss_indev_extralibs="-lossaudio"
2389
        oss_outdev_extralibs="-lossaudio"
2390
        add_cppflags -D_XOPEN_SOURCE=600
2391
        ;;
2392
    openbsd)
2393
        enable malloc_aligned
2394
        # On OpenBSD 4.5. the compiler does not use PIC unless
2395
        # explicitly using -fPIC. FFmpeg builds fine without PIC,
2396
        # however the generated executable will not do anything
2397
        # (simply quits with exit-code 1, no crash, no output).
2398
        # Thus explicitly enable PIC here.
2399
        enable pic
2400
        disable symver
2401
        SHFLAGS='-shared'
2402
        oss_indev_extralibs="-lossaudio"
2403
        oss_outdev_extralibs="-lossaudio"
2404
        ;;
2405
    dragonfly)
2406
        enable malloc_aligned
2407
        disable symver
2408
        ;;
2409
    freebsd)
2410
        enable malloc_aligned
2411
        ;;
2412
    bsd/os)
2413
        add_extralibs -lpoll -lgnugetopt
2414
        strip="strip -d"
2415
        ;;
2416
    darwin)
2417
        enable malloc_aligned
2418
        gas="gas-preprocessor.pl $cc"
2419
        enabled ppc && add_asflags -force_cpusubtype_ALL
2420
        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
2421
        enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
2422
        strip="${strip} -x"
2423
        add_ldflags -Wl,-dynamic,-search_paths_first
2424
        SLIBSUF=".dylib"
2425
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
2426
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
2427
        FFSERVERLDFLAGS=-Wl,-bind_at_load
2428
        objformat="macho"
2429
        enabled x86_64 && objformat="macho64"
2430
        enabled_any pic shared ||
2431
            { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
2432
        ;;
2433
    mingw32*)
2434
        if test $target_os = "mingw32ce"; then
2435
            disable network
2436
        else
2437
            target_os=mingw32
2438
        fi
2439
        LIBTARGET=i386
2440
        if enabled x86_64; then
2441
            enable malloc_aligned
2442
            LIBTARGET=x64
2443
        elif enabled arm; then
2444
            LIBTARGET=arm-wince
2445
        fi
2446
        shlibdir_default="$bindir_default"
2447
        SLIBPREF=""
2448
        SLIBSUF=".dll"
2449
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
2450
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2451
        SLIB_EXTRA_CMD='-lib.exe /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
2452
        SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
2453
            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
2454
            install -d "$(LIBDIR)"; \
2455
            install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
2456
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
2457
        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'
2458
        objformat="win32"
2459
        enable dos_paths
2460
        check_cflags -fno-common
2461
        check_cpp_condition _mingw.h "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) \
2462
                                      || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
2463
                die "ERROR: MinGW runtime version must be >= 3.15."
2464
        add_cppflags -U__STRICT_ANSI__
2465
        ;;
2466
    cygwin*)
2467
        target_os=cygwin
2468
        shlibdir_default="$bindir_default"
2469
        SLIBPREF="cyg"
2470
        SLIBSUF=".dll"
2471
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
2472
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
2473
        SHFLAGS='-shared -Wl,--enable-auto-image-base'
2474
        objformat="win32"
2475
        enable dos_paths
2476
        check_cflags -fno-common
2477
        ;;
2478
    *-dos|freedos|opendos)
2479
        network_extralibs="-lsocket"
2480
        objformat="coff"
2481
        enable dos_paths
2482
        ;;
2483
    linux)
2484
        enable dv1394
2485
        ;;
2486
    irix*)
2487
        target_os=irix
2488
        ranlib="echo ignoring ranlib"
2489
        ;;
2490
    os/2*)
2491
        strip="lxlite -CS"
2492
        ln_s="cp -f"
2493
        add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
2494
        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
2495
        FFSERVERLDFLAGS=""
2496
        LIBSUF="_s.a"
2497
        SLIBPREF=""
2498
        SLIBSUF=".dll"
2499
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
2500
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
2501
        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
2502
          echo PROTMODE >> $(SUBDIR)$(NAME).def; \
2503
          echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
2504
          echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
2505
          echo EXPORTS >> $(SUBDIR)$(NAME).def; \
2506
          emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
2507
        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
2508
          emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
2509
        SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
2510
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
2511
        enable dos_paths
2512
        ;;
2513
    gnu/kfreebsd)
2514
        ;;
2515
    gnu)
2516
        ;;
2517
    qnx)
2518
        add_cppflags -D_QNX_SOURCE
2519
        network_extralibs="-lsocket"
2520
        ;;
2521
    symbian)
2522
        SLIBSUF=".dll"
2523
        enable dos_paths
2524
        add_cflags --include=$sysinclude/gcce/gcce.h
2525
        ;;
2526
    none)
2527
        ;;
2528
    *)
2529
        die "Unknown OS '$target_os'."
2530
        ;;
2531
esac
2532

    
2533
echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$FFMPEG_CONFIGURATION" >config.fate
2534

    
2535
check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
2536

    
2537
set_default $PATHS_LIST
2538

    
2539
# we need to build at least one lib type
2540
if ! enabled_any static shared; then
2541
    cat <<EOF
2542
At least one library type must be built.
2543
Specify --enable-static to build the static libraries or --enable-shared to
2544
build the shared libraries as well. To only build the shared libraries specify
2545
--disable-static in addition to --enable-shared.
2546
EOF
2547
    exit 1;
2548
fi
2549

    
2550
disabled static && LIBNAME=""
2551

    
2552
die_license_disabled() {
2553
    enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
2554
}
2555

    
2556
die_license_disabled gpl libx264
2557
die_license_disabled gpl libxavs
2558
die_license_disabled gpl libxvid
2559
die_license_disabled gpl postproc
2560
die_license_disabled gpl x11grab
2561

    
2562
die_license_disabled nonfree libfaac
2563

    
2564
die_license_disabled version3 libopencore_amrnb
2565
die_license_disabled version3 libopencore_amrwb
2566
die_license_disabled version3 libvo_aacenc
2567
die_license_disabled version3 libvo_amrwbenc
2568

    
2569
enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
2570

    
2571
disabled optimizations || check_cflags -fomit-frame-pointer
2572

    
2573
enable_pic() {
2574
    enable pic
2575
    add_cppflags -DPIC
2576
    add_cflags   -fPIC
2577
    add_asflags  -fPIC
2578
}
2579

    
2580
enabled pic && enable_pic
2581

    
2582
check_cc <<EOF || die "Symbol mangling check failed."
2583
int ff_extern;
2584
EOF
2585
sym=$($nm $nm_opts $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
2586
extern_prefix=${sym%%ff_extern*}
2587

    
2588
check_cc <<EOF && enable inline_asm
2589
void foo(void) { __asm__ volatile ("" ::); }
2590
EOF
2591

    
2592
_restrict=
2593
for restrict_keyword in restrict __restrict__ __restrict; do
2594
    check_cc <<EOF && _restrict=$restrict_keyword && break
2595
void foo(char * $restrict_keyword p);
2596
EOF
2597
done
2598

    
2599
check_cc <<EOF && enable attribute_packed
2600
struct { int x; } __attribute__((packed)) x;
2601
EOF
2602

    
2603
check_cc <<EOF && enable attribute_may_alias
2604
union { int x; } __attribute__((may_alias)) x;
2605
EOF
2606

    
2607
check_cc <<EOF || die "endian test failed"
2608
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
2609
EOF
2610
od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
2611

    
2612
if enabled alpha; then
2613

    
2614
    check_cflags -mieee
2615

    
2616
elif enabled arm; then
2617

    
2618
    check_cflags -marm
2619
    nogas=die
2620

    
2621
    if     check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
2622
        enable vfp_args
2623
    elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
2624
        case "${cross_prefix:-$cc}" in
2625
            *hardfloat*)         enable vfp_args;   fpabi=vfp ;;
2626
            *) check_ld <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
2627
__asm__ (".eabi_attribute 28, 1");
2628
int main(void) { return 0; }
2629
EOF
2630
        esac
2631
        warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
2632
    fi
2633

    
2634
    # We have to check if pld is a nop and disable it.
2635
    check_asm pld '"pld [r0]"'
2636

    
2637
    enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
2638
    enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
2639
    enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
2640
    enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
2641
    enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
2642
    enabled neon    && check_asm neon    '"vadd.i16 q0, q0, q0"'
2643

    
2644
    enabled_all armv6t2 shared !pic && enable_pic
2645

    
2646
elif enabled mips; then
2647

    
2648
    check_asm loongson '"dmult.g $1, $2, $3"'
2649
    enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
2650

    
2651
elif enabled ppc; then
2652

    
2653
    enable local_aligned_8 local_aligned_16
2654

    
2655
    check_asm dcbzl     '"dcbzl 0, %0" :: "r"(0)'
2656
    check_asm ibm_asm   '"add 0, 0, 0"'
2657
    check_asm ppc4xx    '"maclhw r10, r11, r12"'
2658
    check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
2659

    
2660
    # AltiVec flags: The FSF version of GCC differs from the Apple version
2661
    if enabled altivec; then
2662
        nogas=warn
2663
        check_cflags -maltivec -mabi=altivec &&
2664
        { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
2665
        check_cflags -faltivec
2666

    
2667
        # check if our compiler supports Motorola AltiVec C API
2668
        check_cc <<EOF || disable altivec
2669
$inc_altivec_h
2670
int main(void) {
2671
    vector signed int v1, v2, v3;
2672
    v1 = vec_add(v2,v3);
2673
    return 0;
2674
}
2675
EOF
2676

    
2677
        # check if our compiler supports braces for vector declarations
2678
        check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
2679
$inc_altivec_h
2680
int main (void) { (vector int) {1}; return 0; }
2681
EOF
2682
    fi
2683

    
2684
elif enabled sparc; then
2685

    
2686
    enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
2687
        add_cflags -mcpu=ultrasparc -mtune=ultrasparc
2688

    
2689
elif enabled x86; then
2690

    
2691
    enable local_aligned_8 local_aligned_16
2692

    
2693
    # check whether EBP is available on x86
2694
    # As 'i' is stored on the stack, this program will crash
2695
    # if the base pointer is used to access it because the
2696
    # base pointer is cleared in the inline assembly code.
2697
    check_exec_crash <<EOF && enable ebp_available
2698
    volatile int i=0;
2699
    __asm__ volatile (
2700
        "xorl %%ebp, %%ebp"
2701
    ::: "%ebp");
2702
    return i;
2703
EOF
2704

    
2705
    # check whether EBX is available on x86
2706
    check_asm ebx_available '""::"b"(0)' &&
2707
        check_asm ebx_available '"":::"%ebx"'
2708

    
2709
    # check whether xmm clobbers are supported
2710
    check_asm xmm_clobbers '"":::"%xmm0"'
2711

    
2712
    # check whether more than 10 operands are supported
2713
    check_cc <<EOF && enable ten_operands
2714
int main(void) {
2715
    int x=0;
2716
    __asm__ volatile(
2717
        ""
2718
        :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
2719
    );
2720
    return 0;
2721
}
2722
EOF
2723

    
2724
    # check whether binutils is new enough to compile SSSE3/MMX2
2725
    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
2726
    enabled mmx2  && check_asm mmx2  '"pmaxub %mm0, %mm1"'
2727

    
2728
    check_asm bswap '"bswap %%eax" ::: "%eax"'
2729

    
2730
    if ! disabled_any asm mmx yasm; then
2731
        if check_cmd $yasmexe --version; then
2732
            enabled x86_64 && yasm_extra="-m amd64"
2733
            yasm_debug="-g dwarf2"
2734
        elif check_cmd nasm -v; then
2735
            yasmexe=nasm
2736
            yasm_debug="-g -F dwarf"
2737
            enabled x86_64 && test "$objformat" = elf && objformat=elf64
2738
        fi
2739

    
2740
        YASMFLAGS="-f $objformat $yasm_extra"
2741
        enabled pic               && append YASMFLAGS "-DPIC"
2742
        test -n "$extern_prefix"  && append YASMFLAGS "-DPREFIX"
2743
        case "$objformat" in
2744
            elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
2745
        esac
2746

    
2747
        check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
2748
            die "yasm not found, use --disable-yasm for a crippled build"
2749
        check_yasm "vpaddw xmm0, xmm0, xmm0" || disable avx
2750
    fi
2751

    
2752
    case "$cpu" in
2753
        athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
2754
            disable fast_clz
2755
        ;;
2756
    esac
2757

    
2758
fi
2759

    
2760
if enabled asm; then
2761
    as=${gas:=$as}
2762
    check_asm gnu_as '".macro m n\n\\n:.int 0\n.endm\nm x"' ||
2763
        $nogas "GNU assembler not found, install gas-preprocessor"
2764
fi
2765

    
2766
check_ldflags -Wl,--as-needed
2767

    
2768
if check_func dlopen; then
2769
    ldl=
2770
elif check_func dlopen -ldl; then
2771
    ldl=-ldl
2772
fi
2773

    
2774
if enabled network; then
2775
    check_type "sys/types.h sys/socket.h" socklen_t
2776
    check_type netdb.h "struct addrinfo"
2777
    check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
2778
    check_type netinet/in.h "struct sockaddr_in6"
2779
    check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
2780
    check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
2781
    # Prefer arpa/inet.h over winsock2
2782
    if check_header arpa/inet.h ; then
2783
        check_func closesocket
2784
    elif check_header winsock2.h ; then
2785
        check_func_headers winsock2.h closesocket -lws2 && \
2786
            network_extralibs="-lws2" || \
2787
        { check_func_headers winsock2.h closesocket -lws2_32 && \
2788
            network_extralibs="-lws2_32"; }
2789
        check_type ws2tcpip.h socklen_t
2790
        check_type ws2tcpip.h "struct addrinfo"
2791
        check_type ws2tcpip.h "struct ipv6_mreq"
2792
        check_type ws2tcpip.h "struct sockaddr_in6"
2793
        check_type ws2tcpip.h "struct sockaddr_storage"
2794
        check_struct winsock2.h "struct sockaddr" sa_len
2795
    else
2796
        disable network
2797
    fi
2798
fi
2799

    
2800
# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
2801
check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
2802

    
2803
check_func  fcntl
2804
check_func  fork
2805
check_func  getaddrinfo $network_extralibs
2806
check_func  gethrtime
2807
check_func  getrusage
2808
check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
2809
check_func  inet_aton $network_extralibs
2810
check_func  isatty
2811
check_func  localtime_r
2812
check_func  ${malloc_prefix}memalign            && enable memalign
2813
check_func  mkstemp
2814
check_func  mmap
2815
check_func  ${malloc_prefix}posix_memalign      && enable posix_memalign
2816
check_func  setrlimit
2817
check_func  strerror_r
2818
check_func  strtok_r
2819
check_func_headers conio.h kbhit
2820
check_func_headers io.h setmode
2821
check_func_headers lzo/lzo1x.h lzo1x_999_compress
2822
check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
2823
check_func_headers windows.h GetProcessTimes
2824
check_func_headers windows.h MapViewOfFile
2825
check_func_headers windows.h VirtualAlloc
2826

    
2827
check_header dlfcn.h
2828
check_header dxva2api.h
2829
check_header libcrystalhd/libcrystalhd_if.h
2830
check_header malloc.h
2831
check_header poll.h
2832
check_header sys/mman.h
2833
check_header sys/resource.h
2834
check_header sys/select.h
2835
check_header termios.h
2836
check_header vdpau/vdpau.h
2837
check_header vdpau/vdpau_x11.h
2838
check_header X11/extensions/XvMClib.h
2839

    
2840
check_struct dxva2api.h DXVA_PictureParameters wDecodedPictureIndex
2841

    
2842
if ! enabled_any memalign memalign_hack posix_memalign malloc_aligned &&
2843
     enabled_any $need_memalign ; then
2844
    die "Error, no aligned memory allocator but SSE enabled, disable it or use --enable-memalign-hack."
2845
fi
2846

    
2847
disabled  zlib || check_lib   zlib.h      zlibVersion -lz   || disable  zlib
2848
disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
2849

    
2850
# check for some common methods of building with pthread support
2851
# do this before the optional library checks as some of them require pthreads
2852
if ! disabled pthreads && ! enabled w32threads; then
2853
    enable pthreads
2854
    if check_func pthread_create; then
2855
        :
2856
    elif check_func pthread_create -pthread; then
2857
        add_cflags -pthread
2858
        add_extralibs -pthread
2859
    elif check_func pthread_create -pthreads; then
2860
        add_cflags -pthreads
2861
        add_extralibs -pthreads
2862
    elif check_func pthread_create -lpthreadGC2; then
2863
        add_extralibs -lpthreadGC2
2864
    elif ! check_lib pthread.h pthread_create -lpthread; then
2865
        disable pthreads
2866
    fi
2867
fi
2868

    
2869
for thread in $THREADS_LIST; do
2870
    if enabled $thread; then
2871
        test -n "$thread_type" &&
2872
            die "ERROR: Only one thread type must be selected." ||
2873
            thread_type="$thread"
2874
    fi
2875
done
2876

    
2877
check_lib math.h sin -lm && LIBM="-lm"
2878
disabled crystalhd || check_lib libcrystalhd/libcrystalhd_if.h DtsCrystalHDVersion -lcrystalhd || disable crystalhd
2879
enabled vaapi && require vaapi va/va.h vaInitialize -lva
2880

    
2881
check_mathfunc exp2
2882
check_mathfunc exp2f
2883
check_mathfunc llrint
2884
check_mathfunc llrintf
2885
check_mathfunc log2
2886
check_mathfunc log2f
2887
check_mathfunc lrint
2888
check_mathfunc lrintf
2889
check_mathfunc round
2890
check_mathfunc roundf
2891
check_mathfunc trunc
2892
check_mathfunc truncf
2893

    
2894
# these are off by default, so fail if requested and not available
2895
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
2896
enabled libcelt    && require libcelt celt/celt.h celt_decode -lcelt0
2897
enabled frei0r     && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
2898
enabled libdirac   && require_pkg_config dirac                          \
2899
    "libdirac_decoder/dirac_parser.h libdirac_encoder/dirac_encoder.h"  \
2900
    "dirac_decoder_init dirac_encoder_init"
2901
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
2902
enabled libfreetype && add_cflags $(pkg-config --cflags freetype2) && require libfreetype ft2build.h FT_Init_FreeType -lfreetype
2903
enabled libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
2904
enabled libmp3lame && require  "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
2905
enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
2906
enabled libopencore_amrnb  && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
2907
enabled libopencore_amrwb  && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
2908
enabled libopencv  && require_pkg_config opencv opencv/cv.h cvCreateImageHeader
2909
enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
2910
enabled librtmp    && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
2911
enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
2912
enabled libspeex   && require  libspeex speex/speex.h speex_decoder_init -lspeex
2913
enabled libtheora  && require  libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
2914
enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
2915
enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
2916
enabled libvorbis  && require  libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
2917
enabled libvpx     && {
2918
    enabled libvpx_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
2919
                                die "ERROR: libvpx decoder version must be >=0.9.1"; }
2920
    enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" "vpx_codec_enc_init_ver VPX_CQ" -lvpx ||
2921
                                die "ERROR: libvpx encoder version must be >=0.9.6"; } }
2922
enabled libx264    && require  libx264 x264.h x264_encoder_encode -lx264 &&
2923
                      { check_cpp_condition x264.h "X264_BUILD >= 99" ||
2924
                        die "ERROR: libx264 version must be >= 0.99."; }
2925
enabled libxavs    && require  libxavs xavs.h xavs_encoder_encode -lxavs
2926
enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
2927
enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
2928

    
2929
# libdc1394 check
2930
if enabled libdc1394; then
2931
    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
2932
        enable libdc1394_2; } ||
2933
    { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
2934
        enable libdc1394_1; } ||
2935
    die "ERROR: No version of libdc1394 found "
2936
fi
2937

    
2938
if check_pkg_config sdl SDL_version.h SDL_Linked_Version; then
2939
    check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
2940
    enable sdl &&
2941
    check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
2942
fi
2943

    
2944
texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
2945

    
2946
check_header linux/fb.h
2947
check_header linux/videodev.h
2948
check_header linux/videodev2.h
2949
check_header sys/videoio.h
2950

    
2951
check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
2952
# check that WM_CAP_DRIVER_CONNECT is defined to the proper value
2953
# w32api 3.12 had it defined wrong
2954
check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
2955

    
2956
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
2957
{ check_header dev/bktr/ioctl_meteor.h &&
2958
  check_header dev/bktr/ioctl_bt848.h; } ||
2959
{ check_header machine/ioctl_meteor.h &&
2960
  check_header machine/ioctl_bt848.h; } ||
2961
{ check_header dev/video/meteor/ioctl_meteor.h &&
2962
  check_header dev/video/bktr/ioctl_bt848.h; } ||
2963
check_header dev/ic/bt8xx.h
2964

    
2965
check_header sndio.h
2966
if check_struct sys/soundcard.h audio_buf_info bytes; then
2967
    enable_safe sys/soundcard.h
2968
else
2969
    check_cc -D__BSD_VISIBLE -D__XSI_VISIBLE <<EOF && add_cppflags -D__BSD_VISIBLE -D__XSI_VISIBLE && enable_safe sys/soundcard.h
2970
    #include <sys/soundcard.h>
2971
    audio_buf_info abc;
2972
EOF
2973
fi
2974
check_header soundcard.h
2975

    
2976
enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
2977

    
2978
enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack && check_func sem_timedwait
2979

    
2980
enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
2981

    
2982
enabled x11grab                         &&
2983
check_header X11/Xlib.h                 &&
2984
check_header X11/extensions/XShm.h      &&
2985
check_header X11/extensions/Xfixes.h    &&
2986
check_func XOpenDisplay -lX11           &&
2987
check_func XShmCreateImage -lX11 -lXext &&
2988
check_func XFixesGetCursorImage -lX11 -lXext -lXfixes
2989

    
2990
if ! disabled vaapi; then
2991
    check_lib va/va.h vaInitialize -lva && {
2992
        check_cpp_condition va/va_version.h "VA_CHECK_VERSION(0,32,0)" ||
2993
        warn "Please upgrade to VA-API >= 0.32 if you would like full VA-API support.";
2994
    } || disable vaapi
2995
fi
2996

    
2997
if ! disabled vdpau && enabled vdpau_vdpau_h; then
2998
check_cpp_condition \
2999
    vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
3000
    { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." &&
3001
      disable vdpau; }
3002
fi
3003

    
3004
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
3005

    
3006
# add some useful compiler flags if supported
3007
check_cflags -Wdeclaration-after-statement
3008
check_cflags -Wall
3009
check_cflags -Wno-parentheses
3010
check_cflags -Wno-switch
3011
check_cflags -Wdisabled-optimization
3012
check_cflags -Wpointer-arith
3013
check_cflags -Wredundant-decls
3014
check_cflags -Wno-pointer-sign
3015
check_cflags -Wcast-qual
3016
check_cflags -Wwrite-strings
3017
check_cflags -Wtype-limits
3018
check_cflags -Wundef
3019
check_cflags -Wmissing-prototypes
3020
check_cflags -Wno-pointer-to-int-cast
3021
enabled extra_warnings && check_cflags -Winline
3022

    
3023
# add some linker flags
3024
check_ldflags -Wl,--warn-common
3025
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'
3026
test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
3027

    
3028
echo "X{};" > $TMPV
3029
if test_ldflags -Wl,--version-script,$TMPV; then
3030
    append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
3031
    check_cc <<EOF && enable symver_asm_label
3032
void ff_foo(void) __asm__ ("av_foo@VERSION");
3033
void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
3034
EOF
3035
    check_cc <<EOF && enable symver_gnu_asm
3036
__asm__(".symver ff_foo,av_foo@VERSION");
3037
void ff_foo(void) {}
3038
EOF
3039
fi
3040

    
3041
if enabled small; then
3042
    add_cflags $size_cflags
3043
    optimizations="small"
3044
elif enabled optimizations; then
3045
    add_cflags $speed_cflags
3046
else
3047
    add_cflags $noopt_cflags
3048
fi
3049
check_cflags -fno-math-errno
3050
check_cflags -fno-signed-zeros
3051

    
3052
if enabled icc; then
3053
    # Just warnings, no remarks
3054
    check_cflags -w1
3055
    # -wd: Disable following warnings
3056
    # 144, 167, 556: -Wno-pointer-sign
3057
    # 1292: attribute "foo" ignored
3058
    # 10006: ignoring unknown option -fno-signed-zeros
3059
    # 10148: ignoring unknown option -Wno-parentheses
3060
    # 10156: ignoring option '-W'; no argument required
3061
    check_cflags -wd144,167,556,1292,10006,10148,10156
3062
    # 11030: Warning unknown option --as-needed
3063
    # 10156: ignoring option '-export'; no argument required
3064
    check_ldflags -wd10156,11030
3065
    # Allow to compile with optimizations
3066
    check_ldflags -march=$cpu
3067
    # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
3068
    enable ebp_available
3069
    if enabled x86_32; then
3070
        test ${icc_version%%.*} -ge 11 && \
3071
            check_cflags -falign-stack=maintain-16-byte || \
3072
            disable aligned_stack
3073
    fi
3074
elif enabled ccc; then
3075
    # disable some annoying warnings
3076
    add_cflags -msg_disable cvtu32to64
3077
    add_cflags -msg_disable embedcomment
3078
    add_cflags -msg_disable needconstext
3079
    add_cflags -msg_disable nomainieee
3080
    add_cflags -msg_disable ptrmismatch1
3081
    add_cflags -msg_disable unreachcode
3082
elif enabled gcc; then
3083
    check_cflags -fno-tree-vectorize
3084
    check_cflags -Werror=implicit-function-declaration
3085
    check_cflags -Werror=missing-prototypes
3086
elif enabled llvm_gcc; then
3087
    check_cflags -mllvm -stack-alignment=16
3088
elif enabled clang; then
3089
    check_cflags -mllvm -stack-alignment=16
3090
    check_cflags -Qunused-arguments
3091
elif enabled armcc; then
3092
    # 2523: use of inline assembler is deprecated
3093
    add_cflags -W${armcc_opt},--diag_suppress=2523
3094
    add_cflags -W${armcc_opt},--diag_suppress=1207
3095
    add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
3096
    add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
3097
elif enabled tms470; then
3098
    add_cflags -pds=824 -pds=837
3099
elif enabled pathscale; then
3100
    add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
3101
fi
3102

    
3103
enabled_any $THREADS_LIST      && enable threads
3104

    
3105
check_deps $CONFIG_LIST       \
3106
           $CONFIG_EXTRA      \
3107
           $HAVE_LIST         \
3108
           $DECODER_LIST      \
3109
           $ENCODER_LIST      \
3110
           $HWACCEL_LIST      \
3111
           $PARSER_LIST       \
3112
           $BSF_LIST          \
3113
           $DEMUXER_LIST      \
3114
           $MUXER_LIST        \
3115
           $FILTER_LIST       \
3116
           $INDEV_LIST        \
3117
           $OUTDEV_LIST       \
3118
           $PROTOCOL_LIST     \
3119
           $ACODEC_TESTS      \
3120
           $VCODEC_TESTS      \
3121
           $LAVF_TESTS        \
3122
           $LAVFI_TESTS       \
3123
           $SEEK_TESTS        \
3124

    
3125
enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
3126

    
3127
echo "install prefix            $prefix"
3128
echo "source path               $source_path"
3129
echo "C compiler                $cc"
3130
echo "ARCH                      $arch ($cpu)"
3131
if test "$build_suffix" != ""; then
3132
    echo "build suffix              $build_suffix"
3133
fi
3134
if test "$extra_version" != ""; then
3135
    echo "version string suffix     $extra_version"
3136
fi
3137
echo "big-endian                ${bigendian-no}"
3138
echo "runtime cpu detection     ${runtime_cpudetect-no}"
3139
if enabled x86; then
3140
    echo "yasm                      ${yasm-no}"
3141
    echo "MMX enabled               ${mmx-no}"
3142
    echo "MMX2 enabled              ${mmx2-no}"
3143
    echo "3DNow! enabled            ${amd3dnow-no}"
3144
    echo "3DNow! extended enabled   ${amd3dnowext-no}"
3145
    echo "SSE enabled               ${sse-no}"
3146
    echo "SSSE3 enabled             ${ssse3-no}"
3147
    echo "CMOV enabled              ${cmov-no}"
3148
    echo "CMOV is fast              ${fast_cmov-no}"
3149
    echo "EBX available             ${ebx_available-no}"
3150
    echo "EBP available             ${ebp_available-no}"
3151
    echo "10 operands supported     ${ten_operands-no}"
3152
fi
3153
if enabled arm; then
3154
    echo "ARMv5TE enabled           ${armv5te-no}"
3155
    echo "ARMv6 enabled             ${armv6-no}"
3156
    echo "ARMv6T2 enabled           ${armv6t2-no}"
3157
    echo "ARM VFP enabled           ${armvfp-no}"
3158
    echo "IWMMXT enabled            ${iwmmxt-no}"
3159
    echo "NEON enabled              ${neon-no}"
3160
fi
3161
if enabled mips; then
3162
    echo "MMI enabled               ${mmi-no}"
3163
fi
3164
if enabled ppc; then
3165
    echo "AltiVec enabled           ${altivec-no}"
3166
    echo "PPC 4xx optimizations     ${ppc4xx-no}"
3167
    echo "dcbzl available           ${dcbzl-no}"
3168
fi
3169
if enabled sparc; then
3170
    echo "VIS enabled               ${vis-no}"
3171
fi
3172
echo "debug symbols             ${debug-no}"
3173
echo "strip symbols             ${stripping-no}"
3174
echo "optimizations             ${optimizations-no}"
3175
echo "static                    ${static-no}"
3176
echo "shared                    ${shared-no}"
3177
echo "postprocessing support    ${postproc-no}"
3178
echo "new filter support        ${avfilter-no}"
3179
echo "network support           ${network-no}"
3180
echo "threading support         ${thread_type-no}"
3181
echo "SDL support               ${sdl-no}"
3182
echo "Sun medialib support      ${mlib-no}"
3183
echo "AVISynth enabled          ${avisynth-no}"
3184
echo "libcelt enabled           ${libcelt-no}"
3185
echo "frei0r enabled            ${frei0r-no}"
3186
echo "libdc1394 support         ${libdc1394-no}"
3187
echo "libdirac enabled          ${libdirac-no}"
3188
echo "libfaac enabled           ${libfaac-no}"
3189
echo "libgsm enabled            ${libgsm-no}"
3190
echo "libmp3lame enabled        ${libmp3lame-no}"
3191
echo "libnut enabled            ${libnut-no}"
3192
echo "libopencore-amrnb support ${libopencore_amrnb-no}"
3193
echo "libopencore-amrwb support ${libopencore_amrwb-no}"
3194
echo "libopencv support         ${libopencv-no}"
3195
echo "libopenjpeg enabled       ${libopenjpeg-no}"
3196
echo "librtmp enabled           ${librtmp-no}"
3197
echo "libschroedinger enabled   ${libschroedinger-no}"
3198
echo "libspeex enabled          ${libspeex-no}"
3199
echo "libtheora enabled         ${libtheora-no}"
3200
echo "libva enabled             ${vaapi-no}"
3201
echo "libvo-aacenc support      ${libvo_aacenc-no}"
3202
echo "libvo-amrwbenc support    ${libvo_amrwbenc-no}"
3203
echo "libvorbis enabled         ${libvorbis-no}"
3204
echo "libvpx enabled            ${libvpx-no}"
3205
echo "libx264 enabled           ${libx264-no}"
3206
echo "libxavs enabled           ${libxavs-no}"
3207
echo "libxvid enabled           ${libxvid-no}"
3208
echo "zlib enabled              ${zlib-no}"
3209
echo "bzlib enabled             ${bzlib-no}"
3210
echo
3211

    
3212
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
3213
    echo "Enabled ${type}s:"
3214
    eval list=\$$(toupper $type)_LIST
3215
    print_enabled '_*' $list | sort | pr -r -3 -t
3216
    echo
3217
done
3218

    
3219
license="LGPL version 2.1 or later"
3220
if enabled nonfree; then
3221
    license="nonfree and unredistributable"
3222
elif enabled gplv3; then
3223
    license="GPL version 3 or later"
3224
elif enabled lgplv3; then
3225
    license="LGPL version 3 or later"
3226
elif enabled gpl; then
3227
    license="GPL version 2 or later"
3228
fi
3229

    
3230
echo "License: $license"
3231

    
3232
echo "Creating config.mak and config.h..."
3233

    
3234
# build tree in object directory if source path is different from current one
3235
if enabled source_path_used; then
3236
    DIRS="
3237
        doc
3238
        libavcodec
3239
        libavcodec/$arch
3240
        libavdevice
3241
        libavfilter
3242
        libavfilter/$arch
3243
        libavfilter/libmpcodecs
3244
        libavfilter/libmpcodecs/libvo
3245
        libavformat
3246
        libavutil
3247
        libavutil/$arch
3248
        libpostproc
3249
        libswscale
3250
        libswscale/$arch
3251
        tests
3252
        tools
3253
    "
3254
    FILES="
3255
        Makefile
3256
        common.mak
3257
        subdir.mak
3258
        doc/texi2pod.pl
3259
        libavcodec/Makefile
3260
        libavcodec/${arch}/Makefile
3261
        libavdevice/Makefile
3262
        libavfilter/Makefile
3263
        libavfilter/${arch}/Makefile
3264
        libavformat/Makefile
3265
        libavutil/Makefile
3266
        libpostproc/Makefile
3267
        libswscale/Makefile
3268
    "
3269
    map 'mkdir -p $v' $DIRS;
3270
    map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES
3271
fi
3272

    
3273
enabled stripping || strip="echo skipping strip"
3274

    
3275
config_files="$TMPH config.mak"
3276

    
3277
cat > config.mak <<EOF
3278
# Automatically generated by configure - do not modify!
3279
ifndef FFMPEG_CONFIG_MAK
3280
FFMPEG_CONFIG_MAK=1
3281
FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION
3282
prefix=$prefix
3283
LIBDIR=\$(DESTDIR)$libdir
3284
SHLIBDIR=\$(DESTDIR)$shlibdir
3285
INCDIR=\$(DESTDIR)$incdir
3286
BINDIR=\$(DESTDIR)$bindir
3287
DATADIR=\$(DESTDIR)$datadir
3288
MANDIR=\$(DESTDIR)$mandir
3289
SRC_PATH="$source_path"
3290
SRC_PATH_BARE=$source_path
3291
BUILD_ROOT="$PWD"
3292
CC_IDENT=$cc_ident
3293
ARCH=$arch
3294
CC=$cc
3295
AS=$as
3296
LD=$ld
3297
DEPCC=$dep_cc
3298
YASM=$yasmexe
3299
YASMDEP=$yasmexe
3300
AR=$ar
3301
RANLIB=$ranlib
3302
CP=cp -p
3303
LN_S=$ln_s
3304
STRIP=$strip
3305
CPPFLAGS=$CPPFLAGS
3306
CFLAGS=$CFLAGS
3307
ASFLAGS=$ASFLAGS
3308
CC_O=$CC_O
3309
LDFLAGS=$LDFLAGS
3310
FFSERVERLDFLAGS=$FFSERVERLDFLAGS
3311
SHFLAGS=$SHFLAGS
3312
YASMFLAGS=$YASMFLAGS
3313
BUILDSUF=$build_suffix
3314
FULLNAME=$FULLNAME
3315
LIBPREF=$LIBPREF
3316
LIBSUF=$LIBSUF
3317
LIBNAME=$LIBNAME
3318
SLIBPREF=$SLIBPREF
3319
SLIBSUF=$SLIBSUF
3320
EXESUF=$EXESUF
3321
EXTRA_VERSION=$extra_version
3322
DEPFLAGS=$DEPFLAGS
3323
CCDEP=$CCDEP
3324
ASDEP=$ASDEP
3325
CC_DEPFLAGS=$CC_DEPFLAGS
3326
AS_DEPFLAGS=$AS_DEPFLAGS
3327
HOSTCC=$host_cc
3328
HOSTCFLAGS=$host_cflags
3329
HOSTEXESUF=$HOSTEXESUF
3330
HOSTLDFLAGS=$host_ldflags
3331
HOSTLIBS=$host_libs
3332
TARGET_EXEC=$target_exec
3333
TARGET_PATH=$target_path
3334
SDL_LIBS=$sdl_libs
3335
SDL_CFLAGS=$sdl_cflags
3336
LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
3337
EXTRALIBS=$extralibs
3338
INSTALL=install
3339
LIBTARGET=${LIBTARGET}
3340
SLIBNAME=${SLIBNAME}
3341
SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
3342
SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
3343
SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
3344
SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
3345
SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
3346
SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
3347
SAMPLES:=${samples:-\$(FATE_SAMPLES)}
3348
EOF
3349

    
3350
get_version(){
3351
    name=$1
3352
    file=$source_path/$2
3353
    eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
3354
    eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
3355
    lcname=$(tolower $name)
3356
    eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
3357
    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
3358
}
3359

    
3360
get_version LIBSWSCALE  libswscale/swscale.h
3361
get_version LIBPOSTPROC libpostproc/postprocess.h
3362
get_version LIBAVCODEC  libavcodec/version.h
3363
get_version LIBAVDEVICE libavdevice/avdevice.h
3364
get_version LIBAVFORMAT libavformat/version.h
3365
get_version LIBAVUTIL   libavutil/avutil.h
3366
get_version LIBAVFILTER libavfilter/avfilter.h
3367

    
3368
cat > $TMPH <<EOF
3369
/* Automatically generated by configure - do not modify! */
3370
#ifndef FFMPEG_CONFIG_H
3371
#define FFMPEG_CONFIG_H
3372
#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
3373
#define FFMPEG_LICENSE "$(c_escape $license)"
3374
#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
3375
#define CC_TYPE "$cc_type"
3376
#define CC_VERSION $cc_version
3377
#define restrict $_restrict
3378
#define EXTERN_PREFIX "${extern_prefix}"
3379
#define EXTERN_ASM ${extern_prefix}
3380
#define SLIBSUF "$SLIBSUF"
3381
EOF
3382

    
3383
test -n "$malloc_prefix" &&
3384
    echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
3385

    
3386
if enabled small || disabled optimizations; then
3387
    echo "#undef  av_always_inline"  >> $TMPH
3388
    if enabled small; then
3389
        echo "#define av_always_inline inline"  >> $TMPH
3390
    else
3391
        echo "#define av_always_inline av_unused"  >> $TMPH
3392
    fi
3393
fi
3394

    
3395
if enabled yasm; then
3396
    append config_files $TMPASM
3397
    printf '' >$TMPASM
3398
fi
3399

    
3400
print_config ARCH_   "$config_files" $ARCH_LIST
3401
print_config HAVE_   "$config_files" $HAVE_LIST
3402
print_config CONFIG_ "$config_files" $CONFIG_LIST       \
3403
                                     $CONFIG_EXTRA      \
3404
                                     $DECODER_LIST      \
3405
                                     $ENCODER_LIST      \
3406
                                     $HWACCEL_LIST      \
3407
                                     $PARSER_LIST       \
3408
                                     $BSF_LIST          \
3409
                                     $DEMUXER_LIST      \
3410
                                     $MUXER_LIST        \
3411
                                     $FILTER_LIST       \
3412
                                     $PROTOCOL_LIST     \
3413
                                     $INDEV_LIST        \
3414
                                     $OUTDEV_LIST       \
3415

    
3416
cat >>config.mak <<EOF
3417
ACODEC_TESTS=$(print_enabled -n _test $ACODEC_TESTS)
3418
VCODEC_TESTS=$(print_enabled -n _test $VCODEC_TESTS)
3419
LAVF_TESTS=$(print_enabled   -n _test $LAVF_TESTS)
3420
LAVFI_TESTS=$(print_enabled  -n _test $LAVFI_TESTS)
3421
SEEK_TESTS=$(print_enabled   -n _test $SEEK_TESTS)
3422
EOF
3423

    
3424
echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
3425
echo "endif # FFMPEG_CONFIG_MAK" >> config.mak
3426

    
3427
# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
3428
cp_if_changed $TMPH config.h
3429
touch .config
3430

    
3431
enabled yasm && cp_if_changed $TMPASM config.asm
3432

    
3433
cat > $TMPH <<EOF
3434
/* Generated by ffconf */
3435
#ifndef AVUTIL_AVCONFIG_H
3436
#define AVUTIL_AVCONFIG_H
3437
EOF
3438

    
3439
print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
3440

    
3441
echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
3442

    
3443
cp_if_changed $TMPH libavutil/avconfig.h
3444

    
3445
test -n "$WARNINGS" && printf "\n$WARNINGS"
3446

    
3447
# build pkg-config files
3448

    
3449
pkgconfig_generate(){
3450
name=$1
3451
shortname=${name#lib}${build_suffix}
3452
comment=$2
3453
version=$3
3454
libs=$4
3455
requires=$5
3456
enabled ${name#lib} || return 0
3457
cat <<EOF > $name/$name.pc
3458
prefix=$prefix
3459
exec_prefix=\${prefix}
3460
libdir=$libdir
3461
includedir=$incdir
3462

    
3463
Name: $name
3464
Description: $comment
3465
Version: $version
3466
Requires: $(enabled shared || echo $requires)
3467
Requires.private: $(enabled shared && echo $requires)
3468
Conflicts:
3469
Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
3470
Libs.private: $(enabled shared && echo $libs)
3471
Cflags: -I\${includedir}
3472
EOF
3473
cat <<EOF > $name/$name-uninstalled.pc
3474
prefix=
3475
exec_prefix=
3476
libdir=\${pcfiledir}
3477
includedir=${source_path}
3478

    
3479
Name: $name
3480
Description: $comment
3481
Version: $version
3482
Requires: $requires
3483
Conflicts:
3484
Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
3485
Cflags: -I\${includedir}
3486
EOF
3487
}
3488

    
3489
pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION" "$LIBM"
3490
pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
3491
pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
3492
pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
3493
pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs"
3494
pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
3495
pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"