summaryrefslogtreecommitdiff
path: root/m4/input.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/input.m4')
-rw-r--r--m4/input.m4308
1 files changed, 308 insertions, 0 deletions
diff --git a/m4/input.m4 b/m4/input.m4
new file mode 100644
index 000000000..31d22f128
--- /dev/null
+++ b/m4/input.m4
@@ -0,0 +1,308 @@
+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 - v4l is Linux only
+
+ default_enable_gnomevfs=enable
+ default_enable_samba=enable
+ default_enable_v4l=disable
+ default_enable_vcd=enable
+
+ default_with_internal_vcdlibs=without
+
+ case "$host_os" in
+ linux*) default_enable_v4l=enable ;;
+ esac
+
+
+ dnl gnome-vfs
+ AC_ARG_ENABLE([gnomevfs],
+ [AS_HELP_STRING([--disable-gnomevfs], [do not build gnome-vfs support])],
+ [], [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], [no_gnome_vfs=no], [no_gnome_vfs=yes])
+ if test x"$no_gnome_vfs" != x"yes"; then
+ AC_DEFINE([HAVE_GNOME_VFS], 1, [Define this if you have gnome-vfs installed])
+ fi
+ else
+ no_gnome_vfs=yes
+ fi
+ AM_CONDITIONAL([HAVE_GNOME_VFS], [test x"$no_gnome_vfs" != x"yes"])
+
+
+ dnl libsmbclient
+ AC_ARG_ENABLE([samba],
+ [AS_HELP_STRING([--disable-samba], [do not build Samba support])],
+ [], [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_libsmbclient=yes
+ LIBSMBCLIENT_LIBS="-lsmbclient"])])
+ AC_SUBST(LIBSMBCLIENT_LIBS)
+ fi
+ AM_CONDITIONAL([HAVE_LIBSMBCLIENT], [test x"$have_libsmbclient" = x"yes"])
+
+
+ dnl video-for-linux (v4l)
+ AC_ARG_ENABLE([v4l],
+ [AS_HELP_STRING([--disable-v4l], [do not build Video4Linux input plugin])],
+ [], [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"no"; then
+ AC_MSG_ERROR([Video4Linux support requested, but prerequisite headers not found.])
+ fi
+ fi
+ AM_CONDITIONAL([HAVE_V4L], [test x"$have_v4l" = x"yes"])
+
+
+ dnl cdrom ioctls (common for dvdnav and vcd)
+ case "$host_os" in
+ linux*)
+ AC_CHECK_HEADERS([linux/cdrom.h],
+ [AC_DEFINE([HAVE_LINUX_CDROM], 1, [Define 1 if you have Linux-type CD-ROM support])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <linux/cdrom.h>]],
+ [[struct cdrom_generic_command test; int has_timeout = sizeof(test.timeout);]])],
+ [AC_DEFINE([HAVE_LINUX_CDROM_TIMEOUT], [1], [Define 1 if timeout is in cdrom_generic_command struct])])])
+ ;;
+ esac
+ AC_CHECK_HEADERS([sys/dvdio.h sys/cdio.h sys/scsiio.h])
+ AC_CACHE_CHECK([if cdrom ioctls are available], [am_cv_have_cdrom_ioctls],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/ioctl.h>]], [[CDROM_DRIVE_STATUS]])],
+ [am_cv_have_cdrom_ioctls=yes],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/ioctl.h>]], [[CDIOCALLOW]])],
+ [am_cv_have_cdrom_ioctls=yes],
+ [AC_EGREP_CPP([we_have_cdrom_ioctls],
+ [#include <sys/ioctl.h>
+ #ifdef HAVE_SYS_CDIO_H
+ # include <sys/cdio.h>
+ #endif
+ #ifdef HAVE_LINUX_CDROM_H
+ # include <linux/cdrom.h>
+ #endif
+ #if defined(CDROM_DRIVE_STATUS) || defined(CDIOCALLOW) || defined(CDROMCDXA)
+ we_have_cdrom_ioctls
+ #endif],
+ [am_cv_have_cdrom_ioctls=yes], [am_cv_have_cdrom_ioctls=no])])])])
+ have_cdrom_ioctls="$am_cv_have_cdrom_ioctls"
+ if test x"$have_cdrom_ioctls" = x"yes"; then
+ AC_DEFINE([HAVE_CDROM_IOCTLS], 1, [Define this if you have CDROM ioctls])
+ fi
+ AM_CONDITIONAL([HAVE_CDROM_IOCTLS], [test x"$have_cdrom_ioctls" = x"yes"])
+
+
+ dnl dvdnav
+ dnl REVISIT: Something doesn't feel right about this ... I'm not sure it works as intended
+ AC_ARG_WITH([external-dvdnav],
+ [AS_HELP_STRING([--with-external-dvdnav], [use external dvdnav library (not recommended)])],
+ [external_dvdnav="$withval"], [no_dvdnav=yes external_dvdnav=no])
+ if test "x$external_dvdnav" = "xyes"; then
+ AM_PATH_DVDNAV([0.1.9],
+ [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([Use included DVDNAV support])
+ fi
+ AM_CONDITIONAL([HAVE_DVDNAV], [test x"$no_dvdnav" != x"yes"])
+
+
+ dnl Video CD
+ AC_ARG_ENABLE([vcd],
+ [AS_HELP_STRING([--disable-vcd], [do not compile VCD plugin])],
+ [], [test $default_enable_vcd = disable && enable_vcd=no])
+ if test x"$enable_vcd" != x"no"; then
+ AC_ARG_WITH([internal-vcdlibs],
+ [AS_HELP_STRING([--with-internal-vcdlibs], [force using internal libcdio/libvcd/libvcdinfo])],
+ [], [test $default_with_internal_vcdlibs = without && with_internal_vcdlibs=no])
+ 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_internval_vcdlibs=yes])
+ PKG_CHECK_MODULES([LIBVCDINFO], [libvcdinfo >= 0.7.23], [], [with_internval_vcdlibs=yes])
+ if test x"$with_internval_vcdlibs" = x"yes"; then
+ AC_MSG_RESULT([Using included libcdio/libvcdinfo support])
+ fi
+ fi
+ if test "x$with_internval_vcdlibs" = "xno"; 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])
+ AC_CHECK_FUNCS([bzero memcpy])
+
+ AC_CHECK_MEMBER([struct tm.tm_gmtoff],
+ [AC_DEFINE([HAVE_TM_GMTOFF], 1, [Define if struct tm has the tm_gmtoff member.])],
+ [], [#include <time.h>])
+
+ dnl empty_array_size
+ AC_MSG_CHECKING([how to create empty arrays])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[struct { int foo; int bar[]; } baz]])],
+ [empty_array_size=""],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[struct { int foo; int bar[0]; } baz]])],
+ [empty_array_size="0"],
+ [AC_MSG_ERROR([compiler is unable to create empty arrays])])])
+
+ AC_DEFINE_UNQUOTED([EMPTY_ARRAY_SIZE], [$empty_array_size], [what to put between the brackets for empty arrays])
+ AC_MSG_RESULT([[[$empty_array_size]]])
+
+ dnl ISOC99_PRAGMA
+ AC_MSG_CHECKING([whether $CC supports ISOC99 _Pragma()])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[_Pragma("pack(1)")]])],
+ [ISOC99_PRAGMA=yes
+ AC_DEFINE([HAVE_ISOC99_PRAGMA], [], [Supports ISO _Pragma() macro])],
+ [ISOC99_PRAGMA=no])
+ AC_MSG_RESULT([$ISOC99_PRAGMA])
+
+ AC_CHECK_HEADERS([errno.h fcntl.h glob.h stdbool.h])
+ if test x"$ac_cv_header_stdint_h" != x"yes"; then
+ AC_CHECK_SIZEOF([int], 4)
+ AC_CHECK_SIZEOF([long], 4)
+ AC_CHECK_SIZEOF([long long], 8)
+ fi
+
+ 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
+
+ dnl REVISIT: CFLAGS stuff here is wrong; it should be CPPFLAGS
+ 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])])
+ ;;
+ 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
+
+ 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([HAVE_VCDNAV], [test x"$with_internval_vcdlibs" = x"no"])
+ AM_CONDITIONAL([ENABLE_VCD], [test x"$enable_vcd" = x"yes"])
+])
+
+
+
+
+
+
+
+
+