summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Nikulov <sergey.nikulov@gmail.com>2019-01-15 12:50:18 +0300
committerSergei Nikulov <snikulov@users.noreply.github.com>2019-01-16 11:39:34 +0300
commit99c2e7e5542380bcf416fdbcf4f895c158f5cede (patch)
tree5a69ae1ca7781796dcee531f84f3bb5f6a1bb2b6
parent26d7f0094aaf5458ab496a8ec84210aab64d63b5 (diff)
downloadcurl-99c2e7e5542380bcf416fdbcf4f895c158f5cede.tar.gz
cmake: updated check for HAVE_POLL_FINE to match autotools
-rw-r--r--CMake/OtherTests.cmake42
-rw-r--r--CMakeLists.txt9
-rw-r--r--docs/KNOWN_BUGS3
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 <stdlib.h>
+ #include <sys/time.h>
+
#ifdef HAVE_SYS_POLL_H
# include <sys/poll.h>
+ #elif HAVE_POLL_H
+ # include <poll.h>
#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, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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