#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)
AC_INIT([xbmc], [9.11], [http://trac.xbmc.org])
AC_CONFIG_HEADERS([config.h])
AH_TOP([#pragma once])

AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([foreign])
AC_CANONICAL_HOST

tolower(){
  echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
}

# check for library basenames
AC_DEFUN([XB_FIND_SONAME],
[
  AC_MSG_CHECKING([for lib$2 soname])
  $1_SONAME=$( $CC -print-file-name=lib$2.so | \
    while read output; do objdump -p $output | \
      grep "SONAME" | \
      sed -e 's/ \+SONAME \+//'; done 2> /dev/null )
  if [[ -z "$$1_SONAME" ]]; then
    AC_MSG_RESULT([no])
    if test -z "$3" || test "x${$3}" = "xyes"; then
      AC_MSG_ERROR([Unable to determine soname of lib$2 library])
    else
      AC_MSG_WARN([Unable to determine soname of lib$2 library])
      $3=no
      AC_MSG_WARN([lib$2 support disabled])
    fi
  else
    AC_MSG_RESULT([$$1_SONAME])
    AC_SUBST($1_SONAME)
  fi
])

# General message strings
configure_debug="ERROR: this is a configure debug statement"
missing_library="Could not find a required library. Please see the README for your platform."
missing_headers="Could not find some required headers. Please see the README for your platform."
missing_program="Could not find a required program. Please see the README for your platform."
xrandr_not_found="== Could not find libXRandR. SDL will be used for resolution support. =="
xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. =="
goom_enabled="== GOOM enabled. =="
goom_disabled="== GOOM disabled. =="
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
pulse_disabled="== PulseAudio support manually disabled. =="
faac_not_found="== Could not find libfaac. FAAC support disabled. =="
faac_disabled="== FAAC support manually disabled. =="
dvdcss_enabled="== DVDCSS support enabled. =="
dvdcss_disabled="== DVDCSS support disabled. =="
hal_not_found="== Could not find hal. HAL support disabled. =="
halstorage_not_found="== Could not find hal-storage. HAL support disabled. =="
hal_disabled="== HAL support disabled. =="
avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. =="
avahi_disabled="== Avahi support disabled. =="
vdpau_not_found="== Could not find libvdpau. VDPAU support disabled. =="
vdpau_disabled="== VDPAU support manually disabled. =="
vaapi_not_found="== Could not find libva. VAAPI support disabled. =="
vaapi_disabled="== VAAPI support manually disabled. =="
crystalhd_not_found="== Could not find libcrystalhd. CrystalHD support disabled. =="
crystalhd_disabled="== CrystalHD support manually disabled. =="
vdadecoder_enabled="== VDADecoder support enabled. =="
vdadecoder_disabled="== VDADecoder support manually disabled. =="
openmax_disabled="== OpenMax support manually disabled. =="
openmax_not_found="== Could not find libnvomx. OpenMax support disabled. =="
libass_using_internal="== External Libass not found, using internal. =="
ssh_not_found="== Could not find libssh. SSH FTP VFS support disabled. =="
librtmp_not_found="== Could not find libRTMP. RTMP support disabled. =="
librtmp_disabled="== RTMP support disabled. =="

# External library message strings
external_libraries_enabled="== Use of all supported external libraries enabled. =="
external_libraries_disabled="== Use of all supported external libraries disabled. =="
external_ffmpeg_enabled="== Use of external ffmpeg enabled. =="
external_ffmpeg_disabled="== Use of external ffmpeg disabled. =="
external_liba52_enabled="== Use of external liba52 enabled. =="
external_liba52_disabled="== Use of external liba52 disabled. =="
external_libdts_enabled="== Use of external libdts enabled. =="
external_libdts_disabled="== Use of external libdts disabled. =="
external_python_enabled="== Use of external python enabled. =="
external_python_disabled="== Use of external python disabled. =="
ffmpeg_vdpau_not_supported="== External ffmpeg doesn't support VDPAU. VDPAU support disabled. =="
dashes="------------------------"
final_message="\n  XBMC Configuration:"
final_message="\n$dashes$final_message\n$dashes"


AC_ARG_ENABLE([debug],
  [AS_HELP_STRING([--enable-debug],
  [enable debugging information (default is yes)])],
  [use_debug=$enableval],
  [use_debug=yes])

AC_ARG_WITH([arch],
  [AS_HELP_STRING([--with-arch],
  [build with given arch passing to internal ffmpeg (default is no, needed for crosscompiling)])],
  [use_arch=$withval],
  [use_arch=no])

AC_ARG_WITH([cpu],
  [AS_HELP_STRING([--with-cpu],
  [build with given cpu passing to ffmpeg (default is no)])],
  [use_cpu=$withval],
  [use_cpu=no])

AC_ARG_ENABLE([optimizations],
  [AS_HELP_STRING([--enable-optimizations],
  [enable optimization (default is yes)])],
  [use_optimizations=$enableval],
  [use_optimizations=yes])

AC_ARG_ENABLE([gl],
  [AS_HELP_STRING([--enable-gl],
  [enable OpenGL rendering (default is yes)])],
  [use_gl=$enableval],
  [use_gl=yes])

AC_ARG_ENABLE([gles],
  [AS_HELP_STRING([--enable-gles],
  [enable OpenGLES rendering (default is no)])],
  [use_gles=$enableval],
  [use_gles=no])

AC_ARG_ENABLE([vdpau],
  [AS_HELP_STRING([--enable-vdpau],
  [enable VDPAU decoding (default is auto)])],
  [use_vdpau=$enableval],
  [use_vdpau=auto])

AC_ARG_ENABLE([vaapi],
  [AS_HELP_STRING([--enable-vaapi],
  [enable VAAPI decoding (default is auto)])],
  [use_vaapi=$enableval],
  [use_vaapi=auto])

AC_ARG_ENABLE([crystalhd],
  [AS_HELP_STRING([--enable-crystalhd],
  [enable CrystalHD decoding (default is auto)])],
  [use_crystalhd=$enableval],
  [use_crystalhd=auto])

AC_ARG_ENABLE([vdadecoder],
  [AS_HELP_STRING([--enable-vdadecoder],
  [enable VDADecoder decoding (default is auto)])],
  [use_vdadecoder=$enableval],
  [use_vdadecoder=auto])

AC_ARG_ENABLE([openmax],
  [AS_HELP_STRING([--enable-openmax],
  [enable OpenMax decoding (default is yes)])],
  [use_openmax=$enableval],
  [use_openmax=yes])

AC_ARG_ENABLE([tegra],
  [AS_HELP_STRING([--enable-tegra],
  [enable Tegra2 arm (default is no)])],
  [use_tegra=$enableval],
  [use_tegra=no])

AC_ARG_ENABLE([profiling],
  [AS_HELP_STRING([--enable-profiling],
  [enable gprof profiling (default is no)])],
  [use_profiling=$enableval],
  [use_profiling=no])

AC_ARG_ENABLE([joystick],
  [AS_HELP_STRING([--enable-joystick],
  [enable SDL joystick support (default is yes)])],
  [use_joystick=$enableval],
  [use_joystick=yes])

AC_ARG_ENABLE([xrandr],
  [AS_HELP_STRING([--enable-xrandr],
  [enable XRandR support (default is yes)])],
  [use_xrandr=$enableval],
  [use_xrandr=yes])

AC_ARG_ENABLE([goom],
  [AS_HELP_STRING([--enable-goom],
  [enable GOOM visualisation (default is no)])],
  [use_goom=$enableval],
  [use_goom=no])

AC_ARG_ENABLE([ccache],
  [AS_HELP_STRING([--enable-ccache],
  [enable building with ccache feature (default is auto)])],
  [use_ccache=$enableval],
  [use_ccache=auto])

AC_ARG_ENABLE([pulse],
  [AS_HELP_STRING([--enable-pulse],
  [enable PulseAudio support (default is auto)])],
  [use_pulse=$enableval],
  [use_pulse=auto])

AC_ARG_ENABLE([rtmp],
  [AS_HELP_STRING([--enable-rtmp],
  [enable RTMP support via librtmp (default is auto)])],
  [use_librtmp=$enableval],
  [use_librtmp=auto])

AC_ARG_ENABLE([ffmpeg_libvorbis],
  [AS_HELP_STRING([--enable-ffmpeg-libvorbis],
  [enable FFmpeg vorbis encoding (default is no)])],
  [use_ffmpeg_libvorbis=$enableval],
  [use_ffmpeg_libvorbis=no])

AC_ARG_ENABLE([faac],
  [AS_HELP_STRING([--enable-faac],
  [enable FAAC support (default is yes)])],
  [use_faac=$enableval],
  [use_faac=yes])

AC_ARG_ENABLE([dvdcss],
  [AS_HELP_STRING([--enable-dvdcss],
  [enable DVDCSS support (default is yes)])],
  [use_dvdcss=$enableval],
  [use_dvdcss=yes])

AC_ARG_ENABLE([mid],
  [AS_HELP_STRING([--enable-mid],
  [enable MID support (default is no)])],
  [use_mid=$enableval],
  [use_mid=no])

AC_ARG_ENABLE([hal],
  [AS_HELP_STRING([--disable-hal],
  [disable HAL support (default is enabled if hal and hal-storage is found)])],
  [use_hal=$enableval],
  [use_hal=yes])

AC_ARG_ENABLE([avahi],
  [AS_HELP_STRING([--disable-avahi],
  [disable Avahi support (default is enabled if libavahi-common and libavahi-client is found)])],
  [use_avahi=$enableval],
  [use_avahi=yes])

AC_ARG_ENABLE([non-free],
  [AS_HELP_STRING([--disable-non-free],
  [disable componentents with non-compliant licenses])],
  [use_nonfree=$enableval],
  [use_nonfree=yes])

AC_ARG_ENABLE([asap-codec],
  [AS_HELP_STRING([--enable-asap-codec],
  [enable ASAP ADPCM support])],
  [use_asap=$enableval],
  [use_asap=no])

AC_ARG_ENABLE([webserver],
  [AS_HELP_STRING([--disable-webserver],
  [disable webserver])],
  [use_webserver=$enableval],
  [use_webserver=yes])

AC_ARG_ENABLE([libdts],
  [AS_HELP_STRING([--enable-libdts],
  [enable deprecated libdts support])],
  [use_libdts=$enableval],
  [use_libdts=no])

AC_ARG_ENABLE([liba52],
  [AS_HELP_STRING([--enable-liba52],
  [enable deprecated liba52 support])],
  [use_liba52=$enableval],
  [use_liba52=no])

AC_ARG_ENABLE([libbluray],
  [AS_HELP_STRING([--enable-libbluray],
  [enable libbluray support])],
  [use_libbluray=$enableval],
  [use_libbluray=auto])

AC_ARG_WITH([lirc-device],
  [AS_HELP_STRING([--with-lirc-device=file],
  [specify the default LIRC device (default is /dev/lircd)])],
  [lirc_device=$withval],
  [lirc_device=/dev/lircd])
AC_DEFINE_UNQUOTED([LIRC_DEVICE], ["$lirc_device"], [Default LIRC device])

### External libraries options
AC_ARG_ENABLE([external-libraries],
  [AS_HELP_STRING([--enable-external-libraries],
  [enable use of all supported external libraries (default is no) 'Linux only'])],
  [use_external_libraries=$enableval],
  [use_external_libraries=no])

AC_ARG_ENABLE([external-ffmpeg],
  [AS_HELP_STRING([--enable-external-ffmpeg],
  [enable use of external ffmpeg libraries (default is no) 'Linux only'])],
  [use_external_ffmpeg=$enableval],
  [use_external_ffmpeg=$use_external_libraries])

AC_ARG_ENABLE([external-liba52],
  [AS_HELP_STRING([--enable-external-liba52],
  [enable use of external liba52 library (default is no) 'Linux only'])],
  [use_external_liba52=$enableval],
  [use_external_liba52=$use_external_libraries])

AC_ARG_ENABLE([external-libdts],
  [AS_HELP_STRING([--enable-external-libdts],
  [enable use of external libdts library (default is no) 'Linux only'])],
  [use_external_libdts=$enableval],
  [use_external_libdts=$use_external_libraries])

AC_ARG_ENABLE([external-python],
  [AS_HELP_STRING([--enable-external-python],
  [enable use of external python library (default is no) 'Linux only'])],
  [use_external_python=$enableval],
  [use_external_python=$use_external_libraries])

use_external_libass="yes"
### End of external library options
DEFAULT_COMPILE_FLAGS="-fPIC -DPIC -D_REENTRANT"
if test "x$host_vendor" = "xapple"; then
  DEFAULT_COMPILE_FLAGS="$DEFAULT_COMPILE_FLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4"
else
  DEFAULT_COMPILE_FLAGS="$DEFAULT_COMPILE_FLAGS -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
fi
# Checks for programs.
PASSED_CXXFLAGS=$CXXFLAGS # Hack to override autoconf default values
AC_PROG_CXX
CXXFLAGS="$PASSED_CXXFLAGS $DEFAULT_COMPILE_FLAGS"
PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
AC_PROG_CC
AC_PROG_LIBTOOL
CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
AC_PROG_AWK
AC_PROG_LN_S
AC_PROG_MAKE_SET

# host detection and setup
case $host in
  i*86*-linux-gnu*)
     ARCH="i486-linux"
     ;;
  x86_64-*-linux-gnu*)
     ARCH="x86_64-linux"
     ;;
  i386-apple-darwin*)
     ARCH="x86-osx"
     # define i386 or x86_64, cannot use $HOSTTYPE as it reports x86_64 on 10.6 regardless of kernel flavor
     ARCHTYPE=`uname -m`
     AC_SUBST([ARCHTYPE])
     ;;
  powerpc-apple-darwin*)
     ARCH="powerpc-osx"
     # define ppc
     ARCHTYPE=`arch`
     AC_SUBST([ARCHTYPE])
     ;;
  powerpc-*-linux-gnu*)
     ARCH="powerpc-linux"
     AC_SUBST(ARCH_DEFINES, "-D_POWERPC")
     ;;
  powerpc64-*-linux-gnu*)
     ARCH="powerpc64-linux"
     AC_SUBST(ARCH_DEFINES, "-D_POWERPC64")
     ;;
  arm*-*-linux-gnu*)
     ARCH="arm"
     AC_SUBST(ARCH_DEFINES, "-D_ARMEL")
     ;;
  *)
     AC_MSG_ERROR(unsupported host ($host))
