annotate modules/search @ 12766:2c14f1e449e5

warn-on-use: use instead of link-warning Each *.in.h file serves two purposes - provide enough self-contained content to serve as a replacement for the system header regardless of the user's compiler, and offer the developer the ability to detect any gnulib modules that might have been inadvertantly excluded. The former requires independence from config.h, and routes everything through a Makefile.am snippet that uses @@ substitution specific to the modules that were in use, with details learned at configure time. The latter works by poisoning anything that gnulib did not replace, but which the developer had natively available, explaining why their tests passed during development. Poisoning relies on gcc features, and requires manual triggering by adding -DGNULIB_POSIXCHECK to CFLAGS; it assumes that <config.h> is properly included. In fact, we do not want to use @@ substitution for HAVE_DECL_* during poisoning, because the warning is only relevant for the gnulib modules which were not included, and thus where the m4 macros to set proper @@ values have not been run. Furthermore, we only need to poison interfaces that already have a declaration; if something is not declared, then the developer wouldn't have been able to link, so their code won't be using the problematic interface in the first place. * modules/stdio (Depends-on, Makefile.am): Drop link-warning. * modules/unistd (Depends-on, Makefile.am): Likewise. * modules/arpa_inet (Depends-on): Replace link-warning with warn-on-use. (Makefile.am): Update rules accordingly. * modules/ctype (Depends-on, Makefile.am): Likewise. * modules/dirent (Depends-on, Makefile.am): Likewise. * modules/fcntl-h (Depends-on, Makefile.am): Likewise. * modules/inttypes (Depends-on, Makefile.am): Likewise. * modules/langinfo (Depends-on, Makefile.am): Likewise. * modules/locale (Depends-on, Makefile.am): Likewise. * modules/math (Depends-on, Makefile.am): Likewise. * modules/search (Depends-on, Makefile.am): Likewise. * modules/signal (Depends-on, Makefile.am): Likewise. * modules/spawn (Depends-on, Makefile.am): Likewise. * modules/stdlib (Depends-on, Makefile.am): Likewise. * modules/string (Depends-on, Makefile.am): Likewise. * modules/strings (Depends-on, Makefile.am): Likewise. * modules/sys_file (Depends-on, Makefile.am): Likewise. * modules/sys_ioctl (Depends-on, Makefile.am): Likewise. * modules/sys_select (Depends-on, Makefile.am): Likewise. * modules/sys_socket (Depends-on, Makefile.am): Likewise. * modules/sys_stat (Depends-on, Makefile.am): Likewise. * modules/sys_times (Depends-on, Makefile.am): Likewise. * modules/sys_utsname (Depends-on, Makefile.am): Likewise. * modules/wchar (Depends-on, Makefile.am): Likewise. * m4/arpa_inet_h.m4 (gl_HEADER_ARPA_INET): Check which functions should be poisoned. * m4/ctype.m4 (gl_CTYPE_H): Likewise. * m4/dirent_h.m4 (gl_DIRENT_H): Likewise. * m4/fcntl_h.m4 (gl_FCNTL_H): Likewise. * m4/inttypes.m4 (gl_INTTYPES_H): Likewise. * m4/langinfo_h.m4 (gl_LANGINFO_H): Likewise. * m4/locale_h.m4 (gl_LOCALE_H): Likewise. * m4/math_h.m4 (gl_MATH_H): Likewise. * m4/search_h.m4 (gl_SEARCH_H): Likewise. * m4/signal_h.m4 (gl_SIGNAL_H): Likewise. * m4/spawn_h.m4 (gl_SPAWN_H): Likewise. * m4/stdio_h.m4 (gl_STDIO_H): Likewise. * m4/stdlib_h.m4 (gl_STDLIB_H): Likewise. * m4/string_h.m4 (gl_HEADER_STRING_H_BODY): Likewise. * m4/strings_h.m4 (gl_HEADER_STRINGS_H_BODY): Likewise. * m4/sys_file_h.m4 (gl_HEADER_SYS_FILE_H_DEFAULTS): Likewise. * m4/sys_ioctl_h.m4 (gl_SYS_IOCTL_H): Likewise. * m4/sys_select_h.m4 (gl_HEADER_SYS_SELECT): Likewise. * m4/sys_socket_h.m4 (gl_HEADER_SYS_SOCKET): Likewise. * m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Likewise. * m4/sys_times_h.m4 (gl_SYS_TIMES_H): Likewise. * m4/sys_utsname_h.m4 (gl_SYS_UTSNAME_H): Likewise. * m4/unistd_h.m4 (gl_UNISTD_H): Likewise. * m4/wchar.m4 (gl_WCHAR_H): Likewise. * lib/arpa_inet.in.h: Use _GL_WARN_ON_USE instead of GL_LINK_WARNING. * lib/ctype.in.h: Likewise. * lib/dirent.in.h: Likewise. * lib/fcntl.in.h: Likewise. * lib/inttypes.in.h: Likewise. * lib/langinfo.in.h: Likewise. * lib/locale.in.h: Likewise. * lib/math.in.h: Likewise. * lib/search.in.h: Likewise. * lib/signal.in.h: Likewise. * lib/spawn.in.h: Likewise. * lib/stdio.in.h: Likewise. * lib/stdlib.in.h: Likewise. * lib/string.in.h: Likewise. * lib/strings.in.h: Likewise. * lib/sys_file.in.h: Likewise. * lib/sys_ioctl.in.h: Likewise. * lib/sys_select.in.h: Likewise. * lib/sys_socket.in.h: Likewise. * lib/sys_stat.in.h: Likewise. * lib/sys_times.in.h: Likewise. * lib/sys_utsname.in.h: Likewise. * lib/unistd.in.h: Likewise. * lib/wchar.in.h: Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Wed, 16 Dec 2009 16:20:28 -0700
parents f7842310a565
children dbc0820f9ddc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8532
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
1 Description:
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
2 A GNU-like <search.h>.
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
3
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
4 Files:
9258
bee5960c276a Rename search_.h to search.in.h.
Bruno Haible <bruno@clisp.org>
parents: 8995
diff changeset
5 lib/search.in.h
8532
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6 m4/search_h.m4
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
7
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
8 Depends-on:
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12422
diff changeset
9 arg-nonnull
8995
1025663f7658 * m4/include_next.m4 (gl_INCLUDE_NEXT): Define and AC_SUBST
Paul Eggert <eggert@cs.ucla.edu>
parents: 8819
diff changeset
10 include_next
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12422
diff changeset
11 warn-on-use
8532
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
12
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
13 configure.ac:
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
14 gl_SEARCH_H
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
15
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
16 Makefile.am:
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
17 BUILT_SOURCES += search.h
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
18
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
19 # We need the following in order to create <search.h> when the system
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
20 # doesn't have one that works with the given compiler.
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12422
diff changeset
21 search.h: search.in.h $(WARN_ON_USE_H) $(ARG_NONNULL_H)
11868
67c2b22aff08 annotate automake snippets with $(AM_V_GEN) and $(AM_V_at)
Jim Meyering <meyering@redhat.com>
parents: 10375
diff changeset
22 $(AM_V_GEN)rm -f $@-t $@ && \
8532
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
23 { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
24 sed -e 's|@''HAVE_SEARCH_H''@|$(HAVE_SEARCH_H)|g' \
10375
f96e845fc36d Avoid some "gcc -pedantic" warnings.
Bruno Haible <bruno@clisp.org>
parents: 9595
diff changeset
25 -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
f96e845fc36d Avoid some "gcc -pedantic" warnings.
Bruno Haible <bruno@clisp.org>
parents: 9595
diff changeset
26 -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
8995
1025663f7658 * m4/include_next.m4 (gl_INCLUDE_NEXT): Define and AC_SUBST
Paul Eggert <eggert@cs.ucla.edu>
parents: 8819
diff changeset
27 -e 's|@''NEXT_SEARCH_H''@|$(NEXT_SEARCH_H)|g' \
8532
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
28 -e 's|@''GNULIB_TSEARCH''@|$(GNULIB_TSEARCH)|g' \
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
29 -e 's|@''HAVE_TSEARCH''@|$(HAVE_TSEARCH)|g' \
9595
53dc0fa4233a Work around OpenBSD 4.0 tdelete() bug.
Bruno Haible <bruno@clisp.org>
parents: 9258
diff changeset
30 -e 's|@''REPLACE_TSEARCH''@|$(REPLACE_TSEARCH)|g' \
12422
f7842310a565 New module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible <bruno@clisp.org>
parents: 12410
diff changeset
31 -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12422
diff changeset
32 -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
9258
bee5960c276a Rename search_.h to search.in.h.
Bruno Haible <bruno@clisp.org>
parents: 8995
diff changeset
33 < $(srcdir)/search.in.h; \
11868
67c2b22aff08 annotate automake snippets with $(AM_V_GEN) and $(AM_V_at)
Jim Meyering <meyering@redhat.com>
parents: 10375
diff changeset
34 } > $@-t && \
8532
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
35 mv $@-t $@
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
36 MOSTLYCLEANFILES += search.h search.h-t
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
37
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
38 Include:
12008
18ea6ab4e81d maint: make Include sections of modules consistent
Eric Blake <ebb9@byu.net>
parents: 11868
diff changeset
39 <search.h>
8532
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
40
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
41 License:
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
42 LGPL
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
43
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
44 Maintainer:
11f6a87d953a New module 'search'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
45 all