configure 63.6 KB
Newer Older
1
#!/bin/sh
2
#
3 4 5 6 7
# FFmpeg configure script
#
# Copyright (c) 2000, 2001, 2002 Fabrice Bellard
# Copyright (c) 2005-2006 Diego Biurrun
# Copyright (c) 2005-2006 Mans Rullgard
8
#
9

10
# make sure we are running under a compatible shell
11 12 13
# try to make this part work with most shells

try_exec(){
14
    echo "Trying shell $1"
15
    type "$1" > /dev/null 2>&1 && exec "$@"
16 17
}

Måns Rullgård's avatar
Måns Rullgård committed
18
unset foo
19
(: ${foo%%bar}) 2> /dev/null
20 21
E1="$?"

22
(: ${foo?}) 2> /dev/null
23 24 25 26
E2="$?"

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

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

190
log(){
191
    echo "$@" >> $logfile
192 193
}

194
log_file(){
Måns Rullgård's avatar
Måns Rullgård committed
195
    log BEGIN $1
196
    pr -n -t $1 >> $logfile
Måns Rullgård's avatar
Måns Rullgård committed
197 198 199
    log END $1
}

200
echolog(){
Måns Rullgård's avatar
Måns Rullgård committed
201
    log "$@"
202
    echo "$@"
203 204 205 206 207 208 209
}

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

227
# Avoid locale weirdness, besides we really just want to translate ASCII.
228
toupper(){
229
    echo "$@" | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
230 231
}

Måns Rullgård's avatar
Måns Rullgård committed
232
tolower(){
233
    echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
Måns Rullgård's avatar
Måns Rullgård committed
234 235
}

236 237 238 239 240 241 242 243
set_all(){
    value=$1
    shift
    for var in $*; do
        eval $var=$value
    done
}

244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262
pushvar(){
    for var in $*; do
        eval level=\${${var}_level:=0}
        eval ${var}_${level}="\$$var"
        eval ${var}_level=$(($level+1))
    done
}

popvar(){
    for var in $*; do
        eval level=\${${var}_level:-0}
        test $level = 0 && continue
        eval level=$(($level-1))
        eval $var="\${${var}_${level}}"
        eval ${var}_level=$level
        eval unset ${var}_${level}
    done
}

263 264 265 266 267 268 269 270
enable(){
    set_all yes $*
}

disable(){
    set_all no $*
}

271
enabled(){
272 273 274
    eval test "x\$$1" = "xyes"
}

275 276 277 278
disabled(){
    eval test "x\$$1" = "xno"
}

279 280 281 282 283 284
enabled_all(){
    for opt; do
        enabled $opt || return 1
    done
}

285 286 287 288 289 290
disabled_all(){
    for opt; do
        disabled $opt || return 1
    done
}

291 292 293 294 295 296
enabled_any(){
    for opt; do
        enabled $opt && return 0
    done
}

297 298 299 300 301 302
disabled_any(){
    for opt; do
        disabled $opt && return 0
    done
}

303 304 305 306 307 308 309 310 311
is_in(){
    value=$1
    shift
    for var in $*; do
        [ $var = $value ] && return 0
    done
    return 1
}

312 313
check_deps(){
    for cfg; do
314 315 316 317
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
        disabled ${cfg}_checking && continue
        enable ${cfg}_checking

318 319
        eval dep_all="\$${cfg}_deps"
        eval dep_any="\$${cfg}_deps_any"
320 321 322 323 324

        pushvar cfg dep_all dep_any
        check_deps $dep_all $dep_any
        popvar cfg dep_all dep_any

325 326
        enabled_all $dep_all || disable $cfg
        enabled_any $dep_any || disable $cfg
327

328 329 330 331 332
        if enabled $cfg; then
            eval dep_extralibs="\$${cfg}_extralibs"
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
        fi

333
        disable ${cfg}_checking
334 335 336
    done
}

