#!/bin/sh
#
# MythTV configure script, based on the 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."
    echo "This configure script requires a POSIX-compatible shell"
    echo "such as bash or ksh."
    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
    exit 1
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 "  --previous               use previous configure parameters if possible"
  echo "  --compile-type=CTYPE     one of release, profile, debug [$compile_type]"
  echo "                           NOTE: profile is for sampling profilers"
  echo "  --prefix=PREFIX          install in PREFIX [$PREFIX]"
  echo "  --libdir-name=LIBNAME    search/install libraries in PREFIX/LIBNAME [$libdir_name]"
  echo "  --disable-ccache         disable compiler cache (ccache)"
  echo "  --disable-distcc         disable distributed compilation (distcc)"
<<BLOCK_QUOTE
  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]"
  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"
  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]"
  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]"
BLOCK_QUOTE
  echo ""
  echo "Advanced options (experts only):"
<<BLOCK_QUOTE
  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]"
BLOCK_QUOTE
  echo "  --qmake=QMAKE            use specified qmake [$qmake]"
  echo "  --extra-cflags=ECFLAGS   add ECFLAGS to CFLAGS [$CFLAGS]"
  echo "  --extra-cxxflags=ECXFLAGS add ECXXFLAGS to list of flags for C++ compile"
  echo "  --extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS [$LDFLAGS]"
  echo "  --enable-symbol-visibility enables symbol visibility options"
<<BLOCK_QUOTE
  echo "  --extra-libs=ELIBS       add ELIBS [$ELIBS]"
  echo "  --build-suffix=SUFFIX    suffix for application specific build []"
BLOCK_QUOTE
  echo "  --arch=ARCH              select architecture  [$arch]"
  echo "  --tune=CPU               tune instruction usage for a particular CPU [$tune]"
  echo "  --cpu=CPU                selects the minimum cpu required (affects"
  echo "                           instruction selection, may crash on older CPUs)"
<<BLOCK_QUOTE
  echo "  --enable-powerpc-perf    enable performance report on PPC"
  echo "                           (requires enabling PMC)"
BLOCK_QUOTE
  echo "  --enable-proc-opt        enable processor specific compilation"
  echo "  --disable-mmx            disable MMX usage"
<<BLOCK_QUOTE
  echo "  --disable-armv5te        disable armv5te usage"
  echo "  --disable-armv6          disable armv6 usage"
  echo "  --disable-iwmmxt         disable iwmmxt usage"
  echo "  --disable-altivec        disable AltiVec usage"
BLOCK_QUOTE
  echo "Advanced features (experts only):"
  echo "  --disable-audio-oss      disable OSS audio support"
  echo "  --disable-audio-alsa     disable ALSA audio support"
  echo "  --disable-audio-arts     disable aRts audio support"
  echo "  --disable-audio-jack     disable JACK audio support"
  echo "  --enable-valgrind        disables timeouts for valgrind memory debugging"
  # Don't print disable frontend/backend options, these
  # cause breakage and people use them inappropriately. -- dtk
  #echo "  --disable-frontend       disable frontend [breaks dependency checking, previews]"
  #echo "  --disable-backend        disable backend  [breaks dependency checking]"
  echo "  --disable-lirc           disable lirc support (Infrared Remotes)"
  echo "  --disable-joystick-menu  disable joystick menu"
  echo "  --disable-firewire       disable support for FireWire cable boxes"
  echo "  --disable-iptv           disable support for recording RTSP/UDP/RTP streams"
  echo "  --disable-dbox2          disable support for Nokia DBOX2 DVB boxes (or compatibles)"
  echo "  --disable-hdhomerun      disable support for HDHomeRun boxes"
  echo "  --disable-v4l            disable Video4Linux support"
  echo "  --disable-ivtv           disable ivtv support (PVR-x50) req. v4l support"
  echo "  --disable-hdpvr          disable HD-PVR support"
  echo "  --disable-dvb            disable DVB support"
  echo "  --dvb-path=HDRLOC        location of directory containing"
  echo "                           'linux/dvb/frontend.h', not the"
  echo "                           directory with frontend.h [$dvb_path]"
  echo "  --disable-x11            disable X11 support"
  echo "  --x11-path=X11LOC        location of X11 include files [$x11_include_path-path]"
#  echo "  --enable-glx-procaddrarb use glXGetProcAddressARB() instead of glXGetProcAddress()"
  echo "  --disable-xrandr         disable X11 resolution switching"
  echo "  --disable-xv             disable XVideo   (X11 video output accel.)"
  echo "  --disable-xvmc           disable XvMC     (Linux/BSD MPEG accel.)"
  echo "  --disable-xvmcw          disable XvMC Wrapper, use --xvmc-lib if autodetection fails"
  echo "  --enable-xvmc-pro        enable XvMC for the unichrome pro (NOT unichrome) chipset"
  echo "  --enable-xvmc-opengl     enable nVidia XvMC OpenGL texture method"
  echo "  --xvmc-lib=LIB           XvMC library override (for crosscompiling)"
  #echo "  --disable-xvmc-vld       disable XvMC-VLD (VIA Epia MPEG accel.)"
  echo "  --enable-opengl-video    enable OpenGL based video display "
  echo "  --enable-mac-accel       enable Mac OS X MPEG acceleration"
  echo "  --enable-opengl-vsync    enable OpenGL vsync method"
  echo "  --disable-directfb       disable DirectFB (Linux non-X11 video)"
  echo "  --enable-directx         enable DirectX   (Microsoft video)"
  echo ""
  echo "  --enable-mac-bundle      produce standalone OS X apps (e.g. mythfrontend.app)"
  echo ""
  echo "  --runtime-prefix=PREFIX  prefix to be used at runtime"
  echo "                           (e.g. .. or /myth/latest)"
  echo "  --with-bindings=LIST     install the bindings specified in the"
  echo "                           comma-separated list"
  echo "                           Supported bindings: perl, python"
<<BLOCK_QUOTE
  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."
BLOCK_QUOTE
  exit 1
}

log(){
    echo "$@" >>$logfile
}

log_file(){
    log BEGIN $1
    pr -n -t $1 >>$logfile
    log END $1
}

echolog(){
    log "$@"
    echo "$@"
}

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
mythtv-dev@mythtv.org mailing list or IRC #mythtv on irc.freenode.net
EOF
    if enabled logging; then
        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
    rm -f $TMPC $TMPCXX $TMPO $TMPE $TMPS $TMPH
    exit 1
}

# "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 $*
}

enabled(){
    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
}

check_deps(){
    for cfg; do
        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
    done
}

print_config(){
    pfx=$1
    header=$2
    makefile=$3
    shift 3
    for cfg; do
        ucname="`toupper $cfg`"
        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
        fi
    done
}

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

save_flags(){
    flags_saved && return
    SAVE_CFLAGS="$CFLAGS"
    SAVE_LDFLAGS="$LDFLAGS"
    SAVE_extralibs="$extralibs"
}

