diff --git a/ChangeLog b/ChangeLog index a01bcf927ba..147325d7573 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Sep 29 00:38:08 1997 Aaron Jackson + + * Makefile.in (bootstrap-lean): New target. + Thu Sep 18 23:58:27 1997 Jeffrey A Law (law@cygnus.com) * Makefile.in (cross): New target. diff --git a/Makefile.in b/Makefile.in index 063293453d2..b7f9c27be79 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1298,6 +1298,21 @@ bootstrap bootstrap2 bootstrap3: all-texinfo all-bison all-byacc all-binutils al @echo "Building runtime libraries"; \ $(MAKE) all +.PHONY: bootstrap-lean +bootstrap-lean: all-texinfo all-bison all-byacc all-binutils all-gas all-ld + @r=`pwd`; export r; \ + s=`cd $(srcdir); pwd`; export s; \ + $(SET_LIB_PATH) \ + echo "Bootstrapping the compiler"; \ + cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) $@ + @r=`pwd`; export r; \ + s=`cd $(srcdir); pwd`; export s; \ + $(SET_LIB_PATH) \ + echo "Comparing stage2 and stage3 of the compiler"; \ + cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) compare-lean + @echo "Building runtime libraries"; \ + $(MAKE) all + .PHONY: cross cross: all-texinfo all-bison all-byacc all-binutils all-gas all-ld @r=`pwd`; export r; \ diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 513abf58a5e..76baa0e829a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Mon Sep 29 00:38:42 1997 Aaron Jackson + + * Makefile.in (bootstrap-lean, compare-lean): New targets. + Mon Sep 29 00:18:16 1997 Richard Henderson (rth@cygnus.com) * alias.c (base_alias_check): Two symbols can conflict if they diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 70290639b57..3ca979b79f5 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -2576,6 +2576,22 @@ bootstrap: force $(MAKE) stage2 $(MAKE) CC="stage2/xgcc -Bstage2/" CFLAGS="$(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)" +bootstrap-lean: force +# Only build the C compiler for stage1, because that is the only one that +# we can guarantee will build with the native compiler, and also it is the +# only thing useful for building stage2. + $(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" + $(MAKE) stage1 +# This used to define ALLOCA as empty, but that would lead to bad results +# for a subsequent `make install' since that would not have ALLOCA empty. +# 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. + $(MAKE) CC="stage1/xgcc -Bstage1/" CFLAGS="$(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)" + $(MAKE) stage2 + rm -rf stage1 + $(MAKE) CC="stage2/xgcc -Bstage2/" CFLAGS="$(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage2/ LANGUAGES="$(LANGUAGES)" + bootstrap2: force $(MAKE) CC="stage1/xgcc -Bstage1/" CFLAGS="$(BOOT_CFLAGS)" LDFLAGS="$(BOOT_LDFLAGS)" libdir=$(libdir) STAGE_PREFIX=stage1/ LANGUAGES="$(LANGUAGES)" $(MAKE) stage2 @@ -2612,6 +2628,31 @@ compare: force else true; \ fi +# ./ avoids bug in some versions of tail. +compare-lean: force + -rm -f .bad_compare + for file in *$(objext); do \ + tail +16c ./$$file > tmp-foo1; \ + tail +16c stage2/$$file > tmp-foo2 \ + && (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \ + done + for dir in tmp-foo $(SUBDIRS); do \ + if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \ + for file in $$dir/*$(objext); do \ + tail +16c ./$$file > tmp-foo1; \ + tail +16c stage2/$$file > tmp-foo2 \ + && (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \ + done; \ + fi; \ + done + -rm -f tmp-foo* + if [ -f .bad_compare ]; then \ + echo "Bootstrap comparison failure!"; \ + cat .bad_compare; \ + exit 1; \ + else rm -rf stage2; \ + fi + # Similar, but compare with stage3 directory compare3: force for file in *$(objext); do \