1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# A start at automated rpm-making for GNU libc.
# Generates an rpm spec file in `CPU-VENDOR-OS' from the list of installed
# files and the `template' file.
all:
subdir := rpm
include ../Makeconfig
include $(common-objpfx)soversions.mk
include $(common-objpfx)version.mk
distinfo := $(common-objpfx)distinfo- \
$(wildcard $(subdirs:%=$(common-objpfx)distinfo-%))
-include $(distinfo)
config = $(config-machine)-$(config-vendor)-$(config-os)
headers := $(-headers) $(foreach d,$(subdirs),$($d-headers))
install-lib := $(-install-lib) $(foreach d,$(subdirs),$($d-install-lib))
install-lib.so := $(-install-lib.so) \
$(foreach d,$(subdirs),$(filter-out $($d-versioned),\
$($d-install-lib.so)))
versioned := $(-versioned) $(foreach d,$(subdirs),$($d-versioned))
install-bin := $(-install-bin) $(foreach d,$(subdirs),$($d-install-bin))
install-sbin := $(-install-sbin) $(foreach d,$(subdirs),$($d-install-sbin))
install-data := $(-install-data) $(foreach d,$(subdirs),$($d-install-data))
install-others := $(-install-others) \
$(foreach d,$(subdirs),$($d-install-others))
# Notice things to be installed in /etc. They get specially marked as
# possibly user-modified config files.
install-sysconf := $(filter $(sysconfdir)/%,$(install-others))
install-others := $(filter-out $(sysconfdir)/%,$(install-others))
# Add the unversioned lib*.so's to install-lib.
install-lib += $(install-lib.so)
# For each versioned lib*.so, add three files:
# lib*-VERSION.so, lib*.so.MAJOR, and lib*.so
install-lib += $(foreach lib,$(versioned),\
$(patsubst %.so,%-$(version).so,$(lib)) \
$(lib)$($(lib)-version) $(lib))
# Add libc.a and libc_p.a.
install-lib += $(foreach o,$(filter-out .so,$(object-suffixes)),\
$(patsubst %,$(libtype$o),c))
ifeq (yes,$(build-shared))
# Add libc.so itself, which is a special case in Makerules.
ifndef libc.so-version
install-others += $(slibdir)/libc.so
else
install-others += $(libdir)/libc.so \
$(slibdir)/libc-$(version).so \
$(slibdir)/libc.so$(libc.so-version)
endif
endif
all: glibc-$(version).$(config).rpm
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,$(instvars),\
list='$(install-$(var))'; \
for f in $$list; do \
echo $(filter-out /,$($(var)dir)/)$$f; \
done;\
)) | sort; \
(list='$(install-sysconf)'; \
for f in $$list; do \
echo %config $$f; \
done) | sort) > $@.new
mv -f $@.new $@
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) : ;
.PHONY: clean
clean:
rm -f $(config) glibc-$(version).$(config).rpm
|