Statistics
| Branch: | Revision:

ffmpeg / configure @ c510c7b5

History | View | Annotate | Download (67.9 KB)

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

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

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

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

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

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

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

    
57
show_help(){
58
  echo "Usage: configure [options]"
59
  echo "Options: [defaults in brackets after descriptions]"
60
  echo
61
  echo "Standard options:"
62
  echo "  --help                   print this message"
63
  echo "  --logfile=FILE           log tests and output to FILE [config.err]"
64
  echo "  --disable-logging        do not log configure debug information"
65
  echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
66
  echo "  --bindir=DIR             install binaries in DIR [PREFIX/bin]"
67
  echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
68
  echo "  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]"
69
  echo "  --incdir=DIR             install includes in DIR [PREFIX/include]"
70
  echo "  --mandir=DIR             install man page in DIR [PREFIX/share/man]"
71
  echo "  --enable-static          build static libraries [default=yes]"
72
  echo "  --disable-static         do not build static libraries [default=no]"
73
  echo "  --enable-shared          build shared libraries [default=no]"
74
  echo "  --disable-shared         do not build shared libraries [default=yes]"
75
  echo "  --enable-gpl             allow use of GPL code, the resulting libav*"
76
  echo "                           and ffmpeg will be under GPL [default=no]"
77
  echo "  --enable-nonfree         allow use of nonfree code, the resulting libav*"
78
  echo "                           and ffmpeg will be unredistributable [default=no]"
79
  echo "  --enable-postproc        enable GPLed postprocessing support [default=no]"
80
  echo "  --enable-swscale         software scaler support [default=no]"
81
  echo "  --enable-avfilter        video filter support (replaces vhook) [default=no]"
82
  echo "  --enable-avfilter-lavf   video filters dependant on avformat [default=no]"
83
  echo "  --enable-beosthreads     use BeOS threads [default=no]"
84
  echo "  --enable-os2threads      use OS/2 threads [default=no]"
85
  echo "  --enable-pthreads        use pthreads [default=no]"
86
  echo "  --enable-w32threads      use Win32 threads [default=no]"
87
  echo "  --enable-x11grab         enable X11 grabbing [default=no]"
88
  echo
89
  echo "External library support:"
90
  echo "  --enable-mlib            use Sun medialib [default=no]"
91
  echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
92
  echo "  --enable-libamr-nb       enable libamr-nb floating point audio codec"
93
  echo "  --enable-libamr-wb       enable libamr-wb floating point audio codec"
94
  echo "  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394"
95
  echo "                           and libraw1394 [default=no]"
96
  echo "  --enable-libdirac        enable Dirac support via libdirac [default=no]"
97
  echo "  --enable-libfaac         enable FAAC support via libfaac [default=no]"
98
  echo "  --enable-libfaad         enable FAAD support via libfaad [default=no]"
99
  echo "  --enable-libfaadbin      open libfaad.so.0 at runtime [default=no]"
100
  echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
101
  echo "  --enable-libmp3lame      enable MP3 encoding via libmp3lame [default=no]"
102
  echo "  --enable-libnut          enable NUT (de)muxing via libnut,"
103
  echo "                           native demuxer exists [default=no]"
104
  echo "  --enable-libschroedinger enable Dirac support via libschroedinger [default=no]"
105
  echo "  --enable-libspeex        enable Speex decoding via libspeex [default=no]"
106
  echo "  --enable-libtheora       enable Theora encoding via libtheora [default=no]"
107
  echo "  --enable-libvorbis       enable Vorbis encoding via libvorbis,"
108
  echo "                           native implementation exists [default=no]"
109
  echo "  --enable-libx264         enable H.264 encoding via x264 [default=no]"
110
  echo "  --enable-libxvid         enable Xvid encoding via xvidcore,"
111
  echo "                           native MPEG-4/Xvid encoder exists [default=no]"
112
  echo ""
113
  echo "Advanced options (experts only):"
114
  echo "  --source-path=PATH       path to source code [$source_path]"
115
  echo "  --cross-prefix=PREFIX    use PREFIX for compilation tools [$cross_prefix]"
116
  echo "  --enable-cross-compile   assume a cross-compiler is used"
117
  echo "  --target-os=OS           compiler targets OS [$target_os]"
118
  echo "  --cc=CC                  use C compiler CC [$cc]"
119
  echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
120
  echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
121
  echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
122
  echo "  --extra-version=STRING   version string suffix []"
123
  echo "  --build-suffix=SUFFIX    suffix for application specific build []"
124
  echo "  --arch=ARCH              select architecture  [$arch]"
125
  echo "  --cpu=CPU                selects the minimum cpu required (affects"
126
  echo "                           instruction selection, may crash on older CPUs)"
127
  echo "  --enable-powerpc-perf    enable performance report on PPC"
128
  echo "                           (requires enabling PMC)"
129
  echo "  --disable-mmx            disable MMX usage"
130
  echo "  --disable-mmx2           disable MMX2 usage"
131
  echo "  --disable-ssse3          disable SSSE3 usage"
132
  echo "  --disable-armv5te        disable armv5te usage"
133
  echo "  --disable-armv6          disable armv6 usage"
134
  echo "  --disable-armvfp         disable ARM VFP usage"
135
  echo "  --disable-iwmmxt         disable iwmmxt usage"
136
  echo "  --disable-altivec        disable AltiVec usage"
137
  echo "  --disable-network        disable network support [default=no]"
138
  echo "  --disable-ipv6           disable ipv6 support [default=no]"
139
  echo "  --disable-zlib           disable zlib [default=no]"
140
  echo "  --disable-bzlib          disable bzlib [default=no]"
141
  echo "  --disable-vhook          disable video hooking support"
142
  echo "  --disable-mpegaudio-hp   faster (but less accurate)"
143
  echo "                           MPEG audio decoding [default=no]"
144
  echo "  --enable-gray            enable full grayscale support (slower color)"
145
  echo "  --disable-ffmpeg         disable ffmpeg build"
146
  echo "  --disable-ffserver       disable ffserver build"
147
  echo "  --disable-ffplay         disable ffplay build"
148
  echo "  --enable-small           optimize for size instead of speed"
149
  echo "  --enable-hardcoded-tables use hardcoded tables instead of runtime generation"
150
  echo "  --enable-memalign-hack   emulate memalign, interferes with memory debuggers"
151
  echo "  --disable-encoder=NAME   disables encoder NAME"
152
  echo "  --enable-encoder=NAME    enables encoder NAME"
153
  echo "  --disable-decoder=NAME   disables decoder NAME"
154
  echo "  --enable-decoder=NAME    enables decoder NAME"
155
  echo "  --disable-encoders       disables all encoders"
156
  echo "  --disable-decoders       disables all decoders"
157
  echo "  --disable-muxer=NAME     disables muxer NAME"
158
  echo "  --enable-muxer=NAME      enables muxer NAME"
159
  echo "  --disable-muxers         disables all muxers"
160
  echo "  --disable-demuxer=NAME   disables demuxer NAME"
161
  echo "  --enable-demuxer=NAME    enables demuxer NAME"
162
  echo "  --disable-demuxers       disables all demuxers"
163
  echo "  --enable-parser=NAME     enables parser NAME"
164
  echo "  --disable-parser=NAME    disables parser NAME"
165
  echo "  --disable-parsers        disables all parsers"
166
  echo "  --enable-bsf=NAME        enables bitstream filter NAME"
167
  echo "  --disable-bsf=NAME       disables bitstream filter NAME"
168
  echo "  --disable-bsfs           disables all bitstream filters"
169
  echo "  --enable-protocol=NAME   enables protocol NAME"
170
  echo "  --disable-protocol=NAME  disables protocol NAME"
171
  echo "  --disable-protocols      disables all protocols"
172
  echo "  --disable-devices        disables all devices"
173
  echo "  --enable-filter=NAME     enables filter NAME"
174
  echo "  --disable-filter=NAME    disables filter NAME"
175
  echo "  --disable-filters        disables all filters"
176
  echo "  --list-decoders          show all available decoders"
177
  echo "  --list-encoders          show all available encoders"
178
  echo "  --list-muxers            show all available muxers"
179
  echo "  --list-demuxers          show all available demuxers"
180
  echo "  --list-parsers           show all available parsers"
181
  echo "  --list-protocols         show all available protocols"
182
  echo "  --list-bsfs              show all available bitstream filters"
183
  echo "  --list-indevs            show all available input devices"
184
  echo "  --list-outdevs           show all available output devices"
185
  echo "  --list-filters           show all available filters"
186
  echo
187
  echo "Developer options (useful when working on FFmpeg itself):"
188
  echo "  --disable-debug          disable debugging symbols"
189
  echo "  --enable-debug=LEVEL     set the debug level [$debuglevel]"
190
  echo "  --enable-gprof           enable profiling with gprof [$gprof]"
191
  echo "  --disable-optimizations  disable compiler optimizations"
192
  echo "  --enable-extra-warnings  enable more compiler warnings"
193
  echo "  --disable-stripping      disable stripping of executables and shared libraries"
194
  echo ""
195
  echo "NOTE: Object files are built at the place where configure is launched."
196
  exit 0
197
}
198

    
199
log(){
200
    echo "$@" >> $logfile
201
}
202

    
203
log_file(){
204
    log BEGIN $1
205
    pr -n -t $1 >> $logfile
206
    log END $1
207
}
208

    
209
echolog(){
210
    log "$@"
211
    echo "$@"
212
}
213

    
214
die(){
215
    echolog "$@"
216
    cat <<EOF
217
If you think configure made a mistake, make sure you are using the latest
218
version from SVN.  If the latest version fails, report the problem to the
219
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
220
EOF
221
    if disabled logging; then
222
        cat <<EOF
223
Rerun configure with logging enabled (do not use --disable-logging), and
224
include the log this produces with your report.
225
EOF
226
    else
227
cat <<EOF
228
Include the log file "$logfile" produced by configure as this will help
229
solving the problem.
230
EOF
231
    fi
232
    rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
233
    exit 1
234
}
235

    
236
# Avoid locale weirdness, besides we really just want to translate ASCII.
237
toupper(){
238
    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
239
}
240

    
241
tolower(){
242
    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
243
}
244

    
245
set_all(){
246
    value=$1
247
    shift
248
    for var in $*; do
249
        eval $var=$value
250
    done
251
}
252

    
253
set_weak(){
254
    value=$1
255
    shift
256
    for var; do
257
        eval : \${$var:=$value}
258
    done
259
}
260

    
261
pushvar(){
262
    for var in $*; do
263
        eval level=\${${var}_level:=0}
264
        eval ${var}_${level}="\$$var"
265
        eval ${var}_level=$(($level+1))
266
    done
267
}
268

    
269
popvar(){
270
    for var in $*; do
271
        eval level=\${${var}_level:-0}
272
        test $level = 0 && continue
273
        eval level=$(($level-1))
274
        eval $var="\${${var}_${level}}"
275
        eval ${var}_level=$level
276
        eval unset ${var}_${level}
277
    done
278
}
279

    
280
enable(){
281
    set_all yes $*
282
}
283

    
284
disable(){
285
    set_all no $*
286
}
287

    
288
enable_weak(){
289
    set_weak yes $*
290
}
291

    
292
disable_weak(){
293
    set_weak no $*
294
}
295

    
296
do_enable_deep(){
297
    for var; do
298
        enabled $var && continue
299
        eval sel="\$${var}_select"
300
        eval sgs="\$${var}_suggest"
301
        pushvar var sgs
302
        enable_deep $sel
303
        popvar sgs
304
        enable_deep_weak $sgs
305
        popvar var
306
    done
307
}
308

    
309
enable_deep(){
310
    do_enable_deep $*
311
    enable $*
312
}
313

    
314
enable_deep_weak(){
315
    do_enable_deep $*
316
    enable_weak $*
317
}
318

    
319
enabled(){
320
    test "${1#!}" = "$1" && op== || op=!=
321
    eval test "x\$${1#!}" $op "xyes"
322
}
323

    
324
disabled(){
325
    test "${1#!}" = "$1" && op== || op=!=
326
    eval test "x\$${1#!}" $op "xno"
327
}
328

    
329
enabled_all(){
330
    for opt; do
331
        enabled $opt || return 1
332
    done
333
}
334

    
335
disabled_all(){
336
    for opt; do
337
        disabled $opt || return 1
338
    done
339
}
340

    
341
enabled_any(){
342
    for opt; do
343
        enabled $opt && return 0
344
    done
345
}
346

    
347
disabled_any(){
348
    for opt; do
349
        disabled $opt && return 0
350
    done
351
    return 1
352
}
353

    
354
set_default(){
355
    for opt; do
356
        eval test -z "\$$opt" && eval $opt=\$${opt}_default
357
    done
358
}
359

    
360
is_in(){
361
    value=$1
362
    shift
363
    for var in $*; do
364
        [ $var = $value ] && return 0
365
    done
366
    return 1
367
}
368

    
369
check_deps(){
370
    for cfg; do
371
        cfg="${cfg#!}"
372
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
373
        disabled ${cfg}_checking && continue
374
        enable ${cfg}_checking
375

    
376
        eval dep_all="\$${cfg}_deps"
377
        eval dep_any="\$${cfg}_deps_any"
378
        eval dep_sel="\$${cfg}_select"
379
        eval dep_sgs="\$${cfg}_suggest"
380

    
381
        pushvar cfg dep_all dep_any dep_sel dep_sgs
382
        check_deps $dep_all $dep_any $dep_sel $dep_sgs
383
        popvar cfg dep_all dep_any dep_sel dep_sgs
384

    
385
        enabled_all  $dep_all || disable $cfg
386
        enabled_any  $dep_any || disable $cfg
387
        disabled_any $dep_sel && disable $cfg
388

    
389
        if enabled $cfg; then
390
            eval dep_extralibs="\$${cfg}_extralibs"
391
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
392
            enable_deep $dep_sel
393
            enable_deep_weak $dep_sgs
394
        fi
395

    
396
        disable ${cfg}_checking
397
    done
398
}
399

    
400
print_config(){
401
    pfx=$1
402
    header=$2
403
    makefile=$3
404
    shift 3
405
    for cfg; do
406
        ucname="`toupper $cfg`"
407
        if enabled $cfg; then
408
            echo "#define ${pfx}${ucname} 1" >> $header
409
            echo "#define ENABLE_${ucname} 1" >> $header
410
            echo "${pfx}${ucname}=yes" >> $makefile
411
        else
412
            echo "#define ENABLE_${ucname} 0" >> $header
413
        fi
414
    done
415
}
416

    
417
flags_saved(){
418
    (: ${SAVE_CFLAGS?}) 2> /dev/null
419
}
420

    
421
save_flags(){
422
    flags_saved && return
423
    SAVE_CFLAGS="$CFLAGS"
424
    SAVE_LDFLAGS="$LDFLAGS"
425
    SAVE_extralibs="$extralibs"
426
}
427

    
428
restore_flags(){
429
    flags_saved || return
430
    CFLAGS="$SAVE_CFLAGS"
431
    LDFLAGS="$SAVE_LDFLAGS"
432
    extralibs="$SAVE_extralibs"
433
    unset SAVE_CFLAGS
434
    unset SAVE_LDFLAGS
435
    unset SAVE_extralibs
436
}
437

    
438
temp_cflags(){
439
    save_flags
440
    CFLAGS="$CFLAGS $*"
441
}
442

    
443
temp_ldflags(){
444
    save_flags
445
    LDFLAGS="$LDFLAGS $*"
446
}
447

    
448
temp_extralibs(){
449
    save_flags
450
    extralibs="$extralibs $*"
451
}
452

    
453
append(){
454
    var=$1
455
    shift
456
    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
457
    eval "$var=\"\$$var $*\""
458
}
459

    
460
add_cflags(){
461
    append CFLAGS "$@"
462
}
463

    
464
add_ldflags(){
465
    append LDFLAGS "$@"
466
}
467

    
468
add_extralibs(){
469
    append extralibs "$@"
470
}
471

    
472
check_cmd(){
473
    log "$@"
474
    "$@" >> $logfile 2>&1
475
}
476

    
477
check_cc(){
478
    log check_cc "$@"
479
    cat > $TMPC
480
    log_file $TMPC
481
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
482
}
483

    
484
check_cpp(){
485
    log check_cpp "$@"
486
    cat > $TMPC
487
    log_file $TMPC
488
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
489
}
490

    
491
check_asm(){
492
    log check_asm "$@"
493
    name="$1"
494
    asm="$2"
495
    shift 2
496
    check_cc "$@" <<EOF && enable $name || disable $name
497
int foo(void){ __asm__ volatile($asm); }
498
EOF
499
}
500

    
501
check_yasm(){
502
    log check_yasm "$@"
503
    echo "$1" > $TMPS
504
    log_file $TMPS
505
    shift 1
506
    check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
507
}
508

    
509
check_ld(){
510
    log check_ld "$@"
511
    check_cc || return
512
    flags=''
513
    libs=''
514
    for f; do
515
        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
516
    done
517
    check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
518
}
519

    
520
check_cflags(){
521
    log check_cflags "$@"
522
    check_cc "$@" <<EOF && add_cflags "$@"
523
int x;
524
EOF
525
}
526

    
527
check_ldflags(){
528
    log check_ldflags "$@"
529
    check_ld "$@" <<EOF && add_ldflags "$@"
530
int main(void){ return 0; }
531
EOF
532
}
533

    
534
check_header(){
535
    log check_header "$@"
536
    header=$1
537
    shift
538
    var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
539
    disable $var
540
    check_cpp "$@" <<EOF && enable $var
541
#include <$header>
542
int x;
543
EOF
544
}
545

    
546
check_func(){
547
    log check_func "$@"
548
    func=$1
549
    shift
550
    disable $func
551
    check_ld "$@" <<EOF && enable $func
552
extern int $func();
553
int main(void){ $func(); }
554
EOF
555
}
556

    
557
check_func_headers(){
558
    log check_func_headers "$@"
559
    headers=$1
560
    func=$2
561
    shift 2
562
    disable $func
563
    incs=""
564
    for hdr in $headers; do
565
        incs="$incs
566
#include <$hdr>"
567
    done
568
    check_ld "$@" <<EOF && enable $func
569
$incs
570
int main(int argc, char **argv){
571
    (void) $func;
572
    return 0;
573
}
574
EOF
575
}
576

    
577
check_cpp_condition(){
578
    log check_cpp_condition "$@"
579
    header=$1
580
    condition=$2
581
    check_cpp <<EOF
582
#include <$header>
583
#if !($condition)
584
#error "unsatisfied condition: $condition"
585
#endif
586
EOF
587
}
588

    
589
check_lib(){
590
    log check_lib "$@"
591
    header="$1"
592
    func="$2"
593
    shift 2
594
    temp_extralibs "$@"
595
    check_header $header && check_func $func && add_extralibs "$@"
596
    err=$?
597
    restore_flags
598
    return $err
599
}
600

    
601
check_lib2(){
602
    log check_lib2 "$@"
603
    headers="$1"
604
    func="$2"
605
    shift 2
606
    temp_extralibs "$@"
607
    check_func_headers "$headers" $func && add_extralibs "$@"
608
    err=$?
609
    restore_flags
610
    return $err
611
}
612

    
613
check_exec(){
614
    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
615
}
616

    
617
check_exec_crash(){
618
    code=`cat`
619

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

    
626
    (check_exec "$@") >> $logfile 2>&1 <<EOF
627
#include <signal.h>
628
static void sighandler(int sig){
629
    raise(SIGTERM);
630
}
631
int main(void){
632
    signal(SIGILL, sighandler);
633
    signal(SIGFPE, sighandler);
634
    signal(SIGSEGV, sighandler);
635
#ifdef SIGBUS
636
    signal(SIGBUS, sighandler);
637
#endif
638
    { $code }
639
}
640
EOF
641
}
642

    
643
check_type(){
644
    log check_type "$@"
645
    headers=$1
646
    type=$2
647
    shift 2
648
    disable $type
649
    incs=""
650
    for hdr in $headers; do
651
        incs="$incs
652
#include <$hdr>"
653
    done
654
    check_cc "$@" <<EOF && enable $type
655
$incs
656
$type v;
657
EOF
658
}
659

    
660
require(){
661
    name="$1"
662
    header="$2"
663
    func="$3"
664
    shift 3
665
    check_lib $header $func "$@" || die "ERROR: $name not found"
666
}
667

    
668
require2(){
669
    name="$1"
670
    headers="$2"
671
    func="$3"
672
    shift 3
673
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
674
}
675

    
676
check_foo_config(){
677
    cfg=$1
678
    pkg=$2
679
    header=$3
680
    func=$4
681
    shift 4
682
    disable $cfg
683
    check_cmd ${pkg}-config --version
684
    err=$?
685
    if test "$err" = 0; then
686
        temp_cflags `${pkg}-config --cflags`
687
        temp_extralibs `${pkg}-config --libs`
688
        check_lib "$@" $header $func && enable $cfg
689
    fi
690
    return $err
691
}
692

    
693
apply(){
694
    file=$1
695
    shift
696
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
697
}
698

    
699
# CONFIG_LIST contains configurable options, while HAVE_LIST is for
700
# system-dependent things.
701

    
702
COMPONENT_LIST="
703
    bsfs
