From 02dec023bf86dcd5bc4edeb05a5bdc3327efd574 Mon Sep 17 00:00:00 2001 From: Reuben Thomas Date: Mon, 11 Dec 2017 10:27:52 +0000 Subject: [PATCH 2/2] 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.) --- ChangeLog | 7 +++++++ doc/relocatable-maint.texi | 21 +++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index fa5e1d8..6242501 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2017-12-11 Reuben Thomas + + 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-10 Reuben Thomas Use better texinfo tags in a few cases. diff --git a/doc/relocatable-maint.texi b/doc/relocatable-maint.texi index edb4d26..c287fca 100644 --- a/doc/relocatable-maint.texi +++ b/doc/relocatable-maint.texi @@ -56,6 +56,8 @@ You can make your program relocatable by following these steps: @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,24 @@ foo_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)` 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{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 address@hidden example +AM_CPPFLAGS += -DIN_LIBRARY -DENABLE_COSTLY_RELOCATABLE + +AM_CONDITIONAL([SHLIBS_IN_BINDIR], [case "$host_os" in mingw* | cygwin*) true;; *) false;; esac]) -(Adjust the suffix @code{la} as necessary if you are not using libtool.) +if SHLIBS_IN_BINDIR +AM_CPPFLAGS += -DINSTALLDIR=\"$(bindir)\" +else +AM_CPPFLAGS += -DINSTALLDIR=\"$(libdir)\" +endif address@hidden example @item You may also need to add a couple of variable assignments to your -- 2.7.4