Hi, When I have a Makefile rule
target: $(DEPS1) $(DEPS2) command1 it is guaranteed that $(DEPS1) and $(DEPS2) will be done, including their dependencies, before command1 is started. However, with -j, $(DEPS1) and $(DEPS2) are being made in parallel. If this is not desired, I can transform this rule to target: $(DEPS1) test -z "$(DEPS2)" || $(MAKE) $(DEPS2) command1 or (equivalently?) target: $(DEPS1) $(MAKE) target2 target2: $(DEPS2) command1 .PHONY: target2 The question is: Are these two rewrites really equivalent? If not, how do they differ, and what is the best practice? Bruno