restore_flags(){
    flags_saved || return
    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_ecflags(){
    append ECFLAGS "$@"
}

add_optflags(){
    append OPTFLAGS "$@"
}

add_archflags(){
    append ARCHFLAGS "$@"
}

add_cppflags(){
    append ECXXFLAGS "$@"
}

add_ldflags(){
    append LDFLAGS "$@"
}

add_extralibs(){
    append extralibs "$@"
}

check_cmd(){
    log "$@"
    "$@" >>$logfile 2>&1
}

check_cc(){
    log check_cc "$@"
    cat >$TMPC
    log_file $TMPC
    check_cmd $cc $CFLAGS $ECFLAGS $OPTFLAGS "$@" -c -o $TMPO $TMPC
}

check_cpp(){
    log check_cpp "$@"
    cat >$TMPCXX
    log_file $TMPCXX
    check_cmd $cxx $CFLAGS $ECXXFLAGS "$@" -E -o $TMPO $TMPCXX
}

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_ld(){
    log check_ld "$@"
    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
}

check_cflags(){
    log check_cflags "$@"
    check_cc "$@" <<EOF && add_cflags "$@"
int x;
EOF
}

check_ecflags(){
    log check_ecflags "$@"
    check_cc $@ <<EOF && add_ecflags "$@" || echolog "WARNING! An unknown C compiler flag in: \"$@\". Option(s) will be ignored."
int x;
EOF
}

check_optflags(){
    log check_optflags "$@"
    check_cc "$@" <<EOF && add_optflags "$@"
int x;
EOF
}

check_archflags(){
    log check_archflags "$@"
    check_cc "$@" <<EOF && add_archflags "$@"
int x;
EOF
}

check_mtune_mcpu(){
    log check_mtune_mcpu "$@"
    cpu_type="$1"
    shift
    check_archflags "-mtune=$cpu_type" "$@" || check_archflags "-mcpu=$cpu_type" "$@"
}

check_cppflags(){
    log check_cppflags "$@"
    check_cpp $@ <<EOF && add_cppflags "$@" || echolog "WARNING! An unknown C++ compiler flag in: \"$@\". Option(s) will be ignored."
class X {};
int x;
EOF
}

check_ldflags(){
    log check_ldflags "$@"
    check_ld "$@" <<EOF && add_ldflags "$@"
int main(){
    return 0;
}
EOF
}

check_header(){
    log check_header "$@"
    header=$1
    shift
    var=`echo $header | sed 's/[^A-Za-z0-9_]/_/g'`
    disable $var
    check_cpp "$@" <<EOF && enable $var
#include <$header>
int x;
EOF
}

check_func(){
    log check_func "$@"
    func=$1
    shift
    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_exec(){
    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);
}
int main(){
    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"
}

x86_mmx_cpus="pentium-mmx,pentium2,pentium3,pentium3m,pentium-m"
x86_mmx_cpus="$x86_mmx_cpus,pentium4,pentium4m,prescott"
x86_mmx_cpus="$x86_mmx_cpus,athlon,athlon-xp,athlon-tbird,athlon-4,athlon-mp,"
x86_mmx_cpus="$x86_mmx_cpus,c3,c3-2,k6,k6-2,k6-3"

x86_cpus="i386,i486,i586,i686,pentium,pentiumpro,${x86_mmx_cpus}"

x86_64_cpus="x86-64,athlon64,k8,opteron,barcelona,athlon-fx,nocona,core2"

is_x86_cpu() {
    expr ",${x86_cpus}," : ".*,$1," > /dev/null
}

is_x86_64_cpu() {
    expr ",${x86_64_cpus}," : ".*,$1," > /dev/null
}

is_x86_mmx() {
    expr ",${x86_mmx_cpus}," : ".*,$1," > /dev/null || is_x86_64_cpu "$1"
}

COMPONENT_LIST="
    bsfs
    decoders
    demuxers
    encoders
    muxers
    parsers
    protocols
"

CONFIG_LIST="
    $COMPONENT_LIST
    avisynth
    beos_netserver
    darwin
    ffmpeg
    ffplay
    ffserver
    gpl
    gprof
    gray
    ipv6
    liba52
    liba52bin
    libamr
    libamr_nb
    libamr_wb
    libdc1394
    libfaac
    libfaad
    libfaadbin
    libgsm
    libmp3lame
    libnut
    libtheora
    libvorbis
    libx264
    libxvid
    memalign_hack
    mpegaudio_hp
    network
    powerpc_perf
    pp
    small
    swscaler
    vhook
    x11grab
    zlib
"

THREADS_LIST='
    beosthreads
    pthreads
    w32threads
'

ARCH_LIST='
    alpha
    armv4l
    bfin
    ia64
    m68k
    mips
    parisc
    powerpc
    s390
    sh4
    sparc
    sparc64
    x86
    x86_32
    x86_64
'

ARCH_EXT_LIST='
    altivec
    armv5te
    armv6
    iwmmxt
    mmi
    mmx
    ssse3
    vis
'

HAVE_LIST="
    $ARCH_EXT_LIST
    $THREADS_LIST
    altivec_h
    arpa_inet_h
    byteswap_h
    closesocket
    cmov
    conio_h
    dcbzl
    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
    dlfcn_h
    dlopen
    ebp_available
    ebx_available
    fast_64bit
    fast_cmov
    fast_unaligned
    fork
    freetype2
    ftime
    gethrtime
    getifaddrs
    GetProcessTimes
    getrusage
    gettimeofday
    imlib2
    inet_aton
    lrint
    lrintf
    machine_ioctl_bt848_h
    machine_ioctl_meteor_h
    malloc_h
    memalign
    mkstemp
    mlib
    ppc64
    round
    sdl
    sdl_video_size
    soundcard_h
    stdint_h
    sys_poll_h
    sys_soundcard_h
    termios_h
    threads
    winsock2_h
"

MYTHTV_CONFIG_LIST='
    backend
    dbox2
    directfb
    directx
    dvb
    dvdv
    firewire
    fribidi
    frontend
    glx_proc_addr_arb
    hdhomerun
    hdpvr
    iptv
    ivtv
    joystick_menu
    libfftw3
    lirc
    opengl_video
    opengl_vsync
    qtwebkit
    v4l
    valgrind
    x11
    xrandr
    xv
    xvmc
    xvmc_opengl
    xvmc_vld
    xvmcw
'

MYTHTV_LIST='
    audio_alsa
    audio_arts
    audio_jack
    audio_oss
    ffmpeg_pthreads
    mac_bundle
    proc_opt
    silent_cc
    symbol_visibility
    xvmc_pro
'

USING_LIST='
    appleremote
    bindings_perl
    bindings_python
    darwin_da
    dvdv
    opengl
'

CMDLINE_SELECT="
    $ARCH_EXT_LIST
    $CONFIG_LIST
    $THREADS_LIST
    $MYTHTV_LIST
    $MYTHTV_CONFIG_LIST
    debug
    extra_warnings
    optimizations
    shared
    static
"

# code dependency declarations

# architecture extensions
altivec_deps="powerpc"
armv5te_deps="armv4l"
armv6_deps="armv4l"
iwmmxt_deps="armv4l"
mmi_deps="mips"
mmx_deps="x86"
ssse3_deps="x86"
vis_deps="sparc"

# decoders / encoders
ac3_decoder_deps="gpl"
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_dvdv_decoder_deps="dvdv"
mpeg_xvmc_decoder_deps="xvmc"
mpeg_xvmc_vld_decoder_deps="xvmc_vld"
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"
snow_decoder_deps="disabled_in_mythtv"
svq3_decoder_deps="h264_parser"
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"
libfaac_encoder_deps="libfaac"
libfaad_decoder_deps="libfaad"
libfaadbin_decoder_extralibs='$ldl'
libgsm_decoder_deps="libgsm"
libgsm_encoder_deps="libgsm"
libgsm_ms_decoder_deps="libgsm"
libgsm_ms_encoder_deps="libgsm"
libmp3lame_encoder_deps="libmp3lame"
libtheora_encoder_deps="libtheora"
libvorbis_encoder_deps="libvorbis"
libx264_encoder_deps="libx264"
libxvid_encoder_deps="libxvid"
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"
libdc1394_demuxer_deps="libdc1394"
libnut_demuxer_deps="libnut"
libnut_muxer_deps="libnut"
mp3_demuxer_deps="mpegaudio_parser"
mpegtsraw_demuxer_deps="merge_libavformat_mpegts_c"
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'

# mythtv dependencies
audio_oss_deps_any="soundcard_h sys_soundcard_h"
dbox2_deps="backend"
dvb_deps="backend"
firewire_deps="backend"
iptv_deps="backend"
ivtv_deps="backend v4l"
hdpvr_deps="backend v4l"
hdhomerun_deps="backend"
opengl_deps="GL_gl_h"
opengl_deps_any="windows x11"
opengl_video_deps="opengl xv"
opengl_vsync_deps="opengl"
qtwebkit_deps="QtWebKit_QWebView"
v4l_deps="backend"
xrandr_deps="x11"
xv_deps="x11"
xvmc_deps="xv X11_extensions_XvMClib_h"
xvmc_opengl_deps="opengl xvmc"
xvmc_pro_deps="xvmc X11_extensions_vldXvMC_h"
xvmc_vld_deps="xvmc X11_extensions_vldXvMC_h"
xvmcw_deps="xvmc"


# set temporary file name
if test ! -z "$TMPDIR" ; then
    TMPDIR1="${TMPDIR}"
elif test ! -z "$TEMPDIR" ; then
    TMPDIR1="${TEMPDIR}"
else
    TMPDIR1="/tmp"
fi

TMPC="${TMPDIR1}/mythtv-conf-${RANDOM}-$$-${RANDOM}.c"
TMPCXX="${TMPDIR1}/mythtv-conf-${RANDOM}-$$-${RANDOM}.cpp"
TMPO="${TMPDIR1}/mythtv-conf-${RANDOM}-$$-${RANDOM}.o"
TMPE="${TMPDIR1}/mythtv-conf-${RANDOM}-$$-${RANDOM}"
TMPS="${TMPDIR1}/mythtv-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/mythtv-conf-${RANDOM}-$$-${RANDOM}.h"

# default parameters
enable logging
pre_logfile="config.ep"
logfile="$pre_logfile"
compile_type="release"

# installation paths
PREFIX="/usr/local"
libdir_name="lib"
libdir=""
shlibdir="$libdir"
incdir='$(PREFIX)/include/mythtv'
mandir='$(PREFIX)/share/man'
bindir='$(PREFIX)/bin'

# toolchain
cc="gcc"
cxx="g++"
ccache="yes"
distcc="yes"
ar="ar"
ranlib="ranlib"
make="make"
qmake="qmake"
strip="strip"
asmalign_pot="unknown"
ln_s="ln -sf"

if test x"$CC" != x"" ; then
    cc="$CC"
fi

if test x"$CXX" != x"" ; then
    cxx="$CXX"
fi

# machine
arch=`uname -m`
arch_raw="$arch"
cpu="generic"
processor=`uname -p 2>/dev/null`
processor_flags=""
tune="generic"

if test -f /proc/cpuinfo ; then
    if test x"$processor" = x"" -o x"$processor" = x"$arch_raw" -o \
            x"$processor" = x"unknown" ; then
        processor=`cat /proc/cpuinfo | grep "model name" | head -n 1`
    fi
    processor_flags=`cat /proc/cpuinfo | grep "flags" | head -n 1`
fi

# Mac OS X equivalent
if test -f /usr/bin/hostinfo ; then
    if test x"$processor" = x"" -o x"$processor" = x"$arch_raw" -o \
            x"$processor" = x"unknown" -o x"$processor" = x"powerpc" ; then
        processor=`/usr/bin/hostinfo | grep "Processor type:"`
        processor=${processor#Processor type: *}
        processor=${processor% (*}
        if test x"`echo $processor | cut -c1-3`" = x"ppc" ; then
            tune=$processor
        else
            # 10.4 only:
            processor=`/usr/sbin/sysctl -n machdep.cpu.model_string 2>/dev/null`
            if test x"$processor" = x"" ; then
                # On 10.5, this contains the type of CPU also:
                processor=`/usr/sbin/sysctl -n machdep.cpu.brand_string`
            fi
            processor_flags=`/usr/sbin/sysctl -n machdep.cpu.features`
            processor_flags=`echo $processor_flags | tr "[A-Z]" "[a-z]"`
        fi
    fi
fi

# OS
targetos=$(tolower $(uname -s))

# mythtv settings
CONFIG_DEFINES=""
CONFIG_INCLUDEPATH=""
PROFILEFLAGS=""

audio_alsa="default"
audio_alsa_libs="-lasound"
audio_arts="default"
audio_jack="default"
audio_jack_libs="-ljack"

enable audio_oss
enable bindings_perl
enable bindings_python
enable dbox2
enable directfb
enable dvb
enable ffmpeg_pthreads
enable firewire
enable frontend
enable hdhomerun
enable hdpvr
enable iptv
enable ivtv
enable lamemp3
enable lirc
enable opengl
enable qtwebkit
enable v4l
enable x11
enable xrandr
enable xv
enable xvmc
enable xvmc_vld
enable xvmcw

# mythtv paths
dvb_path="/usr/include"
x11_include_path="/usr/X11R6/include"
xvmc_lib=""

# libraries
enable zlib

# configurable options
enable dostrip
enable gpl
enable ipv6
enable shared
enable mpegaudio_hp
enable network
enable optimizations
enable protocols
vhook="default"

# build settings
SHFLAGS='-shared -Wl,-soname,$@'
VHOOKSHFLAGS='$(SHFLAGS)'
LDLATEFLAGS='-Wl,-rpath-link,\$(BUILD_ROOT)/libavcodec -Wl,-rpath-link,\$(BUILD_ROOT)/libavformat -Wl,-rpath-link,\$(BUILD_ROOT)/libavutil'
FFSERVERLDFLAGS=-Wl,-E
LDCONFIG="ldconfig"
LIBPREF="lib"
LIBSUF=".a"
FULLNAME='$(NAME)$(BUILDSUF)'
LIBNAME='$(LIBPREF)$(FULLNAME)$(LIBSUF)'
SLIBPREF="lib"
SLIBSUF=".so"
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/libs/libavcodec/allcodecs.c"`
DECODER_LIST=`sed -n 's/^[^#]*DEC.*(.*, *\(.*\)).*/\1_decoder/p' "$source_path/libs/libavcodec/allcodecs.c"`
PARSER_LIST=`sed -n 's/^[^#]*PARSER.*(.*, *\(.*\)).*/\1_parser/p' "$source_path/libs/libavcodec/allcodecs.c"`
BSF_LIST=`sed -n 's/^[^#]*BSF.*(.*, *\(.*\)).*/\1_bsf/p' "$source_path/libs/libavcodec/allcodecs.c"`
MUXER_LIST=`sed -n 's/^[^#]*_MUX.*(.*, *\(.*\)).*/\1_muxer/p' "$source_path/libs/libavformat/allformats.c"`
DEMUXER_LIST=`sed -n 's/^[^#]*DEMUX.*(.*, *\(.*\)).*/\1_demuxer/p' "$source_path/libs/libavformat/allformats.c"`
PROTOCOL_LIST=`sed -n 's/^[^#]*PROTOCOL.*(.*, *\(.*\)).*/\1_protocol/p' "$source_path/libs/libavformat/allformats.c"`

enable $ENCODER_LIST $DECODER_LIST $PARSER_LIST $MUXER_LIST $DEMUXER_LIST $PROTOCOL_LIST $BSF_LIST
enable $ARCH_EXT_LIST

# disable unneeded ffmpeg parts
disable "bktr_demuxer v4l_demuxer v4l2_demuxer x11_grab_device_demuxer"

die_unknown(){
    echo "Unknown option \"$1\"."
    echo "See $0 --help for available options."
    exit 1
}

show_list() {
    suffix=_$1
    shift
    echo $* | sed s/$suffix//g | tr ' ' '\n' | sort
    exit 0
}

if [ -e config.log ] ; then
    PCONF=`cat config.log | tail -n 1 | grep configure`
    if test x"$PCONF" != x"" ; then
        PCONF=`echo $PCONF | sed 's/.\/configure//g'`
    fi
    for opt do
        if test x"$opt" != x"--prev" -a x"$opt" != x"--previous" ; then
            OTHOPT="$OTHOPT$opt"
        fi
        if test x"$opt" = x"--prev" -o x"$opt" = x"--previous" ; then
            if test x"$PCONF" != "--prev" ; then
                PREV="yes";
            fi
        fi
    done
    if test x"$PREV" = x"yes"; then
        echo "Options: $PCONF $OTHOPT"
        ./configure $PCONF $OTHOPT
        exit
    fi
fi

for opt do
  optval="${opt#*=}"
  case "$opt" in
  --log)
  ;;
  --log=*) logging="$optval"
  ;;
  --compile-type=*) compile_type="$optval"
  ;;
  --prefix=*) PREFIX="$optval"
  ;;
  --libdir-name=*) libdir_name="$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"
  ;;
  --cxx=*) cxx="$optval"
  ;;
  --make=*) make="$optval"
  ;;
  --qmake=*) qmake="$optval"
  ;;
  --extra-cflags=*) check_ecflags "$optval"
  ;;
  --extra-cxxflags=*) check_cppflags "$optval"
  ;;
  --extra-ldflags=*) add_ldflags "$optval"
  ;;
  --extra-libs=*) add_extralibs "$optval"
  ;;
  --build-suffix=*) BUILDSUF="$optval"
  ;;
  --arch=*) arch="$optval" && arch_raw="$optval" && enable cpu_override
  ;;
  --cpu=*) cpu="$optval" && enable cpu_override
  ;;
  --tune=*)
          tune="$optval"
  ;;
  --disable-ccache) ccache="no"
  ;;
  --disable-distcc) distcc="no"
  ;;
  --enable-sunmlib) enable mlib
  ;;
  --disable-strip) disable dostrip
  ;;
  --dvb-path=*) dvb_path="$optval"
  ;;
  --x11-path=*) x11_include_path="$optval"
  ;;
  --xvmc-lib=*) xvmc_lib="$optval"
  ;;
  --enable-glx-procaddrarb) glx_proc_addr_arb="yes"
  ;;
  --disable-glx-procaddrarb) glx_proc_addr_arb="no"
  ;;
  --enable-mac-accel) dvdv="yes"
  ;;
  --disable-mac-accel) dvdv="no"
  ;;
  --enable-opengl-video) opengl_video="yes"
  ;;
  --disable-opengl-video) opengl_video="no"
  ;;
