#### Default values
-want_inotify="no"
-
requirements_pc_crypto=""
requirements_pc_deps_crypto=""
requirements_libs_crypto=""
MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
MODULE_EXT=".dll"
;;
- linux*)
- want_inotify="yes"
- MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
- MODULE_EXT=".so"
- ;;
*)
MODULE_ARCH="$host_os-$host_cpu-v_maj.v_min.v_mic"
MODULE_EXT=".so"
unistd.h \
])
-have_inotify="no"
-if test "x${want_inotify}" = "xyes" ; then
- AC_CHECK_HEADER([sys/inotify.h],
- [
- AC_DEFINE([HAVE_INOTIFY], [1], [File monitoring with Inotify])
- have_inotify="yes"
- ],
- [have_inotify="no"])
-fi
-AM_CONDITIONAL([HAVE_INOTIFY], [test "x${have_inotify}" = "xyes"])
-
EFL_CHECK_PATH_MAX
# cserve2 only works on Linux so far.
-if test "x${efl_func_shm_open}" = "xno" -o "x${have_inotify}" = "xno"; then
+if test "x${efl_func_shm_open}" = "xno" ; then
want_evas_cserve2="no"
fi
-AC_DEFINE_IF([EVAS_CSERVE2],
- [test "x${want_evas_cserve2}" = "xyes"],
- [1], [Shared cache server.])
+if test "x${want_evas_cserve2}" = "xyes" ; then
+ AC_CHECK_HEADERS([sys/epoll.h sys/inotify.h sys/signalfd.h],
+ [],
+ [want_evas_cserve2="no"])
+fi
+
+if test "x${want_evas_cserve2}" = "xyes" ; then
+ AC_DEFINE([EVAS_CSERVE2], [1], [Shared cache server.])
+fi
AM_CONDITIONAL([EVAS_CSERVE2], [test "x${want_evas_cserve2}" = "xyes"])
### Configuration
],
[want_poll="yes"])
+AC_ARG_ENABLE([inotify],
+ [AC_HELP_STRING([--disable-inotify],
+ [disable inotify in the ecore_file module. @<:@default=enabled@:>@])],
+ [
+ if test "x${enableval}" = "xyes" ; then
+ want_inotify="yes"
+ else
+ want_inotify="no"
+ fi
+ ],
+ [want_inotify="yes"])
+
AC_ARG_ENABLE([atfile-source],
[AC_HELP_STRING([--disable-atfile-source],
[disable use of atfile source functions as openat and mkdirat @<:@default=detect@:>@])],
### Checks for header files
+have_inotify="no"
+if test "x${want_inotify}" = "xyes" ; then
+ AC_CHECK_HEADER([sys/inotify.h],
+ [
+ AC_DEFINE([HAVE_INOTIFY], [1], [File monitoring with Inotify])
+ have_inotify="yes"
+ ],
+ [have_inotify="no"])
+fi
+
+AC_MSG_CHECKING([whether inotify is to be used for filemonitoring])
+AC_MSG_RESULT(${have_inotify})
+
### Checks for types
### Checks for structures
AC_MSG_RESULT([${have_xattr}])
# Check for inotify specificity
+have_inotify="no"
have_notify_win32="no"
+EIO_CHECK_INOTIFY([have_inotify="yes"], [have_inotify="no"])
EIO_CHECK_NOTIFY_WIN32([have_notify_win32="yes"], [have_notify_win32="no"])
+AM_CONDITIONAL([EIO_HAVE_INOTIFY], [test "x${have_inotify}" = "xyes"])
AM_CONDITIONAL([EIO_HAVE_WINCHANGE], [test "x${have_notify_win32}" = "xyes"])
#### End of Eio
+dnl use: EIO_CHECK_INOTIFY([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+AC_DEFUN([EIO_CHECK_INOTIFY],
+[
+_eio_have_inotify="no"
+
+dnl We need to check if the right inotify version is accessible
+
+dnl It is hard to find a good test on how to check the correct
+dnl inotify version. They changed the headers a lot.
+dnl in kernel 2.6.13 __NR_inotify_init was added to the defined syscalls
+dnl in asm/unistd.h and IN_MOVE_SELF was added to linux/inotify.h
+dnl so with this check you need a very new kernel and kernel-headers!
+
+if ! test "x${have_windows}" = "xyes" ; then
+
+ AC_CHECK_LIB([c], [inotify_init],
+ [
+ AC_DEFINE([HAVE_INOTIFY], [1], [ File monitoring with Inotify ])
+ AC_DEFINE([HAVE_SYS_INOTIFY], [1], [ File monitoring with Inotify - sys/inotify.h ])
+ _eio_have_inotify="yes"
+ ],
+ [
+ AC_TRY_COMPILE(
+ [
+#include <asm/unistd.h>
+#include <linux/inotify.h>
+ ],
+ [
+int a = __NR_inotify_init; int b = IN_MOVE_SELF;
+ ],
+ [
+ AC_DEFINE([HAVE_INOTIFY], [1], [ File monitoring with Inotify ])
+ _eio_have_inotify="yes"
+ ],
+ [_eio_have_inotify="no"])
+ ])
+fi
+
+AC_MSG_CHECKING([whether inotify is to be used for filemonitoring])
+AC_MSG_RESULT([${_eio_have_inotify}])
+
+AS_IF([test "x${_eio_have_inotify}" = "xyes"], [$1], [$2])
+])
+
dnl use: EIO_CHECK_NOTIFY_WIN32([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
AC_DEFUN([EIO_CHECK_NOTIFY_WIN32],
[
#include "eio_private.h"
#include "Eio.h"
-#ifdef HAVE_INOTIFY
+#ifdef HAVE_SYS_INOTIFY
# include <sys/inotify.h>
+#else
+# include <asm/unistd.h>
+# include <linux/inotify.h>
#endif
/*============================================================================*
EIO_INOTIFY_LINE(IN_UNMOUNT, SELF_DELETED, SELF_DELETED)
};
+#ifndef HAVE_SYS_INOTIFY
+static inline int
+inotify_init(void)
+{
+ return syscall(__NR_inotify_init);
+}
+
+static inline int
+inotify_add_watch(int fd, const char *name, __u32 mask)
+{
+ return syscall(__NR_inotify_add_watch, fd, name, mask);
+}
+
+static inline int
+inotify_rm_watch(int fd, __u32 wd)
+{
+ return syscall(__NR_inotify_rm_watch, fd, wd);
+}
+#endif
+
static void
_eio_inotify_del(void *data)
{