Hey folks. For some time there has been vestigial interest in a CMake[1]-based alternative to the autotools-based build system that Mesos currently depends on (cf. MESOS-898[2]). In the near future we expect to start thinking about supporting little-known platforms such as "Windows", (where a fully cross-platform build system is table stakes).
To facilitate this, we implemented and recently committed an experimental MVP CMake-based build system that allows us to build the process library, as well as the tests for the process and stout libraries. Currently we have only seriously tested that this works Linux (specifically, we have asked CMake to compile the build spec to a standard make/gcc combination, much like autotools), but we expect this to anchor our thoughts on cross-platform support as we continue to think about our real x-plat story. The community can track completed and outstanding the work on MESOS-898[2]. In the immediate term, we're hoping the community will help us work out the kinks by voicing their questions, concerns, proposing changes to our plan, or even (hopefully) attempting to build on their favorite flavor of Linux, and reporting bugs or irregularities. Finally, to get the ball rolling, I'd like to end with some FAQs: Q: Will autotools be deprecated soon? A: EMPHATIC NO. The CMake-based build system is an experimental work that we expect to inform the Mesos community's thoughts as we start to think about more robustly expanding support other platforms. If there are serious benefits, then the community may choose to standardize on this solution in the future, but that is a discussion to have far down the road. Q: Can I use this now? A: NO. You can use it to build the process library, the process library tests, and the stout tests. You cannot yet use it to completely build Mesos. That's intentional -- before we get too far down the road, we are hoping to get some early feedback. Q: How does CMake help the goal of cross-platform support? A: CMake seamlessly compiles to a variety of toolchains and build systems. This includes both Linux favorites like gcc and make, but also more exotic options like Eclipse, or even Visual Studio and MSVC. Additionally, CMake has fairly robust function and macro systems, which allows us to do things like support finding or building third-party dependencies on very heterogeneous systems Thanks a lot, and we look forward to hearing your feedback! [1] http://www.cmake.org/ [2] https://issues.apache.org/jira/browse/MESOS-898 -- Alex Theory is the first term in the Taylor series of practice. -- Thomas M Cover (1992)