This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFA: respect -k or its absence when building sim subdirs


Overkill, probably.  I just hate this kind of stuff.

2005-04-13  Jim Blandy  <jimb@redhat.com>

	Fix -k handling when looping over subdirectories.
	* for-subdirs.sh: New script.
	* Makefile.in (all clean mostlyclean distclean maintainer-clean
	realclean install): Use it to loop over subdirectories.

Index: sim/for-subdirs.sh
===================================================================
RCS file: sim/for-subdirs.sh
diff -N sim/for-subdirs.sh
*** sim/for-subdirs.sh	1 Jan 1970 00:00:00 -0000
--- sim/for-subdirs.sh	13 Apr 2005 17:29:16 -0000
***************
*** 0 ****
--- 1,38 ----
+ #!/bin/sh
+ 
+ # usage: sh for-subdirs.sh MAKEFLAGS COMMAND SUBDIR ...
+ #
+ # For every subdirectory SUBDIR ... that is not '.', cd to that subdirectory
+ # and evaluate COMMAND.
+ #
+ # MAKEFLAGS should be the value of the 'make' variable 'MAKEFLAGS'; if
+ # its value indicates that make is being called with the '-k' flag,
+ # the subdirectory loop will exit with a non-zero status if any
+ # evaluation of COMMAND does so.
+ 
+ makeflags="$1"; shift
+ command="$1"; shift
+ 
+ # Delete variable assignments from makeflags.
+ makeflags="$(echo "$makeflags" | sed -e 's/[^ ][^ ]*=[^ ][^ ]*//g')"
+ 
+ final_status=0
+ 
+ for subdir in "$@"; do
+     if [ "$subdir" = "." ]; then
+ 	true;
+     elif (cd "$subdir" && eval "$command"); then
+ 	true;
+     else
+ 	status="$?"
+ 	case "$makeflags" in
+ 	    *k*)
+ 		final_status="$status"
+ 		;;
+ 	    *)
+ 		exit "$status"
+ 		;;
+ 	esac
+     fi
+ done
+ exit "$final_status"
Index: sim/Makefile.in
===================================================================
RCS file: /cvs/src/src/sim/Makefile.in,v
retrieving revision 1.6
diff -c -p -r1.6 Makefile.in
*** sim/Makefile.in	29 Jan 2005 00:53:13 -0000	1.6
--- sim/Makefile.in	13 Apr 2005 17:29:16 -0000
*************** TARGET_FLAGS_TO_PASS = \
*** 126,169 ****
  
  all:
  	@rootme=`pwd` ; export rootme ; \
! 	for dir in . `echo ${SUBDIRS} | sed 's/testsuite//'` ; do \
! 		if [ "$$dir" = "." ]; then \
! 			true; \
! 		elif [ -d $$dir ]; then \
! 			(cd $$dir; $(MAKE) $(FLAGS_TO_PASS)) || exit 1; \
! 		else true; fi; \
! 	done
  
  clean mostlyclean:
  	@rootme=`pwd` ; export rootme ; \
! 	for dir in . ${SUBDIRS}; do \
! 		if [ "$$dir" = "." ]; then \
! 			true; \
! 		elif [ -d $$dir ]; then \
! 			(cd $$dir; $(MAKE) $(FLAGS_TO_PASS) $@) || exit 1; \
! 		else true; fi; \
! 	done
  
  distclean maintainer-clean realclean:
  	@rootme=`pwd` ; export rootme ; \
! 	for dir in . ${SUBDIRS}; do \
! 		if [ "$$dir" = "." ]; then \
! 			true; \
! 		elif [ -d $$dir ]; then \
! 			(cd $$dir; $(MAKE) $(FLAGS_TO_PASS) $@) || exit 1; \
! 		else true; fi; \
! 	done
  	rm -f Makefile config.cache config.log config.status
  
  install:
  	@rootme=`pwd` ; export rootme ; \
! 	for dir in . ${SUBDIRS}; do \
! 		if [ "$$dir" = "." ]; then \
! 			true; \
! 		elif [ -d $$dir ]; then \
! 			(cd $$dir; $(MAKE) $(FLAGS_TO_PASS) install) || exit 1; \
! 		else true; fi; \
! 	done
  
  installcheck:
  	@echo No installcheck target is available yet for the GNU simulators.
--- 126,150 ----
  
  all:
  	@rootme=`pwd` ; export rootme ; \
! 	$(SHELL) $(srcdir)/for-subdirs.sh \
! 		"$(MAKEFLAGS)" "$(MAKE) "'$(FLAGS_TO_PASS)' \
! 	        `echo ${SUBDIRS} | sed 's/testsuite//'`
  
  clean mostlyclean:
  	@rootme=`pwd` ; export rootme ; \
! 	$(SHELL) $(srcdir)/for-subdirs.sh \
! 		"$(MAKEFLAGS)" "$(MAKE) "'$(FLAGS_TO_PASS) $@' $(SUBDIRS)
  
  distclean maintainer-clean realclean:
  	@rootme=`pwd` ; export rootme ; \
! 	$(SHELL) $(srcdir)/for-subdirs.sh \
! 		"$(MAKEFLAGS)" "$(MAKE) "'$(FLAGS_TO_PASS) $@' $(SUBDIRS)
  	rm -f Makefile config.cache config.log config.status
  
  install:
  	@rootme=`pwd` ; export rootme ; \
! 	$(SHELL) $(srcdir)/for-subdirs.sh \
! 		"$(MAKEFLAGS)" "$(MAKE) "'$(FLAGS_TO_PASS) install' $(SUBDIRS)
  
  installcheck:
  	@echo No installcheck target is available yet for the GNU simulators.


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