configure 64.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
set_default(){
    for opt; do
        eval test -z "\$$opt" && eval $opt=\$${opt}_default
    done
}

309 310 311 312 313 314 315 316 317
is_in(){
    value=$1
    shift
    for var in $*; do
        [ $var = $value ] && return 0
    done
    return 1
}

318 319
check_deps(){
    for cfg; do
320 321 322 323
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
        disabled ${cfg}_checking && continue
        enable ${cfg}_checking

324 325
        eval dep_all="\$${cfg}_deps"
        eval dep_any="\$${cfg}_deps_any"
326 327 328 329 330

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

331 332
        enabled_all $dep_all || disable $cfg
        enabled_any $dep_any || disable $cfg
333

334 335 336 337 338
        if enabled $cfg; then
            eval dep_extralibs="\$${cfg}_extralibs"
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
        fi

339
        disable ${cfg}_checking
340 341 342
    done
}

343 344 345 346 347 348
print_config(){
    pfx=$1
    header=$2
    makefile=$3
    shift 3
    for cfg; do
349
        ucname="`toupper $cfg`"
350
        if enabled $cfg; then
351 352 353 354 355
            echo "#define ${pfx}${ucname} 1" >> $header
            echo "#define ENABLE_${ucname} 1" >> $header
            echo "${pfx}${ucname}=yes" >> $makefile
        else
            echo "#define ENABLE_${ucname} 0" >> $header
356 357
        fi
    done
358 359 360
}

flags_saved(){
361
    (: ${SAVE_CFLAGS?}) 2> /dev/null
362 363
}

364
save_flags(){
365
    flags_saved && return
366 367 368 369 370 371
    SAVE_CFLAGS="$CFLAGS"
    SAVE_LDFLAGS="$LDFLAGS"
    SAVE_extralibs="$extralibs"
}

restore_flags(){
372
    flags_saved || return
373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395
    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 $*"
}

396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414
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 "$@"
}

415
check_cmd(){
Måns Rullgård's avatar
Måns Rullgård committed
416
    log "$@"
417
    "$@" >> $logfile 2>&1
418 419
}

420
check_cc(){
421
    log check_cc "$@"
422
    cat > $TMPC
423
    log_file $TMPC
424
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
425 426 427 428
}

check_cpp(){
    log check_cpp "$@"
429
    cat > $TMPC
430
    log_file $TMPC
431
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
432 433
}

434 435 436 437 438 439
check_asm(){
    log check_asm "$@"
    name="$1"
    asm="$2"
    shift 2
    check_cc "$@" <<EOF && enable $name || disable $name
440
int foo(void){ asm volatile($asm); }
441 442 443
EOF
}

444
check_ld(){
445
    log check_ld "$@"
446
    check_cc || return
447 448 449 450 451 452
    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
453 454 455
}

check_cflags(){
456 457
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
458 459 460 461 462
int x;
EOF
}

check_ldflags(){
463 464
    log check_ldflags "$@"
    check_ld "$@" <<EOF && add_ldflags "$@"
465
int main(void){ return 0; }
466 467 468 469
EOF
}

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

check_func(){
482
    log check_func "$@"
483 484
    func=$1
    shift
Måns Rullgård's avatar
Måns Rullgård committed
485 486
    disable $func
    check_ld "$@" <<EOF && enable $func
487
extern int $func();
488
int main(void){ $func(); }
489 490 491
EOF
}

492 493 494 495 496 497 498 499 500 501 502 503 504
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
505
int main(int argc, char **argv){
506 507 508 509 510 511
    (void) $func;
    return 0;
}
EOF
}

512 513 514 515 516
check_lib(){
    log check_lib "$@"
    header="$1"
    func="$2"
    shift 2
517 518 519 520 521
    temp_extralibs "$@"
    check_header $header && check_func $func && add_extralibs "$@"
    err=$?
    restore_flags
    return $err
522 523
}

