]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Add cmake support for DBUS_HAVE_LINUX_EPOLL
authorRalf Habacker <ralf.habacker@freenet.de>
Sat, 20 Oct 2018 20:22:20 +0000 (22:22 +0200)
committerRalf Habacker <ralf.habacker@freenet.de>
Wed, 24 Oct 2018 08:03:29 +0000 (10:03 +0200)
Reviewed-by: Simon McVittie <smcv@collabora.com>
Bug: https://gitlab.freedesktop.org/dbus/dbus/merge_requests/18

cmake/ConfigureChecks.cmake
cmake/config.h.cmake
cmake/dbus/CMakeLists.txt

index 1b767e0d1cc545f29c6df58219e5f0b57d33e2b8..b45ab7635f4d4df3d8144727b69f837e67e96b47 100644 (file)
@@ -3,6 +3,7 @@ include(CheckIncludeFiles)
 include(CheckSymbolExists)
 include(CheckStructMember)
 include(CheckTypeSize)
+include(CheckCSourceCompiles)
 
 check_include_file(alloca.h     HAVE_ALLOCA_H)
 check_include_file(byteswap.h     HAVE_BYTESWAP_H)
@@ -69,6 +70,15 @@ check_symbol_exists(setrlimit    "sys/resource.h;sys/time.h" HAVE_SETRLIMIT)
 
 check_struct_member(cmsgcred cmcred_pid "sys/types.h;sys/socket.h" HAVE_CMSGCRED)   #  dbus-sysdeps.c
 
+CHECK_C_SOURCE_COMPILES("
+#ifndef __linux__
+#error This is not Linux
+#endif
+#include <sys/epoll.h>
+int main() {
+epoll_create1 (EPOLL_CLOEXEC);
+}" DBUS_HAVE_LINUX_EPOLL)
+
 # missing:
 # DBUS_HAVE_GCC33_GCOV
 
index c296c05ad171f06380510d99fec90db87d59721f..71a0283790b4887b12cfe4bc6b4ae45902e121b2 100644 (file)
 #cmakedefine HAVE_SETRLIMIT 1
 #cmakedefine HAVE_UNIX_FD_PASSING 1
 
+/* Define to use epoll(4) on Linux */
+#cmakedefine DBUS_HAVE_LINUX_EPOLL 1
+
 // structs
 /* Define to 1 if you have struct cmsgred */
 #cmakedefine    HAVE_CMSGCRED 1
index 33f2be600d0887a4110feab85462895f49c07025..6c11a4cebabcb0057d7d5926df425c89109e9e22 100644 (file)
@@ -233,6 +233,13 @@ else (WIN32)
        )
 endif (WIN32)
 
+if(DBUS_HAVE_LINUX_EPOLL)
+        set(DBUS_UTIL_SOURCES
+                ${DBUS_UTIL_SOURCES}
+                ${DBUS_DIR}/dbus-socket-set-epoll.c
+        )
+endif()
+
 set(libdbus_SOURCES
        ${DBUS_LIB_SOURCES}
        ${DBUS_SHARED_SOURCES}