Skip to content
Snippets Groups Projects
configure 56.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • Fabrice Bellard's avatar
    Fabrice Bellard committed
    #!/bin/sh
    
    # 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-mingw32         enable MinGW native/cross Windows compile"
      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]"
    
    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-sunmlib         use Sun medialib [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 "  --enable-dc1394          enable IIDC-1394 grabbing using libdc1394"
      echo "                           and libraw1394 [default=no]"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
      echo "  --enable-a52bin          open liba52.so.0 at runtime [default=no]"
    
      echo "  --enable-avisynth        allow reading AVISynth script files [default=no]"
    
    Diego Biurrun's avatar
    Diego Biurrun committed
      echo "  --enable-dts             enable GPLed libdts support [default=no]"
      echo "  --enable-faac            enable FAAC support via libfaac [default=no]"
      echo "  --enable-faad            enable FAAD support via libfaad [default=no]"
      echo "  --enable-faadbin         build FAAD support with runtime linking [default=no]"
      echo "  --enable-libgsm          enable GSM support via libgsm [default=no]"
      echo "  --enable-mp3lame         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-vorbis          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 "  --enable-gpl             allow use of GPL code, the resulting libav*"
      echo "                           and ffmpeg will be under GPL [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 "  --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
                                       instruction selection, may crash on older CPUs)"
    
      echo "  --powerpc-perf-enable    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 "  --enable-gprof           enable profiling with gprof [$gprof]"
      echo "  --disable-debug          disable debugging symbols"
      echo "  --disable-opts           disable compiler optimizations"
    
      echo "  --enable-extra-warnings  enable more compiler warnings"
    
      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-strip          disable stripping of executables and shared libraries"
      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 "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]'
    }
    
    
    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;
    }
    
    #include <$header>
    int x;
    EOF
    
        var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
    
        test "$err" = 0 && enable $var || disable $var
        return $err
    
        func=$1
        shift
        check_ld "$@" <<EOF
    extern int $func();
    int main(){
        $func();
    }
    EOF
    
        err=$?
        test "$err" = 0 && enable $func || disable $func
        return $err
    
    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_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"
    
    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
        pp
        protocols
        swscaler
        vhook
        video4linux
        video4linux2
    
        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
        sys_soundcard_h
    
        threads
        w32threads
    
    TARGET_LIST='
        altivec
        armv5te
    
        armv6
    
    CMDLINE_SELECT="
        $CONFIG_LIST
        $TARGET_LIST
        debug
        extra_warnings
        mingw32
        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="liba52bin"
    
    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="video4linux2"
    
    Aurelien Jacobs's avatar
    Aurelien Jacobs committed
    video_grab_device_demuxer_deps_any="video4linux 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"
    
      i386|i486|i586|i686|i86pc|BePC)
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
      ;;
    
    Diego Biurrun's avatar
    Diego Biurrun committed
        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
    
      # armv4l is a subset of armv[567]*l
      arm|armv[4567]*l)
    
    Alex Beregszaszi's avatar
    Alex Beregszaszi committed
      sh4)
    
    Alex Beregszaszi's avatar
    Alex Beregszaszi committed
      ;;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
      *)
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
      ;;
    esac
    
    
    # OS
    beos_netserver="no"
    mingw32="no"
    os2="no"
    wince="no"
    
    # non-library system interfaces
    
    audio_oss="yes"
    
    video4linux2="yes"
    video4linux="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
    extralibs="-lm"
    
    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)"'
    
    
    # OS specific
    targetos=`uname -s`
    case $targetos in
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        # helps building libavcodec
        add_cflags "-DPIC -fomit-frame-pointer"
        # 3 gcc releases known for BeOS, each with ugly bugs
        gcc_version="`$cc -v 2>&1 | grep version | cut -d ' ' -f3-`"
        case "$gcc_version" in
          2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc"
            mmx="no"
            ;;
          *20010315*) echo "BeBits gcc"
            add_cflags "-fno-expensive-optimizations"
            ;;
        esac
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        SHFLAGS=-nostart
        # disable Linux things
        dv1394="no"
        # enable BeOS things
        audio_beos="yes"
        # no need for libm, but the inet stuff
        # Check for BONE
    
        # XXX: actually should check for NOT net_server
    
    Måns Rullgård's avatar
    Måns Rullgård committed
        if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
            extralibs="-lbind -lsocket"
        else
            beos_netserver="yes"
            extralibs="-lnet"
        fi ;;
      SunOS)
        dv1394="no"
        FFLDFLAGS=""
        FFSERVERLDFLAGS=""
        SHFLAGS="-shared -Wl,-h,\$@"
        add_extralibs "-lsocket -lnsl"
        ;;
      NetBSD)
        dv1394="no"
        add_extralibs "-lossaudio"
        ;;
      OpenBSD)
        dv1394="no"
        need_memalign="no"
        LIBOBJFLAGS="\$(PIC)"
        LDCONFIG="ldconfig -m \$(shlibdir)"
        SHFLAGS='-shared'
        SLIBNAME='$(SLIBPREF)$(NAME)$(SLIBSUF).$(LIBVERSION)'
        SLIBNAME_WITH_VERSION='$(SLIBNAME)'
        SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
        add_extralibs "-lossaudio"
        ;;
      FreeBSD)
        dv1394="no"
        need_memalign="no"
        add_cflags "-pthread"
        ;;
      GNU/kFreeBSD)
        dv1394="no"
        add_cflags "-pthread"
        ;;
      BSD/OS)
        dv1394="no"
        extralibs="-lpoll -lgnugetopt -lm"
        strip="strip -d"
        ;;
      Darwin)
        cc="cc"
        dv1394="no"
        need_memalign="no"
        SHFLAGS="-dynamiclib -Wl,-single_module -Wl,-install_name,\$(shlibdir)/\$(SLIBNAME),-current_version,\$(SPPVERSION),-compatibility_version,\$(SPPVERSION) -Wl,-read_only_relocs,suppress"
        VHOOKSHFLAGS='-dynamiclib -Wl,-single_module -flat_namespace -undefined suppress -Wl,-install_name,$(shlibdir)/vhook/$@'
        extralibs=""
        strip="strip -x"
        FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
        SLIBSUF=".dylib"
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME).$(LIBVERSION)$(SLIBSUF)'
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME).$(LIBMAJOR)$(SLIBSUF)'
        FFSERVERLDFLAGS=-Wl,-bind_at_load
        ;;
      MINGW32*)
        # Note: the rest of the mingw32 config is done afterwards as mingw32
        # can be forced on the command line for Linux cross compilation.
        mingw32="yes"
        ;;
      CYGWIN*)
        targetos=CYGWIN
        shlibdir="$bindir"
        dv1394="no"
        VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
        VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
        extralibs=""
        EXESUF=".exe"
        SLIBPREF="cyg"
        SLIBSUF=".dll"
        SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
        SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
        SHFLAGS='-shared -Wl,--out-implib=lib$(NAME).dll.a'
        ;;
      Linux)
        LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
        ;;
      IRIX*)
        targetos=IRIX
        ranlib="echo ignoring ranlib"
        ;;
      OS/2)
        TMPE=$TMPE".exe"
        ar="emxomfar -p128"
        ranlib="echo ignoring ranlib"
        strip="echo ignoring strip"
        add_cflags "-Zomf"
        FFLDFLAGS="-Zomf -Zstack 16384 -s"
        SHFLAGS="-Zdll -Zomf"
        FFSERVERLDFLAGS=""
        LIBPREF=""
        LIBSUF=".lib"
        SLIBPREF=""
        SLIBSUF=".dll"
        EXESUF=".exe"
        extralibs=""
        pkg_requires=""
        dv1394="no"
        ffserver="no"
        vhook="no"
        os2="yes"
        ;;
      *)
        targetos="${targetos}-UNKNOWN"
        ;;
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    
    
    source_path="`dirname \"$0\"`"
    
    source_path_used="yes"
    if test -z "$source_path" -o "$source_path" = "." ; then
    
    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."
    
    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
    }
    
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
    for opt do
    
    Måns Rullgård's avatar
    Måns Rullgård committed
      optval="${opt#*=}"
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
      case "$opt" in
    
    Måns Rullgård's avatar
    Måns Rullgård committed
      --log=*) logging="$optval"
    
      --prefix=*) PREFIX="$optval"
    
    Fabrice Bellard's avatar
    Fabrice Bellard committed
      ;;
    
      --libdir=*) libdir="$optval"