704
    decoders
705
    demuxers
706
    encoders
707
    filters
708
    indevs
709
    muxers
710
    outdevs
711
    parsers
712
    protocols
713
"
714

    
715
CONFIG_LIST="
716
    $COMPONENT_LIST
717
    avfilter
718
    avfilter_lavf
719
    avisynth
720
    beos_netserver
721
    bzlib
722
    ffmpeg
723
    ffplay
724
    ffserver
725
    fft
726
    gpl
727
    gprof
728
    gray
729
    hardcoded_tables
730
    ipv6
731
    libamr_nb
732
    libamr_wb
733
    libdc1394
734
    libdirac
735
    libfaac
736
    libfaad
737
    libfaadbin
738
    libgsm
739
    libmp3lame
740
    libnut
741
    libschroedinger
742
    libspeex
743
    libtheora
744
    libvorbis
745
    libx264
746
    libxvid
747
    memalign_hack
748
    mlib
749
    mpegaudio_hp
750
    network
751
    nonfree
752
    postproc
753
    powerpc_perf
754
    small
755
    swscale
756
    vhook
757
    x11grab
758
    zlib
759
"
760

    
761
THREADS_LIST='
762
    beosthreads
763
    os2threads
764
    pthreads
765
    w32threads
766
'
767

    
768
ARCH_LIST='
769
    alpha
