summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-07-04 10:17:03 +0000
committerUlrich Drepper <drepper@redhat.com>1998-07-04 10:17:03 +0000
commit6ef9f70bdbe3fdb7b16d7c9726e624700d774136 (patch)
treeace860900e7eb3c181d12a6b95c70c38228002fb /Makefile
parent220733f52a740016194ee6bb69ef279a82d61dba (diff)
[versioning=yes]: Build the mapfiles with a pattern rule that lists all of them as targets. (sysd-versions): Depend only on Versions.def. Write a Makefile fragment that defines $(vers-libs) based on contents of that file; then include it. (lib-noranlib): Depend on lib-mapfiles not sysd-versions. (lib-mapfiles): New target, depends on sysd-versions and $(vers-libs). Predicate all this on avoid-generated unset as well as versioning.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile24
1 files changed, 18 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index c36f1acf59..ea36637def 100644
--- a/Makefile
+++ b/Makefile
@@ -78,7 +78,7 @@ install-others += $(inst_includedir)/gnu/lib-names.h
endif
ifeq ($(versioning),yes)
-lib-noranlib: $(common-objpfx)sysd-versions
+lib-noranlib: lib-mapfiles
endif
include Makerules
@@ -318,10 +318,22 @@ remove-old-headers:
# Generate version maps.
ifeq ($(versioning),yes)
-$(common-objpfx)sysd-versions: versions.awk \
- $(wildcard $(all-subdirs:%=%/Versions)) \
- $(wildcard $(+sysdep_dirs:%=%/Versions))
+ifndef avoid-generated
+$(common-objpfx)sysd-versions: Versions.def
+ (echo define vers-libs; \
+ sed -n 's/\(lib[a-zA-Z0-9_][a-zA-Z0-9_]*\) {/$$(common-objpfx)\1%map/p' $<; \
+ echo endef) > $@T
+ mv -f $@T $@
+-include $(common-objpfx)sysd-versions
+vers-libs := $(subst $(\n), ,$(vers-libs))
+
+$(vers-libs): versions.awk \
+ $(wildcard $(subdirs:%=%/Versions)) \
+ $(wildcard $(+sysdep_dirs:%=%/Versions))
$(AWK) -v 'buildroot=$(common-objpfx)' -f $^
- rm -f $@
- echo > $@
+
+lib-mapfiles: $(common-objpfx)sysd-versions $(subst %,.,$(vers-libs))
+else
+lib-mapfiles:
+endif
endif