What is the correct way to cause jobserver information to be passed to
child processes? I tried this Makefile:
all:
@echo Jobserver present? $(filter jobserver,$(.FEATURES))
+@sh -c "echo \"make toplevel MAKEFLAGS=${MAKEFLAGS}\""
+@sh -c "echo \"child toplevel MAKEFLAGS=$${MAKEFLAGS}\""
+$(MAKE) recursive
recursive:
+@sh -c "echo \"make recursive MAKEFLAGS=${MAKEFLAGS}\""
+@sh -c "echo \"child recursive MAKEFLAGS=$${MAKEFLAGS}\""
# Makefile ends
The actual output is:
make -j
Jobserver present? jobserver
make toplevel MAKEFLAGS= -j
child toplevel MAKEFLAGS= -j
make recursive
make[1]: Entering directory '/home/buster/projects/make-bug'
make recursive MAKEFLAGS=w -j
child recursive MAKEFLAGS=w -j
make[1]: Leaving directory '/home/buster/projects/make-bug'
I expected to see something like "--jobserver-auth=3,4" in all the
"MAKEFLAGS" lines except possibly the first ("make toplevel
MAKEFLAGS").
I tried this on a Debian-like system with Make 4.3 and a Windows
system with (native, MinGW64) Make 4.4.1, with the same results.