From: Stefano Lattarini Date: Fri, 17 Feb 2012 10:52:13 +0000 (+0100) Subject: dryrun: $(am__dry_run) not confused by metachars in $(MAKEFLAGS) X-Git-Tag: v1.12.0b~93 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4df475a2d5ee114d1709884ec57698d34c5493cb;p=platform%2Fupstream%2Fautomake.git dryrun: $(am__dry_run) not confused by metachars in $(MAKEFLAGS) * lib/am/header-vars.am (am__make_dryrun): Be smarter and more correct in handling shell metacharacters in $(MAKEFLAGS). --- diff --git a/lib/am/header-vars.am b/lib/am/header-vars.am index 97516ef..2d81009 100644 --- a/lib/am/header-vars.am +++ b/lib/am/header-vars.am @@ -31,20 +31,28 @@ VPATH = @srcdir@ ## ("make -n") or not. Useful in rules that invoke make recursively, ## and are thus executed also with "make -n" -- either because they ## are declared as dependencies to '.MAKE' (NetBSD make), or because -## their recipes contain the "$(MAKE)" string (GNU and Solari make). +## their recipes contain the "$(MAKE)" string (GNU and Solaris make). -## The case statement has [:] in order to not tickle makefile-deps.test -## which greps for '^ *:'. am__make_dryrun = \ { \ am__dry=no; \ - for am__flg in : $(MAKEFLAGS); do \ - case $$am__flg in \ - [:]) ;; \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done; \ + case $$MAKEFLAGS in \ +## If we run "make TESTS='snooze nap'", GNU make will export MAKEFLAGS +## to "TESTS=foo\ nap", so that the simpler loop below (on word-splitted +## $$MAKEFLAGS) would see a "make flag" equal to "nap", and would wrongly +## misinterpret that as and indication that make is running in dry mode. +## This has already happened in practice. So we need this hack. + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ test $$am__dry = yes; \ }