770
    armv4l
771
    bfin
772
    ia64
773
    m68k
774
    mips
775
    parisc
776
    powerpc
777
    s390
778
    sh4
779
    sparc
780
    sparc64
781
    x86
782
    x86_32
783
    x86_64
784
'
785

    
786
ARCH_EXT_LIST='
787
    altivec
788
    armv5te
789
    armv6
790
    armvfp
791
    iwmmxt
792
    mmi
793
    mmx
794
    mmx2
795
    neon
796
    ssse3
797
    vis
798
'
799

    
800
HAVE_LIST="
801
    $ARCH_EXT_LIST
802
    $THREADS_LIST
803
    altivec_h
804
    arpa_inet_h
805
    bswap
806
    closesocket
807
    cmov
808
    conio_h
809
    dcbzl
810
    dev_bktr_ioctl_bt848_h
811
    dev_bktr_ioctl_meteor_h
812
    dev_ic_bt8xx_h
813
    dev_video_meteor_ioctl_meteor_h
814
    dev_video_bktr_ioctl_bt848_h
815
    dlfcn_h
816
    dlopen
817
    dos_paths
818
    ebp_available
819
    ebx_available
820
    fast_64bit
821
    fast_cmov
822
    fast_unaligned
823
    fork
824
    freetype2
825
    gethrtime
826
    GetProcessTimes
827
    getrusage
828
    imlib2
829
    inet_aton
830
    inline_asm
831
    libdc1394_1
832
    libdc1394_2
833
    llrint
834
    lrint
835
    lrintf
836
    machine_ioctl_bt848_h
837
    machine_ioctl_meteor_h
838
    malloc_h
839
    memalign
840
    mkstemp
841
    pld
842
    ppc64
843
    round
844
    roundf
845
    sdl
846
    sdl_video_size
847
    socklen_t
848
    soundcard_h
849
    poll_h
850
    sys_mman_h
851
    sys_resource_h
852
    sys_select_h
853
    sys_soundcard_h
854
    sys_videoio_h
855
    termios_h
856
    threads
857
    winsock2_h
858
    yasm
859
"
860

    
861
CMDLINE_SELECT="
862
    $ARCH_EXT_LIST
863
    $CONFIG_LIST
864
    $THREADS_LIST
865
    cross_compile
866
    debug
867
    extra_warnings
868
    logging
869
    optimizations
870
    shared
871
    static
872
    stripping
873
"
874

    
875
PATHS_LIST='
876
    bindir
877
    incdir
878
    libdir
879
    mandir
880
    prefix
881
    shlibdir
882
'
883

    
884
CMDLINE_SET="
885
    $PATHS_LIST
886
    arch
887
    build_suffix
888
    cc
889
    cpu
890
    cross_prefix
891
    extra_version
892
    logfile
893
    source_path
894
    target_os
895
"
896

    
897
# code dependency declarations
898

    
899
# architecture extensions
900
altivec_deps="powerpc"
901
armv5te_deps="armv4l"
902
armv6_deps="armv4l"
903
armvfp_deps="armv4l"
904
iwmmxt_deps="armv4l"
905
mmi_deps="mips"
906
mmx_deps="x86"
907
mmx2_deps="x86 mmx"
908
neon_deps="armv4l"
909
ssse3_deps="x86"
910
vis_deps="sparc"
911

    
912
# decoders / encoders
913
aac_decoder_select="fft"
914
ac3_decoder_deps="gpl"
915
ac3_decoder_select="fft"
916
ac3_encoder_select="fft"
917
atrac3_decoder_select="fft"
918
cook_decoder_select="fft"
919
dxa_decoder_deps="zlib"
920
eac3_decoder_deps="gpl"
921
eac3_decoder_select="fft"
922
flashsv_decoder_deps="zlib"
923
flashsv_encoder_deps="zlib"
924
imc_decoder_select="fft"
925
mlp_decoder_deps="mlp_parser"
926
mpeg_xvmc_decoder_deps="xvmc"
927
nellymoser_decoder_select="fft"
928
nellymoser_encoder_select="fft"
929
png_decoder_deps="zlib"
930
png_encoder_deps="zlib"
931
qdm2_decoder_select="fft"
932
vorbis_decoder_select="fft"
933
vorbis_encoder_select="fft"
934
wmav1_decoder_select="fft"
935
wmav1_encoder_select="fft"
936
wmav2_decoder_select="fft"
937
wmav2_encoder_select="fft"
938
zmbv_decoder_deps="zlib"
939
zmbv_encoder_deps="zlib"
940

    
941
# external libraries
942
libamr_nb_decoder_deps="libamr_nb"
943
libamr_nb_encoder_deps="libamr_nb"
944
libamr_wb_decoder_deps="libamr_wb"
945
libamr_wb_encoder_deps="libamr_wb"
946
libdirac_decoder_deps="libdirac !libschroedinger"
947
libdirac_encoder_deps="libdirac"
948
libfaac_encoder_deps="libfaac"
949
libfaad_decoder_deps="libfaad"
950
libfaadbin_decoder_extralibs='$ldl'
951
libgsm_decoder_deps="libgsm"
952
libgsm_encoder_deps="libgsm"
953
libgsm_ms_decoder_deps="libgsm"
954
libgsm_ms_encoder_deps="libgsm"
955
libmp3lame_encoder_deps="libmp3lame"
956
libschroedinger_decoder_deps="libschroedinger"
957
libschroedinger_encoder_deps="libschroedinger"
958
libspeex_decoder_deps="libspeex"
959
libtheora_encoder_deps="libtheora"
960
libvorbis_encoder_deps="libvorbis"
961
libx264_encoder_deps="libx264"
962
libxvid_encoder_deps="libxvid"
963
mpeg4aac_decoder_deps="libfaad"
964

    
965
# demuxers / muxers
966
ac3_demuxer_deps="ac3_parser"
967
audio_beos_demuxer_deps="audio_beos"
968
audio_beos_demuxer_extralibs="-lmedia -lbe"
969
audio_beos_muxer_deps="audio_beos"
970
audio_beos_muxer_extralibs="-lmedia -lbe"
971
avisynth_demuxer_deps="avisynth"
972
bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
973
dirac_demuxer_deps="dirac_parser"
974
dv1394_demuxer_deps="dv1394 dv_demuxer"
975
libdc1394_demuxer_deps="libdc1394"
976
libnut_demuxer_deps="libnut"
977
libnut_muxer_deps="libnut"
978
mp3_demuxer_deps="mpegaudio_parser"
979
oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
980
oss_muxer_deps_any="soundcard_h sys_soundcard_h"
981
redir_demuxer_deps="network"
982
rtp_muxer_deps="network rtp_protocol"
983
rtsp_demuxer_deps="sdp_demuxer"
984
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
985
v4l_demuxer_deps="linux_videodev_h"
986
v4l2_demuxer_deps_any="linux_videodev2_h sys_videoio_h"
987
vfwcap_demuxer_deps="capCreateCaptureWindow"
988
vfwcap_demuxer_extralibs="-lvfw32"
989
x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
990
x11_grab_device_demuxer_extralibs="-lX11 -lXext"
991

    
992
# protocols
993
http_protocol_deps="network"
994
rtp_protocol_deps="udp_protocol"
995
tcp_protocol_deps="network"
996
udp_protocol_deps="network"
997

    
998
# filters
999
movie_filter_deps="avfilter_lavf"
1000

    
1001
# programs
1002
ffplay_deps="sdl"
1003
ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
1004
ffserver_extralibs='$ldl'
1005
vhook_extralibs='$ldl'
1006

    
1007

    
1008
# default parameters
1009

    
1010
logfile="config.err"
1011

    
1012
# installation paths
1013
prefix_default="/usr/local"
1014
bindir_default='${prefix}/bin'
1015
incdir_default='${prefix}/include'
1016
libdir_default='${prefix}/lib'
1017
mandir_default='${prefix}/share/man'
1018
shlibdir_default="$libdir_default"
1019

    
1020
# toolchain
1021
cc_default="gcc"
1022
yasmexe="yasm"
1023
ar="ar"
1024
nm="nm"
1025
ranlib="ranlib"
1026
strip="strip"
1027
asmalign_pot="unknown"
1028
ln_s="ln -sf"
1029
objformat="elf"
1030

    
1031
# machine
1032
arch=`uname -m`
1033
cpu="generic"
1034

    
1035
# OS
1036
target_os=$(tolower $(uname -s))
1037

    
1038
# libraries
1039
enable bzlib
1040
enable zlib
1041

    
1042
# configurable options
1043
enable debug
1044
enable ffmpeg
1045
enable ffplay
1046
enable ffserver
1047
enable ipv6
1048
enable mpegaudio_hp
1049
enable network
1050
enable optimizations
1051
enable protocols
1052
enable static
1053
enable stripping
1054
vhook="default"
1055

    
1056
# build settings
1057
add_cflags -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112
1058
SHFLAGS='-shared -Wl,-soname,$$(@F)'
1059
VHOOKSHFLAGS='$(SHFLAGS)'
1060
FFSERVERLDFLAGS=-Wl,-E
1061
LIBPREF="lib"
1062
LIBSUF=".a"
1063
FULLNAME='$(NAME)$(BUILDSUF)'
1064
LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
1065
SLIBPREF="lib"
1066
SLIBSUF=".so"
1067
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
1068
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
1069
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
1070
LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
1071

    
1072
# gcc stupidly only outputs the basename of targets with -MM, but we need the
1073
# full relative path for objects in subdirectories for non-recursive Make.
1074
DEPEND_CMD='$(CC) $(CFLAGS) -MM -MG $< | sed -e "/^\#.*/d" -e "s,^[[:space:]]*$(*F)\\.o,$(@D)/$(*F).o," -e "s,\\([[:space:]]\\)\\(version\\.h\\),\\1\$$(BUILD_ROOT_REL)/\\2,"'
1075

    
1076
# find source path
1077
source_path="`dirname \"$0\"`"
1078
enable source_path_used
1079
if test -z "$source_path" -o "$source_path" = "." ; then
1080
    source_path="`pwd`"