esac
AC_SUBST([ARCH])
if test "$use_debug" = "yes"; then
  final_message="$final_message\n  Debugging:\tYes"
  if test "$use_profiling" = "yes"; then
    final_message="$final_message\n  Profiling:\tYes"
    DEBUG_FLAGS="-g -pg -D_DEBUG -Wall"
  else
    final_message="$final_message\n  Profiling:\tNo"
    DEBUG_FLAGS="-g -D_DEBUG -Wall"
  fi
else
  final_message="$final_message\n  Debugging:\tNo"
  if test "$use_profiling" = "yes"; then
    final_message="$final_message\n  Profiling:\tYes"
    DEBUG_FLAGS="-pg -DNDEBUG=1"
  else
    final_message="$final_message\n  Profiling:\tNo"
    DEBUG_FLAGS="-DNDEBUG=1"
  fi
fi

CFLAGS="$CFLAGS $DEBUG_FLAGS"
CXXFLAGS="$CXXFLAGS $DEBUG_FLAGS"

if test "$use_optimizations" = "yes"; then
  final_message="$final_message\n  Optimization:\tYes"
  CXXFLAGS="$CXXFLAGS -O2"
  CFLAGS="$CFLAGS -O2"
else
  final_message="$final_message\n  Optimization:\tNo"
fi


# platform specific flags
if test "$host_vendor" = "apple" ; then
  AC_SUBST(MACOSX_DEPLOYMENT_TARGET, "10.4")
  # need these in CFLAGS/CXXFLAGS so AC_CHECK_LIB works
  CFLAGS="$CFLAGS -I/opt/local/include"
  CXXFLAGS="$CXXFLAGS -I/opt/local/include"
  # standard xbmc paths
  INCLUDES="$INCLUDES -I\$(abs_top_srcdir)/xbmc/osx"
  LDFLAGS="$LDFLAGS -mmacosx-version-min=10.4"
  LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk"
  LDFLAGS="$LDFLAGS -L/opt/local/lib"
  LDFLAGS="$LDFLAGS -L/opt/local/lib/mysql5/mysql"
  LDFLAGS="$LDFLAGS -L/opt/local/lib/samba3"
  LIBS="$LIBS -framework IOKit"
  LIBS="$LIBS -framework Cocoa"
  LIBS="$LIBS -framework OpenGL"
  LIBS="$LIBS -framework AppKit"
  LIBS="$LIBS -framework Carbon"
  LIBS="$LIBS -framework CoreAudio"
  LIBS="$LIBS -framework QuickTime"
  LIBS="$LIBS -framework AudioUnit"
  LIBS="$LIBS -framework Foundation"
  LIBS="$LIBS -framework CoreServices"
  LIBS="$LIBS -framework CoreVideo"
  LIBS="$LIBS -framework CoreAudio"
  LIBS="$LIBS -framework AudioToolbox"
  LIBS="$LIBS -framework CoreFoundation"
  LIBS="$LIBS -framework DiskArbitration"
  LIBS="$LIBS -framework ApplicationServices"
elif expr "X$host_cpu" : 'Xarm.*' > /dev/null; then
  use_arch=arm
  CFLAGS="$CFLAGS -mfloat-abi=softfp -mno-apcs-stack-check"
  CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp -mno-apcs-stack-check"
  FFMPEG_EXTRACFLAGS="-mfloat-abi=softfp"
  if test "$use_tegra" = "yes"; then
    # Compile for ARMv7a architecture, need to test gcc for vfpv3-d16 support 
    SAVE_CFLAGS="$CFLAGS"
    CFLAGS="-mfpu=vfpv3-d16"
    AC_COMPILE_IFELSE(
      [int foo;],
      [ CFLAGS="$SAVE_CFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
        CXXFLAGS="$CXXFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
        FFMPEG_EXTRACFLAGS+=" -mtune=cortex-a9 -mfpu=vfpv3-d16"
        use_cpu=cortex-a9],
      [ CFLAGS="$SAVE_CFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
        CXXFLAGS="$CXXFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"    
        use_cpu=cortex-a8])
  else
    # Compile for ARMv7a architecture, CortexA8 cpu and NEON coprocessor
    CFLAGS+=" -Wa,-march=armv7a -mcpu=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad"
    CXXFLAGS+=" -Wa,-march=armv7a -mcpu=cortex-a8 -mfpu=neon -mvectorize-with-neon-quad"
    FFMPEG_EXTRACFLAGS+=" -mfpu=neon"
  fi
fi

