~ubuntu-branches/ubuntu/raring/libav/raring-security

« back to all changes in this revision

Viewing changes to .pc/post-0.7.1/0004-configure-add-missing-CFLAGS-to-fix-building-on-the-.patch/configure

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler
  • Date: 2011-09-28 09:18:34 UTC
  • mfrom: (1.3.7 sid)
  • Revision ID: package-import@ubuntu.com-20110928091834-w415mnuh06h4zpvc
Tags: 4:0.7.1-7ubuntu2
Revert "Convert package to include multiarch support."

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/sh
 
2
#
 
3
# Libav 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 LIBAV, 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 Libav."
 
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
  --disable-postproc       disable libpostproc build
 
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
  --enable-gray            enable full grayscale support (slower color)
 
98
  --disable-swscale-alpha  disable alpha channel support in swscale
 
99
  --disable-fastdiv        disable table-based division
 
100
  --enable-small           optimize for size instead of speed
 
101
  --disable-aandct         disable AAN DCT code
 
102
  --disable-dct            disable DCT code
 
103
  --disable-fft            disable FFT code
 
104
  --disable-golomb         disable Golomb code
 
105
  --disable-huffman        disable Huffman code
 
106
  --disable-lpc            disable LPC code
 
107
  --disable-mdct           disable MDCT code
 
108
  --disable-rdft           disable RDFT code
 
109
  --enable-vaapi           enable VAAPI code
 
110
  --enable-vdpau           enable VDPAU code
 
111
  --disable-dxva2          disable DXVA2 code
 
112
  --enable-runtime-cpudetect detect cpu capabilities at runtime (bigger binary)
 
113
  --enable-hardcoded-tables use hardcoded tables instead of runtime generation
 
114
  --enable-memalign-hack   emulate memalign, interferes with memory debuggers
 
115
  --disable-everything     disable all components listed below
 
116
  --disable-encoder=NAME   disable encoder NAME
 
117
  --enable-encoder=NAME    enable encoder NAME
 
118
  --disable-encoders       disable all encoders
 
119
  --disable-decoder=NAME   disable decoder NAME
 
120
  --enable-decoder=NAME    enable decoder NAME
 
121
  --disable-decoders       disable all decoders
 
122
  --disable-hwaccel=NAME   disable hwaccel NAME
 
123
  --enable-hwaccel=NAME    enable hwaccel NAME
 
124
  --disable-hwaccels       disable all hwaccels
 
125
  --disable-muxer=NAME     disable muxer NAME
 
126
  --enable-muxer=NAME      enable muxer NAME
 
127
  --disable-muxers         disable all muxers
 
128
  --disable-demuxer=NAME   disable demuxer NAME
 
129
  --enable-demuxer=NAME    enable demuxer NAME
 
130
  --disable-demuxers       disable all demuxers
 
131
  --enable-parser=NAME     enable parser NAME
 
132
  --disable-parser=NAME    disable parser NAME
 
133
  --disable-parsers        disable all parsers
 
134
  --enable-bsf=NAME        enable bitstream filter NAME
 
135
  --disable-bsf=NAME       disable bitstream filter NAME
 
136
  --disable-bsfs           disable all bitstream filters
 
137
  --enable-protocol=NAME   enable protocol NAME
 
138
  --disable-protocol=NAME  disable protocol NAME
 
139
  --disable-protocols      disable all protocols
 
140
  --disable-indev=NAME     disable input device NAME
 
141
  --disable-outdev=NAME    disable output device NAME
 
142
  --disable-indevs         disable input devices
 
143
  --disable-outdevs        disable output devices
 
144
  --disable-devices        disable all devices
 
145
  --enable-filter=NAME     enable filter NAME
 
146
  --disable-filter=NAME    disable filter NAME
 
147
  --disable-filters        disable all filters
 
148
  --list-decoders          show all available decoders
 
149
  --list-encoders          show all available encoders
 
150
  --list-hwaccels          show all available hardware accelerators
 
151
  --list-muxers            show all available muxers
 
152
  --list-demuxers          show all available demuxers
 
153
  --list-parsers           show all available parsers
 
154
  --list-protocols         show all available protocols
 
155
  --list-bsfs              show all available bitstream filters
 
156
  --list-indevs            show all available input devices
 
157
  --list-outdevs           show all available output devices
 
158
  --list-filters           show all available filters
 
159
 
 
160
External library support:
 
161
  --enable-avisynth        enable reading of AVISynth script files [no]
 
162
  --enable-bzlib           enable bzlib [autodetect]
 
163
  --enable-frei0r          enable frei0r video filtering
 
164
  --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
 
165
  --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no]
 
166
  --enable-libopencv       enable video filtering via libopencv [no]
 
167
  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
 
168
                           and libraw1394 [no]
 
169
  --enable-libdirac        enable Dirac support via libdirac [no]
 
170
  --enable-libfaac         enable FAAC support via libfaac [no]
 
171
  --enable-libfreetype     enable libfreetype [no]
 
172
  --enable-libgsm          enable GSM support via libgsm [no]
 
173
  --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
 
174
  --enable-libnut          enable NUT (de)muxing via libnut,
 
175
                           native (de)muxer exists [no]
 
176
  --enable-libopenjpeg     enable JPEG 2000 decoding via OpenJPEG [no]
 
177
  --enable-librtmp         enable RTMP[E] support via librtmp [no]
 
178
  --enable-libschroedinger enable Dirac support via libschroedinger [no]
 
179
  --enable-libspeex        enable Speex decoding via libspeex [no]
 
180
  --enable-libtheora       enable Theora encoding via libtheora [no]
 
181
  --enable-libvo-aacenc    enable AAC encoding via libvo-aacenc [no]
 
182
  --enable-libvo-amrwbenc  enable AMR-WB encoding via libvo-amrwbenc [no]
 
183
  --enable-libvorbis       enable Vorbis encoding via libvorbis,
 
184
                           native implementation exists [no]
 
185
  --enable-libvpx          enable VP8 support via libvpx [no]
 
186
  --enable-libx264         enable H.264 encoding via x264 [no]
 
187
  --enable-libxavs         enable AVS encoding via xavs [no]
 
188
  --enable-libxvid         enable Xvid encoding via xvidcore,
 
189
                           native MPEG-4/Xvid encoder exists [no]
 
190
  --enable-mlib            enable Sun medialib [no]
 
191
  --enable-zlib            enable zlib [autodetect]
 
192
 
 
193
Advanced options (experts only):
 
194
  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]
 
195
  --enable-cross-compile   assume a cross-compiler is used
 
196
  --sysroot=PATH           root of cross-build tree
 
197
  --sysinclude=PATH        location of cross-build system headers
 
198
  --target-os=OS           compiler targets OS [$target_os]
 
199
  --target-exec=CMD        command to run executables on target
 
200
  --target-path=DIR        path to view of build directory on target
 
201
  --nm=NM                  use nm tool
 
202
  --ar=AR                  use archive tool AR [$ar_default]
 
203
  --as=AS                  use assembler AS [$as_default]
 
204
  --cc=CC                  use C compiler CC [$cc_default]
 
205
  --ld=LD                  use linker LD
 
206
  --host-cc=HOSTCC         use host C compiler HOSTCC
 
207
  --host-cflags=HCFLAGS    use HCFLAGS when compiling for host
 
208
  --host-ldflags=HLDFLAGS  use HLDFLAGS when linking for host
 
209
  --host-libs=HLIBS        use libs HLIBS when linking for host
 
210
  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]
 
211
  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]
 
212
  --extra-libs=ELIBS       add ELIBS [$ELIBS]
 
213
  --extra-version=STRING   version string suffix []
 
214
  --build-suffix=SUFFIX    library name suffix []
 
215
  --arch=ARCH              select architecture [$arch]
 
216
  --cpu=CPU                select the minimum required CPU (affects
 
217
                           instruction selection, may crash on older CPUs)
 
218
  --disable-asm            disable all assembler optimizations
 
219
  --disable-altivec        disable AltiVec optimizations
 
220
  --disable-amd3dnow       disable 3DNow! optimizations
 
221
  --disable-amd3dnowext    disable 3DNow! extended optimizations
 
222
  --disable-mmx            disable MMX optimizations
 
223
  --disable-mmx2           disable MMX2 optimizations
 
224
  --disable-sse            disable SSE optimizations
 
225
  --disable-ssse3          disable SSSE3 optimizations
 
226
  --disable-avx            disable AVX optimizations
 
227
  --disable-armv5te        disable armv5te optimizations
 
228
  --disable-armv6          disable armv6 optimizations
 
229
  --disable-armv6t2        disable armv6t2 optimizations
 
230
  --disable-armvfp         disable ARM VFP optimizations
 
231
  --disable-iwmmxt         disable iwmmxt optimizations
 
232
  --disable-mmi            disable MMI optimizations
 
233
  --disable-neon           disable neon optimizations
 
234
  --disable-vis            disable VIS optimizations
 
235
  --disable-yasm           disable use of yasm assembler
 
236
  --enable-pic             build position-independent code
 
237
  --malloc-prefix=PFX      prefix malloc and related names with PFX
 
238
  --enable-sram            allow use of on-chip SRAM
 
239
  --disable-symver         disable symbol versioning
 
240
 
 
241
Developer options (useful when working on Libav itself):
 
242
  --disable-debug          disable debugging symbols
 
243
  --enable-debug=LEVEL     set the debug level [$debuglevel]
 
244
  --disable-optimizations  disable compiler optimizations
 
245
  --enable-extra-warnings  enable more compiler warnings
 
246
  --samples=PATH           location of test samples for FATE, if not set use
 
247
                           \$FATE_SAMPLES at make invocation time.
 
248
 
 
249
NOTE: Object files are built at the place where configure is launched.
 
250
EOF
 
251
  exit 0
 
252
}
 
253
 
 
254
quotes='""'
 
255
 
 
256
log(){
 
257
    echo "$@" >> $logfile
 
258
}
 
259
 
 
260
log_file(){
 
261
    log BEGIN $1
 
262
    pr -n -t $1 >> $logfile
 
263
    log END $1
 
264
}
 
265
 
 
266
echolog(){
 
267
    log "$@"
 
268
    echo "$@"
 
269
}
 
270
 
 
271
warn(){
 
272
    log "WARNING: $*"
 
273
    WARNINGS="${WARNINGS}WARNING: $*\n"
 
274
}
 
275
 
 
276
die(){
 
277
    echolog "$@"
 
278
    cat <<EOF
 
279
 
 
280
If you think configure made a mistake, make sure you are using the latest
 
281
version from Git.  If the latest version fails, report the problem to the
 
282
libav-user@libav.org mailing list or IRC #libav on irc.freenode.net.
 
283
EOF
 
284
    if disabled logging; then
 
285
        cat <<EOF
 
286
Rerun configure with logging enabled (do not use --disable-logging), and
 
287
include the log this produces with your report.
 
288
EOF
 
289
    else
 
290
cat <<EOF
 
291
Include the log file "$logfile" produced by configure as this will help
 
292
solving the problem.
 
293
EOF
 
294
    fi
 
295
    exit 1
 
296
}
 
297
 
 
298
# Avoid locale weirdness, besides we really just want to translate ASCII.
 
299
toupper(){
 
300
    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
 
301
}
 
302
 
 
303
tolower(){
 
304
    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
 
305
}
 
306
 
 
307
c_escape(){
 
308
    echo "$*" | sed 's/["\\]/\\\0/g'
 
309
}
 
310
 
 
311
sh_quote(){
 
312
    v=$(echo "$1" | sed "s/'/'\\\\''/g")
 
313
    test "x$v" = "x${v#*[!A-Za-z0-9_/.+-]}" || v="'$v'"
 
314
    echo "$v"
 
315
}
 
316
 
 
317
cleanws(){
 
318
    echo "$@" | sed 's/^ *//;s/  */ /g;s/ *$//'
 
319
}
 
320
 
 
321
filter(){
 
322
    pat=$1
 
323
    shift
 
324
    for v; do
 
325
        eval "case $v in $pat) echo $v ;; esac"
 
326
    done
 
327
}
 
328
 
 
329
filter_out(){
 
330
    pat=$1
 
331
    shift
 
332
    for v; do
 
333
        eval "case $v in $pat) ;; *) echo $v ;; esac"
 
334
    done
 
335
}
 
336
 
 
337
map(){
 
338
    m=$1
 
339
    shift
 
340
    for v; do eval $m; done
 
341
}
 
342
 
 
343
set_all(){
 
344
    value=$1
 
345
    shift
 
346
    for var in $*; do
 
347
        eval $var=$value
 
348
    done
 
349
}
 
350
 
 
351
set_weak(){
 
352
    value=$1
 
353
    shift
 
354
    for var; do
 
355
        eval : \${$var:=$value}
 
356
    done
 
357
}
 
358
 
 
359
set_safe(){
 
360
    var=$1
 
361
    shift
 
362
    eval $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')='$*'
 
363
}
 
364
 
 
365
get_safe(){
 
366
    eval echo \$$(echo "$1" | sed 's/[^A-Za-z0-9_]/_/g')
 
367
}
 
368
 
 
369
pushvar(){
 
370
    for var in $*; do
 
371
        eval level=\${${var}_level:=0}
 
372
        eval ${var}_${level}="\$$var"
 
373
        eval ${var}_level=$(($level+1))
 
374
    done
 
375
}
 
376
 
 
377
popvar(){
 
378
    for var in $*; do
 
379
        eval level=\${${var}_level:-0}
 
380
        test $level = 0 && continue
 
381
        eval level=$(($level-1))
 
382
        eval $var="\${${var}_${level}}"
 
383
        eval ${var}_level=$level
 
384
        eval unset ${var}_${level}
 
385
    done
 
386
}
 
387
 
 
388
enable(){
 
389
    set_all yes $*
 
390
}
 
391
 
 
392
disable(){
 
393
    set_all no $*
 
394
}
 
395
 
 
396
enable_weak(){
 
397
    set_weak yes $*
 
398
}
 
399
 
 
400
disable_weak(){
 
401
    set_weak no $*
 
402
}
 
403
 
 
404
enable_safe(){
 
405
    for var; do
 
406
        enable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
 
407
    done
 
408
}
 
409
 
 
410
disable_safe(){
 
411
    for var; do
 
412
        disable $(echo "$var" | sed 's/[^A-Za-z0-9_]/_/g')
 
413
    done
 
414
}
 
415
 
 
416
do_enable_deep(){
 
417
    for var; do
 
418
        enabled $var && continue
 
419
        eval sel="\$${var}_select"
 
420
        eval sgs="\$${var}_suggest"
 
421
        pushvar var sgs
 
422
        enable_deep $sel
 
423
        popvar sgs
 
424
        enable_deep_weak $sgs
 
425
        popvar var
 
426
    done
 
427
}
 
428
 
 
429
enable_deep(){
 
430
    do_enable_deep $*
 
431
    enable $*
 
432
}
 
433
 
 
434
enable_deep_weak(){
 
435
    do_enable_deep $*
 
436
    enable_weak $*
 
437
}
 
438
 
 
439
enabled(){
 
440
    test "${1#!}" = "$1" && op== || op=!=
 
441
    eval test "x\$${1#!}" $op "xyes"
 
442
}
 
443
 
 
444
disabled(){
 
445
    test "${1#!}" = "$1" && op== || op=!=
 
446
    eval test "x\$${1#!}" $op "xno"
 
447
}
 
448
 
 
449
enabled_all(){
 
450
    for opt; do
 
451
        enabled $opt || return 1
 
452
    done
 
453
}
 
454
 
 
455
disabled_all(){
 
456
    for opt; do
 
457
        disabled $opt || return 1
 
458
    done
 
459
}
 
460
 
 
461
enabled_any(){
 
462
    for opt; do
 
463
        enabled $opt && return 0
 
464
    done
 
465
}
 
466
 
 
467
disabled_any(){
 
468
    for opt; do
 
469
        disabled $opt && return 0
 
470
    done
 
471
    return 1
 
472
}
 
473
 
 
474
set_default(){
 
475
    for opt; do
 
476
        eval : \${$opt:=\$${opt}_default}
 
477
    done
 
478
}
 
479
 
 
480
is_in(){
 
481
    value=$1
 
482
    shift
 
483
    for var in $*; do
 
484
        [ $var = $value ] && return 0
 
485
    done
 
486
    return 1
 
487
}
 
488
 
 
489
check_deps(){
 
490
    for cfg; do
 
491
        cfg="${cfg#!}"
 
492
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
 
493
        disabled ${cfg}_checking && continue
 
494
        enable ${cfg}_checking
 
495
 
 
496
        eval dep_all="\$${cfg}_deps"
 
497
        eval dep_any="\$${cfg}_deps_any"
 
498
        eval dep_sel="\$${cfg}_select"
 
499
        eval dep_sgs="\$${cfg}_suggest"
 
500
        eval dep_ifa="\$${cfg}_if"
 
501
        eval dep_ifn="\$${cfg}_if_any"
 
502
 
 
503
        pushvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
 
504
        check_deps $dep_all $dep_any $dep_sel $dep_sgs $dep_ifa $dep_ifn
 
505
        popvar cfg dep_all dep_any dep_sel dep_sgs dep_ifa dep_ifn
 
506
 
 
507
        [ -n "$dep_ifa" ] && { enabled_all $dep_ifa && enable_weak $cfg; }
 
508
        [ -n "$dep_ifn" ] && { enabled_any $dep_ifn && enable_weak $cfg; }
 
509
        enabled_all  $dep_all || disable $cfg
 
510
        enabled_any  $dep_any || disable $cfg
 
511
        disabled_any $dep_sel && disable $cfg
 
512
 
 
513
        if enabled $cfg; then
 
514
            eval dep_extralibs="\$${cfg}_extralibs"
 
515
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
 
516
            enable_deep $dep_sel
 
517
            enable_deep_weak $dep_sgs
 
518
        fi
 
519
 
 
520
        disable ${cfg}_checking
 
521
    done
 
522
}
 
523
 
 
524
print_config_h(){
 
525
    enabled $1 && v=1 || v=0
 
526
    echo "#define $2 $v"
 
527
}
 
528
 
 
529
print_config_mak(){
 
530
    enabled $1 && v= || v=!
 
531
    echo "$v$2=yes"
 
532
}
 
533
 
 
534
print_config_asm(){
 
535
    enabled $1 && echo "%define $2"
 
536
}
 
