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