diff options
author | Bruno Haible <bruno@clisp.org> | 2023-04-12 14:49:29 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2023-04-12 19:37:37 +0200 |
commit | 8ad7bc671475d3291df10a1a1d64fddfd30e5175 (patch) | |
tree | 71f142a7edbda7e5ff7cd348151a0f2b46bfb346 /Makefile | |
parent | eebb3a74aecc84cc2a316015ca58dc8ba3f35875 (diff) | |
download | gnulib-8ad7bc671475d3291df10a1a1d64fddfd30e5175.tar.gz |
Add more reminders to include <config.h>.
* m4/gnulib-common.m4 (gl_COMMON): In config.h, define
_GL_CONFIG_H_INCLUDED.
* lib/acl-internal.h: Test _GL_CONFIG_H_INCLUDED instead of
_GL_INLINE_HEADER_BEGIN.
* lib/alignalloc.h: Likewise.
* lib/argp-fmtstream.h: Likewise.
* lib/argp.h: Likewise.
* lib/binary-io.h: Likewise.
* lib/bitrotate.h: Likewise.
* lib/c-ctype.h: Likewise.
* lib/count-leading-zeros.h: Likewise.
* lib/count-one-bits.h: Likewise.
* lib/count-trailing-zeros.h: Likewise.
* lib/eealloc.h: Likewise.
* lib/execinfo.in.h: Likewise.
* lib/gethrxtime.h: Likewise.
* lib/gl_list.h: Likewise.
* lib/gl_map.h: Likewise.
* lib/gl_omap.h: Likewise.
* lib/gl_openssl.h: Likewise.
* lib/gl_oset.h: Likewise.
* lib/gl_set.h: Likewise.
* lib/gl_xlist.h: Likewise.
* lib/gl_xmap.h: Likewise.
* lib/gl_xomap.h: Likewise.
* lib/gl_xoset.h: Likewise.
* lib/gl_xset.h: Likewise.
* lib/gl_xsublist.h: Likewise.
* lib/glthread/cond.h: Likewise.
* lib/hamt.h: Likewise.
* lib/ialloc.h: Likewise.
* lib/math.in.h: Likewise.
* lib/mbchar.h: Likewise.
* lib/mbfile.h: Likewise.
* lib/mbiter.h: Likewise.
* lib/mbuiter.h: Likewise.
* lib/openat.h: Likewise.
* lib/pipe-filter-aux.h: Likewise.
* lib/priv-set.h: Likewise.
* lib/safe-alloc.h: Likewise.
* lib/savewd.h: Likewise.
* lib/se-context.in.h: Likewise.
* lib/se-label.in.h: Likewise.
* lib/se-selinux.in.h: Likewise.
* lib/sig-handler.h: Likewise.
* lib/stat-time.h: Likewise.
* lib/string-desc-quotearg.h: Likewise.
* lib/string-desc.h: Likewise.
* lib/sys_socket.in.h: Likewise.
* lib/timespec.h: Likewise.
* lib/u64.h: Likewise.
* lib/uchar.in.h: Likewise.
* lib/unistd.in.h: Likewise.
* lib/utimens.h: Likewise.
* lib/wctype.in.h: Likewise.
* lib/xalloc.h: Likewise.
* lib/xbinary-io.h: Likewise.
* lib/xsize.h: Likewise.
* lib/xstring-desc.h: Likewise.
* lib/xtime.h: Likewise.
* lib/acl.h: Check that config.h was already included.
* lib/alignof.h: Likewise.
* lib/argmatch.h: Likewise.
* lib/argv-iter.h: Likewise.
* lib/arpa_inet.in.h: Likewise.
* lib/attribute.h: Likewise.
* lib/backupfile.h: Likewise.
* lib/base32.h: Likewise.
* lib/base64.h: Likewise.
* lib/basename-lgpl.h: Likewise.
* lib/bitset.h: Likewise.
* lib/bitsetv.h: Likewise.
* lib/c-snprintf.h: Likewise.
* lib/c-stack.h: Likewise.
* lib/c-strcase.h: Likewise.
* lib/c-vasnprintf.h: Likewise.
* lib/c-vasprintf.h: Likewise.
* lib/c-vsnprintf.h: Likewise.
* lib/c-xvasprintf.h: Likewise.
* lib/canon-host.h: Likewise.
* lib/canonicalize.h: Likewise.
* lib/clean-temp.h: Likewise.
* lib/concat-filename.h: Likewise.
* lib/ctype.in.h: Likewise.
* lib/dfa.h: Likewise.
* lib/di-set.h: Likewise.
* lib/dirent-safer.h: Likewise.
* lib/dirent.in.h: Likewise.
* lib/dirname.h: Likewise.
* lib/eloop-threshold.h: Likewise.
* lib/error.in.h: Likewise.
* lib/exclude.h: Likewise.
* lib/fatal-signal.h: Likewise.
* lib/fcntl.in.h: Likewise.
* lib/file-type.h: Likewise.
* lib/filenamecat.h: Likewise.
* lib/filevercmp.h: Likewise.
* lib/flexmember.h: Likewise.
* lib/fnmatch.in.h: Likewise.
* lib/fpending.h: Likewise.
* lib/freadable.h: Likewise.
* lib/freadahead.h: Likewise.
* lib/freading.h: Likewise.
* lib/fts_.h: Likewise.
* lib/fwritable.h: Likewise.
* lib/fwriting.h: Likewise.
* lib/gc.h: Likewise.
* lib/get_progname_of.h: Likewise.
* lib/glob.in.h: Likewise.
* lib/glthread/thread.h: Likewise.
* lib/hash-pjw-bare.h: Likewise.
* lib/hash-pjw.h: Likewise.
* lib/hash-triple.h: Likewise.
* lib/hash.h: Likewise.
* lib/i-ring.h: Likewise.
* lib/iconv.in.h: Likewise.
* lib/ino-map.h: Likewise.
* lib/inttostr.h: Likewise.
* lib/inttypes.in.h: Likewise.
* lib/javaversion.h: Likewise.
* lib/langinfo.in.h: Likewise.
* lib/locale.in.h: Likewise.
* lib/localename.h: Likewise.
* lib/malloc.in.h: Likewise.
* lib/malloca.h: Likewise.
* lib/memcasecmp.h: Likewise.
* lib/memchr2.h: Likewise.
* lib/memcmp2.h: Likewise.
* lib/modechange.h: Likewise.
* lib/monetary.in.h: Likewise.
* lib/mountlist.h: Likewise.
* lib/netdb.in.h: Likewise.
* lib/obstack.h: Likewise.
* lib/opendirat.h: Likewise.
* lib/pagealign_alloc.h: Likewise.
* lib/pipe-filter.h: Likewise.
* lib/poll.in.h: Likewise.
* lib/pthread.in.h: Likewise.
* lib/pty.in.h: Likewise.
* lib/quotearg.h: Likewise.
* lib/read-file.h: Likewise.
* lib/readline.h: Likewise.
* lib/readutmp.h: Likewise.
* lib/regex-quote.h: Likewise.
* lib/relocatable.h: Likewise.
* lib/savedir.h: Likewise.
* lib/sched.in.h: Likewise.
* lib/search.in.h: Likewise.
* lib/sh-quote.h: Likewise.
* lib/signal.in.h: Likewise.
* lib/sigpipe-die.h: Likewise.
* lib/sockets.h: Likewise.
* lib/spawn.in.h: Likewise.
* lib/ssfmalloc.h: Likewise.
* lib/stack.h: Likewise.
* lib/stdalign.in.h: Likewise.
* lib/stdarg.in.h: Likewise.
* lib/stddef.in.h: Likewise.
* lib/stdio-safer.h: Likewise.
* lib/stdio.in.h: Likewise.
* lib/stdlib.in.h: Likewise.
* lib/stdnoreturn.in.h: Likewise.
* lib/strerror-override.h: Likewise.
* lib/striconv.h: Likewise.
* lib/striconveh.h: Likewise.
* lib/striconveha.h: Likewise.
* lib/string-buffer.h: Likewise.
* lib/string.in.h: Likewise.
* lib/strings.in.h: Likewise.
* lib/strnlen1.h: Likewise.
* lib/sys_file.in.h: Likewise.
* lib/sys_ioctl.in.h: Likewise.
* lib/sys_random.in.h: Likewise.
* lib/sys_resource.in.h: Likewise.
* lib/sys_select.in.h: Likewise.
* lib/sys_stat.in.h: Likewise.
* lib/sys_time.in.h: Likewise.
* lib/sys_times.in.h: Likewise.
* lib/sys_utsname.in.h: Likewise.
* lib/sys_wait.in.h: Likewise.
* lib/system-quote.h: Likewise.
* lib/term-style-control.h: Likewise.
* lib/termios.in.h: Likewise.
* lib/textstyle.in.h: Likewise.
* lib/threads.in.h: Likewise.
* lib/time.in.h: Likewise.
* lib/trim.h: Likewise.
* lib/utime.in.h: Likewise.
* lib/utmp.in.h: Likewise.
* lib/vasnprintf.h: Likewise.
* lib/verror.h: Likewise.
* lib/version-etc.h: Likewise.
* lib/wchar.in.h: Likewise.
* lib/windows-spawn.h: Likewise.
* lib/windows-thread.h: Likewise.
* lib/xgetcwd.h: Likewise.
* lib/xgetdomainname.h: Likewise.
* lib/xgethostname.h: Likewise.
* lib/xmalloca.h: Likewise.
* lib/xmemdup0.h: Likewise.
* lib/xprintf.h: Likewise.
* lib/xreadlink.h: Likewise.
* lib/xstriconv.h: Likewise.
* lib/xstriconveh.h: Likewise.
* lib/xstrndup.h: Likewise.
* lib/xstrtol-error.h: Likewise.
* lib/xvasprintf.h: Likewise.
* Makefile (config_h_MACROS*): New variables.
(sc_check_config_h_reminder): New rule.
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 89 |
1 files changed, 89 insertions, 0 deletions
@@ -138,6 +138,95 @@ sc_check_sym_list: <(sed -n /^_intprops_name/,/^_intprops_syms_re/p top/maint.mk \ |sed '/^_/d;s/^ //;s/ *\\$$//') + +# List of C macros defined through AH_VERBATIM in m4/extern-inline.m4: +config_h_MACROS1 = \ + _GL_INLINE \ + _GL_EXTERN_INLINE \ + _GL_INLINE_HEADER_BEGIN \ + _GL_INLINE_HEADER_END +# List of C macros defined through AH_VERBATIM in m4/gnulib-common.m4: +config_h_MACROS2 = \ + _GL_GNUC_PREREQ \ + _Noreturn \ + _GL_ATTRIBUTE_ALLOC_SIZE \ + _GL_ATTRIBUTE_ALWAYS_INLINE \ + _GL_ATTRIBUTE_ARTIFICIAL \ + _GL_ATTRIBUTE_COLD \ + _GL_ATTRIBUTE_CONST \ + _GL_ATTRIBUTE_DEALLOC \ + _GL_ATTRIBUTE_DEPRECATED \ + _GL_ATTRIBUTE_ERROR \ + _GL_ATTRIBUTE_WARNING \ + _GL_ATTRIBUTE_EXTERNALLY_VISIBLE \ + _GL_ATTRIBUTE_FALLTHROUGH \ + _GL_ATTRIBUTE_FORMAT \ + _GL_ATTRIBUTE_LEAF \ + _GL_ATTRIBUTE_MALLOC \ + _GL_ATTRIBUTE_MAY_ALIAS \ + _GL_ATTRIBUTE_MAYBE_UNUSED \ + _GL_UNUSED \ + _GL_ATTRIBUTE_NODISCARD \ + _GL_ATTRIBUTE_NOINLINE \ + _GL_ATTRIBUTE_NONNULL \ + _GL_ATTRIBUTE_NONSTRING \ + _GL_ATTRIBUTE_NOTHROW \ + _GL_ATTRIBUTE_PACKED \ + _GL_ATTRIBUTE_PURE \ + _GL_ATTRIBUTE_RETURNS_NONNULL \ + _GL_ATTRIBUTE_SENTINEL \ + _GL_ATTRIBUTE_UNUSED \ + _GL_UNUSED_LABEL \ + _GL_BEGIN_C_LINKAGE \ + _GL_END_C_LINKAGE \ + _GL_ASYNC_SAFE \ + _GL_CMP +# List of C macros defined through AH_VERBATIM in m4/nullptr.m4: +config_h_MACROS3 = \ + nullptr +# List of C macros defined through AH_VERBATIM in m4/posixcheck.m4: +config_h_MACROS4 = \ + GNULIB_POSIXCHECK +# List of C macros defined through AH_VERBATIM in m4/sh-filename.m4: +config_h_MACROS5 = \ + BOURNE_SHELL +# List of C macros defined through AH_VERBATIM in m4/stdalign.m4: +config_h_MACROS6 = \ + alignof \ + alignas +# List of C macros defined through AH_VERBATIM in m4/stdarg.m4: +config_h_MACROS7 = \ + va_copy +# List of C macros defined through AH_VERBATIM in m4/threads_h.m4: +config_h_MACROS8 = \ + _Thread_local +# List of C macros defined through AH_VERBATIM (only the most important ones): +config_h_MACROS = \ + $(config_h_MACROS1) $(config_h_MACROS2) $(config_h_MACROS3) \ + $(config_h_MACROS4) $(config_h_MACROS5) $(config_h_MACROS6) \ + $(config_h_MACROS7) $(config_h_MACROS8) + +# Ensure that .h files that use macros from config.h contain a reminder to +# 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 \ + : "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 \ + grep '# *error "Please include config[.]h first[.]"' $$file >/dev/null \ + || { echo -n "File $$file lacks a config.h reminder. Needed for:"; \ + for macro in $(config_h_MACROS); do \ + if grep -F -w $$macro $$file >/dev/null; then echo -n " $$macro"; fi; \ + done; \ + echo; \ + fail=1; \ + }; \ + fi; \ + done; \ + exit $$fail + + # Ensure that the copyright statements in files and in the module descriptions # are consistent. sc_check_copyright: |