Hi! I've got a peculiar problem. There is an outer makefile and an inner makefile. The inner makefile comes from a project (a git submodule) that is maintained separately from the outer makefile (the git superproject).
The outer makefile is "make -j"-clean. The inner makefile isn't. In the outer makefile, we can use .NOTPARALLEL to make sure the inner make is launched only in isolation, to build the relevant artifacts one by one. That is, there are no multiple inner "make" processes "competing" on the subproject. However, the inner make inherits "-j" and "--jobserver-fds=3,4" from the outer make via MAKEFLAGS. And, if the job server in the outer make lets it, the inner make will happily parallelize recipes from the inner makefile, even just to build a single target (build artifact). The inner makefile is not suitable for that however. The GNU make documentation suggests that we should add .NOTPARALLEL to the inner makefile explicitly. https://www.gnu.org/software/make/manual/make.html#index-_002eNOTPARALLEL "Any recursively invoked make command will still run recipes in parallel (unless its makefile also contains this target)." It also suggests that MAKEFLAGS can be filtered manually, for options *other than* "-j" (and some other special options). https://www.gnu.org/software/make/manual/make.html#Options_002fRecursion Would it be safe / robust to filter out "-j" and "--jobserver-fds=3,4" as well, manually? (E.g. by sticking a shell script between the outer and inner make processes.) In particular, "--jobserver-fds" is not documented in end-user documentation, apparently, so I get a feeling this option could change at any time, as an implementation detail of distributing jobs. Thank you very much, Laszlo _______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make