On Wed, Feb 11, 2015 at 12:22 PM, Paul Smith <psm...@gnu.org> wrote: > On Wed, 2015-02-11 at 10:44 -0800, David Boyce wrote: > > I just noticed that while assigning to SHELL suppresses the fast-path > > algorithm, assigning to .SHELLFLAGS does not. Feature or bug? > > That's a good question. I'm sort of agnostic on it. On one hand, it's > hard to think of a flag added to SHELLFLAGS (given the default value of > SHELL) that would matter for the fast path >
Actually it gets weirder. Some values of .SHELLFLAGS suppress fast path, others do not: % cat makefile foo:; @echo making $@ % strace -e process -q -f -- make-4.1 .SHELLFLAGS=-ec 2>&1 | grep 'execve.* = 0' [pid 23605] execve("/bin/echo", ["echo", "making", "foo"], [/* 46 vars */]) = 0 % strace -e process -q -f -- make-4.1 .SHELLFLAGS=-xc 2>&1 | grep 'execve.* = 0' [pid 23745] execve("/bin/sh", ["/bin/sh", "-xc", "echo making foo"], [/* 46 vars */]) = 0 The two straced invocations differ only in that one adds -e to .SHELLFLAGS and the other adds -x. Wait … ChangeLog.3 says: (construct_command_argv_internal): If .SHELLFLAGS is non-standard use the slow path. Use that value instead of hard-coded "-c”. But apparently -c and -ec are both considered standard so I guess it works as designed. David
_______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make