537
 
 
538
print_config(){
 
539
    pfx=$1
 
540
    files=$2
 
541
    shift 2
 
542
    for cfg; do
 
543
        ucname="$(toupper $cfg)"
 
544
        for f in $files; do
 
545
            "print_config_${f##*.}" $cfg ${pfx}${ucname} >>$f
 
546
        done
 
547
    done
 
548
}
 
549
 
 
550
print_enabled(){
 
551
    test "$1" = -n && end=" " && shift || end="\n"
 
552
    suf=$1
 
553
    shift
 
554
    for v; do
 
555
        enabled $v && printf "%s$end" ${v%$suf};
 
556
    done
 
557
}
 
558
 
 
559
append(){
 
560
    var=$1
 
561
    shift
 
562
    eval "$var=\"\$$var $*\""
 
563
}
 
564
 
 
565
prepend(){
 
566
    var=$1
 
567
    shift
 
568
    eval "$var=\"$* \$$var\""
 
569
}
 
570
 
 
571
add_cppflags(){
 
572
    append CPPFLAGS $($filter_cppflags "$@")
 
573
}
 
574
 
 
575
add_cflags(){
 
576
    append CFLAGS $($filter_cflags "$@")
 
577
}
 
578
 
 
579
add_asflags(){
 
580
    append ASFLAGS $($filter_asflags "$@")
 
581
}
 
582
 
 
583
add_ldflags(){
 
584
    append LDFLAGS "$@"
 
585
}
 
586
 
 
587
add_extralibs(){
 
588
    prepend extralibs "$@"
 
589
}
 
590
 
 
591
check_cmd(){
 
592
    log "$@"
 
593
    "$@" >> $logfile 2>&1
 
594
}
 
595
 
 
596
check_cc(){
 
597
    log check_cc "$@"
 
598
    cat > $TMPC
 
599
    log_file $TMPC
 
600
    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -c -o $TMPO $TMPC
 
601
}
 
602
 
 
603
check_cpp(){
 
604
    log check_cpp "$@"
 
605
    cat > $TMPC
 
606
    log_file $TMPC
 
607
    check_cmd $cc $CPPFLAGS $CFLAGS "$@" -E -o $TMPO $TMPC
 
608
}
 
609
 
 
610
check_as(){
 
611
    log check_as "$@"
 
612
    cat > $TMPC
 
613
    log_file $TMPC
 
614
    check_cmd $as $CPPFLAGS $ASFLAGS "$@" -c -o $TMPO $TMPC
 
615
}
 
616
 
 
617
check_asm(){
 
618
    log check_asm "$@"
 
619
    name="$1"
 
620
    code="$2"
 
621
    shift 2
 
622
    disable $name
 
623
    check_as "$@" <<EOF && enable $name
 
624
void foo(void){ __asm__ volatile($code); }
 
625
EOF
 
626
}
 
627
 
 
628
check_yasm(){
 
629
    log check_yasm "$@"
 
630
    echo "$1" > $TMPS
 
631
    log_file $TMPS
 
632
    shift 1
 
633
    check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
 
634
}
 
635
 
 
636
check_ld(){
 
637
    log check_ld "$@"
 
638
    flags=''
 
639
    libs=''
 
640
    for f; do
 
641
        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
 
642
    done
 
643
    check_cc $($filter_cflags $flags) || return
 
644
    check_cmd $ld $LDFLAGS $flags -o $TMPE $TMPO $libs $extralibs
 
645
}
 
646
 
 
647
check_cppflags(){
 
648
    log check_cppflags "$@"
 
649
    set -- $($filter_cppflags "$@")
 
650
    check_cc "$@" <<EOF && append CPPFLAGS "$@"
 
651
int x;
 
652
EOF
 
653
}
 
654
 
 
655
check_cflags(){
 
656
    log check_cflags "$@"
 
657
    set -- $($filter_cflags "$@")
 
658
    check_cc "$@" <<EOF && append CFLAGS "$@"
 
659
int x;
 
660
EOF
 
661
}
 
662
 
 
663
test_ldflags(){
 
664
    log test_ldflags "$@"
 
665
    check_ld "$@" <<EOF
 
666
int main(void){ return 0; }
 
667
EOF
 
668
}
 
669
 
 
670
check_ldflags(){
 
671
    log check_ldflags "$@"
 
672
    test_ldflags "$@" && add_ldflags "$@"
 
673
}
 
674
 
 
675
check_header(){
 
676
    log check_header "$@"
 
677
    header=$1
 
678
    shift
 
679
    disable_safe $header
 
680
    check_cpp "$@" <<EOF && enable_safe $header
 
681
#include <$header>
 
682
int x;
 
683
EOF
 
684
}
 
685
 
 
686
check_func(){
 
687
    log check_func "$@"
 
688
    func=$1
 
689
    shift
 
690
    disable $func
 
691
    check_ld "$@" <<EOF && enable $func
 
692
extern int $func();
 
693
int main(void){ $func(); }
 
694
EOF
 
695
}
 
696
 
 
697
check_mathfunc(){
 
698
    log check_mathfunc "$@"
 
699
    func=$1
 
700
    shift
 
701
    disable $func
 
702
    check_ld "$@" <<EOF && enable $func
 
703
#include <math.h>
 
704
float foo(float f) { return $func(f); }
 
705
int main(void){ return 0; }
 
706
EOF
 
707
}
 
708
 
 
709
check_func_headers(){
 
710
    log check_func_headers "$@"
 
711
    headers=$1
 
712
    funcs=$2
 
713
    shift 2
 
714
    {
 
715
        for hdr in $headers; do
 
716
            echo "#include <$hdr>"
 
717
        done
 
718
        for func in $funcs; do
 
719
            echo "long check_$func(void) { return (long) $func; }"
 
720
        done
 
721
        echo "int main(void) { return 0; }"
 
722
    } | check_ld "$@" && enable $funcs && enable_safe $headers
 
723
}
 
724
 
 
725
check_cpp_condition(){
 
726
    log check_cpp_condition "$@"
 
727
    header=$1
 
728
    condition=$2
 
729
    shift 2
 
730
    check_cpp $($filter_cppflags "$@") <<EOF
 
731
#include <$header>
 
732
#if !($condition)
 
733
#error "unsatisfied condition: $condition"
 
734
#endif
 
735
EOF
 
736
}
 
737
 
 
738
check_lib(){
 
739
    log check_lib "$@"
 
740
    header="$1"
 
741
    func="$2"
 
742
    shift 2
 
743
    check_header $header && check_func $func "$@" && add_extralibs "$@"
 
744
}
 
745
 
 
746
check_lib2(){
 
747
    log check_lib2 "$@"
 
748
    headers="$1"
 
749
    funcs="$2"
 
750
    shift 2
 
751
    check_func_headers "$headers" "$funcs" "$@" && add_extralibs "$@"
 
752
}
 
753
 
 
754
check_pkg_config(){
 
755
    log check_pkg_config "$@"
 
756
    pkg="$1"
 
757
    headers="$2"
 
758
    funcs="$3"
 
759
    shift 3
 
760
    $pkg_config --exists $pkg || return
 
761
    pkg_cflags=$($pkg_config --cflags $pkg)
 
762
    pkg_libs=$($pkg_config --libs $pkg)
 
763
    check_func_headers "$headers" "$funcs" $pkg_cflags $pkg_libs "$@" &&
 
764
        set_safe ${pkg}_cflags $pkg_cflags   &&
 
765
        set_safe ${pkg}_libs   $pkg_libs
 
766
}
 
767
 
 
768
check_exec(){
 
769
    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
 
770
}
 
771
 
 
772
check_exec_crash(){
 
773
    code=$(cat)
 
774
 
 
775
    # exit() is not async signal safe.  _Exit (C99) and _exit (POSIX)
 
776
    # are safe but may not be available everywhere.  Thus we use
 
777
    # raise(SIGTERM) instead.  The check is run in a subshell so we
 
778
    # can redirect the "Terminated" message from the shell.  SIGBUS
 
779
    # is not defined by standard C so it is used conditionally.
 
780
 
 
781
    (check_exec "$@") >> $logfile 2>&1 <<EOF
 
782
#include <signal.h>
 
783
static void sighandler(int sig){
 
784
    raise(SIGTERM);
 
785
}
 
786
int main(void){
 
787
    signal(SIGILL, sighandler);
 
788
    signal(SIGFPE, sighandler);
 
789
    signal(SIGSEGV, sighandler);
 
790
#ifdef SIGBUS
 
791
    signal(SIGBUS, sighandler);
 
792
#endif
 
793
    { $code }
 
794
}
 
795
EOF
 
796
}
 
797
 
 
798
check_type(){
 
799
    log check_type "$@"
 
800
    headers=$1
 
801
    type=$2
 
802
    shift 2
 
803
    disable_safe "$type"
 
804
    incs=""
 
805
    for hdr in $headers; do
 
806
        incs="$incs
 
807
#include <$hdr>"
 
808
    done
 
809
    check_cc "$@" <<EOF && enable_safe "$type"
 
810
$incs
 
811
$type v;
 
812
EOF
 
813
}
 
814
 
 
815
check_struct(){
 
816
    log check_type "$@"
 
817
    headers=$1
 
818
    struct=$2
 
819
    member=$3
 
820
    shift 3
 
821
    disable_safe "${struct}_${member}"
 
822
    incs=""
 
823
    for hdr in $headers; do
 
824
        incs="$incs
 
825
#include <$hdr>"
 
826
    done
 
827
    check_cc "$@" <<EOF && enable_safe "${struct}_${member}"
 
828
$incs
 
829
const void *p = &(($struct *)0)->$member;
 
830
EOF
 
831
}
 
832
 
 
833
require(){
 
834
    name="$1"
 
835
    header="$2"
 
836
    func="$3"
 
837
    shift 3
 
838
    check_lib $header $func "$@" || die "ERROR: $name not found"
 
839
}
 
840
 
 
841
require2(){
 
842
    name="$1"
 
843
    headers="$2"
 
844
    func="$3"
 
845
    shift 3
 
846
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
 
847
}
 
848
 
 
849
require_pkg_config(){
 
850
    pkg="$1"
 
851
    check_pkg_config "$@" || die "ERROR: $pkg not found"
 
852
    add_cflags    $(get_safe ${pkg}_cflags)
 
853
    add_extralibs $(get_safe ${pkg}_libs)
 
854
}
 
855
 
 
856
check_host_cc(){
 
857
    log check_host_cc "$@"
 
858
    cat > $TMPC
 
859
    log_file $TMPC
 
860
    check_cmd $host_cc $host_cflags "$@" -c -o $TMPO $TMPC
 
861
}
 
862
 
 
863
check_host_cflags(){
 
864
    log check_host_cflags "$@"
 
865
    check_host_cc "$@" <<EOF && append host_cflags "$@"
 
866
int x;
 
867
EOF
 
868
}
 
869
 
 
870
apply(){
 
871
    file=$1
 
872
    shift
 
873
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
 
874
}
 
875
 
 
876
cp_if_changed(){
 
877
    cmp -s "$1" "$2" &&
 
878
        echo "$2 is unchanged" ||
 
879
        cp -f "$1" "$2"
 
880
}
 
881
 
 
882
# CONFIG_LIST contains configurable options, while HAVE_LIST is for
 
883
# system-dependent things.
 
884
 
 
885
COMPONENT_LIST="
 
886
    bsfs
 
887
    decoders
 
888
    demuxers
 
889
    encoders
 
890
    filters
 
891
    hwaccels
 
892
    indevs
 
893
    muxers
 
894
    outdevs
 
895
    parsers
 
896
    protocols
 
897
"
 
898
 
 
899
CONFIG_LIST="
 
900
    $COMPONENT_LIST
 
901
    aandct
 
902
    ac3dsp
 
903
    avcodec
 
904
    avdevice
 
905
    avfilter
 
906
    avformat
 
907
    avisynth
 
908
    bzlib
 
909
    dct
 
910
    doc
 
911
    dwt
 
912
    dxva2
 
913
    fastdiv
 
914
    ffmpeg
 
915
    ffplay
 
916
    ffprobe
 
917
    ffserver
 
918
    fft
 
919
    frei0r
 
920
    golomb
 
921
    gpl
 
922
    gray
 
923
    h264dsp
 
924
    h264pred
 
925
    hardcoded_tables
 
926
    huffman
 
927
    libdc1394
 
928
    libdirac
 
929
    libfaac
 
930
    libfreetype
 
931
    libgsm
 
932
    libmp3lame
 
933
    libnut
 
934
    libopencore_amrnb
 
935
    libopencore_amrwb
 
936
    libopencv
 
937
    libopenjpeg
 
938
    librtmp
 
939
    libschroedinger
 
940
    libspeex
 
941
    libtheora
 
942
    libvo_aacenc
 
943
    libvo_amrwbenc
 
944
    libvorbis
 
945
    libvpx
 
946
    libx264
 
947
    libxavs
 
948
    libxvid
 
949
    lpc
 
950
    lsp
 
951
    mdct
 
952
    memalign_hack
 
953
    mlib
 
954
    mpegaudiodsp
 
955
    network
 
956
    nonfree
 
957
    pic
 
958
    postproc
 
959
    rdft
 
960
    rtpdec
 
961
    runtime_cpudetect
 
962
    shared
 
963
    sinewin
 
964
    small
 
965
    sram
 
966
    static
 
967
    swscale
 
968
    swscale_alpha
 
969
    vaapi
 
970
    vdpau
 
971
    version3
 
972
    x11grab
 
973
    zlib
 
974
"
 
975
 
 
976
THREADS_LIST='
 
977
    pthreads
 
978
    w32threads
 
979
'
 
980
 
 
981
ARCH_LIST='
 
982
    alpha
 
983
    arm
 
984
    avr32
 
985
    avr32_ap
 
986
    avr32_uc
 
987
    bfin
 
988
    ia64
 
989
    m68k
 
990
    mips
 
991
    mips64
 
992
    parisc
 
993
    ppc
 
994
    ppc64
 
995
    s390
 
996
    sh4
 
997
    sparc
 
998
    sparc64
 
999
    tomi
 
1000
    x86
 
1001
    x86_32
 
1002
    x86_64
 
1003
'
 
1004
 
 
1005
ARCH_EXT_LIST='
 
1006
    altivec
 
1007
    amd3dnow
 
1008
    amd3dnowext
 
1009
    armv5te
 
1010
    armv6
 
1011
    armv6t2
 
1012
    armvfp
 
1013
    avx
 
1014
    iwmmxt
 
1015
    mmi
 
1016
    mmx
 
1017
    mmx2
 
1018
    neon
 
1019
    ppc4xx
 
1020
    sse
 
1021
    ssse3
 
1022
    vfpv3
 
1023
    vis
 
1024
'
 
1025
 
 
1026
HAVE_LIST_PUB='
 
1027
    bigendian
 
1028
    fast_unaligned
 
1029
'
 
1030
 
 
1031
HAVE_LIST="
 
1032
    $ARCH_EXT_LIST
 
1033
    $HAVE_LIST_PUB
 
1034
    $THREADS_LIST
 
1035
    aligned_stack
 
1036
    alsa_asoundlib_h
 
1037
    altivec_h
 
1038
    arpa_inet_h
 
1039
    attribute_may_alias
 
1040
    attribute_packed
 
1041
    bswap
 
1042
    closesocket
 
1043
    cmov
 
1044
    dcbzl
 
1045
    dev_bktr_ioctl_bt848_h
 
1046
    dev_bktr_ioctl_meteor_h
 
1047
    dev_ic_bt8xx_h
 
1048
    dev_video_meteor_ioctl_meteor_h
 
1049
    dev_video_bktr_ioctl_bt848_h
 
1050
    dlfcn_h
 
1051
    dlopen
 
1052
    dos_paths
 
1053
    ebp_available
 
1054
    ebx_available
 
1055
    exp2
 
1056
    exp2f
 
1057
    fast_64bit
 
1058
    fast_clz
 
1059
    fast_cmov
 
1060
    fcntl
 
1061
    fork
 
1062
    getaddrinfo
 
1063
    gethrtime
 
1064
    GetProcessMemoryInfo
 
1065
    GetProcessTimes
 
1066
    getrusage
 
1067
    gnu_as
 
1068
    struct_rusage_ru_maxrss
 
1069
    ibm_asm
 
1070
    inet_aton
 
1071
    inline_asm
 
1072
    isatty
 
1073
    ldbrx
 
1074
    libdc1394_1
 
1075
    libdc1394_2
 
1076
    llrint
 
1077
    llrintf
 
1078
    local_aligned_16
 
1079
    local_aligned_8
 
1080
    localtime_r
 
1081
    log2
 
1082
    log2f
 
1083
    loongson
 
1084
    lrint
 
1085
    lrintf
 
1086
    lzo1x_999_compress
 
1087
    machine_ioctl_bt848_h
 
1088
    machine_ioctl_meteor_h
 
1089
    malloc_h
 
1090
    MapViewOfFile
 
1091
    memalign
 
1092
    mkstemp
 
1093
    mmap
 
1094
    pld
 
1095
    posix_memalign
 
1096
    round
 
1097
    roundf
 
1098
    sdl
 
1099
    sdl_video_size
 
1100
    setmode
 
1101
    sndio_h
 
1102
    socklen_t
 
1103
    soundcard_h
 
1104
    poll_h
 
1105
    setrlimit
 
1106
    strerror_r
 
1107
    strtok_r
 
1108
    struct_addrinfo
 
1109
    struct_ipv6_mreq
 
1110
    struct_sockaddr_in6
 
1111
    struct_sockaddr_sa_len
 
1112
    struct_sockaddr_storage
 
1113
    symver
 
1114
    symver_gnu_asm
 
1115
    symver_asm_label
 
1116
    sys_mman_h
 
1117
    sys_resource_h
 
1118
    sys_select_h
 
1119
    sys_soundcard_h
 
1120
    sys_videoio_h
 
1121
    ten_operands
 
1122
    threads
 
1123
    trunc
 
1124
    truncf
 
1125
    vfp_args
 
1126
    VirtualAlloc
 
1127
    winsock2_h
 
1128
    xform_asm
 
1129
    xmm_clobbers
 
1130
    yasm
 
1131
"
 
1132
 
 
1133
# options emitted with CONFIG_ prefix but not available on command line
 
1134
CONFIG_EXTRA="
 
1135
    avutil
 
1136
    gplv3
 
1137
    lgplv3
 
1138
"
 
1139
 
 
1140
CMDLINE_SELECT="
 
1141
    $ARCH_EXT_LIST
 