# remove after 0.21
  --enable-*dts)
      echo "DTS passthrough doesn't requires libdts anymore."
      echo "--enable-dts and --enable-libdts will be removed."
  ;;
  --enable-faad) enable libfaad
      echo "WARNING! --enable-faad will be removed, use --enable-libfaad"
  ;;
  --enable-faadbin) enable libfaadbin
      echo "WARNING! --enable-faadbin will be removed, use --enable-libfaadbin"
  ;;
  --enable-vorbis) enable libvorbis
      echo "WARNING! --enable-vorbis will be removed, use --enable-libvorbis"
  ;;
# end of compatibility section (0.21)
# disabled due to abuse in Gentoo ebuild
  --disable-frontend)
  ;;
# disabled due to abuse in Gentoo ebuild
  --disable-backend)
  ;;
  --enable-mac-bundle) enable mac_bundle
  ;;
  --runtime-prefix=*) RUNPREFIX="$optval"
  ;;
  --previous|--prev)
      echo "No history of previous configure parameters."
  ;;
  --with-bindings=*)
      tmp_bindings=`echo ${optval} | sed -e 's/,/ /g'`
      for binding in ${tmp_bindings} ; do
          if test x"${binding}" = x"perl"; then
              bindings_perl="yes"
          fi
          if test x"${binding}" = x"python"; then
              bindings_python="yes"
          fi
      done
  ;;
  --without-bindings=*)
      tmp_bindings=`echo ${optval} | sed -e 's/,/ /g'`
      for binding in ${tmp_bindings} ; do
          if test x"${binding}" = x"perl"; then
              bindings_perl="no"
          fi
          if test x"${binding}" = x"python"; then
              bindings_python="no"
          fi
      done
  ;;
  --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
  ;;
  --enable-*=*|--disable-*=*)
  eval `echo "$opt" | sed 's/=/-/;s/--/action=/;s/-/ thing=/;s/-/ name=/'`
  case "$thing" in
      encoder|decoder|muxer|demuxer|parser|bsf|protocol) $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
  ;;
  --list-*)
    NAME="${opt#--list-}"
    is_in $NAME $COMPONENT_LIST || die_unknown $opt
    NAME=${NAME%s}
    eval show_list $NAME \$$(toupper $NAME)_LIST
  ;;
  --help|-h) show_help
  ;;
  *)
  die_unknown $opt
  ;;
  esac
done


if enabled cpu_override || test x"$tune" != x"generic" && enabled proc_opt; then
    echo "Warning! --enable-proc-opt shouldn't be used with --arch, --cpu or --tune"
    echo "Disabling it now."
    disable proc_opt
fi

is_x86_cpu "$arch" && arch="x86_32"
is_x86_64_cpu "$arch" && arch="x86_64"

case "$arch" in
  x86_32)
    arch="x86_32"
    enable fast_unaligned
  ;;
  x86_64|amd64)
    arch="x86_32"
    enable fast_unaligned
    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"
        enable fast_64bit
      fi
    fi
    enable cmov
  ;;
  # armv4l is a subset of armv[567]*l
  arm|armv[4567]*l)
    arch="armv4l"
  ;;
  alpha)
    arch="alpha"
    enable fast_64bit
  ;;
  "Power Macintosh"|ppc|powerpc)
    arch="powerpc"
  ;;
  ppc64)
    arch="powerpc"
    enable fast_64bit
  ;;
  mips|mipsel|IP*)
    arch="mips"
  ;;
  sun4u|sparc64)
    arch="sparc64"
    ! enabled cpu_override && check_mtune_mcpu "ultrasparc" "-mvis"
    enable fast_64bit
  ;;
  sparc)
    arch="sparc"
  ;;
  sh4)
    arch="sh4"
  ;;
  parisc)
    arch="parisc"
  ;;
  parisc64)
    arch="parisc"
    enable fast_64bit
  ;;
  s390|s390x)
    arch="s390"
  ;;
  m68k)
    arch="m68k"
  ;;
  ia64)
    arch="ia64"
    enable fast_64bit
  ;;
  bfin)
    arch="bfin"
  ;;
  *)
    arch="unknown"
  ;;
esac

enable $arch
enabled_any x86_32 x86_64 && enable x86
enabled     sparc64       && enable sparc

# OS specific
case $targetos in
  beos|haiku|zeta)
    PREFIX="$HOME/config"
    # 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"
        disable mmx
        ;;
      *20010315*) echo "BeBits gcc"
        add_cflags "-fno-expensive-optimizations"
        ;;
    esac
    LDCONFIG="echo ignoring ldconfig"
    SHFLAGS=-nostart
    # enable BeOS things
    enable audio_beos
    # no need for libm, but the inet stuff
    # Check for BONE
    # XXX: actually should check for NOT net_server
    if (echo $BEINCLUDES|grep 'headers/be/bone' >/dev/null); then
        network_extralibs="-lbind -lsocket"
    else
        enable beos_netserver
        network_extralibs="-lnet"
    fi ;;
  sunos)
    FFSERVERLDFLAGS=""
    SHFLAGS='-shared -Wl,-h,$@'
    network_extralibs="-lsocket -lnsl"
    ;;
  netbsd)
    oss_demuxer_extralibs="-lossaudio"
    oss_muxer_extralibs="-lossaudio"
    ;;
  openbsd)
    append CCONFIG "openbsd"
    disable need_memalign
    LIBOBJFLAGS='$(PIC)'
    LDCONFIG='ldconfig -m $(SHLIBDIR)'
    SHFLAGS='-shared'
    SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF).$(LIBVERSION)'
    SLIBNAME_WITH_VERSION='$(SLIBNAME)'
    SLIBNAME_WITH_MAJOR='$(SLIBNAME)'
    oss_demuxer_extralibs="-lossaudio"
    oss_muxer_extralibs="-lossaudio"
    ;;
  freebsd)
    append CCONFIG "freebsd"
    disable need_memalign
    backend="yes"
    ;;
  bsd/os)
    osextralibs="-lpoll -lgnugetopt"
    strip="strip -d"
    ;;
  darwin)
    enable  appleremote
    enable  backend
    enable  darwin
    disable dvb
    disable ivtv
    disable hdpvr
    ldver=$(ld -v 2>&1 | sed -e s/^[^-]*-//)
    osxver=$(uname -r | cut -c 1)
    if [[ ${ldver%.*} -lt "82" && ${osxver} = "9" && ${arch} = "x86_32" ]]; then
        disable mmx
        echo "You have a broken ld. Playback of HD videos may be very poor"
        echo "See http://svn.mythtv.org/trac/ticket/4200 for intelleopardmmx.patch"
    fi
    disable opengl_video
    disable opengl_vsync
    enable  proc_opt
    disable v4l
    disable x11
    ###### Standard ffmpeg configure stuff follows:
    disable need_memalign
    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/$@'
    strip="strip -x"
    FFLDFLAGS="-Wl,-dynamic,-search_paths_first"
    SLIBSUF=".dylib"
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME).$(LIBVERSION)$(SLIBSUF)'
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME).$(LIBMAJOR)$(SLIBSUF)'
    FFSERVERLDFLAGS=-Wl,-bind_at_load
    ;;
  mingw32*)
    enable  backend
    disable bindings_perl
    disable bindings_python
    disable dv1394
    disable dvb
    disable ivtv
    disable hdpvr
    enable  memalign_hack
    disable network
    enable opengl
    if enabled wince; then
        disable protocols
    fi
    disable v4l
    enable  windows
    disable x11
    ###### Standard ffmpeg configure stuff follows:
    targetos=mingw32
    shlibdir="$bindir"
    VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
    VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
    if enabled swscaler; then
        VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
        VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
    fi
    disable ffserver
    SLIBPREF="lib"
    SLIBSUF=".dll"
    EXESUF=".exe"
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
    SLIB_EXTRA_CMD="-lib /machine:i386 /def:\$(@:${SLIBSUF}=.def)"
    SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib) \"\$(shlibdir)/\$(SLIBNAME_WITH_MAJOR:\$(SLIBSUF)=.lib)\""
    SHFLAGS="-shared -Wl,--output-def,\$(@:${SLIBSUF}=.def),--out-implib,lib\$(SLIBNAME:\$(SLIBSUF)=.a) -Wl,--enable-runtime-pseudo-reloc"
    add_extralibs -lws2_32
    ;;
  cygwin*)
    targetos=cygwin
    enable windows
    shlibdir="$bindir"
    VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
    VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
    if enabled swscaler; then
        VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
        VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
    fi
    EXESUF=".exe"
    SLIBPREF="cyg"
    SLIBSUF=".dll"
    SLIBNAME_WITH_VERSION='$(SLIBPREF)$(FULLNAME)-$(LIBVERSION)$(SLIBSUF)'
    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
    SHFLAGS='-shared -Wl,--enable-auto-image-base'
    ;;
  linux)
    append CCONFIG "linux"
    backend="yes"
    ! disabled joystick_menu && enable joystick_menu
    LDLATEFLAGS="-Wl,--as-needed $LDLATEFLAGS"
    enable dv1394
    ;;
  irix*)
    targetos=irix
    ranlib="echo ignoring ranlib"
    ;;
  *)
    targetos="${targetos}-UNKNOWN"
    ;;
esac

add_extralibs $osextralibs

has_library()
{
    if test -f /etc/ld.so.conf ; then
        LIBPATHS=`cat /etc/ld.so.conf | grep -v "#" | grep -v "include"`
    else
        LIBPATHS=''
    fi

    LIBPATHS="$LIBPATHS `echo $LD_LIBRARY_PATH | sed s/':'/' '/g` "
    # Mac OS X has a different variable for this:
    LIBPATHS="$LIBPATHS `echo $DYLD_LIBRARY_PATH | sed s/':'/' '/g` "

    # recurse down just one level, should be enough in most cases
    if test -f /etc/ld.so.conf ; then
        INCL=`cat /etc/ld.so.conf | grep -v "#" | grep  "^include"`
        SRCH=`echo "$INCL" | sed '{ s/^include \//\//; s/^include /\/etc\//}'`
        for x in $SRCH ; do
            LP_APPEND=`cat $x | grep -v "#" | grep -v "^include"`
            LIBPATHS="$LIBPATHS $LP_APPEND"
        done
    fi

    LIBPATHS="`echo $LIBPATHS /$libdir_name /usr/$libdir_name /usr/local/$libdir_name /usr/X11R6/$libdir_name | sed s/'\/ '/' '/g` "

    HAS_IT="no"
    for LIBPATH in $LIBPATHS ; do
        if test x`ls $LIBPATH/$1* 2> /dev/null | head -n 1` != x"" ; then
            HAS_IT="yes"
        fi
    done
    expr $HAS_IT : "yes" > /dev/null
}

append CCONFIG "$compile_type"
if test x$compile_type = x"profile" ; then
    PROFILEFLAGS="-DNDEBUG"
    enable debug
elif test x$compile_type = x"debug"; then
    enable debug
    disable optimizations
fi

enabled silent_cc && append CCONFIG "silent"


if ! disabled logging ; then
    oldlogfile="$logfile"
    enabled logging || logfile="$logging"
    if [ "x$oldlogfile" = "x$pre_logfile" ]; then
        test x"$logfile" != x"$logging" && logfile="config.err"
        mv "$oldlogfile" "$logfile" 2> /dev/null || echo >"$logfile"
    else
        echo >"$logfile"
    fi
    echo "# $0 $@" >>$logfile
    set >>$logfile
else
    logfile=/dev/null
fi

# Combine FFLDFLAGS and the LDFLAGS environment variable
LDFLAGS="$FFLDFLAGS $EXTRALDFLAGS $LDFLAGS"

test -n "$cross_prefix" && enable cross_compile
cc="${cross_prefix}${cc}"
ar="${cross_prefix}${ar}"
ranlib="${cross_prefix}${ranlib}"
strip="${cross_prefix}${strip}"

# we need to build at least one lib type
if ! enabled_any static shared; then
    cat <<EOF
At least one library type must be built.
Specify --enable-static to build the static libraries or --enable-shared to
build the shared libraries as well. To only build the shared libraries specify
--disable-static in addition to --enable-shared.
EOF
    exit 1;
fi

disabled static && LIBNAME=""

if enabled_any libfaad libfaadbin ; then
    if check_header faad.h; then
        check_cc << EOF
#include <faad.h>
#ifndef FAAD2_VERSION
ok faad1
#endif
int main( void ) { return 0; }
EOF
        test $? = 0 && enable libfaad2
    else
        die "FAAD test failed."
    fi
fi