524 525 526 527 528 529 530 531 532 533 534 535
check_lib2(){
    log check_lib2 "$@"
    headers="$1"
    func="$2"
    shift 2
    temp_extralibs "$@"
    check_func2 "$headers" $func && add_extralibs "$@"
    err=$?
    restore_flags
    return $err
}

536
check_exec(){
537
    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
538 539
}

540 541 542 543 544 545 546 547 548
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.

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

566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582
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
}

583 584 585 586 587 588
require(){
    name="$1"
    header="$2"
    func="$3"
    shift 3
    check_lib $header $func "$@" || die "ERROR: $name not found"
589 590
}

591 592 593 594 595 596 597 598
require2(){
    name="$1"
    headers="$2"
    func="$3"
    shift 3
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
}

599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615
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
}

616 617 618 619 620 621
apply(){
    file=$1
    shift
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
}

622 623 624 625 626
COMPONENT_LIST="
    bsfs
    decoders
    demuxers
    encoders
Vitor Sessak's avatar
Vitor Sessak committed
627
    filters
628
    indevs
629
    muxers
630
    outdevs
631 632 633 634 635 636
    parsers
    protocols
"

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

681 682
THREADS_LIST='
    beosthreads
683
    os2threads
684 685 686 687
    pthreads
    w32threads
'

688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706
ARCH_LIST='
    alpha
    armv4l
    bfin
    ia64
    m68k
    mips
    parisc
    powerpc
    s390
    sh4
    sparc
    sparc64
    x86
    x86_32
    x86_64
'

ARCH_EXT_LIST='
707 708
    altivec
    armv5te
709
    armv6
Måns Rullgård's avatar
Måns Rullgård committed
710
    armvfp
711 712 713
    iwmmxt
    mmi
    mmx
714
    mmx2
715
    neon
716
    ssse3
717
    vis
718 719 720 721 722 723
'

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

780
CMDLINE_SELECT="
781
    $ARCH_EXT_LIST
782
    $CONFIG_LIST
783
    $THREADS_LIST
784
    cross_compile
785 786
    debug
    extra_warnings
787
    logging
788
    optimizations
789 790
    shared
    static
791
    stripping
792
"
793 794

PATHS_LIST='
795
    bindir
796 797 798 799 800
    incdir
    libdir
    mandir
    prefix
    shlibdir
801 802 803 804 805 806 807 808 809 810
'

CMDLINE_SET="
    $PATHS_LIST
    arch
    build_suffix
    cc
    cpu
    cross_prefix
    logfile
811 812
    source_path
    target_os
813
"
814

815 816
# code dependency declarations

817 818 819 820
# architecture extensions
altivec_deps="powerpc"
armv5te_deps="armv4l"
armv6_deps="armv4l"
Måns Rullgård's avatar
Måns Rullgård committed
821
armvfp_deps="armv4l"
822
iwmmxt_deps="armv4l"
823
mmi_deps="mips"
824
mmx_deps="x86"
Diego Biurrun's avatar
Diego Biurrun committed
825
mmx2_deps="x86 mmx"
826
neon_deps="armv4l"
827
ssse3_deps="x86"
828
vis_deps="sparc"
829

830
# decoders / encoders
831
ac3_decoder_deps="gpl"
Kostya Shishkov's avatar
Kostya Shishkov committed
832
dxa_decoder_deps="zlib"
833
flashsv_decoder_deps="zlib"
834
flashsv_encoder_deps="zlib"
835 836 837 838 839 840
mpeg_xvmc_decoder_deps="xvmc"
png_decoder_deps="zlib"
png_encoder_deps="zlib"
zmbv_decoder_deps="zlib"
zmbv_encoder_deps="zlib"

