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