Mon Jun 24 19:57:01 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
authorroland <roland>
Tue, 25 Jun 1996 06:49:01 +0000 (06:49 +0000)
committerroland <roland>
Tue, 25 Jun 1996 06:49:01 +0000 (06:49 +0000)
* Makerules: Move shared library building before objects rules, so
versions are known before extra-lib.mk gets included.
* extra-lib.mk (lib-noranlib): Depend on the shared object too.

Makerules
extra-lib.mk

index 7f4b5fd..84afdd5 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -286,6 +286,71 @@ define sed-remove-objpfx
 endef
 endif
 \f
+# Shared library building.
+
+ifeq (yes,$(build-shared))
+
+# Process the shlib-versions file, which tells us what shared library
+# version numbers to use when we install shared objects on this system.
+-include $(common-objpfx)soversions.mk
+$(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makerules \
+                              $(common-objpfx)config.make
+       sed 's/#.*$$//' $< | while read conf versions; do \
+         test -n "$$versions" || continue; \
+         case '$(config-machine)-$(config-vendor)-$(config-os)' in $$conf)\
+           for v in $$versions; do \
+             lib="$${v%%=*}"; if eval "test -z \"\$$vers_lib$$lib\""; then \
+               eval vers_lib$${lib}=yes; \
+               echo $$lib.so-version=.$${v##$$lib=}; fi; \
+         done ;; esac; done > $@T
+       mv -f $@T $@
+
+# Get $(version) defined with the release version number.
+-include $(common-objpfx)version.mk
+
+
+# Pattern rule to build a shared object from an archive of PIC objects.
+# This must come after the installation rules so Make doesn't try to
+# build shared libraries in place from the installed *_pic.a files.
+# $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
+# on other shared objects.
+lib%.so: lib%_pic.a; $(build-shlib)
+
+ifeq ($(have-no-whole-archive),yes)
+no-whole-archive = -Wl,--no-whole-archive
+else
+no-whole-archive =
+endif
+
+define build-shlib
+$(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS)  \
+         -Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
+         $(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
+         -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
+         -Wl,--whole-archive $^ $(no-whole-archive) \
+         $(LDLIBS-$(@F:lib%.so=%).so)
+endef
+
+# 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.
+LDFLAGS-c.so = -nostdlib -nostartfiles
+# Give libc.so an entry point and make it directly runnable itself.
+LDFLAGS-c.so += -e __libc_main
+# Use our own special initializer and finalizer files for libc.so.
+elfobjdir := $(firstword $(objdir) $(patsubst ../$(subdir),.,$(..)elf))
+$(common-objpfx)libc.so: $(elfobjdir)/soinit.so \
+                        $(common-objpfx)libc_pic.a \
+                        $(elfobjdir)/sofini.so $(elfobjdir)/ld.so
+       $(build-shlib)
+
+ifdef libc.so-version
+$(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so
+       rm -f $@
+       ln -s $(<F) $@ || ln $< $@
+endif
+endif
+\f
 # Figure out the source filenames in this directory.
 
 override sources       := $(addsuffix .c,$(filter-out $(elided-routines),\
@@ -452,71 +517,6 @@ $(AR) cru$(verbose) $(@:$(objpfx)%=%) \
 $(RANLIB) $@
 endef
 \f
-# Shared library building.
-
-ifeq (yes,$(build-shared))
-
-# Process the shlib-versions file, which tells us what shared library
-# version numbers to use when we install shared objects on this system.
--include $(common-objpfx)soversions.mk
-$(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makerules \
-                              $(common-objpfx)config.make
-       sed 's/#.*$$//' $< | while read conf versions; do \
-         test -n "$$versions" || continue; \
-         case '$(config-machine)-$(config-vendor)-$(config-os)' in $$conf)\
-           for v in $$versions; do \
-             lib="$${v%%=*}"; if eval "test -z \"\$$vers_lib$$lib\""; then \
-               eval vers_lib$${lib}=yes; \
-               echo $$lib.so-version=.$${v##$$lib=}; fi; \
-         done ;; esac; done > $@T
-       mv -f $@T $@
-
-# Get $(version) defined with the release version number.
--include $(common-objpfx)version.mk
-
-
-# Pattern rule to build a shared object from an archive of PIC objects.
-# This must come after the installation rules so Make doesn't try to
-# build shared libraries in place from the installed *_pic.a files.
-# $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
-# on other shared objects.
-lib%.so: lib%_pic.a; $(build-shlib)
-
-ifeq ($(have-no-whole-archive),yes)
-no-whole-archive = -Wl,--no-whole-archive
-else
-no-whole-archive =
-endif
-
-define build-shlib
-$(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS)  \
-         -Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
-         $(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
-         -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
-         -Wl,--whole-archive $^ $(no-whole-archive) \
-         $(LDLIBS-$(@F:lib%.so=%).so)
-endef
-
-# 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.
-LDFLAGS-c.so = -nostdlib -nostartfiles
-# Give libc.so an entry point and make it directly runnable itself.
-LDFLAGS-c.so += -e __libc_main
-# Use our own special initializer and finalizer files for libc.so.
-elfobjdir := $(firstword $(objdir) $(patsubst ../$(subdir),.,$(..)elf))
-$(common-objpfx)libc.so: $(elfobjdir)/soinit.so \
-                        $(common-objpfx)libc_pic.a \
-                        $(elfobjdir)/sofini.so $(elfobjdir)/ld.so
-       $(build-shlib)
-
-ifdef libc.so-version
-$(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so
-       rm -f $@
-       ln -s $(<F) $@ || ln $< $@
-endif
-endif
-\f
 # Installation.
 
 # $(install-lib) are installed from the object directory into $(libdir);
index 283da06..5368a03 100644 (file)
@@ -27,6 +27,9 @@ alltypes-$(lib) := $(foreach o,$(object-suffixes-$(lib)),\
 
 ifeq (,$($(lib)-no-lib-dep))
 lib-noranlib: $(alltypes-$(lib))
+ifeq (yes,$(build-shared))
+lib-noranlib: $(objpfx)$(lib).so$($(lib).so-version)
+endif
 else
 others: $(alltypes-$(lib))
 endif