/shake-rules

some handy additional rules for the Shake build system

Primary LanguageHaskellBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

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)

Installation

See INSTALL.md.

Features

Build.hs

Build.hs is a basic template which can be copied and modified.

Development.Shake.Clean (cleanRules)

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

Development.Shake.Gmsh (gmshRules)

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.