changeset 9412:f5d73cf73b89

Document some more things the gnulib user must be aware of.
author Bruno Haible <bruno@clisp.org>
date Sun, 28 Oct 2007 01:35:59 +0200
parents 5ea76912f0b5
children 9572edc3cc57
files ChangeLog doc/gnulib-tool.texi doc/gnulib.texi
diffstat 3 files changed, 43 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2007-10-27  Bruno Haible  <bruno@clisp.org>
+
+	* doc/gnulib.texi: Invoke @firstparagraphindent.
+	* doc/gnulib-tool.texi (Simple update): Mention possible incompatible
+	changes in gnulib.
+	(Source changes): New section.
+
 2007-10-26  Bruno Haible  <bruno@clisp.org>
 
 	* m4/gnulib-common.m4 (AC_C_RESTRICT): New overriding definition,
--- a/doc/gnulib-tool.texi
+++ b/doc/gnulib-tool.texi
@@ -31,6 +31,7 @@
 * Initial import::              First import of Gnulib modules.
 * Modified imports::            Changing the import specification.
 * Simple update::               Tracking Gnulib development.
+* Source changes::              Impact of Gnulib on your source files.
 * VCS Issues::                  Integration with Version Control Systems.
 @end menu
 
@@ -322,6 +323,7 @@
 file.  Corresponds to the @samp{--macro-prefix} command line argument.
 @end table
 
+
 @node Simple update
 @section Simple update
 
@@ -333,8 +335,39 @@
 $ gnulib-tool --import
 @end smallexample
 
+@noindent
 This will create, update or remove files, as needed.
 
+Note: From time to time, changes are made in Gnulib that are not backward
+compatible.  When updating to a more recent Gnulib, you should consult
+Gnulib's @file{NEWS} file to check whether the incompatible changes affect
+your project.
+
+
+@node Source changes
+@section Changing your sources for use with Gnulib
+
+Gnulib contains some header file overrides.  This means that when building
+on systems with deficient header files in @file{/usr/include/}, it may create
+files named @file{string.h}, @file{stdlib.h}, @file{stdint.h} or similar in
+the build directory.  In the other source directories of your package you
+will usually pass @samp{-I} options to the compiler, so that these Gnulib
+substitutes are visible and take precedence over the files in
+@file{/usr/include/}.
+
+These Gnulib substitute header files rely on @file{<config.h>} being
+already included.  Furthermore @file{<config.h>} must be the first include
+in every compilation unit.  This means that to @emph{all your source files}
+and likely also to @emph{all your tests source files} you need to add an
+@samp{#include <config.h>} at the top.  Which source files are affected?
+Exactly those whose compilation includes a @samp{-I} option that refers to
+the Gnulib library directory.
+
+This is annoying, but inevitable: On many systems, @file{<config.h>} is
+used to set system dependent flags (such as @code{_GNU_SOURCE} on GNU systems),
+and these flags have no effect after any system header file has been included.
+
+
 @node VCS Issues
 @section Issues with Version Control Systems
 
--- a/doc/gnulib.texi
+++ b/doc/gnulib.texi
@@ -5,6 +5,9 @@
 @settitle GNU Gnulib
 @syncodeindex fn cp
 @syncodeindex pg cp
+@ifclear texi2html
+@firstparagraphindent insert
+@end ifclear
 @comment %**end of header
 
 @set UPDATED $Date: 2007-09-09 13:20:45 $