1081
    disable source_path_used
1082
else
1083
    source_path="`cd \"$source_path\"; pwd`"
1084
    echo "$source_path" | grep -q '[[:blank:]]' &&
1085
        die "Out of tree builds are impossible with whitespace in source path."
1086
fi
1087

    
1088
FFMPEG_CONFIGURATION="$@"
1089

    
1090
find_things(){
1091
    thing=$1
1092
    pattern=$2
1093
    file=$source_path/$3
1094
    sed -n "s/^[^#]*$pattern.*([^,]*, *\([^,]*\)\(,.*\)*).*/\1_$thing/p" "$file"
1095
}
1096

    
1097
ENCODER_LIST=$(find_things  encoder  ENC      libavcodec/allcodecs.c)
1098
DECODER_LIST=$(find_things  decoder  DEC      libavcodec/allcodecs.c)
1099
PARSER_LIST=$(find_things   parser   PARSER   libavcodec/allcodecs.c)
1100
BSF_LIST=$(find_things      bsf      BSF      libavcodec/allcodecs.c)
1101
MUXER_LIST=$(find_things    muxer    _MUX     libavformat/allformats.c)
1102
DEMUXER_LIST=$(find_things  demuxer  DEMUX    libavformat/allformats.c)
1103
OUTDEV_LIST=$(find_things   muxer    _MUX     libavdevice/alldevices.c)
1104
INDEV_LIST=$(find_things    demuxer  DEMUX    libavdevice/alldevices.c)
1105
PROTOCOL_LIST=$(find_things protocol PROTOCOL libavformat/allformats.c)
1106
FILTER_LIST=$(find_things   filter   FILTER   libavfilter/allfilters.c)
1107

    
1108
enable $ARCH_EXT_LIST \
1109
       $DECODER_LIST \
1110
       $ENCODER_LIST \
1111
       $PARSER_LIST \
1112
       $BSF_LIST \
1113
       $DEMUXER_LIST \
1114
       $MUXER_LIST \
1115
       $FILTER_LIST \
1116
       $PROTOCOL_LIST \
1117
       $INDEV_LIST \
1118
       $OUTDEV_LIST \
1119

    
1120
die_unknown(){
1121
    echo "Unknown option \"$1\"."
1122
    echo "See $0 --help for available options."
1123
    exit 1
1124
}
1125

    
1126
show_list() {
1127
    suffix=_$1
1128
    shift
1129
    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
1130
    exit 0
1131
}
1132

    
1133
for opt do
1134
    optval="${opt#*=}"
1135
    case "$opt" in
1136
    --extra-cflags=*) add_cflags "$optval"
1137
    ;;
1138
    --extra-ldflags=*) add_ldflags "$optval"
1139
    ;;
1140
    --extra-libs=*) add_extralibs "$optval"
1141
    ;;
1142
    --disable-devices) disable $INDEV_LIST $OUTDEV_LIST
1143
    ;;
1144
    --enable-debug=*) debuglevel="$optval"
1145
    ;;
1146
    --enable-*=*|--disable-*=*)
1147
    eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
1148
    case "$thing" in
1149
        encoder|decoder|muxer|demuxer|parser|bsf|protocol|filter) $action ${optval}_${thing} ;;
1150
        *) die_unknown "$opt" ;;
1151
    esac
1152
    ;;
1153
    --enable-?*|--disable-?*)
1154
    eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
1155
    if is_in $option $COMPONENT_LIST; then
1156
        eval $action \$$(toupper ${option%s})_LIST
1157
    elif is_in $option $CMDLINE_SELECT; then
1158
        $action $option
1159
    else
1160
        die_unknown $opt
1161
    fi
1162
    ;;
1163
    --list-*)
1164
        NAME="${opt#--list-}"
1165
        is_in $NAME $COMPONENT_LIST || die_unknown $opt
1166
        NAME=${NAME%s}
1167
        eval show_list $NAME \$$(toupper $NAME)_LIST
1168
    ;;
1169
    --help|-h) show_help
1170
    ;;
1171
    *)
1172
    optname="${opt%%=*}"
1173
    optname="${optname#--}"
1174
    optname=$(echo "$optname" | sed 's/-/_/g')
1175
    is_in $optname $CMDLINE_SET || die_unknown $opt
1176
    eval $optname='$optval'
1177
    ;;
1178
    esac
1179
done
1180

    
1181
disabled logging && logfile=/dev/null
1182

    
1183
echo "# $0 $@" > $logfile
1184
set >> $logfile
1185

    
1186
cc_default="${cross_prefix}${cc_default}"
1187
yasmexe="${cross_prefix}${yasmexe}"
1188
ar="${cross_prefix}${ar}"
1189
nm="${cross_prefix}${nm}"
1190
ranlib="${cross_prefix}${ranlib}"
1191
strip="${cross_prefix}${strip}"
1192

    
1193
set_default cc
1194

    
1195
# set temporary file name
1196
if test ! -z "$TMPDIR" ; then
1197
    TMPDIR1="${TMPDIR}"
1198
elif test ! -z "$TEMPDIR" ; then
1199
    TMPDIR1="${TEMPDIR}"
1200
else
1201
    TMPDIR1="/tmp"
1202
fi
1203

    
1204
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
1205
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}${EXESUF}"
1206
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
1207
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
1208
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
1209
TMPSH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.sh"
1210

    
1211
check_cflags -std=c99
1212

    
1213
case "$arch" in
1214
    i386|i486|i586|i686|i86pc|BePC)
1215
        arch="x86_32"
1216
        enable fast_unaligned
1217
    ;;
1218
    x86_64|amd64)
1219
        arch="x86_32"
1220
        enable fast_unaligned
1221
        check_cc <<EOF && enable fast_64bit && arch="x86_64"
1222
        int test[sizeof(char*) - 7];
1223
EOF
1224
    ;;
1225
    # armv4l is a subset of armv[567]*l
1226
    arm|armv[4567]*l)
1227
        arch="armv4l"
1228
    ;;
1229
    alpha)
1230
        arch="alpha"
1231
        enable fast_64bit
1232
    ;;
1233
    "Power Macintosh"|ppc|powerpc)
1234
        arch="powerpc"
1235
        enable fast_unaligned
1236
    ;;
1237
    ppc64)
1238
        arch="powerpc"
1239
        enable fast_64bit
1240
        enable fast_unaligned
1241
    ;;
1242
    mips|mipsel|IP*)
1243
        arch="mips"
1244
    ;;
1245
    sun4u|sparc64)
1246
        arch="sparc64"
1247
        enable fast_64bit
1248
    ;;
1249
    sparc)
1250
        arch="sparc"
1251
    ;;
1252
    sh4)
1253
        arch="sh4"
1254
    ;;
1255
    parisc)
1256
        arch="parisc"
1257
    ;;
1258
    parisc64)
1259
        arch="parisc"
1260
        enable fast_64bit
1261
    ;;
1262
    s390|s390x)
1263
        arch="s390"
1264
    ;;
1265
    m68k)
1266
        arch="m68k"
1267
    ;;
1268
    ia64)
1269
        arch="ia64"
1270
        enable fast_64bit
1271
    ;;
1272
    bfin)
1273
        arch="bfin"
1274
    ;;
1275
    *)
1276
        arch="unknown"
1277
    ;;
1278
esac
1279

    
1280
enable $arch
1281
enabled_any x86_32 x86_64 && enable x86
1282
enabled     sparc64       && enable sparc
1283

    
1284
# OS specific
1285
case $target_os in
1286
    beos|haiku|zeta)
1287
        prefix_default="$HOME/config"
1288
        # helps building libavcodec
1289
        add_cflags "-DPIC -fomit-frame-pointer"
1290
        # 3 gcc releases known for BeOS, each with ugly bugs
1291
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
1292
        case "$gcc_version" in
1293
          2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
1294
            disable mmx
1295
            ;;
1296
          *20010315*) echo "BeBits gcc"
1297
            add_cflags "-fno-expensive-optimizations"
1298
            ;;
1299
        esac
1300
        SHFLAGS=-nostart
1301
        # enable BeOS things
1302
        enable audio_beos
1303
        # no need for libm, but the inet stuff
1304
        # Check for BONE
1305
        # XXX: actually should check for NOT net_server
1306
        if echo $BEINCLUDES | grep -q 'headers/be/bone'; then
1307
            network_extralibs="-lbind -lsocket"
1308
        else
1309
            enable beos_netserver
1310
            network_extralibs="-lnet"
1311
        fi ;;
1312
    sunos)
1313
        FFSERVERLDFLAGS=""
1314
        SHFLAGS='-shared -Wl,-h,$$(@F)'
1315
        network_extralibs="-lsocket -lnsl"
1316
        ;;
1317
    netbsd)
1318
        oss_demuxer_extralibs="-lossaudio"
1319
        oss_muxer_extralibs="-lossaudio"
1320
        ;;
1321
    openbsd)
1322
        disable need_memalign
1323
        LIBOBJFLAGS='$(PIC)'
1324
        SHFLAGS='-shared'
1325
        SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF).$(LIBVERSION)'
1326
        SLIBNAME_WITH_VERSION='$(SLIBNAME)'
1327
        SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
1328
        oss_demuxer_extralibs="-lossaudio"
1329
        oss_muxer_extralibs="-lossaudio"
1330
        ;;
1331
    freebsd)
1332
        disable need_memalign
1333
        ;;
1334
    bsd/os)
1335
        osextralibs="-lpoll -lgnugetopt"
1336
        strip="strip -d"
1337
        ;;
1338
    darwin)
1339
        disable need_memalign
1340
        SHFLAGS='-dynamiclib -Wl,-single_module -Wl,-install_name,$(SHLIBDIR)/$(SLIBNAME),-current_version,$(LIBVERSION),-compatibility_version,$(LIBMAJOR) -Wl,-read_only_relocs,suppress'
1341
        VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(SHLIBDIR)/vhook/$$(@F)'
1342
        strip="strip -x"
1343
        FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
1344
        SLIBSUF=".dylib"
1345
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
1346
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
1347
        FFSERVERLDFLAGS=-Wl,-bind_at_load
1348
        objformat="macho"
1349
        enabled x86_64 && objformat="macho64"
1350
        ;;
1351
    mingw32*)
1352
        target_os=mingw32
1353
        LIBTARGET=i386
1354
        if test $arch = x86_64; then
1355
            disable need_memalign
1356
            LIBTARGET=x64
1357
        fi
1358
        shlibdir_default="$bindir_default"
