build: Only install time struct conversion macros where missing These macros are available in several systems, and we should not install the man pages for them, otherwise we might end up shadowing the system man pages if present.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
diff --git a/configure.ac b/configure.ac
index c7c2e13..09bc0f4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -42,6 +42,8 @@ LIBBSD_LINKER_VERSION_SCRIPT
is_windows=no
+api_time_macros=unknown
+
abi_accmode=unknown
abi_arc4random=unknown
abi_arc4random_stir=unknown
@@ -86,6 +88,8 @@ abi_wcsl=unknown
AS_CASE([$host_os],
[*-gnu* | gnu*], [
+ api_time_macros=no
+
abi_accmode=yes
# DROP: On glibc >= 2.36.
#abi_arc4random=no
@@ -145,6 +149,8 @@ AS_CASE([$host_os],
abi_wcsl=yes
],
[*-musl*], [
+ api_time_macros=no
+
abi_accmode=yes
abi_arc4random=yes
abi_arc4random_stir=yes
@@ -209,6 +215,8 @@ AS_CASE([$host_os],
abi_wcsl=yes
],
[darwin*], [
+ api_time_macros=no
+
abi_accmode=no
abi_arc4random=no
abi_arc4random_stir=no
@@ -255,6 +263,8 @@ AS_CASE([$host_os],
abi_wcsl=no
],
[solaris2*], [
+ api_time_macros=yes
+
abi_accmode=yes
abi_arc4random=no
abi_arc4random_stir=no
@@ -301,6 +311,8 @@ AS_CASE([$host_os],
abi_wcsl=yes
],
[aix*], [
+ api_time_macros=yes
+
abi_accmode=yes
abi_arc4random=yes
abi_arc4random_stir=yes
@@ -545,6 +557,9 @@ AC_CHECK_FUNCS([\
AM_CONDITIONAL([HAVE_GETENTROPY], [test "x$ac_cv_func_getentropy" = "xyes"])
+# API selection
+LIBBSD_SELECT_API([time_macros], [time struct conversion macros])
+
# ABI selection
LIBBSD_SELECT_ABI([accmode], [setmode()/getmode()])
LIBBSD_SELECT_ABI([arc4random], [arc4random() API])
diff --git a/m4/libbsd-compiler.m4 b/m4/libbsd-compiler.m4
index 0708f57..ace5ce1 100644
--- a/m4/libbsd-compiler.m4
+++ b/m4/libbsd-compiler.m4
@@ -71,6 +71,22 @@ int main() { return rc; }
[test "$libbsd_cv_gnu_init_array_support" = yes])
])
+# LIBBSD_SELECT_API(name, desc)
+# -----------------
+AC_DEFUN([LIBBSD_SELECT_API], [
+ AS_IF([test -z "$AS_TR_SH([api_$1])"], [
+ AC_MSG_ERROR([missing API selection for $1])
+ ], [test "$AS_TR_SH([api_$1])" = "unknown"], [
+ AC_MSG_ERROR([unknown ABI selection for $1])
+ ], [test "$AS_TR_SH([api_$1])" = "yes"], [
+ AC_DEFINE(AS_TR_CPP([LIBBSD_API_$1]), [1], [Provide API for $2])
+ ], [
+ AC_DEFINE(AS_TR_CPP([LIBBSD_API_$1]), [0])
+ ])
+ AM_CONDITIONAL(AS_TR_CPP([API_$1]),
+ [test "x$AS_TR_SH([api_$1])" = "xyes"])
+])
+
# LIBBSD_SELECT_ABI(name, desc)
# -----------------
AC_DEFUN([LIBBSD_SELECT_ABI], [
diff --git a/man/Makefile.am b/man/Makefile.am
index cb2252b..02c8ffb 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -141,8 +141,6 @@ dist_man_MANS = \
TAILQ_PREV.3bsd \
TAILQ_REMOVE.3bsd \
TAILQ_SWAP.3bsd \
- TIMESPEC_TO_TIMEVAL.3bsd \
- TIMEVAL_TO_TIMESPEC.3bsd \
be16dec.3bsd \
be16enc.3bsd \
be32dec.3bsd \
@@ -182,6 +180,13 @@ dist_man_MANS = \
tree.3bsd \
# EOL
+if API_TIME_MACROS
+dist_man_MANS += \
+ TIMESPEC_TO_TIMEVAL.3bsd \
+ TIMEVAL_TO_TIMESPEC.3bsd \
+ # EOL
+endif
+
if ABI_ACCMODE
dist_man_MANS += \
getmode.3bsd \