2001-06-17 Roland McGrath <roland@frob.com>
authorroland <roland>
Mon, 18 Jun 2001 01:08:57 +0000 (01:08 +0000)
committerroland <roland>
Mon, 18 Jun 2001 01:08:57 +0000 (01:08 +0000)
* Makerules (build-module-helper-objlist): New variable,
broken out of build-module.  Insert --whole-archive/--no-whole-archive
immediately each *_pic.a file in the link object list.
(whole-archive): New variable, used by that.
(build-module-objlist): New variable using build-module-helper-objlist.
(build-module, build-module-helper): Use it.
(build-shlib-objlist): New variable using build-module-helper-objlist.
(build-shlib): Use that.
* sysdeps/mach/hurd/Makefile ($(link-rpcuserlibs)): Likewise.

Makerules
sysdeps/mach/hurd/Makefile

index 53d82c0..596f3cf 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -117,6 +117,11 @@ $(common-objpfx)abi-versions.h: $(..)scripts/abi-versions.awk \
                                $(common-objpfx)Versions.all
        LC_ALL=C $(AWK) -v oldest_abi=$(oldest-abi) -f $^ > $@T
        mv -f $@T $@
+
+$(common-objpfx)%.latest: $(common-objpfx)abi-versions.h
+       sed -n '/ VERSION_$*_/{s/^.*_\([A-Z0-9_]*\).*$$/\1/;h;};$${g;p;}' \
+           $(common-objpfx)abi-versions.h > $@T
+       mv -f $@T $@
 endif # avoid-generated
 endif # $(versioning) = yes
 
@@ -410,17 +415,13 @@ $(build-shlib-helper) \
          > $@.lds
 rm -f $@.new
 $(build-shlib-helper) -o $@ -T $@.lds \
-         -Wl,--whole-archive $(csu-objpfx)abi-note.o \
-         $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \
-         $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so)
+         $(csu-objpfx)abi-note.o $(build-shlib-objlist)
 rm -f $@.lds
 endef
 else
 define build-shlib
 $(build-shlib-helper) \
-         -o $@ -Wl,--whole-archive \
-         $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \
-         $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so)
+         $(build-shlib-objlist)
 endef
 endif
 
@@ -445,20 +446,26 @@ $(build-module-helper) \
          > $@.lds
 rm -f $@.new
 $(build-module-helper) -o $@ -T $@.lds \
-         -Wl,--whole-archive $(csu-objpfx)abi-note.o \
-         $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \
-         $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so)
+         $(csu-objpfx)abi-note.o $(build-module-objlist)
 rm -f $@.lds
 endef
 else
 define build-module
 $(build-module-helper) \
-         -o $@ -Wl,--whole-archive \
-         $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \
-         $(no-whole-archive) $(LDLIBS-$(@F:%.so=%).so)
+         -o $@ \
+         $(build-module-objlist)
 endef
 endif
 
+build-module-helper-objlist = \
+       $(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
+                  $(filter-out $(map-file) $(+preinit) $(+postinit),$^))
+whole-archive := -Wl,--whole-archive
+
+build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
+build-shlib-objlist = $(build-module-helper-objlist) \
+                     $(LDLIBS-$(@F:lib%.so=%).so)
+
 # Don't try to use -lc when making libc.so itself.
 # Also omits crti.o and crtn.o, which we do not want
 # since we define our own `.init' section specially.
index e8cd4dc..afeefc6 100644 (file)
@@ -151,11 +151,9 @@ endif
 $(link-rpcuserlibs): %-link.so: %_pic.a
 # These shared objects are just for the purpose of linking libc,
 # so they don't need abi-note.o linked into them.
-       $(build-module-helper) \
-               -o $@ -nostdlib -Wl,-soname=$(*F).so$($(*F).so-version) \
-               -Wl,--whole-archive \
-               $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \
-               $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so)
+       $(build-shlib-helper) \
+               -nostdlib -o $@ \
+               $(build-shlib-objlist)
 
 # And get them into the libc.so ldscript.
 $(inst_libdir)/libc.so: $(rpcuserlibs)