841
# external libraries
842
liba52_decoder_deps="liba52"
843
liba52bin_decoder_extralibs='$ldl'
844 845 846 847
libamr_nb_decoder_deps="libamr_nb"
libamr_nb_encoder_deps="libamr_nb"
libamr_wb_decoder_deps="libamr_wb"
libamr_wb_encoder_deps="libamr_wb"
848 849
libdirac_decoder_deps="libdirac"
libdirac_encoder_deps="libdirac"
850
libfaac_encoder_deps="libfaac"
851
libfaad_decoder_deps="libfaad"
852
libfaadbin_decoder_extralibs='$ldl'
853 854
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
855 856
libgsm_ms_decoder_deps="libgsm"
libgsm_ms_encoder_deps="libgsm"
857
libmp3lame_encoder_deps="libmp3lame"
858 859
libschroedinger_decoder_deps="libschroedinger"
libschroedinger_encoder_deps="libschroedinger"
Diego Biurrun's avatar
Diego Biurrun committed
860
libtheora_encoder_deps="libtheora"
861
libvorbis_encoder_deps="libvorbis"
862 863
libx264_encoder_deps="libx264"
libxvid_encoder_deps="libxvid"
Diego Biurrun's avatar
Diego Biurrun committed
864
mpeg4aac_decoder_deps="libfaad"
865

866
# demuxers / muxers
867
ac3_demuxer_deps="ac3_parser"
868
audio_beos_demuxer_deps="audio_beos"
869
audio_beos_demuxer_extralibs="-lmedia -lbe"
870
audio_beos_muxer_deps="audio_beos"
871
audio_beos_muxer_extralibs="-lmedia -lbe"
872
avisynth_demuxer_deps="avisynth"
873
bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
874
dirac_demuxer_deps="dirac_parser"
875
dv1394_demuxer_deps="dv1394 dv_demuxer"
Ramiro Polla's avatar
Ramiro Polla committed
876
libdc1394_demuxer_deps="libdc1394"
877 878
libnut_demuxer_deps="libnut"
libnut_muxer_deps="libnut"
879
mp3_demuxer_deps="mpegaudio_parser"
880 881
oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
oss_muxer_deps_any="soundcard_h sys_soundcard_h"
882
redir_demuxer_deps="network"
883
rtp_muxer_deps="network rtp_protocol"
884 885
rtsp_demuxer_deps="sdp_demuxer"
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
886
v4l_demuxer_deps="linux_videodev_h"
Diego Biurrun's avatar
Diego Biurrun committed
887
v4l2_demuxer_deps="linux_videodev2_h"
Ramiro Polla's avatar
Ramiro Polla committed
888 889
vfwcap_demuxer_deps="capCreateCaptureWindow"
vfwcap_demuxer_extralibs="-lvfw32"
890
x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
891
x11_grab_device_demuxer_extralibs="-lX11 -lXext"
892

893
# protocols
894 895 896 897 898
http_protocol_deps="network"
rtp_protocol_deps="udp_protocol"
tcp_protocol_deps="network"
udp_protocol_deps="network"

899
# filters
900
movie_filter_deps="avfilter_lavf"
901

902
# programs
Måns Rullgård's avatar
Måns Rullgård committed
903
ffplay_deps="sdl"
904
ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
905 906
ffserver_extralibs='$ldl'
vhook_extralibs='$ldl'
Måns Rullgård's avatar
Måns Rullgård committed
907

908

Fabrice Bellard's avatar
Fabrice Bellard committed
909
# default parameters
910

911
logfile="config.err"
912 913

# installation paths
914 915 916 917 918 919
prefix_default="/usr/local"
bindir_default='${prefix}/bin'
incdir_default='${prefix}/include'
libdir_default='${prefix}/lib'
mandir_default='${prefix}/share/man'
shlibdir_default="$libdir_default"
920 921

# toolchain
Fabrice Bellard's avatar
Fabrice Bellard committed
922 923
cc="gcc"
ar="ar"
924
nm="nm"
Michael Niedermayer's avatar
Michael Niedermayer committed
925
ranlib="ranlib"
926
strip="strip"
927
asmalign_pot="unknown"
928
ln_s="ln -sf"
929 930

# machine
931
arch=`uname -m`
932
cpu="generic"
933