Skip to content
Snippets Groups Projects
configure 58.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • # FFmpeg configure script
    #
    # Copyright (c) 2000, 2001, 2002 Fabrice Bellard
    # Copyright (c) 2005-2006 Diego Biurrun
    # Copyright (c) 2005-2006 Mans Rullgard
    
    # make sure we are running under a compatible shell
    
    # try to make this part work with most shells
    
    try_exec(){
    
        echo "Trying shell $1"
    
        type "$1" >/dev/null 2>&1 && exec "$@"
    }
    
    
    unset foo
    
    (: ${foo%%bar}) 2>/dev/null
    E1="$?"
    
    (: ${foo?}) 2>/dev/null
    E2="$?"
    
    if test "$E1" != 0 || test "$E2" = 0; then
        echo "Broken shell detected.  Trying alternatives."
    
        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" "$@"
    
        fi
        echo "No compatible shell script interpreter found."
    
    Diego Biurrun's avatar
    Diego Biurrun committed
        echo "This configure script requires a POSIX-compatible shell"
    
        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."
    
        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
    
    show_help(){
      echo "Usage: configure [options]"
      echo "Options: [defaults in brackets after descriptions]"
      echo
      echo "Standard options:"
      echo "  --help                   print this message"
    
      echo "  --log[=FILE|yes|no]      log tests and output to FILE [config.err]"
    
      echo "  --prefix=PREFIX          install in PREFIX [$PREFIX]"
    
      echo "  --libdir=DIR             install libs in DIR [PREFIX/lib]"
    
      echo "  --shlibdir=DIR           install shared libs in DIR [PREFIX/lib]"
    
      echo "  --incdir=DIR             install includes in DIR [PREFIX/include/ffmpeg]"
    
      echo "  --mandir=DIR             install man page in DIR [PREFIX/share/man]"
    
      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]"
    
      echo "  --enable-gpl             allow use of GPL code, the resulting libav*"
      echo "                           and ffmpeg will be under GPL [default=no]"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
      echo "  --enable-pp              enable GPLed postprocessing support [default=no]"
      echo "  --enable-swscaler        software scaler support [default=no]"
    
      echo "  --enable-beosthreads     use BeOS threads [default=no]"
    
      echo "  --enable-pthreads        use pthreads [default=no]"
    
      echo "  --enable-w32threads      use Win32 threads [default=no]"
    
      echo "  --enable-x11grab         enable X11 grabbing [default=no]"
    
      echo
      echo "External library support:"
      echo "  --enable-sunmlib         use Sun medialib [default=no]"
    
      echo "  --enable-liba52          enable GPLed liba52 support [default=no]"
      echo "  --enable-liba52bin       open liba52.so.0 at runtime [default=no]"
    
      echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
    
      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
      echo "  --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394"
      echo "                           and libraw1394 [default=no]"
    
      echo "  --enable-libfaac         enable FAAC support via libfaac [default=no]"
      echo "  --enable-libfaad         enable FAAD support via libfaad [default=no]"
    
      echo "  --enable-libfaadbin      open libfaad.so.0 at runtime [default=no]"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
      echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
    
      echo "  --enable-libmp3lame      enable MP3 encoding via libmp3lame [default=no]"
    
      echo "  --enable-libnut          enable NUT (de)muxing via libnut,"
      echo "                           native demuxer exists [default=no]"
    
      echo "  --enable-libtheora       enable Theora encoding via libtheora [default=no]"
    
      echo "  --enable-libvorbis       enable Vorbis encoding via libvorbis,"
      echo "                           native implementation exists [default=no]"
    
      echo "  --enable-libx264         enable H.264 encoding via x264 [default=no]"
      echo "  --enable-libxvid         enable Xvid encoding via xvidcore,"
    
      echo "                           native MPEG-4/Xvid encoder exists [default=no]"
    
      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]"
    
      echo "  --cross-compile          assume a cross-compiler is used"
    
      echo "  --target-os=OS           compiler targets OS [$targetos]"
    
      echo "  --cc=CC                  use C compiler CC [$cc]"
      echo "  --make=MAKE              use specified make [$make]"
      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 []"
    
      echo "  --arch=ARCH              select architecture  [$arch]"
    
      echo "  --cpu=CPU                selects the minimum cpu required (affects"
      echo "                           instruction selection, may crash on older CPUs)"
    
      echo "  --enable-powerpc-perf    enable performance report on PPC"
    
      echo "                           (requires enabling PMC)"
      echo "  --disable-mmx            disable MMX usage"
    
      echo "  --disable-armv5te        disable armv5te usage"
    
      echo "  --disable-armv6          disable armv6 usage"
    
      echo "  --disable-iwmmxt         disable iwmmxt usage"
      echo "  --disable-altivec        disable AltiVec usage"
      echo "  --disable-network        disable network support [default=no]"
    
      echo "  --disable-ipv6           disable ipv6 support [default=no]"
    
      echo "  --disable-zlib           disable zlib [default=no]"
      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]"
    
      echo "  --enable-gray            enable full grayscale support (slower color)"
    
      echo "  --disable-ffmpeg         disable ffmpeg build"
    
      echo "  --disable-ffserver       disable ffserver build"
      echo "  --disable-ffplay         disable ffplay build"
      echo "  --enable-small           optimize for size instead of speed"
      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"
    
      echo "  --disable-muxer=NAME     disables muxer NAME"
      echo "  --enable-muxer=NAME      enables muxer NAME"
    
      echo "  --disable-muxers         disables all muxers"
    
      echo "  --disable-demuxer=NAME   disables demuxer NAME"
      echo "  --enable-demuxer=NAME    enables demuxer NAME"
    
      echo "  --disable-demuxers       disables all demuxers"
    
      echo "  --enable-parser=NAME     enables parser NAME"
      echo "  --disable-parser=NAME    disables parser NAME"
      echo "  --disable-parsers        disables all parsers"
    
      echo "  --enable-bsf=NAME        enables bitstream filter NAME"
      echo "  --disable-bsf=NAME       disables bitstream filter NAME"
      echo "  --disable-bsfs           disables all bitstream filters"
    
      echo "  --enable-protocol=NAME   enables protocol NAME"
      echo "  --disable-protocol=NAME  disables protocol NAME"
      echo "  --disable-protocols      disables all protocols"
    
      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"
    
      echo
      echo "Developer options (useful when working on FFmpeg itself):"
      echo "  --enable-gprof           enable profiling with gprof [$gprof]"
    
      echo "  --disable-optimizations  disable compiler optimizations"
    
      echo "  --enable-extra-warnings  enable more compiler warnings"
      echo "  --disable-strip          disable stripping of executables and shared libraries"
    
      echo ""
      echo "NOTE: Object files are built at the place where configure is launched."
      exit 1
    }
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        log BEGIN $1
    
        pr -n -t $1 >>$logfile
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        log END $1
    }
    
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        log "$@"
    
    }
    
    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
    ffmpeg-devel@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
    EOF
    
            cat <<EOF
    Include the log file "$logfile" produced by configure as this will help
    solving the problem.
    EOF
        else
    cat <<EOF
    Rerun configure with logging enabled (do not use --log=no), and include the
    log this produces with your report.
    EOF
        fi
    
    # "tr '[a-z]' '[A-Z]'" is a workaround for Solaris tr not grokking "tr a-z A-Z"
    
    toupper(){
        echo "$@" | tr '[a-z]' '[A-Z]'
    }
    
    
    tolower(){
        echo "$@" | tr '[A-Z]' '[a-z]'
    }
    
    
    set_all(){
        value=$1
        shift
        for var in $*; do
            eval $var=$value
        done
    }
    
    
    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
    }
    
    
    enable(){
        set_all yes $*
    }
    
    disable(){
        set_all no $*
    }
    
    
        eval test "x\$$1" = "xyes"
    }
    
    
    disabled(){
        eval test "x\$$1" = "xno"
    }
    
    
    enabled_all(){
        for opt; do
            enabled $opt || return 1
        done
    }
    
    
    disabled_all(){
        for opt; do
            disabled $opt || return 1
        done
    }
    
    
    enabled_any(){
        for opt; do
            enabled $opt && return 0
        done
    }
    
    
    disabled_any(){
        for opt; do
            disabled $opt && return 0
        done
    }
    
    
    is_in(){
        value=$1
        shift
        for var in $*; do
            [ $var = $value ] && return 0
        done
        return 1
    }
    
    
            enabled ${cfg}_checking && die "Circular dependency for $cfg."
            disabled ${cfg}_checking && continue
            enable ${cfg}_checking
    
    
            eval dep_all="\$${cfg}_deps"
            eval dep_any="\$${cfg}_deps_any"
    
    
            pushvar cfg dep_all dep_any
            check_deps $dep_all $dep_any
            popvar cfg dep_all dep_any
    
    
            enabled_all $dep_all || disable $cfg
            enabled_any $dep_any || disable $cfg
    
            if enabled $cfg; then
                eval dep_extralibs="\$${cfg}_extralibs"
                test -n "$dep_extralibs" && add_extralibs $dep_extralibs
            fi
    
    
            disable ${cfg}_checking
    
    print_config(){
        pfx=$1
        header=$2
        makefile=$3
        shift 3
        for cfg; do
    
            if enabled $cfg; then
    
                echo "#define ${pfx}${ucname} 1" >> $header
                echo "#define ENABLE_${ucname} 1" >> $header
                echo "${pfx}${ucname}=yes" >> $makefile
            else
                echo "#define ENABLE_${ucname} 0" >> $header
    
        SAVE_CFLAGS="$CFLAGS"
        SAVE_LDFLAGS="$LDFLAGS"
        SAVE_extralibs="$extralibs"
    }
    
    restore_flags(){
    
        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 $*"
    }
    
    
    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 "$@"
    }
    
    
        log "$@"
    
        check_cmd $cc $CFLAGS "$@" -c -o $TMPO $TMPC
    
        check_cmd $cc $CFLAGS "$@" -E -o $TMPO $TMPC
    
    check_asm(){
        log check_asm "$@"
        name="$1"
        asm="$2"
        shift 2
        check_cc "$@" <<EOF && enable $name || disable $name
    int foo(void){
        asm volatile($asm);
    }
    EOF
    }
    
    
        check_cc || return
    
        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
    
        log check_cflags "$@"
        check_cc "$@" <<EOF && add_cflags "$@"
    
        log check_ldflags "$@"
        check_ld "$@" <<EOF && add_ldflags "$@"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    int main(void){
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
        disable $var
        check_cpp "$@" <<EOF && enable $var
    
    #include <$header>
    int x;
    EOF
    }
    
    check_func(){
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        disable $func
        check_ld "$@" <<EOF && enable $func
    
    extern int $func();
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    int main(void){
    
    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
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    int main(void){
    
    check_lib(){
        log check_lib "$@"
        header="$1"
        func="$2"
        shift 2
    
        temp_extralibs "$@"
        check_header $header && check_func $func && add_extralibs "$@"
        err=$?
        restore_flags
        return $err
    
    check_lib2(){
        log check_lib2 "$@"
        headers="$1"
        func="$2"
        shift 2
        temp_extralibs "$@"
        check_func2 "$headers" $func && add_extralibs "$@"
        err=$?
        restore_flags
        return $err
    }
    
    
        check_ld "$@" && { enabled cross_compile || $TMPE >>$logfile 2>&1; }
    
    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.
    
        (check_exec "$@") >>$logfile 2>&1 <<EOF
    #include <signal.h>
    static void sighandler(int sig){
        raise(SIGTERM);
    }
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    int main(void){
    
        signal(SIGILL, sighandler);
        signal(SIGFPE, sighandler);
        signal(SIGSEGV, sighandler);
    #ifdef SIGBUS
        signal(SIGBUS, sighandler);
    #endif
        { $code }
    }
    EOF
    }
    
    
    require(){
        name="$1"
        header="$2"
        func="$3"
        shift 3
        check_lib $header $func "$@" || die "ERROR: $name not found"
    
    require2(){
        name="$1"
        headers="$2"
        func="$3"
        shift 3
        check_lib2 "$headers" $func "$@" || die "ERROR: $name not found"
    }
    
    
    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
    }
    
    
    apply(){
        file=$1
        shift
        "$@" < "$file" > "$file.tmp" && mv "$file.tmp" "$file" || rm "$file.tmp"
    }
    
    
    COMPONENT_LIST="
        bsfs
        decoders
        demuxers
        encoders
        muxers
        parsers
        protocols
    "
    
    CONFIG_LIST="
        $COMPONENT_LIST
    
        avisynth
        beos_netserver
        ffmpeg
        ffplay
        ffserver
        gpl
    
    Ramiro Polla's avatar
    Ramiro Polla committed
        libdc1394
    
        libtheora
    
        memalign_hack
        mpegaudio_hp
        network
    
    ARCH_LIST='
        alpha
        armv4l
        bfin
        ia64
        m68k
        mips
        parisc
        powerpc
        s390
        sh4
        sparc
        sparc64
        x86
        x86_32
        x86_64
    '
    
    ARCH_EXT_LIST='
    
    Alex Beregszaszi's avatar
    Alex Beregszaszi committed
        closesocket
    
        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
    
        fast_unaligned
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        fork
    
    Ramiro Polla's avatar
    Ramiro Polla committed
        getrusage
    
        inet_aton
    
        machine_ioctl_bt848_h
        machine_ioctl_meteor_h
    
        mkstemp
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        ppc64
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        soundcard_h
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        sys_soundcard_h
    
    # code dependency declarations
    
    
    # architecture extensions
    altivec_deps="powerpc"
    armv5te_deps="armv4l"
    armv6_deps="armv4l"
    iwmmxt_deps="armv4l"
    
    mmx_deps="x86"
    ssse3_deps="x86"
    
    # decoders / encoders
    
    ac3_decoder_deps="gpl"
    
    Kostya Shishkov's avatar
    Kostya Shishkov committed
    dxa_decoder_deps="zlib"
    
    flashsv_decoder_deps="zlib"
    
    flashsv_encoder_deps="zlib"
    
    flv_decoder_deps="h263_decoder"
    
    h263_decoder_deps="h263_parser mpeg4video_parser"
    
    h263i_decoder_deps="h263_decoder"
    
    h264_decoder_deps="h264_parser"
    
    mpeg_xvmc_decoder_deps="xvmc"
    
    mpeg4_decoder_deps="h263_decoder"
    msmpeg4v1_decoder_deps="h263_decoder"
    msmpeg4v2_decoder_deps="h263_decoder"
    msmpeg4v3_decoder_deps="h263_decoder"
    
    png_decoder_deps="zlib"
    png_encoder_deps="zlib"
    
    vc1_decoder_deps="h263_decoder"
    wmv1_decoder_deps="h263_decoder"
    wmv2_decoder_deps="h263_decoder"
    wmv3_decoder_deps="h263_decoder"
    
    zmbv_decoder_deps="zlib"
    zmbv_encoder_deps="zlib"
    
    
    # external libraries
    
    liba52_decoder_deps="liba52"
    
    liba52bin_decoder_extralibs='$ldl'
    
    libamr_nb_decoder_deps="libamr_nb"
    libamr_nb_encoder_deps="libamr_nb"
    libamr_wb_decoder_deps="libamr_wb"
    libamr_wb_encoder_deps="libamr_wb"
    
    libfaadbin_decoder_extralibs='$ldl'
    
    libgsm_decoder_deps="libgsm"
    libgsm_encoder_deps="libgsm"
    
    libgsm_ms_decoder_deps="libgsm"
    libgsm_ms_encoder_deps="libgsm"
    
    libtheora_encoder_deps="libtheora"
    
    libvorbis_encoder_deps="libvorbis"
    
    libx264_encoder_deps="libx264"
    libxvid_encoder_deps="libxvid"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    mpeg4aac_decoder_deps="libfaad"
    
    # demuxers / muxers
    
    ac3_demuxer_deps="ac3_parser"
    
    audio_beos_demuxer_deps="audio_beos"
    
    audio_beos_demuxer_extralibs="-lmedia -lbe"
    
    audio_beos_muxer_deps="audio_beos"
    
    audio_beos_muxer_extralibs="-lmedia -lbe"
    
    avisynth_demuxer_deps="avisynth"
    
    bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
    
    dv1394_demuxer_deps="dv1394"
    
    Ramiro Polla's avatar
    Ramiro Polla committed
    libdc1394_demuxer_deps="libdc1394"
    
    libnut_demuxer_deps="libnut"
    libnut_muxer_deps="libnut"
    
    mp3_demuxer_deps="mpegaudio_parser"
    
    oss_demuxer_deps_any="soundcard_h sys_soundcard_h"
    oss_muxer_deps_any="soundcard_h sys_soundcard_h"
    
    redir_demuxer_deps="network"
    
    rtp_muxer_deps="network mpegts_demuxer"
    
    rtsp_demuxer_deps="rtp_protocol rtp_muxer"
    sdp_demuxer_deps="rtsp_demuxer"
    
    v4l2_demuxer_deps="linux_videodev2_h"
    v4l_demuxer_deps="linux_videodev_h"
    
    x11_grab_device_demuxer_deps="x11grab XShmCreateImage"
    
    x11_grab_device_demuxer_extralibs="-lX11 -lXext"
    
    # protocols
    
    http_protocol_deps="network"
    rtp_protocol_deps="udp_protocol"
    tcp_protocol_deps="network"
    udp_protocol_deps="network"
    
    
    # programs
    
    ffplay_deps="sdl"
    
    ffserver_deps="ffm_muxer rtp_protocol rtsp_demuxer"
    
    ffserver_extralibs='$ldl'
    vhook_extralibs='$ldl'
    
    Zdenek Kabelac's avatar
    Zdenek Kabelac committed
    if test ! -z "$TMPDIR" ; then
    
    Zdenek Kabelac's avatar
    Zdenek Kabelac committed
    elif test ! -z "$TEMPDIR" ; then
    
    Nick Kurshev's avatar
    Nick Kurshev committed
    else
    
    TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
    TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
    
    TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
    
    TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
    TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
    
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    # default parameters
    
    
    # installation paths
    
    incdir='$(PREFIX)/include/ffmpeg'
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    cc="gcc"
    ar="ar"
    
    Michael Niedermayer's avatar
    Michael Niedermayer committed
    ranlib="ranlib"
    
    make="make"
    
    asmalign_pot="unknown"
    
    
    # configurable options
    
    enable debug
    enable dostrip
    enable ffmpeg
    enable ffplay
    enable ffserver
    enable ipv6
    enable static
    enable mpegaudio_hp
    enable network
    
    vhook="default"
    
    # build settings
    
    LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
    
    FULLNAME='$(NAME)$(BUILDSUF)'
    LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
    
    SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
    
    SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
    SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
    
    LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
    
    # find source path
    source_path="`dirname \"$0\"`"
    
    enable source_path_used
    
    if test -z "$source_path" -o "$source_path" = "." ; then
        source_path="`pwd`"
    
        disable source_path_used
    
    else
        source_path="`cd \"$source_path\"; pwd`"
        echo "$source_path" | grep -q '[[:blank:]]' &&
          die "Out of tree builds are impossible with whitespace in source path."
    fi
    
    FFMPEG_CONFIGURATION="$@"
    
    
    ENCODER_LIST=`sed -n 's/^[^#]*ENC.*(.*, *\(.*\)).*/\1_encoder/p' "$source_path/libavcodec/allcodecs.c"`
    DECODER_LIST=`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' "$source_path/libavcodec/allcodecs.c"`
    PARSER_LIST=`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' "$source_path/libavcodec/allcodecs.c"`
    BSF_LIST=`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' "$source_path/libavcodec/allcodecs.c"`
    MUXER_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavformat/allformats.c"`
    DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavformat/allformats.c"`
    
    OUTDEV_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libavdevice/alldevices.c"`
    INDEV_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libavdevice/alldevices.c"`
    
    PROTOCOL_LIST=`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' "$source_path/libavformat/allformats.c"`
    
    Luca Abeni's avatar
    Luca Abeni committed
    enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST $PROTOCOL_LIST $BSF_LIST $INDEV_LIST $OUTDEV_LIST
    
    enable $ARCH_EXT_LIST
    
    
    die_unknown(){
        echo "Unknown option \"$1\"."
        echo "See $0 --help for available options."
        exit 1
    }
    
    
    Ramiro Polla's avatar
    Ramiro Polla committed
        suffix=_$1
        shift
        echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
    
    for opt do
      optval="${opt#*=}"
      case "$opt" in
      --log)
      ;;
      --log=*) logging="$optval"
      ;;
      --prefix=*) PREFIX="$optval"
      ;;
      --libdir=*) libdir="$optval"
      ;;
      --shlibdir=*) shlibdir="$optval"
      ;;
      --incdir=*) incdir="$optval"
      ;;
      --mandir=*) mandir="$optval"
      ;;
      --source-path=*) source_path="$optval"
      ;;
      --cross-prefix=*) cross_prefix="$optval"
      ;;
    
      --cross-compile) enable cross_compile
    
      ;;
      --target-os=*) targetos="$optval"
      ;;
      --cc=*) cc="$optval"
      ;;
      --make=*) make="$optval"
      ;;
      --extra-cflags=*) add_cflags "$optval"
      ;;
      --extra-ldflags=*) add_ldflags "$optval"
      ;;
      --extra-libs=*) add_extralibs "$optval"
      ;;
      --build-suffix=*) BUILDSUF="$optval"
      ;;
      --arch=*) arch="$optval"
      ;;
      --cpu=*) cpu="$optval"
      ;;
    
      --enable-sunmlib) enable mlib
    
      --disable-strip) disable dostrip
    
      ;;
      --disable-encoders) disable $ENCODER_LIST
      ;;
      --disable-decoders) disable $DECODER_LIST
      ;;
      --disable-muxers) disable $MUXER_LIST
      ;;
      --disable-demuxers) disable $DEMUXER_LIST
      ;;
      --disable-parsers) disable $PARSER_LIST
      ;;
    
      --disable-bsfs) disable $BSF_LIST
      ;;
    
      --disable-protocols) disable $PROTOCOL_LIST