if ! enabled gpl; then
    die_gpl_disabled(){
        name=$1
        shift
        enabled_any $@ && die "$name is under GPL and --enable-gpl is not specified."
    }
    die_gpl_disabled "The Postprocessing code" pp
    die_gpl_disabled "liba52"                  liba52
    die_gpl_disabled "libx264"                 libx264
    die_gpl_disabled "libxvidcore"             libxvid
    die_gpl_disabled "FAAD2"                   libfaad2
    die_gpl_disabled "The X11 grabber"         x11grab
    die_gpl_disabled "The software scaler"     swscaler
fi

# if no tune setting and we know cpu class look at $processor
if ! enabled cpu_override && enabled proc_opt; then
# first try to tune based on processor info
# EM64T era Intel Xeon
   if expr "$processor" : ".*Intel(R) Xeon(R) CPU.*5110" > /dev/null ; then
       cpu="core2"
   elif expr "$processor" : ".*Intel(R) Xeon(R) CPU.*5160" > /dev/null ; then
       cpu="core2"
   elif expr "$processor" : ".*Intel(R) Xeon(R) CPU.*5462" > /dev/null ; then
       cpu="core2"
# Various Intel Duo processors (EMT64T capable)
   elif expr "$processor" : ".*Intel(R).*Core(TM)2.*CPU" > /dev/null ; then
       cpu="core2"
   elif expr "$processor" : "*.Pentium(R) 5 CPU" > /dev/null ; then
       cpu="nocona"
# EM64T compatible Intel Celeron
   elif expr "$processor" : ".*Celeron(R) D CPU" > /dev/null ; then
       cpu="nocona"
       enable small
# Intel Core2 Duo
   elif expr "$processor" : ".*Genuine.*Intel.*CPU.*2160" > /dev/null ; then
       cpu="core2"
# Reportedly Intel Duo, but we assume 32 bit P3 due to generic name
   elif expr "$processor" : ".*Genuine.*Intel.*CPU" > /dev/null ; then
       cpu="pentium3"
# P4
   elif expr "$processor" : ".*Xeon(TM) CPU" > /dev/null ; then
       cpu="pentium4"
   elif expr "$processor" : ".*XEON(TM) CPU" > /dev/null ; then
       cpu="pentium4"
   elif expr "$processor" : ".*XEON(TM) MP CPU" > /dev/null ; then
       cpu="pentium4"
   elif expr "$processor" : "pentium4" > /dev/null ; then
       cpu="pentium4"
   elif expr "$processor" : ".*Pentium(R) [4D]" > /dev/null ; then
       cpu="pentium4"
   elif expr "$processor" : ".*Celeron(R) CPU" > /dev/null ; then
       cpu="pentium4"
       enable small
# P6, which includes Intel Core
   elif expr "$processor" : ".*Intel P6 Family" > /dev/null ; then
       cpu="pentium4"
# P3
   elif expr "$processor" : "pentium3" > /dev/null ; then
       cpu="pentium3"
   elif expr "$processor" : ".*Pentium.* III" > /dev/null ; then
       cpu="pentium3"
   elif expr "$processor" : ".*Coppermine" > /dev/null ; then
       cpu="pentium3"
       enable small
   elif expr "$processor" : ".*Celeron(TM) CPU" > /dev/null ; then
       cpu="pentium3"
       enable small
   elif expr "$processor" : ".*Pentium(R) M" > /dev/null ; then
       cpu="pentium3"
   elif expr "$processor" : ".*Celeron(R) M processor" > /dev/null ; then
       cpu="pentium3"
       enable small
# P2
   elif expr "$processor" : "pentium2" > /dev/null ; then
       cpu="pentium2"
   elif expr "$processor" : ".*Mendocino" > /dev/null ; then
       cpu="pentium2"
       enable small
   elif expr "$processor" : ".*Klamath" > /dev/null ; then
       cpu="pentium2"
       enable small
   elif expr "$processor" : ".*Deschutes" > /dev/null ; then
       cpu="pentium2"
       enable small
   elif expr "$processor" : ".*Pentium II" > /dev/null ; then
       cpu="pentium2"
       enable small
# AMD Turion
   elif expr "$processor" : ".*AMD Turion(tm) 64" > /dev/null ; then
       cpu="k8"
# AMD Geode NX
   elif expr "$processor" : ".*AMD Geode(tm) NX" > /dev/null ; then
       cpu="athlon"
       enable small
# Athlon 64
   elif expr "$processor" : ".*AMD Athlon(tm) 64" > /dev/null ; then
       cpu="k8"
# AMD Opteron
   elif expr "$processor" : ".*AMD Opteron(tm)" >/dev/null ; then
       cpu="k8"
# Athlon XP
   elif expr "$processor" : "athlon-xp" > /dev/null ; then
       cpu="athlon-xp"
   elif expr "$processor" : ".*AMD Athlon(tm) XP" > /dev/null ; then
       cpu="athlon-xp"
   elif expr "$processor" : ".*AMD Sempron(tm)" > /dev/null ; then
       cpu="athlon-xp"
# Athlon
   elif expr "$processor" : "athlon" > /dev/null ; then
       cpu="athlon"
   elif expr "$processor" : ".*AMD Athlon(..)" > /dev/null ; then
       cpu="athlon"
   elif expr "$processor" : ".*AMD Duron(..)" > /dev/null ; then
       cpu="athlon"
       enable small
# K6
   elif expr "$processor" : ".*AMD-K6(tm) 3D" > /dev/null ; then
       cpu="k6"
       enable small
# Transmeta Crusoe
   elif expr "$processor" : ".*Crusoe(m) Processor TM5600" > /dev/null ; then
       cpu="pentium2"
# c3-2
   elif expr "$processor" : ".*VIA Esther" > /dev/null ; then
       cpu="c3-2"
       enable small
   elif expr "$processor" : ".*VIA Nehemiah" > /dev/null ; then
       cpu="c3-2"
       enable small
# c3
   elif expr "$processor" : ".*VIA.*Ezra" > /dev/null ; then
       cpu="c3"
       enable small
   elif expr "$processor" : ".*VIA Samuel" > /dev/null ; then
       cpu="c3"
       enable small
# if no known processor info, tune base on arch_raw info
   elif test x"$arch_raw" = x"i686" -a x"$mmx" = x"yes" ; then
       cpu="pentium2"
       proc_error_msg="yes"
   elif test x"$arch_raw" = x"i686" -a x"$mmx" = x"no" ; then
       cpu="pentiumpro"
       proc_error_msg="yes"
   elif test x"$arch_raw" = x"i586" -a x"$mmx" = x"yes" ; then
       cpu="pentium-mmx"
       proc_error_msg="yes"
   elif test x"$arch_raw" = x"i586" -a x"$mmx" = x"no" ; then
       cpu="i586"
       proc_error_msg="yes"
   elif test x"$arch_raw" = x"i486"; then
       cpu="i486"
       proc_error_msg="yes"
   elif test x"$arch_raw" = x"i386"; then
       cpu="i386"
       proc_error_msg="yes"
   fi
fi

if enabled proc_error_msg; then
    UNAME_M_INFO=` uname -m 2> /dev/null`
    UNAME_P_INFO=` uname -p 2> /dev/null`
    PROC_INFO=`cat /proc/cpuinfo | grep "model name" | head -n 1 | sed s/"\t"//g 2>/dev/null`
    PROC_FLAG=`cat /proc/cpuinfo | grep "flags" | head -n 1 | sed s/"\t"//g 2>/dev/null`
    echo ""
    echo " *** WARNING *** "
    echo " Your CPU was not detected properly:"
    echo "   uname -m: $UNAME_M_INFO"
    echo "   uname -p: $UNAME_P_INFO"
    echo " $PROC_INFO"
    echo "      $PROC_FLAG"
    echo ""
    echo " If you are using a recent checkout from "
    echo "   http://svn.mythtv.org/svn/trunk/mythtv "
    echo " please e-mail the above to mythtv-users@mythtv.org"
    echo " With the subject \"configure did not detect my cpu\""
    echo ""
fi


# compute mmx state
if ! disabled mmx ; then
    disable mmx
    if test x"$arch" = x"x86_64"; then
        enable mmx
    elif test $cpu != "generic"; then
        is_x86_mmx "$cpu" && enable mmx
    elif expr "$processor_flags" : ".*mmx" > /dev/null ; then
            enable mmx
    else
        is_x86_mmx "$arch_raw" && enable mmx
    fi
fi

# compute cmov state
if test $cpu = "generic"; then
    if expr "$processor_flags" : ".*cmov" > /dev/null ; then
        enable cmov
    else
        disable cmov
    fi
fi

check_deps $ARCH_EXT_LIST

test -z "$need_memalign" && need_memalign="$mmx"

#Darwin CC versions
if test $targetos = darwin; then
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
        add_cflags "-qpdf2 -qlanglvl=extc99 -qmaxmem=-1 -qarch=auto -qtune=auto"
    else
        add_cflags "-no-cpp-precomp -pipe"
        check_cflags "-force_cpusubtype_ALL"
        check_cflags "-Wno-sign-compare"
        disabled shared && add_cflags -mdynamic-no-pic
    fi
fi

disabled optimizations || add_optflags -fomit-frame-pointer

# Add processor-specific flags
if test $cpu != "generic"; then
    case $cpu in
        native)
            check_archflags "-march=$cpu"
        ;;
        # targets that do NOT support conditional mov (cmov)
        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
            check_archflags "-march=$cpu"
            disable cmov
        ;;
        # targets that do support conditional mov (cmov)
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|c3-2)
            check_archflags "-march=$cpu"
            enable cmov
            enable fast_cmov
        ;;
        # targets that do support conditional mov but on which it's slow
        pentium4|prescott|nocona)
            check_archflags "-march=$cpu"
            enable cmov
            disable fast_cmov
        ;;
    esac
fi

# set generic archflags
if test x"$ARCHFLAGS" = x""; then
    if test x"$arch" = x"x86_32"; then
        if ! enabled cmov; then
            check_archflags "-march=i586"
        else
            check_archflags "-march=pentiumpro"
        fi
    elif test x"$arch" = x"x86_64"; then
        check_archflags "-march=k8"
    fi
fi

# Add processor-specific flags
if test $tune != "generic"; then
    warn_altivec(){
        $1 altivec && echo "WARNING: Tuning for $2 but AltiVec $1.";
    }
    case $tune in
        601|ppc601|PowerPC601)
            check_mtune_mcpu "601"
            warn_altivec enabled PPC601
        ;;
        603*|ppc603*|PowerPC603*)
            check_mtune_mcpu "603"
            warn_altivec enabled PPC603
        ;;
        604*|ppc604*|PowerPC604*)
            check_mtune_mcpu "604"
            warn_altivec enabled PPC604
        ;;
        G3|g3|75*|ppc75*|PowerPC75*)
            check_mtune_mcpu "750" "-mpowerpc-gfxopt"
            warn_altivec enabled PPC75x
        ;;
        G4|g4|745*|ppc745*|PowerPC745*)
            check_mtune_mcpu "7450" "-mpowerpc-gfxopt"
            warn_altivec disabled PPC745x
        ;;
        74*|ppc74*|PowerPC74*)
            check_mtune_mcpu "7400" "-mpowerpc-gfxopt"
            warn_altivec disabled PPC74xx
        ;;
        G5|g5|970|ppc970|PowerPC970|power4*|Power4*)
            check_mtune_mcpu "970" "-mpowerpc-gfxopt -mpowerpc64"
            warn_altivec disabled PPC970
            enable ppc64
        ;;
        Cell|CELL|cell)
            check_mtune_mcpu "cell"
            warn_altivec disabled Cell
            enable ppc64
        ;;
        # targets that do NOT support conditional mov (cmov)
        i[345]86|pentium|pentium-mmx|k6|k6-[23]|winchip-c6|winchip2|c3)
            check_mtune_mcpu "$tune"
            disable cmov
        ;;
        # targets that do support conditional mov (cmov)
        i686|pentiumpro|pentium[23]|pentium-m|athlon|athlon-tbird|athlon-4|athlon-[mx]p|athlon64|k8|opteron|athlon-fx|core2|c3-2)
            check_mtune_mcpu "$tune"
            enabled cmov && enable fast_cmov
        ;;
        # targets that do support conditional mov but on which it's slow
        pentium4|prescott|nocona)
            check_mtune_mcpu "$tune"
            disable fast_cmov
        ;;
        sparc64)
            check_mtune_mcpu "v9"
        ;;
        bf*) #bf531 bf532 bf533 bf561 bf5xx all get this config
            add_cflags "-mfdpic"
            add_ldflags "-mfdpic"
        ;;
        arm*)
            check_mtune_mcpu "$tune"
        ;;
        *)
            check_mtune_mcpu "$tune"
        ;;
    esac
fi