# Checks for library functions.
AC_FUNC_ALLOCA
AC_FUNC_CHOWN
AC_FUNC_CLOSEDIR_VOID
AC_FUNC_ERROR_AT_LINE
AC_FUNC_FSEEKO
AC_PROG_GCC_TRADITIONAL
AC_FUNC_LSTAT
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
AC_FUNC_MEMCMP
AC_FUNC_MKTIME
AC_FUNC_MMAP
# Boxee is apparently having compile problems
# if HAVE_REALLOC is defined.  Sort this later.
#AC_FUNC_REALLOC
AC_FUNC_SELECT_ARGTYPES
AC_FUNC_SETVBUF_REVERSED
AC_TYPE_SIGNAL
AC_FUNC_STAT
AC_FUNC_STRCOLL
AC_FUNC_STRFTIME
AC_FUNC_STRTOD
AC_FUNC_UTIME_NULL
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([atexit dup2 fdatasync floor fs_stat_dev ftime ftruncate getcwd gethostbyaddr gethostbyname gethostname getpagesize getpass gettimeofday inet_ntoa lchown localeconv memchr memmove memset mkdir modf munmap pow rmdir select setenv setlocale socket sqrt strcasecmp strchr strcspn strdup strerror strncasecmp strpbrk strrchr strspn strstr strtol strtoul sysinfo tzset utime])

# Check for various sizes
AC_CHECK_SIZEOF([int])
AC_CHECK_SIZEOF([size_t])

# Add top source directory for all builds so we can use config.h
INCLUDES="$INCLUDES -I\$(abs_top_srcdir)"

# Checks for boost headers using CXX instead of CC
AC_LANG_PUSH([C++])
AC_CHECK_HEADER([boost/shared_ptr.hpp],, AC_MSG_ERROR($missing_library))
AC_LANG_POP([C++])

