summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2009-02-24 07:20:53 +0000
committerRob Landley <rob@landley.net>2009-02-24 07:20:53 +0000
commitfb863f7592a07c999168555c26a41e1247231e00 (patch)
treedf2aed6629d888d71cf252c84cefb4ba0141b7b8
parent11495b6f6a7bff4fc7effdbf670b5d482c36913d (diff)
Make HARDWIRED_ABSPATH a config option.
-rw-r--r--Makefile.in8
-rw-r--r--extra/Configs/Config.in20
2 files changed, 28 insertions, 0 deletions
diff --git a/Makefile.in b/Makefile.in
index dd0856150..2a7674543 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -402,6 +402,7 @@ ifeq ($(HAVE_SHARED),y)
$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)$$i.$(MAJOR_VERSION) \
$(PREFIX)$(DEVEL_PREFIX)lib/$$i; \
done
+ifeq ($(HARDWIRED_ABSPATH),y)
if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) ] ; then \
$(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
$(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)lib/$(NONSHARED_LIBNAME):' \
@@ -409,14 +410,21 @@ ifeq ($(HAVE_SHARED),y)
-e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)lib/$(UCLIBC_LDSO):' \
$(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
fi
+else
+ -$(INSTALL) -m 644 lib/libc.so $(PREFIX)$(DEVEL_PREFIX)lib/
+endif
ifeq ($(UCLIBC_HAS_THREADS),y)
ifneq ($(LINUXTHREADS_OLD),y)
+ifeq ($(HARDWIRED_ABSPATH),y)
if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/libpthread.so.$(MAJOR_VERSION) ] ; then \
$(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
echo "GROUP ( $(RUNTIME_PREFIX)lib/libpthread.so.$(MAJOR_VERSION) $(DEVEL_PREFIX)lib/libpthread_nonshared.a )" \
>> $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
fi
+else
+ -$(INSTALL) -m 644 lib/libpthread.so $(PREFIX)$(DEVEL_PREFIX)lib/
+endif
endif
endif
ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index b4d5fce09..b26c487a6 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -1812,6 +1812,26 @@ config DEVEL_PREFIX
For a typical target system this should be set to "/usr", such that
'make install' will install /usr/include/<header files>.
+config HARDWIRED_ABSPATH
+ string "Hardwire absolute paths into linker scripts"
+ default y
+ help
+ This prepends absolute paths to the libraries mentioned in linker
+ scripts such as libc.so.
+
+ This is a build time optimization. It has no impact on dynamic
+ linking at runtime, which doesn't use linker scripts.
+
+ You must disable this to use uClibc with a relocatable toolchain,
+ such as the prebuilt binary cross compilers at
+ http://uclibc.org/downloads/binaries which may be installed at an
+ arbitrary location (such as in a user's home directory).
+
+ The amount of time saved by this optimization is actually too small to
+ measure. The linker just had to search the library path to find the
+ linker script, so the dentries are cache hot if it has to search the
+ same path again. But it's what glibc does, so we do it too.
+
endmenu