annotate m4/signal_h.m4 @ 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 c2cbabec01dd
children 2f466cb40423
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
1 # signal_h.m4 serial 9
12559
c2cbabec01dd update nearly all FSF copyright year lists to include 2010
Jim Meyering <meyering@redhat.com>
parents: 12535
diff changeset
2 dnl Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
8782
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
3 dnl This file is free software; the Free Software Foundation
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
4 dnl gives unlimited permission to copy and/or distribute it,
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
5 dnl with or without modifications, as long as this notice is preserved.
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
6
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
7 AC_DEFUN([gl_SIGNAL_H],
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
8 [
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
9 AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
8995
1025663f7658 * m4/include_next.m4 (gl_INCLUDE_NEXT): Define and AC_SUBST
Paul Eggert <eggert@cs.ucla.edu>
parents: 8783
diff changeset
10 gl_CHECK_NEXT_HEADERS([signal.h])
11424
2b94c0e7849d signal.h: always support 'volatile sig_atomic_t'
Eric Blake <ebb9@byu.net>
parents: 10483
diff changeset
11 # AIX declares sig_atomic_t to already include volatile, and C89 compilers
2b94c0e7849d signal.h: always support 'volatile sig_atomic_t'
Eric Blake <ebb9@byu.net>
parents: 10483
diff changeset
12 # then choke on 'volatile sig_atomic_t'. C99 requires that it compile.
2b94c0e7849d signal.h: always support 'volatile sig_atomic_t'
Eric Blake <ebb9@byu.net>
parents: 10483
diff changeset
13 AC_CHECK_TYPE([volatile sig_atomic_t], [],
2b94c0e7849d signal.h: always support 'volatile sig_atomic_t'
Eric Blake <ebb9@byu.net>
parents: 10483
diff changeset
14 [HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=0], [[
2b94c0e7849d signal.h: always support 'volatile sig_atomic_t'
Eric Blake <ebb9@byu.net>
parents: 10483
diff changeset
15 #include <signal.h>
2b94c0e7849d signal.h: always support 'volatile sig_atomic_t'
Eric Blake <ebb9@byu.net>
parents: 10483
diff changeset
16 ]])
12535
8c827f8e5f04 signal, spawn: use link warnings
Eric Blake <ebb9@byu.net>
parents: 11424
diff changeset
17 AC_REQUIRE([AC_TYPE_UID_T])
12766
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
18
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
19 dnl Check for declarations of anything we want to poison if the
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
20 dnl corresponding gnulib module is not in use.
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
21 gl_WARN_ON_USE_PREPARE([[#include <signal.h>
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
22 ]], [sigaction sigaddset sigdelset sigemptyset sigfillset sigismember
2c14f1e449e5 warn-on-use: use instead of link-warning
Eric Blake <ebb9@byu.net>
parents: 12559
diff changeset
23 sigpending sigprocmask])
8782
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
24 ])
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
25
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
26 AC_DEFUN([gl_SIGNAL_MODULE_INDICATOR],
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
27 [
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
28 dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
29 AC_REQUIRE([gl_SIGNAL_H_DEFAULTS])
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
30 GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
31 ])
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
32
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
33 AC_DEFUN([gl_SIGNAL_H_DEFAULTS],
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
34 [
10483
5a24031ebf7d Support signal handling with SIGPIPE on native Windows platforms.
Bruno Haible <bruno@clisp.org>
parents: 10321
diff changeset
35 GNULIB_SIGNAL_H_SIGPIPE=0; AC_SUBST([GNULIB_SIGNAL_H_SIGPIPE])
8783
bb4e89fdfa87 sigprocmask.h is replaced with <signal.h>.
Bruno Haible <bruno@clisp.org>
parents: 8782
diff changeset
36 GNULIB_SIGPROCMASK=0; AC_SUBST([GNULIB_SIGPROCMASK])
10229
29502a2dd08a New module sigaction, for mingw.
Eric Blake <ebb9@byu.net>
parents: 8995
diff changeset
37 GNULIB_SIGACTION=0; AC_SUBST([GNULIB_SIGACTION])
8782
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
38 dnl Assume proper GNU behavior unless another module says otherwise.
8783
bb4e89fdfa87 sigprocmask.h is replaced with <signal.h>.
Bruno Haible <bruno@clisp.org>
parents: 8782
diff changeset
39 HAVE_POSIX_SIGNALBLOCKING=1; AC_SUBST([HAVE_POSIX_SIGNALBLOCKING])
bb4e89fdfa87 sigprocmask.h is replaced with <signal.h>.
Bruno Haible <bruno@clisp.org>
parents: 8782
diff changeset
40 HAVE_SIGSET_T=1; AC_SUBST([HAVE_SIGSET_T])
10229
29502a2dd08a New module sigaction, for mingw.
Eric Blake <ebb9@byu.net>
parents: 8995
diff changeset
41 HAVE_SIGINFO_T=1; AC_SUBST([HAVE_SIGINFO_T])
29502a2dd08a New module sigaction, for mingw.
Eric Blake <ebb9@byu.net>
parents: 8995
diff changeset
42 HAVE_SIGACTION=1; AC_SUBST([HAVE_SIGACTION])
10321
a6493a165dd2 c-stack: fix regression on Irix 5.3 from 2008-06-21
Eric Blake <ebb9@byu.net>
parents: 10229
diff changeset
43 HAVE_STRUCT_SIGACTION_SA_SIGACTION=1;
a6493a165dd2 c-stack: fix regression on Irix 5.3 from 2008-06-21
Eric Blake <ebb9@byu.net>
parents: 10229
diff changeset
44 AC_SUBST([HAVE_STRUCT_SIGACTION_SA_SIGACTION])
11424
2b94c0e7849d signal.h: always support 'volatile sig_atomic_t'
Eric Blake <ebb9@byu.net>
parents: 10483
diff changeset
45 HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=1;
2b94c0e7849d signal.h: always support 'volatile sig_atomic_t'
Eric Blake <ebb9@byu.net>
parents: 10483
diff changeset
46 AC_SUBST([HAVE_TYPE_VOLATILE_SIG_ATOMIC_T])
8782
651dfbbfd8d1 New module 'signal'.
Bruno Haible <bruno@clisp.org>
parents:
diff changeset
47 ])