1359
        VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1360
        VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1361
        if enabled swscale; then
1362
            VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1363
            VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1364
        fi
1365
        disable ffserver
1366
        SLIBPREF=""
1367
        SLIBSUF=".dll"
1368
        EXESUF=".exe"
1369
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1370
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1371
        SLIB_EXTRA_CMD='-lib /machine:$(LIBTARGET) /def:$$(@:$(SLIBSUF)=.def) /out:$(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)'
1372
        SLIB_INSTALL_EXTRA_CMD='-install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"; \
1373
            install -m 644 $(SUBDIR)$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib) "$(SHLIBDIR)/$(SLIBNAME_WITH_MAJOR:$(SLIBSUF)=.lib)"'
1374
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(SHLIBDIR)/$(SLIBNAME:$(SLIBSUF)=.lib)"'
1375
        SHFLAGS='-shared -Wl,--output-def,$$(@:$(SLIBSUF)=.def) -Wl,--enable-runtime-pseudo-reloc -Wl,--enable-auto-image-base'
1376
        objformat="win32"
1377
        enable dos_paths
1378
        ;;
1379
    cygwin*)
1380
        target_os=cygwin
1381
        shlibdir_default="$bindir_default"
1382
        VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
1383
        VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
1384
        if enabled swscale; then
1385
            VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
1386
            VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
1387
        fi
1388
        EXESUF=".exe"
1389
        SLIBPREF="cyg"
1390
        SLIBSUF=".dll"
1391
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
1392
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
1393
        SHFLAGS='-shared -Wl,--enable-auto-image-base'
1394
        objformat="win32"
1395
        enable dos_paths
1396
        ;;
1397
    *-dos|freedos|opendos)
1398
        disable ffplay ffserver vhook
1399
        disable $INDEV_LIST $OUTDEV_LIST
1400
        network_extralibs="-lsocket"
1401
        EXESUF=".exe"
1402
        objformat="win32"
1403
        enable dos_paths
1404
        ;;
1405
    linux)
1406
        enable dv1394
1407
        ;;
1408
    irix*)
1409
        target_os=irix
1410
        ranlib="echo ignoring ranlib"
1411
        ;;
1412
    os/2*)
1413
        strip="lxlite"
1414
        ln_s="cp -f"
1415
        EXESUF=".exe"
1416
        FFLDFLAGS="-Zomf -Zbin-files -Zargs-wild -Zmap"
1417
        SHFLAGS='$(SUBDIR)$(NAME).def -Zdll -Zomf'
1418
        FFSERVERLDFLAGS=""
1419
        LIBSUF="_s.a"
1420
        SLIBPREF=""
1421
        SLIBSUF=".dll"
1422
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
1423
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(shell echo $(NAME) | cut -c1-6)$(LIBMAJOR)$(SLIBSUF)'
1424
        SLIB_CREATE_DEF_CMD='echo LIBRARY $(SLIBNAME_WITH_MAJOR) INITINSTANCE TERMINSTANCE > $(SUBDIR)$(NAME).def; \
1425
          echo PROTMODE >> $(SUBDIR)$(NAME).def; \
1426
          echo CODE PRELOAD MOVEABLE DISCARDABLE >> $(SUBDIR)$(NAME).def; \
1427
          echo DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> $(SUBDIR)$(NAME).def; \
1428
          echo EXPORTS >> $(SUBDIR)$(NAME).def; \
1429
          emxexp -o $(OBJS) >> $(SUBDIR)$(NAME).def'
1430
        SLIB_EXTRA_CMD='emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(NAME).def; \
1431
          emximp -o $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib $(SUBDIR)$(NAME).def;'
1432
        SLIB_INSTALL_EXTRA_CMD='install -m 644 $(SUBDIR)$(LIBPREF)$(NAME)_dll.a $(SUBDIR)$(LIBPREF)$(NAME)_dll.lib "$(LIBDIR)"'
1433
        SLIB_UNINSTALL_EXTRA_CMD='rm -f "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.a "$(LIBDIR)"/$(LIBPREF)$(NAME)_dll.lib'
1434
        disable vhook
1435
        enable dos_paths
1436
        ;;
1437
    interix)
1438
        disable vhook
1439
        ;;
1440

    
1441
    *)
1442
        target_os="${target_os}-UNKNOWN"
1443
        ;;
1444
esac
1445

    
1446
set_default $PATHS_LIST
1447

    
1448
add_extralibs $osextralibs
1449

    
1450
# Combine FFLDFLAGS and the LDFLAGS environment variable.
1451
LDFLAGS="$FFLDFLAGS $LDFLAGS"
1452

    
1453
test -n "$cross_prefix" && enable cross_compile
1454

    
1455
# we need to build at least one lib type
1456
if ! enabled_any static shared; then
1457
    cat <<EOF
1458
At least one library type must be built.
1459
Specify --enable-static to build the static libraries or --enable-shared to
1460
build the shared libraries as well. To only build the shared libraries specify
1461
--disable-static in addition to --enable-shared.
1462
EOF
1463
    exit 1;
1464
fi
1465

    
1466
disabled static && LIBNAME=""
1467

    
1468
if enabled_any libfaad libfaadbin ; then
1469
    if check_header faad.h; then
1470
        check_cc <<EOF
1471
#include <faad.h>
1472
#ifndef FAAD2_VERSION
1473
ok faad1
1474
#endif
1475
int main(void) { return 0; }
1476
EOF
1477
        test $? = 0 && enable libfaad2
1478
    else
1479
        die "FAAD test failed."
1480
    fi
1481
fi
1482

    
1483

    
1484
if ! enabled gpl; then
1485
    die_gpl_disabled(){
1486
        name=$1
1487
        shift
1488
        enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
1489
    }
1490
    die_gpl_disabled "The Postprocessing code" postproc
1491
    die_gpl_disabled "libx264"                 libx264
1492
    die_gpl_disabled "libxvidcore"             libxvid
1493
    die_gpl_disabled "FAAD2"                   libfaad2
1494
    die_gpl_disabled "The X11 grabber"         x11grab
1495
    die_gpl_disabled "The software scaler"     swscale
1496
fi
1497

    
1498
if ! enabled nonfree && enabled_any libamr_nb libamr_wb; then
1499
    die "libamr is nonfree and --enable-nonfree is not specified."
1500
fi
1501

    
1502
check_deps $ARCH_EXT_LIST
1503

    
1504
test -z "$need_memalign" && need_memalign="$mmx"
1505

    
1506
#Darwin CC versions
1507
if test $target_os = darwin; then
1508
    if $cc -v 2>&1 | grep -q xlc; then
1509
        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
1510
    else
1511
        add_cflags "-pipe"
1512
        check_cflags "-force_cpusubtype_ALL"
1513
        check_cflags "-Wno-sign-compare"
1514
        enabled shared || check_cflags -mdynamic-no-pic
1515
    fi
1516
fi
1517

    
1518
disabled optimizations || check_cflags -fomit-frame-pointer
1519

    
1520
# Add processor-specific flags
1521
if test $cpu != "generic"; then
1522
    warn_altivec(){
1523
        $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
1524
    }
1525
    case $cpu in
1526
        601|ppc601|PowerPC601)
1527
            add_cflags "-mcpu=601"
1528
            warn_altivec enabled PPC601
1529
        ;;
1530
        603*|ppc603*|PowerPC603*)
1531
            add_cflags "-mcpu=603"
1532
            warn_altivec enabled PPC603
1533
        ;;
1534
        604*|ppc604*|PowerPC604*)
1535
            add_cflags "-mcpu=604"
1536
            warn_altivec enabled PPC604
1537
        ;;
1538
        G3|g3|75*|ppc75*|PowerPC75*)
1539
            add_cflags "-mcpu=750 -mpowerpc-gfxopt"
1540
            warn_altivec enabled PPC75x
1541
        ;;
1542
        G4|g4|745*|ppc745*|PowerPC745*)
1543
            add_cflags "-mcpu=7450 -mpowerpc-gfxopt"
1544
            warn_altivec disabled PPC745x
1545
        ;;
1546
        74*|ppc74*|PowerPC74*)
1547
            add_cflags "-mcpu=7400 -mpowerpc-gfxopt"
1548
            warn_altivec disabled PPC74xx
1549
        ;;
1550
        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
1551
            add_cflags "-mcpu=970 -mpowerpc-gfxopt -mpowerpc64"
1552
            warn_altivec disabled PPC970
1553
            enable ppc64
1554
        ;;
1555
        Cell|CELL|cell)
1556
            add_cflags "-mcpu=cell"
1557
            warn_altivec disabled Cell
1558
            enable ppc64
1559
        ;;
1560
        # targets that do NOT support conditional mov (cmov)
1561
        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
1562
            add_cflags "-march=$cpu"
1563
            disable cmov
1564
        ;;
1565
        # targets that do support conditional mov (cmov)
1566
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2)
1567
            add_cflags "-march=$cpu"
1568
            enable cmov
1569
            enable fast_cmov
1570
        ;;
1571
        # targets that do support conditional mov but on which it's slow
1572
        pentium4|pentium4m|prescott|nocona)
1573
            add_cflags "-march=$cpu"
1574
            enable cmov
1575
            disable fast_cmov
1576
        ;;
1577
        sparc64)
1578
            add_cflags "-mcpu=v9"
1579
        ;;
1580
        arm11*|cortex*)
1581
            add_cflags "-mcpu=$cpu"
1582
            enable fast_unaligned
1583
        ;;
1584
        armv*)
1585
            add_cflags "-march=$cpu"
1586
        ;;
1587
        arm*)
1588
            add_cflags "-mcpu=$cpu"
1589
        ;;
1590
        *)
1591
            echo "WARNING: Unknown CPU \"$cpu\", ignored."
1592
        ;;
1593
    esac
1594
fi
1595

    
1596
# make sure we can execute files in $TMPDIR
1597
cat > $TMPSH 2>> $logfile <<EOF
1598
#! /bin/sh
1599
EOF
1600
chmod +x $TMPSH >> $logfile 2>&1
1601
if ! $TMPSH >> $logfile 2>&1; then
1602
    cat <<EOF
1603
Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
1604
variable to another directory and make sure that $TMPDIR1 is not mounted
1605
noexec.
1606
EOF
1607
    die "Sanity test failed."
1608
fi
1609
rm $TMPSH
1610

    
1611
# compiler sanity check
1612
check_exec <<EOF
1613
int main(void){ return 0; }
1614
EOF
1615
if test "$?" != 0; then
1616
    echo "$cc is unable to create an executable file."
1617
    if test -z "$cross_prefix" && ! enabled cross_compile ; then
1618
        echo "If $cc is a cross-compiler, use the --enable-cross-compile option."
1619
        echo "Only do this if you know what cross compiling means."
1620
    fi
1621
    die "C compiler test failed."
