From c1e59f5ad1141945491135be550829698b9438d0 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 1 Aug 2020 15:04:52 +0200 Subject: [PATCH] libtextstyle[-optional]: Allow requesting a minimum version. * m4/libtextstyle.m4 (gl_LIBTEXTSTYLE): Allow an optional argument. (gl_LIBTEXTSTYLE_NEWEST_VERSION, gl_LIBTEXTSTYLE_INITIALIZE, gl_LIBTEXTSTYLE_SEARCH): New macros. * modules/libtextstyle (configure.ac): Don't invoke gl_LIBTEXTSTYLE. * m4/libtextstyle-optional.m4 (gl_LIBTEXTSTYLE_OPTIONAL): Allow an optional argument. Invoke, not require, gl_LIBTEXTSTYLE. * modules/libtextstyle-optional (configure.ac): Don't invoke gl_LIBTEXTSTYLE_OPTIONAL. * NEWS: Mention the changes. --- ChangeLog | 13 ++++++++++ NEWS | 9 +++++++ m4/libtextstyle-optional.m4 | 14 +++++++---- m4/libtextstyle.m4 | 45 +++++++++++++++++++++++++++++++---- modules/libtextstyle | 2 +- modules/libtextstyle-optional | 2 +- 6 files changed, 74 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 654c52bdde..b951c6a172 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2020-08-01 Bruno Haible + + libtextstyle[-optional]: Allow requesting a minimum version. + * m4/libtextstyle.m4 (gl_LIBTEXTSTYLE): Allow an optional argument. + (gl_LIBTEXTSTYLE_NEWEST_VERSION, gl_LIBTEXTSTYLE_INITIALIZE, + gl_LIBTEXTSTYLE_SEARCH): New macros. + * modules/libtextstyle (configure.ac): Don't invoke gl_LIBTEXTSTYLE. + * m4/libtextstyle-optional.m4 (gl_LIBTEXTSTYLE_OPTIONAL): Allow an + optional argument. Invoke, not require, gl_LIBTEXTSTYLE. + * modules/libtextstyle-optional (configure.ac): Don't invoke + gl_LIBTEXTSTYLE_OPTIONAL. + * NEWS: Mention the changes. + 2020-07-31 Bruno Haible _GL_CMP: Improve documentation. diff --git a/NEWS b/NEWS index 668f2d60c0..89477472ba 100644 --- a/NEWS +++ b/NEWS @@ -58,6 +58,15 @@ User visible incompatible changes Date Modules Changes +2020-08-01 libtextstyle-optional You now need to invoke + gl_LIBTEXTSTYLE_OPTIONAL explicitly, because + this macro now takes an optional + MINIMUM-VERSION argument. + +2020-08-01 libtextstyle You now need to invoke gl_LIBTEXTSTYLE explicitly, + because this macro now takes an optional + MINIMUM-VERSION argument. + 2020-06-27 clean-temp The functions open_temp, fopen_temp now take a 'bool delete_on_close' argument. If in doubt, pass false. diff --git a/m4/libtextstyle-optional.m4 b/m4/libtextstyle-optional.m4 index 38a7ace873..2c41bbf8d3 100644 --- a/m4/libtextstyle-optional.m4 +++ b/m4/libtextstyle-optional.m4 @@ -1,4 +1,4 @@ -# libtextstyle-optional.m4 serial 1 +# libtextstyle-optional.m4 serial 2 dnl Copyright (C) 2019-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,9 +6,13 @@ dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. -dnl gl_LIBTEXTSTYLE_OPTIONAL -dnl Searches for an installed libtextstyle or uses the included source code -dnl parts that define only part of the API and does not do any styling. +dnl gl_LIBTEXTSTYLE_OPTIONAL([MINIMUM-VERSION]) +dnl Searches for an installed libtextstyle with version >= MINIMUM-VERSION +dnl MINIMUM-VERSION = 0.20 - the first release in 2019 +dnl MINIMUM-VERSION = 0.20.5 - adds hyperlink support and ostream_printf +dnl MINIMUM-VERSION unspecified - the newest release +dnl or uses the included source code parts that define only part of the API +dnl and do not do any styling. dnl If found, it sets and AC_SUBSTs HAVE_LIBTEXTSTYLE=yes and the LIBTEXTSTYLE dnl and LTLIBTEXTSTYLE variables, and augments the CPPFLAGS variable, and dnl #defines HAVE_LIBTEXTSTYLE to 1. @@ -17,7 +21,7 @@ dnl LTLIBTEXTSTYLE to empty. AC_DEFUN([gl_LIBTEXTSTYLE_OPTIONAL], [ - AC_REQUIRE([gl_LIBTEXTSTYLE]) + gl_LIBTEXTSTYLE([$1]) if test $HAVE_LIBTEXTSTYLE = yes; then TEXTSTYLE_H= else diff --git a/m4/libtextstyle.m4 b/m4/libtextstyle.m4 index 23b4a6959c..0b1b1d2d43 100644 --- a/m4/libtextstyle.m4 +++ b/m4/libtextstyle.m4 @@ -1,4 +1,4 @@ -# libtextstyle.m4 serial 1 +# libtextstyle.m4 serial 2 dnl Copyright (C) 2019-2020 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -6,8 +6,11 @@ dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. -dnl gl_LIBTEXTSTYLE -dnl Searches for an installed libtextstyle. +dnl gl_LIBTEXTSTYLE([MINIMUM-VERSION]) +dnl Searches for an installed libtextstyle with version >= MINIMUM-VERSION. +dnl MINIMUM-VERSION = 0.20 - the first release in 2019 +dnl MINIMUM-VERSION = 0.20.5 - adds hyperlink support and ostream_printf +dnl MINIMUM-VERSION unspecified - the newest release dnl If found, it sets and AC_SUBSTs HAVE_LIBTEXTSTYLE=yes and the LIBTEXTSTYLE dnl and LTLIBTEXTSTYLE variables, and augments the CPPFLAGS variable, and dnl #defines HAVE_LIBTEXTSTYLE to 1. @@ -16,7 +19,41 @@ dnl LTLIBTEXTSTYLE to empty. AC_DEFUN([gl_LIBTEXTSTYLE], [ + AC_REQUIRE([gl_LIBTEXTSTYLE_INITIALIZE]) + AC_REQUIRE([gl_LIBTEXTSTYLE_SEARCH]) + pushdef([MINVERSION], ifelse([$1], [], [gl_LIBTEXTSTYLE_NEWEST_VERSION], [$1])) + dnl Signal a fatal error if MINVERSION is not among the allowed values. + ifelse(ifelse(MINVERSION, [0.20], [x], [])ifelse(MINVERSION, [0.20.5], [x], []), [], + [m4_fatal([The argument to gl_LIBTEXTSTYLE or gl_LIBTEXTSTYLE_OPTIONAL is not one of the expected values.])]) + dnl Store the specified minimum version in gl_libtextstyle_minversion. + dnl (This needs to be outside the ifelse. m4_divert_text inside ifelse does + dnl not work reliably in Autoconf 2.69.) + m4_divert_text([INIT_PREPARE], + [gl_libtextstyle_minversion="$gl_libtextstyle_minversion MINVERSION "]) + popdef([MINVERSION]) +]) + +AC_DEFUN([gl_LIBTEXTSTYLE_NEWEST_VERSION], [0.20.5]) + +AC_DEFUN([gl_LIBTEXTSTYLE_INITIALIZE], +[ + m4_divert_text([DEFAULTS], [gl_libtextstyle_minversion=' 0.20 ']) +]) + +AC_DEFUN([gl_LIBTEXTSTYLE_SEARCH], +[ + dnl $gl_libtextstyle_minversion evaluates to a space-separated list of + dnl specified minimum versions. The maximum of these requirement matters. + case "$gl_libtextstyle_minversion" in + *" 0.20.5 "*) + snippet='styled_ostream_t s = term_styled_ostream_create(1,"",TTYCTL_AUTO,""); + ostream_printf(s,"%d",42);' + ;; + *" 0.20 "*) + snippet='term_styled_ostream_create(1,"",TTYCTL_AUTO,"");' + ;; + esac AC_LIB_HAVE_LINKFLAGS([textstyle], [], - [#include ], [term_styled_ostream_create(1,"",TTYCTL_AUTO,"");], + [#include ], [$snippet], [no]) ]) diff --git a/modules/libtextstyle b/modules/libtextstyle index e086c41724..4c3a4686ac 100644 --- a/modules/libtextstyle +++ b/modules/libtextstyle @@ -8,7 +8,7 @@ Depends-on: havelib configure.ac: -gl_LIBTEXTSTYLE +# You need to invoke gl_LIBTEXTSTYLE yourself, possibly with arguments. Makefile.am: diff --git a/modules/libtextstyle-optional b/modules/libtextstyle-optional index 2d55b3d76f..1ee82707f1 100644 --- a/modules/libtextstyle-optional +++ b/modules/libtextstyle-optional @@ -13,7 +13,7 @@ fsync vasprintf-posix configure.ac: -gl_LIBTEXTSTYLE_OPTIONAL +# You need to invoke gl_LIBTEXTSTYLE_OPTIONAL yourself, possibly with arguments. Makefile.am: BUILT_SOURCES += $(TEXTSTYLE_H) -- 2.39.5