configure 66 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
  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]"
119
  echo "  --extra-version=STRING   version string suffix []"
120
  echo "  --build-suffix=SUFFIX    suffix for application specific build []"
121
  echo "  --arch=ARCH              select architecture  [$arch]"
122 123
  echo "  --cpu=CPU                selects the minimum cpu required (affects"
  echo "                           instruction selection, may crash on older CPUs)"
124
  echo "  --enable-powerpc-perf    enable performance report on PPC"
125 126
  echo "                           (requires enabling PMC)"
  echo "  --disable-mmx            disable MMX usage"
127 128
  echo "  --disable-mmx2           disable MMX2 usage"
  echo "  --disable-ssse3          disable SSSE3 usage"
129
  echo "  --disable-armv5te        disable armv5te usage"
130
  echo "  --disable-armv6          disable armv6 usage"
Måns Rullgård's avatar
Måns Rullgård committed
131
  echo "  --disable-armvfp         disable ARM VFP usage"
132 133 134
  echo "  --disable-iwmmxt         disable iwmmxt usage"
  echo "  --disable-altivec        disable AltiVec usage"
  echo "  --disable-network        disable network support [default=no]"
135
  echo "  --disable-ipv6           disable ipv6 support [default=no]"
136
  echo "  --disable-zlib           disable zlib [default=no]"
137
  echo "  --disable-bzlib          disable bzlib [default=no]"
138 139 140
  echo "  --disable-vhook          disable video hooking support"
  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
  echo
  echo "Developer options (useful when working on FFmpeg itself):"
181
  echo "  --disable-debug          disable debugging symbols"
182
  echo "  --enable-debug=LEVEL     set the debug level [$debuglevel]"
183
  echo "  --enable-gprof           enable profiling with gprof [$gprof]"
184
  echo "  --disable-optimizations  disable compiler optimizations"
185
  echo "  --enable-extra-warnings  enable more compiler warnings"
186
  echo "  --disable-stripping      disable stripping of executables and shared libraries"
187 188 189 190
  echo ""
  echo "NOTE: Object files are built at the place where configure is launched."
  exit 1
}
191

192
log(){
193
    echo "$@" >> $logfile
194 195
}

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

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

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
212
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
213
EOF
214
    if disabled logging; then
215
        cat <<EOF
216 217
Rerun configure with logging enabled (do not use --disable-logging), and
include the log this produces with your report.
218 219 220
EOF
    else
cat <<EOF
221 222
Include the log file "$logfile" produced by configure as this will help
solving the problem.
223 224
EOF
    fi
225
    rm -f $TMPC $TMPE $TMPH $TMPO $TMPS $TMPSH
226 227 228
    exit 1
}

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

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

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

246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
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
}

265 266 267 268 269 270 271 272
enable(){
    set_all yes $*
}

disable(){
    set_all no $*
}

273
enabled(){
274 275
    test "${1#!}" = "$1" && op== || op=!=
    eval test "x\$${1#!}" $op "xyes"
276 277
}

278
disabled(){
279 280
    test "${1#!}" = "$1" && op== || op=!=
    eval test "x\$${1#!}" $op "xno"
281 282
}

283 284 285 286 287 288
enabled_all(){
    for opt; do
        enabled $opt || return 1
    done
}

289 290 291 292 293 294
disabled_all(){
    for opt; do
        disabled $opt || return 1
    done
}

295 296 297 298 299 300
enabled_any(){
    for opt; do
        enabled $opt && return 0
    done
}

301 302 303 304 305 306
disabled_any(){
    for opt; do
        disabled $opt && return 0
    done
}

307 308 309 310 311 312
set_default(){
    for opt; do
        eval test -z "\$$opt" && eval $opt=\$${opt}_default
    done
}

313 314 315 316 317 318 319 320 321
is_in(){
    value=$1
    shift
    for var in $*; do
        [ $var = $value ] && return 0
    done
    return 1
}

322 323
check_deps(){
    for cfg; do
324
        cfg="${cfg#!}"
325 326 327 328
        enabled ${cfg}_checking && die "Circular dependency for $cfg."
        disabled ${cfg}_checking && continue
        enable ${cfg}_checking

329 330
        eval dep_all="\$${cfg}_deps"
        eval dep_any="\$${cfg}_deps_any"
331 332 333 334 335

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

336 337
        enabled_all $dep_all || disable $cfg
        enabled_any $dep_any || disable $cfg
338

339 340 341 342 343
        if enabled $cfg; then
            eval dep_extralibs="\$${cfg}_extralibs"
            test -n "$dep_extralibs" && add_extralibs $dep_extralibs
        fi

344
        disable ${cfg}_checking
345 346 347
    done
}

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

