From 96e790a5678785ee6b2c1cb6c68048eecf84dacc Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 29 Jan 2010 13:07:26 +0000 Subject: [PATCH] Disable wxUSE_FSWATCHER under Unix if neither inotify nor kqueue is available. Don't define wxUSE_FSWATCHER as 1 in configure if we can't implement it. Also add a check to wx/unix/chkconf.h to verify that we didn't end up with an inconsistent configuration somehow. Closes #11670. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- configure | 38 +++++++++++++++++++++++--------------- configure.in | 35 +++++++++++++++++++++++------------ include/wx/unix/chkconf.h | 11 +++++++++++ 3 files changed, 57 insertions(+), 27 deletions(-) diff --git a/configure b/configure index dd303cc125..14b609c3fe 100755 --- a/configure +++ b/configure @@ -42595,13 +42595,8 @@ fi if test "$wxUSE_FSWATCHER" = "yes"; then - cat >>confdefs.h <<\_ACEOF -#define wxUSE_FSWATCHER 1 -_ACEOF - - SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS fswatcher" - - if test "$wxUSE_UNIX" = "yes"; then + if test "$wxUSE_MSW" != "1"; then + if test "$wxUSE_UNIX" = "yes"; then for ac_header in sys/inotify.h do @@ -42660,12 +42655,12 @@ fi done - if test "$ac_cv_header_sys_inotify_h" = "yes"; then - cat >>confdefs.h <<\_ACEOF + if test "$ac_cv_header_sys_inotify_h" = "yes"; then + cat >>confdefs.h <<\_ACEOF #define wxHAS_INOTIFY 1 _ACEOF - else + else for ac_header in sys/event.h do @@ -42724,17 +42719,30 @@ fi done - if test "$ac_cv_header_sys_event_h" = "yes"; then - cat >>confdefs.h <<\_ACEOF + if test "$ac_cv_header_sys_event_h" = "yes"; then + cat >>confdefs.h <<\_ACEOF #define wxHAS_KQUEUE 1 _ACEOF - else - { echo "$as_me:$LINENO: WARNING: No native wxFileSystemWatcher implementation available for on this platform" >&5 -echo "$as_me: WARNING: No native wxFileSystemWatcher implementation available for on this platform" >&2;} + else + wxUSE_FSWATCHER=no + fi fi + else + wxUSE_FSWATCHER=no fi fi + + if test "$wxUSE_FSWATCHER" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define wxUSE_FSWATCHER 1 +_ACEOF + + SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS fswatcher" + else + { echo "$as_me:$LINENO: WARNING: wxFileSystemWatcher won't be available on this platform" >&5 +echo "$as_me: WARNING: wxFileSystemWatcher won't be available on this platform" >&2;} + fi fi diff --git a/configure.in b/configure.in index bec42d48ff..8e2b6bd584 100644 --- a/configure.in +++ b/configure.in @@ -5562,22 +5562,33 @@ dnl File system watcher checks dnl --------------------------------------------------------------------------- if test "$wxUSE_FSWATCHER" = "yes"; then - AC_DEFINE(wxUSE_FSWATCHER) - SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS fswatcher" - - if test "$wxUSE_UNIX" = "yes"; then - AC_CHECK_HEADERS(sys/inotify.h,,, [AC_INCLUDES_DEFAULT()]) - if test "$ac_cv_header_sys_inotify_h" = "yes"; then - AC_DEFINE(wxHAS_INOTIFY) - else - AC_CHECK_HEADERS(sys/event.h,,, [AC_INCLUDES_DEFAULT()]) - if test "$ac_cv_header_sys_event_h" = "yes"; then - AC_DEFINE(wxHAS_KQUEUE) + dnl wxFileSystemWatcher is always available under MSW but we need either + dnl inotify or kqueue support in the system for it under Unix (this + dnl includes OS X which does have kqueue but no other platforms) + if test "$wxUSE_MSW" != "1"; then + if test "$wxUSE_UNIX" = "yes"; then + AC_CHECK_HEADERS(sys/inotify.h,,, [AC_INCLUDES_DEFAULT()]) + if test "$ac_cv_header_sys_inotify_h" = "yes"; then + AC_DEFINE(wxHAS_INOTIFY) else - AC_MSG_WARN([No native wxFileSystemWatcher implementation available for on this platform]) + AC_CHECK_HEADERS(sys/event.h,,, [AC_INCLUDES_DEFAULT()]) + if test "$ac_cv_header_sys_event_h" = "yes"; then + AC_DEFINE(wxHAS_KQUEUE) + else + wxUSE_FSWATCHER=no + fi fi + else + wxUSE_FSWATCHER=no fi fi + + if test "$wxUSE_FSWATCHER" = "yes"; then + AC_DEFINE(wxUSE_FSWATCHER) + SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS fswatcher" + else + AC_MSG_WARN([wxFileSystemWatcher won't be available on this platform]) + fi fi dnl --------------------------------------------------------------------------- diff --git a/include/wx/unix/chkconf.h b/include/wx/unix/chkconf.h index f1cff704d9..50e56d271c 100644 --- a/include/wx/unix/chkconf.h +++ b/include/wx/unix/chkconf.h @@ -21,6 +21,17 @@ # endif #endif /* wxUSE_CONSOLE_EVENTLOOP */ +#if wxUSE_FSWATCHER +# if !defined(wxHAS_INOTIFY) && !defined(wxHAS_KQUEUE) +# ifdef wxABORT_ON_CONFIG_ERROR +# error "wxFileSystemWatcher requires either inotify() or kqueue()" +# else +# undef wxUSE_FSWATCHER +# define wxUSE_FSWATCHER 0 +# endif +# endif +#endif /* wxUSE_FSWATCHER */ + #if wxUSE_GSTREAMER # if !wxUSE_THREADS # ifdef wxABORT_ON_CONFIG_ERROR -- 2.45.2