337 338 339 340 341 342
print_config(){
    pfx=$1
    header=$2
    makefile=$3
    shift 3
    for cfg; do
343
        ucname="`toupper $cfg`"
344
        if enabled $cfg; then
345 346 347 348 349
            echo "#define ${pfx}${ucname} 1" >> $header
            echo "#define ENABLE_${ucname} 1" >> $header
            echo "${pfx}${ucname}=yes" >> $makefile
        else
            echo "#define ENABLE_${ucname} 0" >> $header
350 351
        fi
    done
352 353 354
}

flags_saved(){
355
    (: ${SAVE_CFLAGS?}) 2> /dev/null
356 357
}

358
save_flags(){
359
    flags_saved && return
360 361 362 363 364 365
    SAVE_CFLAGS="$CFLAGS"
    SAVE_LDFLAGS="$LDFLAGS"
    SAVE_extralibs="$extralibs"
}

restore_flags(){
366
    flags_saved || return
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389
    CFLAGS="$SAVE_CFLAGS"
    LDFLAGS="$SAVE_LDFLAGS"
    extralibs="$SAVE_extralibs"
    unset SAVE_CFLAGS
    unset SAVE_LDFLAGS
    unset SAVE_extralibs
}

temp_cflags(){
    save_flags
    CFLAGS="$CFLAGS $*"
}

temp_ldflags(){
    save_flags
    LDFLAGS="$LDFLAGS $*"
}

temp_extralibs(){
    save_flags
    extralibs="$extralibs $*"
}

390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408
append(){
    var=$1
    shift
    flags_saved && eval "SAVE_$var=\"\$SAVE_$var $*\""
    eval "$var=\"\$$var $*\""
}

add_cflags(){
    append CFLAGS "$@"
}

add_ldflags(){
    append LDFLAGS "$@"
}

add_extralibs(){
    append extralibs "$@"
}

409
check_cmd(){
Måns Rullgård's avatar
Måns Rullgård committed
410
    log "$@"
411
    "$@" >> $logfile 2>&1
412 413
}

414
check_cc(){
415
    log check_cc "$@"
416
    cat > $TMPC
417
    log_file $TMPC
418
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
419 420 421 422
}

check_cpp(){
    log check_cpp "$@"
423
    cat > $TMPC
424
    log_file $TMPC
425
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
426 427
}

428 429 430 431 432 433
check_asm(){
    log check_asm "$@"
    name="$1"
    asm="$2"
    shift 2
    check_cc "$@" <<EOF && enable $name || disable $name
434
int foo(void){ asm volatile($asm); }
435 436 437
EOF
}

438
check_ld(){
439
    log check_ld "$@"
440
    check_cc || return
441 442 443 444 445 446
    flags=''
    libs=''
    for f; do
        test "${f}" = "${f#-l}" && flags="$flags $f" || libs="$libs $f"
    done
    check_cmd $cc $LDFLAGS $flags -o $TMPE $TMPO $extralibs $libs
447 448 449
}

check_cflags(){
450 451
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
452 453 454 455 456
int x;
EOF
}

check_ldflags(){
457 458
    log check_ldflags "$@"
    check_ld "$@" <<EOF && add_ldflags "$@"
459
int main(void){ return 0; }
460 461 462 463
EOF
}

check_header(){
464
    log check_header "$@"
465 466
    header=$1
    shift
Måns Rullgård's avatar
Måns Rullgård committed
467 468 469
    var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
    disable $var
    check_cpp "$@" <<EOF && enable $var
470 471 472 473 474 475
#include <$header>
int x;
EOF
}

check_func(){
476
    log check_func "$@"
477 478
    func=$1
    shift
Måns Rullgård's avatar
Måns Rullgård committed
479 480
    disable $func
    check_ld "$@" <<EOF && enable $func
481
extern int $func();
482
int main(void){ $func(); }
483 484 485
EOF
}

486 487 488 489 490 491 492 493 494 495 496 497 498
check_func2(){
    log check_func2 "$@"
    headers=$1
    func=$2
    shift 2
    disable $func
    incs=""
    for hdr in $headers; do
        incs="$incs
#include <$hdr>"
    done
    check_ld "$@" <<EOF && enable $func
$incs
499
int main(int argc, char **argv){
500 501 502 503 504 505
    (void) $func;
    return 0;
}
EOF
}