gnu_make(){
    $1 --version 2>&1 | grep -q GNU
}

if ! gnu_make $make; then
    gnu_make gmake && make=gmake || die "GNU make not found."
fi

is_qmake4(){
    $1 --version 2>&1 | grep -q "Qt version 4"
}

if ! is_qmake4 $qmake; then
    is_qmake4 qmake-qt4 && qmake=qmake-qt4 || die "qmake for Qt4 not found. Please specify the correct qmake with --qmake="
fi

# make sure we can execute files in $TMPDIR
cat >$TMPE 2>>$logfile <<EOF
#! /bin/sh
EOF
chmod +x $TMPE >>$logfile 2>&1
if ! $TMPE >>$logfile 2>&1; then
    cat <<EOF
Unable to create and execute files in $TMPDIR1.  Set the TMPDIR environment
variable to another directory and make sure that $TMPDIR1 is not mounted
noexec.
EOF
    die "Sanity test failed."
fi
rm $TMPE

# compiler sanity check
check_exec <<EOF
int main(){
    return 0;
}
EOF
if test "$?" != 0; then
    echo "$cc is unable to create an executable file."
    if test -z "$cross_prefix" && ! enabled cross_compile ; then
        echo "If $cc is a cross-compiler, use the --cross-compile option."
        echo "Only do this if you know what cross compiling means."
    fi
    die "C compiler test failed."
fi

if enabled x86; then
    # check whether EBP is available on x86
    # As 'i' is stored on the stack, this program will crash
    # if the base pointer is used to access it because the
    # base pointer is cleared in the inline assembly code.
    check_exec_crash <<EOF && enable ebp_available
    volatile int i=0;
    asm volatile (
        "xorl %%ebp, %%ebp"
    ::: "%ebp");
    return i;
EOF

    # check wether EBX is available on x86
    check_asm ebx_available '"":::"%ebx"' -fPIC -DPIC

    # check whether binutils is new enough to compile SSSE3
    enabled ssse3 && check_asm ssse3 '"pabsw %xmm0, %xmm0"'
fi

# check for assembler specific support

if test $arch = "powerpc"; then
check_cc <<EOF && enable dcbzl
int main(void) {
    register long zero = 0;
    char data[1024];
    asm volatile("dcbzl %0, %1" : : "b" (data), "r" (zero));
return 0;
}
EOF
fi

# check for SIMD availability

# AltiVec flags: The FSF version of GCC differs from the Apple version
if enabled altivec; then
    test -n "`$cc -v 2>&1 | grep version | grep Apple`" &&
        add_cflags "-faltivec" && add_cppflags "-faltivec" ||
        add_cflags "-maltivec -mabi=altivec" &&
            add_cppflags "-maltivec -mabi=altivec"

    check_header altivec.h

    # check if our compiler supports Motorola AltiVec C API
    enabled altivec_h &&
        inc_altivec_h="#include <altivec.h>" ||
        inc_altivec_h=
    check_cc <<EOF || disable altivec
$inc_altivec_h
int main(void) {
    vector signed int v1, v2, v3;
    v1 = vec_add(v2,v3);
    return 0;
}
EOF
fi

enabled armv5te && check_asm armv5te '"qadd r0, r0, r0"'
enabled armv6   && check_asm armv6   '"sadd16 r0, r0, r0"'
enabled iwmmxt  && check_asm iwmmxt  '"wunpckelub wr6, wr4"'
enabled mmi     && check_asm mmi     '"lq $2, 0($2)"'
enabled vis     &&
                  (check_asm vis     '"pdist %f0, %f0, %f0"' -mtune=ultrasparc ||
                   check_asm vis     '"pdist %f0, %f0, %f0"' -mcpu=ultrasparc)


enabled vis && check_mtune_mcpu "ultrasparc"

# if architecture specific flags don't work blank them
echo "int main( void ) { return 0; }" > $TMPC
TMP_ARCHFLAGS=$ARCHFLAGS
$cc $CFLAGS $ARCHFLAGS -o $TMPE $TMPC 2> /dev/null || ARCHFLAGS=""
if test x"$ARCHFLAGS" = x""; then
    if enabled cpu_override || enabled proc_opt || test x"$tune" != x"generic"; then
        echo "ERROR: CPU specific ./configure options failed compile test"
        echo "       Removing CPU specific compilation options. ($TMP_ARCHFLAGS)"
        echo ""
    fi
fi

# "CPU_CLIP" test for SRC / libsamplerate
# test positive wrap
cat > $TMPC << EOF
int main(){
    float f = (1<<(sizeof(short)*8))>>1;
    short s = (short)f;
    if ( s == --f )
        return(0);
    return(1);
}
EOF

if $cc $CFLAGS $ECFLAGS -o $TMPE $TMPC 2>/dev/null ; then
$TMPE && cpuclipspositive="yes"
fi

# test negative wrap
cat > $TMPC << EOF
int main(){
    float f = -((1<<(sizeof(short)*8))>>1) - 1;
    short s = (short)f;
    if ( s == ++f)
        return(0);
    return(1);
}
EOF

if $cc $CFLAGS $ECFLAGS -o $TMPE $TMPC 2>/dev/null ; then
$TMPE && cpuclipsnegative="yes"
fi

# test for distcc
enabled distcc && check_cmd distcc --version || disable distcc
if enabled distcc; then
    XYZ=`which $cc`
    if test x"$XYZ" != x"" -a x"`ls -l $XYZ | grep distcc`" != x""; then
        distcc="symlink"
        distcc_txt=" $cc"
    fi
fi

# test for ccache
enabled ccache && check_cmd ccache -V || disable ccache
if enabled ccache; then
    XYZ=`which $cc`
    if test x"$XYZ" != x"" -a x"`ls -l $XYZ | grep ccache`" != x""; then
        ccache="symlink"
        ccache_txt=" $cc"
    fi
fi

# ccache should be used before distcc for better cache coherency
if enabled distcc; then
    if disabled ccache; then
        cc="distcc $cc"
        cxx="distcc $cxx"
    elif enabled ccache; then
        cc="ccache distcc $cc"
        cxx="ccache distcc $cxx"
    else
        disable distcc
        distcc_txt="t using distcc explicitly, since ccache symlink is present"
    fi
else
    if enabled ccache; then
        cc="ccache $cc"
        cxx="ccache $cxx"
    fi
fi

# ---
# big/little-endian test
check_cc <<EOF || die "endian test failed"
unsigned int endian = 'B' << 24 | 'I' << 16 | 'G' << 8 | 'E';
EOF
grep -q BIGE $TMPO && enable bigendian

# ---
# check availability of some header files

if check_func dlopen; then
    ldl=
elif check_func dlopen -ldl; then
    ldl=-ldl
fi

check_func fork
check_func gethrtime
check_func getrusage
check_func inet_aton
check_func memalign
check_func mkstemp
check_func2 windows.h GetProcessTimes

check_header byteswap.h
check_header conio.h
check_header dlfcn.h
check_header malloc.h
check_header termios.h

check_func posix_fadvise
check_func2 sys/timeb.h ftime
check_func2 sys/time.h gettimeofday
check_func2 "sys/types.h sys/socket.h ifaddrs.h" getifaddrs

if ! enabled_any memalign memalign_hack && enabled need_memalign ; then
    die "Error, no memalign() but SSE enabled, disable it or use --enable-memalign-hack."
fi

enabled zlib && check_lib zlib.h zlibVersion -lz || disable zlib

# ffserver uses poll(),
# if it's not found we can emulate it using select().
if enabled ffserver; then
    check_header sys/poll.h
fi

enabled ffmpeg_pthreads && enable pthreads

# check for some common methods of building with pthread support
# do this before the optional library checks as some of them require pthreads
if enabled pthreads; then
    if check_func pthread_create; then
        :
    elif check_func pthread_create -pthread; then
        add_cflags -pthread
        add_ldflags -pthread
    elif check_func pthread_create -pthreads; then
        add_cflags -pthreads
        add_ldflags -pthreads
    elif ! check_lib pthread.h pthread_create -lpthread; then
        disable ffmpeg_pthreads pthreads
    fi
fi

for thread in $THREADS_LIST; do
    if enabled $thread; then
        test -n "$thread_type" &&
            die "ERROR: Only one thread type must be selected." ||
            thread_type="$thread"
    fi
done

check_lib math.h sin -lm

# test for lrintf in math.h
check_exec <<EOF && enable lrintf || disable lrintf
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF

enabled_any libamr_nb libamr_wb && enable libamr

# these are off by default, so fail if requested and not available
enabled avisynth   && require2 vfw32 "windows.h vfw.h" AVIFileInit -lvfw32
enabled liba52     && require liba52 a52dec/a52.h a52_init -la52
enabled libamr_nb  && require libamrnb amrnb/interf_dec.h Speech_Decode_Frame_init -lamrnb -lm
enabled libamr_wb  && require libamrwb amrwb/dec_if.h D_IF_init -lamrwb -lm
enabled libdc1394  && require libdc1394 libdc1394/dc1394_control.h dc1394_create_handle -ldc1394_control -lraw1394
enabled libfaac    && require2 libfaac "stdint.h faac.h" faacEncGetVersion -lfaac
enabled libfaad    && require2 libfaad faad.h faacDecOpen -lfaad
enabled libgsm     && require libgsm gsm.h gsm_create -lgsm
enabled libmp3lame && require LAME lame/lame.h lame_init -lmp3lame -lm
enabled libnut     && require libnut libnut.h nut_demuxer_init -lnut
enabled libtheora  && require libtheora theora/theora.h theora_info_init -ltheora -logg
enabled libvorbis  && require libvorbis vorbis/vorbisenc.h vorbis_info_init -lvorbisenc -lvorbis -logg
enabled libx264    && require x264 x264.h x264_encoder_open -lx264
enabled libxvid    && require Xvid xvid.h xvid_global -lxvidcore
enabled mlib       && require mediaLib mlib_types.h mlib_VectorSub_S16_U8_Mod -lmlib

# disable the native AC-3 decoder if liba52 is enabled
enabled liba52 && disable ac3_decoder

check_header stdint.h

# test for lrint in math.h
check_exec <<EOF && lrint=yes || lrint=no
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (lrint(3.999f) > 0)?0:1; }
EOF

#test for round()
check_exec <<EOF && round=yes || round=no
#define _ISOC9X_SOURCE  1
#include <math.h>
int main( void ) { return (round(3.999f) > 0)?0:1; }
EOF

# test for sizeof(int)
for sizeof in 1 2 4 8 16; do
    check_cc <<EOF && _sizeof_int=$sizeof && break
void foo(){switch (0) case 0: case (sizeof(int) == $sizeof):;}
EOF
done

# test for sizeof(long)
for sizeof in 1 2 4 8 16; do
  check_cc <<EOF && _sizeof_long=$sizeof && break
void foo(){switch (0) case 0: case (sizeof(long) == $sizeof):;}
EOF
done

_restrict=
for restrict_keyword in restrict __restrict__ __restrict; do
    check_cc <<EOF && _restrict=$restrict_keyword && break
void foo(char * $restrict_keyword p);
EOF
done

test "$vhook" = "default" && vhook="$dlopen"

if test "$targetos" = cygwin -o "$targetos" = mingw32 && enabled_all static vhook ; then
    disable vhook
    echo
    echo "At the moment vhooks don't work on Cygwin or MinGW static builds."
    echo "Patches welcome."
    echo
fi

if enabled vhook; then
    check_ldflags -rdynamic
    check_ldflags -export-dynamic
fi

check_foo_config imlib2 imlib2 Imlib2.h imlib_load_font
check_foo_config freetype2 freetype ft2build.h FT_Init_FreeType

##########################################
# fribidi check

disable fribidi
FRIBIDI_CONFIG="pkg-config fribidi"
if test x`which pkg-config 2>/dev/null` != x"" ; then
   if `pkg-config --atleast-version 0.19 fribidi` ; then
       check_cc `${FRIBIDI_CONFIG} --cflags` `${FRIBIDI_CONFIG} --libs` << EOF && enable fribidi
#include <stdio.h>
#include <fribidi/fribidi.h>
int main()
{
    if (fribidi_parse_charset("UTF-8") != FRIBIDI_CHAR_SET_UTF8)
    {
        printf("Fribidi headers are not consistents with the library!\n");
        return 1;
    }
    return 0;
}
EOF
    else
        disable fribidi
    fi
fi
##########################################
# SDL check

disable sdl_too_old
disable sdl
#SDL_CONFIG="${cross_prefix}sdl-config"
if "${SDL_CONFIG}" --version >/dev/null 2>&1; then
    sdl_cflags=`"${SDL_CONFIG}" --cflags`
    temp_cflags $sdl_cflags
    temp_extralibs `"${SDL_CONFIG}" --libs`
    if check_lib SDL.h SDL_Init; then
        _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'`
        if test "$_sdlversion" -lt 121 ; then
            enable sdl_too_old
        else
            enable sdl
            check_cc $sdl_cflags <<EOF && enable sdl_video_size
