parse-datetime: Make the build rule work with parallel 'make'.
[gnulib.git] / m4 / readutmp.m4
blob2dbe83c42d1e371dd1e37e9b730b78f48895d21b
1 # readutmp.m4 serial 20
2 dnl Copyright (C) 2002-2020 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
7 AC_DEFUN([gl_READUTMP],
9   dnl Persuade utmpx.h to declare utmpxname
10   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
12   AC_CHECK_HEADERS_ONCE([utmp.h utmpx.h])
13   if test $ac_cv_header_utmp_h = yes || test $ac_cv_header_utmpx_h = yes; then
14     dnl Prerequisites of lib/readutmp.h and lib/readutmp.c.
15     AC_CHECK_FUNCS_ONCE([utmpname utmpxname])
16     AC_CHECK_DECLS([getutent],,,[[
17 /* <sys/types.h> is a prerequisite of <utmp.h> on FreeBSD 8.0, OpenBSD 4.6.  */
18 #include <sys/types.h>
19 #ifdef HAVE_UTMP_H
20 # include <utmp.h>
21 #endif
22 ]])
23     utmp_includes="\
24 AC_INCLUDES_DEFAULT
25 #ifdef HAVE_UTMPX_H
26 # include <utmpx.h>
27 #endif
28 #ifdef HAVE_UTMP_H
29 # if defined _THREAD_SAFE && defined UTMP_DATA_INIT
30    /* When including both utmp.h and utmpx.h on AIX 4.3, with _THREAD_SAFE
31       defined, work around the duplicate struct utmp_data declaration.  */
32 #  define utmp_data gl_aix_4_3_workaround_utmp_data
33 # endif
34 # include <utmp.h>
35 #endif
37     AC_CHECK_MEMBERS([struct utmpx.ut_user],,,[$utmp_includes])
38     AC_CHECK_MEMBERS([struct utmp.ut_user],,,[$utmp_includes])
39     AC_CHECK_MEMBERS([struct utmpx.ut_name],,,[$utmp_includes])
40     AC_CHECK_MEMBERS([struct utmp.ut_name],,,[$utmp_includes])
41     AC_CHECK_MEMBERS([struct utmpx.ut_type],,,[$utmp_includes])
42     AC_CHECK_MEMBERS([struct utmp.ut_type],,,[$utmp_includes])
43     AC_CHECK_MEMBERS([struct utmpx.ut_pid],,,[$utmp_includes])
44     AC_CHECK_MEMBERS([struct utmp.ut_pid],,,[$utmp_includes])
45     AC_CHECK_MEMBERS([struct utmpx.ut_id],,,[$utmp_includes])
46     AC_CHECK_MEMBERS([struct utmp.ut_id],,,[$utmp_includes])
47     AC_CHECK_MEMBERS([struct utmpx.ut_exit],,,[$utmp_includes])
48     AC_CHECK_MEMBERS([struct utmp.ut_exit],,,[$utmp_includes])
50     AC_CHECK_MEMBERS([struct utmpx.ut_exit.ut_exit],,,[$utmp_includes])
51     AC_CHECK_MEMBERS([struct utmp.ut_exit.ut_exit],,,[$utmp_includes])
52     AC_CHECK_MEMBERS([struct utmpx.ut_exit.e_exit],,,[$utmp_includes])
53     AC_CHECK_MEMBERS([struct utmp.ut_exit.e_exit],,,[$utmp_includes])
55     AC_CHECK_MEMBERS([struct utmpx.ut_exit.ut_termination],,,[$utmp_includes])
56     AC_CHECK_MEMBERS([struct utmp.ut_exit.ut_termination],,,[$utmp_includes])
57     AC_CHECK_MEMBERS([struct utmpx.ut_exit.e_termination],,,[$utmp_includes])
58     AC_CHECK_MEMBERS([struct utmp.ut_exit.e_termination],,,[$utmp_includes])
59   fi