summaryrefslogtreecommitdiff
path: root/m4/input.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/input.m4')
-rw-r--r--m4/input.m4280
1 files changed, 280 insertions, 0 deletions
diff --git a/m4/input.m4 b/m4/input.m4
new file mode 100644
index 000000000..76ad12ad9
--- /dev/null
+++ b/m4/input.m4
@@ -0,0 +1,280 @@
+dnl -------------
+dnl Input Plugins
+dnl -------------
+AC_DEFUN([XINE_INPUT_PLUGINS], [
+ dnl Setup defaults for the target operating system. For example, v4l is
+ dnl only ever available on Linux, so don't bother checking for it unless
+ dnl explicitly requested to do so on other operating systems.
+ dnl Notes:
+ dnl - dvb is Linux only
+ dnl - v4l is Linux only
+
+ default_enable_dvb=disable
+ default_enable_gnomevfs=enable
+ default_enable_samba=enable
+ default_enable_v4l=disable
+ default_enable_vcd=enable
+ default_enable_vcdo=disable
+
+ default_with_internal_vcdlibs=without
+
+ case "$host_os" in
+ cygwin* | mingw*)
+ default_enable_gnomevfs=disable
+ default_enable_samba=disable
+ ;;
+ darwin*)
+ default_enable_gnomevfs=disable
+ default_enable_samba=disable
+ ;;
+ freebsd*)
+ default_enable_vcdo=enable
+ ;;
+ linux*)
+ default_enable_dvb=enable
+ default_enable_v4l=enable
+ default_enable_vcdo=enable
+ ;;
+ solaris*)
+ default_enable_vcdo=enable
+ ;;
+ esac
+
+ dnl dvb
+ AC_ARG_ENABLE([dvb],
+ [AS_HELP_STRING([--enable-dvb], [Enable support for the DVB plugin (Linux only)])],
+ [test x"$enableval" != x"no" && enable_dvb="yes"],
+ [test $default_enable_dvb = disable && enable_dvb="no"])
+ if test x"$enable_dvb" != x"no"; then
+ case "$host_os" in
+ linux*) have_dvb=yes ;;
+ *) have_dvb=no ;;
+ esac
+ if test x"$enable_dvb" = x"yes" && test x"$have_dvb" != x"yes"; then
+ AC_MSG_ERROR([DVB support requested, but DVB not found])
+ fi
+ fi
+ AM_CONDITIONAL([ENABLE_DVB], [test x"$have_dvb" = x"yes"])
+
+
+ dnl gnome-vfs
+ AC_ARG_ENABLE([gnomevfs],
+ [AS_HELP_STRING([--enable-gnomevfs], [Enable support for the Gnome-VFS plugin])],
+ [test x"$enableval" != x"no" && enable_gnomevfs="yes"],
+ [test $default_enable_gnomevfs = disable && enable_gnomevfs="no"])
+ if test x"$enable_gnomevfs" != x"no"; then
+ PKG_CHECK_MODULES([GNOME_VFS], [gnome-vfs-2.0], [have_gnomevfs=yes], [have_gnome_vfs=no])
+ if test x"$enable_gnomevfs" = x"yes" && test x"$have_gnomevfs" != x"yes"; then
+ AC_MSG_ERROR([Gnome-VFS support requested, but Gnome-VFS not found])
+ fi
+ fi
+ AM_CONDITIONAL([ENABLE_GNOME_VFS], [test x"$have_gnomevfs" = x"yes"])
+
+
+ dnl libsmbclient
+ AC_ARG_ENABLE([samba],
+ [AS_HELP_STRING([--enable-samba], [Enable support for the Samba plugin])],
+ [test x"$enableval" != x"no" && enable_samba="yes"],
+ [test $default_enable_samba = disable && enable_samba="no"])
+ if test x"$enable_samba" != x"no"; then
+ AC_CHECK_LIB([smbclient], [smbc_init],
+ [AC_CHECK_HEADERS([libsmbclient.h], [have_samba=yes LIBSMBCLIENT_LIBS="-lsmbclient"])])
+ AC_SUBST(LIBSMBCLIENT_LIBS)
+ if test x"$enable_samba" = x"yes" && test x"$have_samba" != x"yes"; then
+ AC_MSG_ERROR([Samba support requested, but Samba not found])
+ fi
+ fi
+ AM_CONDITIONAL([ENABLE_LIBSMBCLIENT], [test x"$have_samba" = x"yes"])
+
+
+ dnl video-for-linux (v4l)
+ AC_ARG_ENABLE([v4l],
+ [AS_HELP_STRING([--enable-v4l], [Enable Video4Linux support])],
+ [test x"$enableval" != x"no" && enable_v4l="yes"],
+ [test $default_enable_v4l = disable && enable_v4l="no"])
+ if test x"$enable_v4l" != x"no"; then
+ AC_CHECK_HEADERS([linux/videodev.h], [have_v4l=yes], [have_v4l=no])
+ AC_CHECK_HEADERS([asm/types.h])
+ if test x"$enable_v4l" = x"yes" && test x"$have_v4l" != x"yes"; then
+ AC_MSG_ERROR([Video4Linux support requested, but prerequisite headers not found.])
+ fi
+ fi
+ AM_CONDITIONAL([ENABLE_V4L], [test x"$have_v4l" = x"yes"])
+
+
+ dnl dvdnav
+ dnl XXX: This could be cleaned up so that code does not have to ifdef so much
+ AC_ARG_WITH([external-dvdnav],
+ [AS_HELP_STRING([--with-external-dvdnav], [Use external dvdnav library (not recommended)])],
+ [test x"$withval" != x"no" && with_external_dvdnav="yes"], [with_external_dvdnav="no"])
+ if test x"$with_external_dvdnav" != x"no"; then
+ ACX_PACKAGE_CHECK([DVDNAV], [0.1.9], [dvdnav-config],
+ [AC_DEFINE([HAVE_DVDNAV], 1, [Define this if you have a suitable version of libdvdnav])],
+ [AC_MSG_RESULT([*** no usable version of libdvdnav found, using internal copy ***])])
+ else
+ AC_MSG_RESULT([Using included DVDNAV support])
+ fi
+ AM_CONDITIONAL([WITH_EXTERNAL_DVDNAV], [test x"$with_external_dvdnav" != x"no"])
+
+
+ dnl Video CD
+ dnl XXX: This could be cleaned up so that code does not have it ifdef so much
+ AC_ARG_ENABLE([vcd],
+ [AS_HELP_STRING([--enable-vcd], [Enable VCD (VideoCD) support])],
+ [test x"$enableval" != x"no" && enable_vcd="yes"],
+ [test $default_enable_vcd = disable && enable_vcd="no"])
+ AC_ARG_WITH([internal-vcdlibs],
+ [AS_HELP_STRING([--with-internal-vcdlibs], [force using internal libcdio/libvcd/libvcdinfo])],
+ [test x"$withval" != x"no" && with_internal_vcdlibs="yes"],
+ [test $default_with_internal_vcdlibs = without && with_internal_vcdlibs="no"])
+ if test x"$enable_vcd" != x"no"; then
+ dnl check twice - fallback is to use internal vcdlibs
+ if test x"$with_internal_vcdlibs" = x"no"; then
+ PKG_CHECK_MODULES([LIBCDIO], [libcdio >= 0.71], [], [with_internal_vcdlibs=yes])
+ PKG_CHECK_MODULES([LIBVCDINFO], [libvcdinfo >= 0.7.23], [], [with_internal_vcdlibs=yes])
+ if test x"$with_internal_vcdlibs" = x"yes"; then
+ AC_MSG_RESULT([Using included libcdio/libvcdinfo support])
+ fi
+ fi
+ if test x"$with_internal_vcdlibs" = x"no"; then
+ AC_DEFINE([HAVE_VCDNAV], 1, [Define this if you use external libcdio/libvcdinfo])
+ else
+ AC_DEFINE_UNQUOTED([HOST_ARCH], ["$host_os/$host_cpu"], [host os/cpu identifier])
+ AC_DEFINE([_DEVELOPMENT_], [], [enable warnings about being development release])
+
+ dnl
+ dnl bitfield order
+ dnl
+ AC_MSG_CHECKING([bitfield ordering in structs])
+
+ dnl basic compile test for all platforms
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ struct { char bit_0:1, bit_12:2, bit_345:3, bit_67:2; }
+ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+ __attribute__((packed))
+ #endif
+ bf = { 1,1,1,1 };
+ switch (0) case 0: case sizeof(bf) == 1:;]])],
+ [], [AC_MSG_ERROR([compiler doesn't support bitfield structs])])
+
+
+ dnl run test
+ AC_RUN_IFELSE([[
+ int main() {
+ struct { char bit_0:1, bit_12:2, bit_345:3, bit_67:2; }
+ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+ __attribute__((packed))
+ #endif
+ bf = { 1,1,1,1 };
+ if (sizeof (bf) != 1) return 1;
+ return *((unsigned char*) &bf) != 0x4b;
+ }]], [bf_lsbf=1], [
+ AC_RUN_IFELSE([[
+ int main() {
+ struct { char bit_0:1, bit_12:2, bit_345:3, bit_67:2; }
+ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+ __attribute__((packed))
+ #endif
+ bf = { 1,1,1,1 };
+ if (sizeof (bf) != 1) return 1;
+ return *((unsigned char*) &bf) != 0xa5;
+ }]], [bf_lsbf=0], [AC_MSG_ERROR([unsupported bitfield ordering])])],
+ [case "$host" in
+ *-*-mingw32* | *-*-cygwin* | i?86-* | k?-* | athlon-* | pentium*- | x86_64-*)
+ bf_lsbf=1
+ ;;
+ universal-*-darwin*)
+ bf_lsbf=2
+ ;;
+ powerpc-* | powerpc64-* | ppc-* | sparc*-* | mips-*)
+ bf_lsbf=0
+ ;;
+ *)
+ AC_MSG_RESULT([unknown])
+ AC_MSG_ERROR([value of bitfield test isn't known for $host
+ *********************************************************************
+ Value of bitfield test can't be found out for cross-compiling and we
+ don't know its value for host "$host".
+
+ Because it's needed for VCD plugin, disable VCD by configure option
+ --disable-vcd or use external VCD library.
+ *********************************************************************])
+ ;;
+ esac])
+
+ if test "x$cross_compiling" = "xyes"; then
+ TEXT=" (guessed)"
+ else
+ TEXT=""
+ fi
+ if test "x$bf_lsbf" = "x1"; then
+ AC_MSG_RESULT([LSBF${TEXT}])
+ AC_DEFINE([BITFIELD_LSBF], [], [compiler does lsbf in struct bitfields])
+ else
+ if test "x$bf_lsbf" = "x2"; then
+ AC_MSG_RESULT([indeterminate (universal build)])
+ else
+ AC_MSG_RESULT([MSBF${TEXT}])
+ fi
+ fi
+
+ LIBCDIO_CFLAGS='-I$(top_srcdir)/src/input/vcd/libcdio'
+ LIBCDIO_LIBS='$(top_builddir)/src/input/vcd/libcdio/libcdio.la'
+ LIBISO9660_LIBS='$(top_builddir)/src/input/vcd/libcdio/libiso9660.la'
+ LIBVCD_CFLAGS='-I$(top_srcdir)/src/input/vcd/libvcd'
+ LIBVCD_LIBS='$(top_builddir)/src/input/vcd/libvcd/libvcd.la'
+ LIBVCDINFO_LIBS='$(top_builddir)/src/input/vcd/libvcd/libvcdinfo.la'
+
+ case "$host_os" in
+ bsdi*)
+ AC_CHECK_HEADERS([dvd.h],
+ [AC_DEFINE([HAVE_BSDI_CDROM], 1, [Define 1 if you have BSDI-type CD-ROM support])])
+ ;;
+ cygwin*)
+ AC_DEFINE([CYGWIN], 1, [Define 1 if you are compiling using cygwin])
+ AC_DEFINE([HAVE_WIN32_CDROM], 1, [Define 1 if you have MinGW CD-ROM support])
+ LIBCDIO_LIBS="$LIBCDIO_LIBS -lwinmm"
+ LIBVCD_LIBS="$LIBVCD_LIBS -lwinmm"
+ ;;
+ darwin*)
+ AC_CHECK_HEADERS([IOKit/IOKitLib.h CoreFoundation/CFBase.h],
+ [AC_DEFINE([HAVE_DARWIN_CDROM], 1, [Define 1 if you have Darwin OS X-type CD-ROM support])])
+ LIBVCD_LIBS="$LIBVCD_LIBS -framework CoreFoundation -framework IOKit"
+ ;;
+ freebsd4.*)
+ AC_DEFINE([HAVE_FREEBSD_CDROM], 1, [Define 1 if you have FreeBSD CD-ROM support])
+ ;;
+ linux*)
+ AC_CHECK_HEADERS([linux/version.h])
+ ;;
+ mingw*)
+ AC_DEFINE([MINGW32], 1, [Define 1 if you are compiling using MinGW])
+ AC_DEFINE([HAVE_WIN32_CDROM], 1, [Define 1 if you have MinGW CD-ROM support])
+ ;;
+ sunos*|sun*|solaris*)
+ AC_CHECK_HEADERS([sys/cdio.h],
+ [AC_DEFINE([HAVE_SOLARIS_CDROM], 1, [Define 1 if you have Solaris CD-ROM support])])
+ ;;
+ *)
+ AC_MSG_WARN([Don't have OS CD-reading support for ${host_os} ... Will use generic support.])
+ ;;
+ esac
+
+ fi
+ fi
+
+ enable_vcdo=no
+ test $default_enable_vcdo = enable && test x"$enable_vcd" != x"no" && enable_vcdo=yes
+
+ AC_DEFINE([LIBCDIO_CONFIG_H], 1, [Get of rid system libcdio build configuration])
+ AC_DEFINE([EXTERNAL_LIBCDIO_CONFIG_H], 1, [Get of rid system libcdio build configuration])
+ AC_SUBST(LIBCDIO_CFLAGS)
+ AC_SUBST(LIBCDIO_LIBS)
+ AC_SUBST(LIBISO9660_LIBS)
+ AC_SUBST(LIBVCD_CFLAGS)
+ AC_SUBST(LIBVCD_LIBS)
+ AC_SUBST(LIBVCDINFO_LIBS)
+ AM_CONDITIONAL([WITH_EXTERNAL_VCDLIBS], [test x"$with_internal_vcdlibs" = x"no"])
+ AM_CONDITIONAL([ENABLE_VCD], [test x"$enable_vcd" != x"no"])
+ AM_CONDITIONAL([ENABLE_VCDO], [test x"$enable_vcdo" != x"no"])
+])