changeset 12488:9bd9b7a4b42b

build: pull in conditional headers during GNULIB_POSIXCHECK Any time we conditionally include a header in order to satisfy prerequisites of one module, we must also include that header under GNULIB_POSIXCHECK to avoid compilation errors if that module is not in use. If this is not done, then our link warning override can occur before the system's declaration, which causes a syntax error when the system header is finally included. * lib/stdio.in.h (includes): Using GNULIB_POSIXCHECK also requires definitions from any conditionally-included headers. * lib/stdlib.in.h (includes): Likewise. * lib/unistd.in.h (includes): Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Thu, 24 Dec 2009 06:01:43 -0700
parents 8ba9831d54bf
children 33ab12a7cea2
files ChangeLog lib/stdio.in.h lib/stdlib.in.h lib/unistd.in.h
diffstat 4 files changed, 22 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-12-24  Eric Blake  <ebb9@byu.net>
+
+	build: pull in conditional headers during GNULIB_POSIXCHECK
+	* lib/stdio.in.h (includes): Using GNULIB_POSIXCHECK also requires
+	definitions from any conditionally-included headers.
+	* lib/stdlib.in.h (includes): Likewise.
+	* lib/unistd.in.h (includes): Likewise.
+
 2009-12-24  Bruno Haible  <bruno@clisp.org>
 
 	* tests/test-argv-iter.c: Include header file being tested immediately
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -39,10 +39,11 @@
 #include <stdarg.h>
 #include <stddef.h>
 
-#if (@GNULIB_FSEEKO@ && @REPLACE_FSEEKO@) \
-  || (@GNULIB_FTELLO@ && @REPLACE_FTELLO@) \
-  || (@GNULIB_GETDELIM@ && !@HAVE_DECL_GETDELIM@) \
-  || (@GNULIB_GETLINE@ && (!@HAVE_DECL_GETLINE@ || @REPLACE_GETLINE@))
+#if ((@GNULIB_FSEEKO@ && @REPLACE_FSEEKO@) \
+     || (@GNULIB_FTELLO@ && @REPLACE_FTELLO@) \
+     || (@GNULIB_GETDELIM@ && !@HAVE_DECL_GETDELIM@) \
+     || (@GNULIB_GETLINE@ && (!@HAVE_DECL_GETLINE@ || @REPLACE_GETLINE@)) \
+     || defined GNULIB_POSIXCHECK)
 /* Get off_t and ssize_t.  */
 # include <sys/types.h>
 #endif
--- a/lib/stdlib.in.h
+++ b/lib/stdlib.in.h
@@ -39,7 +39,7 @@
 #include <stddef.h>
 
 /* Solaris declares getloadavg() in <sys/loadavg.h>.  */
-#if @GNULIB_GETLOADAVG@ && @HAVE_SYS_LOADAVG_H@
+#if (@GNULIB_GETLOADAVG@ || defined GNULIB_GETLOADAVG) && @HAVE_SYS_LOADAVG_H@
 # include <sys/loadavg.h>
 #endif
 
@@ -49,7 +49,8 @@
 # include <random.h>
 #endif
 
-#if @GNULIB_RANDOM_R@ || !@HAVE_STRUCT_RANDOM_DATA@
+#if (@GNULIB_RANDOM_R@ || !@HAVE_STRUCT_RANDOM_DATA@ \
+     || defined GNULIB_POSIXCHECK)
 # include <stdint.h>
 #endif
 
--- a/lib/unistd.in.h
+++ b/lib/unistd.in.h
@@ -35,12 +35,12 @@
 /* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>.  */
 /* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>.  */
 #if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \
-     || @GNULIB_SYMLINKAT@)
+     || @GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK)
 # include <stdio.h>
 #endif
 
 /* Cygwin 1.7.1 declares unlinkat in <fcntl.h>, not in <unistd.h>.  */
-#if @GNULIB_UNLINKAT@
+#if @GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK
 # include <fcntl.h>
 #endif
 
@@ -50,13 +50,15 @@
 #include <stdlib.h>
 
 /* mingw declares getcwd in <io.h>, not in <unistd.h>.  */
-#if @GNULIB_GETCWD@ && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)
+#if ((@GNULIB_GETCWD@ || defined GNULIB_POSIXCHECK) \
+     && ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
 # include <io.h>
 #endif
 
 #if ((@GNULIB_WRITE@ && @REPLACE_WRITE@ && @GNULIB_UNISTD_H_SIGPIPE@)   \
      || (@GNULIB_READLINK@ && (!@HAVE_READLINK@ || @REPLACE_READLINK@)) \
-     || (@GNULIB_READLINKAT@ && !@HAVE_READLINKAT@))
+     || (@GNULIB_READLINKAT@ && !@HAVE_READLINKAT@) \
+     || defined GNULIB_POSIXCHECK)
 /* Get ssize_t.  */
 # include <sys/types.h>
 #endif