#include <SDL.h>
int main(void){
    const SDL_VideoInfo *vi = SDL_GetVideoInfo();
    int w = vi->current_w;
    return 0;
}
EOF
        fi
    fi
    restore_flags
fi

texi2html -version >/dev/null 2>&1 && enable texi2html || disable texi2html

##########################################
# Network check

if enabled network; then
    # Prefer arpa/inet.h over winsock2
    if check_header arpa/inet.h ; then
        check_func closesocket
    elif check_header winsock2.h ; then
        network_extralibs="-lws2_32"
        check_func2 winsock2.h closesocket
    fi
fi

##########################################
# IPv6 check

enabled network && enabled ipv6 && check_ld <<EOF && enable ipv6 || disable ipv6
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main( void ) {
  struct sockaddr_storage saddr;
  struct ipv6_mreq mreq6;
  getaddrinfo(0,0,0,0);
  getnameinfo(0,0,0,0,0,0,0);
  IN6_IS_ADDR_MULTICAST((const struct in6_addr *)0);
}
EOF

check_header linux/videodev.h
check_header linux/videodev2.h

# check for ioctl_meteor.h, ioctl_bt848.h and alternatives
{ check_header dev/bktr/ioctl_meteor.h &&
  check_header dev/bktr/ioctl_bt848.h; } ||
{ check_header machine/ioctl_meteor.h &&
  check_header machine/ioctl_bt848.h; } ||
{ check_header dev/video/meteor/ioctl_meteor.h &&
  check_header dev/video/bktr/ioctl_bt848.h; } ||
check_header dev/ic/bt8xx.h

check_header sys/soundcard.h
check_header soundcard.h

# ALSA probe
! disabled audio_alsa &&
    check_lib alsa/asoundlib.h snd_asoundlib_version $audio_alsa_libs &&
    enable  audio_alsa ||
    disable audio_alsa

# aRts probe
! disabled audio_arts &&
    check_foo_config arts artsc artsc.h arts_init &&
    audio_arts_libs=`artsc-config --libs`  &&
    audio_arts_cflags=`artsc-config --cflags` &&
    enable  audio_arts ||
    disable audio_arts

# JACK probe
! disabled audio_jack &&
    check_lib jack/jack.h jack_client_new $audio_jack_libs &&
    enable  audio_jack ||
    disable audio_jack

# Deal with the x11 frame grabber
enabled x11grab                         &&
check_header X11/Xlib.h                 &&
check_header X11/extensions/XShm.h      &&
check_func XOpenDisplay -lX11           &&
check_func XShmCreateImage -lX11 -lXext

enabled debug && add_cflags -g
enabled debug && add_cppflags -g

# add some useful compiler flags if supported
#check_cflags -Wdeclaration-after-statement
check_cflags -Wall
check_cflags -Wno-switch
check_cflags -Wdisabled-optimization
check_cflags -Wpointer-arith
check_cflags -Wredundant-decls
check_cflags -Wno-pointer-sign
check_cflags -funit-at-a-time
enabled extra_warnings && check_cflags -Winline
# C++ Flags
check_cppflags -Wall
check_cppflags -Wno-switch
check_cppflags -Wpointer-arith
check_cppflags -Wredundant-decls
check_cppflags -Wno-non-virtual-dtor
check_cppflags -funit-at-a-time
#needed for INT64_C in libs/libavformat under g++
check_cppflags -D__STDC_CONSTANT_MACROS

# add some linker flags
check_ldflags -Wl,--warn-common
check_ldflags $LDLATEFLAGS

# GCC version
gcc_version=$($cc -dumpversion)
GCC_MAJOR=$(echo ${gcc_version} | cut -s -d'.' -f1)
GCC_MINOR=$(echo ${gcc_version} | cut -s -d'.' -f2)

if enabled symbol_visibility; then
    if test x"$GCC_MAJOR" = x"4" ; then
        check_cppflags -fvisibility-inlines-hidden
        append CCONFIG "use_hidesyms"
    else
        echo "Warning: --enable-symbol-visibility requires gcc 4.x"
    fi
fi

if enabled dvb; then
    dvb="no"
    if test -f "$dvb_path"/linux/dvb/frontend.h ; then
        if test -f "$dvb_path"/../MAINTAINERS ; then
            echo "Warning: DVB location in kernel. May not compile."
        fi
        dvb="yes"
    else
        dvb_path="/usr/src/linux/include"
        KERNEL_RELEASE=`uname -r 2>/dev/null`
        if test x"$KERNEL_RELEASE" != x"" ; then
            dvb_path="/usr/src/linux-$KERNEL_RELEASE/include"
        fi

        if test -f "$dvb_path"/linux/dvb/frontend.h ; then
            if test -f "$dvb_path"/../MAINTAINERS ; then
                echo "Warning: DVB location in kernel. May not compile."
            fi
            dvb="yes"
        else
            echo "DVB location needs to have linux/dvb/frontend.h [$dvb_path]"
        fi
    fi
fi

# Check that all MythTV build "requirements" are met:

enabled freetype2 ||
    die "ERROR! You must have FreeType installed to compile MythTV."

#has_library libmysqlclient || has_library mysql/libmysqlclient ||
#    die "ERROR! You must have a MySQL library installed to run MythTV."
#
enabled lamemp3 && check_lib2 lame/lame.h lame_init -lmp3lame -lm ||
    die "ERROR! You must have the Lame MP3 encoding library installed to compile MythTV."

#test for lirc client libraries and headers
enabled lirc && check_lib lirc/lirc_client.h lirc_deinit -llirc_client ||
    disable lirc

check_header QtWebKit/QWebView -I/usr/include/qt4 -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtWebKit
disabled QtWebKit_QWebView && echo "Warning! QtWebkit headers not found, MythBrowser will not work."

if enabled firewire; then
    firewire="no"
    libavc_5_3="no"
    if has_library libiec61883 -a \
       has_library libavc1394 -a \
       has_library librom1394; then
        if test x`which pkg-config 2>/dev/null` != x"" ; then
            if `pkg-config --atleast-version 0.5.0 libavc1394` ; then
                if `pkg-config --atleast-version 1.0.0 libiec61883` ; then
                    firewire="yes"
                    if `pkg-config --atleast-version 0.5.3 libavc1394` ; then
                        libavc_5_3="yes"
                    fi
                fi
            fi
        fi
    fi
    if test $targetos = darwin; then
        # This should pick the newest. e.g. FireWireSDK21 instead of 20
        # Unfortunately, the location keeps changing:
        #/Developer/FireWireSDK20/Examples/AVCVideoServices/Framework
        #/Developer/FireWireSDK21/Examples/Framework
        mac_avc=`find /Developer/FireWireSDK* -name Framework 2> /dev/null \
                 | tail -n 1`
        if test -d "$mac_avc" ; then
            firewire="yes"
        else
            echo Firewire being disabled. /Developer/FireWireSDK* missing
        fi
    fi
fi

enabled libfftw3 && check_lib2 fftw3.h fftw_init_threads -lfftw3_threads -lfftw3 ||
    disable libfftw3

enabled x11 && has_library libX11 || disable x11
enabled xrandr && check_header X11/extensions/Xrandr.h || disable xrandr
enabled xv && has_library libXv || disable xv

check_header GL/gl.h
has_library libGL || has_library libopengl32 || disable opengl

VENDOR_XVMC_LIBS=""
check_header X11/extensions/XvMClib.h
has_library libXvMCW || disable xvmcw
check_header X11/extensions/vldXvMC.h

if test x"$xvmc_lib" != x""; then
    VENDOR_XVMC_LIBS="-l"$xvmc_lib
    disable xvmcw
elif enabled xvmcw; then
    VENDOR_XVMC_LIBS="-lXvMCW"
elif enabled xvmc_pro; then
    if has_library libviaXvMCPro ; then
        VENDOR_XVMC_LIBS="-lviaXvMCPro"
    elif has_library libchromeXvMCPro ; then
        VENDOR_XVMC_LIBS="-lchromeXvMCPro"
    else
        disable xvmc_pro
    fi
elif enabled xvmc_vld; then
    if has_library libviaXvMC ; then
        VENDOR_XVMC_LIBS="-lviaXvMC"
    elif has_library libchromeXvMC ; then
        VENDOR_XVMC_LIBS="-lchromeXvMC"
    else
        disable xvmc_pro
    fi
elif has_library libXvMCNVIDIA ; then
    VENDOR_XVMC_LIBS="-lXvMCNVIDIA"
elif has_library libI810XvMC ; then
    VENDOR_XVMC_LIBS="-lI810XvMC"
else
    disable xvmc xvmcw
fi

if test x"$VENDOR_XVMC_LIBS" = x"-lXvMCNVIDIA" ; then
    enable xvmc_opengl
    disable xvmc_vld xvmc_pro
elif enabled xvmc_opengl ; then
    disable xvmc_opengl
    echo "Disabling XvMC-opengl. It is only available when linking against libXvMCNVIDIA"
fi

enabled xvmc_pro && enable xvmc_vld


# Can only do Mac accel on Mac platform
enabled dvdv && test $targetos = darwin || disable dvdv

# CoreVideo in only available on Mac OS 10.4, or on 10.3 with QuickTime 7.
# This checks for it, and some other calls that the module needs
if test $targetos = darwin; then
    cat > $TMPC << EOF
#include <QuartzCore/CVDisplayLink.h>
#include <AGL/agl.h>
int main( void ) { return aglGetCGLContext(0,0L); }
EOF
    if $cc -o $TMPE $TMPC -framework AGL > /dev/null 2>&1; then
        mac_corevideo="yes"
    fi
fi

# Ubuntu Dapper installs NVIDIA GL headers to a weird location in order
# not to overwrite the headers installed from Mesa, etc. We need to
# add that path to include paths if that's the case.
if test -d /usr/share/doc/nvidia-glx-dev/include; then
    CONFIG_INCLUDEPATH="$CONFIG_INCLUDEPATH /usr/share/doc/nvidia-glx-dev/include"
fi

# Same for Debian Sid.
if test -d /usr/share/nvidia/include/GL; then
    CONFIG_INCLUDEPATH="$CONFIG_INCLUDEPATH /usr/share/nvidia/include"
fi

if enabled directfb; then
    directfb="no"
    if test x`which directfb-config 2> /dev/null` != x"" ; then
        directfb="yes"
        CONFIG_DIRECTFB_LIBS=`directfb-config --libs`
        CONFIG_DIRECTFB_CXXFLAGS=`directfb-config --cflags`
    fi
fi

if test $targetos = darwin; then
    # So far, only OS X 10.4 has this as a non-private framework
    if test -d /System/Library/Frameworks/DiskArbitration.framework/Headers ; then
        darwin_da="yes"
    fi
fi

if enabled small; then
    check_cflags -Os            # not all compilers support -Os
    optimizations="small"
elif enabled optimizations; then
    if test -n "`$cc -v 2>&1 | grep xlc`"; then
        add_optflags  "-O5"
        add_ldflags "-O5"
    else
        add_optflags "-O3"
    fi
fi

# PIC flags for shared library objects where they are needed
if enabled shared; then
    # LIBOBJFLAGS may have already been set in the OS configuration
    if test -z "$LIBOBJFLAGS" ; then
        case "$arch" in
            x86_64|ia64|alpha|sparc*|power*) LIBOBJFLAGS='$(PIC)' ;;
        esac
    fi
fi

if enabled gprof; then
    add_cflags  "-p"
    add_ldflags "-p"
fi

VHOOKCFLAGS="-fPIC"

# Find out if the .align argument is a power of two or not.
if test $asmalign_pot = "unknown"; then
    disable asmalign_pot
    echo 'asm (".align 3");' | check_cc && enable asmalign_pot
fi

enabled_any $ENCODER_LIST  && enable encoders
enabled_any $DECODER_LIST  && enable decoders
enabled_any $MUXER_LIST    && enable muxers
enabled_any $DEMUXER_LIST  && enable demuxers
enabled_any $PROTOCOL_LIST && enable protocols
enabled_any $BSF_LIST      && enable bsfs

enabled_any $THREADS_LIST  && enable threads

check_deps $CONFIG_LIST $HAVE_LIST $DECODER_LIST $ENCODER_LIST $PARSER_LIST \
    $BSF_LIST $DEMUXER_LIST $MUXER_LIST $PROTOCOL_LIST

check_deps $MYTHTV_LIST $MYTHTV_CONFIG_LIST $USING_LIST

