>From afcb36b3c4bca6e8c3fafa8103841f03772e87a5 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 22 Jan 2023 11:42:32 +0100 Subject: [PATCH 15/47] Resolve conflicts for functions introduced in Android API level 19. * lib/inttypes.in.h (imaxabs): Consider REPLACE_IMAXABS. Disable _GL_CXXALIASWARN invocation on non-glibc systems. (imaxdiv): Consider REPLACE_IMAXDIV. Disable _GL_CXXALIASWARN invocation on non-glibc systems. * m4/inttypes.m4 (gl_INTTYPES_H_DEFAULTS): Initialize HAVE_IMAXABS, HAVE_IMAXDIV, REPLACE_IMAXABS, REPLACE_IMAXDIV. * modules/inttypes-incomplete (Makefile.am): Substitute REPLACE_IMAXABS, REPLACE_IMAXDIV. * m4/imaxabs.m4 (gl_FUNC_IMAXABS): Conditionally set HAVE_IMAXABS, REPLACE_IMAXABS. * modules/imaxabs (configure.ac): Consider HAVE_IMAXABS, REPLACE_IMAXABS. * m4/imaxdiv.m4 (gl_FUNC_IMAXDIV): Conditionally set HAVE_IMAXDIV, REPLACE_IMAXDIV. * modules/imaxdiv (configure.ac): Consider HAVE_IMAXDIV, REPLACE_IMAXDIV. --- ChangeLog | 15 +++++++++++++++ lib/inttypes.in.h | 34 ++++++++++++++++++++++++++++++---- m4/imaxabs.m4 | 8 +++++++- m4/imaxdiv.m4 | 8 +++++++- m4/inttypes.m4 | 6 +++++- modules/imaxabs | 3 ++- modules/imaxdiv | 3 ++- modules/inttypes-incomplete | 2 ++ 8 files changed, 70 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index ace915fe22..449746ce95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,21 @@ Resolve conflicts for functions introduced in Android API level 19. + * lib/inttypes.in.h (imaxabs): Consider REPLACE_IMAXABS. Disable + _GL_CXXALIASWARN invocation on non-glibc systems. + (imaxdiv): Consider REPLACE_IMAXDIV. Disable _GL_CXXALIASWARN invocation + on non-glibc systems. + * m4/inttypes.m4 (gl_INTTYPES_H_DEFAULTS): Initialize HAVE_IMAXABS, + HAVE_IMAXDIV, REPLACE_IMAXABS, REPLACE_IMAXDIV. + * modules/inttypes-incomplete (Makefile.am): Substitute REPLACE_IMAXABS, + REPLACE_IMAXDIV. + * m4/imaxabs.m4 (gl_FUNC_IMAXABS): Conditionally set HAVE_IMAXABS, + REPLACE_IMAXABS. + * modules/imaxabs (configure.ac): Consider HAVE_IMAXABS, REPLACE_IMAXABS. + * m4/imaxdiv.m4 (gl_FUNC_IMAXDIV): Conditionally set HAVE_IMAXDIV, + REPLACE_IMAXDIV. + * modules/imaxdiv (configure.ac): Consider HAVE_IMAXDIV, REPLACE_IMAXDIV. + * m4/futimens.m4 (gl_FUNC_FUTIMENS): Conditionally set REPLACE_FUTIMENS. * lib/sys_stat.in.h (futimens): Disable _GL_CXXALIASWARN invocation on non-glibc systems. diff --git a/lib/inttypes.in.h b/lib/inttypes.in.h index 50a2bbfcda..5b7ef12dc7 100644 --- a/lib/inttypes.in.h +++ b/lib/inttypes.in.h @@ -903,8 +903,21 @@ extern "C" { #endif #if @GNULIB_IMAXABS@ -# if !@HAVE_DECL_IMAXABS@ -extern intmax_t imaxabs (intmax_t); +# if @REPLACE_IMAXABS@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef imaxabs +# define imaxabs rpl_imaxabs +# endif +_GL_FUNCDECL_RPL (imaxabs, intmax_t, (intmax_t x)); +_GL_CXXALIAS_RPL (imaxabs, intmax_t, (intmax_t x)); +# else +# if !@HAVE_DECL_IMAXABS@ +_GL_FUNCDECL_SYS (imaxabs, intmax_t, (intmax_t x)); +# endif +_GL_CXXALIAS_SYS (imaxabs, intmax_t, (intmax_t x)); +# endif +# if __GLIBC__ >= 2 +_GL_CXXALIASWARN (imaxabs); # endif #elif defined GNULIB_POSIXCHECK # undef imaxabs @@ -921,8 +934,21 @@ typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; # define GNULIB_defined_imaxdiv_t 1 # endif # endif -# if !@HAVE_DECL_IMAXDIV@ -extern imaxdiv_t imaxdiv (intmax_t, intmax_t); +# if @REPLACE_IMAXDIV@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef imaxdiv +# define imaxdiv rpl_imaxdiv +# endif +_GL_FUNCDECL_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom)); +_GL_CXXALIAS_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom)); +# else +# if !@HAVE_DECL_IMAXDIV@ +_GL_FUNCDECL_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom)); +# endif +_GL_CXXALIAS_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom)); +# endif +# if __GLIBC__ >= 2 +_GL_CXXALIASWARN (imaxdiv); # endif #elif defined GNULIB_POSIXCHECK # undef imaxdiv diff --git a/m4/imaxabs.m4 b/m4/imaxabs.m4 index 504db4845c..b0e928912f 100644 --- a/m4/imaxabs.m4 +++ b/m4/imaxabs.m4 @@ -1,4 +1,4 @@ -# imaxabs.m4 serial 5 +# imaxabs.m4 serial 6 dnl Copyright (C) 2006, 2009-2023 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,6 +10,12 @@ AC_DEFUN([gl_FUNC_IMAXABS], dnl On OSF/1 5.1 with cc, this function is declared but not defined. gl_CHECK_FUNCS_ANDROID([imaxabs], [[#include ]]) + if test $ac_cv_func_imaxabs = no; then + HAVE_IMAXABS=0 + case "$gl_cv_onwards_func_imaxabs" in + future*) REPLACE_IMAXABS=1 ;; + esac + fi AC_CHECK_DECLS_ONCE([imaxabs]) if test "$ac_cv_have_decl_imaxabs" != yes; then HAVE_DECL_IMAXABS=0 diff --git a/m4/imaxdiv.m4 b/m4/imaxdiv.m4 index 7ad5da4ebf..731fa88c0e 100644 --- a/m4/imaxdiv.m4 +++ b/m4/imaxdiv.m4 @@ -1,4 +1,4 @@ -# imaxdiv.m4 serial 6 +# imaxdiv.m4 serial 7 dnl Copyright (C) 2006, 2009-2023 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,6 +10,12 @@ AC_DEFUN([gl_FUNC_IMAXDIV], dnl On OSF/1 5.1 with cc, this function is declared but not defined. gl_CHECK_FUNCS_ANDROID([imaxdiv], [[#include ]]) + if test $ac_cv_func_imaxdiv = no; then + HAVE_IMAXDIV=0 + case "$gl_cv_onwards_func_imaxdiv" in + future*) REPLACE_IMAXDIV=1 ;; + esac + fi AC_CHECK_DECLS_ONCE([imaxdiv]) if test "$ac_cv_have_decl_imaxdiv" != yes; then HAVE_DECL_IMAXDIV=0 diff --git a/m4/inttypes.m4 b/m4/inttypes.m4 index bf2eab2ba3..e7efbe9416 100644 --- a/m4/inttypes.m4 +++ b/m4/inttypes.m4 @@ -1,4 +1,4 @@ -# inttypes.m4 serial 36 +# inttypes.m4 serial 37 dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -170,6 +170,10 @@ AC_DEFUN([gl_INTTYPES_H_DEFAULTS], HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX]) HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX]) HAVE_IMAXDIV_T=1; AC_SUBST([HAVE_IMAXDIV_T]) + HAVE_IMAXABS=1; AC_SUBST([HAVE_IMAXABS]) + HAVE_IMAXDIV=1; AC_SUBST([HAVE_IMAXDIV]) + REPLACE_IMAXABS=0; AC_SUBST([REPLACE_IMAXABS]) + REPLACE_IMAXDIV=0; AC_SUBST([REPLACE_IMAXDIV]) REPLACE_STRTOIMAX=0; AC_SUBST([REPLACE_STRTOIMAX]) REPLACE_STRTOUMAX=0; AC_SUBST([REPLACE_STRTOUMAX]) INT32_MAX_LT_INTMAX_MAX=1; AC_SUBST([INT32_MAX_LT_INTMAX_MAX]) diff --git a/modules/imaxabs b/modules/imaxabs index 70bb9cd9c0..e33b48ff8e 100644 --- a/modules/imaxabs +++ b/modules/imaxabs @@ -10,7 +10,8 @@ inttypes-incomplete configure.ac: gl_FUNC_IMAXABS -gl_CONDITIONAL([GL_COND_OBJ_IMAXABS], [test $ac_cv_func_imaxabs = no]) +gl_CONDITIONAL([GL_COND_OBJ_IMAXABS], + [test $HAVE_IMAXABS = 0 || test $REPLACE_IMAXABS = 1]) AM_COND_IF([GL_COND_OBJ_IMAXABS], [ gl_PREREQ_IMAXABS ]) diff --git a/modules/imaxdiv b/modules/imaxdiv index 192a5e048d..74f800b64f 100644 --- a/modules/imaxdiv +++ b/modules/imaxdiv @@ -10,7 +10,8 @@ inttypes-incomplete configure.ac: gl_FUNC_IMAXDIV -gl_CONDITIONAL([GL_COND_OBJ_IMAXDIV], [test $ac_cv_func_imaxdiv = no]) +gl_CONDITIONAL([GL_COND_OBJ_IMAXDIV], + [test $HAVE_IMAXDIV = 0 || test $REPLACE_IMAXDIV = 1]) AM_COND_IF([GL_COND_OBJ_IMAXDIV], [ gl_PREREQ_IMAXDIV ]) diff --git a/modules/inttypes-incomplete b/modules/inttypes-incomplete index 38177e1e19..96ab2e3cdd 100644 --- a/modules/inttypes-incomplete +++ b/modules/inttypes-incomplete @@ -43,6 +43,8 @@ inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_U -e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \ -e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \ -e 's/@''HAVE_IMAXDIV_T''@/$(HAVE_IMAXDIV_T)/g' \ + -e 's/@''REPLACE_IMAXABS''@/$(REPLACE_IMAXABS)/g' \ + -e 's/@''REPLACE_IMAXDIV''@/$(REPLACE_IMAXDIV)/g' \ -e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \ -e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \ -e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \ -- 2.34.1