On Tuesday, 31 May 2016 at 10:15:14 UTC, Atila Neves wrote:
On Monday, 30 May 2016 at 19:16:50 UTC, Jason White wrote:
I am pleased to finally announce the build system I've been
slowly working on for over a year in my spare time:
In fact, there is some experimental support for automatic
conversion of Makefiles to Button's build description format
using a fork of GNU Make itself:
I'm going to take a look at that!
I think the Makefile converter is probably the coolest thing
about this build system. I don't know of any other build system
that has done this. The only problem is that it doesn't do well
with Makefiles that invoke make recursively. I tried compiling
Git using it, but Git does some funky stuff with recursive make
like grepping the output of the sub-make.
- Can automatically build when an input file is modified
Nope, I never found that interesting. Possibly because I keep
saving after every edit in OCD style and I really don't want
things running automatically.
I constantly save like a madman too. If an incremental build is
sufficiently fast, it doesn't really matter. You can also specify
a delay so it accumulates changes and then after X milliseconds
it runs a build.
- Recursive: It can build the build description as part of the
I'm not sure what that means. reggae copies CMake here and runs
itself when the build description changes, if that's what you
It means that Button can run Button as a build task (and it does
it correctly). A child Button process reports its dependencies to
the parent Button process via a pipe. This is the same mechanism
that detects dependencies for ordinary tasks. Thus, there is no
danger of doing incorrect incremental builds when recursively
running Button like there is with Make.
- Lua is the primary build description language.
That's pretty cool. It is possible for Button to do the same, but
I don't really want to support that many languages. In fact, the
Make and Lua build descriptions both work the same exact way -
they output a JSON build description for Button to use. So long
as someone can write a program to do this, they can write their
build description in it.