In this example, I would not expect bar to be updated due to actual_source when foo is requested. The timestamp dependency chain should be broken between foo and bar and Make should be able to figure that out when handling an explicit request for foo. Is this a bug?
$ cat Makefile foo: | bar cp $| $@ bar: actual_source cp $< $@ clean: rm -f foo bar --------------------------------------------------------------------------- $ make clean rm -f foo bar --------------------------------------------------------------------------- $ make foo cp actual_source bar cp bar foo --------------------------------------------------------------------------- $ make foo make: 'foo' is up to date. --------------------------------------------------------------------------- $ touch bar --------------------------------------------------------------------------- $ make foo make: 'foo' is up to date. --------------------------------------------------------------------------- $ touch actual_source --------------------------------------------------------------------------- $ make --debug=why foo Makefile:5: update target 'bar' due to: actual_source cp actual_source bar