Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jim Blandy <jimb@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: RFA: respect -k or its absence when building sim subdirs
Date: Wed, 13 Apr 2005 17:32:00 -0000	[thread overview]
Message-ID: <vt2sm1ur3a0.fsf@zenia.home> (raw)


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.


             reply	other threads:[~2005-04-13 17:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-13 17:32 Jim Blandy [this message]
2005-04-14 19:25 ` Daniel Jacobowitz
2005-04-15  0:20   ` Jim Blandy
2005-04-15  0:30     ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=vt2sm1ur3a0.fsf@zenia.home \
    --to=jimb@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox