This looks like a basic shell programming issue, not a make problem at all. Try pulling this logic out of make and running it directly in the shell; if it behaves correctly there but not when plugged back into make, then you'll have a make question. This looks more like a scoping problem. Here is (effectively) your original script:
% sh -c ">&2 echo finding SQLFILES... && date" 1>1 2>2 % head 1 2 ==> 1 <== Tue Apr 10 07:18:56 PDT 2018 ==> 2 <== finding SQLFILES... And here's a variant with different scoping: % sh -c "(echo finding SQLFILES... && date) 1>&2" 1>1 2>2 % head 1 2 ==> 1 <== ==> 2 <== finding SQLFILES... Tue Apr 10 07:19:09 PDT 2018 It's not clear to me exactly what you want but this should illustrate that the issue is shell redirection. Personally I prefer techniques that let the shell handle verbosity instead of typing ad-hoc messages: SQLFILES := $(shell set -x; cd "$(srcdir)" && find . -name "*.sql") David On Tue, Apr 10, 2018 at 3:07 AM, Basin Ilya <basini...@gmail.com> wrote: > Hi. I want to print a diagnostic message whenever my shell expression is > evaluated. Currently, I have the following line in my makefile: > > SQLFILES := $(shell >&2 echo finding SQLFILES... && cd "$(srcdir)" && > find . -name "*.sql") > > As you can see, the message "finding SQLFILES..." is printed to stderr, > but I want the original stdout instead. Does GNU Make make it available as > some other fd, say, "4"? > > _______________________________________________ > Help-make mailing list > Help-make@gnu.org > https://lists.gnu.org/mailman/listinfo/help-make > _______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make