1622
fi
1623

    
1624
check_cc <<EOF || die "Symbol mangling check failed."
1625
int ff_extern;
1626
EOF
1627
sym=$($nm -P -g $TMPO | grep ff_extern)
1628
extern_prefix=${sym%%ff_extern*}
1629

    
1630
check_asm inline_asm '""'
1631

    
1632
if enabled x86; then
1633
    # check whether EBP is available on x86
1634
    # As 'i' is stored on the stack, this program will crash
1635
    # if the base pointer is used to access it because the
1636
    # base pointer is cleared in the inline assembly code.
1637
    check_exec_crash <<EOF && enable ebp_available
1638
    volatile int i=0;
1639
    __asm__ volatile (
1640
        "xorl %%ebp, %%ebp"
1641
    ::: "%ebp");
1642
    return i;
1643
EOF
1644

    
1645
    # check wether EBX is available on x86
1646
    check_asm ebx_available '"":::"%ebx"'
1647

    
1648
    # check whether binutils is new enough to compile SSSE3/MMX2
1649
    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
1650
    enabled mmx2  && check_asm mmx2  '"movss %xmm0, %xmm0"'
1651

    
1652
    check_asm bswap '"bswap %%eax" ::: "%eax"'
1653

    
1654
    YASMFLAGS="-f $objformat -DARCH_$(toupper $arch)"
1655
    enabled     x86_64        && append YASMFLAGS "-m amd64"
1656
    enabled_all x86_64 shared && append YASMFLAGS "-DPIC"
1657
    case "$objformat" in
1658
        elf) enabled debug && append YASMFLAGS "-g dwarf2" ;;
1659
        macho64)              append YASMFLAGS "-DPIC -DPREFIX" ;;
1660
        *)                    append YASMFLAGS "-DPREFIX"  ;;
1661
    esac
1662
    check_yasm "pabsw xmm0, xmm0" && enable yasm
1663
fi
1664

    
1665
# check for assembler specific support
1666

    
1667
if test $arch = "powerpc"; then
1668
    check_asm dcbzl '"dcbzl 0, 1"'
1669
fi
1670

    
1671
# check for SIMD availability
1672

    
1673
# AltiVec flags: The FSF version of GCC differs from the Apple version
1674
if enabled altivec; then
1675
    check_cflags -maltivec -mabi=altivec &&
1676
        { check_header altivec.h && inc_altivec_h="#include <altivec.h>" ; } ||
1677
        check_cflags -faltivec
1678

    
1679
    # check if our compiler supports Motorola AltiVec C API
1680
    check_cc <<EOF || disable altivec
1681
$inc_altivec_h
1682
int main(void) {
1683
    vector signed int v1, v2, v3;
1684
    v1 = vec_add(v2,v3);
1685
    return 0;
1686
}
1687
EOF
1688

    
1689
    # check if our compiler supports braces for vector declarations
1690
    check_cc <<EOF || die "You need a compiler that supports {} in AltiVec vector declarations."
1691
$inc_altivec_h
1692
int main (void) { (vector int) {1}; return 0; }
1693
EOF
1694
fi
1695

    
1696
# We have to check if pld is a nop and disable it.
1697
enabled armv4l  && check_asm pld     '"pld [r0]"'
1698
enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
1699
enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
1700
enabled armvfp  && check_asm armvfp  '"fadds s0, s0, s0"'
1701
enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
1702
enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
1703
enabled neon    && check_asm neon    '"vadd.i16 q0, q0, q0"'
1704
enabled vis     && check_asm vis     '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc
1705

    
1706
enabled vis && add_cflags "-mcpu=ultrasparc -mtune=ultrasparc"
1707

    
1708
# ---
1709
# big/little-endian test
1710
check_cc <<EOF || die "endian test failed"
1711
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
1712
EOF
1713
od -A n -t x1 $TMPO | grep -q '42 *49 *47 *45' && enable bigendian
1714

    
1715
# ---
1716
# check availability of some header files
1717

    
1718
if check_func dlopen; then
1719
    ldl=
1720
elif check_func dlopen -ldl; then
1721
    ldl=-ldl
1722
fi
1723

    
1724
check_func  fork
1725
check_func  gethrtime
1726
check_func  getrusage
1727
check_func  inet_aton $network_extralibs
1728
check_func  memalign
1729
check_func  mkstemp
1730
check_func_headers windows.h GetProcessTimes
1731

    
1732
check_header conio.h
1733
check_header dlfcn.h
1734
check_header malloc.h
1735
check_header poll.h
1736
check_header sys/mman.h
1737
check_header sys/resource.h
1738
check_header sys/select.h
1739
check_header termios.h
1740

    
1741
if ! enabled_any memalign memalign_hack && enabled need_memalign ; then
1742
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
1743
fi
1744

    
1745
enabled  zlib && check_lib  zlib.h      zlibVersion -lz   || disable  zlib
1746
enabled bzlib && check_lib bzlib.h BZ2_bzlibVersion -lbz2 || disable bzlib
1747

    
1748
# check for some common methods of building with pthread support
1749
# do this before the optional library checks as some of them require pthreads
1750
if enabled pthreads; then
1751
    if check_func pthread_create; then
1752
        :
1753
    elif check_func pthread_create -pthread; then
1754
        add_cflags -pthread
1755
        add_extralibs -pthread
1756
    elif check_func pthread_create -pthreads; then
1757
        add_cflags -pthreads
1758
        add_extralibs -pthreads
1759
    elif check_func pthread_create -lpthreadGC2; then
1760
        add_extralibs -lpthreadGC2
1761
    elif ! check_lib pthread.h pthread_create -lpthread; then
1762
        die "ERROR: can't find pthreads library"
1763
    fi
1764
fi
1765

    
1766
for thread in $THREADS_LIST; do
1767
    if enabled $thread; then
1768
        test -n "$thread_type" &&
1769
            die "ERROR: Only one thread type must be selected." ||
1770
            thread_type="$thread"
1771
    fi
1772
done
1773

    
1774
check_lib math.h sin -lm
1775

    
1776
# test for C99 functions in math.h
1777
for func in llrint lrint lrintf round roundf; do
1778
    check_exec <<EOF && enable $func || disable $func
1779
#include <math.h>
1780
int main(void) { return ($func(3.999f) > 0)?0:1; }
1781
EOF
1782
done
1783

    
1784
# these are off by default, so fail if requested and not available
1785
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
1786
enabled libamr_nb  && require  libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
1787
enabled libamr_wb  && require  libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
1788
enabled libdirac   && add_cflags $(pkg-config --cflags dirac) &&
1789
                      require  libdirac libdirac_decoder/dirac_parser.h dirac_decoder_init -ldirac_decoder &&
1790
                      require  libdirac libdirac_encoder/dirac_encoder.h dirac_encoder_init -ldirac_encoder
1791
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
1792
enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
1793
enabled libgsm     && require  libgsm gsm.h gsm_create -lgsm
1794
enabled libmp3lame && require  LAME lame/lame.h lame_init -lmp3lame -lm
1795
enabled libnut     && require  libnut libnut.h nut_demuxer_init -lnut
1796
enabled libschroedinger && add_cflags $(pkg-config --cflags schroedinger-1.0) &&
1797
                           require libschroedinger schroedinger/schro.h schro_init $(pkg-config --libs schroedinger-1.0)
1798
enabled libspeex   && require  libspeex speex/speex.h speex_decoder_init -lspeex
1799
enabled libtheora  && require  libtheora theora/theora.h theora_info_init -ltheora -logg
1800
enabled libvorbis  && require  libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
1801
enabled libx264    && require  x264 x264.h x264_encoder_open -lx264 -lm &&
1802
                      { check_cpp_condition x264.h "X264_BUILD >= 65" ||
1803
                        die "ERROR: libx264 version must be >= 0.65."; }
1804
enabled libxvid    && require  Xvid xvid.h xvid_global -lxvidcore
1805
enabled mlib       && require  mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib
1806

    
1807
# libdc1394 check
1808
if enabled libdc1394; then
1809
    { check_lib dc1394/dc1394.h dc1394_new -ldc1394 -lraw1394 &&
1810
        enable libdc1394_2; } ||
1811
    { check_lib libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394 &&
1812
        enable libdc1394_1; } ||
1813
    die "ERROR: No version of libdc1394 found "
1814
fi
1815

    
1816

    
1817
_restrict=
1818
for restrict_keyword in restrict __restrict__ __restrict; do
1819
    check_cc <<EOF && _restrict=$restrict_keyword && break
1820
void foo(char * $restrict_keyword p);
1821
EOF
1822
done
1823

    
1824
test "$vhook" = "default" && vhook="$dlopen"
1825

    
1826
if test "$target_os" = cygwin -o "$target_os" = mingw32 && enabled_all static vhook ; then
1827
    disable vhook
1828
    echo
1829
    echo "At the moment vhooks don't work on Cygwin or MinGW static builds."
1830
    echo "Patches welcome."
1831
    echo
1832
fi
1833

    
1834
if enabled vhook; then
1835
    check_ldflags -rdynamic
1836
    check_ldflags -export-dynamic
1837
fi
1838

    
1839
check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
1840
check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType
1841

    
1842
##########################################
1843
# SDL check
1844

    
1845
disable sdl_too_old
1846
disable sdl
1847
SDL_CONFIG="${cross_prefix}sdl-config"
1848
if "${SDL_CONFIG}" --version > /dev/null 2>&1; then
1849
    sdl_cflags=`"${SDL_CONFIG}" --cflags`
1850
    temp_cflags $sdl_cflags
1851
    temp_extralibs `"${SDL_CONFIG}" --libs`
1852
    if check_lib2 SDL.h SDL_Init; then
1853
        _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
1854
        if test "$_sdlversion" -lt 121 ; then
1855
            enable sdl_too_old
1856
        else
1857
            enable sdl
1858
            check_cc $sdl_cflags <<EOF && enable sdl_video_size
1859
#include <SDL.h>
1860
int main(int argc, char **argv){
1861
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
1862
    int w = vi->current_w;
1863
    return 0;
1864
}
1865
EOF
1866
        fi
1867
    fi
1868
    restore_flags
1869
fi
1870

    
1871
texi2html -version > /dev/null 2>&1 && enable texi2html || disable texi2html
1872

    
1873
##########################################
1874
# Network check
1875

    
1876
if enabled network; then
1877
    check_type sys/socket.h socklen_t
1878
    # Prefer arpa/inet.h over winsock2
1879
    if check_header arpa/inet.h ; then
1880
        check_func closesocket
1881
    elif check_header winsock2.h ; then
1882
        network_extralibs="-lws2_32"
1883
        check_type ws2tcpip.h socklen_t
1884
        check_func_headers winsock2.h closesocket
1885
    fi
