Mercurial > gnulib
changeset 39184:4229e01ba156
doc: Improve explanation of supporting relocatable libraries.
* doc/relocatable-maint.texi (Supporting Relocation): Explain
properly how to build the relocatable module for
libraries. (Method and example code from Bruno Haible.)
author | Reuben Thomas <rrt@sc3d.org> |
---|---|
date | Mon, 11 Dec 2017 10:27:52 +0000 |
parents | 06e57e3519e8 |
children | 09de5d60dec4 |
files | ChangeLog doc/relocatable-maint.texi |
diffstat | 2 files changed, 27 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon Dec 11 14:12:19 2017 +0100 +++ b/ChangeLog Mon Dec 11 10:27:52 2017 +0000 @@ -1,3 +1,10 @@ +2017-12-11 Reuben Thomas <rrt@sc3d.org> + + doc: Improve explanation of supporting relocatable libraries. + * doc/relocatable-maint.texi (Supporting Relocation): Explain + properly how to build the relocatable module for + libraries. (Method and example code from Bruno Haible.) + 2017-12-11 Reuben Thomas <rrt@sc3d.org> doc: Use better texinfo tags in a few cases.
--- a/doc/relocatable-maint.texi Mon Dec 11 14:12:19 2017 +0100 +++ b/doc/relocatable-maint.texi Mon Dec 11 10:27:52 2017 +0000 @@ -56,6 +56,8 @@ @item Import the @code{relocatable-prog} module. For libraries, use the @code{relocatable-lib} or @code{relocatable-lib-lgpl} module. +If you need more than one module, or you need to use them with different +settings, you will need multiple copies of gnulib (@pxref{Multiple instances}). @item In every program, add to @code{main} as the first statement (even @@ -190,13 +192,28 @@ endif @end example -Also in @file{Makefile.am}, for each library @code{libfoo}, you add: +When building gnulib to use with a relocatable library, you need to +define the preprocessor symbol @code{IN_LIBRARY}. +You may also want to build with @code{ENABLE_COSTLY_RELOCATABLE}, in which case +you will also need to define @code{INSTALLDIR}. +The following fragment can be added to an override @code{Makefile.am} used +to build gnulib (@pxref{Modified build rules}). @example -libfoo_la_CPPFLAGS = -DIN_LIBRARY +AM_CPPFLAGS += -DIN_LIBRARY -DENABLE_COSTLY_RELOCATABLE + +if SHLIBS_IN_BINDIR +AM_CPPFLAGS += -DINSTALLDIR=\"$(bindir)\" +else +AM_CPPFLAGS += -DINSTALLDIR=\"$(libdir)\" +endif @end example -(Adjust the suffix @code{la} as necessary if you are not using libtool.) +@code{SHLIBS_IN_BINDIR} is defined in @file{configure.ac} as follows: + +@example +AM_CONDITIONAL([SHLIBS_IN_BINDIR], [case "$host_os" in mingw* | cygwin*) true;; *) false;; esac]) +@end example @item You may also need to add a couple of variable assignments to your