about summary refs log tree commit diff
path: root/rpm/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'rpm/Makefile')
-rw-r--r--rpm/Makefile29
1 files changed, 24 insertions, 5 deletions
diff --git a/rpm/Makefile b/rpm/Makefile
index a4e7969c23..5ffa19ab88 100644
--- a/rpm/Makefile
+++ b/rpm/Makefile
@@ -39,21 +39,24 @@ install-lib += $(foreach lib,$(versioned),\
 			 $(lib)$($(lib)-version) $(lib))
 
 # Add libc.so itself, which is a special case in Makerules.
+ifndef libc.so-version
 install-others += $(slibdir)/libc.so
-ifdef libc.so-version
-install-others += $(slibdir)/libc-$(version).so \
+else
+install-others += $(libdir)/libc.so \
+		  $(slibdir)/libc-$(version).so \
 		  $(slibdir)/libc.so$(libc.so-version)
 endif
 
 
-glibc-$(version).$(config).rpm: $(config)
+all: glibc-$(version).$(config).rpm
 
-all: $(config)
+instvars = include lib bin sbin data others
 
+# Generate the rpm spec file for this configuration.
 $(config): template $(distinfo) Makefile
 	rm -f $@.new
 	(sed -e 's%@VERSION@%$(version)%g' $<; \
-	 ($(foreach var,include lib bin sbin data others,\
+	 ($(foreach var,$(instvars),\
 	  for f in $(install-$(var)); do \
 	    echo $(filter-out /,$($(var)dir)/)$$f; \
 	  done;\
@@ -65,3 +68,19 @@ $(config): template $(distinfo) Makefile
 
 install-include = $(headers)
 
+instfiles := $(sort $(foreach x,$(instvars),\
+			      $(addprefix $(filter-out /,$($xdir)/),\
+					  $(install-$x))))
+
+# Build the binary rpm for this configuration.
+glibc-$(version).$(config).rpm: $(config) rpmrc $(instfiles)
+# rpm is really lame.  You cannot tell it the name of the output file,
+# and you can only guess at what the name will turn out to be!
+	arch=`uname -m | sed -e 's/i.86/i386/' -e 's/alpha/axp/'`; \
+	rm -f $$arch; ln -s . $$arch; \
+	rpm --rcfile rpmrc -bb $<; \
+	rm -f $$arch; \
+	mv -f glibc-$(version)-1.$${arch}.rpm $@
+
+# Avoid time-consuming implicit rule search.
+$(instfiles) : ;