1142
    $CONFIG_LIST
 
1143
    $THREADS_LIST
 
1144
    asm
 
1145
    cross_compile
 
1146
    debug
 
1147
    extra_warnings
 
1148
    logging
 
1149
    optimizations
 
1150
    symver
 
1151
    yasm
 
1152
"
 
1153
 
 
1154
PATHS_LIST='
 
1155
    bindir
 
1156
    datadir
 
1157
    incdir
 
1158
    libdir
 
1159
    mandir
 
1160
    prefix
 
1161
    shlibdir
 
1162
'
 
1163
 
 
1164
CMDLINE_SET="
 
1165
    $PATHS_LIST
 
1166
    ar
 
1167
    arch
 
1168
    as
 
1169
    build_suffix
 
1170
    cc
 
1171
    cpu
 
1172
    cross_prefix
 
1173
    dep_cc
 
1174
    extra_version
 
1175
    host_cc
 
1176
    host_cflags
 
1177
    host_ldflags
 
1178
    host_libs
 
1179
    host_os
 
1180
    ld
 
1181
    logfile
 
1182
    malloc_prefix
 
1183
    nm
 
1184
    pkg_config
 
1185
    samples
 
1186
    sysinclude
 
1187
    sysroot
 
1188
    target_exec
 
1189
    target_os
 
1190
    target_path
 
1191
"
 
1192
 
 
1193
CMDLINE_APPEND="
 
1194
    extra_cflags
 
1195
"
 
1196
 
 
1197
# code dependency declarations
 
1198
 
 
1199
# architecture extensions
 
1200
 
 
1201
armv5te_deps="arm"
 
1202
armv6_deps="arm"
 
1203
armv6t2_deps="arm"
 
1204
armvfp_deps="arm"
 
1205
iwmmxt_deps="arm"
 
1206
neon_deps="arm"
 
1207
vfpv3_deps="armvfp"
 
1208
 
 
1209
mmi_deps="mips"
 
1210
 
 
1211
altivec_deps="ppc"
 
1212
ppc4xx_deps="ppc"
 
1213
 
 
1214
vis_deps="sparc"
 
1215
 
 
1216
x86_64_suggest="cmov fast_cmov"
 
1217
amd3dnow_deps="mmx"
 
1218
amd3dnowext_deps="amd3dnow"
 
1219
mmx_deps="x86"
 
1220
mmx2_deps="mmx"
 
1221
sse_deps="mmx"
 
1222
ssse3_deps="sse"
 
1223
avx_deps="ssse3"
 
1224
 
 
1225
aligned_stack_if_any="ppc x86"
 
1226
fast_64bit_if_any="alpha ia64 mips64 parisc64 ppc64 sparc64 x86_64"
 
1227
fast_clz_if_any="alpha armv5te avr32 mips ppc x86"
 
1228
fast_unaligned_if_any="armv6 ppc x86"
 
1229
 
 
1230
need_memalign="altivec neon sse"
 
1231
inline_asm_deps="!tms470"
 
1232
 
 
1233
symver_if_any="symver_asm_label symver_gnu_asm"
 
1234
 
 
1235
# subsystems
 
1236
dct_select="rdft"
 
1237
mdct_select="fft"
 
1238
rdft_select="fft"
 
1239
mpegaudiodsp_select="dct"
 
1240
 
 
1241
# decoders / encoders / hardware accelerators
 
1242
aac_decoder_select="mdct sinewin"
 
1243
aac_encoder_select="mdct sinewin"
 
1244
aac_latm_decoder_select="aac_decoder aac_latm_parser"
 
1245
ac3_decoder_select="mdct ac3dsp ac3_parser"
 
1246
ac3_encoder_select="mdct ac3dsp"
 
1247
ac3_fixed_encoder_select="mdct ac3dsp"
 
1248
alac_encoder_select="lpc"
 
1249
amrnb_decoder_select="lsp"
 
1250
amrwb_decoder_select="lsp"
 
1251
atrac1_decoder_select="mdct sinewin"
 
1252
atrac3_decoder_select="mdct"
 
1253
binkaudio_dct_decoder_select="mdct rdft dct sinewin"
 
1254
binkaudio_rdft_decoder_select="mdct rdft sinewin"
 
1255
cavs_decoder_select="golomb"
 
1256
cook_decoder_select="mdct sinewin"
 
1257
cscd_decoder_suggest="zlib"
 
1258
dca_decoder_select="mdct"
 
1259
dnxhd_encoder_select="aandct"
 
1260
dxa_decoder_select="zlib"
 
1261
eac3_decoder_select="ac3_decoder"
 
1262
eac3_encoder_select="mdct ac3dsp"
 
1263
eamad_decoder_select="aandct"
 
1264
eatgq_decoder_select="aandct"
 
1265
eatqi_decoder_select="aandct"
 
1266
ffv1_decoder_select="golomb"
 
1267
flac_decoder_select="golomb"
 
1268
flac_encoder_select="golomb lpc"
 
1269
flashsv_decoder_select="zlib"
 
1270
flashsv_encoder_select="zlib"
 
1271
flv_decoder_select="h263_decoder"
 
1272
flv_encoder_select="h263_encoder"
 
1273
fraps_decoder_select="huffman"
 
1274
h261_encoder_select="aandct"
 
1275
h263_decoder_select="h263_parser"
 
1276
h263_encoder_select="aandct"
 
1277
h263_vaapi_hwaccel_select="vaapi h263_decoder"
 
1278
h263i_decoder_select="h263_decoder"
 
1279
h263p_encoder_select="h263_encoder"
 
1280
h264_decoder_select="golomb h264dsp h264pred"
 
1281
h264_dxva2_hwaccel_deps="dxva2api_h"
 
1282
h264_dxva2_hwaccel_select="dxva2 h264_decoder"
 
1283
h264_vaapi_hwaccel_select="vaapi"
 
1284
h264_vdpau_decoder_select="vdpau h264_decoder"
 
1285
imc_decoder_select="fft mdct sinewin"
 
1286
jpegls_decoder_select="golomb"
 
1287
jpegls_encoder_select="golomb"
 
1288
ljpeg_encoder_select="aandct"
 
1289
loco_decoder_select="golomb"
 
1290
mjpeg_encoder_select="aandct"
 
1291
mlp_decoder_select="mlp_parser"
 
1292
mp1_decoder_select="mpegaudiodsp"
 
1293
mp2_decoder_select="mpegaudiodsp"
 
1294
mp3adu_decoder_select="mpegaudiodsp"
 
1295
mp3_decoder_select="mpegaudiodsp"
 
1296
mp3on4_decoder_select="mpegaudiodsp"
 
1297
mp1float_decoder_select="mpegaudiodsp"
 
1298
mp2float_decoder_select="mpegaudiodsp"
 
1299
mp3adufloat_decoder_select="mpegaudiodsp"
 
1300
mp3float_decoder_select="mpegaudiodsp"
 
1301
mp3on4float_decoder_select="mpegaudiodsp"
 
1302
mpeg1video_encoder_select="aandct"
 
1303
mpeg2video_encoder_select="aandct"
 
1304
mpeg4_decoder_select="h263_decoder mpeg4video_parser"
 
1305
mpeg4_encoder_select="h263_encoder"
 
1306
mpeg_vdpau_decoder_select="vdpau mpegvideo_decoder"
 
1307
mpeg1_vdpau_decoder_select="vdpau mpeg1video_decoder"
 
1308
mpeg2_dxva2_hwaccel_deps="dxva2api_h"
 
1309
mpeg2_dxva2_hwaccel_select="dxva2 mpeg2video_decoder"
 
1310
mpeg2_vaapi_hwaccel_select="vaapi mpeg2video_decoder"
 
1311
mpeg4_vaapi_hwaccel_select="vaapi mpeg4_decoder"
 
1312
mpeg4_vdpau_decoder_select="vdpau mpeg4_decoder"
 
1313
mpeg_xvmc_decoder_deps="X11_extensions_XvMClib_h"
 
1314
mpeg_xvmc_decoder_select="mpegvideo_decoder"
 
1315
msmpeg4v1_decoder_select="h263_decoder"
 
1316
msmpeg4v1_encoder_select="h263_encoder"
 
1317
msmpeg4v2_decoder_select="h263_decoder"
 
1318
msmpeg4v2_encoder_select="h263_encoder"
 
1319
msmpeg4v3_decoder_select="h263_decoder"
 
1320
msmpeg4v3_encoder_select="h263_encoder"
 
1321
nellymoser_decoder_select="mdct sinewin"
 
1322
nellymoser_encoder_select="mdct sinewin"
 
1323
png_decoder_select="zlib"
 
1324
png_encoder_select="zlib"
 
1325
qcelp_decoder_select="lsp"
 
1326
qdm2_decoder_select="mdct rdft mpegaudiodsp"
 
1327
ra_144_encoder_select="lpc"
 
1328
rv10_decoder_select="h263_decoder"
 
1329
rv10_encoder_select="h263_encoder"
 
1330
rv20_decoder_select="h263_decoder"
 
1331
rv20_encoder_select="h263_encoder"
 
1332
rv30_decoder_select="golomb h264pred"
 
1333
rv40_decoder_select="golomb h264pred"
 
1334
shorten_decoder_select="golomb"
 
1335
sipr_decoder_select="lsp"
 
1336
snow_decoder_select="dwt"
 
1337
snow_encoder_select="aandct dwt"
 
1338
svq1_encoder_select="aandct"
 
1339
svq3_decoder_select="golomb h264dsp h264pred"
 
1340
svq3_decoder_suggest="zlib"
 
1341
theora_decoder_select="vp3_decoder"
 
1342
tiff_decoder_suggest="zlib"
 
1343
tiff_encoder_suggest="zlib"
 
1344
truehd_decoder_select="mlp_decoder"
 
1345
tscc_decoder_select="zlib"
 
1346
twinvq_decoder_select="mdct lsp sinewin"
 
1347
vc1_decoder_select="h263_decoder"
 
1348
vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex"
 
1349
vc1_dxva2_hwaccel_select="dxva2 vc1_decoder"
 
1350
vc1_vaapi_hwaccel_select="vaapi vc1_decoder"
 
1351
vc1_vdpau_decoder_select="vdpau vc1_decoder"
 
1352
vorbis_decoder_select="mdct"
 
1353
vorbis_encoder_select="mdct"
 
1354
vp6_decoder_select="huffman"
 
1355
vp6a_decoder_select="vp6_decoder"
 
1356
vp6f_decoder_select="vp6_decoder"
 
1357
vp8_decoder_select="h264pred"
 
1358
wmapro_decoder_select="mdct sinewin"
 
1359
wmav1_decoder_select="mdct sinewin"
 
1360
wmav1_encoder_select="mdct sinewin"
 
1361
wmav2_decoder_select="mdct sinewin"
 
1362
wmav2_encoder_select="mdct sinewin"
 
1363
wmavoice_decoder_select="lsp rdft dct mdct sinewin"
 
1364
wmv1_decoder_select="h263_decoder"
 
1365
wmv1_encoder_select="h263_encoder"
 
1366
wmv2_decoder_select="h263_decoder"
 
1367
wmv2_encoder_select="h263_encoder"
 
1368
wmv3_decoder_select="vc1_decoder"
 
1369
wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
 
1370
wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
 
1371
wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
 
1372
zlib_decoder_select="zlib"
 
1373
zlib_encoder_select="zlib"
 
1374
zmbv_decoder_select="zlib"
 
1375
zmbv_encoder_select="zlib"
 
1376
 
 
1377
vaapi_deps="va_va_h"
 
1378
vdpau_deps="vdpau_vdpau_h vdpau_vdpau_x11_h"
 
1379
 
 
1380
# parsers
 
1381
h264_parser_select="golomb h264dsp h264pred"
 
1382
 
 
1383
# external libraries
 
1384
libdirac_decoder_deps="libdirac !libschroedinger"
 
1385
libdirac_encoder_deps="libdirac"
 
1386
libfaac_encoder_deps="libfaac"
 
1387
libgsm_decoder_deps="libgsm"
 
1388
libgsm_encoder_deps="libgsm"
 
1389
libgsm_ms_decoder_deps="libgsm"
 
1390
libgsm_ms_encoder_deps="libgsm"
 
1391
libmp3lame_encoder_deps="libmp3lame"
 
1392
libopencore_amrnb_decoder_deps="libopencore_amrnb"
 
1393
libopencore_amrnb_encoder_deps="libopencore_amrnb"
 
1394
libopencore_amrwb_decoder_deps="libopencore_amrwb"
 
1395
libopenjpeg_decoder_deps="libopenjpeg"
 
1396
libschroedinger_decoder_deps="libschroedinger"
 
1397
libschroedinger_encoder_deps="libschroedinger"
 
1398
libspeex_decoder_deps="libspeex"
 
1399
libtheora_encoder_deps="libtheora"
 
1400
libvo_aacenc_encoder_deps="libvo_aacenc"
 
1401
libvo_amrwbenc_encoder_deps="libvo_amrwbenc"
 
1402
libvorbis_encoder_deps="libvorbis"
 
1403
libvpx_decoder_deps="libvpx"
 
1404
libvpx_encoder_deps="libvpx"
 
1405
libx264_encoder_deps="libx264"
 
1406
libxavs_encoder_deps="libxavs"
 
1407
libxvid_encoder_deps="libxvid"
 
1408
 
 
1409
# demuxers / muxers
 
1410
ac3_demuxer_select="ac3_parser"
 
1411
asf_stream_muxer_select="asf_muxer"
 
1412
avisynth_demuxer_deps="avisynth"
 
1413
dirac_demuxer_select="dirac_parser"
 
1414
eac3_demuxer_select="ac3_parser"
 
1415
flac_demuxer_select="flac_parser"
 
1416
ipod_muxer_select="mov_muxer"
 
1417
libnut_demuxer_deps="libnut"
 
1418
libnut_muxer_deps="libnut"
 
1419
matroska_audio_muxer_select="matroska_muxer"
 
1420
matroska_demuxer_suggest="zlib bzlib"
 
1421
mov_demuxer_suggest="zlib"
 
1422
mp3_demuxer_select="mpegaudio_parser"
 
1423
mp4_muxer_select="mov_muxer"
 
1424
mpegtsraw_demuxer_select="mpegts_demuxer"
 
1425
mxf_d10_muxer_select="mxf_muxer"
 
1426
ogg_demuxer_select="golomb"
 
1427
psp_muxer_select="mov_muxer"
 
1428
rtp_demuxer_select="sdp_demuxer"
 
1429
rtpdec_select="asf_demuxer rm_demuxer rtp_protocol mpegts_demuxer mov_demuxer"
 
1430
rtsp_demuxer_select="http_protocol rtpdec"
 
1431
rtsp_muxer_select="rtp_muxer http_protocol rtp_protocol"
 
1432
sap_demuxer_select="sdp_demuxer"
 
1433
sap_muxer_select="rtp_muxer rtp_protocol"
 
1434
sdp_demuxer_select="rtpdec"
 
1435
spdif_muxer_select="aac_parser"
 
1436
tg2_muxer_select="mov_muxer"
 
1437
tgp_muxer_select="mov_muxer"
 
1438
w64_demuxer_deps="wav_demuxer"
 
1439
 
 
1440
# indevs / outdevs
 
1441
alsa_indev_deps="alsa_asoundlib_h snd_pcm_htimestamp"
 
1442
alsa_outdev_deps="alsa_asoundlib_h"
 
1443
bktr_indev_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
 
1444
dv1394_indev_deps="dv1394 dv_demuxer"
 
1445
fbdev_indev_deps="linux_fb_h"
 
1446
jack_indev_deps="jack_jack_h"
 
1447
libdc1394_indev_deps="libdc1394"
 
1448
oss_indev_deps_any="soundcard_h sys_soundcard_h"
 
1449
oss_outdev_deps_any="soundcard_h sys_soundcard_h"
 
1450
sndio_indev_deps="sndio_h"
 
1451
sndio_outdev_deps="sndio_h"
 
1452
v4l_indev_deps="linux_videodev_h"
 
1453
v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
 
1454
vfwcap_indev_deps="capCreateCaptureWindow vfwcap_defines"
 
1455
vfwcap_indev_extralibs="-lavicap32"
 
1456
x11_grab_device_indev_deps="x11grab XShmCreateImage"
 
1457
x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
 
1458
 
 
1459
# protocols
 
1460
gopher_protocol_deps="network"
 
1461
http_protocol_deps="network"
 
1462
http_protocol_select="tcp_protocol"
 
1463
mmsh_protocol_select="http_protocol"
 
1464
mmst_protocol_deps="network"
 
1465
rtmp_protocol_select="tcp_protocol"
 
1466
rtp_protocol_select="udp_protocol"
 
1467
tcp_protocol_deps="network"
 
1468
udp_protocol_deps="network"
 
1469
 
 
1470
# filters
 
1471
blackframe_filter_deps="gpl"
 
1472
cropdetect_filter_deps="gpl"
 
1473
drawtext_filter_deps="libfreetype"
 
1474
frei0r_filter_deps="frei0r dlopen strtok_r"
 
1475
frei0r_src_filter_deps="frei0r dlopen strtok_r"
 
1476
hqdn3d_filter_deps="gpl"
 
1477
ocv_filter_deps="libopencv"
 
1478
scale_filter_deps="swscale"
 
1479
yadif_filter_deps="gpl"
 
1480
 
 
1481
# libraries
 
1482
avdevice_deps="avcodec avformat"
 
1483
avformat_deps="avcodec"
 
1484
postproc_deps="gpl"
 
1485
 
 
1486
# programs
 
1487
ffmpeg_deps="avcodec avformat swscale"
 
1488
ffmpeg_select="buffer_filter"
 
1489
ffplay_deps="avcodec avformat swscale sdl"
 
1490
ffplay_select="rdft"
 
1491
ffprobe_deps="avcodec avformat"
 
1492
ffserver_deps="avformat ffm_muxer fork rtp_protocol rtsp_demuxer"
 
1493
ffserver_extralibs='$ldl'
 
1494
 
 
1495
doc_deps="texi2html"
 
1496
 
 
1497
# tests
 
