I am trying to use relocatable-lib-lgpl, to make Enchant relocatable.
(Enchant is a spell-checker library wrapper, itself a library, and it needs
to be able to find resources such as dictionaries at run-time, relative to
the library's location. See https://github.com/AbiWord/enchant/ )

I have read the documentation in gnulib, and also dug out the original
announcement, coincidentally almost exactly 10 years old:
http://lists.gnu.org/archive/html/bug-gnulib/2003-03/msg00020.html

(Thanks, Bruno!)

However, I can't work out how to use relocatable-lib in a library, as the
documentation seems only to cover use in programs (which I've used before).

There seem to be some magic symbols such as IN_LIBRARY (not defined
anywhere in gnulib that I can see) and the function compute_curr_prefix is
automagically renamed to local_compute_curr_prefix and made static in a
library. It seems that a library has to arrange calling
set_relocation_prefix itself; I presume the first argument can be passed in
from the configure-time prefix?

Anyway, given some brief details, I'd be very happy to mark the 10th
anniversary of this excellent contribution to gnulib by adding
documentation for relocatable-lib{,-lgpl}.

As relocatable-lib was originally written for gettext, I had a look at
gettext to see what I could glean. I see that it defines IN_LIBRARY when
building libintl.

So my guess at what a library should do is something like:

Installation considerations are the same as for relocatable{,-prog,…}, so
no need to add anything there. (That is, the only differences are for
maintainers.)

Maintainers need to:

1. Define IN_LIBRARY when building the library sources.

2. Call set_relocation_prefix at a suitable time, e.g. when the library is
initialised, or the first time it needs to look for other files. The first
argument can be set from @prefix@.

Otherwise, usage seems is the same: call "relocate" as needed, except the
convenience function "compute_curr_prefix" is called
"local_compute_curr_prefix".

-- 
http://rrt.sc3d.org

Reply via email to