Emacs <config.h> includes <stdlib.h> in some situations, causing
problems on macOS as described by Eli Zaretskii in:
https://lists.gnu.org/r/emacs-devel/2024-12/msg00923.html
Although this usage is not recommended, it is easier to support
it for POSIX-required headers, than to fix Emacs.
* doc/extern-inline.texi (extern inline): Document the Emacs problem.
* lib/endian.c, lib/math.c, lib/stdbit.c, lib/stdlib.c:
* lib/sys_socket.c, lib/unistd.c, lib/wctype-h.c:
Define #define _GL_..._INLINE to _GL_EXTERN_INLINE
before including <config.h>, not merely before including
the .h file that defines the inline function.
Without this change, Ubuntu clang version 16.0.6 (15) issues
warnings like this: “In file included from xalloc-die.c:25:
./error.h:28:3: warning: #include_next in file found relative to
primary source file or found by absolute path; will search from
start of include path [-Winclude-next-absolute-path]”.
And sure enough, each file includes itself rather than the
next include file and it’s only the subsidiary include that
gets around to including the next include file.
* lib/argmatch.c, lib/chdir-long.c, lib/clean-temp-simple.c:
* lib/clean-temp.c, lib/closein.c, lib/closeout.c, lib/copy-acl.c:
* lib/copy-file.c, lib/creat.c, lib/csharpcomp.c:
* lib/csharpexec.c, lib/error.c, lib/exclude.c, lib/execute.c:
* lib/faccessat.c, lib/fopen.c, lib/freopen.c, lib/getopt.c:
* lib/getopt1.c, lib/git-merge-changelog.c, lib/javacomp.c:
* lib/javaexec.c, lib/javaversion.c, lib/mkdir-p.c, lib/open.c:
* lib/openat-die.c, lib/openat.c, lib/os2-spawn.c:
* lib/pagealign_alloc.c, lib/pipe-filter-gi.c:
* lib/pipe-filter-ii.c, lib/same.c, lib/set-acl.c:
* lib/sigpipe-die.c, lib/spawn-pipe.c, lib/sys_socket.c, lib/truncate.c:
* lib/unistd.c, lib/verror.c, lib/wait-process.c, lib/wctype-h.c:
* lib/xalloc-die.c, lib/xfreopen.c, lib/xmemcoll.c, lib/xprintf.c:
* lib/xsetenv.c, lib/xstdopen.c, lib/xstrtol-error.c:
Use ‘#include <foo.h>’ instead of ‘#include "foo.h"’ if foo.h
possibly uses #include_next. (However, don’t do this on OSF/1
which has its own problems.)
* lib/binary-io.c, lib/math.c, lib/pthread.c, lib/sys_socket.c:
* lib/u64.c, lib/unistd.c:
Append 'typedef int dummy;', to pacify compilers that are picky
about empty translation units.
* lib/sys_socket.c: New file.
* lib/sys_socket.in.h (_GL_SYS_SOCKET_INLINE):
New macro. Replace all uses of 'static inline' with it.
Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
* m4/sys_socket_h.m4 (gl_HEADER_SYS_SOCKET): Do not require AC_C_INLINE.
* modules/sys_socket (Files, lib_SOURCES): Add lib/sys_socket.c.
(Depends-on): Add extern-inline.