flags_saved(){
366
    (: ${SAVE_CFLAGS?}) 2> /dev/null
367 368
}

369
save_flags(){
370
    flags_saved && return
371 372 373 374 375 376
    SAVE_CFLAGS="$CFLAGS"
    SAVE_LDFLAGS="$LDFLAGS"
    SAVE_extralibs="$extralibs"
}

restore_flags(){
377
    flags_saved || return
378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400
    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 $*"
}

401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419
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 "$@"
}

420
check_cmd(){
Måns Rullgård's avatar
Måns Rullgård committed
421
    log "$@"
422
    "$@" >> $logfile 2>&1
423 424
}

425
check_cc(){
426
    log check_cc "$@"
427
    cat > $TMPC
428
    log_file $TMPC
429
    check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
430 431 432 433
}

check_cpp(){
    log check_cpp "$@"
434
    cat > $TMPC
435
    log_file $TMPC
436
    check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
437 438
}

439 440 441 442 443 444
check_asm(){
    log check_asm "$@"
    name="$1"
    asm="$2"
    shift 2
    check_cc "$@" <<EOF && enable $name || disable $name
445
int foo(void){ asm volatile($asm); }
446 447 448
EOF
}

Loren Merritt's avatar
Loren Merritt committed
449 450 451 452 453 454 455 456
check_yasm(){
    log check_yasm "$@"
    echo "$1" > $TMPS
    log_file $TMPS
    shift 1
    check_cmd $yasmexe $YASMFLAGS "$@" -o $TMPO $TMPS
}

457
check_ld(){
458
    log check_ld "$@"
459
    check_cc || return
460 461 462 463 464 465
    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
466 467 468
}

check_cflags(){
469 470
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
471 472 473 474 475
int x;
EOF
}

check_ldflags(){
476 477
    log check_ldflags "$@"
    check_ld "$@" <<EOF && add_ldflags "$@"
478
int main(void){ return 0; }
479 480 481 482
EOF
}

check_header(){
483
    log check_header "$@"
484 485
    header=$1
    shift
Måns Rullgård's avatar
Måns Rullgård committed
486 487 488
    var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
    disable $var
    check_cpp "$@" <<EOF && enable $var
489 490 491 492 493 494
#include <$header>
int x;
EOF
}

check_func(){
495
    log check_func "$@"
496 497
    func=$1
    shift
Måns Rullgård's avatar
Måns Rullgård committed
498 499
    disable $func
    check_ld "$@" <<EOF && enable $func
500
extern int $func();
501
int main(void){ $func(); }
502 503 504
EOF
}

505 506
check_func_headers(){
    log check_func_headers "$@"
507 508 509 510 511 512 513 514 515 516 517
    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
518
int main(int argc, char **argv){
519 520 521 522 523 524
    (void) $func;
    return 0;
}
EOF
}

525 526 527 528 529
check_lib(){
    log check_lib "$@"
    header="$1"
    func="$2"
    shift 2
530 531 532 533 534
    temp_extralibs "$@"
    check_header $header && check_func $func && add_extralibs "$@"
    err=$?
    restore_flags
    return $err
535 536
}

537 538 539 540 541 542
check_lib2(){
    log check_lib2 "$@"
    headers="$1"
    func="$2"
    shift 2
    temp_extralibs "$@"
543
    check_func_headers "$headers" $func && add_extralibs "$@"
544 545 546 547 548
    err=$?
    restore_flags
    return $err
}

549
check_exec(){
550
    check_ld "$@" && { enabled cross_compile || $TMPE >> $logfile 2>&1; }
551 552
}

553 554 555 556 557 558 559 560 561
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.

562
    (check_exec "$@") >> $logfile 2>&1 <<EOF
563 564 565 566
#include <signal.h>
static void sighandler(int sig){
    raise(SIGTERM);
}
Diego Biurrun's avatar
Diego Biurrun committed
567
int main(void){
568 569 570 571 572 573 574 575 576 577 578
    signal(SIGILL, sighandler);
    signal(SIGFPE, sighandler);
    signal(SIGSEGV, sighandler);
#ifdef SIGBUS
    signal(SIGBUS, sighandler);
#endif
    { $code }
}
EOF
}

579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595
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
}

596 597 598 599 600 601
require(){
    name="$1"
    header="$2"
    func="$3"
    shift 3
    check_lib $header $func "$@" || die "ERROR: $name not found"
602 603
}

604 605 606 607 608 609 610 611
require2(){
    name="$1"
    headers="$2"
    func="$3"
    shift 3
    check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
}

612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628
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
}

629 630 631 632 633 634
apply(){
    file=$1
    shift
    "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
}

635 636 637
# CONFIG_LIST contains configurable options, while HAVE_LIST is for
# system-dependent things.

