Parallel build on SMP is even more broken.

H . J . Lu hjl@lucon.org
Wed Sep 6 10:58:00 GMT 2000


On Wed, Sep 06, 2000 at 10:28:56AM -0700, Mike Stump wrote:
> > Date: Wed, 6 Sep 2000 08:51:41 -0700
> > From: "H . J . Lu" <hjl@lucon.org>
> 
> > It won't work with any parallel build since "make -j 4 bootstrap-lean"
> > will start stage_a, stage_b, stage_c and stage_d at the same time. Do
> > I have any hope for parallel build in gcc?
> 
> If the maintainers would insist that any change to any makefile or
> fragment there of, would be tested by a clean make -j4 bootstrap, we
> could solve most of the problem.  They obviously don't do that.
> Please consider not allowing Make changes from people that aren't
> known to be parallel make people, without such testing.
> 

The parallel build has been broken way too often.

BTW, this patch seems to work for me. But I now got

Bootstrap comparison failure!
*.o differs 
make[2]: *** [compare-lean] Error 1 



H.J.
----
2000-09-06  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (stage_b): Depend on stage_a.
	(stage_c): Depend on stage_b.
	(stage_d): Depend on stage_c.
	(stage_e): Depend on stage_d.
	(stage_f): Depend on stage_e.
	(bootstrap-lean_c): Remove clean_s1.
	(bootstrap-lean_f): Remove clean_s2.
	(bootstrap2-lean_e): Likewise.

--- gcc/Makefile.in.parallel	Wed Sep  6 09:31:21 2000
+++ gcc/Makefile.in	Wed Sep  6 09:44:30 2000
@@ -2778,7 +2778,7 @@ stage_a: 
 	+$(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" LANG_LIB2FUNCS=
 	touch stage_a
 
-stage_b:
+stage_b: stage_a
 	$(MAKE) stage1
 	touch stage_b
 
@@ -2787,20 +2787,20 @@ stage_b:
 # To prevent `make install' from compiling alloca.o and then relinking cc1
 # because alloca.o is newer, we permit these recursive makes to compile
 # alloca.o.  Then cc1 is newer, so it won't have to be relinked.
-stage_c:
+stage_c: stage_b
 	+$(MAKE) CC="stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CFLAGS="$(BOOT_CFLAGS)" WARN_CFLAGS="$(WARN2_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)"
 	touch stage_c
 
-stage_d:
+stage_d: stage_c
 	+$(MAKE) stage2
 	touch stage_d
  
-stage_e:
+stage_e: stage_d
 	+$(MAKE) CC="stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CFLAGS="$(BOOT_CFLAGS)" WARN_CFLAGS="$(WARN2_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)"
 	touch stage_e
 
 # For bootstrap4:
-stage_f:
+stage_f: stage_e
 	+$(MAKE) CC="stage3/xgcc$(exeext) -B$(build_tooldir)/bin/ -Bstage3/" CFLAGS="$(WARN_CFLAGS) $(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage3/ LANGUAGES="$(LANGUAGES)"
 	touch stage_f
 
@@ -2826,10 +2826,13 @@ bootstrap: force bootstrap_e
 
 bootstrap-lean_a:                   stage_a
 bootstrap-lean_b:  bootstrap-lean_a stage_b
-bootstrap-lean_c:  bootstrap-lean_b clean_s1 
+bootstrap-lean_c:  bootstrap-lean_b
+	-cd stage1; rm -f $(VOL_FILES)
 bootstrap-lean_d:  bootstrap-lean_c stage_c
 bootstrap-lean_e:  bootstrap-lean_d stage_d
-bootstrap-lean_f:  bootstrap-lean_e clean_s2
+bootstrap-lean_f:  bootstrap-lean_e
+	-rm -rf stage1
+	-cd stage2; rm -f $(VOL_FILES)
 bootstrap-lean_g:  bootstrap-lean_f stage_e
 bootstrap-lean: force bootstrap-lean_f
 
@@ -2840,7 +2843,9 @@ bootstrap2: force bootstrap2_e
 
 bootstrap2-lean_c:                    stage_c
 bootstrap2-lean_d:  bootstrap2-lean_c stage_d
-bootstrap2-lean_e:  bootstrap2-lean_d clean_s2
+bootstrap2-lean_e:  bootstrap2-lean_d
+	-rm -rf stage1
+	-cd stage2; rm -f $(VOL_FILES)
 bootstrap2-lean_f:  bootstrap2-lean_e stage_e
 bootstrap2-lean: force bootstrap2-lean_f
 


More information about the Gcc-bugs mailing list