A huge benefit of using an embedded DSL as a build system is that we can use the facilities of the host language (Haskell) to build abstractions on top of Shake, to fit our particular use case
(Mokhov, A., N. Mitchell, S. Peyton Jones, & S. Marlow 2016. Non-recursive Make considered harmful: build systems at scale. In Proceedings of the 9th International Symposium on Haskell—Haskell 2016, pp. 170–181. ACM Press. §1)
See INSTALL.md.
Build.hs is a basic template which can be copied and modified.
The Development.Shake.Clean
module
provides a handy standard cleanRules
function which:
- runs standard checks
- removes files with names matching one of the given list of patterns, typically used to clean up generated files of one kind or another
The Development.Shake.Gmsh
module
provides a gmshRules
function which given a dimension (1, 2, or 3)
generates a rule for making a .msh
mesh from a .geo
geometry-file.