506 507 508 509 510
check_lib(){
    log check_lib "$@"
    header="$1"
    func="$2"
    shift 2
511 512 513 514 515
    temp_extralibs "$@"
    check_header $header && check_func $func && add_extralibs "$@"
    err=$?
    restore_flags
    return $err
516 517
}

518 519 520 521 522 523 524 525 526 527 528 529
check_lib2(){
    log check_lib2 "$@"
    headers="$1"
    func="$2"
    shift 2
    temp_extralibs "$@"
    check_func2 "$headers" $func && add_extralibs "$@"
    err=$?
    restore_flags
    return $err
}

530
check_exec(){
531
    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
532 533
}

534 535 536 537 538 539 540 541 542
check_exec_crash(){
    code=`cat`

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

543
    (check_exec "$@") >> $logfile 2>&1 <<EOF
544 545 546 547
#include <signal.h>
static void sighandler(int sig){
    raise(SIGTERM);
}
Diego Biurrun's avatar
Diego Biurrun committed
548
int main(void){
549 550 551 552 553 554 555 556 557 558 559
    signal(SIGILL, sighandler);
    signal(SIGFPE, sighandler);
    signal(SIGSEGV, sighandler);
#ifdef SIGBUS
    signal(SIGBUS, sighandler);
#endif
    { $code }
}
EOF
}

560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576
check_type(){
    log check_type "$@"
    headers=$1
    type=$2
    shift 2
    disable $type
    incs=""
    for hdr in $headers; do
        incs="$incs
#include <$hdr>"
    done
    check_cc "$@" <<EOF && enable $type
$incs
$type v;
EOF
}

577 578 579 580 581 582
require(){
    name="$1"
    header="$2"
    func="$3"
    shift 3
    check_lib $header $func "$@" || die "ERROR: $name not found"
583 584
}

585 586 587 588 589 590 591 592
require2(){
    name="$1"
    headers="$2"
    func="$3"
    shift 3
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
}

593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609
check_foo_config(){
    cfg=$1
    pkg=$2
    header=$3
    func=$4
    shift 4
    disable $cfg
    check_cmd ${pkg}-config --version
    err=$?
    if test "$err" = 0; then
        temp_cflags `${pkg}-config --cflags`
        temp_extralibs `${pkg}-config --libs`
        check_lib "$@" $header $func && enable $cfg
    fi
    return $err
}

610 611 612 613 614 615
apply(){
    file=$1
    shift
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
}

616 617 618 619 620
COMPONENT_LIST="
    bsfs
    decoders
    demuxers
    encoders
Vitor Sessak's avatar
Vitor Sessak committed
621
    filters
622
    indevs
623
    muxers
624
    outdevs
625 626 627 628 629 630
    parsers
    protocols
"

CONFIG_LIST="
    $COMPONENT_LIST
631 632
    avfilter
    avfilter_lavf
633 634
    avisynth
    beos_netserver
635
    bzlib
636 637 638 639
    ffmpeg
    ffplay
    ffserver
    gpl
640
    gprof
641
    gray
Aurelien Jacobs's avatar
Aurelien Jacobs committed
642
    hardcoded_tables
643
    ipv6
644
    liba52
645
    liba52bin
646 647
    libamr_nb
    libamr_wb
Ramiro Polla's avatar
Ramiro Polla committed
648
    libdc1394
649
    libdirac
650 651 652
    libfaac
    libfaad
    libfaadbin
653
    libgsm
654
    libmp3lame
655
    libnut
656
    libschroedinger
Diego Biurrun's avatar
Diego Biurrun committed
657
    libtheora
658
    libvorbis
659 660
    libx264
    libxvid
661
    memalign_hack
662
    mlib
663 664
    mpegaudio_hp
    network
665
    nonfree
666
    postproc
667
    powerpc_perf
668
    small
669
    swscale
670
    vhook
671
    x11grab
