\input texinfo @c -*-texinfo-*-
-@comment $Id: gnulib.texi,v 1.12 2005-07-11 16:45:26 haible Exp $
+@comment $Id: gnulib.texi,v 1.16 2005-08-11 10:08:57 jas Exp $
@comment %**start of header
@setfilename gnulib.info
@settitle GNU Gnulib
@syncodeindex pg cp
@comment %**end of header
-@set UPDATED $Date: 2005-07-11 16:45:26 $
+@set UPDATED $Date: 2005-08-11 10:08:57 $
@copying
This manual is for GNU Gnulib (updated @value{UPDATED}),
* inet_ntoa::
* Out of memory handling::
* Library version handling::
+* Regular expressions::
@end menu
@node Library version handling
@section Library version handling
-The module ``check_version'' can be useful when your gnulib
+The module @samp{check-version} can be useful when your gnulib
application is a system library. You will typically wrap the call to
the @code{check_version} function through a library API, your library
header file may contain:
extern const char *stringprep_check_version (const char *req_version);
@end example
-The implementation of @code{stringprep_check_version} would simply
-pass on the call to @code{check_version}.
+To avoid ELF symbol collisions with other libraries that use the
+@samp{check-version} module, add to @file{config.h} through a
+AC_DEFINE something like:
+
+@example
+AC_DEFINE(check_version, stringprep_check_version, [Rename check_version.])
+@end example
+
+The @code{stringprep_check_version} function will thus be implemented
+by the @code{check_version} module.
There are two uses of the interface. The first is a way to provide
for applications to find out the version number of the library it
@end example
+@node Regular expressions
+@section Regular expressions
+
+Gnulib supports many different types of regular expressions; although
+the underlying features are the same or identical, the syntax used
+varies. The descriptions given here for the different types are
+generated automatically.
+
+@include regexprops-generic.texi
+
+
@node Invoking gnulib-tool
@chapter Invoking gnulib-tool
macros in @file{m4/}. You can override these paths by using
@code{--source-base=DIRECTORY} and @code{--m4-base=DIRECTORY}, or by
adding @samp{gl_SOURCE_BASE(DIRECTORY)} and
-@samp{gl_M4_BASE(DIRECTORY)} to your @file{configure.ac}.
-Some modules also provide other files necessary
-for building. These files are copied into the directory specified
-by @samp{AC_CONFIG_AUX_DIR} in @file{configure.ac} or by the
-@code{--aux-dir=DIRECTORY} option. If neither is specified, the
-current directory is assumed.
+@samp{gl_M4_BASE(DIRECTORY)} to your @file{configure.ac}. Some
+modules also provide other files necessary for building. These files
+are copied into the directory specified by @samp{AC_CONFIG_AUX_DIR} in
+@file{configure.ac} or by the @code{--aux-dir=DIRECTORY} option. If
+neither is specified, the current directory is assumed. If a module
+is automatically added as a dependency is added, that you wish to
+avoid, you may use @code{--avoid=MODULE}, possibly several times. Of
+course, you will then need to implement the same interface as the
+removed module.
@code{gnulib-tool} can make symbolic links instead
of copying the source files. Use the @code{--symbolic}
@end example
Finally, you have to add compiler and linker flags in the appropriate
-source directories, so that you can make use
-of the gnulib library. For example:
+source directories, so that you can make use of the gnulib library.
+Since some modules (@samp{getopt}, for example) may copy files into
+the build directory, @file{top_builddir/lib} is needed as well
+as @file{top_srcdir/lib}. For example:
@example
...
-AM_CPPFLAGS = -I$(top_srcdir)/lib
+AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_builddir)/lib
...
LIBADD = lib/libgnu.a
...
gl_SOURCE_BASE(gl)
gl_M4_BASE(gl/m4)
gl_LIB(libgl)
-gl_MODULES(getopt progname strdup dummy exit error getpass-gnu getaddrinfo)
+gl_MODULES(xmalloc progname strdup dummy exit error getpass-gnu getaddrinfo)
+gl_AVOID(xalloc-die)
gl_INIT
...
@end example
macro can be used if you wish to change the library name (by default
@file{libgnu.a} or @file{libgnu.la} if you use libtool). The
@code{gl_MODULES} macro is used to specify which modules to import.
-
+@code{gl_AVOID} macro is used to specify which modules, that are
+normally automatically added as a dependency, to avoid.
@node Copying This Manual
@appendix Copying This Manual