From 99c2e7e5542380bcf416fdbcf4f895c158f5cede Mon Sep 17 00:00:00 2001 From: Sergei Nikulov Date: Tue, 15 Jan 2019 12:50:18 +0300 Subject: [PATCH] cmake: updated check for HAVE_POLL_FINE to match autotools --- CMake/OtherTests.cmake | 42 +++++++++++++++++++++++++++++++++++------- CMakeLists.txt | 9 ++------- docs/KNOWN_BUGS | 3 --- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/CMake/OtherTests.cmake b/CMake/OtherTests.cmake index ce6d3e13a..c180a5888 100644 --- a/CMake/OtherTests.cmake +++ b/CMake/OtherTests.cmake @@ -177,20 +177,48 @@ int main(void) { return 0; }" HAVE_STRUCT_TIMEVAL) - -include(CheckCSourceRuns) -# See HAVE_POLL in CMakeLists.txt for why poll is disabled on macOS -if(NOT APPLE) - set(CMAKE_REQUIRED_FLAGS) +if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) + # if not cross-compilation... + include(CheckCSourceRuns) + set(CMAKE_REQUIRED_FLAGS "") if(HAVE_SYS_POLL_H) set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H") + elseif(HAVE_POLL_H) + set(CMAKE_REQUIRED_FLAGS "-DHAVE_POLL_H") endif() check_c_source_runs(" + #include + #include + #ifdef HAVE_SYS_POLL_H # include + #elif HAVE_POLL_H + # include #endif - int main(void) { - return poll((void *)0, 0, 10 /*ms*/); + + int main(void) + { + if(0 != poll(0, 0, 10)) { + return 1; /* fail */ + } + else { + /* detect the 10.12 poll() breakage */ + struct timeval before, after; + int rc; + size_t us; + + gettimeofday(&before, NULL); + rc = poll(NULL, 0, 500); + gettimeofday(&after, NULL); + + us = (after.tv_sec - before.tv_sec) * 1000000 + + (after.tv_usec - before.tv_usec); + + if(us < 400000) { + return 1; + } + } + return 0; }" HAVE_POLL_FINE) endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index bdd2a2980..edb1cec21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ # | (__| |_| | _ <| |___ # \___|\___/|_| \_\_____| # -# Copyright (C) 1998 - 2018, Daniel Stenberg, , et al. +# Copyright (C) 1998 - 2019, Daniel Stenberg, , et al. # # This software is licensed as described in the file COPYING, which # you should have received as part of this distribution. The terms @@ -70,7 +70,6 @@ message(STATUS "curl version=[${CURL_VERSION}]") set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}") set(OS "\"${CMAKE_SYSTEM_NAME}\"") -include_directories(${PROJECT_BINARY_DIR}/include/curl) include_directories(${CURL_SOURCE_DIR}/include) option(CURL_WERROR "Turn compiler warnings into errors" OFF) @@ -828,12 +827,8 @@ endif() check_symbol_exists(basename "${CURL_INCLUDES}" HAVE_BASENAME) check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET) -# poll on macOS is unreliable, it first did not exist, then was broken until -# fixed in 10.9 only to break again in 10.12. -if(NOT APPLE) - check_symbol_exists(poll "${CURL_INCLUDES}" HAVE_POLL) -endif() check_symbol_exists(select "${CURL_INCLUDES}" HAVE_SELECT) +check_symbol_exists(poll "${CURL_INCLUDES}" HAVE_POLL) check_symbol_exists(strdup "${CURL_INCLUDES}" HAVE_STRDUP) check_symbol_exists(strstr "${CURL_INCLUDES}" HAVE_STRSTR) check_symbol_exists(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R) diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS index b397149d5..43e008dee 100644 --- a/docs/KNOWN_BUGS +++ b/docs/KNOWN_BUGS @@ -384,9 +384,6 @@ problems may have been fixed or changed somewhat since this was written! - no nghttp2 check - - no check for what variadic macros that are supported. See - https://github.com/curl/curl/pull/3452 - - unusable tool_hugehelp.c with MinGW, see https://github.com/curl/curl/issues/3125