Paul Eggert wrote in
<https://lists.gnu.org/archive/html/bug-autoconf/2025-05/msg00024.html>.
> Two questions about this patch installed a couple days ago
> <https://cgit.git.savannah.gnu.org/cgit/autoconf.git/commit/?id=e1bbc9b93cdff61d70719c224b37970e065008bb>.
>
> Should Gnulib's gl_CHECK_FUNCS_MACOS be adjusted to work better with
> future Autoconf versions that have the patch?
Indeed, well spotted! The patch below fixes it. Tested with a testdir for
module 'mkfifoat' on macOS 12.6:
With the original Autoconf 2.72 and without the patch below, the results were:
ac_cv_func_mkfifoat=${ac_cv_func_mkfifoat=no}
ac_cv_have_decl_mkfifoat=${ac_cv_have_decl_mkfifoat=yes}
gl_cv_onwards_func_mkfifoat=${gl_cv_onwards_func_mkfifoat='future OS version'}
With current Autoconf master and without the patch below, the results were:
ac_cv_func_mkfifoat=${ac_cv_func_mkfifoat=no}
ac_cv_have_decl_mkfifoat=${ac_cv_have_decl_mkfifoat=no}
gl_cv_onwards_func_mkfifoat=${gl_cv_onwards_func_mkfifoat=no}
With current Autoconf master and with the patch below, the results are:
ac_cv_func_mkfifoat=${ac_cv_func_mkfifoat=no}
ac_cv_have_decl_mkfifoat=${ac_cv_have_decl_mkfifoat=no}
gl_cv_onwards_func_mkfifoat=${gl_cv_onwards_func_mkfifoat='future OS version'}
> Is there a similar issue with Android? (I think not, but I'm asking as a
> double-check.)
There is no such issue on Android, because in the Android header files, the
idiom is:
#if __ANDROID_API__ >= 30
int mlock2(const void* _Nonnull __addr, size_t __size, int __flags)
__INTRODUCED_IN(30);
#endif /* __ANDROID_API__ >= 30 */
or
#if __ANDROID_API__ >= 26
wint_t towctrans_l(wint_t __wc, wctrans_t _Nonnull __transform, locale_t
_Nonnull __l) __INTRODUCED_IN(26);
wctrans_t _Nonnull wctrans_l(const char* _Nonnull __name, locale_t _Nonnull
__l) __INTRODUCED_IN(26);
#endif /* __ANDROID_API__ >= 26 */
2025-05-31 Bruno Haible <[email protected]>
Make gl_CHECK_FUNCS_MACOS work with current unreleased Autoconf.
Reported by Paul Eggert in
<https://lists.gnu.org/archive/html/bug-autoconf/2025-05/msg00024.html>.
* m4/gnulib-common.m4 (gl_CHECK_FUNCS_CASE_FOR_MACOS): Temporarily set
ac_c_future_darwin_options, ac_cxx_future_darwin_options to empty for
the second AC_CHECK_DECL invocation.
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
index a07c7dd5a8..76a8a323fb 100644
--- a/m4/gnulib-common.m4
+++ b/m4/gnulib-common.m4
@@ -1571,13 +1571,25 @@ AC_DEFUN([gl_CHECK_FUNCS_CASE_FOR_MACOS]
if test $[ac_cv_func_][$1] = yes; then
[gl_cv_onwards_func_][$1]=yes
else
+ dnl This is a bit complicated, because here we need the
behaviour
+ dnl of AC_CHECK_DECL before the
+ dnl commit e1bbc9b93cdff61d70719c224b37970e065008bb
(2025-05-26).
+ [ac_cv_have_decl_][$1][_saved]="$[ac_cv_have_decl_][$1]"
unset [ac_cv_have_decl_][$1]
+ ac_c_future_darwin_options_saved="$ac_c_future_darwin_options"
+
ac_cxx_future_darwin_options_saved="$ac_cxx_future_darwin_options"
+ ac_c_future_darwin_options=
+ ac_cxx_future_darwin_options=
AC_CHECK_DECL([$1], , , [$2])
+ ac_c_future_darwin_options="$ac_c_future_darwin_options_saved"
+
ac_cxx_future_darwin_options="$ac_cxx_future_darwin_options_saved"
if test $[ac_cv_have_decl_][$1] = yes; then
[gl_cv_onwards_func_][$1]='future OS version'
else
[gl_cv_onwards_func_][$1]=no
fi
+ [ac_cv_have_decl_][$1]="$[ac_cv_have_decl_][$1][_saved]"
+ unset [ac_cv_have_decl_][$1][_saved]
fi
else
AC_CHECK_FUNC([$1])