Hi! I am the creator of a new build system: Beast.
Beast is a build system focused on ease of use and speed. It works at the very base level and helps you build your projects easily. Compared to Make and Ninja, it is much easier to use syntactically and technically.
I would thus like to know how I can contribute to CMake in order to introduce support for Beast. I want to build a generator inside CMake that generates Beast build files. I would like to discuss this further and how to go about it.
Thanks for your interest. If you want to add Beast support to CMake, I’d suggest looking at the Make and Ninja generators for guidance. The code can be found in Source/cmGlobalNinjaGenerator.cxx, Source/cmGlobalUnixMakefileGenerator3.cxx, and the other files that they reference.
I do wonder, what exactly does Beast have that Make and Ninja do not? Ninja is very fast, and is specifically meant to be auto-generated by tools like CMake, and not hand-written.
Hi! Thanks for your reply @kyle.edwards !
I will surely take look at both Make and Ninja.
While researching for Beast, I found that Make has some inefficiencies when it comes to time stamps and managing files/targets. There are several other inefficiencies, and I believe this reply is not the right place to discuss those.
As far as Ninja is concerned, I believe that a build system, even if it works as a base, should be accessible and readable by a user. But then again this is just my ideology. I have created this tool so that it will be both user-readable/understandable and efficient.
Make has been used directly by users for a long time. Looking at the syntax and code for Beast you will find that it overtakes Make in both ease of use (in writing beast build files by hand) and efficiency!
I soon wish to add other features. But before that, via this post, I just wanted to make sure that indeed CMake admins will be interested in including Beast generator as a part of their amazing project!
Thanks once again Kyle!!
I don’t know yet if we’d be interested in adding this. At the very least, I’d want to see Beast mature more and have more widespread use. Feel free to patch CMake for your own use though, and maybe some day if Beast gains more traction we’ll consider upstreaming it.
Hi @ben.boeckel ! Thanks for the reply!
Yes, I will definitely check out the NinjaGenerator files in the repository.
About your notes, the reason why Beast doesn’t have all this is that it is very new. Right now it has all the basic features that allow it to be called a build system, but surely new features will be added in the future.
Also, could you please elaborate more as to what you mean by the “test suite”? I would definitely like for Beast to be integrated with CMake and am open to all suggestions for the same.
Thank you once again! Looking forward to your help
CMake has a set of unit tests and integration tests in the Tests directory that get run for each generator. Any new generator has to pass all these tests (or make a strong case for carving out an exception to the ones it fails) before it can be upstreamed.
Again, I’d be wary of upstreaming support for such a new buildsystem with such little adoption. If it matures more, has more widespread usage, and can pass the entire CMake test suite, then maybe we’d consider it.
CMake support would certainly help. This MR adds an experimental mechanism by which we can add it without committing to it (the mechanism is that to use an experiemental bit, the user must set a variable to a specific UUID that we change every release or incompatible change to acknowledge the experimental-ness of the feature).