Refactor the rules for .hi and .o into a single rule using `&%>` #16764
authorDavid Eichmann <EichmannD@gmail.com>
Thu, 6 Jun 2019 11:50:42 +0000 (12:50 +0100)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Tue, 11 Jun 2019 03:52:50 +0000 (23:52 -0400)
commit58a5d728d0293110d7e80aa1f067721447b20882
treeb9d18dd28d50c83c58fb5d17c5d9545e5dc723b5
parent0345b1b0f62c8fac72d07a7b848d14b9893e9ac9
Refactor the rules for .hi and .o into a single rule using `&%>` #16764

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.
hadrian/src/Rules/Compile.hs