1498
 
 
1499
test_deps(){
 
1500
    suf1=$1
 
1501
    suf2=$2
 
1502
    shift 2
 
1503
    for v; do
 
1504
        dep=${v%=*}
 
1505
        tests=${v#*=}
 
1506
        for name in ${tests}; do
 
1507
            eval ${name}_test_deps="'${dep}$suf1 ${dep}$suf2'"
 
1508
        done
 
1509
    done
 
1510
}
 
1511
 
 
1512
set_ne_test_deps(){
 
1513
    eval ${1}_be_test_deps="bigendian"
 
1514
    eval ${1}_le_test_deps="!bigendian"
 
1515
}
 
1516
 
 
1517
test_deps _encoder _decoder                                             \
 
1518
    adpcm_g726=g726                                                     \
 
1519
    adpcm_ima_qt                                                        \
 
1520
    adpcm_ima_wav                                                       \
 
1521
    adpcm_ms                                                            \
 
1522
    adpcm_swf                                                           \
 
1523
    adpcm_yamaha=adpcm_yam                                              \
 
1524
    alac                                                                \
 
1525
    asv1                                                                \
 
1526
    asv2                                                                \
 
1527
    bmp                                                                 \
 
1528
    dnxhd="dnxhd_1080i dnxhd_720p dnxhd_720p_rd"                        \
 
1529
    dvvideo="dv dv50"                                                   \
 
1530
    ffv1                                                                \
 
1531
    flac                                                                \
 
1532
    flashsv                                                             \
 
1533
    flv                                                                 \
 
1534
    gif                                                                 \
 
1535
    h261                                                                \
 
1536
    h263="h263 h263p"                                                   \
 
1537
    huffyuv                                                             \
 
1538
    jpegls                                                              \
 
1539
    mjpeg="jpg mjpeg ljpeg"                                             \
 
1540
    mp2                                                                 \
 
1541
    mpeg1video="mpeg mpeg1b"                                            \
 
1542
    mpeg2video="mpeg2 mpeg2thread"                                      \
 
1543
    mpeg4="mpeg4 mpeg4adv mpeg4nr mpeg4thread error rc"                 \
 
1544
    msmpeg4v3=msmpeg4                                                   \
 
1545
    msmpeg4v2                                                           \
 
1546
    pbm=pbmpipe                                                         \
 
1547
    pcx                                                                 \
 
1548
    pgm="pgm pgmpipe"                                                   \
 
1549
    png                                                                 \
 
1550
    ppm="ppm ppmpipe"                                                   \
 
1551
    rawvideo="rgb yuv"                                                  \
 
1552
    roq                                                                 \
 
1553
    rv10                                                                \
 
1554
    rv20                                                                \
 
1555
    sgi                                                                 \
 
1556
    snow="snow snowll"                                                  \
 
1557
    svq1                                                                \
 
1558
    targa=tga                                                           \
 
1559
    tiff                                                                \
 
1560
    wmav1                                                               \
 
1561
    wmav2                                                               \
 
1562
    wmv1                                                                \
 
1563
    wmv2                                                                \
 
1564
 
 
1565
test_deps _muxer _demuxer                                               \
 
1566
    aiff                                                                \
 
1567
    pcm_alaw=alaw                                                       \
 
1568
    asf                                                                 \
 
1569
    au                                                                  \
 
1570
    avi                                                                 \
 
1571
    dv=dv_fmt                                                           \
 
1572
    ffm                                                                 \
 
1573
    flv=flv_fmt                                                         \
 
1574
    gxf                                                                 \
 
1575
    matroska=mkv                                                        \
 
1576
    mmf                                                                 \
 
1577
    mov                                                                 \
 
1578
    pcm_mulaw=mulaw                                                     \
 
1579
    mxf                                                                 \
 
1580
    nut                                                                 \
 
1581
    ogg                                                                 \
 
1582
    rawvideo=pixfmt                                                     \
 
1583
    rm                                                                  \
 
1584
    swf                                                                 \
 
1585
    mpegts=ts                                                           \
 
1586
    voc                                                                 \
 
1587
    wav                                                                 \
 
1588
    yuv4mpegpipe=yuv4mpeg                                               \
 
1589
 
 
1590
ac3_fixed_test_deps="ac3_fixed_encoder ac3_decoder rm_muxer rm_demuxer"
 
1591
mpg_test_deps="mpeg1system_muxer mpegps_demuxer"
 
1592
 
 
1593
set_ne_test_deps pixdesc
 
1594
set_ne_test_deps pixfmts_copy
 
1595
set_ne_test_deps pixfmts_crop
 
1596
set_ne_test_deps pixfmts_hflip
 
1597
set_ne_test_deps pixfmts_null
 
1598
set_ne_test_deps pixfmts_pad
 
1599
set_ne_test_deps pixfmts_scale
 
1600
set_ne_test_deps pixfmts_vflip
 
1601
 
 
1602
# default parameters
 
1603
 
 
1604
logfile="config.log"
 
1605
 
 
1606
# installation paths
 
1607
prefix_default="/usr/local"
 
1608
bindir_default='${prefix}/bin'
 
1609
datadir_default='${prefix}/share/ffmpeg'
 
1610
incdir_default='${prefix}/include'
 
1611
libdir_default='${prefix}/lib'
 
1612
mandir_default='${prefix}/share/man'
 
1613
shlibdir_default="$libdir_default"
 
1614
 
 
1615
# toolchain
 
1616
ar_default="ar"
 
1617
cc_default="gcc"
 
1618
cc_version=\"unknown\"
 
1619
host_cc_default="gcc"
 
1620
ln_s="ln -sf"
 
1621
nm_default="nm"
 
1622
objformat="elf"
 
1623
pkg_config_default=pkg-config
 
1624
ranlib="ranlib"
 
1625
yasmexe="yasm"
 
1626
nogas=":"
 
1627
 
 
1628
nm_opts='-g'
 
1629
 
 
1630
# machine
 
1631
arch_default=$(uname -m)
 
1632
cpu="generic"
 
1633
 
 
1634
# OS
 
1635
target_os_default=$(tolower $(uname -s))
 
1636
host_os=$target_os_default
 
1637
 
 
1638
# configurable options
 
1639
enable avcodec
 
1640
enable avdevice
 
1641
enable avfilter
 
1642
enable avformat
 
1643
enable avutil
 
1644
enable asm
 
1645
enable debug
 
1646
enable doc
 
1647
enable fastdiv
 
1648
enable ffmpeg
 
1649
enable ffplay
 
1650
enable ffprobe
 
1651
enable ffserver
 
1652
enable network
 
1653
enable optimizations
 
1654
enable postproc
 
1655
enable protocols
 
1656
enable static
 
1657
enable swscale
 
1658
enable swscale_alpha
 
1659
 
 
1660
# build settings
 
1661
SHFLAGS='-shared -Wl,-soname,$$(@F)'
 
1662
FFSERVERLDFLAGS=-Wl,-E
 
1663
LIBPREF="lib"
 
1664
LIBSUF=".a"
 
1665
FULLNAME='$(NAME)$(BUILDSUF)'
 
1666
LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
 
1667
SLIBPREF="lib"
 
1668
SLIBSUF=".so"
 
1669
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
 
1670
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
 
1671
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
 
1672
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
 
1673
 
 
1674
CC_O='-o $@'
 
1675
 
 
1676
host_cflags='-D_ISOC99_SOURCE -O3 -g'
 
1677
host_libs='-lm'
 
1678
 
 
1679
target_path='$(CURDIR)'
 
1680
 
 
1681
# since the object filename is not given with the -MM flag, the compiler
 
1682
# is only able to print the basename, and we must add the path ourselves
 
1683
DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," > $(@:.o=.d)'
 
1684
DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -MM'
 
1685
 
 
1686
# find source path
 
1687
if test -f configure; then
 
1688
    source_path="$(pwd)"
 
1689
    disable source_path_used
 
1690
else
 
1691
    source_path=$(cd $(dirname "$0"); pwd)
 
1692
    enable source_path_used
 
1693
    echo "$source_path" | grep -q '[[:blank:]]' &&
 
1694
        die "Out of tree builds are impossible with whitespace in source path."
 
1695
    test -e "$source_path/config.h" &&
 
1696
        die "Out of tree builds are impossible with config.h in source dir."
 
1697
fi
 
1698
 
 
1699
for v in "$@"; do
 
1700
    r=${v#*=}
 
1701
    l=${v%"$r"}
 
1702
    r=$(sh_quote "$r")
 
1703
    LIBAV_CONFIGURATION="${LIBAV_CONFIGURATION# } ${l}${r}"
 
1704
done
 
1705
 
 
1706
find_things(){
 
1707
    thing=$1
 
1708
    pattern=$2
 
1709
    file=$source_path/$3
 
1710
    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
 
1711
}
 
1712
 
 
1713
ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
 
1714
DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
 
1715
HWACCEL_LIST=$(find_things  hwaccel  HWACCEL  libavcodec/allcodecs.c)
 
1716
PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
 
1717
BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
 
1718
MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
 
1719
DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
 
1720
OUTDEV_LIST=$(find_things   outdev   OUTDEV   libavdevice/alldevices.c)
 
1721
INDEV_LIST=$(find_things    indev    _IN      libavdevice/alldevices.c)
 
1722
PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
 
1723
FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
 
1724
 
 
1725
find_tests(){
 
1726
    map "echo ${2}\${v}_test" $(ls "$source_path"/tests/ref/$1 | grep -v '[^-a-z0-9_]')
 
1727
}
 
1728
 
 
1729
ACODEC_TESTS=$(find_tests acodec)
 
1730
VCODEC_TESTS=$(find_tests vsynth1)
 
1731
LAVF_TESTS=$(find_tests lavf)
 
1732
LAVFI_TESTS=$(find_tests lavfi)
 
1733
SEEK_TESTS=$(find_tests seek seek_)
 
1734
 
 
1735
pcm_test_deps=$(map 'echo ${v%_*}_decoder $v' $(filter pcm_* $ENCODER_LIST))
 
1736
 
 
1737
for n in $COMPONENT_LIST; do
 
1738
    v=$(toupper ${n%s})_LIST
 
1739
    eval enable \$$v
 
1740
    eval ${n}_if_any="\$$v"
 
1741
done
 
1742
 
 
1743
enable $ARCH_EXT_LIST $ACODEC_TESTS $VCODEC_TESTS $LAVF_TESTS $LAVFI_TESTS $SEEK_TESTS
 
1744
 
 
1745
die_unknown(){
 
1746
    echo "Unknown option \"$1\"."
 
1747
    echo "See $0 --help for available options."
 
1748
    exit 1
 
1749
}
 
1750
 
 
1751
show_list() {
 
1752
    suffix=_$1
 
1753
    shift
 
1754
    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort | pr -3 -t
 
1755
    exit 0
 
1756
}
 
1757
 
 
1758
for opt do
 
1759
    optval="${opt#*=}"
 
1760
    case "$opt" in
 
1761
    --extra-ldflags=*) add_ldflags $optval
 
1762
    ;;
 
1763
    --extra-libs=*) add_extralibs $optval
 
1764
    ;;
 
1765
    --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
 
1766
    ;;
 
1767
    --enable-debug=*) debuglevel="$optval"
 
1768
    ;;
 
1769
    --disable-everything)
 
1770
    map 'eval unset \${$(toupper ${v%s})_LIST}' $COMPONENT_LIST
 
1771
    ;;
 
1772
    --enable-*=*|--disable-*=*)
 
1773
    eval $(echo "${opt%%=*}" | sed 's/--/action=/;s/-/ thing=/')
 
1774
    is_in "${thing}s" $COMPONENT_LIST || die_unknown "$opt"
 
1775
    eval list=\$$(toupper $thing)_LIST
 
1776
    name=$(echo "${optval}" | sed "s/,/_${thing}|/g")_${thing}
 
1777
    $action $(filter "$name" $list)
 
1778
    ;;
 
1779
    --enable-?*|--disable-?*)
 
1780
    eval $(echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g')
 
1781
    if is_in $option $COMPONENT_LIST; then
 
1782
        test $action = disable && action=unset
 
1783
        eval $action \$$(toupper ${option%s})_LIST
 
1784
    elif is_in $option $CMDLINE_SELECT; then
 
1785
        $action $option
 
1786
    else
 
1787
        die_unknown $opt
 
1788
    fi
 
1789
    ;;
 
1790
    --list-*)
 
1791
        NAME="${opt#--list-}"
 
1792
        is_in $NAME $COMPONENT_LIST || die_unknown $opt
 
1793
        NAME=${NAME%s}
 
1794
        eval show_list $NAME \$$(toupper $NAME)_LIST
 
1795
    ;;
 
1796
    --help|-h) show_help
 
1797
    ;;
 
1798
    *)
 
1799
    optname="${opt%%=*}"
 
1800
    optname="${optname#--}"
 
1801
    optname=$(echo "$optname" | sed 's/-/_/g')
 
1802
    if is_in $optname $CMDLINE_SET; then
 
1803
        eval $optname='$optval'
 
1804
    elif is_in $optname $CMDLINE_APPEND; then
 
1805
        append $optname "$optval"
 
1806
    else
 
1807
         die_unknown $opt
 
1808
    fi
 
1809
    ;;
 
1810
    esac
 
1811
done
 
1812
 
 
1813
disabled logging && logfile=/dev/null
 
1814
 
 
1815
echo "# $0 $LIBAV_CONFIGURATION" > $logfile
 
1816
set >> $logfile
 
1817
 
 
1818
test -n "$cross_prefix" && enable cross_compile
 
1819
 
 
1820
if enabled cross_compile; then
 
1821
    test -n "$arch" && test -n "$target_os" ||
 
1822
        die "Must specify target arch and OS when cross-compiling"
 
1823
fi
 
1824
 
 
1825
set_default arch target_os
 
1826
 
 
1827
ar_default="${cross_prefix}${ar_default}"
 
1828
cc_default="${cross_prefix}${cc_default}"
 
1829
nm_default="${cross_prefix}${nm_default}"
 
1830
pkg_config_default="${cross_prefix}${pkg_config_default}"
 
1831
ranlib="${cross_prefix}${ranlib}"
 
1832
 
 
1833
sysinclude_default="${sysroot}/usr/include"
 
1834
 
 
1835
set_default cc nm pkg_config sysinclude
 
1836
enabled cross_compile || host_cc_default=$cc
 
1837
set_default host_cc
 
1838
 
 
1839
if ! $pkg_config --version >/dev/null 2>&1; then
 
1840
    warn "$pkg_config not found, library detection may fail."
 
1841
    pkg_config=false
 
1842
fi
 
1843
 
 
1844
exesuf() {
 
1845
    case $1 in
 
1846
        mingw32*|cygwin*|*-dos|freedos|opendos|os/2*|symbian) echo .exe ;;
 
1847
    esac
 
1848
}
 
1849
 
 
1850
EXESUF=$(exesuf $target_os)
 
1851
HOSTEXESUF=$(exesuf $host_os)
 
1852
 
 
1853
# set temporary file name
 
1854
: ${TMPDIR:=$TEMPDIR}
 
1855
: ${TMPDIR:=$TMP}
 
1856
: ${TMPDIR:=/tmp}
 
1857
 
 
1858
if ! check_cmd mktemp -u XXXXXX; then
 
1859
    # simple replacement for missing mktemp
 
1860
    # NOT SAFE FOR GENERAL USE
 
1861
    mktemp(){
 
1862
        echo "${2%%XXX*}.${HOSTNAME}.${UID}.$$"
 
1863
    }
 
1864
fi
 
1865
 
 
1866
tmpfile(){
 
1867
    tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
 
1868
        (set -C; exec > $tmp) 2>/dev/null ||
 
1869
        die "Unable to create temporary file in $TMPDIR."
 
1870
    append TMPFILES $tmp
 
1871
    eval $1=$tmp
 
1872
}
 
1873
 
 
1874
trap 'rm -f -- $TMPFILES' EXIT
 
1875
 
 
1876
tmpfile TMPC  .c
 
1877
tmpfile TMPE  $EXESUF
 
1878
tmpfile TMPH  .h
 
1879
tmpfile TMPO  .o
 
1880
tmpfile TMPS  .S
 
1881
tmpfile TMPV  .ver
 
1882
tmpfile TMPSH .sh
 
1883
tmpfile TMPASM .asm
 
1884
 
 
1885
unset -f mktemp
 
1886
 
 
1887
chmod +x $TMPE
 
1888
 
 
1889
# make sure we can execute files in $TMPDIR
 
1890
cat > $TMPSH 2>> $logfile <<EOF
 
1891
#! /bin/sh
 
1892
EOF
 
1893
chmod +x $TMPSH >> $logfile 2>&1
 
1894
if ! $TMPSH >> $logfile 2>&1; then
 
1895
    cat <<EOF
 
1896
Unable to create and execute files in $TMPDIR.  Set the TMPDIR environment
 
1897
variable to another directory and make sure that it is not mounted noexec.
 
1898
EOF
 
1899
    die "Sanity test failed."
 
1900
fi
 
1901
 
 
1902
filter_cflags=echo
 
1903
filter_cppflags=echo
 
1904
filter_asflags=echo
 
1905
 
 
1906
if   $cc -v 2>&1 | grep -q '^gcc.*LLVM'; then
 
1907
    cc_type=llvm_gcc
 
1908
    cc_version=__VERSION__
 
1909
    gcc_extra_ver=$(expr "$($cc --version | head -n1)" : '.*\((.*)\)')
 
1910
    cc_ident="llvm-gcc $($cc -dumpversion) $gcc_extra_ver"
 
1911
    CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
 
1912
    AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
 
1913
    speed_cflags='-O3'
 
1914
    size_cflags='-Os'
 
1915
elif $cc -v 2>&1 | grep -qi ^gcc; then
 
1916
    cc_type=gcc
 
1917
    cc_version=__VERSION__
 
1918
    gcc_version=$($cc --version | head -n1)
 
1919
    gcc_basever=$($cc -dumpversion)
 
1920
    gcc_pkg_ver=$(expr "$gcc_version" : '[^ ]* \(([^)]*)\)')
 
1921
    gcc_ext_ver=$(expr "$gcc_version" : ".*$gcc_pkg_ver $gcc_basever \\(.*\\)")
 
1922
    cc_ident=$(cleanws "gcc $gcc_basever $gcc_pkg_ver $gcc_ext_ver")
 
1923
    if ! $cc -dumpversion | grep -q '^2\.'; then
 
1924
        CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
 
1925
        AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
 
1926
    fi
 
1927
    speed_cflags='-O3'
 
1928
    size_cflags='-Os'
 
1929
elif $cc --version 2>/dev/null | grep -q Intel; then
 
1930
    cc_type=icc
 
1931
    cc_version="AV_STRINGIFY(__INTEL_COMPILER)"
 
