3 ms·
I'd recommend you take a look at how Bazel works (Meson may be similar if you look further, but I haven't used it much myself). The default interface you get is
by wwright 6y ago
I'd recommend you take a look at how Bazel works (Meson may be similar if you look further, but I haven't used it much myself). The default interface you get is relatively "high-level", but everything behind the scenes is a general-purpose system like what you describe, and you can customize it pretty deeply.
What makes it really great IMO is that the language and tool are designed for best practices. For example, your scripts can't actually execute anything: they can tell the build system what command would be used to build the file and what the dependencies would be. The sandboxing allows the build system to be pretty hermetic without much effort. This means that it can always parallelize your build, and incremental builds are always fast and correct.