1886
fi
1887

    
1888
##########################################
1889
# IPv6 check
1890

    
1891
enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
1892
#include <sys/types.h>
1893
#include <sys/socket.h>
1894
#include <netinet/in.h>
1895
#include <netdb.h>
1896
int main(void) {
1897
    struct sockaddr_storage saddr;
1898
    struct ipv6_mreq mreq6;
1899
    getaddrinfo(0,0,0,0);
1900
    getnameinfo(0,0,0,0,0,0,0);
1901
    IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
1902
}
1903
EOF
1904

    
1905
check_header linux/videodev.h
1906
check_header linux/videodev2.h
1907
check_header sys/videoio.h
1908

    
1909
check_func_headers "windows.h vfw.h" capCreateCaptureWindow -lvfw32
1910

    
1911
# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
1912
{ check_header dev/bktr/ioctl_meteor.h &&
1913
  check_header dev/bktr/ioctl_bt848.h; } ||
1914
{ check_header machine/ioctl_meteor.h &&
1915
  check_header machine/ioctl_bt848.h; } ||
1916
{ check_header dev/video/meteor/ioctl_meteor.h &&
1917
  check_header dev/video/bktr/ioctl_bt848.h; } ||
1918
check_header dev/ic/bt8xx.h
1919

    
1920
check_header sys/soundcard.h
1921
check_header soundcard.h
1922

    
1923
# deal with the X11 frame grabber
1924
enabled x11grab                         &&
1925
check_header X11/Xlib.h                 &&
1926
check_header X11/extensions/XShm.h      &&
1927
check_func XOpenDisplay -lX11           &&
1928
check_func XShmCreateImage -lX11 -lXext
1929

    
1930
enabled debug && add_cflags -g"$debuglevel"
1931

    
1932
# add some useful compiler flags if supported
1933
check_cflags -Wdeclaration-after-statement
1934
check_cflags -Wall
1935
check_cflags -Wno-switch
1936
check_cflags -Wdisabled-optimization
1937
check_cflags -Wpointer-arith
1938
check_cflags -Wredundant-decls
1939
check_cflags -Wno-pointer-sign
1940
check_cflags -Wcast-qual
1941
check_cflags -Wwrite-strings
1942
check_cflags -Wtype-limits
1943
enabled extra_warnings && check_cflags -Winline
1944

    
1945
# add some linker flags
1946
check_ldflags -Wl,--warn-common
1947
check_ldflags -Wl,--as-needed
1948
check_ldflags '-Wl,-rpath-link,\$(BUILD_ROOT)/libpostproc -Wl,-rpath-link,\$(BUILD_ROOT)/libswscale -Wl,-rpath-link,\$(BUILD_ROOT)/libavfilter -Wl,-rpath-link,\$(BUILD_ROOT)/libavdevice -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
1949
check_ldflags -Wl,-Bsymbolic
1950

    
1951
if enabled small; then
1952
    check_cflags -Os            # not all compilers support -Os
1953
    optimizations="small"
1954
elif enabled optimizations; then
1955
    if $cc -v 2>&1 | grep -q xlc; then
1956
        add_cflags  "-O5"
1957
        add_ldflags "-O5"
1958
    else
1959
        add_cflags "-O3"
1960
    fi
1961
fi
1962
check_cflags -fno-math-errno
1963
check_cflags -fno-signed-zeros
1964

    
1965
# add some flags for Intel C Compiler
1966
if $cc --version 2> /dev/null | grep -q Intel; then
1967
  # Just warnings, no remarks
1968
  check_cflags -w1
1969
  # -wd: Disable following warnings
1970
  # 144, 167, 556: -Wno-pointer-sign
1971
  # 10006: ignoring unknown option -fno-signed-zeros
1972
  # 10156: ignoring option '-W'; no argument required
1973
  check_cflags -wd144,167,556,10006,10156
1974
  # 11030: Warning unknown option --as-needed
1975
  # 10156: ignoring option '-export'; no argument required
1976
  check_ldflags -wd10156,11030
1977
  # Allow to compile with optimizations
1978
  check_ldflags -march=$cpu
1979
fi
1980

    
1981
# PIC flags for shared library objects where they are needed
1982
if enabled shared; then
1983
    # LIBOBJFLAGS may have already been set in the OS configuration
1984
    if test -z "$LIBOBJFLAGS" ; then
1985
        case "$arch" in
1986
            x86_64|ia64|alpha|sparc*|power*|parisc*|mips*) LIBOBJFLAGS='$(PIC)' ;;
1987
        esac
1988
    fi
1989
fi
1990

    
1991
if enabled gprof; then
1992
    add_cflags  "-p"
1993
    add_ldflags "-p"
1994
fi
1995

    
1996
VHOOKCFLAGS="-fPIC"
1997

    
1998
# Find out if the .align argument is a power of two or not.
1999
if test $asmalign_pot = "unknown"; then
2000
    disable asmalign_pot
2001
    echo '__asm__ (".align 3");' | check_cc && enable asmalign_pot
2002
fi
2003

    
2004
enabled_any $DECODER_LIST      && enable decoders
2005
enabled_any $ENCODER_LIST      && enable encoders
2006
enabled_any $BSF_LIST          && enable bsfs
2007
enabled_any $DEMUXER_LIST      && enable demuxers
2008
enabled_any $MUXER_LIST        && enable muxers
2009
enabled_any $FILTER_LIST       && enable filters
2010
enabled_any $INDEV_LIST        && enable demuxers
2011
enabled_any $OUTDEV_LIST       && enable muxers
2012
enabled_any $PROTOCOL_LIST     && enable protocols
2013

    
2014
enabled_any $THREADS_LIST      && enable threads
2015

    
2016
check_deps $CONFIG_LIST       \
2017
           $HAVE_LIST         \
2018
           $DECODER_LIST      \
2019
           $ENCODER_LIST      \
2020
           $PARSER_LIST       \
2021
           $BSF_LIST          \
2022
           $DEMUXER_LIST      \
2023
           $MUXER_LIST        \
2024
           $FILTER_LIST       \
2025
           $INDEV_LIST        \
2026
           $OUTDEV_LIST       \
2027
           $PROTOCOL_LIST     \
2028

    
2029
enabled libdc1394 && append pkg_requires "libraw1394"
2030
enabled libdirac  && append pkg_requires "dirac"
2031
enabled libtheora && append pkg_requires "theora"
2032
enabled libvorbis && append pkg_requires "vorbisenc"
2033

    
2034
echo "install prefix            $prefix"
2035
echo "source path               $source_path"
2036
echo "C compiler                $cc"
2037
echo ".align is power-of-two    $asmalign_pot"
2038
echo "ARCH                      $arch ($cpu)"
2039
if test "$build_suffix" != ""; then
2040
    echo "build suffix              $build_suffix"
2041
fi
2042
if test "$extra_version" != ""; then
2043
    echo "version string suffix     $extra_version"
2044
fi
2045
echo "big-endian                ${bigendian-no}"
2046
if test $arch = "x86_32" -o $arch = "x86_64"; then
2047
    echo "yasm                      ${yasm-no}"
2048
    echo "MMX enabled               ${mmx-no}"
2049
    echo "CMOV enabled              ${cmov-no}"
2050
    echo "CMOV is fast              ${fast_cmov-no}"
2051
    echo "EBX available             ${ebx_available-no}"
2052
    echo "EBP available             ${ebp_available-no}"
2053
fi
2054
if test $arch = "armv4l"; then
2055
    echo "ARMv5TE enabled           ${armv5te-no}"
2056
    echo "ARMv6 enabled             ${armv6-no}"
2057
    echo "ARM VFP enabled           ${armvfp-no}"
2058
    echo "IWMMXT enabled            ${iwmmxt-no}"
2059
    echo "NEON enabled              ${neon-no}"
2060
fi
2061
if test $arch = "mips"; then
2062
    echo "MMI enabled               ${mmi-no}"
2063
fi
2064
if test $arch = "powerpc"; then
2065
    echo "AltiVec enabled           ${altivec-no}"
2066
    echo "dcbzl available           ${dcbzl-no}"
2067
fi
2068
echo "gprof enabled             ${gprof-no}"
2069
echo "debug symbols             ${debug-no}"
2070
echo "strip symbols             ${stripping-no}"
2071
echo "optimizations             ${optimizations-no}"
2072
echo "static                    ${static-no}"
2073
echo "shared                    ${shared-no}"
2074
echo "postprocessing support    ${postproc-no}"
2075
echo "software scaler enabled   ${swscale-no}"
2076
echo "new filter support        ${avfilter-no}"
2077
echo "filters using lavformat   ${avfilter_lavf-no}"
2078
echo "video hooking             ${vhook-no}"
2079
if enabled vhook; then
2080
    echo "Imlib2 support            ${imlib2-no}"
2081
    echo "FreeType support          ${freetype2-no}"
2082
fi
2083
echo "network support           ${network-no}"
2084
if enabled network; then
2085
    echo "IPv6 support              ${ipv6-no}"
2086
fi
2087
echo "threading support         ${thread_type-no}"
2088
echo "SDL support               ${sdl-no}"
2089
if enabled sdl_too_old; then
2090
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
2091
fi
2092
echo "Sun medialib support      ${mlib-no}"
2093
echo "AVISynth enabled          ${avisynth-no}"
2094
echo "libamr-nb support         ${libamr_nb-no}"
2095
echo "libamr-wb support         ${libamr_wb-no}"
2096
echo "libdc1394 support         ${libdc1394-no}"
2097
echo "libdirac enabled          ${libdirac-no}"
2098
echo "libfaac enabled           ${libfaac-no}"
2099
echo "libfaad enabled           ${libfaad-no}"
2100
echo "libfaad dlopened          ${libfaadbin-no}"
2101
echo "libgsm enabled            ${libgsm-no}"
2102
echo "libmp3lame enabled        ${libmp3lame-no}"
2103
echo "libnut enabled            ${libnut-no}"
2104
echo "libschroedinger enabled   ${libschroedinger-no}"
2105
echo "libspeex enabled          ${libspeex-no}"
2106
echo "libtheora enabled         ${libtheora-no}"
2107
echo "libvorbis enabled         ${libvorbis-no}"
2108
echo "libx264 enabled           ${libx264-no}"
2109
echo "libxvid enabled           ${libxvid-no}"
2110
echo "zlib enabled              ${zlib-no}"
2111
echo "bzlib enabled             ${bzlib-no}"
2112
echo
2113

    
2114
for type in decoder encoder parser demuxer muxer protocol filter bsf indev outdev; do
2115
    echo "Enabled ${type}s:"
2116
    eval list=\$$(toupper $type)_LIST
2117
    for part in $list; do
2118
        enabled $part && echo ${part%_*}
2119
    done | sort | pr -3 -t
2120
    echo
2121
done
2122

    
2123
license="LGPL"
2124
if enabled nonfree; then
2125
    license="unredistributable"
2126
elif enabled gpl; then
2127
    license="GPL"
