]>
Commit | Line | Data |
---|---|---|
fc71a2d4 | 1 | # Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc. |
28f540f4 RM |
2 | # This file is part of the GNU C Library. |
3 | ||
4 | # The GNU C Library is free software; you can redistribute it and/or | |
5 | # modify it under the terms of the GNU Library General Public License as | |
6 | # published by the Free Software Foundation; either version 2 of the | |
7 | # License, or (at your option) any later version. | |
8 | ||
9 | # The GNU C Library is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | # Library General Public License for more details. | |
13 | ||
14 | # You should have received a copy of the GNU Library General Public | |
0c5ecdc4 UD |
15 | # License along with the GNU C Library; see the file COPYING.LIB. If not, |
16 | # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
17 | # Boston, MA 02111-1307, USA. | |
28f540f4 RM |
18 | |
19 | dist: | |
20 | ||
61ee476c RM |
21 | # Make the value empty so ifdef fails if it's $(-subdir). |
22 | subdir := $(subdir) | |
28f540f4 RM |
23 | ifdef subdir |
24 | .. := ../ | |
25 | else | |
26 | .. := | |
27 | endif | |
28 | ||
29 | include $(..)Makeconfig | |
30 | ||
31 | foo:=$(shell echo 'distribute=$(distribute)'>&2) | |
1f64ac13 | 32 | foo:=$(shell echo 'dont_distribute=$(dont_distribute)'>&2) |
28f540f4 RM |
33 | foo:=$(shell echo 'foobar=$(filter %.c %.S %.s %.h,$(distribute))'>&2) |
34 | ||
35 | ifndef sysdep_dirs | |
36 | # Find all sysdep directories. | |
b9b49b44 | 37 | export sysdep_dirs := $(shell find $(..)sysdeps -type d ! -name bits \ |
abe71ca6 UD |
38 | ! -name CVS ! -name RCS \ |
39 | ! -name SCCS -print) | |
28f540f4 RM |
40 | else |
41 | # Defined by the parent. | |
42 | sysdep_dirs := $(addprefix $(..),$(sysdep_dirs)) | |
43 | endif | |
44 | ||
569c558c UD |
45 | # Don't distribute add-on subdirs. |
46 | subdirs := $(filter-out $(add-ons),$(subdirs)) | |
47 | ||
9f447fb3 RM |
48 | # Make sure both stdio and libio get in, whichever is in use. |
49 | subdirs += stdio libio | |
50 | ||
8f2ece69 UD |
51 | # Make sure both aout and elf get in, whichever is in use. |
52 | subdirs += aout elf | |
53 | ||
28f540f4 RM |
54 | sysdep-Subdir-files := $(wildcard $(addsuffix /Subdirs,$(sysdep_dirs))) |
55 | ifdef sysdep-Subdir-files | |
56 | subdirs := $(sort $(subdirs) \ | |
57 | $(shell sed -e 's/\#.*$$//' $(sysdep-Subdir-files))) | |
58 | endif | |
59 | ||
60 | ||
61 | # Makefiles can define `source_dirs' to list nonstandard directories | |
62 | # where source files might be found. | |
63 | ||
64 | ifdef subdir | |
dfe1754a | 65 | all-headers = $(filter-out $(sysdep_headers),$(headers)) |
28f540f4 RM |
66 | else |
67 | +distinfo := $(shell MAKEFLAGS= MFLAGS= $(MAKE) -s no_deps=t \ | |
68 | inhibit_interface_rules=t inhibit_mach_syscalls=t \ | |
4260bc74 | 69 | inhibit_timezone_rules=t \ |
28f540f4 RM |
70 | subdirs='$(subdirs)' echo-distinfo | grep -v '^make') |
71 | foo:=$(shell echo>&2 '+distinfo=$(+distinfo)') | |
72 | all-headers := $(patsubst +header+%,%,$(filter +header+%,$(+distinfo))) | |
73 | # Ignore subdir headers without top-level indirections. | |
762a2918 UD |
74 | all-headers := $(sort $(headers) \ |
75 | $(patsubst include/%,%,\ | |
76 | $(wildcard $(addprefix include/,\ | |
77 | $(all-headers))))) | |
78 | # Filter out names like ../conf/portability.h that would point outside | |
79 | # the source directory. | |
80 | all-headers := $(filter-out ../%,$(all-headers)) | |
28f540f4 | 81 | +subdir-nodist := $(patsubst +nodist+%,%,$(filter +nodist+%,$(+distinfo))) |
28f540f4 RM |
82 | endif |
83 | foo:=$(shell echo 'IS THIS WORKING??? all-headers=$(all-headers)' >&2) | |
84 | ||
92f3773b RM |
85 | sources += $(addsuffix .c,$(elided-routines) \ |
86 | $(foreach l,$(extra-libs),$($l-routines))) | |
87 | ||
002ab034 UD |
88 | sources += $(addsuffix .c, $(filter-out $(elided-routines), $(tests))) |
89 | ||
28f540f4 RM |
90 | # Find all sysdep sources and headers. |
91 | +maybe-sysdeps := $(sources) $(sources:.c=.s) $(sources:.c=.S) $(all-headers) \ | |
92 | $(filter %.c %.S %.s %.h %.sub,$(distribute)) | |
93 | foo:=$(shell echo '+maybe-sysdeps=$(+maybe-sysdeps)'>&2) | |
dd7d45e8 | 94 | # Find all the files that have a generic version. |
b3ed8219 AS |
95 | generic-dirs = $(..)sysdeps/generic $(..)sysdeps/ieee754 \ |
96 | $(..)sysdeps/ieee754/flt-32 $(..)sysdeps/ieee754/dbl-64 \ | |
97 | $(..)sysdeps/ieee754/ldbl-96 $(..)sysdeps/ieee754/ldbl-128 | |
98 | try-sysdeps := $(foreach dir,$(generic-dirs),\ | |
28f540f4 RM |
99 | $(addprefix $(dir)/,$(+maybe-sysdeps))) |
100 | foo:=$(shell echo 'try-sysdeps=$(try-sysdeps)'>&2) | |
101 | +sysdeps := $(wildcard $(try-sysdeps)) | |
dd7d45e8 | 102 | foo:=$(shell echo 'generic +sysdeps=$(+sysdeps)'>&2) |
b3ed8219 AS |
103 | +sysdep-names := $(sort $(foreach dir, $(generic-dirs),\ |
104 | $(patsubst $(dir)/%,%,\ | |
105 | $(filter $(dir)/%,$(+sysdeps))))) | |
28f540f4 RM |
106 | foo:=$(shell echo '+sysdep-names=$(+sysdep-names)' >&2) |
107 | ||
aa592a63 | 108 | ifdef subdir-dirs |
dfe1754a | 109 | vpath % $(subdir-dirs) |
aa592a63 RM |
110 | endif |
111 | ||
28f540f4 | 112 | # Now find all the sysdep versions of those files. |
e50ec9f9 RM |
113 | +sysdeps := $(foreach dir,$(sysdep_dirs) $(source_dirs),\ |
114 | $(wildcard $(addprefix $(dir)/, \ | |
28f540f4 RM |
115 | $(+sysdep-names) \ |
116 | $(+sysdep-names:.c=.s) \ | |
117 | $(+sysdep-names:.c=.S) \ | |
118 | ))) | |
119 | ||
120 | ||
121 | # Source and header files to go in the distribution tar file. | |
122 | ||
123 | .S.s := $(wildcard $(sources:.c=.S) $(sources:.c=.s)) | |
124 | sources := $(filter-out $(addsuffix .c,$(basename $(.S.s))),$(sources)) $(.S.s) | |
125 | ||
126 | +out := $(patsubst %.S,%.c,$(+sysdep-names:.s=.c)) \ | |
127 | $(addsuffix .c,$(sysdep_routines)) \ | |
1f64ac13 UD |
128 | $(+subdir-nodist) $(dont_distribute) |
129 | foo:=$(shell echo '+out=$(+out)' >&2; echo foofoo >&2) | |
51bba858 | 130 | +tsrcs := $(filter-out $(+out), $(sources) $(all-headers)) $(+sysdeps) |
8882a2da | 131 | foo:=$(shell echo 'made +tsrcs=$(+tsrcs)'>&2) |
28f540f4 | 132 | foo:=$(shell echo generated='$(generated)' >&2) |
b4012b75 UD |
133 | #generated := $(sort $(generated) $(generated:.S=.c) $(generated:.s=.c)) |
134 | #foo:=$(shell echo now generated='$(generated)' >&2) | |
51bba858 UD |
135 | +tsrcs := $(filter-out $(generated),$(+tsrcs)) |
136 | +tsrcs := $(sort $(filter-out $(+out),$(+tsrcs) $(distribute))) | |
28f540f4 RM |
137 | foo:=$(shell echo '+tsrcs=$(+tsrcs)'>&2) |
138 | foo:=$(shell echo foobie, dammit! >&2) | |
139 | ||
140 | ifndef tardir | |
28f540f4 RM |
141 | export tardir := glibc-$(version) |
142 | endif | |
143 | ||
144 | $(..)glibc-$(version): | |
145 | ln -s . $@ | |
146 | ||
569c558c UD |
147 | #+tsrcs := $(+tsrcs) \ |
148 | # TAGS | |
28f540f4 RM |
149 | .PHONY: TAGS |
150 | TAGS: $(..)MakeTAGS | |
151 | $(MAKE) -f $< $@ -o subdir_TAGS | |
152 | ||
153 | ifdef subdir | |
154 | ||
155 | foo:=$(shell echo subdir foo >&2) | |
156 | ||
bb41a976 | 157 | +tsrcs := Makefile $(wildcard Versions) $(wildcard Depend) $(+tsrcs) \ |
002ab034 | 158 | $(addsuffix .c,$(others) $(test-srcs)) \ |
490dc9aa | 159 | $(wildcard $(addsuffix .input,$(tests) $(test-srcs))) |
28f540f4 | 160 | +tardeps := $(strip $(+tsrcs)) |
28f540f4 RM |
161 | |
162 | verbose = v | |
163 | ||
164 | .PHONY: dist | |
165 | dist: $(..)$(tardir) $(+tardeps) | |
166 | @cd ..; if test -f dist.tar; then c=u; else c=c; fi; \ | |
167 | $(+cmdecho) "cd ..; tar $${c}h$(verbose)f dist.tar ..."; \ | |
f127cd28 | 168 | tar $${c}h$(verbose)f dist.tar \ |
db54bbfb AJ |
169 | $(addprefix $(tardir)/$(subdir)/,$(filter-out $< ../%,$^)) \ |
170 | $(addprefix $(tardir)/,\ | |
171 | $(patsubst ../%,%,$(filter-out $<,$(filter ../%,$^)))) | |
28f540f4 RM |
172 | |
173 | else # Parent makefile. | |
174 | ||
175 | # Find what other things sysdep directories want to distribute. | |
176 | ||
177 | foo:=$(shell echo parent foobie>&2) | |
178 | +sysdep-distfiles := $(wildcard $(addsuffix /Dist,$(sysdep_dirs))) | |
179 | foo:=$(shell echo +sysdep-distfiles='$(+sysdep-distfiles)'>&2) | |
180 | +sysdep-dist := $(foreach file,$(+sysdep-distfiles),\ | |
181 | $(addprefix $(dir $(file)), \ | |
182 | $(shell sed -e 's/\#.*$$//' $(file)))) \ | |
183 | $(+sysdep-distfiles) \ | |
184 | $(sysdep-Subdir-files) | |
185 | foo:=$(shell echo '+sysdep-dist=$(+sysdep-dist)' >&2) | |
186 | ||
9f447fb3 | 187 | +sysdep-tsrcs := $(wildcard $(foreach file,Makefile Implies syscalls.list\ |
fc71a2d4 UD |
188 | configure configure.in Versions\ |
189 | libm-test-ulps,\ | |
28f540f4 RM |
190 | $(addsuffix /$(file),$(sysdep_dirs)))) \ |
191 | $(+sysdep-dist) | |
192 | ||
9c4c0024 | 193 | +tsrcs := $(+tsrcs) $(+sysdep-tsrcs) $(wildcard $(+sysdep-names:%=include/%)) |
28f540f4 | 194 | |
880f421f | 195 | ifeq ($(with-cvs),yes) |
28f540f4 RM |
196 | define autoconf-it |
197 | autoconf $(ACFLAGS) $< > $@.new | |
198 | mv -f $@.new $@ | |
379bb425 | 199 | test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated: autoconf $(ACFLAGS) $<' $@ |
28f540f4 | 200 | endef |
880f421f UD |
201 | else |
202 | define autoconf-it | |
203 | autoconf $(ACFLAGS) $< > $@.new | |
204 | mv -f $@.new $@ | |
205 | endef | |
206 | endif | |
28f540f4 | 207 | |
dbdb6189 RM |
208 | configure: configure.in aclocal.m4; $(autoconf-it) |
209 | %/configure: %/configure.in aclocal.m4; $(autoconf-it) | |
28f540f4 | 210 | |
5325738c | 211 | dist: $(tardir).tar.gz |
28f540f4 RM |
212 | |
213 | subdir_dist: dist.tar | |
2303f5fd | 214 | dist.tar: README $(tardir) $(+tsrcs) |
28f540f4 RM |
215 | tar chvf $@ $(addprefix $(tardir)/,$(filter-out $(tardir),$^)) |
216 | ||
217 | $(tardir).tar: dist.tar subdir_dist | |
9dd2fc5d | 218 | @echo Files listed here have names exceeding 14 chars. |
779ae82e UD |
219 | tar xfv $< -C $${TMPDIR-/tmp} | sed -n '/[^/]\{15,\}/p' |
220 | tar covf $@ -C $${TMPDIR-/tmp} $(tardir) | |
221 | -rm -fr $${TMPDIR-/tmp}/$(tardir) dist.tar & | |
28f540f4 RM |
222 | |
223 | %.Z: % | |
224 | compress -c $< > $@ | |
225 | ||
226 | %.gz: % | |
227 | gzip -9 -v -c $< > $@ | |
228 | ||
229 | foo:=$(shell echo subdirs=$(subdirs) >&2) | |
230 | dist-subdirs := $(addprefix dist-,$(subdirs)) # dist-manual | |
231 | .PHONY: subdir_dist $(dist-subdirs) | |
232 | subdir_dist: $(dist-subdirs) | |
233 | $(dist-subdirs): | |
234 | $(MAKE) -C $(patsubst dist-%,%,$@) dist | |
235 | ||
236 | # This is here instead of in Makefile so it can use $(release) and $(version). | |
8d57beea | 237 | README: README.template version.h |
28f540f4 RM |
238 | -rm -f $@ |
239 | sed -e 's/RELEASE/$(release)/' -e 's/VERSION/$(version)/' < $< > $@ | |
240 | # Make it unwritable so I won't change it by mistake. | |
241 | chmod 444 $@ | |
880f421f | 242 | ifeq ($(with-cvs),yes) |
379bb425 | 243 | test ! -d CVS || cvs $(CVSOPTS) commit -m'Remade for $(release)-$(version)' $@ |
880f421f | 244 | endif |
28f540f4 RM |
245 | |
246 | ||
247 | endif # Subdirectory vs. parent makefile | |
248 | \f | |
249 | # Get these things out of the environment because they take up lots of space. | |
250 | unexport distribute generated | |
251 | ||
252 | # Fnord. | |
253 | export inhibit_mach_syscalls=t | |
254 | export no_deps=t | |
255 | export inhibit_interface_rules=t |