about summary refs log tree commit diff
path: root/Makeconfig
diff options
context:
space:
mode:
Diffstat (limited to 'Makeconfig')
-rw-r--r--Makeconfig27
1 files changed, 27 insertions, 0 deletions
diff --git a/Makeconfig b/Makeconfig
index 8b82a31124..74f8d795a4 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -566,6 +566,33 @@ $(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makeconfig \
 # Get $(version) defined with the release version number.
 -include $(common-objpfx)version.mk
 
+# Generate the header containing the names of all shared libraries.
+# We use a stamp file to avoid uncessary recompilations.
+before-compile += $(common-objpfx)gnu/lib-names.h
+$(common-objpfx)gnu/lib-names.h: $(common-objpfx)gnu/lib-names.stmp
+$(common-objpfx)gnu/lib-names.stmp: $(common-objpfx)soversions.mk
+	$(make-target-directory)
+	@rm -f ${@:stmp=T} $@
+	(echo '/* This file is automatically generated.';\
+	 echo '   It defines macros to allow user program to find the shared';\
+	 echo '   library files which come as part of GNU libc.  */';\
+	 echo '#ifndef __GNU_LIB_NAMES_H'; \
+	 echo '#define __GNU_LIB_NAMES_H	1'; \
+	 echo; \
+	 (libs='$(all-sonames)';\
+	  for l in $$libs; do \
+	    upname=`echo $$l | sed 's/[.]so.*//' | \
+		    tr '[:lower:]-' '[:upper:]_'`; \
+	    echo "#define	$${upname}_SO	\"$$l\""; \
+	  done;) | sort; \
+	 echo; \
+	 echo '#endif	/* gnu/lib-names.h */';) > ${@:stmp=T}
+	if test -r ${@:stmp=h} && cmp -s ${@:stmp=h} ${@:stmp=T}; \
+	then rm -f ${@:stmp=T}; \
+	else mv -f ${@:stmp=T} ${@:stmp=h}; fi
+	touch $@
+
+common-generated += gnu/lib-names.h gnu/lib-names.stmp
 
 # The name under which the run-time dynamic linker is installed.
 # We are currently going for the convention that `/lib/ld.so.1'