Hadrian: refactor .o and .hi rules into a single rule that produces both files
Refactor the rules for .hi and .o into a single rule using &%>
Currently the rule for .hi files just triggers (via need
) the rule for the .o file, and .o rule generates both the .o and .hi file. Likewise for .o-boot and .hi-boot files. This is a bit of an abuse of Shake, and in fact shake supports rules with multiple output with the &%>
function. This exact use case appears in Neil Mitchell's paper Shake Before Building section 6.3.