Commit 665adcd4 authored by Yang Tse's avatar Yang Tse
Browse files

build: fix AIX compilation and usage

AIX sys/poll.h header file defines 'events' and 'revents' as C
preprocessor macros. Usage of these literals in libcurl's external
API was introduced in commit de24d7bd causing AIX build failures.
Appropriate inclusion of sys/poll.h by libcurl's external interface
fixes AIX build and usage issues while avoiding a SONAME bump.
parent 91dc73ef
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@ AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [
#endif])
  AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl
  AC_BEFORE([$0], [CURL_CONFIGURE_REENTRANT])dnl
  AC_BEFORE([$0], [CURL_CONFIGURE_PULL_SYS_POLL])dnl
  AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)])
  AC_EGREP_CPP([yes_this_is_aix],[
#ifdef _AIX
@@ -2310,6 +2311,8 @@ AC_DEFUN([CURL_CONFIGURE_CURL_SOCKLEN_T], [
  AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
  AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
  #
  AC_BEFORE([$0], [CURL_CONFIGURE_PULL_SYS_POLL])dnl
  #
  AC_MSG_CHECKING([for curl_socklen_t data type])
  curl_typeof_curl_socklen_t="unknown"
  for arg1 in int SOCKET; do
@@ -2418,6 +2421,45 @@ AC_DEFUN([CURL_CONFIGURE_CURL_SOCKLEN_T], [
])


dnl CURL_CONFIGURE_PULL_SYS_POLL
dnl -------------------------------------------------
dnl Find out if system header file sys/poll.h must be included by the
dnl external interface, making appropriate definitions for template file
dnl include/curl/curlbuild.h.in to properly configure and use the library.
dnl
dnl The need for the sys/poll.h inclusion arises mainly to properly
dnl interface AIX systems which define macros 'events' and 'revents'.

AC_DEFUN([CURL_CONFIGURE_PULL_SYS_POLL], [
  AC_REQUIRE([CURL_INCLUDES_POLL])dnl
  #
  tst_poll_events_macro_defined="unknown"
  #
  AC_COMPILE_IFELSE([
    AC_LANG_PROGRAM([[
      $curl_includes_poll
    ]],[[
#if defined(events) || defined(revents)
      return 0;
#else
      force compilation error
#endif
    ]])
  ],[
    tst_poll_events_macro_defined="yes"
  ],[
    tst_poll_events_macro_defined="no"
  ])
  #
  if test "$tst_poll_events_macro_defined" = "yes"; then
    if test "x$ac_cv_header_sys_poll_h" = "xyes"; then
      CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_POLL_H])
    fi
  fi
  #
])


dnl CURL_CHECK_FUNC_SELECT
dnl -------------------------------------------------
dnl Test if the socket select() function is available,
+2 −0
Original line number Diff line number Diff line
@@ -2948,6 +2948,8 @@ AC_CHECK_TYPE([bool],[

CURL_CONFIGURE_CURL_SOCKLEN_T

CURL_CONFIGURE_PULL_SYS_POLL

TYPE_IN_ADDR_T

TYPE_SOCKADDR_STORAGE
+8 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 1998 - 2012, 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
@@ -151,6 +151,13 @@
#  include <sys/socket.h>
#endif

/* Configure process defines this to 1 when it finds out that system  */
/* header file sys/poll.h must be included by the external interface. */
#undef CURL_PULL_SYS_POLL_H
#ifdef CURL_PULL_SYS_POLL_H
#  include <sys/poll.h>
#endif

/* The size of `long', as computed by sizeof. */
#undef CURL_SIZEOF_LONG

+2 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
 *                            | (__| |_| |  _ <| |___
 *                             \___|\___/|_| \_\_____|
 *
 * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
 * Copyright (C) 1998 - 2012, 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
@@ -248,6 +248,7 @@ typedef char
#undef CURL_PULL_WS2TCPIP_H
#undef CURL_PULL_SYS_TYPES_H
#undef CURL_PULL_SYS_SOCKET_H
#undef CURL_PULL_SYS_POLL_H
#undef CURL_PULL_STDINT_H
#undef CURL_PULL_INTTYPES_H