>From c8eb1af611279eaebff505dbfe176885ca3b0fdc Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 9 May 2020 02:55:06 +0200 Subject: [PATCH 2/2] c32rtomb: Avoid compilation failure on Haiku. * m4/c32rtomb.m4 (gl_FUNC_C32RTOMB): Test for c32rtomb without excluding inline definitions. * doc/posix-functions/c32rtomb.texi: Mention the Haiku problem. --- ChangeLog | 7 +++++++ doc/posix-functions/c32rtomb.texi | 3 +++ m4/c32rtomb.m4 | 20 +++++++++++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 53a672a..c22d515 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2020-05-08 Bruno Haible + c32rtomb: Avoid compilation failure on Haiku. + * m4/c32rtomb.m4 (gl_FUNC_C32RTOMB): Test for c32rtomb without excluding + inline definitions. + * doc/posix-functions/c32rtomb.texi: Mention the Haiku problem. + +2020-05-08 Bruno Haible + mbrtoc32: Avoid compilation failure on Haiku. * m4/mbrtoc32.m4 (gl_CHECK_FUNC_MBRTOC32): New macro. (gl_FUNC_MBRTOC32, gl_MBRTOC32_SANITYCHECK): Use it instead of diff --git a/doc/posix-functions/c32rtomb.texi b/doc/posix-functions/c32rtomb.texi index 4a1a617..fd4ada6 100644 --- a/doc/posix-functions/c32rtomb.texi +++ b/doc/posix-functions/c32rtomb.texi @@ -16,4 +16,7 @@ AIX 7.2. Portability problems not fixed by Gnulib: @itemize +@item +This function is only defined as an inline function on some platforms: +Haiku 2020. @end itemize diff --git a/m4/c32rtomb.m4 b/m4/c32rtomb.m4 index 4cf0e4d..f55ce31 100644 --- a/m4/c32rtomb.m4 +++ b/m4/c32rtomb.m4 @@ -1,4 +1,4 @@ -# c32rtomb.m4 serial 1 +# c32rtomb.m4 serial 2 dnl Copyright (C) 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, @@ -10,8 +10,22 @@ AC_DEFUN([gl_FUNC_C32RTOMB], AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) - AC_CHECK_FUNCS_ONCE([c32rtomb]) - if test $ac_cv_func_c32rtomb = no; then + dnl We can't use AC_CHECK_FUNC here, because c32rtomb() is defined as a + dnl static inline function on Haiku 2020. + AC_CACHE_CHECK([for c32rtomb], [gl_cv_func_c32rtomb], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + ]], + [[char buf[8]; + return c32rtomb (buf, 0, NULL) == 0; + ]]) + ], + [gl_cv_func_c32rtomb=yes], + [gl_cv_func_c32rtomb=no]) + ]) + if test $gl_cv_func_c32rtomb = no; then HAVE_C32RTOMB=0 else dnl When we override mbrtoc32, redefining the meaning of the char32_t -- 2.7.4