cmake: align dir watch backend detection with autotools
authorChengwei Yang <chengwei.yang@intel.com>
Fri, 28 Jun 2013 02:48:15 +0000 (10:48 +0800)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Fri, 28 Jun 2013 10:55:52 +0000 (11:55 +0100)
Signed-off-by: Chengwei Yang <chengwei.yang@intel.com>
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=66257

cmake/CMakeLists.txt
cmake/bus/CMakeLists.txt

index 6c17461..45d90c9 100644 (file)
@@ -267,6 +267,27 @@ if(NOT MSVC)
     endif(DBUS_GCOV_ENABLED)
 endif(NOT MSVC)
 
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+    option (DBUS_BUS_ENABLE_INOTIFY "build with inotify support (linux only)" ON)
+    if(DBUS_BUS_ENABLE_INOTIFY)
+        check_include_file(sys/inotify.h HAVE_SYS_INOTIFY_H)
+        if(NOT HAVE_SYS_INOTIFY_H)
+            message(FATAL_ERROR "sys/inotify.h not found!")
+        endif(NOT HAVE_SYS_INOTIFY_H)
+    endif(DBUS_BUS_ENABLE_INOTIFY)
+elseif("${CMAKE_SYSTEM_NAME}" MATCHES ".*BSD")
+    option (DBUS_BUS_ENABLE_KQUEUE "build with kqueue support (FreeBSD only)" ON)
+    if(DBUS_BUS_ENABLE_KQUEUE)
+        # cmake check a header by compiling a test program with
+        # the header, sys/event.h needs stdint.h and sys/types.h
+        # to work.
+        check_include_files("stdint.h;sys/types.h;sys/event.h" HAVE_SYS_EVENT_H)
+        if(NOT HAVE_SYS_EVENT_H)
+            message(FATAL_ERROR "sys/event.h not found!")
+        endif(NOT HAVE_SYS_EVENT_H)
+    endif(DBUS_BUS_ENABLE_KQUEUE)
+endif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+
 STRING(TOUPPER ${CMAKE_SYSTEM_NAME} sysname)
 if("${sysname}" MATCHES ".*SOLARIS.*")
     option (HAVE_CONSOLE_OWNER_FILE "enable console owner file (solaris only)" ON)
@@ -511,6 +532,8 @@ message("        Building w/o assertions:  ${DBUS_DISABLE_ASSERT}             ")
 message("        Building w/o checks:      ${DBUS_DISABLE_CHECKS}              ")
 message("        Building bus stats API:   ${DBUS_ENABLE_STATS}                ")
 message("        installing system libs:   ${DBUS_INSTALL_SYSTEM_LIBS}         ")
+message("        Building inotify support: ${DBUS_BUS_ENABLE_INOTIFY}          ")
+message("        Building kqueue support: ${DBUS_BUS_ENABLE_KQUEUE}            ")
 message("        Building Doxygen docs:    ${DBUS_ENABLE_DOXYGEN_DOCS}         ")
 message("        Building XML docs:        ${DBUS_ENABLE_XML_DOCS}             ")
 message("        Daemon executable name:   ${DBUS_DAEMON_NAME}")
index f2ea55e..6fa19f2 100644 (file)
@@ -31,9 +31,13 @@ ENDFOREACH(FILE)
 
 SET (XML_SOURCES ${BUS_DIR}/config-loader-expat.c)
 
-# after next cvs update
-#set (DIR_WATCH_SOURCE ${BUS_DIR}/dir-watch-default.c)
-set (DIR_WATCH_SOURCE )
+if (DBUS_BUS_ENABLE_INOTIFY)
+    set (DIR_WATCH_SOURCE ${BUS_DIR}/dir-watch-inotify.c)
+elseif (DBUS_BUS_ENABLE_KQUEUE)
+    set (DIR_WATCH_SOURCE ${BUS_DIR}/dir-watch-kqueue.c)
+else (DBUS_BUS_ENABLE_INOTIFY)
+    set (DIR_WATCH_SOURCE ${BUS_DIR}/dir-watch-default.c)
+endif (DBUS_BUS_ENABLE_INOTIFY)
 
 set (BUS_SOURCES 
        ${BUS_DIR}/activation.c                         
@@ -42,14 +46,13 @@ set (BUS_SOURCES
        ${BUS_DIR}/bus.h                                        
        ${BUS_DIR}/config-parser.c                              
        ${BUS_DIR}/config-parser.h
-    ${BUS_DIR}/config-parser-common.c
-    ${BUS_DIR}/config-parser-common.h
+       ${BUS_DIR}/config-parser-common.c
+       ${BUS_DIR}/config-parser-common.h
 #    ${BUS_DIR}/config-parser-trivial.c
        ${BUS_DIR}/connection.c
        ${BUS_DIR}/connection.h                         
        ${BUS_DIR}/desktop-file.c                               
        ${BUS_DIR}/desktop-file.h                               
-       ${BUS_DIR}/dir-watch-default.c                          
        ${BUS_DIR}/dir-watch.h                          
        ${BUS_DIR}/dispatch.c                           
        ${BUS_DIR}/dispatch.h                           
@@ -77,7 +80,7 @@ if(DBUS_ENABLE_STATS)
                ${BUS_DIR}/stats.c
                ${BUS_DIR}/stats.h
        )
-endif()
+endif(DBUS_ENABLE_STATS)
 
 include_directories(${XML_INCLUDE_DIR})