Skip to content
Snippets Groups Projects
configure 55.7 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/man]"
      echo "  --enable-mingwce         enable MinGW native/cross WinCE compile"
      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-os2threads      use OS/2 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-dc1394          enable IIDC-1394 grabbing using libdc1394"
      echo "                           and libraw1394 [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-libdts          enable GPLed libdts support [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      build FAAD support with runtime linking [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-libogg          enable Ogg muxing via libogg [default=no]"
    
      echo "  --enable-libtheora       enable Theora encoding via libtheora [default=no]"
    
      echo "  --enable-libvorbis       enable Vorbis en/decoding via libvorbis,"
    
      echo "                           native implementations exist [default=no]"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
      echo "  --enable-x264            enable H.264 encoding via x264 [default=no]"
    
      echo "  --enable-xvid            enable Xvid encoding via xvidcore,"
      echo "                           native MPEG-4/Xvid encoder exists [default=no]"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
      echo "  --enable-amr_nb          enable amr_nb float audio codec"
      echo "  --enable-amr_nb-fixed    use fixed point for amr-nb codec"
      echo "  --enable-amr_wb          enable amr_wb float audio codec"
      echo "  --enable-amr_if2         enable amr_wb IF2 audio codec"
    
      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-audio-oss      disable OSS audio support [default=no]"
      echo "  --disable-audio-beos     disable BeOS audio support [default=no]"
      echo "  --disable-v4l            disable video4linux grabbing [default=no]"
      echo "  --disable-v4l2           disable video4linux2 grabbing [default=no]"
      echo "  --disable-bktr           disable bktr video grabbing [default=no]"
      echo "  --disable-dv1394         disable DV1394 grabbing [default=no]"
      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 "  --disable-protocols      disable I/O protocols support [default=no]"
    
      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
      echo "Developer options (useful when working on FFmpeg itself):"
      echo "  --enable-gprof           enable profiling with gprof [$gprof]"
      echo "  --disable-opts           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
        cat -n $1 >>$logfile
        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
    }
    
    
            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
    
    
            disable ${cfg}_checking
    
    print_config(){
        pfx=$1
        header=$2
        makefile=$3
        shift 3
        for cfg; do
            if enabled $cfg; then
                ucname="${pfx}`toupper $cfg`"
                echo "#define ${ucname} 1" >> $header
                echo "${ucname}=yes" >> $makefile
            fi
        done
    
        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_cc || return
    
        check_cmd $cc $LDFLAGS "$@" -o $TMPE $TMPO $extralibs
    
        log check_cflags "$@"
        check_cc "$@" <<EOF && add_cflags "$@"
    
        log check_ldflags "$@"
        check_ld "$@" <<EOF && add_ldflags "$@"
    int main(){
        return 0;
    }
    
    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();
    int main(){
        $func();
    }
    EOF
    }
    
    
    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
    int main(){
        (void) $func;
        return 0;
    }
    EOF
    }
    
    
    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; }
    
    }
    
    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"
    }
    
    
    CONFIG_LIST='
        encoders
        decoders
        parsers
        muxers
        demuxers
        amr
        amr_nb
        amr_nb_fixed
        amr_wb
        audio_beos
        audio_oss
        avisynth
        beos_netserver
        bktr
        dc1394
        dv1394
        ffmpeg
        ffplay
        ffserver
        gpl
    
        libtheora
    
        libvorbis
        memalign_hack
        mpegaudio_hp
        network
    
        beosthreads
    
        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
    
        inet_aton
    
        machine_ioctl_bt848_h
        machine_ioctl_meteor_h
    
        os2threads
        pthreads
    
    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
    
        threads
        w32threads
    
    TARGET_LIST='
        altivec
        armv5te
    
        armv6
    
    CMDLINE_SELECT="
        $CONFIG_LIST
        $TARGET_LIST
    
        debug
        extra_warnings
        shared
        static
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        beosthreads
        os2threads
        pthreads
        w32threads
    
    flashsv_decoder_deps="zlib"
    
    flashsv_encoder_deps="zlib"
    
    mpeg_xvmc_decoder_deps="xvmc"
    png_decoder_deps="zlib"
    png_encoder_deps="zlib"
    x264_encoder_deps="x264"
    xvid_encoder_deps="xvid"
    zmbv_decoder_deps="zlib"
    zmbv_encoder_deps="zlib"
    
    aac_decoder_deps="libfaad"
    mpeg4aac_decoder_deps="libfaad"
    amr_nb_decoder_deps_any="amr_nb amr_nb_fixed"
    amr_nb_encoder_deps_any="amr_nb amr_nb_fixed"
    amr_wb_decoder_deps="amr_wb"
    amr_wb_encoder_deps="amr_wb"
    dts_decoder_deps="libdts"
    faac_encoder_deps="libfaac"
    
    liba52_decoder_deps="liba52"
    
    libgsm_decoder_deps="libgsm"
    libgsm_encoder_deps="libgsm"
    
    libtheora_encoder_deps="libtheora"
    
    mp3lame_encoder_deps="libmp3lame"
    oggvorbis_decoder_deps="libvorbis"
    oggvorbis_encoder_deps="libvorbis"
    
    audio_demuxer_deps_any="audio_oss audio_beos"
    audio_muxer_deps_any="audio_oss audio_beos"
    dc1394_demuxer_deps="dc1394"
    dv1394_demuxer_deps="dv1394"
    gxf_muxer_deps="gpl"
    
    libnut_demuxer_deps="libnut"
    libnut_muxer_deps="libnut"
    
    ogg_muxer_deps="libogg"
    redir_demuxer_deps="network"
    rtp_muxer_deps="network"
    rtsp_demuxer_deps="network"
    sdp_demuxer_deps="network"
    
    v4l2_demuxer_deps="v4l2"
    video_grab_device_demuxer_deps_any="v4l bktr"
    
    x11_grab_device_demuxer_deps="x11grab"
    
    
    ffplay_deps="sdl"
    
    Måns Rullgård's avatar
    Måns Rullgård committed
    ffserver_deps="network protocols muxers"
    
    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
    
    PREFIX="/usr/local"
    libdir='${PREFIX}/lib'
    
    incdir='${PREFIX}/include/ffmpeg'
    mandir='${PREFIX}/man'
    bindir='${PREFIX}/bin'
    
    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"
    
    # machine
    
    armv6="default"
    
    beos_netserver="no"
    mingw32="no"
    os2="no"
    wince="no"
    
    # non-library system interfaces
    
    audio_oss="yes"
    
    
    # libraries
    amr_if2="no"
    amr_nb="no"
    amr_nb_fixed="no"
    amr_wb="no"
    avisynth="no"
    
    dlfcn_h="no"
    dlopen="no"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
    libdts="no"
    
    libfaad2="no"
    
    libmp3lame="no"
    
    libtheora="no"
    
    mlib="no"
    x11grab="no"
    
    xvid="no"
    zlib="yes"
    
    # configurable options
    
    ffmpeg="yes"
    ffplay="yes"
    ffserver="yes"
    gpl="no"
    gprof="no"
    ipv6="yes"
    
    memalign_hack="no"
    
    network="yes"
    optimize="yes"
    pp="no"
    protocols="yes"
    swscaler="no"
    vhook="default"
    
    # threading
    beosthreads="no"
    os2threads="no"
    pthreads="no"
    w32threads="no"
    thread_type="no"
    
    # build settings
    
    FFLDFLAGS=-Wl,--warn-common
    
    LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
    
    SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF)'
    
    SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
    SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    EXESUF=""
    
    LIB_INSTALL_EXTRA_CMD='$(RANLIB) "$(libdir)/$(LIB)"'
    
    # find source path
    source_path="`dirname \"$0\"`"
    source_path_used="yes"
    if test -z "$source_path" -o "$source_path" = "." ; then
        source_path="`pwd`"
        source_path_used="no"
    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
    
    if test x"$1" = x"-h" -o x"$1" = x"--help" ; then
        show_help
    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"`
    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"`
    
    enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST
    
    die_unknown(){
        echo "Unknown option \"$1\"."
        echo "See $0 --help for available options."
        exit 1
    }
    
    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) cross_compile="yes"
      ;;
      --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-mingwce) wince="yes"
      ;;
      --disable-opts) optimize="no"
      ;;
      --enable-small) optimize="small"
      ;;
      --enable-sunmlib) mlib="yes"
      ;;
      --disable-strip) dostrip="no"
      ;;
      --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
      ;;
      --enable-*=*|--disable-*=*)
      eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
      case "$thing" in
          encoder|decoder|muxer|demuxer|parser) $action ${optval}_${thing} ;;
          *) die_unknown "$opt" ;;
      esac
      ;;
      --enable-?*|--disable-?*)
      eval `echo "$opt" | sed 's/--/action=/;s/-/ option=/;s/-/_/g'`
      echo "$CMDLINE_SELECT" | grep -q "^ *$option\$" || die_unknown $opt
      $action $option
      ;;
      --help) show_help
      ;;
      *)
      die_unknown $opt
      ;;
      esac
    done
    
    
    case "$arch" in
      i386|i486|i586|i686|i86pc|BePC)
        arch="x86_32"
      ;;
      x86_64|amd64)
        arch="x86_32"
        canon_arch="`$cc -dumpmachine | sed -e 's,\([^-]*\)-.*,\1,'`"
        if [ x"$canon_arch" = x"x86_64" -o x"$canon_arch" = x"amd64" ]; then
          if [ -z "`echo $CFLAGS | grep -- -m32`"  ]; then
            arch="x86_64"
          fi
        fi
      ;;
      # armv4l is a subset of armv[567]*l
      arm|armv[4567]*l)
        arch="armv4l"
      ;;
      alpha)
        arch="alpha"
      ;;
      "Power Macintosh"|ppc|ppc64|powerpc)
        arch="powerpc"
      ;;
      mips|mipsel|IP*)
        arch="mips"
      ;;
      sun4u|sparc64)
        arch="sparc64"
      ;;
      sparc)
        arch="sparc"
      ;;
      sh4)
        arch="sh4"
      ;;
      parisc|parisc64)
        arch="parisc"
      ;;
      s390|s390x)
        arch="s390"
      ;;
      m68k)
        arch="m68k"
      ;;
      ia64)
        arch="ia64"
      ;;
      bfin)
        arch="bfin"
      ;;
      *)
        arch="unknown"
      ;;