Tue Jun 18 17:56:44 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
[kopensolaris-gnu/glibc.git] / rpm / Makefile
1 # A start at automated rpm-making for GNU libc.
2 # Generates an rpm spec file in `CPU-VENDOR-OS' from the list of installed
3 # files and the `template' file.
4
5 all:
6
7 subdir := rpm
8 include ../Makeconfig
9 include $(common-objpfx)soversions.mk
10 include $(common-objpfx)version.mk
11
12 distinfo := $(common-objpfx)distinfo- \
13             $(wildcard $(subdirs:%=$(common-objpfx)distinfo-%))
14 -include $(distinfo)
15
16 config = $(config-machine)-$(config-vendor)-$(config-os)
17
18 headers := $(foreach d,$(subdirs),$($d-headers))
19 install-lib := $(foreach d,$(subdirs),$($d-install-lib))
20 install-lib.so := $(foreach d,$(subdirs),$(filter-out $($d-versioned),\
21                                                       $($d-install-lib.so)))
22 versioned := $(foreach d,$(subdirs),$($d-versioned))
23 install-bin := $(foreach d,$(subdirs),$($d-install-bin))
24 install-sbin := $(foreach d,$(subdirs),$($d-install-sbin))
25 install-data := $(foreach d,$(subdirs),$($d-install-data))
26 install-others := $(foreach d,$(subdirs),$($d-install-others))
27
28 # Notice things to be installed in /etc.  They get specially marked as
29 # possibly user-modified config files.
30 install-sysconf := $(filter $(sysconfdir)/%,$(install-others))
31 install-others := $(filter-out $(sysconfdir)/%,$(install-others))
32
33 # Add the unversioned lib*.so's to install-lib.
34 install-lib += $(install-lib.so)
35
36 # For each versioned lib*.so, add three files:
37 #   lib*-VERSION.so, lib*.so.MAJOR, and lib*.so
38 install-lib += $(foreach lib,$(versioned),\
39                          $(patsubst %.so,%-$(version).so,$(lib)) \
40                          $(lib)$($(lib)-version) $(lib))
41
42 # Add libc.a and libc_p.a.
43 install-lib += $(foreach o,$(filter-out .so,$(object-suffixes)),\
44                          $(patsubst %,$(libtype$o),c))
45
46 ifeq (yes,$(build-shared))
47 # Add libc.so itself, which is a special case in Makerules.
48 ifndef libc.so-version
49 install-others += $(slibdir)/libc.so
50 else
51 install-others += $(libdir)/libc.so \
52                   $(slibdir)/libc-$(version).so \
53                   $(slibdir)/libc.so$(libc.so-version)
54 endif
55 endif
56 \f
57
58 all: glibc-$(version).$(config).rpm
59
60 instvars = include lib bin sbin data others
61
62 # Generate the rpm spec file for this configuration.
63 $(config): template $(distinfo) Makefile
64         rm -f $@.new
65         (sed -e 's%@VERSION@%$(version)%g' $<; \
66          ($(foreach var,$(instvars),\
67           for f in $(install-$(var)); do \
68             echo $(filter-out /,$($(var)dir)/)$$f; \
69           done;\
70          )) | sort; \
71          (for f in $(install-sysconf); do \
72             echo %config $$f; \
73           done) | sort) > $@.new
74         mv -f $@.new $@
75
76 install-include = $(headers)
77
78 instfiles := $(sort $(foreach x,$(instvars),\
79                               $(addprefix $(filter-out /,$($xdir)/),\
80                                           $(install-$x))))
81
82 # Build the binary rpm for this configuration.
83 glibc-$(version).$(config).rpm: $(config) rpmrc $(instfiles)
84 # rpm is really lame.  You cannot tell it the name of the output file,
85 # and you can only guess at what the name will turn out to be!
86         arch=`uname -m | sed -e 's/i.86/i386/' -e 's/alpha/axp/'`; \
87         rm -f $$arch; ln -s . $$arch; \
88         rpm --rcfile rpmrc -bb $<; \
89         rm -f $$arch; \
90         mv -f glibc-$(version)-1.$${arch}.rpm $@
91
92 # Avoid time-consuming implicit rule search.
93 $(instfiles) : ;
94
95 .PHONY: clean
96 clean:
97         rm -f $(config) glibc-$(version).$(config).rpm