]> Git Repo - binutils.git/blob - test-build.mk
Do not use unprotected ANSI/ISO prototypes.
[binutils.git] / test-build.mk
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:
This page took 0.0837 seconds and 4 git commands to generate.