638 639 640 641 642
COMPONENT_LIST="
    bsfs
    decoders
    demuxers
    encoders
Vitor Sessak's avatar
Vitor Sessak committed
643
    filters
644
    indevs
645
    muxers
646
    outdevs
647 648 649 650 651 652
    parsers
    protocols
"

CONFIG_LIST="
    $COMPONENT_LIST
653 654
    avfilter
    avfilter_lavf
655 656
    avisynth
    beos_netserver
657
    bzlib
658 659 660 661
    ffmpeg
    ffplay
    ffserver
    gpl
662
    gprof
663
    gray
Aurelien Jacobs's avatar
Aurelien Jacobs committed
664
    hardcoded_tables
665
    ipv6
666
    liba52
667
    liba52bin
668 669
    libamr_nb
    libamr_wb
Ramiro Polla's avatar
Ramiro Polla committed
670
    libdc1394
671
    libdirac
672 673 674
    libfaac
    libfaad
    libfaadbin
675
    libgsm
676
    libmp3lame
677
    libnut
678
    libschroedinger
Diego Biurrun's avatar
Diego Biurrun committed
679
    libtheora
680
    libvorbis
681 682
    libx264
    libxvid
683
    memalign_hack
684
    mlib
685 686
    mpegaudio_hp
    network
687
    nonfree
688
    postproc
689
    powerpc_perf
690
    small
691
    swscale
692
    vhook
693
    x11grab
694
    zlib
695
"
696

697 698
THREADS_LIST='
    beosthreads
699
    os2threads
700 701 702 703
    pthreads
    w32threads
'

704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722
ARCH_LIST='
    alpha
    armv4l
    bfin
    ia64
    m68k
    mips
    parisc
    powerpc
    s390
    sh4
    sparc
    sparc64
    x86
    x86_32
    x86_64
'

ARCH_EXT_LIST='
723 724
    altivec
    armv5te
725
    armv6
Måns Rullgård's avatar
Måns Rullgård committed
726
    armvfp
727 728 729
    iwmmxt
    mmi
    mmx
730
    mmx2
731
    neon
732
    ssse3
733
    vis
734 735 736 737 738 739
'

HAVE_LIST="
    $ARCH_EXT_LIST
    $THREADS_LIST
    altivec_h
740
    arpa_inet_h
741
    bswap
742
    byteswap_h
Alex Beregszaszi's avatar
Alex Beregszaszi committed
743
    closesocket
744
    cmov
745
    conio_h
746
    dcbzl
747 748 749 750 751
    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
752
    dlfcn_h
753
    dlopen
754 755
    ebp_available
    ebx_available
756
    fast_64bit
757
    fast_cmov
758
    fast_unaligned
Måns Rullgård's avatar
Måns Rullgård committed
759
    fork
760
    freetype2
761
    gethrtime
762
    GetProcessTimes
Ramiro Polla's avatar
Ramiro Polla committed
763
    getrusage
764
    imlib2
765
    inet_aton
Måns Rullgård's avatar
Måns Rullgård committed
766
    inline_asm
767 768
    libdc1394_1
    libdc1394_2
769 770
    llrint
    lrint
771
    lrintf
772 773
    machine_ioctl_bt848_h
    machine_ioctl_meteor_h
774 775
    malloc_h
    memalign
Ramiro Polla's avatar
Ramiro Polla committed
776
    mkstemp
777
    pld
Måns Rullgård's avatar
Måns Rullgård committed
778
    ppc64
779 780
    round
    roundf
781 782
    sdl
    sdl_video_size
783
    socklen_t
Måns Rullgård's avatar
Måns Rullgård committed
784
    soundcard_h
785
    poll_h
786
    sys_mman_h
787
    sys_resource_h
788
    sys_select_h
Måns Rullgård's avatar
Måns Rullgård committed
789
    sys_soundcard_h
790
    sys_videoio_h
791
    termios_h
792
    threads
793
    winsock2_h
Loren Merritt's avatar
Loren Merritt committed
794
    yasm
795
"
796

797
CMDLINE_SELECT="
798
    $ARCH_EXT_LIST
799
    $CONFIG_LIST
800
    $THREADS_LIST
801
    cross_compile
802 803
    debug
    extra_warnings
804
    logging
805
    optimizations
806 807
    shared
    static
808
    stripping
809
"
810 811

PATHS_LIST='
812
    bindir
813 814 815 816 817
    incdir
    libdir
    mandir
    prefix
    shlibdir
818 819 820 821 822 823 824 825 826
'

CMDLINE_SET="
    $PATHS_LIST
    arch
    build_suffix
    cc
    cpu
    cross_prefix
827
    extra_version
