Commit 99c2e7e5 authored by Sergei Nikulov's avatar Sergei Nikulov
Browse files

cmake: updated check for HAVE_POLL_FINE to match autotools

parent 26d7f009
Loading
Loading
Loading
Loading
+35 −7
Original line number Diff line number Diff line
@@ -177,20 +177,48 @@ int main(void) {
  return 0;
}" HAVE_STRUCT_TIMEVAL)


if(NOT DEFINED CMAKE_TOOLCHAIN_FILE)
  # if not cross-compilation...
  include(CheckCSourceRuns)
# See HAVE_POLL in CMakeLists.txt for why poll is disabled on macOS
if(NOT APPLE)
  set(CMAKE_REQUIRED_FLAGS)
  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()

+2 −7
Original line number Diff line number Diff line
@@ -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)
+0 −3
Original line number Diff line number Diff line
@@ -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