xref: /freebsd/contrib/ldns/m4/ax_have_poll.m4 (revision 5afab0e5e56fe90a378fb57249600e7924e1cab2)
1986ba33cSDag-Erling Smørgrav# ===========================================================================
2*5afab0e5SDag-Erling Smørgrav#       https://www.gnu.org/software/autoconf-archive/ax_have_poll.html
3986ba33cSDag-Erling Smørgrav# ===========================================================================
4986ba33cSDag-Erling Smørgrav#
5986ba33cSDag-Erling Smørgrav# SYNOPSIS
6986ba33cSDag-Erling Smørgrav#
7986ba33cSDag-Erling Smørgrav#   AX_HAVE_POLL([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
8986ba33cSDag-Erling Smørgrav#   AX_HAVE_PPOLL([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
9986ba33cSDag-Erling Smørgrav#
10986ba33cSDag-Erling Smørgrav# DESCRIPTION
11986ba33cSDag-Erling Smørgrav#
12986ba33cSDag-Erling Smørgrav#   This macro determines whether the system supports the poll I/O event
13986ba33cSDag-Erling Smørgrav#   interface. A neat usage example would be:
14986ba33cSDag-Erling Smørgrav#
15986ba33cSDag-Erling Smørgrav#     AX_HAVE_POLL(
16986ba33cSDag-Erling Smørgrav#       [AX_CONFIG_FEATURE_ENABLE(poll)],
17986ba33cSDag-Erling Smørgrav#       [AX_CONFIG_FEATURE_DISABLE(poll)])
18986ba33cSDag-Erling Smørgrav#     AX_CONFIG_FEATURE(
19986ba33cSDag-Erling Smørgrav#       [poll], [This platform supports poll(7)],
20986ba33cSDag-Erling Smørgrav#       [HAVE_POLL], [This platform supports poll(7).])
21986ba33cSDag-Erling Smørgrav#
22986ba33cSDag-Erling Smørgrav#   Some systems -- most notably Linux kernel 2.6.16 and later -- also have
23986ba33cSDag-Erling Smørgrav#   the variant ppoll(). The availability of that function can be tested
24986ba33cSDag-Erling Smørgrav#   with the second macro. Generally speaking, it is safe to assume that
25986ba33cSDag-Erling Smørgrav#   AX_HAVE_POLL would succeed if AX_HAVE_PPOLL has, but not the other way
26986ba33cSDag-Erling Smørgrav#   round.
27986ba33cSDag-Erling Smørgrav#
28986ba33cSDag-Erling Smørgrav# LICENSE
29986ba33cSDag-Erling Smørgrav#
30986ba33cSDag-Erling Smørgrav#   Copyright (c) 2009 Peter Simons <simons@cryp.to>
31986ba33cSDag-Erling Smørgrav#
32986ba33cSDag-Erling Smørgrav#   Copying and distribution of this file, with or without modification, are
33986ba33cSDag-Erling Smørgrav#   permitted in any medium without royalty provided the copyright notice
34986ba33cSDag-Erling Smørgrav#   and this notice are preserved. This file is offered as-is, without any
35986ba33cSDag-Erling Smørgrav#   warranty.
36986ba33cSDag-Erling Smørgrav
37*5afab0e5SDag-Erling Smørgrav#serial 8
38986ba33cSDag-Erling Smørgrav
39986ba33cSDag-Erling SmørgravAC_DEFUN([AX_HAVE_POLL], [dnl
40986ba33cSDag-Erling Smørgrav  AC_MSG_CHECKING([for poll(2)])
41986ba33cSDag-Erling Smørgrav  AC_CACHE_VAL([ax_cv_have_poll], [dnl
42986ba33cSDag-Erling Smørgrav    AC_LINK_IFELSE([dnl
43986ba33cSDag-Erling Smørgrav      AC_LANG_PROGRAM(
44986ba33cSDag-Erling Smørgrav        [#include <poll.h>],
45986ba33cSDag-Erling Smørgrav        [int rc; rc = poll((struct pollfd *)(0), 0, 0);])],
46986ba33cSDag-Erling Smørgrav      [ax_cv_have_poll=yes],
47986ba33cSDag-Erling Smørgrav      [ax_cv_have_poll=no])])
48986ba33cSDag-Erling Smørgrav  AS_IF([test "${ax_cv_have_poll}" = "yes"],
49986ba33cSDag-Erling Smørgrav    [AC_MSG_RESULT([yes])
50986ba33cSDag-Erling Smørgrav$1],[AC_MSG_RESULT([no])
51986ba33cSDag-Erling Smørgrav$2])
52986ba33cSDag-Erling Smørgrav])dnl
53986ba33cSDag-Erling Smørgrav
54986ba33cSDag-Erling SmørgravAC_DEFUN([AX_HAVE_PPOLL], [dnl
55986ba33cSDag-Erling Smørgrav  AC_MSG_CHECKING([for ppoll(2)])
56986ba33cSDag-Erling Smørgrav  AC_CACHE_VAL([ax_cv_have_ppoll], [dnl
57986ba33cSDag-Erling Smørgrav    AC_LINK_IFELSE([dnl
58986ba33cSDag-Erling Smørgrav      AC_LANG_PROGRAM(
59986ba33cSDag-Erling Smørgrav        [dnl
60986ba33cSDag-Erling Smørgrav#include <poll.h>
61986ba33cSDag-Erling Smørgrav#include <signal.h>],
62986ba33cSDag-Erling Smørgrav        [dnl
63986ba33cSDag-Erling Smørgravint rc;
64986ba33cSDag-Erling Smørgravrc = poll((struct pollfd *)(0), 0, 0);
65986ba33cSDag-Erling Smørgravrc = ppoll((struct pollfd *)(0), 0, (struct timespec const *)(0), (sigset_t const *)(0));])],
66986ba33cSDag-Erling Smørgrav      [ax_cv_have_ppoll=yes],
67986ba33cSDag-Erling Smørgrav      [ax_cv_have_ppoll=no])])
68986ba33cSDag-Erling Smørgrav  AS_IF([test "${ax_cv_have_ppoll}" = "yes"],
69986ba33cSDag-Erling Smørgrav    [AC_MSG_RESULT([yes])
70986ba33cSDag-Erling Smørgrav$1],[AC_MSG_RESULT([no])
71986ba33cSDag-Erling Smørgrav$2])
72986ba33cSDag-Erling Smørgrav])
73