This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
RFA: respect -k or its absence when building sim subdirs
- From: Jim Blandy <jimb at redhat dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: 13 Apr 2005 12:32:23 -0500
- Subject: 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.