.SILENT: (without prerequisites) doesn't work as expected when .SILENT: some_target (with prerequisites) is present:
$ cat Makefile .SILENT: .SILENT: target_a target_a: echo target_a_recipe target_b: echo target_b_recipe $ make target_b echo target_b_recipe target_b_recipe $ It looks like the .SILENT: with a recipe clobbers the .SILENT: without, which is at best undocumented spooky action-at-a-distance wrt target_b behavior. Reversing the order of the two .SILENT: declarations gives the same behavior. I think what should happen is the global .SILENT: (with no prerequisites) wins. Whether other .SILENT: with_targets in the same run should then result in an error or warning is debatable. I guess this could be a breaking change but the present behavior seems clearly buggy. Is there a strategy for incrementally changing this sort of thing? Britton