# Checks for platforms libraries.
if test "$use_gles" = "yes"; then
  # GLES overwrites GL if both set to yes.
  AC_CHECK_LIB([EGL],     [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([GLESv2],  [main],, AC_MSG_ERROR($missing_library))
else
  if test "$use_gl" = "yes"; then
    if test "$host_vendor" = "apple" ; then
      # linking to OpenGL.framework instead of libGL, libGLU
      AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
    else
      AC_CHECK_LIB([GL],  [main],, AC_MSG_ERROR($missing_library))
      AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
      AC_CHECK_LIB([GLU], [main],, AC_MSG_ERROR($missing_library))
    fi
  else
    AC_MSG_RESULT(== WARNING: OpenGL support is disabled. XBMC will run VERY slow. ==)
    AC_CHECK_LIB([SDL_gfx],[main])
  fi
fi

# platform common libraries
AC_CHECK_HEADER([mad.h],,            AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([jpeglib.h],,        AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([samplerate.h],,     AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([ogg/ogg.h],,        AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([vorbis/vorbisfile.h],, AC_MSG_ERROR($missing_library))
AC_CHECK_HEADER([vorbis/vorbisenc.h],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([ass], [ass_set_message_cb],,use_external_libass="no")
AC_CHECK_LIB([bz2],         [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([jpeg],        [main],, AC_MSG_ERROR($missing_library)) # check for cximage
AC_CHECK_LIB([pthread],     [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([lzo2],        [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([z],           [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([ssl],         [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([crypto],      [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([wavpack],     [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([mpeg2],       [main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([mpeg2convert],[main],, AC_MSG_ERROR($missing_library))
AC_CHECK_LIB([ssh],         [sftp_tell64],, AC_MSG_RESULT([Could not find suitable version of libssh]))
PKG_CHECK_MODULES([MAD],        [mad],
  [INCLUDES="$INCLUDES $MAD_CFLAGS"; LIBS="$LIBS $MAD_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([FONTCONFIG], [fontconfig],
  [INCLUDES="$INCLUDES $FONTCONFIG_CFLAGS"; LIBS="$LIBS $FONTCONFIG_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([FRIBIDI],    [fribidi],
  [INCLUDES="$INCLUDES $FRIBIDI_CFLAGS"; LIBS="$LIBS $FRIBIDI_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([SQLITE3],    [sqlite3],
  [INCLUDES="$INCLUDES $SQLITE3_CFLAGS"; LIBS="$LIBS $SQLITE3_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([PNG],        [libpng],
  [INCLUDES="$INCLUDES $PNG_CFLAGS"; LIBS="$LIBS $PNG_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([PCRE],       [libpcre],
  [INCLUDES="$INCLUDES $PCRE_CFLAGS"; LIBS="$LIBS $PCRE_LIBS"]; \
  AC_DEFINE([HAVE_LIBPCRE],[1],["Define to 1 if libpcre is installed"]),
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([PCRECPP],    [libpcrecpp],
  [INCLUDES="$INCLUDES $PCRECPP_CFLAGS"; LIBS="$LIBS $PCRECPP_LIBS"]; \
  AC_DEFINE([HAVE_LIBPCRECPP],[1],["Define to 1 if libpcrecpp is installed"]),
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([CDIO],       [libcdio],
  [INCLUDES="$INCLUDES $CDIO_CFLAGS"; LIBS="$LIBS $CDIO_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([SAMPLERATE], [samplerate],
  [INCLUDES="$INCLUDES $SAMPLERATE_CFLAGS"; LIBS="$LIBS $SAMPLERATE_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([MMS],        [libmms],
  [INCLUDES="$INCLUDES $MMS_CFLAGS"; LIBS="$LIBS $MMS_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([FREETYPE2],  [freetype2],
  [INCLUDES="$INCLUDES $FREETYPE2_CFLAGS"; LIBS="$LIBS $FREETYPE2_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([OGG],        [ogg],
  [INCLUDES="$INCLUDES $OGG_CFLAGS"; LIBS="$LIBS $OGG_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([VORBIS],     [vorbis],
  [INCLUDES="$INCLUDES $VORBIS_CFLAGS"; LIBS="$LIBS $VORBIS_LIBS"],
  AC_MSG_ERROR($missing_library))
PKG_CHECK_MODULES([VORBISENC],     [vorbisenc],
  [INCLUDES="$INCLUDES $VORBISENC_CFLAGS"; LIBS="$LIBS $VORBISENC_LIBS"],
  AC_MSG_ERROR($missing_library))

# check for libbluray
AS_CASE([x$use_libbluray],
  [xyes],[
    PKG_CHECK_MODULES([LIBBLURAY],[libbluray],[use_libbluray="yes"], AC_MSG_ERROR($missing_library))
  ],
  [xauto],[
    PKG_CHECK_MODULES([LIBBLURAY],[libbluray],[use_libbluray="yes"], [use_libbluray="no"])
  ])

AS_CASE([x$use_libbluray],
  [xyes],[
    INCLUDES="$INCLUDES $LIBBLURAY_CFLAGS";
    if test "$host_vendor" != "apple"; then
      XB_FIND_SONAME([BLURAY], [bluray], [use_libbluray])
    fi;
    AC_DEFINE([HAVE_LIBBLURAY], 1, [System has libbluray library])
    AC_SUBST([HAVE_LIBBLURAY], 1)
  ],[
#    AC_DEFINE([HAVE_LIBBLURAY], 0, [System has libbluray library])
    AC_SUBST([HAVE_LIBBLURAY], 0)
  ]
)

# platform dependent libraries
if test "$host_vendor" = "apple" ; then
  AC_CHECK_LIB([iconv],     [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([mysqlclient], [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([smbclient], [main],, AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([VORBISFILE],     [vorbisfile],
    [INCLUDES="$INCLUDES $VORBISFILE_CFLAGS"; LIBS="$LIBS $VORBISFILE_LIBS"],
    AC_MSG_ERROR($missing_library))
else
  AC_CHECK_PROG(MYSQL_CONFIG, mysql_config, "yes", "no")
  if test $MYSQL_CONFIG = "yes"; then
    INCLUDES="$INCLUDES `mysql_config --include`"
    LIBS="$LIBS `mysql_config --libs`"
  else
    AC_MSG_ERROR($missing_program)
  fi
  # don't combine with mysqlclient check in apple section above, Linux needs
  # paths from mysql_config
  AC_CHECK_LIB([modplug],    [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([mysqlclient],[main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([faad],       [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_HEADER([FLAC/stream_decoder.h],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([smbclient],  [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([SDL_mixer],  [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([dl],         [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([resolv],     [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([jasper],     [main],, AC_MSG_ERROR($missing_library)) # check for cximage
  AC_CHECK_LIB([tiff],       [main],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([rt],         [clock_gettime],, AC_MSG_ERROR($missing_library))
  AC_CHECK_LIB([SDL_image],  [main],, AC_MSG_ERROR($missing_library))
  
  PKG_CHECK_MODULES([ALSA],  [alsa],
    [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([ENCA],  [enca],
    [INCLUDES="$INCLUDES $ENCA_CFLAGS"; LIBS="$LIBS $ENCA_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([XT],    [xt],
    [INCLUDES="$INCLUDES $XT_CFLAGS"; LIBS="$LIBS $XT_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([XTST],  [xtst],
    [INCLUDES="$INCLUDES $XTST_CFLAGS"; LIBS="$LIBS $XTST_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([XEXT],  [xext],
    [INCLUDES="$INCLUDES $XEXT_CFLAGS"; LIBS="$LIBS $XEXT_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([XMU],   [xmu],
    [INCLUDES="$INCLUDES $XMU_CFLAGS"; LIBS="$LIBS $XMU_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([XINERAMA],[xinerama],
    [INCLUDES="$INCLUDES $XINERAMA_CFLAGS"; LIBS="$LIBS $XINERAMA_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([CURL],  [libcurl],
    [INCLUDES="$INCLUDES $CURL_CFLAGS"; LIBS="$LIBS $CURL_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([DBUS],  [dbus-1],
    [INCLUDES="$INCLUDES $DBUS_CFLAGS"; LIBS="$LIBS $DBUS_LIBS"],
    AC_MSG_ERROR($missing_library))
  PKG_CHECK_MODULES([SDL],   [sdl],
    [INCLUDES="$INCLUDES $SDL_CFLAGS"; LIBS="$LIBS $SDL_LIBS"],
    AC_MSG_ERROR($missing_library))
fi

# This is used to skip some submodule configuration on non-Apple hardware
HOST_NOT_APPLE=1
if [[ "$host_vendor" = "apple" ]]; then
  HOST_NOT_APPLE=0
fi

if test "$host_vendor" != "apple"; then
  XB_FIND_SONAME([CURL],        [curl])
  XB_FIND_SONAME([FLAC],        [FLAC])
  XB_FIND_SONAME([VORBISFILE],  [vorbisfile])
  XB_FIND_SONAME([MODPLUG],     [modplug])
  XB_FIND_SONAME([FAAD],        [faad])
  XB_FIND_SONAME([MAD],         [mad])
  XB_FIND_SONAME([OGG],         [ogg])
  XB_FIND_SONAME([VORBISENC],   [vorbisenc])
  XB_FIND_SONAME([VORBIS],      [vorbis])
fi

# WebServer
if test "$host_vendor" != "apple" ; then
  if test "$use_webserver" = "yes"; then
    AC_CHECK_LIB([microhttpd],  [main],, AC_MSG_ERROR($missing_library))
  fi
else
  if test "$use_webserver" = "yes"; then
    AC_DEFINE([HAVE_LIBMICROHTTPD], [1],)
  fi
fi

# PulseAudio
if test "x$use_pulse" != "xno"; then
  if test "$host_vendor" = "apple" ; then
    if test "x$use_pulse" = "xyes"; then
      AC_MSG_ERROR($pulse_disabled)
    else
      use_pulse="no"
      AC_MSG_RESULT($pulse_disabled)
    fi
  else
    AC_CHECK_LIB([pulse], [main],,
      [if test "x$use_pulse" = "xyes"; then
        AC_MSG_ERROR($pulse_not_found)
      else
        use_pulse=no
        AC_MSG_RESULT($pulse_not_found)
      fi])
  fi
else
  AC_MSG_RESULT($pulse_disabled)
fi

# FAAC
if test "$host_vendor" = "apple" ; then
  use_faac="no"
  AC_MSG_RESULT($faac_disabled)
else
  if test "$use_faac" = "yes"; then
    AC_CHECK_LIB([faac], [main],,
      use_faac=no;AC_MSG_RESULT($faac_not_found))
  else
    AC_MSG_RESULT($faac_disabled)
  fi
fi

# HAL
if test "$host_vendor" = "apple" ; then
  use_hal="no"
  AC_MSG_RESULT($hal_disabled)
else
  if test "$use_hal" = "yes"; then
    PKG_CHECK_MODULES([HAL], [hal],
      [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"],
      use_hal=no;AC_MSG_RESULT($hal_not_found))
    PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage],
      [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"],
      use_hal=no;AC_MSG_RESULT($halstorage_not_found))
  else
    AC_MSG_RESULT($hal_disabled)
  fi
  if test "$use_hal" = "yes"; then
    AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed])
  fi
fi

# avahi
if test "$host_vendor" = "apple" ; then
  use_avahi="no"
  AC_MSG_RESULT($avahi_disabled)
else
  if test "$use_avahi" = "yes"; then
    AC_CHECK_LIB([avahi-common], [main],,
      use_avahi=no;AC_MSG_RESULT($avahi_not_found))
	if test "$use_avahi" = "yes"; then
		#either both libs or none
    AC_CHECK_LIB([avahi-client], [main],,
      use_avahi=no;AC_MSG_RESULT($avahi_not_found))
	fi
    else
     AC_MSG_RESULT($avahi_disabled)
   fi
fi

# XRandR
if test "$host_vendor" = "apple" ; then
  use_xrandr="no"
  AC_MSG_RESULT($xrandr_disabled)
else
  if test "$use_xrandr" = "yes" ; then
    AC_CHECK_LIB([Xrandr], [main],, 
      use_xrandr="no";AC_MSG_RESULT($xrandr_not_found))
  else
    AC_MSG_RESULT($xrandr_disabled)
  fi
fi

# GOOM
if test "$host_vendor" = "apple" ; then
  AC_MSG_NOTICE($goom_disabled)
  BUILD_GOOM=1
else
  if test "$use_goom" = "yes"; then
    AC_MSG_NOTICE($goom_enabled)
    BUILD_GOOM=0
  else
    AC_MSG_NOTICE($goom_disabled)
    BUILD_GOOM=1
  fi
fi

# libRTMP
if test "$use_librtmp" != "no"; then
  AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
   [if test "$use_librtmp" = "yes"; then
      AC_MSG_ERROR($librtmp_not_found)
    elif test "$use_librtmp" != "no"; then
      AC_MSG_NOTICE($librtmp_not_found)
      use_librtmp="no"
    fi
   ])
  if test "$use_librtmp" != "no" && test "$host_vendor" != "apple"; then
    XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
  fi
  if test "$use_librtmp" != "no"; then
    AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
  fi
else
  AC_MSG_NOTICE($librtmp_disabled)
fi

### External libraries checks
# External FFmpeg
if test "$use_external_ffmpeg" = "yes"; then
  PKG_CHECK_MODULES([FFMPEG], [libavcodec libavformat libavutil libpostproc libswscale],
                    [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"],
                    AC_MSG_ERROR($missing_library))

  # Determine whether AVPacket and relevant functions are defined in libavformat
  # or libavcodec
  AC_CHECK_LIB([avcodec], [av_free_packet],
  [AC_MSG_NOTICE(== AVPacket and relevant functions defined in libavcodec. ==)],
  [AC_MSG_NOTICE(== AVPacket and relevant functions defined in libavformat. ==)
   AC_DEFINE([AVPACKET_IN_AVFORMAT], [1], [Whether AVPacket is in libavformat.])])

  # in case the headers are in a custom directory
  SAVE_CPPFLAGS="$CPPFLAGS"
  CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"

  # Possible places the ffmpeg headers may be
  AC_CHECK_HEADERS([libavcodec/avcodec.h libavformat/avformat.h libavutil/avutil.h libpostproc/postprocess.h libswscale/swscale.h],,
  [AC_CHECK_HEADERS([ffmpeg/avcodec.h ffmpeg/avformat.h ffmpeg/avutil.h postproc/postprocess.h ffmpeg/swscale.h],,
  [AC_MSG_ERROR($missing_headers)])])

  # We'll support the use of rgb2rgb.h if it exists.
  AC_CHECK_HEADERS([libswscale/rgb2rgb.h],,)
  AC_CHECK_HEADERS([ffmpeg/rgb2rgb.h],,)

  AC_MSG_NOTICE($external_ffmpeg_enabled)
  USE_EXTERNAL_FFMPEG=1
  AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])

  # Disable vdpau support if external libavcodec doesn't have it
  AC_CHECK_LIB([avcodec], [ff_vdpau_vc1_decode_picture],,
    [if test "x$use_vdpau" = "xyes"; then
      AC_MSG_ERROR($ffmpeg_vdpau_not_supported)
    else
      use_vdpau=no
      AC_MSG_RESULT($ffmpeg_vdpau_not_supported)
    fi])

  # Check for 'PIX_FMT_VDPAU_MPEG4' from libavutil
  if test "x$use_vdpau" != "xno"; then
    AC_LANG_PUSH([C++])
    AC_LINK_IFELSE(
      [ #include <libavutil/pixfmt.h>
        int main() { PixelFormat format = PIX_FMT_VDPAU_MPEG4; }],
      [AC_DEFINE([PIX_FMT_VDPAU_MPEG4_IN_AVUTIL], [1],
      [Whether AVUtil defines PIX_FMT_VDPAU_MPEG4.])],)
    AC_LANG_POP([C++])
  fi
  CPPFLAGS="$SAVE_CPPFLAGS"
else
  AC_MSG_NOTICE($external_ffmpeg_disabled)
  USE_EXTERNAL_FFMPEG=0
  AC_DEFINE([PIX_FMT_VDPAU_MPEG4_IN_AVUTIL], [1], [Whether AVUtil defines PIX_FMT_VDPAU_MPEG4.])
fi

# External liba52 if deprecated a52 support is enabled
if test "$use_liba52" = "yes" && "$use_external_liba52" = "yes"; then
  AC_CHECK_LIB([a52],          [main],, AC_MSG_ERROR($missing_library))

  AC_MSG_NOTICE($external_liba52_enabled)
  USE_EXTERNAL_LIBA52=1
  AC_DEFINE([USE_EXTERNAL_LIBA52], [1], [Whether to use external liba52 library.])
  USE_INTERNAL_LIBA52=0
  SKIP_CONFIG_LIBA52=1
else
  AC_MSG_NOTICE($external_liba52_disabled)
  USE_EXTERNAL_LIBA52=0
fi

# External libdts if deprecated dts support enabled
if test "$use_libdts" = "yes" && "$use_external_libdts" = "yes"; then
  AC_CHECK_LIB([dts],          [main],, AC_MSG_ERROR($missing_library))

  AC_MSG_NOTICE($external_libdts_enabled)
  USE_EXTERNAL_LIBDTS=1
  AC_DEFINE([USE_EXTERNAL_LIBDTS], [1], [Whether to use external libdts library.])
  USE_INTERNAL_LIBDTS=0
  SKIP_CONFIG_LIBDTS=1
else
  AC_MSG_NOTICE($external_libdts_disabled)
  USE_EXTERNAL_LIBDTS=0
fi

# External Python
if test "$use_external_python" = "yes"; then
  AC_CHECK_LIB([python2.6], [main],
    [AC_DEFINE([HAVE_LIBPYTHON2_6], [1],
    [Define to 1 if you have the 'python2.6' library.])
    USE_PYTHON2_6=1],
  [AC_CHECK_LIB([python2.5], [main],
    [AC_DEFINE([HAVE_LIBPYTHON2_5], [1],
    [Define to 1 if you have the 'python2.5' library.])
    USE_PYTHON2_5=1],
  [AC_CHECK_LIB([python2.4], [main],
    [AC_DEFINE([HAVE_LIBPYTHON2_4], [1],
    [Define to 1 if you have the 'python2.4' library.])
    USE_PYTHON2_4=1],
  [AC_MSG_ERROR($missing_library)] )] )] )

  AC_MSG_NOTICE($external_python_enabled)
  test "$USE_PYTHON2_6" && AC_MSG_NOTICE([Using Python 2.6])
  test "$USE_PYTHON2_5" && AC_MSG_NOTICE([Using Python 2.5])
  test "$USE_PYTHON2_4" && AC_MSG_NOTICE([Using Python 2.4])
  USE_EXTERNAL_PYTHON=1
  AC_DEFINE([USE_EXTERNAL_PYTHON], [1], [Whether to use external python library.])
else
  AC_MSG_NOTICE($external_python_disabled)
  USE_EXTERNAL_PYTHON=0
fi

# VDPAU
if test "x$use_vdpau" != "xno"; then
  if test "$host_vendor" = "apple" ; then
    if test "x$use_vdpau" = "xyes"; then
      AC_MSG_ERROR([VDPAU not supported on this platform])
    else
      use_vdpau="no"
      AC_MSG_NOTICE($vdpau_disabled)
    fi
  else
    AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
      [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
    [if test "x$use_vdpau" = "xyes"; then 
      AC_MSG_ERROR([$vdpau_not_found])
    else
      use_vdpau="no"
      AC_MSG_RESULT($vdpau_not_found)
    fi])
  fi
else
  AC_MSG_NOTICE($vdpau_disabled)
fi

# VAAPI
if test "x$use_vaapi" != "xno"; then
  if test "$host_vendor" = "apple" ; then
    if test "x$use_vaapi" = "xyes"; then
      AC_MSG_ERROR([VAAPI not supported on this platform])
    else
      use_vaapi="no"
      AC_MSG_NOTICE($vaapi_disabled)
    fi
  else
    initial_val=$use_vaapi
    AC_CHECK_LIB([va], main, :, use_vaapi=no)
    if test "x$use_vaapi" != "xno"; then
      AC_CHECK_LIB([va-glx], main, LIBS="-lva -lva-glx $LIBS", use_vaapi=no, -lva)
    fi

    if test "x$use_vaapi" = "xno"; then
      if test "x$initial_val" = "xyes"; then
        AC_MSG_ERROR($vaapi_not_found)
      else
        AC_MSG_RESULT($vaapi_not_found)
      fi
    else
      AC_DEFINE([HAVE_LIBVA], [1], [Define to 1 if you have the 'vaapi' libraries (-lva AND -lva-glx)])
    fi
  fi
else
  AC_MSG_NOTICE($vaapi_disabled)
fi

# CrystalHD
if test "x$use_crystalhd" != "xno"; then
  AC_CHECK_HEADER([libcrystalhd/libcrystalhd_if.h], [], 
    [ if test "x$use_crystalhd" = "xyes"; then
        AC_MSG_ERROR($crystalhd_not_found)
      else
        use_crystalhd=no
        AC_MSG_RESULT($crystalhd_not_found)
      fi],
    [#define __LINUX_USER__])
    if test "$host_vendor" != "apple"; then
      XB_FIND_SONAME([CRYSTALHD], [crystalhd], [use_crystalhd])
    fi
    if test "x$use_crystalhd" != "xno"; then
      SAVE_CFLAGS="$CFLAGS"
      CFLAGS="-llibcrystalhd"
      # check for new crystalhd lib
      AC_COMPILE_IFELSE(
        [ #define __LINUX_USER__
          #include <libcrystalhd/bc_dts_types.h>
          #include <libcrystalhd/bc_dts_defs.h>
          PBC_INFO_CRYSTAL bCrystalInfo;],
        [ AC_DEFINE([HAVE_LIBCRYSTALHD], [2], [Define to 2 if you have the 'New Broadcom Crystal HD' library.]) ], 
        [ AC_DEFINE([HAVE_LIBCRYSTALHD], [1], [Define to 1 if you have the 'Old Broadcom Crystal HD' library.]) ])
      CFLAGS="$SAVE_CFLAGS"
    fi
else
  AC_MSG_NOTICE($crystalhd_disabled)
fi

# VDADecoder
if test "x$use_vdadecoder" != "xno"; then
  if test "$host_vendor" = "apple" ; then
    HAVE_LIBVDADECODER=1
    AC_DEFINE([HAVE_LIBVDADECODER], [1], [Define to 1 if you have the 'VDADecoder' library.])
    AC_MSG_NOTICE($vdadecoder_enabled)
  else
    if test "x$use_vdadecoder" = "xyes"; then
      AC_MSG_ERROR([VDA Decoder not supported on this platform])
    else
      use_vdadecoder="no"
      AC_MSG_NOTICE($vdadecoder_disabled)
    fi
  fi
else
  AC_MSG_NOTICE($vdadecoder_disabled)
fi

# OpenMax
if test "$host_vendor" = "apple" ; then
  use_openmax="no"
  AC_MSG_NOTICE($openmax_disabled)
else
  if test "$use_openmax" = "yes"; then
    AC_CHECK_HEADER([OpenMAX/IL/OMX_Types.h],
      AC_DEFINE([HAVE_LIBOPENMAX], [1], [Define to 1 if you have the 'OpenMax' library.]),
      use_openmax=no;AC_MSG_RESULT($openmax_not_found))
    if test "$use_openmax" = "yes"; then
      INCLUDES="$INCLUDES -I/usr/include/OpenMAX/IL"
    fi
  else
    AC_MSG_NOTICE($openmax_disabled)
  fi
fi

# platform specific bin utilities
if test "$host_vendor" != "apple" ; then
  AC_CHECK_PROG(HAVE_GAWK,gawk,"yes","no",)
  if test "$HAVE_GAWK" = "no" ; then
    AC_MSG_ERROR($missing_program)
  fi
fi

AC_CHECK_PROG(HAVE_CMAKE,cmake,"yes","no",)
if test "$HAVE_CMAKE" = "no" ; then
  AC_MSG_ERROR($missing_program)
fi

AC_CHECK_PROG(HAVE_GPERF,gperf,"yes","no",)
if test "$HAVE_GPERF" = "no" ; then
  AC_MSG_ERROR($missing_program)
fi

AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
if test "$HAVE_UNZIP" = "no" ; then
  AC_MSG_ERROR($missing_program)
fi

AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
if test "$HAVE_ZIP" = "no" ; then
  AC_MSG_ERROR($missing_program)
fi

if test "$ARCH" != "x86_64-linux"; then
  AC_CHECK_PROG(HAVE_NASM,nasm,"yes","no",)
  if test "$HAVE_NASM" = "no" ; then
    AC_MSG_ERROR($missing_program)
  fi
fi

AC_CHECK_PROG(HAVE_SVNVERSION,svnversion,"yes","no",)
AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)

# Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS([lzo/lzo1.h])
AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h limits.h locale.h \
  malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h \
  strings.h sys/file.h sys/ioctl.h sys/mount.h sys/param.h sys/socket.h \
  sys/time.h sys/timeb.h sys/vfs.h termios.h unistd.h utime.h wchar.h wctype.h])
AC_CHECK_HEADERS([cdio/iso9660.h],,AC_MSG_ERROR([$missing_headers]))

# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STAT
AC_HEADER_STDBOOL
AC_C_CONST
AC_TYPE_UID_T
AC_C_INLINE
AC_TYPE_INT8_T
AC_TYPE_INT16_T
AC_TYPE_INT32_T
AC_TYPE_INT64_T
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_C_RESTRICT
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_CHECK_MEMBERS([struct stat.st_rdev])
AC_HEADER_TIME
AC_STRUCT_TM
AC_TYPE_UINT8_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_C_BIGENDIAN

if test "$cross_compiling" = "yes"; then
  final_message="$final_message\n  Crosscomp.:\tYes"
else
  final_message="$final_message\n  Crosscomp.:\tNo"
fi

final_message="$final_message\n  target ARCH:\t$use_arch"
final_message="$final_message\n  target CPU:\t$use_cpu"

if test "$use_gles" = "yes"; then
  final_message="$final_message\n  OpenGLES:\tYes"
else
  if test "$use_gl" = "yes"; then
    final_message="$final_message\n  OpenGL:\tYes"
  else
    final_message="$final_message\n  OpenGL:\tNo (Very Slow)"
    SDL_DEFINES="-DHAS_SDL_2D"
  fi
fi

if test "x$use_vdpau" != "xno"; then
  final_message="$final_message\n  VDPAU:\tYes"
else
  final_message="$final_message\n  VDPAU:\tNo"
fi

if test "x$use_vaapi" != "xno"; then
  final_message="$final_message\n  VAAPI:\tYes"
else
  final_message="$final_message\n  VAAPI:\tNo"
fi

if test "x$use_crystalhd" != "xno"; then
  final_message="$final_message\n  CrystalHD:\tYes"
else
  final_message="$final_message\n  CrystalHD:\tNo"
fi

if test "x$use_vdadecoder" != "xno"; then
  final_message="$final_message\n  VDADecoder:\tYes"
else
  final_message="$final_message\n  VDADecoder:\tNo"
fi

if test "$use_openmax" != "no"; then
  final_message="$final_message\n  OpenMax:\tYes"
else
  final_message="$final_message\n  OpenMax:\tNo"
fi

if test "$use_joystick" = "yes"; then
  final_message="$final_message\n  Joystick:\tYes"
  SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_JOYSTICK"
else
  final_message="$final_message\n  Joystick:\tNo"
fi

if test "$use_xrandr" = "yes"; then
  final_message="$final_message\n  XRandR:\tYes"
else
  final_message="$final_message\n  XRandR:\tNo"
fi

if test "$use_goom" = "yes"; then
  final_message="$final_message\n  GOOM:\t\tYes"
else
  final_message="$final_message\n  GOOM:\t\tNo"
fi

if test "$use_libbluray" = "yes"; then
  final_message="$final_message\n  Bluray:\tYes"
else
  final_message="$final_message\n  Bluray:\tNo"
fi

if test "$use_mid" = "yes"; then
  final_message="$final_message\n  MID Support:\tYes"
  SDL_DEFINES="$SDL_DEFINES -DMID"
else
  final_message="$final_message\n  MID Support:\tNo"
fi

if test -d "/usr/include/lzo"; then
  INCLUDES="$INCLUDES -I/usr/include/lzo"
else
  INCLUDES="$INCLUDES"
fi

if test "x$use_ccache" != "xno"; then
  AC_PATH_PROG(CCACHE,ccache,none)
  if test "$ac_cv_path_CCACHE" = "none"; then
    if test "x$use_ccache" = "xyes"; then
      AC_MSG_ERROR([ccache not found.]);
    else
      AC_MSG_NOTICE([ccache not found. Falling back to default CC])
      final_message="$final_message\n  ccache:\tNo"
    fi
  else
    CC="$ac_cv_path_CCACHE $CC"
    CXX="$ac_cv_path_CCACHE $CXX"
    AC_MSG_NOTICE(enabling ccache)
    final_message="$final_message\n  ccache:\tYes"
  fi
else
  final_message="$final_message\n  ccache:\tNo"
fi

if test "x$use_pulse" != "xno"; then
  final_message="$final_message\n  PulseAudio:\tYes"
else
  final_message="$final_message\n  PulseAudio:\tNo"
fi

if test "$use_hal" = "yes"; then
  final_message="$final_message\n  HAL Support:\tYes"
else
  final_message="$final_message\n  HAL Support:\tNo"
fi

if test "$use_faac" = "yes"; then
  final_message="$final_message\n  FAAC:\t\tYes"
else
  final_message="$final_message\n  FAAC:\t\tNo"
fi

# DVDCSS
if test "$use_dvdcss" = "yes"; then
  AC_MSG_NOTICE($dvdcss_enabled)
  final_message="$final_message\n  DVDCSS:\tYes"
  BUILD_DVDCSS=1
  SKIP_CONFIG_DVDCSS=0
  DVDREAD_CFLAGS="-D_XBMC -DHAVE_DVDCSS_DVDCSS_H"
else
  AC_MSG_NOTICE($dvdcss_disabled)
  final_message="$final_message\n  DVDCSS:\tNo"
  BUILD_DVDCSS=0
  SKIP_CONFIG_DVDCSS=1
  DVDREAD_CFLAGS="-D_XBMC -UHAVE_DVDCSS_DVDCSS_H"
fi
if test "$use_avahi" = "yes"; then
  final_message="$final_message\n  Avahi:\tYes"
else
  final_message="$final_message\n  Avahi:\tNo"
fi

if ! test -n "$SVN_REV" -a "$SVN_REV" != "" ; then
  if test "$HAVE_SVNVERSION" = "yes" ; then
    SVN_REV=$(svnversion -n -c 2>/dev/null | grep -iv ^exported | sed -e 's/.*\://')
  fi
  if test "$SVN_REV" = ""; then
    if test "$HAVE_GIT" = "yes"; then
      SVN_REV=$(./gitrev.sh)
    fi
  fi
  if test "$SVN_REV" = ""; then
    SVN_REV="Unknown"
  fi
fi
if test "$host_vendor" = "apple"; then
  echo "#define SVN_REV \"$SVN_REV\"" > svn_revision.h
else
  SDL_DEFINES="$SDL_DEFINES -D'SVN_REV=\"$SVN_REV\"'"
fi

if test "$use_nonfree" = "yes"; then
  final_message="$final_message\n  Non-free:\tYes"
  HAVE_XBMC_NONFREE=1
  AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
else
  HAVE_XBMC_NONFREE=0
  final_message="$final_message\n  Non-free:\tNo"
fi

if test "$use_asap" = "yes"; then
  AC_CHECK_PROG(HAVE_GDC,gdc,"yes","no")
  if test "$HAVE_GDC" = "no"; then
    AC_MSG_ERROR($missing_program);
  fi
  AC_CHECK_PROG(HAVE_FPC,fpc,"yes","no")
  if test "$HAVE_FPC" = "no"; then
    AC_MSG_ERROR($missing_program);
  fi
  USE_ASAP_CODEC=1
  AC_DEFINE([USE_ASAP_CODEC], [1], [Define to 1 to enable ASAP codec.])
  final_message="$final_message\n  ASAP Codec:\tYes"
else
  USE_ASAP_CODEC=0
  final_message="$final_message\n  ASAP Codec:\tNo"
fi

if test "$use_webserver" = "yes"; then
  final_message="$final_message\n  Webserver:\tYes"
else
  final_message="$final_message\n  Webserver:\tNo"
fi

if test "$use_librtmp" != "no"; then
  final_message="$final_message\n  libRTMP support:\tYes"
else
  final_message="$final_message\n  libRTMP support:\tNo"
fi

if test "$use_libdts" = "yes"; then
  USE_LIBDTS_DECODER=1
  AC_DEFINE([USE_LIBDTS_DECODER], [1], [Define to 1 to enable deprecated libdts support])
  if ! test "$USE_EXTERNAL_LIBDTS" = "1"; then
    USE_INTERNAL_LIBDTS=1
    SKIP_CONFIG_LIBDTS=0
  fi
  final_message="$final_message\n  Deprecated libdts:\tYes"
else
  USE_INTERNAL_LIBDTS=0
  SKIP_CONFIG_LIBDTS=1
  final_message="$final_message\n  Deprecated libdts:\tNo"
fi

if test "$use_liba52" = "yes"; then
  USE_LIBA52_DECODER=1
  AC_DEFINE([USE_LIBA52_DECODER], [1], [Define to 1 to enable deprecated liba52 support])
  if ! test "$USE_EXTERNAL_LIBA52" = "1"; then
    USE_INTERNAL_LIBA52=1
    SKIP_CONFIG_LIBA52=0
  fi
  final_message="$final_message\n  Deprecated liba52:\tYes"
else
  USE_INTERNAL_LIBA52=0
  SKIP_CONFIG_LIBA52=1
  final_message="$final_message\n  Deprecated liba52:\tNo"
fi

### External libraries messages
if test "$use_external_ffmpeg" = "yes"; then
  final_message="$final_message\n  External FFmpeg:\tYes"
else
  final_message="$final_message\n  External FFmpeg:\tNo"
fi
if test "$use_liba52" = "yes"; then
  if test "$use_external_liba52" = "yes"; then
    final_message="$final_message\n  External liba52:\tYes"
  else
    final_message="$final_message\n  External liba52:\tNo"
  fi
fi
if test "$use_libdts" = "yes"; then
  if test "$use_external_libdts" = "yes"; then
    final_message="$final_message\n  External libdts:\tYes"
  else
    final_message="$final_message\n  External libdts:\tNo"
  fi
fi
if test "$use_external_python" = "yes"; then
  final_message="$final_message\n  External Python:\tYes"
else
  final_message="$final_message\n  External Python:\tNo"
fi

OUTPUT_FILES="Makefile \
    Makefile.include \
    xbmc/Makefile \
    xbmc/cdrip/Makefile \
    xbmc/cores/Makefile \
    xbmc/cores/VideoRenderers/Makefile \
    xbmc/cores/dvdplayer/Makefile \
    xbmc/cores/dvdplayer/Codecs/Makefile \
    xbmc/cores/dvdplayer/Codecs/libdvd/Makefile \
    xbmc/cores/dvdplayer/DVDCodecs/Makefile \
    xbmc/cores/dvdplayer/DVDCodecs/Audio/Makefile \
    xbmc/cores/dvdplayer/DVDCodecs/Overlay/Makefile \
    xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile \
    xbmc/cores/dvdplayer/DVDDemuxers/Makefile \
    xbmc/cores/dvdplayer/DVDSubtitles/Makefile \
    xbmc/cores/AudioRenderers/Makefile \
    xbmc/cores/paplayer/Makefile \
    xbmc/cores/paplayer/timidity/Makefile \
    xbmc/cores/paplayer/AC3Codec/Makefile \
    xbmc/cores/paplayer/ADPCMCodec/Makefile \
    xbmc/cores/paplayer/GYMCodec/Makefile \
    xbmc/cores/paplayer/NSFCodec/Makefile \
    xbmc/cores/paplayer/SIDCodec/Makefile \
    xbmc/cores/paplayer/vgmstream/Makefile \
    xbmc/cores/paplayer/SPCCodec/SNES/SNESAPU/Makefile \
    xbmc/cores/paplayer/YMCodec/StSoundLibrary/Makefile \
    xbmc/cores/playercorefactory/Makefile \
    xbmc/karaoke/Makefile \
    xbmc/osx/Makefile \
    guilib/Makefile \
    guilib/common/Makefile \
    xbmc/lib/libXBMS/Makefile \
    xbmc/lib/libRTV/Makefile \
    xbmc/lib/libexif/Makefile \
    xbmc/lib/libXDAAP/Makefile \
    xbmc/lib/libhdhomerun/Makefile \
    xbmc/lib/libhttpapi/Makefile \
    lib/jsoncpp/jsoncpp/src/lib_json/Makefile \
    xbmc/lib/libjsonrpc/Makefile \
    xbmc/lib/libshout/Makefile \
    xbmc/lib/libsquish/Makefile \
    xbmc/lib/libid3tag/Makefile \
    xbmc/lib/cximage-6.0/Makefile \
    xbmc/lib/libPython/linux/Makefile \
    xbmc/lib/libUPnP/Makefile \
    xbmc/DllPaths_generated.h \
    xbmc/linux/Makefile \
    xbmc/FileSystem/Makefile \
    xbmc/screensavers/rsxs-0.9/xbmc/Makefile \
    xbmc/visualizations/XBMCProjectM/Makefile \
    xbmc/visualizations/Goom/Makefile \
    xbmc/visualizations/OpenGLSpectrum/Makefile \
    xbmc/visualizations/WaveForm/Makefile \
    xbmc/visualizations/iTunes/Makefile \
    xbmc/FileSystem/Makefile \
    tools/Linux/xbmc.sh \
    tools/TexturePacker/Makefile \
    tools/EventClients/Clients/OSXRemote/Makefile"

if test "$host_vendor" = "apple"; then
  OUTPUT_FILES="$OUTPUT_FILES \
    xbmc/cores/paplayer/FLACCodec/Makefile"
fi

if test "$use_external_libass" = "no"; then
  OUTPUT_FILES="$OUTPUT_FILES \
    lib/libass/xbmc/Makefile"
  USE_EXTERNAL_LIBASS=0
  AC_MSG_NOTICE($libass_using_internal)
else
  AC_DEFINE([USE_EXTERNAL_LIBASS], [1], [Whether to use external libass library.])
  USE_EXTERNAL_LIBASS=1
fi

# Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
# .dummy.am does nothing.
AC_CONFIG_FILES([.dummy])

AC_CONFIG_FILES([${OUTPUT_FILES}])
OUTPUT_FILES="$OUTPUT_FILES \
  .dummy"
AC_SUBST(CFLAGS)
AC_SUBST(CXXFLAGS)
AC_SUBST(INCLUDES)
AC_SUBST(LDFLAGS)
AC_SUBST(SDL_DEFINES)
AC_SUBST(BUILD_DVDCSS)
AC_SUBST(BUILD_GOOM)
AC_SUBST(USE_EXTERNAL_FFMPEG)
AC_SUBST(USE_EXTERNAL_LIBA52)
AC_SUBST(USE_INTERNAL_LIBA52)
AC_SUBST(USE_EXTERNAL_LIBASS)
AC_SUBST(USE_EXTERNAL_LIBDTS)
AC_SUBST(USE_INTERNAL_LIBDTS)
AC_SUBST(USE_EXTERNAL_LIBMPEG2)
AC_SUBST(USE_EXTERNAL_LIBWAVPACK)
AC_SUBST(USE_EXTERNAL_PYTHON)
AC_SUBST(USE_PYTHON2_6)
AC_SUBST(USE_PYTHON2_5)
AC_SUBST(USE_PYTHON2_4)
AC_SUBST(OUTPUT_FILES)
AC_SUBST(HAVE_XBMC_NONFREE)
AC_SUBST(USE_ASAP_CODEC)
AC_SUBST(LIBCURL_BASENAME)
AC_SUBST(LIBFLAC_BASENAME)
AC_SUBST(LIBVORBISFILE_BASENAME)
AC_SUBST(LIBMODPLUG_BASENAME)
AC_SUBST(LIBFAAD_BASENAME)
AC_SUBST(LIBMAD_BASENAME)
AC_SUBST(LIBOGG_BASENAME)
AC_SUBST(LIBVORBISENC_BASENAME)
AC_SUBST(LIBVORBIS_BASENAME)

# pushd and popd are not available in other shells besides bash, so implement
# our own pushd/popd functions
XB_DIRSTACK="$PWD"
xb_pushd()
{
  local dirname="$1"
  if [[ -d "$dirname" ]] && [[ -x "$dirname" ]]; then
    cd "$dirname"
    XB_DIRSTACK="$dirname ${XB_DIRSTACK:-$PWD}"
    return 0
  else
    AC_MSG_ERROR(xb_pushd: unable to change to $dirname)
  fi
}
xb_popd()
{
  if [[ -n "$XB_DIRSTACK" ]]; then
    XB_DIRSTACK="${XB_DIRSTACK#* }"
    cd "${XB_DIRSTACK%% *}"
    return 0
  else
    AC_MSG_ERROR(xb_popd: unable to go back to previous directory)
  fi
}

# Function to run the configure scripts in our submodules
# Consists of three paramaters, the path to the submodule, the configure command
# with appropriate arguments, and a third parameter set to 1 if we are to skip
# running the script, anything else if not.
AC_DEFUN([XB_CONFIG_MODULE],[
AC_CONFIG_COMMANDS_POST([
if [[ $3 != "1" ]]; then
    if [[ -d $1 ]]; then
      xb_pushd $1
      $2
      if [[ $? -ne 0 ]]; then
        xb_popd
        AC_MSG_ERROR([[Submodule $1 failed to configure]])
      else
        xb_popd
      fi
    else
      AC_MSG_ERROR([[Submodule $1 does not exist]])
    fi
else
    AC_MSG_NOTICE([[Skipping configuration of submodule $1.]])
fi
])
])

XB_CONFIG_MODULE([xbmc/lib/libPython/Python], [
  if test "$host_vendor" = "apple" ; then
    ./configure \
      --enable-ipv6 \
      --enable-unicode=ucs4 \
      --without-cxx \
      --enable-shared \
      --without-pymalloc \
      --with-suffix=.exe \
      LDFLAGS="-L/opt/local/lib" \
      OPT="-Wno-deprecated-declarations -I/opt/local/include" \
      MACOSX_DEPLOYMENT_TARGET=10.4 CFLAGS="$CFLAGS" &&
    sed -i bak -e "s/define HAVE_GETC_UNLOCKED 1/undef HAVE_GETC_UNLOCKED/" pyconfig.h && 
    sed -i bak -e "s/define HAVE_FSEEKO 1/undef HAVE_FSEEKO/" pyconfig.h &&
    sed -i bak -e "s/define HAVE_FTELLO 1/undef HAVE_FTELLO/" pyconfig.h &&
    sed -i bak -e "s/define HAVE_FTRUNCATE 1/undef HAVE_FTRUNCATE/" pyconfig.h &&
    sed -i bak -e "s/define HAVE_FPATHCONF 1/undef HAVE_FPATHCONF/" pyconfig.h &&
    sed -i bak -e "s/define HAVE_FSYNC 1/undef HAVE_FSYNC/" pyconfig.h &&
    sed -i bak -e "s/define HAVE_FCHDIR 1/undef HAVE_FCHDIR/" pyconfig.h &&
    sed -i bak -e "s/define _POSIX_C_SOURCE 200112L/undef _POSIX_C_SOURCE/" pyconfig.h &&
    sed -i bak -e "s/define _XOPEN_SOURCE 600/undef _XOPEN_SOURCE/" pyconfig.h &&
    sed -i bak -e "s/define _XOPEN_SOURCE_EXTENDED 1/undef _XOPEN_SOURCE_EXTENDED/" pyconfig.h &&
    echo "#define   SETPGRP_HAVE_ARG 1" >> pyconfig.h &&
    cp pyconfig.h Include	
  else
    ./configure \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \
      --disable-ipv6 \
      --enable-unicode=ucs4 \
      --without-cxx \
      --enable-shared \
      --without-pymalloc \
      --prefix=`pwd`/../linux/python-lib CFLAGS="$CFLAGS" \
      CC="$CC" \
      CXX="$CXX" &&
    sed -i -e "s/define HAVE_GETC_UNLOCKED 1/undef HAVE_GETC_UNLOCKED/" pyconfig.h &&
    sed -i -e "s/define _POSIX_C_SOURCE 200112L/undef _POSIX_C_SOURCE/" pyconfig.h &&
    sed -i -e "s/define _XOPEN_SOURCE 600/undef _XOPEN_SOURCE/" pyconfig.h &&
    cp pyconfig.h Include
  fi
], [$USE_EXTERNAL_PYTHON])

XB_CONFIG_MODULE([xbmc/cores/paplayer/FLACCodec/flac-1.2.1], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common" \ 
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 -C \
      --with-pic \
      --disable-asm-optimizations \
      --disable-xmms-plugin \
      --disable-cpplibs \
      CC="$CC" \
      CXX="$CXX"
  fi
], [$HOST_NOT_APPLE])

XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/ffmpeg], [
  if test "$host_vendor" = "apple" ; then
    ./configure \
      --extra-cflags="$CFLAGS -w -D_DARWIN_C_SOURCE -Dattribute_deprecated=" \
      --disable-amd3dnow \
      --disable-static \
      `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
      --disable-muxers \
      --enable-muxer=spdif \
      --enable-muxer=adts \
      --disable-encoders \
      --enable-encoder=ac3 \
      --enable-encoder=aac \
      `if test "$use_ffmpeg_libvorbis" == "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
      --disable-devices \
      --disable-ffplay \
      --disable-ffserver \
      --disable-ffmpeg \
      --enable-shared \
      --disable-decoder=mpeg_xvmc \
      --enable-postproc \
      --enable-gpl \
      --enable-protocol=http \
      --enable-pthreads \
      --enable-runtime-cpudetect \
      --cc="$CC" &&
    sed -i "" -e "s#define HAVE_POSIX_MEMALIGN 1#define HAVE_POSIX_MEMALIGN 0#" config.h &&
    sed -i "" -e "s#YASM=yasm#YASM=/opt/local/bin/yasm#" config.mak &&
    sed -i "" -e "s# -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 # #" config.mak &&
    sed -i "" -e "s#libswscale_VERSION_MAJOR=0#libswscale_VERSION_MAJOR=0.7.1#" config.mak &&
    sed -i "" -e "s#libavfilter_VERSION_MAJOR=0#libavfilter_VERSION_MAJOR=0.4.0#" config.mak

  else
    CFLAGS="" \
    ./configure \
      --extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
      --disable-static \
      `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
      `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
      `if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
      `if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
      --target-os=$(tolower $(uname -s)) \
      --disable-muxers \
      --enable-muxer=spdif \
      --enable-muxer=adts \
      --disable-encoders \
      --enable-encoder=ac3 \
      --enable-encoder=aac \
      `if test "$use_ffmpeg_libvorbis" == "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
      --disable-decoder=mpeg_xvmc \
      --disable-devices \
      --disable-ffplay \
      --disable-ffserver \
      --disable-ffmpeg \
      --enable-shared \
      --enable-postproc \
      --enable-gpl \
      `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
      `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \
      --enable-libfaad \
      --enable-protocol=http \
      --enable-pthreads \
      --enable-runtime-cpudetect \
      `case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
      --cc="$CC" &&
      sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
      sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
  fi
], [$USE_EXTERNAL_FFMPEG])

XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdts], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common"
    LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" \
    ./configure \
      --disable-oss \
      --disable-solaris-audio \
      --disable-al-audio \
      --disable-win
  else
    ./configure \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \      
      --disable-oss \
      --disable-solaris-audio \
      --disable-al-audio \
      --disable-win \
      CFLAGS="$CFLAGS"
  fi
], [$SKIP_CONFIG_LIBDTS])

XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdvd/libdvdcss], [
  if test "$host_vendor" = "apple" ; then
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 \
    CFLAGS="$CFLAGS -fno-common" \
      --disable-doc \
      --enable-static \
      --with-pic
  else
    ./configure \
      CC="$CC" \
      CXX="$CXX" \
      CFLAGS="$CFLAGS" \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \      
      --disable-doc \
      --enable-static \
      --with-pic
  fi
], [$SKIP_CONFIG_DVDCSS])

XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdvd/libdvdread], [
  if test "$host_vendor" = "apple" ; then
    ./configure2 MACOSX_DEPLOYMENT_TARGET=10.4 \
      --extra-cflags="$CFLAGS -fno-common $DVDREAD_CFLAGS -D__DARWIN__ -I`pwd`/../libdvdcss/src" \
      --enable-static \
      --disable-shared \
      --cc="$CC" &&
    make dvdread-config &&
    mkdir -p `pwd`/../includes/dvdread
    cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
  else
    ./configure2 \
      --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src" \
      --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \      
      --enable-static \
      --disable-shared \
      --disable-strip \
      --disable-opts \
      --cc="$CC" &&
    make dvdread-config &&
    mkdir -p `pwd`/../includes/dvdread
    cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
  fi

], [0])

XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libdvd/libdvdnav], [
  if test "$host_vendor" = "apple" ; then
    ./configure2 MACOSX_DEPLOYMENT_TARGET=10.4 \
      --extra-cflags="$CFLAGS -fno-common $DVDREAD_CFLAGS -I`pwd`/../includes" \
      --extra-ldflags="-L`pwd`/../libdvdread/obj" \
      --with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
      --enable-static \
      --disable-shared \
      --cc="$CC"
  else
    ./configure2 \
      --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes" \
      --extra-ldflags="-L`pwd`/../libdvdread/obj" \
      --with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \      
      --enable-static \
      --disable-shared \
      --cc="$CC"
  fi
], [0])

XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libfaad2], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -O3 -fno-common" \
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 \
      --with-pic
  fi
], [$HOST_NOT_APPLE])

XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/liba52], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common" \
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 \
      --with-pic \
      --disable-static \
      --enable-shared \
      --disable-oss \
      --disable-solaris-audio \
      --disable-win \
      --disable-al-audio
  else
    ./configure \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \      
      --with-pic \
      --disable-static \
      --enable-shared \
      --disable-oss \
      --disable-solaris-audio \
      --disable-win \
      --disable-al-audio \
      CFLAGS="$CFLAGS"
  fi
], [$SKIP_CONFIG_LIBA52])

XB_CONFIG_MODULE([xbmc/cores/dvdplayer/Codecs/libmad], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common" \
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 \
      --with-pic
  fi
], [$HOST_NOT_APPLE])

XB_CONFIG_MODULE([xbmc/lib/cximage-6.0/zlib], [
  if test "$host_vendor" = "apple" ; then
    export MACOSX_DEPLOYMENT_TARGET=10.4
    CFLAGS="$CFLAGS -fno-common" \
    ./configure
  fi
], [$HOST_NOT_APPLE])

XB_CONFIG_MODULE([lib/libass], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common" \
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4
  else
    CFLAGS="$CFLAGS" \
    ./configure \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias
  fi
], [$USE_EXTERNAL_LIBASS])

XB_CONFIG_MODULE([xbmc/lib/libid3tag/libid3tag],[
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common" \
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 \
      --disable-static \
      --disable-debugging \
      --with-pic
  else
    ./configure \
      CC="$CC" \
      CXX="$CXX" \
      CFLAGS="$CFLAGS" \ 
      CXXFLAGS="$CXXFLAGS" \
      --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \      
      --disable-static \
      --with-pic
  fi
], [0])

XB_CONFIG_MODULE([xbmc/visualizations/XBMCProjectM/libprojectM],[
  if test "$host_vendor" = "apple" ; then
    rm -f CMakeCache.txt && CC="" CXX=""  cmake -D CMAKE_C_FLAGS:STRING="${CFLAGS} -fno-common" -D CMAKE_CXX_FLAGS:STRING="${CXXFLAGS} -fno-common" -D CMAKE_BUILD_TYPE:STRING=RelWithDebInfo -D USE_FTGL:BOOL=OFF .
  else
set -x
    rm -f CMakeCache.txt && CC="$CC" CXX="$CXX" cmake -DCMAKE_BUILD_TYPE=None -DUSE_FTGL:BOOL=OFF \
      -DCMAKE_C_FLAGS:STRING="${CFLAGS}" -DCMAKE_CXX_FLAGS:STRING="${CXXFLAGS}" \
      -DCMAKE_INSTALL_PREFIX="${prefix}" -DCMAKE_INSTALL_LIBDIR:PATH="${libdir}" \
      -DINCLUDE_INSTALL_DIR:PATH="${includedir}" -DLIB_INSTALL_DIR:PATH="${libdir}" \
      -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}" -DSHARE_INSTALL_PREFIX:PATH="${datadir}" .
set +x
  fi
], [0])

XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
  if test "$host_vendor" != "apple" ; then
    ./configure  \
        CFLAGS="$CFLAGS" \ 
        CXXFLAGS="$CXXFLAGS" \
      --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \      
      --disable-shared \
      --enable-static \
      --with-pic
  fi
], [$BUILD_GOOM])

XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
if expr "X$host_cpu" : 'Xarm.*' > /dev/null; then :; else
  if test "$host_vendor" = "apple" ; then
    ./configure \
      CFLAGS="$CFLAGS" \
      CXXFLAGS="$CXXFLAGS" \
      LDFLAGS="-L/opt/local/lib" \
      LIBS="-lz" \
      --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib \
      --without-xscreensaver \
      --disable-sound \
      --disable-cyclone \
      --disable-fieldlines \
      --disable-flocks \
      --disable-flux \
      --disable-helios \
      --disable-hyperspace \
      --disable-lattice \
      --disable-skyrocket
  else
    ./configure \
      CC="$CC" \
      CXX="$CXX" \
      CFLAGS="$CFLAGS" \ 
      CXXFLAGS="$CXXFLAGS" \
      --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias \      
      --without-xscreensaver \
      --disable-sound \
      --disable-cyclone \
      --disable-fieldlines \
      --disable-flocks \
      --disable-flux \
      --disable-helios \
      --disable-hyperspace \
      --disable-lattice \
      --disable-skyrocket
  fi
fi
], [0])

XB_CONFIG_MODULE([xbmc/lib/libapetag], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common" \
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 --disable-shared
  else
    ./configure \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX"
  fi
], [0])

XB_CONFIG_MODULE([lib/libmodplug], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common" \
    CXXFLAGS="$CXXFLAGS -fno-common" \
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 --with-pic --disable-shared --enable-static
  fi
], [$HOST_NOT_APPLE])

XB_CONFIG_MODULE([lib/libmicrohttpd], [
  if test "$host_vendor" = "apple" ; then
    CFLAGS="$CFLAGS -fno-common" \
    CXXFLAGS="$CXXFLAGS -fno-common" \
    ./configure MACOSX_DEPLOYMENT_TARGET=10.4 --with-pic --disable-shared --enable-static --with-libgcrypt-prefix=/dev/null
  fi
], [$HOST_NOT_APPLE])

XB_CONFIG_MODULE([lib/cpluff], [
  if test "$host_vendor" = "apple" ; then
    ./configure --disable-nls --with-libiconv-prefix=/opt/local --with-libintl-prefix=/opt/local --without-readline CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS"
  else
    ./configure --disable-nls \
      --host=$host_alias \
      --build=$build_alias \
      --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX"
  fi
], [0])

AC_OUTPUT

final_message="$final_message\n  prefix:\t$prefix\n$dashes"
echo -e "$final_message\n"