about summary refs log tree commit diff
diff options
context:
space:
mode:
-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