enabled libdc1394 && append pkg_requires "libraw1394"
enabled libtheora && append pkg_requires "theora"
enabled libvorbis && append pkg_requires "vorbisenc"


if test x"$libdir" = x""; then
    libdir="${PREFIX}/${libdir_name}"
fi

if test x"$RUNPREFIX" = x""; then
    RUNPREFIX=$PREFIX
fi

echo "# Basic Settings"
echo "Compile type              $compile_type"
if test x"$compile_type" = x"debug" -a $arch = "x86_32" -a \
        x"$GCC_MAJOR" != x"" -a $GCC_MAJOR -lt "4"; then
    echo "WARNING: backtraces involving libavcodec are not supported for gcc < 4.0"
fi
echo "Compiler cache            $ccache$ccache_txt"
echo "DistCC                    $distcc$distcc_txt"
echo "qmake                     $(which $qmake)"
echo "install prefix            $PREFIX"
echo "runtime prefix            $RUNPREFIX"
<<BLOCK_QUOTE
echo "source path               $source_path"
echo "C compiler                $cc"
echo "make                      $make"
echo ".align is power-of-two    $asmalign_pot"
echo "ARCH                      $arch ($cpu)"
BLOCK_QUOTE
if enabled cpu_override && test x"$cpu" != x"generic"; then
    echo "CPU                       $arch ($cpu)"
elif test x"$processor" != x"" ; then
    echo "CPU                       $arch ($processor)"
elif test x"$arch_raw" != x"" ; then
    echo "CPU                       $arch ($arch_raw)"
else
    echo "CPU                       $arch"
fi
<<BLOCK_QUOTE
if test "$BUILDSUF" != ""; then
    echo "build suffix              $BUILDSUF"
fi
BLOCK_QUOTE
echo "big-endian                ${bigendian-no}"
if test $arch = "x86_32" -o $arch = "x86_64"; then
    echo "MMX enabled               ${mmx-no}"
    echo "CMOV enabled              ${cmov-no}"
    echo "CMOV is fast              ${fast_cmov-no}"
<<BLOCK_QUOTE
    echo "EBX available             ${ebx_available-no}"
    echo "EBP available             ${ebp_available-no}"
BLOCK_QUOTE
fi
if test $arch = "armv4l"; then
    echo "ARMv5TE enabled           ${armv5te-no}"
    echo "ARMv6 enabled             ${armv6-no}"
    echo "IWMMXT enabled            ${iwmmxt-no}"
fi
if test $arch = "mips"; then
    echo "MMI enabled               ${mmi-no}"
fi
if test $arch = "powerpc"; then
    echo "AltiVec enabled           ${altivec-no}"
    echo "dcbzl available           ${dcbzl-no}"
fi
<<BLOCK_QUOTE
echo "gprof enabled             ${gprof-no}"
echo "debug symbols             ${debug-no}"
echo "strip symbols             ${dostrip-no}"
echo "optimizations             ${optimizations-no}"
echo "static                    ${static-no}"
echo "shared                    ${shared-no}"
echo "postprocessing support    ${pp-no}"
echo "software scaler enabled   ${swscaler-no}"
echo "video hooking             ${vhook-no}"
if enabled vhook; then
    echo "Imlib2 support            ${imlib2-no}"
    echo "FreeType support          ${freetype2-no}"
fi
echo "network support           ${network-no}"
if enabled network; then
    echo "IPv6 support              ${ipv6-no}"
fi
echo "threading support         ${thread_type-no}"
echo "SDL support               ${sdl-no}"
if enabled sdl_too_old; then
    echo "-> Your SDL version is too old - please upgrade to have FFplay/SDL support."
fi
echo "Sun medialib support      ${mlib-no}"
echo "AVISynth enabled          ${avisynth-no}"
echo "liba52 support            ${liba52-no}"
echo "liba52 dlopened           ${liba52bin-no}"
echo "libamr-nb support         ${libamr_nb-no}"
echo "libamr-wb support         ${libamr_wb-no}"
echo "libdc1394 support         ${libdc1394-no}"
echo "libfaac enabled           ${libfaac-no}"
echo "libfaad enabled           ${libfaad-no}"
echo "libfaad dlopened          ${libfaadbin-no}"
echo "libgsm enabled            ${libgsm-no}"
echo "libmp3lame enabled        ${libmp3lame-no}"
echo "libnut enabled            ${libnut-no}"
echo "libtheora enabled         ${libtheora-no}"
echo "libvorbis enabled         ${libvorbis-no}"
echo "x264 enabled              ${libx264-no}"
echo "XviD enabled              ${libxvid-no}"
echo "zlib enabled              ${zlib-no}"
enabled gpl &&
    echo "License: GPL" ||
    echo "License: LGPL"

for type in decoder encoder parser demuxer muxer protocol bsf; do
    echo "Enabled ${type}s:"
    ucname="\$`toupper $type`_LIST"
    list="`eval echo $ucname`"
    partlist=""
    for part in $list; do
        enabled $part && partlist="$partlist $part"
    done
    partlist=`echo $partlist | sed s/_$type//g | tr ' ' '\n' | sort`
    echo $partlist
done

BLOCK_QUOTE

echo
if enabled frontend; then
  echo "# Input Support"
  echo "Joystick menu             ${joystick_menu-no}"
  echo "lirc support              ${lirc-no}"
  if test x"$targetos" = x"darwin" ; then
    echo "Apple Remote              ${appleremote-no}"
  fi
fi

if enabled backend; then
  echo "Video4Linux sup.          ${v4l-no}"
  echo "ivtv support              ${ivtv-no}"
  echo "HR-PVR support            ${hdpvr-no}"
  echo "FireWire support          ${firewire-no}"
  echo "DVB support               ${dvb-no} [$dvb_path]"
  echo "DBox2 support             ${dbox2-no}"
  echo "HDHomeRun support         ${hdhomerun-no}"
  echo "IPTV support              ${iptv-no}"
fi

if enabled frontend; then
  echo
  echo "# Sound Output Support"
  echo "OSS support               ${audio_oss-no}"
  echo "ALSA support              ${audio_alsa-no}"
  echo "aRts support              ${audio_arts-no}"
  echo "JACK support              ${audio_jack-no}"
  if test x"$targetos" = x"mingw32" ; then
    echo "Windows support           yes"
  fi
  echo "libfftw3 support          ${libfftw3-no}"
  echo
  echo "# Video Output Support"
  echo "x11 support               ${x11-no}"
if enabled x11 ; then
  echo "xrandr support            ${xrandr-no}"
  echo "xv support                ${xv-no}"
  echo "XvMC support              ${xvmc-no}"
  echo "XvMC VLD support          ${xvmc_vld-no}"
  echo "XvMC pro support          ${xvmc_pro-no}"
  echo "XvMC OpenGL sup.          ${xvmc_opengl-no}"
if test "$VENDOR_XVMC_LIBS" != "" ; then
  echo "XvMC libs                 $VENDOR_XVMC_LIBS"
fi
fi
  echo "OpenGL video              ${opengl_video-no}"
  if test x"$targetos" = x"darwin" ; then
    echo "Mac acceleration          ${dvdv-no}"
  fi
  echo "OpenGL vsync              ${opengl_vsync-no}"
  echo "DirectFB                  ${directfb-no}"
  if enabled windows ; then
    echo "DirectX                   ${directx-no}"
  fi
  if test x"$targetos" = x"mingw32" ; then
    echo "Windows (Direct3D)        yes"
  fi
  echo "Fribidi formatting        ${fribidi}"
  echo
fi

echo "# Misc Features"
echo "multi threaded libavcodec ${threads-no}"
echo "Frontend                  ${frontend-no}"
echo "Backend                   ${backend-no}"
echo

echo "# Bindings"
echo "bindings_perl             ${bindings_perl-no}"
echo "bindings_python           ${bindings_python-no}"
echo ""

MYTH_CONFIG_H=libs/libmythdb/mythconfig.h
MYTH_CONFIG_MAK=libs/libmythdb/mythconfig.mak
echo "Creating $MYTH_CONFIG_H and $MYTH_CONFIG_MAK"

date >> config.log
echo "   $0 $FFMPEG_CONFIGURATION" >> config.log
echo "# Automatically generated by configure - do not modify" > $MYTH_CONFIG_MAK
echo "/* Automatically generated by configure - do not modify */" > $TMPH
echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
echo "#define FFMPEG_CONFIG_H" >> $TMPH
echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH

echo "RUNPREFIX=$RUNPREFIX" >> $MYTH_CONFIG_MAK
echo "PREFIX=$PREFIX" >> $MYTH_CONFIG_MAK
echo "LIBDIRNAME=$libdir_name" >> $MYTH_CONFIG_MAK
echo "LIBDIR=$libdir" >> $MYTH_CONFIG_MAK
<<BLOCK_QUOTE
echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
echo "INCDIR=\$(DESTDIR)$incdir" >> config.mak
echo "BINDIR=\$(DESTDIR)$bindir" >> config.mak
echo "MANDIR=\$(DESTDIR)$mandir" >> config.mak
echo "MAKE=$make" >> config.mak
echo "CC=$cc" >> config.mak
echo "AR=$ar" >> config.mak
echo "RANLIB=$ranlib" >> config.mak
echo "LDCONFIG=$LDCONFIG" >> config.mak
echo "LN_S=$ln_s" >> config.mak
enabled dostrip &&
    echo "STRIP=$strip" >> config.mak ||
    echo "STRIP=echo ignoring strip" >> config.mak
BLOCK_QUOTE
echo "QMAKE_CC=$cc" >> $MYTH_CONFIG_MAK
echo "QMAKE_CXX=$cxx" >> $MYTH_CONFIG_MAK
echo "QMAKE_LINK=$cxx" >> $MYTH_CONFIG_MAK
echo "ARCHFLAGS=$ARCHFLAGS" >> $MYTH_CONFIG_MAK
echo "PROFILEFLAGS=$PROFILEFLAGS" >> $MYTH_CONFIG_MAK
echo "OPTFLAGS=$OPTFLAGS" >> $MYTH_CONFIG_MAK
echo "ECFLAGS=$CFLAGS $ECFLAGS" >> $MYTH_CONFIG_MAK
echo "ECXXFLAGS=$ECXXFLAGS" >> $MYTH_CONFIG_MAK
<<BLOCK_QUOTE
echo "LDFLAGS=$LDFLAGS" >> config.mak
echo "FFSERVERLDFLAGS=$FFSERVERLDFLAGS" >> config.mak
echo "SHFLAGS=$SHFLAGS" >> config.mak
echo "VHOOKSHFLAGS=$VHOOKSHFLAGS" >> config.mak
echo "VHOOKLIBS=$VHOOKLIBS" >> config.mak
echo "LIBOBJFLAGS=$LIBOBJFLAGS" >> config.mak
echo "BUILD_STATIC=$static" >> config.mak
echo "BUILDSUF=$BUILDSUF" >> config.mak
echo "FULLNAME=$FULLNAME" >> config.mak
echo "LIBPREF=$LIBPREF" >> config.mak
echo "LIBSUF=$LIBSUF" >> config.mak
echo "LIBNAME=$LIBNAME" >> config.mak
echo "SLIBPREF=$SLIBPREF" >> config.mak
echo "SLIBSUF=$SLIBSUF" >> config.mak
echo "EXESUF=$EXESUF" >> config.mak
BLOCK_QUOTE

if enabled bigendian; then
  echo "WORDS_BIGENDIAN=yes" >> $MYTH_CONFIG_MAK
  echo "#define WORDS_BIGENDIAN 1" >> $TMPH
fi

if enabled cpuclipspositive; then
  echo "#define CPU_CLIPS_POSITIVE 1" >> $TMPH
else
  echo "#define CPU_CLIPS_POSITIVE 0" >> $TMPH
fi
if enabled cpuclipsnegative; then
  echo "#define CPU_CLIPS_NEGATIVE 1" >> $TMPH
else
  echo "#define CPU_CLIPS_NEGATIVE 0" >> $TMPH
fi
if enabled freetype2; then
  echo "HAVE_FREETYPE2=yes" >> $MYTH_CONFIG_MAK
  echo "FREETYPE_CFLAGS=`freetype-config --cflags`" >> $MYTH_CONFIG_MAK
  echo "FREETYPE_LIBS=`freetype-config --libs`" >> $MYTH_CONFIG_MAK
fi
if enabled fribidi; then
  echo "FRIBIDI_LIBS=`${FRIBIDI_CONFIG} --libs`" >> $MYTH_CONFIG_MAK
  echo "FRIBIDI_CFLAGS=`${FRIBIDI_CONFIG} --cflags`" >> $MYTH_CONFIG_MAK
fi
if enabled sdl; then
  echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> $MYTH_CONFIG_MAK
  echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> $MYTH_CONFIG_MAK
