From 3392ee83b0132c089dffb1e9892b4b252ce1ec0e Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 18 Mar 2015 01:57:01 +0000 Subject: [PATCH 21/25] eglibc: Install PIC archives Forward port from eglibc 2008-02-07 Joseph Myers * Makerules (install-extras, install-map): New variables. (installed-libcs): Add libc_pic.a. (install-lib): Include _pic.a files for versioned shared libraries. (install-map-nosubdir, install-extras-nosubdir): Add rules for installing extra files. (install-no-libc.a-nosubdir): Depend on install-map-nosubdir and install-extras-nosubdir. 2008-04-01 Maxim Kuvyrkov * Makerules (install-lib): Don't install libpthread_pic.a. (install-map): Don't install libpthread_pic.map. Upstream-Status: Pending Signed-off-by: Khem Raj --- Makerules | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/Makerules b/Makerules index 9bb707c168..74cbefb9ba 100644 --- a/Makerules +++ b/Makerules @@ -775,6 +775,9 @@ ifeq ($(build-shared),yes) $(common-objpfx)libc.so: $(common-objpfx)libc.map endif common-generated += libc.so libc_pic.os +ifndef subdir +install-extras := soinit.o sofini.o +endif ifdef libc.so-version $(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so $(make-link) @@ -1026,6 +1029,7 @@ endif install: check-install-supported +installed-libcs := $(installed-libcs) $(inst_libdir)/libc_pic.a install: $(installed-libcs) $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force) $(make-target-directory) @@ -1054,6 +1058,22 @@ versioned := $(strip $(foreach so,$(install-lib.so),\ install-lib.so-versioned := $(filter $(versioned), $(install-lib.so)) install-lib.so-unversioned := $(filter-out $(versioned), $(install-lib.so)) +# Install the _pic.a files for versioned libraries, and corresponding +# .map files. +# libpthread_pic.a breaks mklibs, so don't install it and its map. +install-lib := $(install-lib) $(install-lib.so-versioned:%.so=%_pic.a) +install-lib := $(filter-out libpthread_pic.a,$(install-lib)) +# Despite having a soname libhurduser and libmachuser do not use symbol +# versioning, so don't install the corresponding .map files. +ifeq ($(build-shared),yes) +install-map := $(patsubst %.so,%.map,\ + $(foreach L,$(install-lib.so-versioned),$(notdir $L))) +install-map := $(filter-out libhurduser.map libmachuser.map libpthread.map,$(install-map)) +ifndef subdir +install-map := $(install-map) libc.map +endif +endif + # For versioned libraries, we install three files: # $(inst_libdir)/libfoo.so -- for linking, symlink or ld script # $(inst_slibdir)/libfoo.so.NN -- for loading by SONAME, symlink @@ -1298,9 +1318,22 @@ $(addprefix $(inst_includedir)/,$(headers-nonh)): $(inst_includedir)/%: \ endif # headers-nonh endif # headers +ifdef install-map +$(addprefix $(inst_libdir)/,$(patsubst lib%.map,lib%_pic.map,$(install-map))): \ + $(inst_libdir)/lib%_pic.map: $(common-objpfx)lib%.map $(+force) + $(do-install) +endif + +ifdef install-extras +$(addprefix $(inst_libdir)/libc_pic/,$(install-extras)): \ + $(inst_libdir)/libc_pic/%.o: $(elf-objpfx)%.os $(+force) + $(do-install) +endif + .PHONY: install-bin-nosubdir install-bin-script-nosubdir \ install-rootsbin-nosubdir install-sbin-nosubdir install-lib-nosubdir \ - install-data-nosubdir install-headers-nosubdir + install-data-nosubdir install-headers-nosubdir install-map-nosubdir \ + install-extras-nosubdir install-bin-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin)) install-bin-script-nosubdir: $(addprefix $(inst_bindir)/,$(install-bin-script)) install-rootsbin-nosubdir: \ @@ -1313,6 +1346,10 @@ install-data-nosubdir: $(addprefix $(inst_datadir)/,$(install-data)) install-headers-nosubdir: $(addprefix $(inst_includedir)/,$(headers)) install-others-nosubdir: $(install-others) install-others-programs-nosubdir: $(install-others-programs) +install-map-nosubdir: $(addprefix $(inst_libdir)/,\ + $(patsubst lib%.map,lib%_pic.map,$(install-map))) +install-extras-nosubdir: $(addprefix $(inst_libdir)/libc_pic/,\ + $(install-extras)) # We need all the `-nosubdir' targets so that `install' in the parent # doesn't depend on several things which each iterate over the subdirs. @@ -1322,7 +1359,8 @@ install-%:: install-%-nosubdir ; .PHONY: install install-no-libc.a-nosubdir install-no-libc.a-nosubdir: install-headers-nosubdir install-data-nosubdir \ - install-lib-nosubdir install-others-nosubdir + install-lib-nosubdir install-others-nosubdir \ + install-map-nosubdir install-extras-nosubdir ifeq ($(build-programs),yes) install-no-libc.a-nosubdir: install-bin-nosubdir install-bin-script-nosubdir \ install-rootsbin-nosubdir install-sbin-nosubdir \ -- 2.13.2