1932
    cc_ident=$($cc --version | head -n1)
 
1933
    icc_version=$($cc -dumpversion)
 
1934
    CC_DEPFLAGS='-MMD'
 
1935
    AS_DEPFLAGS='-MMD'
 
1936
    speed_cflags='-O3'
 
1937
    size_cflags='-Os'
 
1938
    noopt_cflags='-O1'
 
1939
elif $cc -v 2>&1 | grep -q xlc; then
 
1940
    cc_type=xlc
 
1941
    cc_version="AV_STRINGIFY(__IBMC__)"
 
1942
    cc_ident=$($cc -qversion 2>/dev/null | head -n1)
 
1943
    speed_cflags='-O5'
 
1944
    size_cflags='-O5 -qcompact'
 
1945
elif $cc -V 2>/dev/null | grep -q Compaq; then
 
1946
    cc_type=ccc
 
1947
    cc_version="AV_STRINGIFY(__DECC_VER)"
 
1948
    cc_ident=$($cc -V | head -n1 | cut -d' ' -f1-3)
 
1949
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -M'
 
1950
    debuglevel=3
 
1951
    add_ldflags -Wl,-z,now # calls to libots crash without this
 
1952
    speed_cflags='-fast'
 
1953
    size_cflags='-O1'
 
1954
elif $cc --vsn 2>/dev/null | grep -q "ARM C/C++ Compiler"; then
 
1955
    test -d "$sysroot" || die "No valid sysroot specified."
 
1956
    cc_type=armcc
 
1957
    cc_version="AV_STRINGIFY(__ARMCC_VERSION)"
 
1958
    cc_ident=$($cc --vsn | head -n1)
 
1959
    armcc_conf="$PWD/armcc.conf"
 
1960
    $cc --arm_linux_configure                 \
 
1961
        --arm_linux_config_file="$armcc_conf" \
 
1962
        --configure_sysroot="$sysroot"        \
 
1963
        --configure_cpp_headers="$sysinclude" >>$logfile 2>&1 ||
 
1964
        die "Error creating armcc configuration file."
 
1965
    $cc --vsn | grep -q RVCT && armcc_opt=rvct || armcc_opt=armcc
 
1966
    cc="$cc --arm_linux_config_file=$armcc_conf --translate_gcc"
 
1967
    as_default="${cross_prefix}gcc"
 
1968
    CC_DEPFLAGS='-MMD'
 
1969
    AS_DEPFLAGS='-MMD'
 
1970
    speed_cflags='-O3'
 
1971
    size_cflags='-Os'
 
1972
    filter_asflags="filter_out -W${armcc_opt}*"
 
1973
elif $cc -version 2>/dev/null | grep -q TMS470; then
 
1974
    cc_type=tms470
 
1975
    cc_version="AV_STRINGIFY(__TI_COMPILER_VERSION__)"
 
1976
    cc_ident=$($cc -version | head -n1 | tr -s ' ')
 
1977
    cc="$cc --gcc --abi=eabi -eo=.o -mc -me"
 
1978
    CC_O='-fr=$(@D)'
 
1979
    as_default="${cross_prefix}gcc"
 
1980
    ld_default="${cross_prefix}gcc"
 
1981
    TMPO=$(basename $TMPC .c).o
 
1982
    append TMPFILES $TMPO
 
1983
    add_cflags -D__gnuc_va_list=va_list -D__USER_LABEL_PREFIX__=
 
1984
    CC_DEPFLAGS='-ppa -ppd=$(@:.o=.d)'
 
1985
    AS_DEPFLAGS='-MMD'
 
1986
    speed_cflags='-O3 -mf=5'
 
1987
    size_cflags='-O3 -mf=2'
 
1988
    filter_cflags=tms470_flags
 
1989
    tms470_flags(){
 
1990
        for flag; do
 
1991
            case $flag in
 
1992
                -march=*|-mcpu=*)
 
1993
                    case "${flag#*=}" in
 
1994
                        armv7-a|cortex-a*)      echo -mv=7a8 ;;
 
1995
                        armv7-r|cortex-r*)      echo -mv=7r4 ;;
 
1996
                        armv7-m|cortex-m*)      echo -mv=7m3 ;;
 
1997
                        armv6*|arm11*)          echo -mv=6   ;;
 
1998
                        armv5*e|arm[79]*e*|arm9[24]6*|arm96*|arm102[26])
 
1999
                                                echo -mv=5e  ;;
 
2000
                        armv4*|arm7*|arm9[24]*) echo -mv=4   ;;
 
2001
                    esac
 
2002
                    ;;
 
2003
                -mfpu=neon)     echo --float_support=vfpv3 --neon ;;
 
2004
                -mfpu=vfp)      echo --float_support=vfpv2        ;;
 
2005
                -mfpu=vfpv3)    echo --float_support=vfpv3        ;;
 
2006
                -msoft-float)   echo --float_support=vfplib       ;;
 
2007
                -O[0-3]|-mf=*)  echo $flag                        ;;
 
2008
                -g)             echo -g -mn                       ;;
 
2009
                -pds=*)         echo $flag                        ;;
 
2010
            esac
 
2011
        done
 
2012
    }
 
2013
elif $cc -v 2>&1 | grep -q clang; then
 
2014
    cc_type=clang
 
2015
    $cc -dM -E $TMPC | grep -q __clang_version__ &&
 
2016
        cc_version=__clang_version__ || cc_version=__VERSION__
 
2017
    cc_ident=$($cc --version | head -n1)
 
2018
    CC_DEPFLAGS='-MMD'
 
2019
    AS_DEPFLAGS='-MMD'
 
2020
    speed_cflags='-O3'
 
2021
    size_cflags='-Os'
 
2022
elif $cc -V 2>&1 | grep -q Sun; then
 
2023
    cc_type=suncc
 
2024
    cc_version="AV_STRINGIFY(__SUNPRO_C)"
 
2025
    cc_ident=$($cc -V 2>&1 | head -n1 | cut -d' ' -f 2-)
 
2026
    DEPEND_CMD='$(DEPCC) $(DEPFLAGS) $< | sed -e "1s,^.*: ,$@: ," -e "\$$!s,\$$, \\\," -e "1!s,^.*: , ," > $(@:.o=.d)'
 
2027
    DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -xM1'
 
2028
    speed_cflags='-O5'
 
2029
    size_cflags='-O5 -xspace'
 
2030
    filter_cflags=suncc_flags
 
2031
    suncc_flags(){
 
2032
        for flag; do
 
2033
            case $flag in
 
2034
                -march=*|-mcpu=*)
 
2035
                    case "${flag#*=}" in
 
2036
                        native)                   echo -xtarget=native       ;;
 
2037
                        v9|niagara)               echo -xarch=sparc          ;;
 
2038
                        ultrasparc)               echo -xarch=sparcvis       ;;
 
2039
                        ultrasparc3|niagara2)     echo -xarch=sparcvis2      ;;
 
2040
                        i586|pentium)             echo -xchip=pentium        ;;
 
2041
                        i686|pentiumpro|pentium2) echo -xtarget=pentium_pro  ;;
 
2042
                        pentium3*|c3-2)           echo -xtarget=pentium3     ;;
 
2043
                        pentium-m)          echo -xarch=sse2 -xchip=pentium3 ;;
 
2044
                        pentium4*)          echo -xtarget=pentium4           ;;
 
2045
                        prescott|nocona)    echo -xarch=sse3 -xchip=pentium4 ;;
 
2046
                        *-sse3)             echo -xarch=sse3                 ;;
 
2047
                        core2)              echo -xarch=ssse3 -xchip=core2   ;;
 
2048
                        amdfam10|barcelona)       echo -xarch=sse4_1         ;;
 
2049
                        athlon-4|athlon-[mx]p)    echo -xarch=ssea           ;;
 
2050
                        k8|opteron|athlon64|athlon-fx)
 
2051
                                                  echo -xarch=sse2a          ;;
 
2052
                        athlon*)                  echo -xarch=pentium_proa   ;;
 
2053
                    esac
 
2054
                    ;;
 
2055
                -std=c99)             echo -xc99              ;;
 
2056
                -fomit-frame-pointer) echo -xregs=frameptr    ;;
 
2057
                -fPIC)                echo -KPIC -xcode=pic32 ;;
 
2058
                -W*,*)                echo $flag              ;;
 
2059
                -f*-*|-W*)                                    ;;
 
2060
                *)                    echo $flag              ;;
 
2061
            esac
 
2062
        done
 
2063
    }
 
2064
elif $cc -v 2>&1 | grep -q 'PathScale\|Path64'; then
 
2065
    cc_type=pathscale
 
2066
    cc_version=__PATHSCALE__
 
2067
    cc_ident=$($cc -v 2>&1 | head -n1 | tr -d :)
 
2068
    CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
 
2069
    AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
 
2070
    speed_cflags='-O2'
 
2071
    size_cflags='-Os'
 
2072
    filter_cflags='filter_out -Wdisabled-optimization'
 
2073
elif $cc -v 2>&1 | grep -q Open64; then
 
2074
    cc_type=open64
 
2075
    cc_version=__OPEN64__
 
2076
    cc_ident=$($cc -v 2>&1 | head -n1 | tr -d :)
 
2077
    CC_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
 
2078
    AS_DEPFLAGS='-MMD -MF $(@:.o=.d) -MT $@'
 
2079
    speed_cflags='-O2'
 
2080
    size_cflags='-Os'
 
2081
    filter_cflags='filter_out -Wdisabled-optimization|-Wtype-limits|-fno-signed-zeros'
 
2082
fi
 
2083
 
 
2084
test -n "$cc_type" && enable $cc_type ||
 
2085
    warn "Unknown C compiler $cc, unable to select optimal CFLAGS"
 
2086
 
 
2087
: ${as_default:=$cc}
 
2088
: ${dep_cc_default:=$cc}
 
2089
: ${ld_default:=$cc}
 
2090
set_default ar as dep_cc ld
 
2091
 
 
2092
test -n "$CC_DEPFLAGS" || CCDEP=$DEPEND_CMD
 
2093
test -n "$AS_DEPFLAGS" || ASDEP=$DEPEND_CMD
 
2094
 
 
2095
add_cflags $extra_cflags
 
2096
add_asflags $extra_cflags
 
2097
 
 
2098
if test -n "$sysroot"; then
 
2099
    case "$cc_type" in
 
2100
        gcc|llvm_gcc|clang)
 
2101
            add_cppflags --sysroot="$sysroot"
 
2102
            add_ldflags --sysroot="$sysroot"
 
2103
        ;;
 
2104
        tms470)
 
2105
            add_cppflags -I"$sysinclude"
 
2106
            add_ldflags  --sysroot="$sysroot"
 
2107
        ;;
 
2108
    esac
 
2109
fi
 
2110
 
 
2111
if test "$cpu" = host; then
 
2112
    enabled cross_compile && die "--cpu=host makes no sense when cross-compiling."
 
2113
 
 
2114
    case "$cc_type" in
 
2115
        gcc|llvm_gcc)
 
2116
            check_native(){
 
2117
                $cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
 
2118
                sed -n "/$1=/{
 
2119
                            s/.*$1=\\([^ ]*\\).*/\\1/
 
2120
                            p
 
2121
                            q
 
2122
                        }" $TMPE
 
2123
            }
 
2124
            cpu=$(check_native -march || check_native -mcpu)
 
2125
        ;;
 
2126
    esac
 
2127
 
 
2128
    test "${cpu:-host}" = host && die "--cpu=host not supported with compiler $cc"
 
2129
fi
 
2130
 
 
2131
# Deal with common $arch aliases
 
2132
case "$arch" in
 
2133
    arm*)
 
2134
        arch="arm"
 
2135
    ;;
 
2136
    mips|mipsel|IP*)
 
2137
        arch="mips"
 
2138
    ;;
 
2139
    mips64*)
 
2140
        arch="mips"
 
2141
        subarch="mips64"
 
2142
    ;;
 
2143
    parisc|hppa)
 
2144
        arch="parisc"
 
2145
    ;;
 
2146
    parisc64|hppa64)
 
2147
        arch="parisc"
 
2148
        subarch="parisc64"
 
2149
    ;;
 
2150
    "Power Macintosh"|ppc|powerpc)
 
2151
        arch="ppc"
 
2152
    ;;
 
2153
    ppc64|powerpc64)
 
2154
        arch="ppc"
 
2155
        subarch="ppc64"
 
2156
    ;;
 
2157
    s390|s390x)
 
2158
        arch="s390"
 
2159
    ;;
 
2160
    sh4|sh)
 
2161
        arch="sh4"
 
2162
    ;;
 
2163
    sun4u|sparc64)
 
2164
        arch="sparc"
 
2165
        subarch="sparc64"
 
2166
    ;;
 
2167
    i[3-6]86|i86pc|BePC|x86pc|x86_64|amd64)
 
2168
        arch="x86"
 
2169
    ;;
 
2170
esac
 
2171
 
 
2172
is_in $arch $ARCH_LIST || warn "unknown architecture $arch"
 
2173
enable $arch
 
2174
 
 
2175
# Add processor-specific flags
 
2176
if test "$cpu" = generic; then
 
2177
    : do nothing
 
2178
elif enabled ppc; then
 
2179
 
 
2180
    case $(tolower $cpu) in
 
2181
        601|ppc601|powerpc601)
 
2182
            cpuflags="-mcpu=601"
 
2183
            disable altivec
 
2184
        ;;
 
2185
        603*|ppc603*|powerpc603*)
 
2186
            cpuflags="-mcpu=603"
 
2187
            disable altivec
 
2188
        ;;
 
2189
        604*|ppc604*|powerpc604*)
 
2190
            cpuflags="-mcpu=604"
 
2191
            disable altivec
 
2192
        ;;
 
2193
        g3|75*|ppc75*|powerpc75*)
 
2194
            cpuflags="-mcpu=750 -mpowerpc-gfxopt"
 
2195
            disable altivec
 
2196
        ;;
 
2197
        g4|745*|ppc745*|powerpc745*)
 
2198
            cpuflags="-mcpu=7450 -mpowerpc-gfxopt"
 
2199
        ;;
 
2200
        74*|ppc74*|powerpc74*)
 
2201
            cpuflags="-mcpu=7400 -mpowerpc-gfxopt"
 
2202
        ;;
 
2203
        g5|970|ppc970|powerpc970|power4*)
 
2204
            cpuflags="-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
 
2205
        ;;
 
2206
        cell)
 
2207
            cpuflags="-mcpu=cell"
 
2208
            enable ldbrx
 
2209
        ;;
 
2210
        e500v2)
 
2211
            cpuflags="-mcpu=8548 -mhard-float -mfloat-gprs=double"
 
2212
            disable altivec
 
2213
        ;;
 
2214
        e500)
 
2215
            cpuflags="-mcpu=8540 -mhard-float"
 
2216
            disable altivec
 
2217
        ;;
 
2218
    esac
 
2219
 
 
2220
elif enabled x86; then
 
2221
 
 
2222
    case $cpu in
 
2223
        i[345]86|pentium)
 
2224
            cpuflags="-march=$cpu"
 
2225
            disable mmx
 
2226
        ;;
 
2227
        # targets that do NOT support conditional mov (cmov)
 
2228
        pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
 
2229
            cpuflags="-march=$cpu"
 
2230
            disable cmov
 
2231
        ;;
 
2232
        # targets that do support conditional mov (cmov)
 
2233
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|amdfam10|barcelona|atom)
 
2234
            cpuflags="-march=$cpu"
 
2235
            enable cmov
 
2236
            enable fast_cmov
 
2237
        ;;
 
2238
        # targets that do support conditional mov but on which it's slow
 
2239
        pentium4|pentium4m|prescott|nocona)
 
2240
            cpuflags="-march=$cpu"
 
2241
            enable cmov
 
2242
            disable fast_cmov
 
2243
        ;;
 
2244
    esac
 
2245
 
 
2246
elif enabled sparc; then
 
2247
 
 
2248
    case $cpu in
 
2249
        niagara)
 
2250
            cpuflags="-mcpu=$cpu"
 
2251
            disable vis
 
2252
        ;;
 
2253
        sparc64)
 
2254
            cpuflags="-mcpu=v9"
 
2255
        ;;
 
2256
    esac
 
2257
 
 
2258
elif enabled arm; then
 
2259
 
 
2260
    case $cpu in
 
2261
        armv*)
 
2262
            cpuflags="-march=$cpu"
 
2263
            subarch=$(echo $cpu | sed 's/[^a-z0-9]//g')
 
2264
        ;;
 
2265
        *)
 
2266
            cpuflags="-mcpu=$cpu"
 
2267
            case $cpu in
 
2268
                cortex-a*)                               subarch=armv7a  ;;
 
2269
                cortex-r*)                               subarch=armv7r  ;;
 
2270
                cortex-m*)                               subarch=armv7m  ;;
 
2271
                arm11*)                                  subarch=armv6   ;;
 
2272
                arm[79]*e*|arm9[24]6*|arm96*|arm102[26]) subarch=armv5te ;;
 
2273
                armv4*|arm7*|arm9[24]*)                  subarch=armv4   ;;
 
2274
            esac
 
2275
        ;;
 
2276
    esac
 
2277
 
 
2278
elif enabled alpha; then
 
2279
 
 
2280
    enabled ccc && cpuflags="-arch $cpu" || cpuflags="-mcpu=$cpu"
 
2281
 
 
2282
elif enabled bfin; then
 
2283
 
 
2284
    cpuflags="-mcpu=$cpu"
 
2285
 
 
2286
elif enabled mips; then
 
2287
 
 
2288
    cpuflags="-march=$cpu"
 
2289
 
 
2290
elif enabled avr32; then
 
2291
 
 
2292
    case $cpu in
 
2293
        ap7[02]0[0-2])
 
2294
            subarch="avr32_ap"
 
2295
            cpuflags="-mpart=$cpu"
 
2296
        ;;
 
2297
        ap)
 
2298
            subarch="avr32_ap"
 
2299
            cpuflags="-march=$cpu"
 
2300
        ;;
 
2301
        uc3[ab]*)
 
2302
            subarch="avr32_uc"
 
2303
            cpuflags="-mcpu=$cpu"
 
2304
        ;;
 
2305
        uc)
 
2306
            subarch="avr32_uc"
 
2307
            cpuflags="-march=$cpu"
 
2308
        ;;
 
2309
    esac
 
2310
 
 
2311
fi
 
2312
 
 
2313
add_cflags $cpuflags
 
