include(CheckIncludeFiles)
include(CheckVariableExists)
include(CheckSymbolExists)
+include(CheckSymbolsExist)
include(CheckStructHasMember)
include(CheckCSourceCompiles)
include(CheckPrototypeDefinition)
if(WIN32)
set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h ws2tcpip.h)
set(CMAKE_REQUIRED_LIBRARIES ws2_32.lib shell32.lib advapi32.lib)
- set(CMAKE_REQUIRED_DEFINITIONS -FIwinsock2.h -FIws2tcpip.h)
+ set(CMAKE_REQUIRED_DEFINITIONS -FIwinsock2.h -FIws2tcpip.h -D_WIN32_WINNT=0x0600)
endif()
if (SOLARIS)
set(CMAKE_REQUIRED_LIBRARIES socket nsl)
CHECK_INCLUDE_FILE(sys/timerfd.h EVENT__HAVE_SYS_TIMERFD_H)
CHECK_INCLUDE_FILE(errno.h EVENT__HAVE_ERRNO_H)
+if (WIN32)
+ list(APPEND CHECK_SYMBOL_HEADERS winsock2.h ws2tcpip.h)
+endif()
+list(APPEND SYMBOLS_TO_CHECK
+ getaddrinfo
+ getnameinfo
+ getprotobynumber
+ inet_ntop
+ inet_pton
+ strtoll
+ timerclear
+ timercmp
+ timerisset
+ putenv
+)
+CHECK_SYMBOLS_EXIST("${SYMBOLS_TO_CHECK}" "${CHECK_SYMBOL_HEADERS}" "EVENT")
+unset(CHECK_SYMBOL_HEADERS)
+unset(SYMBOLS_TO_CHECK)
CHECK_FUNCTION_EXISTS(epoll_create EVENT__HAVE_EPOLL)
CHECK_FUNCTION_EXISTS(epoll_ctl EVENT__HAVE_EPOLL_CTL)
CHECK_FUNCTION_EXISTS(clock_gettime EVENT__HAVE_CLOCK_GETTIME)
endif()
CHECK_FUNCTION_EXISTS(fcntl EVENT__HAVE_FCNTL)
-CHECK_FUNCTION_EXISTS(getaddrinfo EVENT__HAVE_GETADDRINFO)
-CHECK_FUNCTION_EXISTS(getnameinfo EVENT__HAVE_GETNAMEINFO)
CHECK_FUNCTION_EXISTS(gettimeofday EVENT__HAVE_GETTIMEOFDAY)
-CHECK_FUNCTION_EXISTS(getprotobynumber EVENT__HAVE_GETPROTOBYNUMBER)
-CHECK_FUNCTION_EXISTS(getservbyname EVENT__HAVE_GETSERVBYNAME)
-CHECK_FUNCTION_EXISTS(inet_ntop EVENT__HAVE_INET_NTOP)
-CHECK_FUNCTION_EXISTS(inet_pton EVENT__HAVE_INET_PTON)
CHECK_FUNCTION_EXISTS(kqueue EVENT__HAVE_KQUEUE)
CHECK_FUNCTION_EXISTS(mmap EVENT__HAVE_MMAP)
CHECK_FUNCTION_EXISTS(pipe EVENT__HAVE_PIPE)
CHECK_FUNCTION_EXISTS(strlcpy EVENT__HAVE_STRLCPY)
CHECK_FUNCTION_EXISTS(strsep EVENT__HAVE_STRSEP)
CHECK_FUNCTION_EXISTS(strtok_r EVENT__HAVE_STRTOK_R)
-CHECK_FUNCTION_EXISTS(strtoll EVENT__HAVE_STRTOLL)
CHECK_FUNCTION_EXISTS(vasprintf EVENT__HAVE_VASPRINTF)
CHECK_FUNCTION_EXISTS(sysctl EVENT__HAVE_SYSCTL)
CHECK_FUNCTION_EXISTS(accept4 EVENT__HAVE_ACCEPT4)
CHECK_FUNCTION_EXISTS(nanosleep EVENT__HAVE_NANOSLEEP)
CHECK_FUNCTION_EXISTS(usleep EVENT__HAVE_USLEEP)
CHECK_FUNCTION_EXISTS(timeradd EVENT__HAVE_TIMERADD)
-CHECK_FUNCTION_EXISTS(timerclear EVENT__HAVE_TIMERCLEAR)
-CHECK_FUNCTION_EXISTS(timercmp EVENT__HAVE_TIMERCMP)
CHECK_FUNCTION_EXISTS(timerfd_create EVENT__HAVE_TIMERFD_CREATE)
-CHECK_FUNCTION_EXISTS(timerisset EVENT__HAVE_TIMERISSET)
-CHECK_FUNCTION_EXISTS(putenv EVENT__HAVE_PUTENV)
CHECK_FUNCTION_EXISTS(setenv EVENT__HAVE_SETENV)
CHECK_FUNCTION_EXISTS(setrlimit EVENT__HAVE_SETRLIMIT)
CHECK_FUNCTION_EXISTS(umask EVENT__HAVE_UMASK)
--- /dev/null
+# Check if each symbol in the symbol list exists,
+# and define PREFIX__HAVE_SYMNAME to 1 if yes.
+#
+
+include(CheckSymbolExists)
+
+# SYMLIST: list of symbols to check
+# HEADERS: header files to be included in check code
+# PREFIX: the prefix of definition
+macro(CHECK_SYMBOLS_EXIST SYMLIST HEADERS PREFIX)
+ foreach(SYMNAME ${SYMLIST})
+ string(TOUPPER "${SYMNAME}" SYMNAME_UPPER)
+ if("${PREFIX}" STREQUAL "")
+ set(HAVE_SYM_DEF "HAVE_${SYMNAME_UPPER}")
+ else()
+ set(HAVE_SYM_DEF "${PREFIX}__HAVE_${SYMNAME_UPPER}")
+ endif()
+ CHECK_SYMBOL_EXISTS(${SYMNAME} "${HEADERS}" ${HAVE_SYM_DEF})
+ endforeach()
+endmacro()