672
    zlib
673
"
674

675 676
THREADS_LIST='
    beosthreads
677
    os2threads
678 679 680 681
    pthreads
    w32threads
'

682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700
ARCH_LIST='
    alpha
    armv4l
    bfin
    ia64
    m68k
    mips
    parisc
    powerpc
    s390
    sh4
    sparc
    sparc64
    x86
    x86_32
    x86_64
'

ARCH_EXT_LIST='
701 702
    altivec
    armv5te
703
    armv6
Måns Rullgård's avatar
Måns Rullgård committed
704
    armvfp
705 706 707
    iwmmxt
    mmi
    mmx
708
    mmx2
709
    ssse3
710
    vis
711 712 713 714 715 716
'

HAVE_LIST="
    $ARCH_EXT_LIST
    $THREADS_LIST
    altivec_h
717
    arpa_inet_h
718
    bswap
719
    byteswap_h
Alex Beregszaszi's avatar
Alex Beregszaszi committed
720
    closesocket
721
    cmov
722
    conio_h
723
    dcbzl
724 725 726 727 728
    dev_bktr_ioctl_bt848_h
    dev_bktr_ioctl_meteor_h
    dev_ic_bt8xx_h
    dev_video_meteor_ioctl_meteor_h
    dev_video_bktr_ioctl_bt848_h
729
    dlfcn_h
730
    dlopen
731 732
    ebp_available
    ebx_available
733
    fast_64bit
734
    fast_cmov
735
    fast_unaligned
Måns Rullgård's avatar
Måns Rullgård committed
736
    fork
737
    freetype2
738
    gethrtime
739
    GetProcessTimes
Ramiro Polla's avatar
Ramiro Polla committed
740
    getrusage
741
    imlib2
742
    inet_aton
Måns Rullgård's avatar
Måns Rullgård committed
743
    inline_asm
744 745
    libdc1394_1
    libdc1394_2
746 747
    llrint
    lrint
748
    lrintf
749 750
    machine_ioctl_bt848_h
    machine_ioctl_meteor_h
751 752
    malloc_h
    memalign
Ramiro Polla's avatar
Ramiro Polla committed
753
    mkstemp
754
    pld
Måns Rullgård's avatar
Måns Rullgård committed
755
    ppc64
756 757
    round
    roundf
758 759
    sdl
    sdl_video_size
760
    socklen_t
Måns Rullgård's avatar
Måns Rullgård committed
761
    soundcard_h
762
    poll_h
763
    sys_mman_h
764
    sys_resource_h
765
    sys_select_h
Måns Rullgård's avatar
Måns Rullgård committed
766
    sys_soundcard_h
767
    termios_h
768
    threads
769
    winsock2_h
770
"
771

772
CMDLINE_SELECT="
773
    $ARCH_EXT_LIST
774
    $CONFIG_LIST
775
    $THREADS_LIST
776
    cross_compile
777 778
    debug
    extra_warnings
779
    logging
780
    optimizations
781 782
    shared
    static
783
    stripping
784
"
785 786
CMDLINE_SET='
    arch
787
    bindir
788 789 790 791 792 793 794 795 796 797 798 799 800
    build_suffix
    cc
    cpu
    cross_prefix
    incdir
    libdir
    logfile
    mandir
    prefix
    shlibdir
    source_path
    target_os
'
801

802 803
# code dependency declarations

804 805 806 807
# architecture extensions
altivec_deps="powerpc"
armv5te_deps="armv4l"
armv6_deps="armv4l"
Måns Rullgård's avatar
Måns Rullgård committed
808
armvfp_deps="armv4l"
809
iwmmxt_deps="armv4l"
810
mmi_deps="mips"
811
mmx_deps="x86"
Diego Biurrun's avatar
Diego Biurrun committed
812
mmx2_deps="x86 mmx"
813
ssse3_deps="x86"
814
vis_deps="sparc"
815

