After updating the list of _GL_ATTRIBUTE* macros in the Makefile, these failures are seen:
File lib/areadlink.h lacks a config.h reminder. Needed for: _GL_ATTRIBUTE_DEALLOC_FREE File lib/crc.h lacks a config.h reminder. Needed for: _GL_ATTRIBUTE_PURE File lib/crc-x86_64.h lacks a config.h reminder. Needed for: _GL_ATTRIBUTE_PURE File lib/diffseq.h lacks a config.h reminder. Needed for: _GL_GNUC_PREREQ File lib/gl_sublist.h lacks a config.h reminder. Needed for: _GL_ATTRIBUTE_DEALLOC _GL_ATTRIBUTE_RETURNS_NONNULL File lib/noreturn.h lacks a config.h reminder. Needed for: _Noreturn File lib/signed-nan.h lacks a config.h reminder. Needed for: _GL_UNUSED File lib/signed-snan.h lacks a config.h reminder. Needed for: _GL_UNUSED File lib/snan.h lacks a config.h reminder. Needed for: _GL_UNUSED File lib/uninorm.in.h lacks a config.h reminder. Needed for: _GL_ATTRIBUTE_DEALLOC File lib/unistr.in.h lacks a config.h reminder. Needed for: _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_MAYBE_UNUSED File lib/unicase/special-casing.in.h lacks a config.h reminder. Needed for: _GL_ATTRIBUTE_NONSTRING Fixed as follows. 2025-05-07 Bruno Haible <br...@clisp.org> Fix "make sc_check_config_h_reminder" failure. * Makefile (config_h_MACROS2): Add _GL_ATTRIBUTE_DEALLOC_FREE, _GL_ATTRIBUTE_NONNULL_IF_NONZERO, _GL_ATTRIBUTE_REPRODUCIBLE, _GL_ATTRIBUTE_UNSEQUENCED, _GL_ATTRIBUTE_CAPABILITY_TYPE, _GL_ATTRIBUTE_ACQUIRE_CAPABILITY, _GL_ATTRIBUTE_RELEASE_CAPABILITY. (exclude_file_name_regexp--sc_check_config_h_reminder): New variable. (sc_check_config_h_reminder): Use it. * lib/areadlink.h: Add <config.h> reminder. * lib/crc.h: Likewise. * lib/crc-x86_64.h: Likewise. * lib/diffseq.h: Likewise. * lib/gl_sublist.h: Likewise. * lib/signed-nan.h: Likewise. * lib/signed-snan.h: Likewise. * lib/snan.h: Likewise. * lib/unicase/special-casing.in.h: Likewise. diff --git a/Makefile b/Makefile index a725c5349e..88f8cd304d 100644 --- a/Makefile +++ b/Makefile @@ -157,6 +157,7 @@ config_h_MACROS2 = \ _GL_ATTRIBUTE_COLD \ _GL_ATTRIBUTE_CONST \ _GL_ATTRIBUTE_DEALLOC \ + _GL_ATTRIBUTE_DEALLOC_FREE \ _GL_ATTRIBUTE_DEPRECATED \ _GL_ATTRIBUTE_ERROR \ _GL_ATTRIBUTE_WARNING \ @@ -171,14 +172,20 @@ config_h_MACROS2 = \ _GL_ATTRIBUTE_NODISCARD \ _GL_ATTRIBUTE_NOINLINE \ _GL_ATTRIBUTE_NONNULL \ + _GL_ATTRIBUTE_NONNULL_IF_NONZERO \ _GL_ATTRIBUTE_NONSTRING \ _GL_ATTRIBUTE_NOTHROW \ _GL_ATTRIBUTE_PACKED \ _GL_ATTRIBUTE_PURE \ + _GL_ATTRIBUTE_REPRODUCIBLE \ _GL_ATTRIBUTE_RETURNS_NONNULL \ _GL_ATTRIBUTE_SENTINEL \ + _GL_ATTRIBUTE_UNSEQUENCED \ _GL_ATTRIBUTE_UNUSED \ _GL_UNUSED_LABEL \ + _GL_ATTRIBUTE_CAPABILITY_TYPE \ + _GL_ATTRIBUTE_ACQUIRE_CAPABILITY \ + _GL_ATTRIBUTE_RELEASE_CAPABILITY \ _GL_BEGIN_C_LINKAGE \ _GL_END_C_LINKAGE \ _GL_ASYNC_SAFE \ @@ -212,7 +219,8 @@ config_h_MACROS = \ # include <config.h>. sc_check_config_h_reminder: fail=0; \ - for file in `grep -l -F -w -f <(for macro in $(config_h_MACROS); do echo $$macro; done) lib/*.h lib/*/*.h`; do \ + for file in `grep -l -F -w -f <(for macro in $(config_h_MACROS); do echo $$macro; done) lib/*.h lib/*/*.h \ + | grep -vE '$(exclude_file_name_regexp--sc_check_config_h_reminder)'`; do \ : "Filter out .h files that are not public header files of their respective module."; \ include_pattern='[<"]'`echo $$file | sed -e 's,^lib/,,' -e 's,[.]in[.]h,.h,' -e 's,_,[/_],g' -e 's,[.],[.],g'`'[>"]' ; \ if ./gnulib-tool --extract-include-directive `./gnulib-tool --find $$file` | grep "$$include_pattern" >/dev/null; then \ @@ -228,6 +236,8 @@ sc_check_config_h_reminder: fi; \ done; \ exit $$fail +exclude_file_name_regexp--sc_check_config_h_reminder = \ + ^lib/(noreturn\.h|(uninorm|unistr)\.in\.h) # Ensure that .h files that invoke _GL_INLINE_HEADER_BEGIN also invoke diff --git a/lib/areadlink.h b/lib/areadlink.h index f3ce9cdb29..feec8a8f85 100644 --- a/lib/areadlink.h +++ b/lib/areadlink.h @@ -18,6 +18,11 @@ /* Written by Jim Meyering <j...@meyering.net> */ +/* This file uses _GL_ATTRIBUTE_DEALLOC_FREE. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + #include <stdlib.h> #ifdef __cplusplus diff --git a/lib/crc-x86_64.h b/lib/crc-x86_64.h index ea8e4b43ed..193156ce27 100644 --- a/lib/crc-x86_64.h +++ b/lib/crc-x86_64.h @@ -19,6 +19,11 @@ #ifndef CRC_X86_64_H #define CRC_X86_64_H 1 +/* This file uses _GL_ATTRIBUTE_PURE. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + #include <stddef.h> #include <stdint.h> diff --git a/lib/crc.h b/lib/crc.h index 059de47dd8..1281a50b04 100644 --- a/lib/crc.h +++ b/lib/crc.h @@ -19,6 +19,11 @@ #ifndef CRC_H #define CRC_H 1 +/* This file uses _GL_ATTRIBUTE_PURE. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + #include <stddef.h> #include <stdint.h> diff --git a/lib/diffseq.h b/lib/diffseq.h index 9a454a6c91..914bc643bb 100644 --- a/lib/diffseq.h +++ b/lib/diffseq.h @@ -77,6 +77,11 @@ #include "minmax.h" */ +/* This file uses _GL_GNUC_PREREQ. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + /* Maximum value of type OFFSET. */ #ifndef OFFSET_MAX # define OFFSET_MAX \ diff --git a/lib/gl_sublist.h b/lib/gl_sublist.h index 30aa2c8811..15566b687d 100644 --- a/lib/gl_sublist.h +++ b/lib/gl_sublist.h @@ -18,6 +18,11 @@ #ifndef _GL_SUBLIST_H #define _GL_SUBLIST_H +/* This file uses _GL_ATTRIBUTE_DEALLOC, _GL_ATTRIBUTE_RETURNS_NONNULL. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + #include "gl_list.h" #ifdef __cplusplus diff --git a/lib/signed-nan.h b/lib/signed-nan.h index d55429fa66..fcc12d34cf 100644 --- a/lib/signed-nan.h +++ b/lib/signed-nan.h @@ -17,6 +17,11 @@ #ifndef _SIGNED_NAN_H #define _SIGNED_NAN_H +/* This file uses _GL_UNUSED. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + #include <math.h> #include "nan.h" diff --git a/lib/signed-snan.h b/lib/signed-snan.h index 43e505cffe..ad0f4cddf3 100644 --- a/lib/signed-snan.h +++ b/lib/signed-snan.h @@ -17,6 +17,11 @@ #ifndef _SIGNED_SNAN_H #define _SIGNED_SNAN_H +/* This file uses _GL_UNUSED. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + #include "signed-nan.h" #include "snan.h" diff --git a/lib/snan.h b/lib/snan.h index 2621b38218..1cd46c0e76 100644 --- a/lib/snan.h +++ b/lib/snan.h @@ -17,6 +17,11 @@ #ifndef _SNAN_H #define _SNAN_H +/* This file uses _GL_UNUSED. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + #include <float.h> #include <limits.h> #include <math.h> diff --git a/lib/unicase/special-casing.in.h b/lib/unicase/special-casing.in.h index 81ec05acbc..6ea5f8009e 100644 --- a/lib/unicase/special-casing.in.h +++ b/lib/unicase/special-casing.in.h @@ -23,6 +23,11 @@ License and of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ +/* This file uses _GL_ATTRIBUTE_NONSTRING. */ +#if !_GL_CONFIG_H_INCLUDED + #error "Please include config.h first." +#endif + #include <stddef.h> #ifdef __cplusplus