Paul Eggert wrote:
> diff --git a/modules/stringeq b/modules/stringeq
> index fb620cf16d..bfc387db49 100644
> --- a/modules/stringeq
> +++ b/modules/stringeq
> @@ -9,6 +9,9 @@ bool
>  string-h
>  
>  configure.ac:
> +AC_CHECK_DECLS_ONCE([memeq, streq])
> +test $ac_cv_have_decl_memeq = no || HAVE_DECL_MEMEQ=1
> +test $ac_cv_have_decl_streq = no || HAVE_DECL_STREQ=1
>  gl_STRING_MODULE_INDICATOR([stringeq])

This is not reliable. If this configure.ac snippet happens
to be executed before gl_STRING_H_DEFAULTS, the latter will
overwrite the values of HAVE_DECL_MEMEQ, HAVE_DECL_STREQ, setting
them both to 0.

It's better to use the usual idioms; they don't have this problem:


2025-09-17  Bruno Haible  <[email protected]>

        stringeq: Make use of Autoconf more reliable.
        * m4/stringeq.m4: New file.
        * modules/stringeq (Files): Add it.
        (configure.ac): Don't set HAVE_DECL_MEMEQ, HAVE_DECL_STREQ. Instead,
        invoke gl_FUNC_STREQ and gl_FUNC_MEMEQ.

From b9f485800d15c795eca7d4512e1c3c88a64d2efd Mon Sep 17 00:00:00 2001
From: Bruno Haible <[email protected]>
Date: Wed, 17 Sep 2025 22:05:22 +0200
Subject: [PATCH] stringeq: Make use of Autoconf more reliable.

* m4/stringeq.m4: New file.
* modules/stringeq (Files): Add it.
(configure.ac): Don't set HAVE_DECL_MEMEQ, HAVE_DECL_STREQ. Instead,
invoke gl_FUNC_STREQ and gl_FUNC_MEMEQ.
---
 ChangeLog        |  8 ++++++++
 m4/stringeq.m4   | 25 +++++++++++++++++++++++++
 modules/stringeq |  6 +++---
 3 files changed, 36 insertions(+), 3 deletions(-)
 create mode 100644 m4/stringeq.m4

diff --git a/ChangeLog b/ChangeLog
index beab05d811..3065529505 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2025-09-17  Bruno Haible  <[email protected]>
+
+	stringeq: Make use of Autoconf more reliable.
+	* m4/stringeq.m4: New file.
+	* modules/stringeq (Files): Add it.
+	(configure.ac): Don't set HAVE_DECL_MEMEQ, HAVE_DECL_STREQ. Instead,
+	invoke gl_FUNC_STREQ and gl_FUNC_MEMEQ.
+
 2025-09-17  P??draig Brady  <[email protected]>
 
 	cpu-supports: support checks on any architecture
diff --git a/m4/stringeq.m4 b/m4/stringeq.m4
new file mode 100644
index 0000000000..de6d66c12d
--- /dev/null
+++ b/m4/stringeq.m4
@@ -0,0 +1,25 @@
+# stringeq.m4
+# serial 1
+dnl Copyright (C) 2025 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl This file is offered as-is, without any warranty.
+
+AC_DEFUN([gl_FUNC_STREQ],
+[
+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
+  AC_CHECK_DECLS_ONCE([streq])
+  if test $ac_cv_have_decl_streq != no; then
+    HAVE_DECL_STREQ=1
+  fi
+])
+
+AC_DEFUN([gl_FUNC_MEMEQ],
+[
+  AC_REQUIRE([gl_STRING_H_DEFAULTS])
+  AC_CHECK_DECLS_ONCE([memeq])
+  if test $ac_cv_have_decl_memeq != no; then
+    HAVE_DECL_MEMEQ=1
+  fi
+])
diff --git a/modules/stringeq b/modules/stringeq
index bfc387db49..5a21f82484 100644
--- a/modules/stringeq
+++ b/modules/stringeq
@@ -3,15 +3,15 @@ streq and memeq convenience functions for string equality
 
 Files:
 lib/string.c
+m4/stringeq.m4
 
 Depends-on:
 bool
 string-h
 
 configure.ac:
-AC_CHECK_DECLS_ONCE([memeq, streq])
-test $ac_cv_have_decl_memeq = no || HAVE_DECL_MEMEQ=1
-test $ac_cv_have_decl_streq = no || HAVE_DECL_STREQ=1
+gl_FUNC_STREQ
+gl_FUNC_MEMEQ
 gl_STRING_MODULE_INDICATOR([stringeq])
 
 Makefile.am:
-- 
2.50.1

Reply via email to