2128
fi
2129

    
2130
echo "License: $license"
2131

    
2132
echo "Creating config.mak and config.h..."
2133

    
2134
echo "# Automatically generated by configure - do not modify!" > config.mak
2135
echo "/* Automatically generated by configure - do not modify! */" > $TMPH
2136
echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
2137
echo "#define FFMPEG_CONFIG_H" >> $TMPH
2138
echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
2139

    
2140
echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak
2141
echo "prefix=$prefix" >> config.mak
2142
echo "LIBDIR=\$(DESTDIR)$libdir" >> config.mak
2143
echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
2144
echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
2145
echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
2146
echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
2147
echo "CC=$cc" >> config.mak
2148
echo "YASM=$yasmexe" >> config.mak
2149
echo "AR=$ar" >> config.mak
2150
echo "RANLIB=$ranlib" >> config.mak
2151
echo "LN_S=$ln_s" >> config.mak
2152
enabled stripping &&
2153
    echo "STRIP=$strip" >> config.mak ||
2154
    echo "STRIP=echo ignoring strip" >> config.mak
2155

    
2156
echo "OPTFLAGS=$CFLAGS" >> config.mak
2157
echo "VHOOKCFLAGS=$VHOOKCFLAGS" >> config.mak
2158
echo "LDFLAGS=$LDFLAGS" >> config.mak
2159
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
2160
echo "SHFLAGS=$SHFLAGS" >> config.mak
2161
echo "YASMFLAGS=$YASMFLAGS" >> config.mak
2162
echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
2163
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
2164
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
2165
echo "BUILD_STATIC=$static" >> config.mak
2166
echo "BUILDSUF=$build_suffix" >> config.mak
2167
echo "FULLNAME=$FULLNAME" >> config.mak
2168
echo "LIBPREF=$LIBPREF" >> config.mak
2169
echo "LIBSUF=$LIBSUF" >> config.mak
2170
echo "LIBNAME=$LIBNAME" >> config.mak
2171
echo "SLIBPREF=$SLIBPREF" >> config.mak
2172
echo "SLIBSUF=$SLIBSUF" >> config.mak
2173
echo "EXESUF=$EXESUF" >> config.mak
2174
echo "EXTRA_VERSION=$extra_version" >> config.mak
2175
echo "DEPEND_CMD=$DEPEND_CMD" >> config.mak
2176

    
2177
if enabled bigendian; then
2178
    echo "WORDS_BIGENDIAN=yes" >> config.mak
2179
    echo "#define WORDS_BIGENDIAN 1" >> $TMPH
2180
fi
2181

    
2182
if enabled sdl; then
2183
    echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak
2184
    echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak
2185
fi
2186
if enabled texi2html; then
2187
    echo "BUILD_DOC=yes" >> config.mak
2188
fi
2189

    
2190
get_version(){
2191
    name=$1
2192
    file=$source_path/$2
2193
    eval $(grep "#define ${name}_VERSION_M" "$file" | awk '{ print $2"="$3 }')
2194
    eval ${name}_VERSION=\$${name}_VERSION_MAJOR.\$${name}_VERSION_MINOR.\$${name}_VERSION_MICRO
2195
    lcname=$(tolower $name)
2196
    eval echo "${lcname}_VERSION=\$${name}_VERSION" >> config.mak
2197
    eval echo "${lcname}_VERSION_MAJOR=\$${name}_VERSION_MAJOR" >> config.mak
2198
}
2199

    
2200
get_version LIBSWSCALE  libswscale/swscale.h
2201
get_version LIBPOSTPROC libpostproc/postprocess.h
2202
get_version LIBAVCODEC  libavcodec/avcodec.h
2203
get_version LIBAVDEVICE libavdevice/avdevice.h
2204
get_version LIBAVFORMAT libavformat/avformat.h
2205
get_version LIBAVUTIL   libavutil/avutil.h
2206
get_version LIBAVFILTER libavfilter/avfilter.h
2207

    
2208
if enabled shared; then
2209
    echo "BUILD_SHARED=yes" >> config.mak
2210
    echo "PIC=-fPIC -DPIC" >> config.mak
2211
    echo "LIBTARGET=${LIBTARGET}" >> config.mak
2212
    echo "SLIBNAME=${SLIBNAME}" >> config.mak
2213
    echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
2214
    echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
2215
    echo "SLIB_CREATE_DEF_CMD=${SLIB_CREATE_DEF_CMD}" >> config.mak
2216
    echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
2217
    echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
2218
    echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> config.mak
2219
fi
2220
echo "LIB_INSTALL_EXTRA_CMD=${LIB_INSTALL_EXTRA_CMD}" >> config.mak
2221
echo "EXTRALIBS=$extralibs" >> config.mak
2222

    
2223
print_config ARCH_   $TMPH config.mak $ARCH_LIST
2224
print_config HAVE_   $TMPH config.mak $HAVE_LIST
2225
print_config CONFIG_ $TMPH config.mak $CONFIG_LIST       \
2226
                                      $DECODER_LIST      \
2227
                                      $ENCODER_LIST      \
2228
                                      $PARSER_LIST       \
2229
                                      $BSF_LIST          \
2230
                                      $DEMUXER_LIST      \
2231
                                      $MUXER_LIST        \
2232
                                      $FILTER_LIST       \
2233
                                      $PROTOCOL_LIST     \
2234
                                      $INDEV_LIST        \
2235
                                      $OUTDEV_LIST       \
2236

    
2237
echo "#define restrict $_restrict" >> $TMPH
2238

    
2239
if enabled small; then
2240
    echo "#define av_always_inline"  >> $TMPH
2241
fi
2242

    
2243
echo "SRC_PATH=\"$source_path\"" >> config.mak
2244
echo "SRC_PATH_BARE=$source_path" >> config.mak
2245
echo "BUILD_ROOT=\"$PWD\"" >> config.mak
2246

    
2247
# Apparently it's not possible to portably echo a backslash.
2248
enabled asmalign_pot &&
2249
    printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
2250
    printf '#define ASMALIGN(ZEROBITS) ".align 1 << " #ZEROBITS "\\n\\t"\n' >> $TMPH
2251

    
2252
echo "#define EXTERN_PREFIX \"${extern_prefix}\"" >> $TMPH
2253

    
2254
echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH
2255

    
2256
# Do not overwrite an unchanged config.h to avoid superfluous rebuilds.
2257
cmp -s $TMPH config.h &&
2258
    echo "config.h is unchanged" ||
2259
    mv -f $TMPH config.h
2260

    
2261
rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
2262

    
2263
# build tree in object directory if source path is different from current one
2264
if enabled source_path_used; then
2265
    DIRS="\
2266
        doc               \
2267
        libavcodec        \
2268
        libavcodec/alpha  \
2269
        libavcodec/armv4l \
2270
        libavcodec/bfin   \
2271
        libavcodec/i386   \
2272
        libavcodec/mlib   \
2273
        libavcodec/ppc    \
2274
        libavcodec/sh4    \
2275
        libavcodec/sparc  \
2276
        libavdevice       \
2277
        libavfilter       \
2278
        libavformat       \
2279
        libavutil         \
2280
        libpostproc       \
2281
        libswscale        \
2282
        tests             \
2283
        tools             \
2284
        vhook             \
2285
        "
2286
    FILES="\
2287
        Makefile             \
2288
        common.mak           \
2289
        subdir.mak           \
2290
        doc/texi2pod.pl      \
2291
        libavcodec/Makefile  \
2292
        libavdevice/Makefile \
2293
        libavfilter/Makefile \
2294
        libavformat/Makefile \
2295
        libavutil/Makefile   \
2296
        libpostproc/Makefile \
2297
        libswscale/Makefile  \
2298
        "
2299
    for dir in $DIRS ; do
2300
        mkdir -p $dir
2301
    done
2302
    for f in $FILES ; do
2303
        $ln_s "$source_path/$f" $f
2304
    done
2305
fi
2306

    
2307

    
2308
# build pkg-config files
2309

    
2310
pkgconfig_generate(){
2311
name=$1
2312
shortname=${name#lib}
2313
comment=$2
2314
version=$3
2315
libs=$4
2316
requires=$5
2317
cat <<EOF > $name/$name.pc
2318
prefix=$prefix
2319
exec_prefix=\${prefix}
2320
libdir=$libdir
2321
includedir=$incdir
2322

    
2323
Name: $name
2324
Description: $comment
2325
Version: $version
2326
Requires: $(disabled shared && echo $requires)
2327
Requires.private: $(enabled shared && echo $requires)
2328
Conflicts:
2329
Libs: -L\${libdir} -l${shortname} $(disabled shared && echo $libs)
2330
Libs.private: $(enabled shared && echo $libs)
2331
Cflags: -I\${includedir}
2332
EOF
2333
cat <<EOF > $name/$name-uninstalled.pc
2334
prefix=
2335
exec_prefix=
2336
libdir=\${pcfiledir}
2337
includedir=${source_path}
2338

    
2339
Name: $name
2340
Description: $comment
2341
Version: $version
2342
Requires: $requires
2343
Conflicts:
2344
Libs: \${libdir}/${LIBPREF}${shortname}${LIBSUF} $libs
2345
Cflags: -I\${includedir}
2346
EOF
2347
}
2348

    
2349
pkgconfig_generate libavutil "FFmpeg utility library" "$LIBAVUTIL_VERSION"
2350
pkgconfig_generate libavcodec "FFmpeg codec library" "$LIBAVCODEC_VERSION" "$extralibs" "$pkg_requires libavutil = $LIBAVUTIL_VERSION"
2351
pkgconfig_generate libavformat "FFmpeg container format library" "$LIBAVFORMAT_VERSION" "$extralibs" "$pkg_requires libavcodec = $LIBAVCODEC_VERSION"
2352
pkgconfig_generate libavdevice "FFmpeg device handling library" "$LIBAVDEVICE_VERSION" "$extralibs" "$pkg_requires libavformat = $LIBAVFORMAT_VERSION"
2353
enabled avfilter &&
2354
    pkgconfig_generate libavfilter "FFmpeg video filtering library" "$LIBAVFILTER_VERSION" "$extralibs" "$pkg_requires libavutil = $LIBAVUTIL_VERSION"
2355
enabled postproc &&
2356
    pkgconfig_generate libpostproc "FFmpeg post processing library" "$LIBPOSTPROC_VERSION"
2357
if enabled swscale; then
2358
    pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "libavutil = $LIBAVUTIL_VERSION"
2359
else
2360
    pkgconfig_generate libswscale "FFmpeg image rescaling library" "$LIBSWSCALE_VERSION" "" "$pkg_requires libavcodec = $LIBAVCODEC_VERSION"
2361
    apply libswscale/libswscale.pc sed s/^Libs:.*$/Libs:/
2362
fi