This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [971016]: Simplification to gcc's Makefile.in: compare targets


Sorry, my last patch introduces a  bug because I overlooked that there
are actually two separate  `for' runs, hence  $stage is undefined  for
the SUBDIRS loop. This version should be correct:

Fri Oct 24 08:11:58 1997  Manfred Hollstein  <manfred@s-direktnet.de>
    
    	* Makefile.in (compare, compare-lean, compare3): Combined to one
    	ruleset determining actions to be performed via $@.
    	(compare4, compare4-lean): New targets.
    	(gnucompare, gnucompare3): Combined to one ruleset determining
    	actions to be performed via $@. Also, note which files failed
    	the comparison test in .bad_compare.
    	(gnucompare-lean, gnucompare3-lean, gnucompare4-lean): New targets.

diff --context --recursive --show-c-function -x *.o -x *.info* -x *.html* -x *.elc -x *.dvi -x *.orig -x *~ -x version.el egcs-971016.orig/gcc/Makefile.in egcs-971016/gcc/Makefile.in
*** egcs-971016.orig/gcc/Makefile.in	Sat Oct 18 09:37:37 1997
--- egcs-971016/gcc/Makefile.in	Fri Oct 24 07:59:45 1997
*************** bootstrap3: force
*** 2615,2632 ****
  # stage2 directory.
  
  # ./ avoids bug in some versions of tail.
! compare: 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; \
--- 2615,2634 ----
  # stage2 directory.
  
  # ./ avoids bug in some versions of tail.
! compare compare3 compare4 compare-lean compare3-lean compare4-lean: force
  	-rm -f .bad_compare
+ 	case "$@" in compare | compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^compare\([0-9][0-9]*\).*,\1,'` ;; esac; \
  	for file in *$(objext); do \
  	  tail +16c ./$$file > tmp-foo1; \
! 	  tail +16c stage$$stage/$$file > tmp-foo2 \
  	    && (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
  	done
+ 	case "$@" in compare | compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^compare\([0-9][0-9]*\).*,\1,'` ;; esac; \
  	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 stage$$stage/$$file > tmp-foo2 \
  	        && (cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
  	    done; \
  	  fi; \
*************** compare: force
*** 2636,2715 ****
  	  echo "Bootstrap comparison failure!"; \
  	  cat .bad_compare; \
  	  exit 1; \
! 	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 \
- 	  tail +16c ./$$file > tmp-foo1; \
- 	  tail +16c stage3/$$file > tmp-foo2 2>/dev/null \
- 	    && (cmp tmp-foo1 tmp-foo2 || echo $$file differs) || 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 stage3/$$file > tmp-foo2 2>/dev/null \
- 	        && (cmp tmp-foo1 tmp-foo2 || echo $$file differs) || true; \
- 	    done; \
- 	  fi; \
- 	done
- 	-rm -f tmp-foo*
- 
- # Compare the object files in the current directory with those in the
- # stage2 directory.  Use gnu cmp (diffutils v2.4 or later) to avoid
- # running tail and the overhead of twice copying each object file.
- 
- gnucompare: force
- 	for file in *$(objext); do \
- 	  cmp --ignore-initial=16 $$file stage2/$$file || true ; \
- 	done
- 	for dir in tmp-foo $(SUBDIRS); do \
- 	  if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \
- 	    for file in $$dir/*$(objext); do \
- 	      cmp --ignore-initial=16 $$file stage2/$$file || true ; \
- 	    done; \
- 	  fi; \
- 	done
- 
- # Similar, but compare with stage3 directory
- gnucompare3: force
- 	for file in *$(objext); do \
- 	  cmp --ignore-initial=16 $$file stage3/$$file || true ; \
- 	done
- 	for dir in tmp-foo $(SUBDIRS); do \
- 	  if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \
- 	    for file in $$dir/*$(objext); do \
- 	      cmp --ignore-initial=16 $$file stage3/$$file || true ; \
- 	    done; \
- 	  fi; \
- 	done
  
  # Copy the object files from a particular stage into a subdirectory.
  stage1-start:
--- 2638,2676 ----
  	  echo "Bootstrap comparison failure!"; \
  	  cat .bad_compare; \
  	  exit 1; \
! 	else \
! 	  case "$@" in \
! 	    *-lean ) rm -rf stage$$stage ;; \
! 	  esac; true; \
  	fi
  
! # Compare the object files in the current directory with those in the
! # stage2 directory.  Use gnu cmp (diffutils v2.4 or later) to avoid
! # running tail and the overhead of twice copying each object file.
! 
! gnucompare gnucompare3 gnucompare4 gnucompare-lean gnucompare3-lean gnucompare4-lean: force
  	-rm -f .bad_compare
+ 	case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
  	for file in *$(objext); do \
! 	  (cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
  	done
+ 	case "$@" in gnucompare | gnucompare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^gnucompare\([0-9][0-9]*\).*,\1,'` ;; esac; \
  	for dir in tmp-foo $(SUBDIRS); do \
  	  if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \
  	    for file in $$dir/*$(objext); do \
! 	      (cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1 || echo $$file differs >> .bad_compare) || true; \
  	    done; \
  	  fi; \
  	done
  	if [ -f .bad_compare ]; then \
  	  echo "Bootstrap comparison failure!"; \
  	  cat .bad_compare; \
  	  exit 1; \
! 	else \
! 	  case "$@" in \
! 	    *-lean ) rm -rf stage$$stage ;; \
! 	  esac; true; \
  	fi
  
  # Copy the object files from a particular stage into a subdirectory.
  stage1-start:

--
 Manfred Hollstein             If you have any questions about GNU SW:
 Hindenburgstr. 13/1                   <mailto:manfred@s-direktnet.de>
 75446 Wiernsheim                                    or take a look at
 FRG                    <http://www.s-direktnet.de/HomePages/manfred/>

 Public PGP key from
 <http://www.s-direktnet.de/HomePages/manfred/manfred.asc>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]