]>
Commit | Line | Data |
---|---|---|
1 | ### | |
2 | ### Makefile used to three-stage build a tree of source code. Also used to | |
3 | ### compile other bundles, first with cc, then with gcc. | |
4 | ### | |
5 | ||
6 | ### | |
7 | ### USE OF THIS FILE REQUIRES GNU MAKE!!! | |
8 | ### | |
9 | ||
10 | ### The first versions of the file were written by Rich Pixley ([email protected]). | |
11 | ### Many subsequent additions (and current maintainance by) david d `zoo' zuhn, | |
12 | ### ([email protected]). | |
13 | ||
14 | ### Every invocation of this Makefile needs to have a variable set (host), | |
15 | ### which is the named used for ./configure, and also the prefix for the | |
16 | ### various files and directories used in a three stage. | |
17 | ||
18 | ### The variable target may be set for the target of a cross-compilation. | |
19 | ||
20 | ### The variable build may be to build a tree on a machine other than the host. | |
21 | ||
22 | ifndef host | |
23 | error: | |
24 | @echo You must set the variable \"host\" to use this Makefile ; exit 1 | |
25 | else | |
26 | ||
27 | ### from here to very near the end of the file is the real guts of this | |
28 | ### Makefile, and it is not seen if the variable 'host' is not set | |
29 | ||
30 | ### from which cvs tree are we working? | |
31 | TREE := devo | |
32 | ||
33 | include $(TREE)/release-info | |
34 | ||
35 | # Set TIME to time to get timings. Not done by default because time | |
36 | # ignores the exit status. | |
37 | TIME := | |
38 | ||
39 | CONFIG_SHELL := | |
40 | GCC := $(host)-gcc -O2 | |
41 | GNUC := CC="$(GCC)" | |
42 | CFLAGS := -g | |
43 | CXXFLAGS := -g -O2 | |
44 | GNU_MAKE := /usr/latest/bin/make -w | |
45 | MAKEINFOFLAGS := | |
46 | ||
47 | override MAKE := make -w | |
48 | override MFLAGS := | |
49 | #override MAKEFLAGS := | |
50 | ||
51 | SHELL := /bin/sh | |
52 | ||
53 | ifndef build | |
54 | build := $(host) | |
55 | endif | |
56 | ||
57 | ifndef target | |
58 | target := $(host) | |
59 | endif | |
60 | ||
61 | ifeq ($(patsubst %-lynx,lynx,$(host)),lynx) | |
62 | SHELL := /bin/bash | |
63 | GNU_MAKE := $(MAKE) | |
64 | CONFIG_SHELL := /bin/bash | |
65 | endif | |
66 | ||
67 | ifeq ($(patsubst %-m68k-hp-hpux,m68k-hp-hpux,$(host)),m68k-hp-hpux) | |
68 | SHELL := /usr/unsupported/bin/bash | |
69 | GNU_MAKE := $(MAKE) | |
70 | CONFIG_SHELL := /usr/unsupported/bin/bash | |
71 | endif | |
72 | ||
73 | ifneq ($(build),$(host)) | |
74 | ||
75 | # We are building on a machine other than the host. We rely upon | |
76 | # previously built cross-compilers from the build machine to the host | |
77 | # (used to build the executables) and from the build machine to the | |
78 | # target (used to build the libraries). | |
79 | ||
80 | AR := $(host)-ar | |
81 | AR_FOR_TARGET := $(target)-ar | |
82 | AS := $(host)-as | |
83 | AS_FOR_TARGET := $(target)-as | |
84 | BISON := byacc | |
85 | CC := $(host)-gcc | |
86 | CC_FOR_BUILD := gcc | |
87 | CC_FOR_TARGET := $(target)-gcc | |
88 | CXX := $(host)-gcc | |
89 | CXX_FOR_TARGET := $(target)-gcc | |
90 | GCC := $(host)-gcc -O2 | |
91 | GXX := $(host)-g++ | |
92 | GXX_FOR_TARGET := $(target)-g++ | |
93 | HOST_PREFIX := $(build)- | |
94 | HOST_PREFIX_1 := $(build)- | |
95 | LEX := flex | |
96 | MAKEINFO := makeinfo | |
97 | MUNCH_NM := $(host)-nm | |
98 | NM := $(host)-nm | |
99 | NM_FOR_TARGET := $(target)-nm | |
100 | RANLIB := $(host)-ranlib | |
101 | RANLIB_FOR_TARGET := $(target)-ranlib | |
102 | YACC := $(BISON) | |
103 | ||
104 | ifeq ($(host),i386-go32) | |
105 | MAKEINFOFLAGS = --no-split | |
106 | endif | |
107 | ||
108 | FLAGS_TO_PASS := \ | |
109 | "AR=$(AR)" \ | |
110 | "AR_FOR_TARGET=$(AR_FOR_TARGET)" \ | |
111 | "AS=$(AS)" \ | |
112 | "AS_FOR_TARGET=$(AS_FOR_TARGET)" \ | |
113 | "BISON=$(BISON)" \ | |
114 | "CC=$(CC)" \ | |
115 | "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ | |
116 | "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ | |
117 | "CXX=$(CXX)" \ | |
118 | "CXX_FOR_TARGET=$(CXX_FOR_TARGET)" \ | |
119 | "CFLAGS=$(CFLAGS)" \ | |
120 | "CXXFLAGS=$(CXXFLAGS)" \ | |
121 | "GCC=$(GCC)" \ | |
122 | "HOST_PREFIX=$(HOST_PREFIX)" \ | |
123 | "HOST_PREFIX_1=$(HOST_PREFIX_1)" \ | |
124 | "LEX=$(LEX)" \ | |
125 | "MAKEINFO=$(MAKEINFO)" \ | |
126 | "MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \ | |
127 | "MF=$(MF)" \ | |
128 | "MUNCH_NM=$(MUNCH_NM)" \ | |
129 | "NM=$(NM)" \ | |
130 | "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ | |
131 | "RANLIB=$(RANLIB)" \ | |
132 | "RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \ | |
133 | "RELEASE_TAG=$(RELEASE_TAG)" \ | |
134 | "RUNTEST=$(relbindir)/runtest" \ | |
135 | "SHELL=$(SHELL)" \ | |
136 | "TIME=$(TIME)" \ | |
137 | "YACC=$(YACC)" \ | |
138 | "build=$(build)" \ | |
139 | "host=$(host)" | |
140 | ||
141 | # We must pass the build cross host tools in the environment of | |
142 | # configure, so that autoconf scripts will run the right programs. | |
143 | configenv := AR="$(AR)" CC="$(CC)" RANLIB="$(RANLIB)" | |
144 | ||
145 | else | |
146 | ||
147 | # This is a normal build on the host machine. | |
148 | ||
149 | FLAGS_TO_PASS := \ | |
150 | "GCC=$(GCC)" \ | |
151 | "CFLAGS=$(CFLAGS)" \ | |
152 | "CXXFLAGS=$(CXXFLAGS)" \ | |
153 | "TIME=$(TIME)" \ | |
154 | "MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \ | |
155 | "MF=$(MF)" \ | |
156 | "host=$(host)" \ | |
157 | "RELEASE_TAG=$(RELEASE_TAG)" \ | |
158 | "SHELL=$(SHELL)" | |
159 | ||
160 | configenv := | |
161 | ||
162 | endif | |
163 | ||
164 | #### we need to change the default C compiler for some hosts | |
165 | ifeq ($(host),sparc-sun-solaris2) | |
166 | CC := cc -Xs | |
167 | endif | |
168 | ||
169 | ifeq ($(host),mips-sgi-irix4) | |
170 | CC := cc -cckr -Wf,-XNg1500 -Wf,-XNk1000 -Wf,-XNh2000 | |
171 | endif | |
172 | ||
173 | ifeq ($(host),hppa1.1-hp-hpux) | |
174 | CC := cc -Wp,-H256000 | |
175 | endif | |
176 | ||
177 | ifeq ($(host),mips-mips-riscos5sysv) | |
178 | CC := cc -non_shared -systype sysv | |
179 | endif | |
180 | ||
181 | ifeq ($(host),mips-dec-ultrix) | |
182 | CC := cc -Wf,-XNg1000 | |
183 | endif | |
184 | ||
185 | ifeq ($(host),m68k-sun-sunos4.1.1) | |
186 | CC := cc -J | |
187 | endif | |
188 | ||
189 | # We want to use stabs for MIPS targets. | |
190 | ifeq ($(target),mips-idt-ecoff) | |
191 | configargs = -with-stabs | |
192 | endif | |
193 | ||
194 | ifeq ($(target),mips-dec-ultrix) | |
195 | configargs = -with-stabs | |
196 | endif | |
197 | ||
198 | ifeq ($(target),mips-sgi-irix4) | |
199 | configargs = -with-stabs | |
200 | endif | |
201 | ||
202 | ifeq ($(target),mips-sgi-irix5.2) | |
203 | configargs = -with-stabs | |
204 | endif | |
205 | ||
206 | ifeq ($(target),alpha-dec-osf1.3) | |
207 | configargs = -with-stabs | |
208 | endif | |
209 | ||
210 | # We must use stabs for SVR4 targets. | |
211 | ifeq ($(target),i386-sysv4.2) | |
212 | configargs = -with-stabs | |
213 | endif | |
214 | ||
215 | ifneq ($(CC), 'cc') | |
216 | FLAGS_TO_PASS := "CC=$(CC)" $(FLAGS_TO_PASS) | |
217 | endif | |
218 | ||
219 | #### and on some, we need CONFIG_SHELL | |
220 | ifeq ($(patsubst %-lynxos,lynxos,$(host)),lynxos) | |
221 | FLAGS_TO_PASS := "CONFIG_SHELL=$(CONFIG_SHELL)" $(FLAGS_TO_PASS) | |
222 | endif | |
223 | ||
224 | # These are the prefixes used for Cygnus builds. | |
225 | prefixes = --prefix=$(release_root) --exec-prefix=$(release_root)/H-$(host) | |
226 | ||
227 | relbindir = $(release_root)/H-$(build)/bin | |
228 | ||
229 | ### general config stuff | |
230 | WORKING_DIR := $(host)-objdir | |
231 | STAGE1DIR := $(WORKING_DIR).1 | |
232 | STAGE2DIR := $(WORKING_DIR).2 | |
233 | STAGE3DIR := $(WORKING_DIR).3 | |
234 | STAGE4DIR := $(WORKING_DIR).4 | |
235 | INPLACEDIR := $(host)-in-place | |
236 | ||
237 | # Arrange to find the needed programs. If we are building on a | |
238 | # machine other than the host, we must find the cross-compilers. | |
239 | ||
240 | ifneq ($(build),$(host)) | |
241 | ||
242 | holesys := $(build) | |
243 | HOLESSTAMP := $(holesys)-stamp-holes $(build)-x-$(host)-stamp-holes $(build)-x-$(target)-stamp-holes | |
244 | HOLESDIR := $(holesys)-holes | |
245 | BUILD_HOST_HOLES_DIR := $(build)-x-$(host)-holes | |
246 | BUILD_TARGET_HOLES_DIR := $(build)-x-$(target)-holes | |
247 | ||
248 | SET_NATIVE_HOLES := SHELL=$(SHELL) ; PATH=`pwd`/$(HOLESDIR):`pwd`/$(BUILD_HOST_HOLES_DIR):`pwd`/$(BUILD_TARGET_HOLES_DIR) ; export PATH ; export SHELL ; | |
249 | SET_CYGNUS_PATH := SHELL=$(SHELL) ; PATH=`pwd`/$(HOLESDIR):`pwd`/$(BUILD_HOST_HOLES_DIR):`pwd`/$(BUILD_TARGET_HOLES_DIR) ; export PATH ; export SHELL ; | |
250 | SET_LATEST_PATH := SHELL=$(SHELL) ; PATH=/usr/latest/bin:`pwd`/$(HOLESDIR):`pwd`/$(BUILD_HOST_HOLES_DIR):`pwd`/$(BUILD_TARGET_HOLES_DIR) ; export PATH ; export SHELL ; | |
251 | ||
252 | else | |
253 | ||
254 | holesys := $(host) | |
255 | HOLESSTAMP := $(holesys)-stamp-holes | |
256 | HOLESDIR := $(holesys)-holes | |
257 | ||
258 | SET_NATIVE_HOLES := SHELL=$(SHELL) ; PATH=`pwd`/$(HOLESDIR) ; export PATH ; export SHELL ; | |
259 | SET_CYGNUS_PATH := SHELL=$(SHELL) ; PATH=$(relbindir):`pwd`/$(HOLESDIR) ; export PATH ; export SHELL ; | |
260 | SET_LATEST_PATH := SHELL=$(SHELL) ; PATH=/usr/latest/bin:`pwd`/$(HOLESDIR) ; export PATH ; export SHELL ; | |
261 | ||
262 | endif | |
263 | ||
264 | .PHONY: all | |
265 | ifneq ($(target),$(host)) | |
266 | ## | |
267 | ## This is a cross compilation | |
268 | ## | |
269 | arch = $(host)-x-$(target) | |
270 | config = -host=$(host) -target=$(target) | |
271 | FLAGS_TO_PASS := $(FLAGS_TO_PASS) "target=$(target)" | |
272 | ||
273 | ifeq ($(patsubst %-lynx,lynx,$(target)),lynx) | |
274 | configargs := $(configargs) --with-headers=/s1/cygnus/dejagnu/$(target)/include \ | |
275 | --with-libs=/s1/cygnus/dejagnu/$(target)/lib | |
276 | endif | |
277 | ||
278 | ifeq ($(patsubst %-i386-sysv4.2,i386-sysv4.2,$(target)),i386-sysv4.2) | |
279 | configargs := $(configargs) --with-headers=/s1/cygnus/dejagnu/$(target)/include \ | |
280 | --with-libs=/s1/cygnus/dejagnu/$(target)/lib | |
281 | endif | |
282 | ||
283 | ifeq ($(patsubst %-sparc-sun-sunos4.1.3,sparc-sun-sunos4.1.3,$(target)),sparc-sun-sunos4.1.3) | |
284 | configargs := $(configargs) --with-headers=/s1/cygnus/dejagnu/$(target)/include \ | |
285 | --with-libs=/s1/cygnus/dejagnu/$(target)/lib | |
286 | endif | |
287 | ||
288 | ifeq ($(patsubst %-sparc-sun-solaris2,sparc-sun-solaris2,$(target)),sparc-sun-solaris2) | |
289 | configargs := $(configargs) --with-headers=/s1/cygnus/dejagnu/$(target)/include \ | |
290 | --with-libs=/s1/cygnus/dejagnu/$(target)/lib | |
291 | endif | |
292 | ||
293 | ifneq ($(build),$(host)) | |
294 | all: do-cygnus do-latest | |
295 | build-all: build-cygnus build-latest | |
296 | else | |
297 | all: do-native do-latest | |
298 | build-all: build-native build-latest | |
299 | endif | |
300 | ||
301 | ||
302 | else | |
303 | ## | |
304 | ## This is a native compilation | |
305 | ## | |
306 | arch = $(host) | |
307 | config = -host=$(host) | |
308 | ifneq ($(build),$(host)) | |
309 | all: do-cygnus do-latest | |
310 | else | |
311 | all: $(host)-stamp-3stage-done | |
312 | endif | |
313 | #all: in-place do1 do2 do3 comparison | |
314 | ||
315 | endif | |
316 | ||
317 | NATIVEDIR := $(arch)-native-objdir | |
318 | CYGNUSDIR := $(arch)-cygnus-objdir | |
319 | LATESTDIR := $(arch)-latest-objdir | |
320 | DOSDIR := dos-x-$(target)-objdir | |
321 | ||
322 | everything: do-cross | |
323 | #everything: in-place do1 do2 do3 comparison do-cygnus | |
324 | ||
325 | .PHONY: dos | |
326 | dos: | |
327 | $(MAKE) -f test-build.mk CFLAGS= build=$(host) host=i386-go32 target=$(target) do-dos | |
328 | dos-path: | |
329 | $(MAKE) -f test-build.mk CFLAGS= build=$(host) host=i386-go32 target=$(target) path-dos | |
330 | ||
331 | .PHONY: do-dos | |
332 | do-dos: $(HOLESSTAMP) dos-x-$(target)-stamp-done | |
333 | build-dos: $(HOLESSTAMP) dos-x-$(target)-stamp-dos-checked | |
334 | config-dos: $(HOLESSTAMP) dos-x-$(target)-stamp-dos-configured | |
335 | path-dos: | |
336 | @echo "$(SET_CYGNUS_PATH)" | |
337 | ||
338 | dos-x-$(target)-stamp-done: | |
339 | [ -f $(relbindir)/$(host)-gcc ] || (echo "must have gcc available"; exit 1) | |
340 | $(SET_CYGNUS_PATH) $(TIME) $(GNU_MAKE) -f test-build.mk dos-x-$(target)-stamp-installed $(FLAGS_TO_PASS) | |
341 | if [ -f CLEAN_ALL -o -f CLEAN_CROSSES ] ; then rm -rf $(DOSDIR) ; else true ; fi | |
342 | touch $@ | |
343 | ||
344 | dos-x-$(target)-stamp-installed: $(HOLESSTAMP) dos-x-$(target)-stamp-intermediate | |
345 | [ -d dos-x-$(target)-installed ] || mkdir dos-x-$(target)-installed | |
346 | $(SET_CYGNUS_PATH) $(TREE)/release/mkdosrel dos-x-$(target)-intermediate \ | |
347 | dos-x-$(target)-installed $(target) | |
348 | # (cd dos-x-$(target)-installed; find . -print | $(TREE)/release/make8.3) | |
349 | touch $@ | |
350 | ||
351 | dos-x-$(target)-stamp-intermediate: $(HOLESSTAMP) dos-x-$(target)-stamp-dos-checked | |
352 | [ -d dos-x-$(target)-intermediate ] || mkdir dos-x-$(target)-intermediate | |
353 | dir=`pwd` ; export dir ; \ | |
354 | $(SET_CYGNUS_PATH) cd $(DOSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) \ | |
355 | prefix=$$dir/dos-x-$(target)-intermediate install install-info | |
356 | touch $@ | |
357 | ||
358 | dos-x-$(target)-stamp-dos-checked: $(HOLESSTAMP) dos-x-$(target)-stamp-dos-built | |
359 | # cd $(DOSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) check | |
360 | touch $@ | |
361 | ||
362 | dos-x-$(target)-stamp-dos-built: $(HOLESSTAMP) dos-x-$(target)-stamp-dos-configured | |
363 | $(SET_CYGNUS_PATH) cd $(DOSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) all info | |
364 | touch $@ | |
365 | ||
366 | dos-x-$(target)-stamp-dos-configured: $(HOLESSTAMP) | |
367 | [ -d $(DOSDIR) ] || mkdir $(DOSDIR) | |
368 | $(SET_CYGNUS_PATH) cd $(DOSDIR) ; $(GNUC) $(configenv) $(TIME) $(CONFIG_SHELL) \ | |
369 | ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) --prefix=/cygnus \ | |
370 | --program-transform-name='' $(configargs) | |
371 | touch $@ | |
372 | ||
373 | ||
374 | ||
375 | ||
376 | .PHONY: do-native | |
377 | do-native: $(HOLESSTAMP) $(arch)-stamp-native | |
378 | do-native-config: $(arch)-stamp-native-configured | |
379 | build-native: $(HOLESSTAMP) $(arch)-stamp-native-checked | |
380 | config-native: $(HOLESSTAMP) $(arch)-stamp-native-configured | |
381 | ||
382 | $(arch)-stamp-native: $(HOLESSTAMP) | |
383 | $(SET_NATIVE_HOLES) $(TIME) $(GNU_MAKE) -f test-build.mk $(arch)-stamp-native-installed $(FLAGS_TO_PASS) | |
384 | if [ -f CLEAN_ALL -o -f CLEAN_CROSSES ] ; then rm -rf $(NATIVEDIR) ; else true ; fi | |
385 | touch $(arch)-stamp-native | |
386 | ||
387 | $(arch)-stamp-native-installed: $(HOLESSTAMP) $(arch)-stamp-native-checked | |
388 | $(SET_NATIVE_HOLES) cd $(NATIVEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) install | |
389 | $(SET_NATIVE_HOLES) cd $(NATIVEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) install-info | |
390 | touch $@ | |
391 | ||
392 | $(arch)-stamp-native-checked: $(arch)-stamp-native-built | |
393 | # cd $(NATIVEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) check | |
394 | touch $@ | |
395 | ||
396 | $(arch)-stamp-native-built: $(HOLESSTAMP) $(arch)-stamp-native-configured | |
397 | $(SET_NATIVE_HOLES) cd $(NATIVEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) all | |
398 | $(SET_NATIVE_HOLES) cd $(NATIVEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) info | |
399 | touch $@ | |
400 | ||
401 | $(arch)-stamp-native-configured: $(HOLESSTAMP) | |
402 | [ -d $(NATIVEDIR) ] || mkdir $(NATIVEDIR) | |
403 | $(SET_NATIVE_HOLES) cd $(NATIVEDIR) ; $(configenv) CC="$(CC)" $(TIME) $(CONFIG_SHELL) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) | |
404 | touch $@ | |
405 | ||
406 | ||
407 | .PHONY: do-cygnus | |
408 | do-cygnus: $(HOLESSTAMP) $(arch)-stamp-cygnus | |
409 | build-cygnus: $(HOLESSTAMP) $(arch)-stamp-cygnus-checked | |
410 | config-cygnus: $(HOLESSTAMP) $(arch)-stamp-cygnus-configured | |
411 | path-cygnus: | |
412 | $(SET_CYGNUS_PATH) echo $$PATH | |
413 | ||
414 | vault-cygnus: $(HOLESSTAMP) $(arch)-stamp-cygnus-built | |
415 | $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) vault-install | |
416 | ||
417 | ||
418 | $(arch)-stamp-cygnus: | |
419 | [ -f $(relbindir)/$(host)-gcc ] || (echo "must have gcc available"; exit 1) | |
420 | $(SET_CYGNUS_PATH) $(TIME) $(GNU_MAKE) -f test-build.mk $(arch)-stamp-cygnus-installed $(FLAGS_TO_PASS) | |
421 | if [ -f CLEAN_ALL -o -f CLEAN_CROSSES ] ; then rm -rf $(CYGNUSDIR) ; else true ; fi | |
422 | touch $(arch)-stamp-cygnus | |
423 | ||
424 | $(arch)-stamp-cygnus-installed: $(HOLESSTAMP) $(arch)-stamp-cygnus-checked | |
425 | $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) install | |
426 | $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) install-info | |
427 | if [ -f VAULT-INSTALL ] ; then \ | |
428 | $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(MAKE) $(FLAGS_TO_PASS) $(GNUC) vault-install ; \ | |
429 | else true ; fi | |
430 | touch $@ | |
431 | ||
432 | $(arch)-stamp-cygnus-checked: $(HOLESSTAMP) $(arch)-stamp-cygnus-built | |
433 | # cd $(CYGNUSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) check | |
434 | touch $@ | |
435 | ||
436 | $(arch)-stamp-cygnus-built: $(HOLESSTAMP) $(arch)-stamp-cygnus-configured | |
437 | $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) all | |
438 | $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) info | |
439 | touch $@ | |
440 | ||
441 | $(arch)-stamp-cygnus-configured: $(HOLESSTAMP) | |
442 | [ -d $(CYGNUSDIR) ] || mkdir $(CYGNUSDIR) | |
443 | $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(configenv) $(GNUC) $(TIME) $(CONFIG_SHELL) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) | |
444 | touch $@ | |
445 | ||
446 | .PHONY: do-latest | |
447 | do-latest: $(HOLESSTAMP) $(arch)-stamp-latest | |
448 | build-latest: $(HOLESSTAMP) $(arch)-stamp-latest-checked | |
449 | ||
450 | $(arch)-stamp-latest: | |
451 | $(SET_LATEST_PATH) $(TIME) $(GNU_MAKE) -f test-build.mk $(arch)-stamp-latest-installed $(FLAGS_TO_PASS) | |
452 | touch $(arch)-stamp-latest | |
453 | ||
454 | $(arch)-stamp-latest-installed: $(HOLESSTAMP) $(arch)-stamp-latest-checked | |
455 | $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) install | |
456 | $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) install-info | |
457 | touch $@ | |
458 | ||
459 | $(arch)-stamp-latest-checked: $(arch)-stamp-latest-built | |
460 | # $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) check | |
461 | touch $@ | |
462 | ||
463 | $(arch)-stamp-latest-built: $(arch)-stamp-latest-configured | |
464 | $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) all | |
465 | $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) $(GNUC) info | |
466 | touch $@ | |
467 | ||
468 | $(arch)-stamp-latest-configured: | |
469 | [ -d $(LATESTDIR) ] || mkdir $(LATESTDIR) | |
470 | $(SET_LATEST_PATH) cd $(LATESTDIR) ; $(configenv) $(GNUC) $(TIME) $(CONFIG_SHELL) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) | |
471 | touch $@ | |
472 | ||
473 | ||
474 | .PHONY: in-place | |
475 | in-place: $(host)-stamp-in-place | |
476 | ||
477 | $(host)-stamp-in-place: | |
478 | PATH=/bin:/usr/bin:/usr/ucb ; \ | |
479 | export PATH ; \ | |
480 | SHELL=/bin/sh ; export SHELL ; \ | |
481 | $(TIME) $(GNU_MAKE) -f test-build.mk $(host)-stamp-in-place-installed host=$(host) $(FLAGS_TO_PASS) | |
482 | touch $@ | |
483 | if [ -f CLEAN_ALL ] ; then \ | |
484 | rm -rf $(INPLACEDIR) ; \ | |
485 | else \ | |
486 | mv $(INPLACEDIR) $(STAGE1DIR) ; \ | |
487 | fi | |
488 | ||
489 | $(host)-stamp-in-place-installed: $(host)-stamp-in-place-checked | |
490 | cd $(INPLACEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" install host=$(host) | |
491 | cd $(INPLACEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" install-info host=$(host) | |
492 | touch $@ | |
493 | ||
494 | $(host)-stamp-in-place-checked: $(host)-stamp-in-place-built | |
495 | # cd $(INPLACEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" check host=$(host) | |
496 | touch $@ | |
497 | ||
498 | $(host)-stamp-in-place-built: $(host)-stamp-in-place-configured | |
499 | cd $(INPLACEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" all host=$(host) | |
500 | cd $(INPLACEDIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" info host=$(host) | |
501 | touch $@ | |
502 | ||
503 | $(host)-stamp-in-place-configured: $(host)-stamp-in-place-cp | |
504 | cd $(INPLACEDIR) ; $(configenv) CC="$(CC)" $(TIME) $(CONFIG_SHELL) ./configure $(config) -v $(prefixes) $(configargs) | |
505 | touch $@ | |
506 | ||
507 | $(host)-stamp-in-place-cp: | |
508 | rm -rf $(INPLACEDIR) | |
509 | mkdir $(INPLACEDIR) | |
510 | (cd $(TREE) ; tar cf - .) | (cd $(INPLACEDIR) ; tar xf -) | |
511 | touch $@ | |
512 | ||
513 | $(host)-stamp-3stage-done: do1 do2 do3 comparison | |
514 | touch $@ | |
515 | ||
516 | ||
517 | .PHONY: do1 | |
518 | do1: $(HOLESSTAMP) $(host)-stamp-stage1 | |
519 | do1-config: $(HOLESSTAMP) $(host)-stamp-stage1-configured | |
520 | do1-build: $(HOLESSTAMP) $(host)-stamp-stage1-checked | |
521 | ||
522 | do1-vault: $(HOLESSTAMP) $(host)-stamp-stage1-built | |
523 | if [ -d $(WORKING_DIR).1 ] ; then \ | |
524 | $(SET_NATIVE_HOLES) cd $(WORKING_DIR).1 ; $(MAKE) $(FLAGS_TO_PASS) host=$(host) "CFLAGS=$(CFLAGS)" vault-install ; \ | |
525 | else \ | |
526 | $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; $(MAKE) $(FLAGS_TO_PASS) host=$(host) "CFLAGS=$(CFLAGS)" vault-install ; \ | |
527 | fi | |
528 | ||
529 | $(host)-stamp-stage1: | |
530 | if [ -d $(STAGE1DIR) ] ; then \ | |
531 | mv $(STAGE1DIR) $(WORKING_DIR) ; \ | |
532 | else \ | |
533 | true ; \ | |
534 | fi | |
535 | $(SET_NATIVE_HOLES) $(TIME) $(GNU_MAKE) -f test-build.mk $(FLAGS_TO_PASS) host=$(host) $(host)-stamp-stage1-installed | |
536 | touch $@ | |
537 | if [ -f CLEAN_ALL ] ; then \ | |
538 | rm -rf $(WORKING_DIR) ; \ | |
539 | else \ | |
540 | mv $(WORKING_DIR) $(STAGE1DIR) ; \ | |
541 | fi | |
542 | ||
543 | $(host)-stamp-stage1-installed: $(host)-stamp-stage1-checked | |
544 | $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" install host=$(host) | |
545 | $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" install-info host=$(host) | |
546 | ifeq ($(host),rs6000-ibm-aix) | |
547 | -rm $(relbindir)/make | |
548 | endif | |
549 | touch $@ | |
550 | ||
551 | $(host)-stamp-stage1-checked: $(host)-stamp-stage1-built | |
552 | # $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" check host=$(host) | |
553 | touch $@ | |
554 | ||
555 | $(host)-stamp-stage1-built: $(host)-stamp-stage1-configured | |
556 | $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" all host=$(host) | |
557 | $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; $(TIME) $(MAKE) $(FLAGS_TO_PASS) "CFLAGS=$(CFLAGS)" info host=$(host) | |
558 | touch $@ | |
559 | ||
560 | $(host)-stamp-stage1-configured: | |
561 | [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) | |
562 | $(SET_NATIVE_HOLES) cd $(WORKING_DIR) ; \ | |
563 | $(configenv) CC="$(CC)" $(TIME) $(CONFIG_SHELL) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) | |
564 | touch $@ | |
565 | ||
566 | .PHONY: do2 | |
567 | do2: $(HOLESDIR) $(host)-stamp-stage2 | |
568 | ||
569 | do2-vault: $(HOLESSTAMP) $(host)-stamp-stage2-built | |
570 | if [ -d $(WORKING_DIR).2 ] ; then \ | |
571 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR).2 ; $(MAKE) $(FLAGS_TO_PASS) host=$(host) "CFLAGS=$(CFLAGS)" vault-install ; \ | |
572 | else \ | |
573 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(MAKE) $(FLAGS_TO_PASS) host=$(host) "CFLAGS=$(CFLAGS)" vault-install ; \ | |
574 | fi | |
575 | ||
576 | ||
577 | ||
578 | $(host)-stamp-stage2: | |
579 | if [ -d $(STAGE2DIR) ] ; then \ | |
580 | mv $(STAGE2DIR) $(WORKING_DIR) ; \ | |
581 | else \ | |
582 | true ; \ | |
583 | fi | |
584 | $(SET_CYGNUS_PATH) $(TIME) $(GNU_MAKE) $(FLAGS_TO_PASS) -f test-build.mk -w $(host)-stamp-stage2-installed | |
585 | mv $(WORKING_DIR) $(STAGE2DIR) | |
586 | touch $@ | |
587 | ||
588 | ||
589 | # The SunOS make program gets confused when it is deleted while running. | |
590 | # The signal handlers return to the wrong place, or something, and the | |
591 | # program dumps core. To avoid trouble with installing make over itself, | |
592 | # we delete the installed make program. | |
593 | $(host)-stamp-stage2-installed: $(host)-stamp-stage2-checked | |
594 | -rm -f $(relbindir)/make | |
595 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(GNU_MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" install host=$(host) | |
596 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" install-info host=$(host) | |
597 | touch $@ | |
598 | ||
599 | $(host)-stamp-stage2-checked: $(host)-stamp-stage2-built | |
600 | # $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" check host=$(host) | |
601 | touch $@ | |
602 | ||
603 | $(host)-stamp-stage2-built: $(host)-stamp-stage2-configured | |
604 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" all host=$(host) | |
605 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" info host=$(host) | |
606 | touch $@ | |
607 | ||
608 | $(host)-stamp-stage2-configured: | |
609 | [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) | |
610 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; \ | |
611 | $(configenv) $(GNUC) $(TIME) $(CONFIG_SHELL) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) | |
612 | touch $@ | |
613 | ||
614 | .PHONY: do3 | |
615 | do3: $(HOLESDIR) $(host)-stamp-stage3 | |
616 | ||
617 | do3-vault: $(HOLESSTAMP) $(host)-stamp-stage3-built | |
618 | if [ -d $(WORKING_DIR).3 ] ; then \ | |
619 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR).3 ; $(MAKE) $(FLAGS_TO_PASS) host=$(host) "CFLAGS=$(CFLAGS)" vault-install ; \ | |
620 | else \ | |
621 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(MAKE) $(FLAGS_TO_PASS) host=$(host) "CFLAGS=$(CFLAGS)" vault-install ; \ | |
622 | fi | |
623 | ||
624 | $(host)-stamp-stage3: | |
625 | if [ -d $(STAGE3DIR) ] ; then \ | |
626 | mv $(STAGE3DIR) $(WORKING_DIR) ; \ | |
627 | else \ | |
628 | true ; \ | |
629 | fi | |
630 | $(SET_CYGNUS_PATH) $(TIME) $(GNU_MAKE) $(FLAGS_TO_PASS) -f test-build.mk -w $(host)-stamp-stage3-installed | |
631 | mv $(WORKING_DIR) $(STAGE3DIR) | |
632 | touch $@ | |
633 | ||
634 | ||
635 | # The SunOS make program gets confused when it is deleted while running. | |
636 | # The signal handlers return to the wrong place, or something, and the | |
637 | # program dumps core. To avoid trouble with installing make over itself, | |
638 | # we delete the installed make program. | |
639 | $(host)-stamp-stage3-installed: $(host)-stamp-stage3-checked | |
640 | -rm -f $(relbindir)/make | |
641 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(GNU_MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" install host=$(host) | |
642 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" install-info host=$(host) | |
643 | if [ -f VAULT-INSTALL ] ; then \ | |
644 | $(SET_CYGNUS_PATH) cd $(CYGNUSDIR) ; $(MAKE) $(FLAGS_TO_PASS) $(GNUC) vault-install ; \ | |
645 | else true ; fi | |
646 | touch $@ | |
647 | ||
648 | $(host)-stamp-stage3-checked: $(host)-stamp-stage3-built | |
649 | # $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" check host=$(host) | |
650 | touch $@ | |
651 | ||
652 | $(host)-check-3stage: $(host)-stamp-stage3 | |
653 | $(SET_CYGNUS_PATH) cd $(STAGE3DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" check host=$(host) | |
654 | touch $@ | |
655 | ||
656 | $(host)-stamp-stage3-built: $(host)-stamp-stage3-configured | |
657 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" all host=$(host) | |
658 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" info host=$(host) | |
659 | touch $@ | |
660 | ||
661 | $(host)-stamp-stage3-configured: | |
662 | [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) | |
663 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; \ | |
664 | $(configenv) $(GNUC) $(TIME) $(CONFIG_SHELL) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) | |
665 | touch $@ | |
666 | ||
667 | .PHONY: do4 | |
668 | do4: $(HOLESDIR) $(host)-stamp-stage4 | |
669 | ||
670 | $(host)-stamp-stage4: | |
671 | if [ -d $(STAGE4DIR) ] ; then \ | |
672 | mv $(STAGE4DIR) $(WORKING_DIR) ; \ | |
673 | else \ | |
674 | true ; \ | |
675 | fi | |
676 | $(SET_CYGNUS_PATH) $(TIME) $(GNU_MAKE) $(FLAGS_TO_PASS) -f test-build.mk -w $(host)-stamp-stage4-checked | |
677 | mv $(WORKING_DIR) $(STAGE4DIR) | |
678 | touch $@ | |
679 | ||
680 | ||
681 | $(host)-stamp-stage4-installed: $(host)-stamp-stage4-checked | |
682 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" install host=$(host) | |
683 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" install-info host=$(host) | |
684 | touch $@ | |
685 | ||
686 | $(host)-stamp-stage4-checked: $(host)-stamp-stage4-built | |
687 | # $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" check host=$(host) | |
688 | touch $@ | |
689 | ||
690 | $(host)-stamp-stage4-built: $(host)-stamp-stage4-configured | |
691 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" all host=$(host) | |
692 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; $(TIME) $(MAKE) -w $(FLAGS_TO_PASS) $(GNUC) "CFLAGS=$(CFLAGS)" info host=$(host) | |
693 | touch $@ | |
694 | ||
695 | $(host)-stamp-stage4-configured: | |
696 | [ -d $(WORKING_DIR) ] || mkdir $(WORKING_DIR) | |
697 | $(SET_CYGNUS_PATH) cd $(WORKING_DIR) ; \ | |
698 | $(configenv) $(GNUC) $(TIME) $(CONFIG_SHELL) ../$(TREE)/configure $(config) -v --srcdir=../$(TREE) $(prefixes) $(configargs) | |
699 | touch $@ | |
700 | ||
701 | # These things are needed by a three-stage, but are not included locally. | |
702 | ||
703 | HOLES := \ | |
704 | [ \ | |
705 | ar \ | |
706 | as \ | |
707 | awk \ | |
708 | basename \ | |
709 | cat \ | |
710 | cc \ | |
711 | chmod \ | |
712 | chgrp \ | |
713 | chown \ | |
714 | cmp \ | |
715 | cp \ | |
716 | cpio \ | |
717 | date \ | |
718 | diff \ | |
719 | dirname \ | |
720 | echo \ | |
721 | egrep \ | |
722 | ex \ | |
723 | expr \ | |
724 | false \ | |
725 | find \ | |
726 | grep \ | |
727 | head \ | |
728 | hostname \ | |
729 | install \ | |
730 | ld \ | |
731 | lex \ | |
732 | ln \ | |
733 | ls \ | |
734 | make \ | |
735 | mkdir \ | |
736 | mv \ | |
737 | nm \ | |
738 | pwd \ | |
739 | ranlib \ | |
740 | rm \ | |
741 | rmdir \ | |
742 | sed \ | |
743 | sh \ | |
744 | sleep \ | |
745 | sort \ | |
746 | tar \ | |
747 | test \ | |
748 | time \ | |
749 | touch \ | |
750 | tr \ | |
751 | true \ | |
752 | uname \ | |
753 | uniq \ | |
754 | uudecode \ | |
755 | wc \ | |
756 | whoami | |
757 | ||
758 | ### so far only sun make supports VPATH | |
759 | ifeq ($(subst sun3,sun4,$(holesys)),sun4) | |
760 | MAKE_HOLE := | |
761 | else | |
762 | MAKE_HOLE := make | |
763 | endif | |
764 | ||
765 | ### solaris 2 -- don't use /usr/ucb/cc | |
766 | ifeq (sparc-sun-solaris2,$(holesys)) | |
767 | SET_NATIVE_HOLES := SHELL=$(SHELL) ; PATH=/opt/SUNWspro/bin:`pwd`/$(HOLESDIR) ; export PATH ; export SHELL ; | |
768 | HOLE_DIRS := /usr/ccs/bin | |
769 | CC_HOLE := | |
770 | NUKEM := cc | |
771 | endif | |
772 | ||
773 | ifeq ($(host),i386-go32) | |
774 | DOS_HOLES := aout2exe doschk file | |
775 | endif | |
776 | ||
777 | ifeq ($(host),i386-lynx) | |
778 | MAKE_HOLE := make | |
779 | endif | |
780 | ||
781 | ifeq ($(host),m68k-lynx) | |
782 | MAKE_HOLE := make | |
783 | endif | |
784 | ||
785 | ifeq ($(host),sparc-lynx) | |
786 | MAKE_HOLE := make | |
787 | endif | |
788 | ||
789 | ifeq ($(host),rs6000-lynx) | |
790 | MAKE_HOLE := make | |
791 | endif | |
792 | ||
793 | ### These things are also needed by a three-stage, but in this case, the GNU version of the tool is required. | |
794 | PARTIAL_HOLES := \ | |
795 | $(MAKE_HOLE) \ | |
796 | $(CC_HOLE) \ | |
797 | $(DOS_HOLES) \ | |
798 | flex \ | |
799 | m4 | |
800 | ||
801 | ### look in these directories for things missing from a three-stage | |
802 | HOLE_DIRS := \ | |
803 | $(HOLE_DIRS) \ | |
804 | /bin \ | |
805 | /usr/bin \ | |
806 | /usr/ucb \ | |
807 | /usr/unsupported/bin | |
808 | ||
809 | ### look in these directories for alternate versions of some tools. | |
810 | PARTIAL_HOLE_DIRS := \ | |
811 | /usr/latest/bin \ | |
812 | /usr/progressive/bin \ | |
813 | $(PARTIAL_HOLE_DIRS) \ | |
814 | /usr/vintage/bin \ | |
815 | /usr/unsupported/bin \ | |
816 | $(HOLE_DIRS) | |
817 | ||
818 | $(HOLESDIR): $(holesys)-stamp-holes | |
819 | ||
820 | $(holesys)-stamp-holes: | |
821 | -rm -rf $(HOLESDIR) | |
822 | -mkdir $(HOLESDIR) | |
823 | @for i in $(HOLES) ; do \ | |
824 | found= ; \ | |
825 | for j in $(HOLE_DIRS) ; do \ | |
826 | if [ -x $$j/$$i ] ; then \ | |
827 | ln -s $$j/$$i $(HOLESDIR) || cp $$j/$$i $(HOLESDIR) ; \ | |
828 | echo $$i from $$j ; \ | |
829 | found=t ; \ | |
830 | break ; \ | |
831 | fi ; \ | |
832 | done ; \ | |
833 | case "$$found" in \ | |
834 | t) ;; \ | |
835 | *) echo $$i is NOT found ;; \ | |
836 | esac ; \ | |
837 | done | |
838 | @for i in $(PARTIAL_HOLES) ; do \ | |
839 | found= ; \ | |
840 | for j in $(PARTIAL_HOLE_DIRS) ; do \ | |
841 | if [ -x $$j/$$i ] ; then \ | |
842 | rm -f $(HOLESDIR)/$$i ; \ | |
843 | cp $$j/$$i $(HOLESDIR)/$$i || exit 1; \ | |
844 | echo $$i from $$j ; \ | |
845 | found=t ; \ | |
846 | break ; \ | |
847 | fi ; \ | |
848 | done ; \ | |
849 | case "$$found" in \ | |
850 | t) ;; \ | |
851 | *) echo $$i is NOT found ;; \ | |
852 | esac ; \ | |
853 | done | |
854 | ifdef NUKEM | |
855 | cd $(HOLESDIR); rm -f $(NUKEM) | |
856 | endif | |
857 | touch $@ | |
858 | ||
859 | # Get the cross-tools for build cross host when not building on the host. | |
860 | ||
861 | BUILD_HOST_HOLES := \ | |
862 | byacc \ | |
863 | gcc \ | |
864 | makeinfo \ | |
865 | $(AR) \ | |
866 | $(AS) \ | |
867 | $(CC) \ | |
868 | $(CXX) \ | |
869 | $(GXX) \ | |
870 | $(NM) \ | |
871 | $(RANLIB) | |
872 | ||
873 | BUILD_HOLES_DIRS := $(release_root)/H-$(build)/bin $(PARTIAL_HOLE_DIRS) | |
874 | ||
875 | ifdef BUILD_HOST_HOLES_DIR | |
876 | $(BUILD_HOST_HOLES_DIR): $(build)-x-$(host)-stamp-holes | |
877 | endif | |
878 | ||
879 | ifneq ($(build),$(host)) | |
880 | $(build)-x-$(host)-stamp-holes: | |
881 | -rm -rf $(BUILD_HOST_HOLES_DIR) | |
882 | -mkdir $(BUILD_HOST_HOLES_DIR) | |
883 | @for i in $(BUILD_HOST_HOLES) ; do \ | |
884 | found= ; \ | |
885 | for j in $(BUILD_HOLES_DIRS) ; do \ | |
886 | if [ -x $$j/$$i ] ; then \ | |
887 | ln -s $$j/$$i $(BUILD_HOST_HOLES_DIR) || cp $$j/$$i $(BUILD_HOST_HOLES_DIR) ; \ | |
888 | echo $$i from $$j ; \ | |
889 | found=t ; \ | |
890 | break ; \ | |
891 | fi ; \ | |
892 | done ; \ | |
893 | case "$$found" in \ | |
894 | t) ;; \ | |
895 | *) echo $$i is NOT found ;; \ | |
896 | esac ; \ | |
897 | done | |
898 | touch $@ | |
899 | endif | |
900 | ||
901 | # Get the cross tools for build cross target when not building on the host. | |
902 | ||
903 | BUILD_TARGET_HOLES := \ | |
904 | byacc \ | |
905 | gcc \ | |
906 | makeinfo \ | |
907 | $(AR_FOR_TARGET) \ | |
908 | $(AS_FOR_TARGET) \ | |
909 | $(CC_FOR_TARGET) \ | |
910 | $(CXX_FOR_TARGET) \ | |
911 | $(GXX_FOR_TARGET) \ | |
912 | $(NM_FOR_TARGET) \ | |
913 | $(RANLIB_FOR_TARGET) | |
914 | ||
915 | ifdef BUILD_TARGET_HOLES_DIR | |
916 | $(BUILD_TARGET_HOLES_DIR): $(build)-x-$(target)-stamp-holes | |
917 | endif | |
918 | ||
919 | ifneq ($(build),$(target)) | |
920 | $(build)-x-$(target)-stamp-holes: | |
921 | -rm -rf $(BUILD_TARGET_HOLES_DIR) | |
922 | -mkdir $(BUILD_TARGET_HOLES_DIR) | |
923 | @for i in $(BUILD_TARGET_HOLES) ; do \ | |
924 | found= ; \ | |
925 | for j in $(BUILD_HOLES_DIRS) ; do \ | |
926 | if [ -x $$j/$$i ] ; then \ | |
927 | ln -s $$j/$$i $(BUILD_TARGET_HOLES_DIR) || cp $$j/$$i $(BUILD_TARGET_HOLES_DIR) ; \ | |
928 | echo $$i from $$j ; \ | |
929 | found=t ; \ | |
930 | break ; \ | |
931 | fi ; \ | |
932 | done ; \ | |
933 | case "$$found" in \ | |
934 | t) ;; \ | |
935 | *) echo $$i is NOT found ;; \ | |
936 | esac ; \ | |
937 | done | |
938 | touch $@ | |
939 | endif | |
940 | ||
941 | .PHONY: comparison | |
942 | comparison: $(host)-stamp-3stage-compared | |
943 | comparison-stage3to4: $(host)-stamp-4stage-compared | |
944 | ||
945 | $(host)-stamp-3stage-compared: | |
946 | rm -f .bad-compare | |
947 | ifeq ($(patsubst %-lynx,mips-sgi-irix4,$(subst i386-sco3.2v4,mips-sgi-irix4,$(subst rs6000-ibm-aix,mips-sgi-irix4,$(subst mips-dec-ultrix,mips-sgi-irix4,$(host))))),mips-sgi-irix4) | |
948 | for i in `cd $(STAGE3DIR) ; find . -name \*.o -print` ; do \ | |
949 | tail +10c $(STAGE2DIR)/$$i > foo1 ; \ | |
950 | tail +10c $(STAGE3DIR)/$$i > foo2 ; \ | |
951 | if cmp foo1 foo2 ; then \ | |
952 | true ; \ | |
953 | else \ | |
954 | echo $$i ; \ | |
955 | touch .bad-compare ; \ | |
956 | fi ; \ | |
957 | done | |
958 | rm -f foo1 foo2 | |
959 | else | |
960 | for i in `cd $(STAGE3DIR) ; find . -name \*.o -print` ; do \ | |
961 | cmp $(STAGE2DIR)/$$i $(STAGE3DIR)/$$i || touch .bad-compare ; \ | |
962 | done | |
963 | endif | |
964 | if [ -f CLEAN_ALL ] ; then \ | |
965 | rm -rf $(STAGE2DIR) $(STAGE3DIR) ; \ | |
966 | else \ | |
967 | if [ -f CLEAN_STAGES ] ; then \ | |
968 | if [ -f .bad-compare ] ; then \ | |
969 | true ; \ | |
970 | else \ | |
971 | rm -rf $(STAGE1DIR) $(STAGE2DIR) ; \ | |
972 | fi ; \ | |
973 | else true ; \ | |
974 | fi ; \ | |
975 | fi | |
976 | touch $@ | |
977 | ||
978 | $(host)-stamp-4stage-compared: | |
979 | rm -f .bad-compare | |
980 | ifeq ($(patsubst %-lynx,mips-sgi-irix4,$(subst i386-sco3.2v4,mips-sgi-irix4,$(subst rs6000-ibm-aix,mips-sgi-irix4,$(subst mips-dec-ultrix,mips-sgi-irix4,$(host))))),mips-sgi-irix4) | |
981 | for i in `cd $(STAGE4DIR) ; find . -name \*.o -print` ; do \ | |
982 | tail +10c $(STAGE3DIR)/$$i > foo1 ; \ | |
983 | tail +10c $(STAGE4DIR)/$$i > foo2 ; \ | |
984 | if cmp foo1 foo2 ; then \ | |
985 | true ; \ | |
986 | else \ | |
987 | echo $$i ; \ | |
988 | touch .bad-compare ; \ | |
989 | fi ; \ | |
990 | done | |
991 | rm -f foo1 foo2 | |
992 | else | |
993 | for i in `cd $(STAGE4DIR) ; find . -name \*.o -print` ; do \ | |
994 | cmp $(STAGE3DIR)/$$i $(STAGE4DIR)/$$i || touch .bad-compare ; \ | |
995 | done | |
996 | endif | |
997 | if [ -f CLEAN_ALL ] ; then \ | |
998 | rm -rf $(STAGE2DIR) $(STAGE3DIR) $(STAGE4DIR) ; \ | |
999 | else \ | |
1000 | if [ -f CLEAN_STAGES ] ; then \ | |
1001 | if [ -f .bad-compare ] ; then \ | |
1002 | true ; \ | |
1003 | else \ | |
1004 | rm -rf $(STAGE1DIR) $(STAGE2DIR) $(STAGE3DIR) ; \ | |
1005 | fi ; \ | |
1006 | else true ; \ | |
1007 | fi ; \ | |
1008 | fi | |
1009 | ||
1010 | .PHONY: clean | |
1011 | clean: | |
1012 | rm -rf $(HOLESDIR) $(INPLACEDIR) $(WORKING_DIR)* $(host)-stamp-* *~ | |
1013 | ||
1014 | .PHONY: very | |
1015 | very: | |
1016 | rm -rf $(TREE) | |
1017 | ||
1018 | force: | |
1019 | ||
1020 | endif # host | |
1021 | ||
1022 | ### Local Variables: | |
1023 | ### fill-column: 131 | |
1024 | ### End: |