Author: astitcher
Date: Tue Feb 21 22:44:03 2012
New Revision: 1292066

URL: http://svn.apache.org/viewvc?rev=1292066&view=rev
Log:
QPID-3571: A generic Posix poller implementation
Wired manual selection of poll/epoll implementations
into autoconf/cmake.

Modified:
    qpid/trunk/qpid/cpp/configure.ac
    qpid/trunk/qpid/cpp/src/CMakeLists.txt
    qpid/trunk/qpid/cpp/src/Makefile.am

Modified: qpid/trunk/qpid/cpp/configure.ac
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/configure.ac?rev=1292066&r1=1292065&r2=1292066&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/configure.ac (original)
+++ qpid/trunk/qpid/cpp/configure.ac Tue Feb 21 22:44:03 2012
@@ -448,7 +448,7 @@ AC_ARG_WITH([poller],
  [AS_HELP_STRING([--with-poller], [The low level poller implementation: 
poll/solaris-ecf/epoll])],
  [case ${withval} in
   poll)
-   AC_CHECK_HEADERS([sys/poll.h],[poller=no],[AC_MSG_ERROR([Can't find poll.h 
header file for poll])])
+   AC_CHECK_HEADERS([sys/poll.h],[poller=poll],[AC_MSG_ERROR([Can't find 
poll.h header file for poll])])
    ;;
   solaris-ecf)
    AC_CHECK_HEADERS([port.h],[poller=solaris-ecf],[AC_MSG_ERROR([Can't find 
port.h header file for solaris-ecf])])
@@ -458,14 +458,17 @@ AC_ARG_WITH([poller],
    ;;
  esac],
  [
-  AC_CHECK_HEADERS([sys/poll.h],[poller=no],)
-  AC_CHECK_HEADERS([port.h],[poller=solaris-ecf],)
+  # We check for poll first so that it is overridden
+  AC_CHECK_HEADERS([sys/poll.h],[poller=poll],)
+  # Not currently supported - WIP
+  #AC_CHECK_HEADERS([port.h],[poller=solaris-ecf],)
   AC_CHECK_HEADERS([sys/epoll.h],[poller=epoll],)
  ]
 )
 
-AM_CONDITIONAL([HAVE_ECF], [test x$poller = xsolaris-ecf])
-AM_CONDITIONAL([HAVE_EPOLL], [test x$poller = xepoll])
+AM_CONDITIONAL([USE_ECF], [test x$poller = xsolaris-ecf])
+AM_CONDITIONAL([USE_POLL], [test x$poller = xpoll])
+AM_CONDITIONAL([USE_EPOLL], [test x$poller = xepoll])
 
 #Filter not implemented or invalid mechanisms
 if test $poller = xno; then

Modified: qpid/trunk/qpid/cpp/src/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/CMakeLists.txt?rev=1292066&r1=1292065&r2=1292066&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/CMakeLists.txt (original)
+++ qpid/trunk/qpid/cpp/src/CMakeLists.txt Tue Feb 21 22:44:03 2012
@@ -487,6 +487,19 @@ if (NOT BUILD_PROBES)
   set (HAVE_SYS_SDT_H 0)
 endif (NOT BUILD_PROBES)
 
+# Check for poll/epoll header files
+check_include_files(sys/poll.h HAVE_POLL)
+check_include_files(sys/epoll.h HAVE_EPOLL)
+
+# Set default poller implementation (check from general to specific to allow 
overriding)
+if (HAVE_POLL)
+  set(poller_default poll)
+endif (HAVE_POLL)
+if (HAVE_EPOLL)
+  set(poller_default epoll)
+endif (HAVE_EPOLL)
+set(POLLER ${poller_default} CACHE STRING "Poller implementation (poll/epoll)")
+
 # If not windows ensure that we have uuid library
 if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
   CHECK_LIBRARY_EXISTS (uuid uuid_compare "" HAVE_UUID)
@@ -750,9 +763,18 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows
 
   # POSIX (Non-Windows) platforms have a lot of overlap in sources; the only
   # major difference is the poller module.
-  if (CMAKE_SYSTEM_NAME STREQUAL Linux)
+  if (POLLER STREQUAL poll)
+    set (qpid_poller_module
+      qpid/sys/posix/PosixPoller.cpp
+    )
+  elseif (POLLER STREQUAL epoll)
     set (qpid_poller_module
       qpid/sys/epoll/EpollPoller.cpp
+    )
+  endif (POLLER STREQUAL poll)
+
+  if (CMAKE_SYSTEM_NAME STREQUAL Linux)
+    set (qpid_system_module
       qpid/sys/posix/SystemInfo.cpp
     )
     add_definitions(-pthread)
@@ -764,13 +786,12 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows
 
   set (qpidtypes_platform_SOURCES)
   set (qpidtypes_platform_LIBS
-    uuid
-    ${Boost_SYSTEM_LIBRARY}
+       uuid
+       ${Boost_SYSTEM_LIBRARY}
   )
 
   if (CMAKE_SYSTEM_NAME STREQUAL SunOS)
-    set (qpid_poller_module
-      qpid/sys/posix/PosixPoller.cpp
+    set (qpid_system_module
       qpid/sys/solaris/SystemInfo.cpp
     )
 #   On Sun we want -lpthread -lthread as the 2nd last and last libs passed to 
linker
@@ -799,6 +820,7 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows
     qpid/sys/posix/Time.cpp
     qpid/SaslFactory.cpp
 
+    ${qpid_system_module}
     ${qpid_poller_module}
   )
   set (qpidcommon_platform_LIBS

Modified: qpid/trunk/qpid/cpp/src/Makefile.am
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/Makefile.am?rev=1292066&r1=1292065&r2=1292066&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/Makefile.am (original)
+++ qpid/trunk/qpid/cpp/src/Makefile.am Tue Feb 21 22:44:03 2012
@@ -183,11 +183,15 @@ nobase_include_HEADERS +=                 \
   ../include/qpid/sys/posix/Time.h             \
   ../include/qpid/sys/posix/check.h
 
-if HAVE_EPOLL
+if USE_EPOLL
   poller = qpid/sys/epoll/EpollPoller.cpp
 endif
 
-if HAVE_ECF
+if USE_POLL
+  poller = qpid/sys/posix/PosixPoller.cpp
+endif
+
+if USE_ECF
   poller = qpid/sys/solaris/ECFPoller.cpp
 endif
 



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to