816
# decoders / encoders
817
ac3_decoder_deps="gpl"
Kostya Shishkov's avatar
Kostya Shishkov committed
818
dxa_decoder_deps="zlib"
819
flashsv_decoder_deps="zlib"
820
flashsv_encoder_deps="zlib"
821 822 823 824 825 826
mpeg_xvmc_decoder_deps="xvmc"
png_decoder_deps="zlib"
png_encoder_deps="zlib"
zmbv_decoder_deps="zlib"
zmbv_encoder_deps="zlib"

827
# external libraries
828
liba52_decoder_deps="liba52"
829
liba52bin_decoder_extralibs='$ldl'
830 831 832 833
libamr_nb_decoder_deps="libamr_nb"
libamr_nb_encoder_deps="libamr_nb"
libamr_wb_decoder_deps="libamr_wb"
libamr_wb_encoder_deps="libamr_wb"
834 835
libdirac_decoder_deps="libdirac"
libdirac_encoder_deps="libdirac"
836
libfaac_encoder_deps="libfaac"
837
libfaad_decoder_deps="libfaad"
838
libfaadbin_decoder_extralibs='$ldl'
839 840
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
841 842
libgsm_ms_decoder_deps="libgsm"
libgsm_ms_encoder_deps="libgsm"
843
libmp3lame_encoder_deps="libmp3lame"
844 845
libschroedinger_decoder_deps="libschroedinger"
libschroedinger_encoder_deps="libschroedinger"
Diego Biurrun's avatar
Diego Biurrun committed
846
libtheora_encoder_deps="libtheora"
847
libvorbis_encoder_deps="libvorbis"
848 849
libx264_encoder_deps="libx264"
libxvid_encoder_deps="libxvid"
Diego Biurrun's avatar
Diego Biurrun committed
850
mpeg4aac_decoder_deps="libfaad"
851

852
# demuxers / muxers
853
ac3_demuxer_deps="ac3_parser"
854
audio_beos_demuxer_deps="audio_beos"
855
audio_beos_demuxer_extralibs="-lmedia -lbe"
856
audio_beos_muxer_deps="audio_beos"
857
audio_beos_muxer_extralibs="-lmedia -lbe"
858
avisynth_demuxer_deps="avisynth"
859
bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
860
dirac_demuxer_deps="dirac_parser"
861
dv1394_demuxer_deps="dv1394 dv_demuxer"
Ramiro Polla's avatar
Ramiro Polla committed
862
libdc1394_demuxer_deps="libdc1394"
863 864
libnut_demuxer_deps="libnut"
libnut_muxer_deps="libnut"
865
mp3_demuxer_deps="mpegaudio_parser"
866 867
oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
oss_muxer_deps_any="soundcard_h sys_soundcard_h"
868
redir_demuxer_deps="network"
869
rtp_muxer_deps="network rtp_protocol"
870 871
rtsp_demuxer_deps="sdp_demuxer"
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
872
v4l_demuxer_deps="linux_videodev_h"
Diego Biurrun's avatar
Diego Biurrun committed
873
v4l2_demuxer_deps="linux_videodev2_h"
Ramiro Polla's avatar
Ramiro Polla committed
874 875
vfwcap_demuxer_deps="capCreateCaptureWindow"
vfwcap_demuxer_extralibs="-lvfw32"
876
x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
877
x11_grab_device_demuxer_extralibs="-lX11 -lXext"
878

879
# protocols
880 881 882 883 884
http_protocol_deps="network"
rtp_protocol_deps="udp_protocol"
tcp_protocol_deps="network"
udp_protocol_deps="network"

885
# filters
886
movie_filter_deps="avfilter_lavf"
887

888
# programs
Måns Rullgård's avatar
Måns Rullgård committed
889
ffplay_deps="sdl"
890
ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
891 892
ffserver_extralibs='$ldl'
vhook_extralibs='$ldl'
Måns Rullgård's avatar
Måns Rullgård committed
893

894

Fabrice Bellard's avatar
Fabrice Bellard committed
895
# default parameters
896

897
logfile="config.err"
898 899

# installation paths
900
prefix="/usr/local"
901
libdir='$(PREFIX)/lib'