828
    logfile
829 830
    source_path
    target_os
831
"
832

833 834
# code dependency declarations

835 836 837 838
# architecture extensions
altivec_deps="powerpc"
armv5te_deps="armv4l"
armv6_deps="armv4l"
Måns Rullgård's avatar
Måns Rullgård committed
839
armvfp_deps="armv4l"
840
iwmmxt_deps="armv4l"
841
mmi_deps="mips"
842
mmx_deps="x86"
Diego Biurrun's avatar
Diego Biurrun committed
843
mmx2_deps="x86 mmx"
844
neon_deps="armv4l"
845
ssse3_deps="x86"
846
vis_deps="sparc"
847

848 849 850
# system headers and functions
byteswap_h_deps="!armv4l"

851
# decoders / encoders
852
ac3_decoder_deps="gpl !liba52"
Kostya Shishkov's avatar
Kostya Shishkov committed
853
dxa_decoder_deps="zlib"
854
eac3_decoder_deps="gpl"
855
flashsv_decoder_deps="zlib"
856
flashsv_encoder_deps="zlib"
Ramiro Polla's avatar
Ramiro Polla committed
857
mlp_decoder_deps="mlp_parser"
858 859 860 861 862 863
mpeg_xvmc_decoder_deps="xvmc"
png_decoder_deps="zlib"
png_encoder_deps="zlib"
zmbv_decoder_deps="zlib"
zmbv_encoder_deps="zlib"

864
# external libraries
865
liba52_decoder_deps="liba52"
866
liba52bin_decoder_extralibs='$ldl'
867 868 869 870
libamr_nb_decoder_deps="libamr_nb"
libamr_nb_encoder_deps="libamr_nb"
libamr_wb_decoder_deps="libamr_wb"
libamr_wb_encoder_deps="libamr_wb"
871
libdirac_decoder_deps="libdirac !libschroedinger"
872
libdirac_encoder_deps="libdirac"
873
libfaac_encoder_deps="libfaac"
874
libfaad_decoder_deps="libfaad"
875
libfaadbin_decoder_extralibs='$ldl'
876 877
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
878 879
libgsm_ms_decoder_deps="libgsm"
libgsm_ms_encoder_deps="libgsm"
880
libmp3lame_encoder_deps="libmp3lame"
881 882
libschroedinger_decoder_deps="libschroedinger"
libschroedinger_encoder_deps="libschroedinger"
Diego Biurrun's avatar
Diego Biurrun committed
883
libtheora_encoder_deps="libtheora"
884
libvorbis_encoder_deps="libvorbis"
885 886
libx264_encoder_deps="libx264"
libxvid_encoder_deps="libxvid"
Diego Biurrun's avatar
Diego Biurrun committed
887
mpeg4aac_decoder_deps="libfaad"
888

889
# demuxers / muxers
890
ac3_demuxer_deps="ac3_parser"
891
audio_beos_demuxer_deps="audio_beos"
892
audio_beos_demuxer_extralibs="-lmedia -lbe"
893
audio_beos_muxer_deps="audio_beos"
894
audio_beos_muxer_extralibs="-lmedia -lbe"
895
avisynth_demuxer_deps="avisynth"
896
bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
897
dirac_demuxer_deps="dirac_parser"
898
dv1394_demuxer_deps="dv1394 dv_demuxer"
Ramiro Polla's avatar
Ramiro Polla committed
899
libdc1394_demuxer_deps="libdc1394"
900 901
libnut_demuxer_deps="libnut"
libnut_muxer_deps="libnut"
902
mp3_demuxer_deps="mpegaudio_parser"
903 904
oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
oss_muxer_deps_any="soundcard_h sys_soundcard_h"
905
redir_demuxer_deps="network"
906
rtp_muxer_deps="network rtp_protocol"
907 908
rtsp_demuxer_deps="sdp_demuxer"
sdp_demuxer_deps="rtp_protocol mpegts_demuxer"
909
v4l_demuxer_deps="linux_videodev_h"
910
v4l2_demuxer_deps_any="linux_videodev2_h sys_videoio_h"
Ramiro Polla's avatar
Ramiro Polla committed
911 912
vfwcap_demuxer_deps="capCreateCaptureWindow"
vfwcap_demuxer_extralibs="-lvfw32"
913
x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
914
x11_grab_device_demuxer_extralibs="-lX11 -lXext"
915

916
# protocols
917 918 919 920 921
http_protocol_deps="network"
rtp_protocol_deps="udp_protocol"
tcp_protocol_deps="network"
udp_protocol_deps="network"

922
# filters
923
movie_filter_deps="avfilter_lavf"
924

925
# programs
Måns Rullgård's avatar
Måns Rullgård committed