mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-09 04:19:10 -04:00
cmake: fix getaddrinfo checking error
Using `CheckFunctionExists` on Windows to check `getaddrinfo` will get `not found`, but it actually exists. Using `CheckSymbolExists` with headers will get correct results. Other functions such as `getnameinfo`,`inet_ntop`,etc. have the same issue. (cherry picked from commit 503ba1d36571e3cb01826d15dc462b7d8b5094de)
This commit is contained in:
parent
88384865be
commit
dea51c2e11
@ -57,6 +57,7 @@ include(CheckIncludeFile)
|
|||||||
include(CheckIncludeFiles)
|
include(CheckIncludeFiles)
|
||||||
include(CheckVariableExists)
|
include(CheckVariableExists)
|
||||||
include(CheckSymbolExists)
|
include(CheckSymbolExists)
|
||||||
|
include(CheckSymbolsExist)
|
||||||
include(CheckStructHasMember)
|
include(CheckStructHasMember)
|
||||||
include(CheckCSourceCompiles)
|
include(CheckCSourceCompiles)
|
||||||
include(CheckPrototypeDefinition)
|
include(CheckPrototypeDefinition)
|
||||||
@ -337,7 +338,7 @@ endif()
|
|||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h ws2tcpip.h)
|
set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h ws2tcpip.h)
|
||||||
set(CMAKE_REQUIRED_LIBRARIES ws2_32.lib shell32.lib advapi32.lib)
|
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()
|
endif()
|
||||||
if (SOLARIS)
|
if (SOLARIS)
|
||||||
set(CMAKE_REQUIRED_LIBRARIES socket nsl)
|
set(CMAKE_REQUIRED_LIBRARIES socket nsl)
|
||||||
@ -449,6 +450,24 @@ endif()
|
|||||||
CHECK_INCLUDE_FILE(sys/timerfd.h EVENT__HAVE_SYS_TIMERFD_H)
|
CHECK_INCLUDE_FILE(sys/timerfd.h EVENT__HAVE_SYS_TIMERFD_H)
|
||||||
CHECK_INCLUDE_FILE(errno.h EVENT__HAVE_ERRNO_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_create EVENT__HAVE_EPOLL)
|
||||||
CHECK_FUNCTION_EXISTS(epoll_ctl EVENT__HAVE_EPOLL_CTL)
|
CHECK_FUNCTION_EXISTS(epoll_ctl EVENT__HAVE_EPOLL_CTL)
|
||||||
@ -457,13 +476,7 @@ if(NOT EVENT__DISABLE_CLOCK_GETTIME)
|
|||||||
CHECK_FUNCTION_EXISTS(clock_gettime EVENT__HAVE_CLOCK_GETTIME)
|
CHECK_FUNCTION_EXISTS(clock_gettime EVENT__HAVE_CLOCK_GETTIME)
|
||||||
endif()
|
endif()
|
||||||
CHECK_FUNCTION_EXISTS(fcntl EVENT__HAVE_FCNTL)
|
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(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(kqueue EVENT__HAVE_KQUEUE)
|
||||||
CHECK_FUNCTION_EXISTS(mmap EVENT__HAVE_MMAP)
|
CHECK_FUNCTION_EXISTS(mmap EVENT__HAVE_MMAP)
|
||||||
CHECK_FUNCTION_EXISTS(pipe EVENT__HAVE_PIPE)
|
CHECK_FUNCTION_EXISTS(pipe EVENT__HAVE_PIPE)
|
||||||
@ -478,7 +491,6 @@ CHECK_FUNCTION_EXISTS(splice EVENT__HAVE_SPLICE)
|
|||||||
CHECK_FUNCTION_EXISTS(strlcpy EVENT__HAVE_STRLCPY)
|
CHECK_FUNCTION_EXISTS(strlcpy EVENT__HAVE_STRLCPY)
|
||||||
CHECK_FUNCTION_EXISTS(strsep EVENT__HAVE_STRSEP)
|
CHECK_FUNCTION_EXISTS(strsep EVENT__HAVE_STRSEP)
|
||||||
CHECK_FUNCTION_EXISTS(strtok_r EVENT__HAVE_STRTOK_R)
|
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(vasprintf EVENT__HAVE_VASPRINTF)
|
||||||
CHECK_FUNCTION_EXISTS(sysctl EVENT__HAVE_SYSCTL)
|
CHECK_FUNCTION_EXISTS(sysctl EVENT__HAVE_SYSCTL)
|
||||||
CHECK_FUNCTION_EXISTS(accept4 EVENT__HAVE_ACCEPT4)
|
CHECK_FUNCTION_EXISTS(accept4 EVENT__HAVE_ACCEPT4)
|
||||||
@ -494,11 +506,7 @@ CHECK_FUNCTION_EXISTS(mach_absolute_time EVENT__HAVE_MACH_ABSOLUTE_TIME)
|
|||||||
CHECK_FUNCTION_EXISTS(nanosleep EVENT__HAVE_NANOSLEEP)
|
CHECK_FUNCTION_EXISTS(nanosleep EVENT__HAVE_NANOSLEEP)
|
||||||
CHECK_FUNCTION_EXISTS(usleep EVENT__HAVE_USLEEP)
|
CHECK_FUNCTION_EXISTS(usleep EVENT__HAVE_USLEEP)
|
||||||
CHECK_FUNCTION_EXISTS(timeradd EVENT__HAVE_TIMERADD)
|
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(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(setenv EVENT__HAVE_SETENV)
|
||||||
CHECK_FUNCTION_EXISTS(setrlimit EVENT__HAVE_SETRLIMIT)
|
CHECK_FUNCTION_EXISTS(setrlimit EVENT__HAVE_SETRLIMIT)
|
||||||
CHECK_FUNCTION_EXISTS(umask EVENT__HAVE_UMASK)
|
CHECK_FUNCTION_EXISTS(umask EVENT__HAVE_UMASK)
|
||||||
|
20
cmake/CheckSymbolsExist.cmake
Normal file
20
cmake/CheckSymbolsExist.cmake
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# 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()
|
Loading…
x
Reference in New Issue
Block a user