2314
add_asflags $cpuflags
 
2315
 
 
2316
# compiler sanity check
 
2317
check_exec <<EOF
 
2318
int main(void){ return 0; }
 
2319
EOF
 
2320
if test "$?" != 0; then
 
2321
    echo "$cc is unable to create an executable file."
 
2322
    if test -z "$cross_prefix" && ! enabled cross_compile ; then
 
2323
        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
 
2324
        echo "Only do this if you know what cross compiling means."
 
2325
    fi
 
2326
    die "C compiler test failed."
 
2327
fi
 
2328
 
 
2329
add_cppflags -D_ISOC99_SOURCE
 
2330
check_cflags -std=c99
 
2331
check_cc -D_FILE_OFFSET_BITS=64 <<EOF && add_cppflags -D_FILE_OFFSET_BITS=64
 
2332
#include <stdlib.h>
 
2333
EOF
 
2334
check_cc -D_LARGEFILE_SOURCE <<EOF && add_cppflags -D_LARGEFILE_SOURCE
 
2335
#include <stdlib.h>
 
2336
EOF
 
2337
 
 
2338
check_host_cflags -std=c99
 
2339
check_host_cflags -Wall
 
2340
 
 
2341
case "$arch" in
 
2342
    alpha|ia64|mips|parisc|sparc)
 
2343
        spic=$shared
 
2344
    ;;
 
2345
    x86)
 
2346
        subarch="x86_32"
 
2347
        check_cc <<EOF && subarch="x86_64"
 
2348
        int test[(int)sizeof(char*) - 7];
 
2349
EOF
 
2350
        if test "$subarch" = "x86_64"; then
 
2351
            spic=$shared
 
2352
        fi
 
2353
    ;;
 
2354
esac
 
2355
 
 
2356
enable $subarch
 
2357
enabled spic && enable pic
 
2358
 
 
2359
# OS specific
 
2360
case $target_os in
 
2361
    haiku)
 
2362
        prefix_default="/boot/common"
 
2363
        network_extralibs="-lnetwork"
 
2364
        host_libs=
 
2365
        ;;
 
2366
    sunos)
 
2367
        FFSERVERLDFLAGS=""
 
2368
        SHFLAGS='-shared -Wl,-h,$$(@F)'
 
2369
        enabled x86 && SHFLAGS="-mimpure-text $SHFLAGS"
 
2370
        network_extralibs="-lsocket -lnsl"
 
2371
        add_cppflags -D__EXTENSIONS__
 
2372
        nm_opts='-P -g'
 
2373
        ;;
 
2374
    netbsd)
 
2375
        disable symver
 
2376
        oss_indev_extralibs="-lossaudio"
 
2377
        oss_outdev_extralibs="-lossaudio"
 
2378
        ;;
 
2379
    openbsd)
 
2380
        enable malloc_aligned
 
2381
        # On OpenBSD 4.5. the compiler does not use PIC unless
 
2382
        # explicitly using -fPIC. Libav builds fine without PIC,
 
2383
        # however the generated executable will not do anything
 
2384
        # (simply quits with exit-code 1, no crash, no output).
 
2385
        # Thus explicitly enable PIC here.
 
2386
        enable pic
 
2387
        disable symver
 
2388
        SHFLAGS='-shared'
 
2389
        oss_indev_extralibs="-lossaudio"
 
2390
        oss_outdev_extralibs="-lossaudio"
 
2391
        ;;
 
2392
    dragonfly)
 
2393
        enable malloc_aligned
 
2394
        disable symver
 
2395
        ;;
 
2396
    freebsd)
 
2397
        enable malloc_aligned
 
2398
        ;;
 
2399
    bsd/os)
 
2400
        add_extralibs -lpoll -lgnugetopt
 
2401
        ;;
 
2402
    darwin)
 
2403
        enable malloc_aligned
 
2404
        gas="gas-preprocessor.pl $cc"
 
2405
        enabled ppc && add_asflags -force_cpusubtype_ALL
 
2406
        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR)'
 
2407
        enabled x86_32 && append SHFLAGS -Wl,-read_only_relocs,suppress
 
2408
        add_ldflags -Wl,-dynamic,-search_paths_first
 
2409
        SLIBSUF=".dylib"
 
2410
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
 
2411
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
 
2412
        FFSERVERLDFLAGS=-Wl,-bind_at_load
 
2413
        objformat="macho"
 
2414
        enabled x86_64 && objformat="macho64"
 
2415
        enabled_any pic shared ||
 
2416
            { check_cflags -mdynamic-no-pic && add_asflags -mdynamic-no-pic; }
 
2417
        ;;
 
2418
    mingw32*)
 
2419
        if test $target_os = "mingw32ce"; then
 
2420
            disable network
 
2421
        else
 
2422
            target_os=mingw32
 
2423
        fi
 
2424
        LIBTARGET=i386
 
2425
        if enabled x86_64; then
 
2426
            enable malloc_aligned
 
2427
            LIBTARGET="i386:x86-64"
 
2428
        elif enabled arm; then
 
2429
            LIBTARGET=arm-wince
 
2430
        fi
 
2431
        shlibdir_default="$bindir_default"
 
2432
        SLIBPREF=""
 
2433
        SLIBSUF=".dll"
 
2434
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
 
2435
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
 
2436
        SLIB_EXTRA_CMD=-'$(DLLTOOL) -m $(LIBTARGET) -d $$(@:$(SLIBSUF)=.def) -l $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) -D $(SLIBNAME_WITH_MAJOR)'
 
2437
        SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
 
2438
            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"; \
 
2439
            install -d "$(LIBDIR)"; \
 
2440
            install -m 644 $(SUBDIR)lib$(SLIBNAME:$(SLIBSUF)=.dll.a) "$(LIBDIR)/lib$(SLIBNAME:$(SLIBSUF)=.dll.a)"'
 
2441
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
 
2442
        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'
 
2443
        objformat="win32"
 
2444
        dlltool="${cross_prefix}dlltool"
 
2445
        enable dos_paths
 
2446
        check_cflags -fno-common
 
2447
        check_cpp_condition _mingw.h "defined (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION > 3) \
 
2448
                                      || (__MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION >= 15)" ||
 
2449
                die "ERROR: MinGW runtime version must be >= 3.15."
 
2450
        add_cppflags -U__STRICT_ANSI__
 
2451
        ;;
 
2452
    cygwin*)
 
2453
        target_os=cygwin
 
2454
        shlibdir_default="$bindir_default"
 
2455
        SLIBPREF="cyg"
 
2456
        SLIBSUF=".dll"
 
2457
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
 
2458
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
 
2459
        SHFLAGS='-shared -Wl,--enable-auto-image-base'
 
2460
        objformat="win32"
 
2461
        enable dos_paths
 
2462
        check_cflags -fno-common
 
2463
        add_cppflags -U__STRICT_ANSI__
 
2464
        ;;
 
2465
    *-dos|freedos|opendos)
 
2466
        network_extralibs="-lsocket"
 
2467
        objformat="coff"
 
2468
        enable dos_paths
 
2469
        add_cppflags -U__STRICT_ANSI__
 
2470
        ;;
 
2471
    linux)
 
2472
        add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600
 
2473
        enable dv1394
 
2474
        ;;
 
2475
    irix*)
 
2476
        target_os=irix
 
2477
        ranlib="echo ignoring ranlib"
 
2478
        ;;
 
2479
    os/2*)
 
2480
        ln_s="cp -f"
 
2481
        objformat="aout"
 
2482
        add_cppflags -D_GNU_SOURCE
 
2483
        add_ldflags -Zomf -Zbin-files -Zargs-wild -Zmap
 
2484
        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
 
2485
        FFSERVERLDFLAGS=""
 
2486
        LIBSUF="_s.a"
 
2487
        SLIBPREF=""
 
2488
        SLIBSUF=".dll"
 
2489
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
 
2490
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
 
2491
        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
 
2492
          echo PROTMODE >> $(SUBDIR)$(NAME).def; \
 
2493
          echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
 
2494
          echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
 
2495
          echo EXPORTS >> $(SUBDIR)$(NAME).def; \
 
2496
          emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
 
2497
        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
 
2498
          emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
 
2499
        SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
 
2500
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
 
2501
        enable dos_paths
 
2502
        ;;
 
2503
    gnu/kfreebsd)
 
2504
        add_cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -D_BSD_SOURCE
 
2505
        ;;
 
2506
    gnu)
 
2507
        ;;
 
2508
    qnx)
 
2509
        add_cppflags -D_QNX_SOURCE
 
2510
        network_extralibs="-lsocket"
 
2511
        ;;
 
2512
    symbian)
 
2513
        SLIBSUF=".dll"
 
2514
        enable dos_paths
 
2515
        add_cflags --include=$sysinclude/gcce/gcce.h
 
2516
        ;;
 
2517
    none)
 
2518
        ;;
 
2519
    *)
 
2520
        die "Unknown OS '$target_os'."
 
2521
        ;;
 
2522
esac
 
2523
 
 
2524
echo "config:$arch:$subarch:$cpu:$target_os:$cc_ident:$LIBAV_CONFIGURATION" >config.fate
 
2525
 
 
2526
check_cpp_condition stdlib.h "defined(__PIC__) || defined(__pic__) || defined(PIC)" && enable pic
 
2527
 
 
2528
set_default $PATHS_LIST
 
2529
 
 
2530
# we need to build at least one lib type
 
2531
if ! enabled_any static shared; then
 
2532
    cat <<EOF
 
2533
At least one library type must be built.
 
2534
Specify --enable-static to build the static libraries or --enable-shared to
 
2535
build the shared libraries as well. To only build the shared libraries specify
 
2536
--disable-static in addition to --enable-shared.
 
2537
EOF
 
2538
    exit 1;
 
2539
fi
 
2540
 
 
2541
disabled static && LIBNAME=""
 
2542
 
 
2543
die_license_disabled() {
 
2544
    enabled $1 || { enabled $2 && die "$2 is $1 and --enable-$1 is not specified."; }
 
2545
}
 
2546
 
 
2547
die_license_disabled gpl libx264
 
2548
die_license_disabled gpl libxavs
 
2549
die_license_disabled gpl libxvid
 
2550
die_license_disabled gpl x11grab
 
2551
 
 
2552
die_license_disabled nonfree libfaac
 
2553
 
 
2554
die_license_disabled version3 libopencore_amrnb
 
2555
die_license_disabled version3 libopencore_amrwb
 
2556
die_license_disabled version3 libvo_aacenc
 
2557
die_license_disabled version3 libvo_amrwbenc
 
2558
 
 
2559
enabled version3 && { enabled gpl && enable gplv3 || enable lgplv3; }
 
2560
 
 
2561
disabled optimizations || check_cflags -fomit-frame-pointer
 
2562
 
 
2563
enable_pic() {
 
2564
    enable pic
 
2565
    add_cppflags -DPIC
 
2566
    add_cflags   -fPIC
 
2567
    add_asflags  -fPIC
 
2568
}
 
2569
 
 
2570
enabled pic && enable_pic
 
2571
 
 
2572
check_cc <<EOF || die "Symbol mangling check failed."
 
2573
int ff_extern;
 
2574
EOF
 
2575
sym=$($nm $nm_opts $TMPO | awk '/ff_extern/{ print substr($0, match($0, /[^ \t]*ff_extern/)) }')
 
2576
extern_prefix=${sym%%ff_extern*}
 
2577
 
 
2578
check_cc <<EOF && enable inline_asm
 
2579
void foo(void) { __asm__ volatile ("" ::); }
 
2580
EOF
 
2581
 
 
2582
_restrict=
 
2583
for restrict_keyword in restrict __restrict__ __restrict; do
 
2584
    check_cc <<EOF && _restrict=$restrict_keyword && break
 
2585
void foo(char * $restrict_keyword p);
 
2586
EOF
 
2587
done
 
2588
 
 
2589
check_cc <<EOF && enable attribute_packed
 
2590
struct { int x; } __attribute__((packed)) x;
 
2591
EOF
 
2592
 
 
2593
check_cc <<EOF && enable attribute_may_alias
 
2594
union { int x; } __attribute__((may_alias)) x;
 
2595
EOF
 
2596
 
 
2597
check_cc <<EOF || die "endian test failed"
 
2598
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
 
2599
EOF
 
2600
od -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
 
2601
 
 
2602
if enabled alpha; then
 
2603
 
 
2604
    check_cflags -mieee
 
2605
 
 
2606
elif enabled arm; then
 
2607
 
 
2608
    check_cflags -marm
 
2609
    nogas=die
 
2610
 
 
2611
    if     check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
 
2612
        enable vfp_args
 
2613
    elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
 
2614
        case "${cross_prefix:-$cc}" in
 
2615
            *hardfloat*)         enable vfp_args;   fpabi=vfp ;;
 
2616
            *) check_ld <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
 
2617
__asm__ (".eabi_attribute 28, 1");
 
2618
int main(void) { return 0; }
 
2619
EOF
 
2620
        esac
 
2621
        warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
 
2622
    fi
 
2623
 
 
2624
    # We have to check if pld is a nop and disable it.
 
2625
    check_asm pld '"pld [r0]"'
 
2626
 
 
2627
    enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
 
2628
    enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
 
2629
    enabled armv6t2 && check_asm armv6t2 '"movt r0, #0"'
 
2630
    enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
 
2631
    enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
 
2632
    enabled neon    && check_asm neon    '"vadd.i16 q0, q0, q0"'
 
2633
    enabled vfpv3   && check_asm vfpv3   '"vmov.f32 s0, #1.0"'
 
2634
 
 
2635
    enabled_all armv6t2 shared !pic && enable_pic
 
2636
 
 
2637
elif enabled mips; then
 
2638
 
 
2639
    check_asm loongson '"dmult.g $1, $2, $3"'
 
2640
    enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
 
2641
 
 
2642
elif enabled ppc; then
 
2643
 
 
2644
    enable local_aligned_8 local_aligned_16
 
2645
 
 
2646
    check_asm dcbzl     '"dcbzl 0, %0" :: "r"(0)'
 
2647
    check_asm ibm_asm   '"add 0, 0, 0"'
 
2648
    check_asm ppc4xx    '"maclhw r10, r11, r12"'
 
2649
    check_asm xform_asm '"lwzx %1, %y0" :: "Z"(*(int*)0), "r"(0)'
 
2650
 
 
2651
    # AltiVec flags: The FSF version of GCC differs from the Apple version
 
2652
    if enabled altivec; then
 
2653
        nogas=warn
 
2654
        check_cflags -maltivec -mabi=altivec &&
 
2655
        { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
 
2656
        check_cflags -faltivec
 
2657
 
 
2658
        # check if our compiler supports Motorola AltiVec C API
 
2659
        check_cc <<EOF || disable altivec
 
2660
$inc_altivec_h
 
2661
int main(void) {
 
2662
    vector signed int v1, v2, v3;
 
2663
    v1 = vec_add(v2,v3);
 
2664
    return 0;
 
2665
}
 
2666
EOF
 
2667
 
 
2668
        # check if our compiler supports braces for vector declarations
 
2669
        check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
 
2670
$inc_altivec_h
 
2671
int main (void) { (vector int) {1}; return 0; }
 
2672
EOF
 
2673
    fi
 
2674
 
 
2675
elif enabled sparc; then
 
2676
 
 
2677
    enabled vis && check_asm vis '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc &&
 
2678
        add_cflags -mcpu=ultrasparc -mtune=ultrasparc
 
2679
 
 
2680
elif enabled x86; then
 
2681
 
 
2682
    enable local_aligned_8 local_aligned_16
 
2683
 
 
2684
    # check whether EBP is available on x86
 
2685
    # As 'i' is stored on the stack, this program will crash
 
2686
    # if the base pointer is used to access it because the
 
2687
    # base pointer is cleared in the inline assembly code.
 
2688
    check_exec_crash <<EOF && enable ebp_available
 
2689
    volatile int i=0;
 
2690
    __asm__ volatile (
 
2691
        "xorl %%ebp, %%ebp"
 
2692
    ::: "%ebp");
 
2693
    return i;
 
2694
EOF
 
2695
 
 
2696
    # check whether EBX is available on x86
 
2697
    check_asm ebx_available '""::"b"(0)' &&
 
2698
        check_asm ebx_available '"":::"%ebx"'
 
2699
 
 
2700
    # check whether xmm clobbers are supported
 
2701
    check_asm xmm_clobbers '"":::"%xmm0"'
 
2702
 
 
2703
    # check whether more than 10 operands are supported
 
2704
    check_cc <<EOF && enable ten_operands
 
2705
int main(void) {
 
2706
    int x=0;
 
2707
    __asm__ volatile(
 
2708
        ""
 
2709
        :"+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x), "+&rm"(x)
 
2710
    );
 
2711
    return 0;
 
2712
}
 
2713
EOF
 
2714
 
 
2715
    # check whether binutils is new enough to compile SSSE3/MMX2
 
2716
    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
 
2717
    enabled mmx2  && check_asm mmx2  '"pmaxub %mm0, %mm1"'
 
2718
 
 
2719
    check_asm bswap '"bswap %%eax" ::: "%eax"'
 
2720
 
 
2721
    if ! disabled_any asm mmx yasm; then
 
2722
        if check_cmd $yasmexe --version; then
 
2723
            enabled x86_64 && yasm_extra="-m amd64"
 
2724
            yasm_debug="-g dwarf2"
 
2725
        elif check_cmd nasm -v; then
 
2726
            yasmexe=nasm
 
2727
            yasm_debug="-g -F dwarf"
 
2728
            enabled x86_64 && test "$objformat" = elf && objformat=elf64
 
2729
        fi
 
2730
 
 
2731
        YASMFLAGS="-f $objformat $yasm_extra"
 
2732
        enabled pic               && append YASMFLAGS "-DPIC"
 
2733
        test -n "$extern_prefix"  && append YASMFLAGS "-DPREFIX"
 
2734
        case "$objformat" in
 
2735
            elf*) enabled debug && append YASMFLAGS $yasm_debug ;;
 
2736
        esac
 
2737
 
 
2738
        check_yasm "pextrd [eax], xmm0, 1" && enable yasm ||
 
2739
            die "yasm not found, use --disable-yasm for a crippled build"
 
2740
        check_yasm "vextractf128 xmm0, ymm0, 0" || disable avx
 
2741
    fi
 
2742
 
 
2743
    case "$cpu" in
 
