From 31e9396bf215cbaf224b99617ef683950f0aae02 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Wed, 13 Mar 2024 00:56:07 +0100 Subject: [PATCH] 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. --- configure.ac | 15 +++++++++++++++ m4/libbsd-compiler.m4 | 16 ++++++++++++++++ man/Makefile.am | 9 +++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) 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 \