fi
<<BLOCK_QUOTE
if enabled texi2html; then
  echo "BUILD_DOC=yes" >> config.mak
fi
BLOCK_QUOTE

echo "#define SIZEOF_INT $_sizeof_int" >> $TMPH
echo "#define SIZEOF_LONG $_sizeof_long" >> $TMPH

if enabled shared; then
  echo "BUILD_SHARED=yes" >> $MYTH_CONFIG_MAK
  echo "PIC=-fPIC -DPIC" >> $MYTH_CONFIG_MAK
<<BLOCK_QUOTE
  echo "SPPMAJOR=${pp_version%%.*}" >> config.mak
  echo "SPPVERSION=$pp_version" >> config.mak
  echo "LAVCMAJOR=${lavc_version%%.*}" >> config.mak
  echo "LAVCVERSION=$lavc_version" >> config.mak
  echo "LAVFMAJOR=${lavf_version%%.*}" >> config.mak
  echo "LAVFVERSION=$lavf_version" >> config.mak
  echo "LAVUMAJOR=${lavu_version%%.*}" >> config.mak
  echo "LAVUVERSION=$lavu_version" >> config.mak
  echo "SWSMAJOR=${sws_version%%.*}" >> config.mak
  echo "SWSVERSION=$sws_version" >> config.mak
  echo "SLIBNAME=${SLIBNAME}" >> config.mak
  echo "SLIBNAME_WITH_VERSION=${SLIBNAME_WITH_VERSION}" >> config.mak
  echo "SLIBNAME_WITH_MAJOR=${SLIBNAME_WITH_MAJOR}" >> config.mak
  echo "SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}" >> config.mak
  echo "SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}" >> config.mak
BLOCK_QUOTE
fi
if enabled pthreads; then
  if test $targetos != freebsd -a $targetos != openbsd ; then
     extralibs="$extralibs -lpthread"
  fi
fi
echo "" >>$MYTH_CONFIG_MAK

if enabled audio_oss; then
    append CCONFIG "using_oss"
fi
if enabled audio_alsa; then
    append CCONFIG "using_alsa"
  echo "CONFIG_AUDIO_ALSA_LIBS=$audio_alsa_libs" >> $MYTH_CONFIG_MAK
fi

if enabled audio_arts; then
    append CCONFIG "using_arts"
  echo "CONFIG_AUDIO_ARTS_LIBS=$audio_arts_libs" >> $MYTH_CONFIG_MAK
  echo "CONFIG_AUDIO_ARTS_CFLAGS=$audio_arts_cflags" >> $MYTH_CONFIG_MAK
fi

if enabled audio_jack; then
    append CCONFIG "using_jack"
  echo "CONFIG_AUDIO_JACK_LIBS=$audio_jack_libs" >> $MYTH_CONFIG_MAK
fi

if enabled darwin_da; then
  append CCONFIG "darwin_da"
  echo "SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}" >> $MYTH_CONFIG_MAK
fi

if test $targetos = darwin; then
  # Qt, by default builds .app bundles everywhere. Prevent this.
  enabled mac_bundle || echo "CONFIG -= app_bundle" >> $MYTH_CONFIG_MAK
fi

if enabled mac_corevideo; then
  append CCONFIG "using_corevideo"
fi

if test x"$targetos" = x"cygwin" ; then
  echo "#define CONFIG_CYGWIN 1" >> $TMPH
  echo "#ifndef llrint" >> $TMPH
  echo "#define llrint llrint  // make sure not to define twice" >> $TMPH
  echo "static inline long long int llrint (double x)" >> $TMPH
  echo "{" >> $TMPH
  echo "    long long int llrintres;" >> $TMPH
  echo "    asm" >> $TMPH
  echo "    (\"fistpll %0\"" >> $TMPH
  echo "    : \"=m\" (llrintres) : \"t\" (x) : \"st\");" >> $TMPH
  echo "    return llrintres;" >> $TMPH
  echo "}" >> $TMPH
  echo "#endif" >> $TMPH
fi

echo "EXTRALIBS=$extralibs" >> $MYTH_CONFIG_MAK

print_config ARCH_   $TMPH $MYTH_CONFIG_MAK $ARCH_LIST
print_config HAVE_   $TMPH $MYTH_CONFIG_MAK $HAVE_LIST
print_config CONFIG_ $TMPH $MYTH_CONFIG_MAK $CONFIG_LIST   \
                                      $DECODER_LIST  \
                                      $ENCODER_LIST  \
                                      $PARSER_LIST   \
                                      $BSF_LIST      \
                                      $DEMUXER_LIST  \
                                      $MUXER_LIST    \
                                      $PROTOCOL_LIST \
                                      $MYTHTV_LIST   \
                                      $MYTHTV_CONFIG_LIST   \

echo "#define restrict $_restrict" >> $TMPH

if enabled small; then
  echo "#define av_always_inline"  >> $TMPH
fi

# Apparently it's not possible to portably echo a backslash.
enabled asmalign_pot &&
  printf '#define ASMALIGN(ZEROBITS) ".align " #ZEROBITS "\\n\\t"\n' >> $TMPH ||
  printf '#define ASMALIGN(ZEROBITS) ".align 1<<" #ZEROBITS "\\n\\t"\n' >> $TMPH


for opt in $MYTHTV_CONFIG_LIST $USING_LIST; do
    enabled $opt && append CCONFIG "using_$opt"
done

enabled threads && append CCONFIG "using_ffmpeg_threads"



# build tree in object directory if source path is different from current one
if enabled source_path_used; then
    DIRS="\
         doc \
         libavcodec \
         libavcodec/alpha \
         libavcodec/armv4l \
         libavcodec/bfin \
         libavcodec/i386 \
         libavcodec/mlib \
         libavcodec/ppc \
         libavcodec/sh4 \
         libavcodec/sparc \
         libavformat \
         libavutil \
         libpostproc \
         libswscale \
         tests \
         tools \
         vhook \
         "
    FILES="\
          Makefile \
          common.mak \
          doc/texi2pod.pl \
          libavcodec/Makefile \
          libavformat/Makefile \
          libavutil/Makefile \
          libpostproc/Makefile \
          libswscale/Makefile \
          "
    for dir in $DIRS ; do
            mkdir -p $dir
    done
    for f in $FILES ; do
        $ln_s "$source_path/$f" $f
    done
fi
echo "SRC_PATH='$source_path'" >> $MYTH_CONFIG_MAK

if disabled frontend; then
    echo
    echo "WARNING: --disable-frontend is only intended to aid porting."
    echo "WARNING: THIS WILL BREAK THINGS. You are on your own now."
fi

if disabled backend; then
    echo
    echo "WARNING: --disable-backend is only intended to aid porting."
    echo "WARNING: You are on your own now."
fi

if enabled proc_opt; then
    echo
    echo "WARNING: When using --enable-proc-opt you must include the "
    echo "         output of ./configure along with any bug report."
fi

if enabled cpu_override; then
    echo
    echo "WARNING: When using --arch=X or --cpu=X you must include the "
    echo "         output of ./configure along with any bug report."
elif ! enabled proc_opt && enabled dvb; then
    echo
    echo "WARNING: If you plan to watch HDTV recordings you probably"
    echo "         need to run ./configure with --enable-proc-opt   "
fi

echo # add a newline after any warnings.

if enabled mmx; then
  CONFIG_DEFINES="$CONFIG_DEFINES MMX"
  if test x"$arch" != x"x86_64" ; then
    CONFIG_DEFINES="$CONFIG_DEFINES i386"
  fi
fi

if enabled firewire; then
  if test $targetos = darwin; then
      echo "CONFIG_MAC_AVC=$mac_avc" >>  $MYTH_CONFIG_MAK
  else
      echo "CONFIG_FIREWIRE_LIBS=-lraw1394 -liec61883 -lavc1394 -lrom1394" >>  $MYTH_CONFIG_MAK
      if enabled libavc_5_3; then
        append CCONFIG "using_libavc_5_3"
      fi
  fi
fi

if enabled iptv; then
    append CCONFIG "using_live"
fi

if enabled lirc; then
  echo "CONFIG_LIRC_LIBS=-llirc_client" >> $MYTH_CONFIG_MAK
fi

if enabled appleremote; then
  append CONFIG_DEFINES "USING_APPLEREMOTE"
fi

if enabled dvb; then
  append CONFIG_INCLUDEPATH "$dvb_path"
fi

if enabled x11; then
  if [ -d $x11_include_path ] ; then
    append CONFIG_INCLUDEPATH "$x11_include_path"
  fi
fi

if enabled xv; then
  echo "CONFIG_XV_LIBS=-lXinerama -lXv -lX11 -lXext -lXxf86vm" >> $MYTH_CONFIG_MAK
fi

if enabled xrandr; then
  echo "CONFIG_XRANDR_LIBS=-lXrandr" >> $MYTH_CONFIG_MAK
fi

if enabled xvmc; then
  echo "CONFIG_XVMC_LIBS=$VENDOR_XVMC_LIBS -lXvMC" >> $MYTH_CONFIG_MAK
  if test x"$VENDOR_XVMC_LIBS" = x"-lXvMCNVIDIA" ; then
      append CCONFIG "using_xvmc_pbuffer"
  fi
fi

if enabled directfb; then
  echo "CONFIG_DIRECTFB_LIBS=$CONFIG_DIRECTFB_LIBS" >> $MYTH_CONFIG_MAK
  echo "CONFIG_DIRECTFB_CXXFLAGS=$CONFIG_DIRECTFB_CXXFLAGS" >> $MYTH_CONFIG_MAK
fi

if enabled directx; then
  append CONFIG_DEFINES "USING_DIRECTX"
fi

if enabled opengl; then
  echo "CONFIG_OPENGL_LIBS=-lGL -lGLU" >> $MYTH_CONFIG_MAK
fi

if test x"$CCONFIG" != x"" ; then
  echo "CCONFIG=$CCONFIG" >> $MYTH_CONFIG_MAK
  echo "#define MYTH_BUILD_CONFIG \"$CCONFIG\"" >>$TMPH
fi

if test x"$CONFIG_DEFINES" != x"" ; then
  echo "CONFIG_DEFINES=$CONFIG_DEFINES" >> $MYTH_CONFIG_MAK
fi

if test x"$CONFIG_INCLUDEPATH" != x"" ; then
  echo "CONFIG_INCLUDEPATH=$CONFIG_INCLUDEPATH" >> $MYTH_CONFIG_MAK
fi

if test x"$GCC_MAJOR" != x"" ; then
  echo "GCC_MAJOR=$GCC_MAJOR" >> $MYTH_CONFIG_MAK
fi

if test x"$GCC_MINOR" != x"" ; then
  echo "GCC_MINOR=$GCC_MINOR" >> $MYTH_CONFIG_MAK
fi

echo "#endif /* FFMPEG_CONFIG_H */" >> $TMPH

cat <<EOF >> $MYTH_CONFIG_MAK
# HACK: If Qt 4 and MythTV's installed library dirs are the same, remove the
#       -L from early in the link line, to ignore any old installed libmyth*
# Note: Qt uses QMAKE_INCDIR_QT to build an absolute path for include
#       directories, it cannot be modified.
QMAKE_LIBDIR_QT -= $libdir
EOF

diff $TMPH $MYTH_CONFIG_H >/dev/null 2>&1
if test $? -ne 0 ; then
  mv -f $TMPH $MYTH_CONFIG_H
  rm -f config.h
else
  echo "$MYTH_CONFIG_H is unchanged"
fi

if ! test -L config.h ; then
  ln -s $MYTH_CONFIG_H config.h
fi

if [ ! -e config.h ] ; then
  ln -s $MYTH_CONFIG_H config.h
fi

rm -f config.mak
ln -s $MYTH_CONFIG_MAK config.mak

# Create a special cleanup makefile that will allow make clean to work
if [ ! -e config ] ; then
  mkdir config
fi
cat - > config/Makefile <<END

all:
qmake_all:
	\$(NONE)

clean:
	\$(NONE)

install:
	\$(NONE)

# Hack to remove some empty directories that qmake doesn't create rules for
uninstall:
	-rmdir \$(INSTALL_ROOT)/$PREFIX/include/mythtv
	-rmdir \$(INSTALL_ROOT)/$PREFIX/lib/mythtv
	-rmdir \$(INSTALL_ROOT)/$PREFIX/share/mythtv

distclean: clean
	-rm -f ../$MYTH_CONFIG_MAK  ../config.mak
	-rm -f ../$MYTH_CONFIG_H    ../config.h
	-rm -f ../Makefile          ../config.err

END

rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
rm -f $TMPCXX

$qmake QMAKE=$(which $qmake) mythtv.pro