2744
        athlon*|opteron*|k8*|pentium|pentium-mmx|prescott|nocona|atom|geode)
 
2745
            disable fast_clz
 
2746
        ;;
 
2747
    esac
 
2748
 
 
2749
fi
 
2750
 
 
2751
if enabled asm; then
 
2752
    as=${gas:=$as}
 
2753
    check_asm gnu_as '".macro m n\n\\n:.int 0\n.endm\nm x"' ||
 
2754
        $nogas "GNU assembler not found, install gas-preprocessor"
 
2755
fi
 
2756
 
 
2757
check_ldflags -Wl,--as-needed
 
2758
 
 
2759
if check_func dlopen; then
 
2760
    ldl=
 
2761
elif check_func dlopen -ldl; then
 
2762
    ldl=-ldl
 
2763
fi
 
2764
 
 
2765
if enabled network; then
 
2766
    check_type "sys/types.h sys/socket.h" socklen_t
 
2767
    check_type netdb.h "struct addrinfo"
 
2768
    check_type netinet/in.h "struct ipv6_mreq" -D_DARWIN_C_SOURCE
 
2769
    check_type netinet/in.h "struct sockaddr_in6"
 
2770
    check_type "sys/types.h sys/socket.h" "struct sockaddr_storage"
 
2771
    check_struct "sys/types.h sys/socket.h" "struct sockaddr" sa_len
 
2772
    # Prefer arpa/inet.h over winsock2
 
2773
    if check_header arpa/inet.h ; then
 
2774
        check_func closesocket
 
2775
    elif check_header winsock2.h ; then
 
2776
        check_func_headers winsock2.h closesocket -lws2 && \
 
2777
            network_extralibs="-lws2" || \
 
2778
        { check_func_headers winsock2.h closesocket -lws2_32 && \
 
2779
            network_extralibs="-lws2_32"; }
 
2780
        check_type ws2tcpip.h socklen_t
 
2781
        check_type ws2tcpip.h "struct addrinfo"
 
2782
        check_type ws2tcpip.h "struct ipv6_mreq"
 
2783
        check_type ws2tcpip.h "struct sockaddr_in6"
 
2784
        check_type ws2tcpip.h "struct sockaddr_storage"
 
2785
        check_struct winsock2.h "struct sockaddr" sa_len
 
2786
    else
 
2787
        disable network
 
2788
    fi
 
2789
fi
 
2790
 
 
2791
# Solaris has nanosleep in -lrt, OpenSolaris no longer needs that
 
2792
check_func nanosleep || { check_func nanosleep -lrt && add_extralibs -lrt; }
 
2793
 
 
2794
check_func  fcntl
 
2795
check_func  fork
 
2796
check_func  getaddrinfo $network_extralibs
 
2797
check_func  gethrtime
 
2798
check_func  getrusage
 
2799
check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
 
2800
check_func  inet_aton $network_extralibs
 
2801
check_func  isatty
 
2802
check_func  localtime_r
 
2803
check_func  ${malloc_prefix}memalign            && enable memalign
 
2804
check_func  mkstemp
 
2805
check_func  mmap
 
2806
check_func  ${malloc_prefix}posix_memalign      && enable posix_memalign
 
2807
check_func  setrlimit
 
2808
check_func  strerror_r
 
2809
check_func  strtok_r
 
2810
check_func_headers io.h setmode
 
2811
check_func_headers lzo/lzo1x.h lzo1x_999_compress
 
2812
check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
 
2813
check_func_headers windows.h GetProcessTimes
 
2814
check_func_headers windows.h MapViewOfFile
 
2815
check_func_headers windows.h VirtualAlloc
 
2816
 
 
2817
check_header dlfcn.h
 
2818
check_header dxva2api.h
 
2819
check_header malloc.h
 
2820
check_header poll.h
 
2821
check_header sys/mman.h
 
2822
check_header sys/resource.h
 
2823
check_header sys/select.h
 
2824
check_header vdpau/vdpau.h
 
2825
check_header vdpau/vdpau_x11.h
 
2826
check_header X11/extensions/XvMClib.h
 
2827
 
 
2828
check_struct dxva2api.h DXVA_PictureParameters wDecodedPictureIndex
 
2829
 
 
2830
disabled  zlib || check_lib   zlib.h      zlibVersion -lz   || disable  zlib
 
2831
disabled bzlib || check_lib2 bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
 
2832
 
 
2833
# check for some common methods of building with pthread support
 
2834
# do this before the optional library checks as some of them require pthreads
 
2835
if ! disabled pthreads && ! enabled w32threads; then
 
2836
    enable pthreads
 
2837
    if check_func pthread_create; then
 
2838
        :
 
2839
    elif check_func pthread_create -pthread; then
 
2840
        add_cflags -pthread
 
2841
        add_extralibs -pthread
 
2842
    elif check_func pthread_create -pthreads; then
 
2843
        add_cflags -pthreads
 
2844
        add_extralibs -pthreads
 
2845
    elif check_func pthread_create -lpthreadGC2; then
 
2846
        add_extralibs -lpthreadGC2
 
2847
    elif ! check_lib pthread.h pthread_create -lpthread; then
 
2848
        disable pthreads
 
2849
    fi
 
2850
fi
 
2851
 
 
2852
for thread in $THREADS_LIST; do
 
2853
    if enabled $thread; then
 
2854
        test -n "$thread_type" &&
 
2855
            die "ERROR: Only one thread type must be selected." ||
 
2856
            thread_type="$thread"
 
2857
    fi
 
2858
done
 
2859
 
 
2860
check_lib math.h sin -lm && LIBM="-lm"
 
2861
enabled vaapi && require vaapi va/va.h vaInitialize -lva
 
2862
 
 
2863
check_mathfunc exp2
 
2864
check_mathfunc exp2f
 
2865
check_mathfunc llrint
 
2866
check_mathfunc llrintf
 
2867
check_mathfunc log2
 
2868
check_mathfunc log2f
 
2869
check_mathfunc lrint
 
2870
check_mathfunc lrintf
 
2871
check_mathfunc round
 
2872
check_mathfunc roundf
 
2873
check_mathfunc trunc
 
2874
check_mathfunc truncf
 
2875
 
 
2876
# these are off by default, so fail if requested and not available
 
2877
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lavifil32
 
2878
enabled frei0r     && { check_header frei0r.h || die "ERROR: frei0r.h header not found"; }
 
2879
enabled libdirac   && require_pkg_config dirac                          \
 
2880
    "libdirac_decoder/dirac_parser.h libdirac_encoder/dirac_encoder.h"  \
 
2881
    "dirac_decoder_init dirac_encoder_init"
 
2882
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
 
2883
enabled libfreetype && require_pkg_config freetype2 "ft2build.h freetype/freetype.h" FT_Init_FreeType
 
2884
enabled libgsm     && require  libgsm gsm/gsm.h gsm_create -lgsm
 
2885
enabled libmp3lame && require  "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame
 
2886
enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
 
2887
enabled libopencore_amrnb  && require libopencore_amrnb opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
 
2888
enabled libopencore_amrwb  && require libopencore_amrwb opencore-amrwb/dec_if.h D_IF_init -lopencore-amrwb
 
2889
enabled libopencv  && require_pkg_config opencv opencv/cv.h cvCreateImageHeader
 
2890
enabled libopenjpeg && require libopenjpeg openjpeg.h opj_version -lopenjpeg
 
2891
enabled librtmp    && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
 
2892
enabled libschroedinger && require_pkg_config schroedinger-1.0 schroedinger/schro.h schro_init
 
2893
enabled libspeex   && require  libspeex speex/speex.h speex_decoder_init -lspeex
 
2894
enabled libtheora  && require  libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
 
2895
enabled libvo_aacenc && require libvo_aacenc vo-aacenc/voAAC.h voGetAACEncAPI -lvo-aacenc
 
2896
enabled libvo_amrwbenc && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
 
2897
enabled libvorbis  && require  libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
 
2898
enabled libvpx     && {
 
2899
    enabled libvpx_decoder && { check_lib2 "vpx/vpx_decoder.h vpx/vp8dx.h" vpx_codec_dec_init_ver -lvpx ||
 
2900
                                die "ERROR: libvpx decoder version must be >=0.9.1"; }
 
2901
    enabled libvpx_encoder && { check_lib2 "vpx/vpx_encoder.h vpx/vp8cx.h" vpx_codec_enc_init_ver -lvpx ||
 
2902
                                die "ERROR: libvpx encoder version must be >=0.9.1"; } }
 
2903
enabled libx264    && require  libx264 x264.h x264_encoder_encode -lx264 &&
 
2904
                      { check_cpp_condition x264.h "X264_BUILD >= 115" ||
 
2905
                        die "ERROR: libx264 version must be >= 0.115."; }
 
2906
enabled libxavs    && require  libxavs xavs.h xavs_encoder_encode -lxavs
 
2907
enabled libxvid    && require  libxvid xvid.h xvid_global -lxvidcore
 
2908
enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
 
2909
 
 
2910
# libdc1394 check
 
2911
if enabled libdc1394; then
 
2912
    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
 
2913
        enable libdc1394_2; } ||
 
2914
    { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
 
2915
        enable libdc1394_1; } ||
 
2916
    die "ERROR: No version of libdc1394 found "
 
2917
fi
 
2918
 
 
2919
if check_pkg_config sdl SDL_version.h SDL_Linked_Version; then
 
2920
    check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x010201" $sdl_cflags &&
 
2921
    enable sdl &&
 
2922
    check_struct SDL.h SDL_VideoInfo current_w $sdl_cflags && enable sdl_video_size
 
2923
fi
 
2924
 
 
2925
texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
 
2926
 
 
2927
check_header linux/fb.h
 
2928
check_header linux/videodev.h
 
2929
check_header linux/videodev2.h
 
2930
check_header sys/videoio.h
 
2931
 
 
2932
check_func_headers "windows.h vfw.h" capCreateCaptureWindow "$vfwcap_indev_extralibs"
 
2933
# check that WM_CAP_DRIVER_CONNECT is defined to the proper value
 
2934
# w32api 3.12 had it defined wrong
 
2935
check_cpp_condition vfw.h "WM_CAP_DRIVER_CONNECT > WM_USER" && enable vfwcap_defines
 
2936
 
 
2937
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
 
2938
{ check_header dev/bktr/ioctl_meteor.h &&
 
2939
  check_header dev/bktr/ioctl_bt848.h; } ||
 
2940
{ check_header machine/ioctl_meteor.h &&
 
2941
  check_header machine/ioctl_bt848.h; } ||
 
2942
{ check_header dev/video/meteor/ioctl_meteor.h &&
 
2943
  check_header dev/video/bktr/ioctl_bt848.h; } ||
 
2944
check_header dev/ic/bt8xx.h
 
2945
 
 
2946
check_header sndio.h
 
2947
check_header sys/soundcard.h
 
2948
check_header soundcard.h
 
2949
 
 
2950
enabled_any alsa_indev alsa_outdev && check_lib2 alsa/asoundlib.h snd_pcm_htimestamp -lasound
 
2951
 
 
2952
enabled jack_indev && check_lib2 jack/jack.h jack_client_open -ljack
 
2953
 
 
2954
enabled_any sndio_indev sndio_outdev && check_lib2 sndio.h sio_open -lsndio
 
2955
 
 
2956
enabled x11grab                         &&
 
2957
check_header X11/Xlib.h                 &&
 
2958
check_header X11/extensions/XShm.h      &&
 
2959
check_header X11/extensions/Xfixes.h    &&
 
2960
check_func XOpenDisplay -lX11           &&
 
2961
check_func XShmCreateImage -lX11 -lXext &&
 
2962
check_func XFixesGetCursorImage -lX11 -lXext -lXfixes
 
2963
 
 
2964
if ! disabled vdpau && enabled vdpau_vdpau_h; then
 
2965
check_cpp_condition \
 
2966
    vdpau/vdpau.h "defined VDP_DECODER_PROFILE_MPEG4_PART2_ASP" ||
 
2967
    { echolog "Please upgrade to libvdpau >= 0.2 if you would like vdpau support." &&
 
2968
      disable vdpau; }
 
2969
fi
 
2970
 
 
2971
enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
 
2972
 
 
2973
# add some useful compiler flags if supported
 
2974
check_cflags -Wdeclaration-after-statement
 
2975
check_cflags -Wall
 
2976
check_cflags -Wno-parentheses
 
2977
check_cflags -Wno-switch
 
2978
check_cflags -Wdisabled-optimization
 
2979
check_cflags -Wpointer-arith
 
2980
check_cflags -Wredundant-decls
 
2981
check_cflags -Wno-pointer-sign
 
2982
check_cflags -Wcast-qual
 
2983
check_cflags -Wwrite-strings
 
2984
check_cflags -Wtype-limits
 
2985
check_cflags -Wundef
 
2986
check_cflags -Wmissing-prototypes
 
2987
enabled extra_warnings && check_cflags -Winline
 
2988
 
 
2989
# add some linker flags
 
2990
check_ldflags -Wl,--warn-common
 
2991
check_ldflags -Wl,-rpath-link,libpostproc -Wl,-rpath-link,libswscale -Wl,-rpath-link,libavfilter -Wl,-rpath-link,libavdevice -Wl,-rpath-link,libavformat -Wl,-rpath-link,libavcodec -Wl,-rpath-link,libavutil
 
2992
test_ldflags -Wl,-Bsymbolic && append SHFLAGS -Wl,-Bsymbolic
 
2993
 
 
2994
echo "X{};" > $TMPV
 
2995
if test_ldflags -Wl,--version-script,$TMPV; then
 
2996
    append SHFLAGS '-Wl,--version-script,\$(SUBDIR)lib\$(NAME).ver'
 
2997
    check_cc <<EOF && enable symver_asm_label
 
2998
void ff_foo(void) __asm__ ("av_foo@VERSION");
 
2999
void ff_foo(void) { ${inline_asm+__asm__($quotes);} }
 
3000
EOF
 
3001
    check_cc <<EOF && enable symver_gnu_asm
 
3002
__asm__(".symver ff_foo,av_foo@VERSION");
 
3003
void ff_foo(void) {}
 
3004
EOF
 
3005
fi
 
3006
 
 
3007
if enabled small; then
 
3008
    add_cflags $size_cflags
 
3009
elif enabled optimizations; then
 
3010
    add_cflags $speed_cflags
 
3011
else
 
3012
    add_cflags $noopt_cflags
 
3013
fi
 
3014
check_cflags -fno-math-errno
 
3015
check_cflags -fno-signed-zeros
 
3016
 
 
3017
if enabled icc; then
 
3018
    # Just warnings, no remarks
 
3019
    check_cflags -w1
 
3020
    # -wd: Disable following warnings
 
3021
    # 144, 167, 556: -Wno-pointer-sign
 
3022
    # 1292: attribute "foo" ignored
 
3023
    # 10006: ignoring unknown option -fno-signed-zeros
 
3024
    # 10148: ignoring unknown option -Wno-parentheses
 
3025
    # 10156: ignoring option '-W'; no argument required
 
3026
    check_cflags -wd144,167,556,1292,10006,10148,10156
 
3027
    # 11030: Warning unknown option --as-needed
 
3028
    # 10156: ignoring option '-export'; no argument required
 
3029
    check_ldflags -wd10156,11030
 
3030
    # Allow to compile with optimizations
 
3031
    check_ldflags -march=$cpu
 
3032
    # icc 11.0 and 11.1 work with ebp_available, but don't pass the test
 
3033
    enable ebp_available
 
3034
    if enabled x86_32; then
 
3035
        test ${icc_version%%.*} -ge 11 && \
 
3036
            check_cflags -falign-stack=maintain-16-byte || \
 
3037
            disable aligned_stack
 
3038
    fi
 
3039
elif enabled ccc; then
 
3040
    # disable some annoying warnings
 
3041
    add_cflags -msg_disable cvtu32to64
 
3042
    add_cflags -msg_disable embedcomment
 
3043
    add_cflags -msg_disable needconstext
 
3044
    add_cflags -msg_disable nomainieee
 
3045
    add_cflags -msg_disable ptrmismatch1
 
3046
    add_cflags -msg_disable unreachcode
 
3047
elif enabled gcc; then
 
3048
    check_cflags -fno-tree-vectorize
 
3049
    check_cflags -Werror=implicit-function-declaration
 
3050
    check_cflags -Werror=missing-prototypes
 
3051
elif enabled llvm_gcc; then
 
3052
    check_cflags -mllvm -stack-alignment=16
 
3053
elif enabled clang; then
 
3054
    check_cflags -mllvm -stack-alignment=16
 
3055
    check_cflags -Qunused-arguments
 
3056
elif enabled armcc; then
 
3057
    # 2523: use of inline assembler is deprecated
 
3058
    add_cflags -W${armcc_opt},--diag_suppress=2523
 
3059
    add_cflags -W${armcc_opt},--diag_suppress=1207
 
3060
    add_cflags -W${armcc_opt},--diag_suppress=1293 # assignment in condition
 
3061
    add_cflags -W${armcc_opt},--diag_suppress=3343 # hardfp compat
 
3062
    add_cflags -W${armcc_opt},--diag_suppress=167  # pointer sign
 
3063
    add_cflags -W${armcc_opt},--diag_suppress=513  # pointer sign
 
3064
elif enabled tms470; then
 
3065
    add_cflags -pds=824 -pds=837
 
3066
elif enabled pathscale; then
 
3067
    add_cflags -fstrict-overflow -OPT:wrap_around_unsafe_opt=OFF
 
3068
fi
 
3069
 
 
3070
enabled_any $THREADS_LIST      && enable threads
 
3071
 
 
3072
check_deps $CONFIG_LIST       \
 
3073
           $CONFIG_EXTRA      \
 
3074
           $HAVE_LIST         \
 
3075
           $DECODER_LIST      \
 
3076
           $ENCODER_LIST      \
 
3077
           $HWACCEL_LIST      \
 
3078
           $PARSER_LIST       \
 
3079
           $BSF_LIST          \
 
3080
           $DEMUXER_LIST      \
 
3081
           $MUXER_LIST        \
 
3082
           $FILTER_LIST       \
 
3083
           $INDEV_LIST        \
 
3084
           $OUTDEV_LIST       \
 
3085
           $PROTOCOL_LIST     \
 
3086
           $ACODEC_TESTS      \
 
3087
           $VCODEC_TESTS      \
 
3088
           $LAVF_TESTS        \
 
3089
           $LAVFI_TESTS       \
 
3090
           $SEEK_TESTS        \
 
