possible to do the same thing with a hard link @emph{only} if the hard
link file is in the same directory as the real program.
-The @code{relocatable} module aims to ease the process of making a GNU
-program relocatable. It helps overcome two obstacles. First, it aids
+The @code{relocatable-prog} module aims to ease the process of making a
+GNU program relocatable. It helps overcome two obstacles. First, it aids
with relocating the hard-coded references to absolute file names that
GNU programs often contain. These references must be fixed up at
runtime if a program is to be successfully relocated. The
-@code{relocatable} module provides a function @code{relocate} that
+@code{relocatable-prog} module provides a function @code{relocate} that
does this job.
Second, the loader must be able to find shared libraries linked to
relocatable executables or referenced by other shared libraries linked
-to relocatable executables. The @code{relocatable} module helps out
+to relocatable executables. The @code{relocatable-prog} module helps out
here in a platform-specific way:
@itemize
This approach does not always work. On OpenBSD and OpenServer,
prereleases of Libtool 1.5 put absolute file names of libraries in
-executables, which prevents searching any other locations.
+executables, which prevents searching any other locations.
@item
On Windows, the executable's own directory is searched for libraries,
@enumerate
@item
-Import the @code{relocatable} module.
+Import the @code{relocatable-prog} module.
@item
In every program, add to @code{main} as the first statement (even
@noindent
becomes:
-@example
+@example
bindtextdomain (PACKAGE, relocate (LOCALEDIR));
@end example
func_find_curr_installdir # determine curr_installdir
func_find_prefixes
# Relocate the directory variables that we use.
- gettext_dir=`echo "$gettext_dir/" | sed -e
-"s%^$@{orig_installprefix@}/%$@{curr_installprefix@}/%" | sed -e 's,/$,,'`
+ gettext_dir=`
+ echo "$gettext_dir/" \
+ | sed -e "s%^$@{orig_installprefix@}/%$@{curr_installprefix@}/%" \
+ | sed -e 's,/$,,'`
fi
@end example
installed in, say, @file{$(bindir)}, you add:
@example
-foo_CFLAGS = -DINSTALLDIR=\"$(bindir)\"
+foo_CPPFLAGS = -DINSTALLDIR=\"$(bindir)\"
if RELOCATABLE_VIA_LD
foo_LDFLAGS = `$(RELOCATABLE_LDFLAGS) $(bindir)`
endif
@end example
@item
-You may also need to add one or two variable assignments to your
-@file{configure.ac}.
+You may also need to add a couple of variable assignments to your
+@file{configure.ac}.
If your package (or any package you rely on, e.g.@: gettext-runtime)
will be relocated together with a set of installed shared libraries,
RELOCATABLE_CONFIG_H_DIR='$(top_builddir)/src'
@end example
@end enumerate
+
+Set @var{RELOCATABLE_STRIP} to @code{:}. This is needed so that
+@samp{make install} installs executables without stripping them.