diff --git a/CMakeLists.txt b/CMakeLists.txt index 14332700..470df34e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,54 +103,56 @@ set (POLLER "" CACHE STRING "Choose polling system for I/O threads. valid values include (CheckFunctionExists) include (CheckTypeSize) -if (POLLER STREQUAL "") - set (CMAKE_REQUIRED_INCLUDES sys/event.h) - check_function_exists (kqueue HAVE_KQUEUE) - set (CMAKE_REQUIRED_INCLUDES) - if (HAVE_KQUEUE) - set (POLLER "kqueue") - endif() -endif () +if (NOT MSVC) + if (POLLER STREQUAL "") + set (CMAKE_REQUIRED_INCLUDES sys/event.h) + check_function_exists (kqueue HAVE_KQUEUE) + set (CMAKE_REQUIRED_INCLUDES) + if (HAVE_KQUEUE) + set (POLLER "kqueue") + endif() + endif () -if (POLLER STREQUAL "") - set (CMAKE_REQUIRED_INCLUDES sys/epoll.h) - check_function_exists (epoll_create HAVE_EPOLL) - set (CMAKE_REQUIRED_INCLUDES) - if (HAVE_EPOLL) - set (POLLER "epoll") - check_function_exists (epoll_create1 HAVE_EPOLL_CLOEXEC) - if (HAVE_EPOLL_CLOEXEC) - set (ZMQ_IOTHREAD_POLLER_USE_EPOLL_CLOEXEC 1) + if (POLLER STREQUAL "") + set (CMAKE_REQUIRED_INCLUDES sys/epoll.h) + check_function_exists (epoll_create HAVE_EPOLL) + set (CMAKE_REQUIRED_INCLUDES) + if (HAVE_EPOLL) + set (POLLER "epoll") + check_function_exists (epoll_create1 HAVE_EPOLL_CLOEXEC) + if (HAVE_EPOLL_CLOEXEC) + set (ZMQ_IOTHREAD_POLLER_USE_EPOLL_CLOEXEC 1) + endif () endif () endif () -endif () -if (POLLER STREQUAL "") - set (CMAKE_REQUIRED_INCLUDES sys/devpoll.h) - check_type_size ("struct pollfd" DEVPOLL) - set (CMAKE_REQUIRED_INCLUDES) - if (HAVE_DEVPOLL) - set (POLLER "devpoll") + if (POLLER STREQUAL "") + set (CMAKE_REQUIRED_INCLUDES sys/devpoll.h) + check_type_size ("struct pollfd" DEVPOLL) + set (CMAKE_REQUIRED_INCLUDES) + if (HAVE_DEVPOLL) + set (POLLER "devpoll") + endif () endif () -endif () -if (POLLER STREQUAL "") - set (CMAKE_REQUIRED_INCLUDES sys/pollset.h) - check_function_exists (pollset_create HAVE_POLLSET) - set (CMAKE_REQUIRED_INCLUDES) - if (HAVE_POLLSET) - set (POLLER "pollset") - endif() -endif () - -if (POLLER STREQUAL "") - set (CMAKE_REQUIRED_INCLUDES poll.h) - check_function_exists (poll HAVE_POLL) - set (CMAKE_REQUIRED_INCLUDES) - if (HAVE_POLL) - set (POLLER "poll") + if (POLLER STREQUAL "") + set (CMAKE_REQUIRED_INCLUDES sys/pollset.h) + check_function_exists (pollset_create HAVE_POLLSET) + set (CMAKE_REQUIRED_INCLUDES) + if (HAVE_POLLSET) + set (POLLER "pollset") + endif() endif () -endif () + + if (POLLER STREQUAL "") + set (CMAKE_REQUIRED_INCLUDES poll.h) + check_function_exists (poll HAVE_POLL) + set (CMAKE_REQUIRED_INCLUDES) + if (HAVE_POLL) + set (POLLER "poll") + endif () + endif () +endif() if (POLLER STREQUAL "") if (WIN32) @@ -213,18 +215,19 @@ include (CMakeDependentOption) include (CheckCXXSymbolExists) include (CheckSymbolExists) -check_include_files (ifaddrs.h ZMQ_HAVE_IFADDRS) check_include_files (windows.h ZMQ_HAVE_WINDOWS) if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" AND CMAKE_SYSTEM_VERSION STREQUAL "10.0") SET(ZMQ_HAVE_WINDOWS_UWP ON) ADD_DEFINITIONS(-D_WIN32_WINNT=_WIN32_WINNT_WIN10) endif() -check_include_files (sys/uio.h ZMQ_HAVE_UIO) -check_include_files (sys/eventfd.h ZMQ_HAVE_EVENTFD) -if (ZMQ_HAVE_EVENTFD AND NOT CMAKE_CROSSCOMPILING) - zmq_check_efd_cloexec () -endif () - +if (NOT MSVC) + check_include_files (ifaddrs.h ZMQ_HAVE_IFADDRS) + check_include_files (sys/uio.h ZMQ_HAVE_UIO) + check_include_files (sys/eventfd.h ZMQ_HAVE_EVENTFD) + if (ZMQ_HAVE_EVENTFD AND NOT CMAKE_CROSSCOMPILING) + zmq_check_efd_cloexec () + endif () +endif() if (ZMQ_HAVE_WINDOWS) # Cannot use check_library_exists because the symbol is always declared as char(*)(void) @@ -264,25 +267,27 @@ if (WIN32 AND NOT CYGWIN) endif () endif () -set (CMAKE_REQUIRED_LIBRARIES rt) -check_function_exists (clock_gettime HAVE_CLOCK_GETTIME) -set (CMAKE_REQUIRED_LIBRARIES) +if (NOT MSVC) + set (CMAKE_REQUIRED_LIBRARIES rt) + check_function_exists (clock_gettime HAVE_CLOCK_GETTIME) + set (CMAKE_REQUIRED_LIBRARIES) -set (CMAKE_REQUIRED_INCLUDES unistd.h) -check_function_exists (fork HAVE_FORK) -set (CMAKE_REQUIRED_INCLUDES) + set (CMAKE_REQUIRED_INCLUDES unistd.h) + check_function_exists (fork HAVE_FORK) + set (CMAKE_REQUIRED_INCLUDES) -set (CMAKE_REQUIRED_INCLUDES sys/time.h) -check_function_exists (gethrtime HAVE_GETHRTIME) -set (CMAKE_REQUIRED_INCLUDES) + set (CMAKE_REQUIRED_INCLUDES sys/time.h) + check_function_exists (gethrtime HAVE_GETHRTIME) + set (CMAKE_REQUIRED_INCLUDES) -set (CMAKE_REQUIRED_INCLUDES stdlib.h) -check_function_exists (mkdtemp HAVE_MKDTEMP) -set (CMAKE_REQUIRED_INCLUDES) + set (CMAKE_REQUIRED_INCLUDES stdlib.h) + check_function_exists (mkdtemp HAVE_MKDTEMP) + set (CMAKE_REQUIRED_INCLUDES) -set (CMAKE_REQUIRED_INCLUDES sys/socket.h) -check_function_exists (accept4 HAVE_ACCEPT4) -set (CMAKE_REQUIRED_INCLUDES) + set (CMAKE_REQUIRED_INCLUDES sys/socket.h) + check_function_exists (accept4 HAVE_ACCEPT4) + set (CMAKE_REQUIRED_INCLUDES) +endif() add_definitions (-D_REENTRANT -D_THREAD_SAFE) add_definitions (-DZMQ_CUSTOM_PLATFORM_HPP) @@ -314,31 +319,36 @@ if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") zmq_check_cxx_flag_prepend ("-Wextra") endif () -# TODO: why is -Wno-long-long defined differently than in configure.ac? -zmq_check_cxx_flag_prepend ("-Wno-long-long") -zmq_check_cxx_flag_prepend ("-Wno-uninitialized") - option (LIBZMQ_PEDANTIC "" ON) option (LIBZMQ_WERROR "" OFF) -if (LIBZMQ_PEDANTIC) - zmq_check_cxx_flag_prepend ("-pedantic") +# TODO: why is -Wno-long-long defined differently than in configure.ac? +if (NOT MSVC) + zmq_check_cxx_flag_prepend ("-Wno-long-long") + zmq_check_cxx_flag_prepend ("-Wno-uninitialized") - if (${CMAKE_CXX_COMPILER_ID} MATCHES "Intel") - zmq_check_cxx_flag_prepend ("-strict-ansi") - endif () + if (LIBZMQ_PEDANTIC) + zmq_check_cxx_flag_prepend ("-pedantic") - if (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro") - zmq_check_cxx_flag_prepend ("-compat=5") - endif () -endif () + if (${CMAKE_CXX_COMPILER_ID} MATCHES "Intel") + zmq_check_cxx_flag_prepend ("-strict-ansi") + endif () + + if (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro") + zmq_check_cxx_flag_prepend ("-compat=5") + endif () + endif () +endif() if (LIBZMQ_WERROR) - zmq_check_cxx_flag_prepend ("-Werror") - zmq_check_cxx_flag_prepend ("/WX") - if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - zmq_check_cxx_flag_prepend ("-errwarn=%all") - endif() + if(MSVC) + zmq_check_cxx_flag_prepend ("/WX") + else() + zmq_check_cxx_flag_prepend ("-Werror") + if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + zmq_check_cxx_flag_prepend ("-errwarn=%all") + endif() + endif() endif () if (CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc") @@ -372,7 +382,7 @@ endif () #----------------------------------------------------------------------------- -if (NOT CMAKE_CROSSCOMPILING) +if (NOT CMAKE_CROSSCOMPILING AND NOT MSVC) zmq_check_sock_cloexec () zmq_check_o_cloexec () zmq_check_so_bindtodevice ()