3091
 
 
3092
enabled asm || { arch=c; disable $ARCH_LIST $ARCH_EXT_LIST; }
 
3093
 
 
3094
! enabled_any memalign posix_memalign malloc_aligned &&
 
3095
    enabled_any $need_memalign && enable memalign_hack
 
3096
 
 
3097
echo "install prefix            $prefix"
 
3098
echo "source path               $source_path"
 
3099
echo "C compiler                $cc"
 
3100
echo "ARCH                      $arch ($cpu)"
 
3101
if test "$build_suffix" != ""; then
 
3102
    echo "build suffix              $build_suffix"
 
3103
fi
 
3104
if test "$extra_version" != ""; then
 
3105
    echo "version string suffix     $extra_version"
 
3106
fi
 
3107
echo "big-endian                ${bigendian-no}"
 
3108
echo "runtime cpu detection     ${runtime_cpudetect-no}"
 
3109
if enabled x86; then
 
3110
    echo "${yasmexe}                      ${yasm-no}"
 
3111
    echo "MMX enabled               ${mmx-no}"
 
3112
    echo "MMX2 enabled              ${mmx2-no}"
 
3113
    echo "3DNow! enabled            ${amd3dnow-no}"
 
3114
    echo "3DNow! extended enabled   ${amd3dnowext-no}"
 
3115
    echo "SSE enabled               ${sse-no}"
 
3116
    echo "SSSE3 enabled             ${ssse3-no}"
 
3117
    echo "AVX enabled               ${avx-no}"
 
3118
    echo "CMOV enabled              ${cmov-no}"
 
3119
    echo "CMOV is fast              ${fast_cmov-no}"
 
3120
    echo "EBX available             ${ebx_available-no}"
 
3121
    echo "EBP available             ${ebp_available-no}"
 
3122
    echo "10 operands supported     ${ten_operands-no}"
 
3123
fi
 
3124
if enabled arm; then
 
3125
    echo "ARMv5TE enabled           ${armv5te-no}"
 
3126
    echo "ARMv6 enabled             ${armv6-no}"
 
3127
    echo "ARMv6T2 enabled           ${armv6t2-no}"
 
3128
    echo "ARM VFP enabled           ${armvfp-no}"
 
3129
    echo "IWMMXT enabled            ${iwmmxt-no}"
 
3130
    echo "NEON enabled              ${neon-no}"
 
3131
fi
 
3132
if enabled mips; then
 
3133
    echo "MMI enabled               ${mmi-no}"
 
3134
fi
 
3135
if enabled ppc; then
 
3136
    echo "AltiVec enabled           ${altivec-no}"
 
3137
    echo "PPC 4xx optimizations     ${ppc4xx-no}"
 
3138
    echo "dcbzl available           ${dcbzl-no}"
 
3139
fi
 
3140
if enabled sparc; then
 
3141
    echo "VIS enabled               ${vis-no}"
 
3142
fi
 
3143
echo "debug symbols             ${debug-no}"
 
3144
echo "optimize for size         ${small-no}"
 
3145
echo "optimizations             ${optimizations-no}"
 
3146
echo "static                    ${static-no}"
 
3147
echo "shared                    ${shared-no}"
 
3148
echo "postprocessing support    ${postproc-no}"
 
3149
echo "new filter support        ${avfilter-no}"
 
3150
echo "network support           ${network-no}"
 
3151
echo "threading support         ${thread_type-no}"
 
3152
echo "SDL support               ${sdl-no}"
 
3153
echo "Sun medialib support      ${mlib-no}"
 
3154
echo "AVISynth enabled          ${avisynth-no}"
 
3155
echo "frei0r enabled            ${frei0r-no}"
 
3156
echo "libdc1394 support         ${libdc1394-no}"
 
3157
echo "libdirac enabled          ${libdirac-no}"
 
3158
echo "libfaac enabled           ${libfaac-no}"
 
3159
echo "libgsm enabled            ${libgsm-no}"
 
3160
echo "libmp3lame enabled        ${libmp3lame-no}"
 
3161
echo "libnut enabled            ${libnut-no}"
 
3162
echo "libopencore-amrnb support ${libopencore_amrnb-no}"
 
3163
echo "libopencore-amrwb support ${libopencore_amrwb-no}"
 
3164
echo "libopencv support         ${libopencv-no}"
 
3165
echo "libopenjpeg enabled       ${libopenjpeg-no}"
 
3166
echo "librtmp enabled           ${librtmp-no}"
 
3167
echo "libschroedinger enabled   ${libschroedinger-no}"
 
3168
echo "libspeex enabled          ${libspeex-no}"
 
3169
echo "libtheora enabled         ${libtheora-no}"
 
3170
echo "libva enabled             ${vaapi-no}"
 
3171
echo "libvo-aacenc support      ${libvo_aacenc-no}"
 
3172
echo "libvo-amrwbenc support    ${libvo_amrwbenc-no}"
 
3173
echo "libvorbis enabled         ${libvorbis-no}"
 
3174
echo "libvpx enabled            ${libvpx-no}"
 
3175
echo "libx264 enabled           ${libx264-no}"
 
3176
echo "libxavs enabled           ${libxavs-no}"
 
3177
echo "libxvid enabled           ${libxvid-no}"
 
3178
echo "zlib enabled              ${zlib-no}"
 
3179
echo "bzlib enabled             ${bzlib-no}"
 
3180
echo
 
3181
 
 
3182
for type in decoder encoder hwaccel parser demuxer muxer protocol filter bsf indev outdev; do
 
3183
    echo "Enabled ${type}s:"
 
3184
    eval list=\$$(toupper $type)_LIST
 
3185
    print_enabled '_*' $list | sort | pr -r -3 -t
 
3186
    echo
 
3187
done
 
3188
 
 
3189
license="LGPL version 2.1 or later"
 
3190
if enabled nonfree; then
 
3191
    license="nonfree and unredistributable"
 
3192
elif enabled gplv3; then
 
3193
    license="GPL version 3 or later"
 
3194
elif enabled lgplv3; then
 
3195
    license="LGPL version 3 or later"
 
3196
elif enabled gpl; then
 
3197
    license="GPL version 2 or later"
 
3198
fi
 
3199
 
 
3200
echo "License: $license"
 
3201
 
 
3202
echo "Creating config.mak and config.h..."
 
3203
 
 
3204
# build tree in object directory if source path is different from current one
 
3205
if enabled source_path_used; then
 
3206
    DIRS="
 
3207
        doc
 
3208
        libavcodec
 
3209
        libavcodec/$arch
 
3210
        libavcodec/mlib
 
3211
        libavdevice
 
3212
        libavfilter
 
3213
        libavfilter/$arch
 
3214
        libavformat
 
3215
        libavutil
 
3216
        libavutil/$arch
 
3217
        libpostproc
 
3218
        libswscale
 
3219
        libswscale/$arch
 
3220
        libswscale/mlib
 
3221
        tests
 
3222
        tools
 
3223
    "
 
3224
    FILES="
 
3225
        Makefile
 
3226
        common.mak
 
3227
        subdir.mak
 
3228
        doc/texi2pod.pl
 
3229
        libavcodec/Makefile
 
3230
        libavcodec/${arch}/Makefile
 
3231
        libavdevice/Makefile
 
3232
        libavfilter/Makefile
 
3233
        libavfilter/${arch}/Makefile
 
3234
        libavformat/Makefile
 
3235
        libavutil/Makefile
 
3236
        libpostproc/Makefile
 
3237
        libswscale/Makefile
 
3238
    "
 
3239
    map 'mkdir -p $v' $DIRS;
 
3240
    map 'test -f "$source_path/$v" && $ln_s "$source_path/$v" $v' $FILES
 
3241
fi
 
3242
 
 
3243
config_files="$TMPH config.mak"
 
3244
 
 
3245
cat > config.mak <<EOF
 
3246
# Automatically generated by configure - do not modify!
 
3247
ifndef LIBAV_CONFIG_MAK
 
3248
LIBAV_CONFIG_MAK=1
 
3249
LIBAV_CONFIGURATION=$LIBAV_CONFIGURATION
 
3250
prefix=$prefix
 
3251
LIBDIR=\$(DESTDIR)$libdir
 
3252
SHLIBDIR=\$(DESTDIR)$shlibdir
 
3253
INCDIR=\$(DESTDIR)$incdir
 
3254
BINDIR=\$(DESTDIR)$bindir
 
3255
DATADIR=\$(DESTDIR)$datadir
 
3256
MANDIR=\$(DESTDIR)$mandir
 
3257
SRC_PATH="$source_path"
 
3258
SRC_PATH_BARE=$source_path
 
3259
CC_IDENT=$cc_ident
 
3260
ARCH=$arch
 
3261
CC=$cc
 
3262
AS=$as
 
3263
LD=$ld
 
3264
DEPCC=$dep_cc
 
3265
YASM=$yasmexe
 
3266
YASMDEP=$yasmexe
 
3267
AR=$ar
 
3268
RANLIB=$ranlib
 
3269
LN_S=$ln_s
 
3270
CPPFLAGS=$CPPFLAGS
 
3271
CFLAGS=$CFLAGS
 
3272
ASFLAGS=$ASFLAGS
 
3273
CC_O=$CC_O
 
3274
DLLTOOL=$dlltool
 
3275
LDFLAGS=$LDFLAGS
 
3276
FFSERVERLDFLAGS=$FFSERVERLDFLAGS
 
3277
SHFLAGS=$SHFLAGS
 
3278
YASMFLAGS=$YASMFLAGS
 
3279
BUILDSUF=$build_suffix
 
3280
FULLNAME=$FULLNAME
 
3281
LIBPREF=$LIBPREF
 
3282
LIBSUF=$LIBSUF
 
3283
LIBNAME=$LIBNAME
 
3284
SLIBPREF=$SLIBPREF
 
3285
SLIBSUF=$SLIBSUF
 
3286
EXESUF=$EXESUF
 
3287
EXTRA_VERSION=$extra_version
 
3288
DEPFLAGS=$DEPFLAGS
 
3289
CCDEP=$CCDEP
 
3290
ASDEP=$ASDEP
 
3291
CC_DEPFLAGS=$CC_DEPFLAGS
 
3292
AS_DEPFLAGS=$AS_DEPFLAGS
 
3293
HOSTCC=$host_cc
 
3294
HOSTCFLAGS=$host_cflags
 
3295
HOSTEXESUF=$HOSTEXESUF
 
3296
HOSTLDFLAGS=$host_ldflags
 
3297
HOSTLIBS=$host_libs
 
3298
TARGET_EXEC=$target_exec
 
3299
TARGET_PATH=$target_path
 
3300
SDL_LIBS=$sdl_libs
 
3301
SDL_CFLAGS=$sdl_cflags
 
3302
LIB_INSTALL_EXTRA_CMD=$LIB_INSTALL_EXTRA_CMD
 
3303
EXTRALIBS=$extralibs
 
3304
INSTALL=install
 
3305
LIBTARGET=${LIBTARGET}
 
3306
SLIBNAME=${SLIBNAME}
 
3307
SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}
 
3308
SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}
 
3309
SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}
 
3310
SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
 
3311
SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
 
3312
SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
 
3313
SAMPLES:=${samples:-\$(FATE_SAMPLES)}
 
3314
EOF
 
3315
 
 
3316
get_version(){
 
3317
    name=$1
 
3318
    file=$source_path/$2
 
3319
    eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
 
3320
    eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
 
3321
    lcname=$(tolower $name)
 
3322
    eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
 
3323
    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
 
3324
}
 
3325
 
 
3326
get_version LIBSWSCALE  libswscale/swscale.h
 
3327
get_version LIBPOSTPROC libpostproc/postprocess.h
 
3328
get_version LIBAVCODEC  libavcodec/version.h
 
3329
get_version LIBAVDEVICE libavdevice/avdevice.h
 
3330
get_version LIBAVFORMAT libavformat/version.h
 
3331
get_version LIBAVUTIL   libavutil/avutil.h
 
3332
get_version LIBAVFILTER libavfilter/avfilter.h
 
3333
 
 
3334
cat > $TMPH <<EOF
 
3335
/* Automatically generated by configure - do not modify! */
 
3336
#ifndef LIBAV_CONFIG_H
 
3337
#define LIBAV_CONFIG_H
 
3338
#define LIBAV_CONFIGURATION "$(c_escape $LIBAV_CONFIGURATION)"
 
3339
#define LIBAV_LICENSE "$(c_escape $license)"
 
3340
#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
 
3341
#define CC_TYPE "$cc_type"
 
3342
#define CC_VERSION $cc_version
 
3343
#define restrict $_restrict
 
3344
#define EXTERN_PREFIX "${extern_prefix}"
 
3345
#define EXTERN_ASM ${extern_prefix}
 
3346
#define SLIBSUF "$SLIBSUF"
 
3347
EOF
 
3348
 
 
3349
test -n "$malloc_prefix" &&
 
3350
    echo "#define MALLOC_PREFIX $malloc_prefix" >>$TMPH
 
3351
 
 
3352
if enabled small || disabled optimizations; then
 
3353
    echo "#undef  av_always_inline"  >> $TMPH
 
3354
    if enabled small; then
 
3355
        echo "#define av_always_inline inline"  >> $TMPH
 
3356
    else
 
3357
        echo "#define av_always_inline av_unused"  >> $TMPH
 
3358
    fi
 
3359
fi
 
3360
 
 
3361
if enabled yasm; then
 
3362
    append config_files $TMPASM
 
3363
    printf '' >$TMPASM
 
3364
fi
 
3365
 
 
3366
print_config ARCH_   "$config_files" $ARCH_LIST
 
3367
print_config HAVE_   "$config_files" $HAVE_LIST
 
3368
print_config CONFIG_ "$config_files" $CONFIG_LIST       \
 
3369
                                     $CONFIG_EXTRA      \
 
3370
                                     $DECODER_LIST      \
 
3371
                                     $ENCODER_LIST      \
 
3372
                                     $HWACCEL_LIST      \
 
3373
                                     $PARSER_LIST       \
 
3374
                                     $BSF_LIST          \
 
3375
                                     $DEMUXER_LIST      \
 
3376
                                     $MUXER_LIST        \
 
3377
                                     $FILTER_LIST       \
 
3378
                                     $PROTOCOL_LIST     \
 
3379
                                     $INDEV_LIST        \
 
3380
                                     $OUTDEV_LIST       \
 
3381
 
 
3382
cat >>config.mak <<EOF
 
3383
ACODEC_TESTS=$(print_enabled -n _test $ACODEC_TESTS)
 
3384
VCODEC_TESTS=$(print_enabled -n _test $VCODEC_TESTS)
 
3385
LAVF_TESTS=$(print_enabled   -n _test $LAVF_TESTS)
 
3386
LAVFI_TESTS=$(print_enabled  -n _test $LAVFI_TESTS)
 
3387
SEEK_TESTS=$(print_enabled   -n _test $SEEK_TESTS)
 
3388
EOF
 
3389
 
 
3390
echo "#endif /* LIBAV_CONFIG_H */" >> $TMPH
 
3391
echo "endif # LIBAV_CONFIG_MAK" >> config.mak
 
3392
 
 
3393
# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
 
3394
cp_if_changed $TMPH config.h
 
3395
touch .config
 
3396
 
 
3397
enabled yasm && cp_if_changed $TMPASM config.asm
 
3398
 
 
3399
cat > $TMPH <<EOF
 
3400
/* Generated by ffconf */
 
3401
#ifndef AVUTIL_AVCONFIG_H
 
3402
#define AVUTIL_AVCONFIG_H
 
3403
EOF
 
3404
 
 
3405
print_config AV_HAVE_ $TMPH $HAVE_LIST_PUB
 
3406
 
 
3407
echo "#endif /* AVUTIL_AVCONFIG_H */" >> $TMPH
 
3408
 
 
3409
cp_if_changed $TMPH libavutil/avconfig.h
 
3410
 
 
3411
test -n "$WARNINGS" && printf "\n$WARNINGS"
 
3412
 
 
3413
# build pkg-config files
 
3414
 
 
3415
pkgconfig_generate(){
 
3416
name=$1
 
3417
shortname=${name#lib}${build_suffix}
 
3418
comment=$2
 
3419
version=$3
 
3420
libs=$4
 
3421
requires=$5
 
3422
enabled ${name#lib} || return 0
 
3423
cat <<EOF > $name/$name.pc
 
3424
prefix=$prefix
 
3425
exec_prefix=\${prefix}
 
3426
libdir=$libdir
 
3427
includedir=$incdir
 
3428
 
 
3429
Name: $name
 
3430
Description: $comment
 
3431
Version: $version
 
3432
Requires: $(enabled shared || echo $requires)
 
3433
Requires.private: $(enabled shared && echo $requires)
 
3434
Conflicts:
 
3435
Libs: -L\${libdir} -l${shortname} $(enabled shared || echo $libs)
 
3436
Libs.private: $(enabled shared && echo $libs)
 
3437
Cflags: -I\${includedir}
 
3438
EOF
 
3439
cat <<EOF > $name/$name-uninstalled.pc
 
3440
prefix=
 
3441
exec_prefix=
 
3442
libdir=\${pcfiledir}
 
3443
includedir=${source_path}
 
3444
 
 
3445
Name: $name
 
3446
Description: $comment
 
3447
Version: $version
 
3448
Requires: $requires
 
3449
Conflicts:
 
3450
Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
 
3451
Cflags: -I\${includedir}
 
3452
EOF
 
3453
}
 
3454
 
 
3455
pkgconfig_generate libavutil "Libav utility library" "$LIBAVUTIL_VERSION" "$LIBM"
 
3456
pkgconfig_generate libavcodec "Libav codec library" "$LIBAVCODEC_VERSION" "$extralibs" "libavutil = $LIBAVUTIL_VERSION"
 
3457
pkgconfig_generate libavformat "Libav container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "libavcodec = $LIBAVCODEC_VERSION"
 
3458
pkgconfig_generate libavdevice "Libav device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "libavformat = $LIBAVFORMAT_VERSION"
 
3459
pkgconfig_generate libavfilter "Libav video filtering library" "$LIBAVFILTER_VERSION" "$extralibs"
 
3460
pkgconfig_generate libpostproc "Libav post processing library" "$LIBPOSTPROC_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
 
3461
pkgconfig_generate libswscale "Libav image rescaling library" "$LIBSWSCALE_VERSION" "$LIBM" "libavutil = $LIBAVUTIL_VERSION"