On 07/04/2018 01:08 PM, Taylor Holberton wrote: > I've been thinking about designing a new syntax for CMake
Fair warning: Upstream is not outright opposed to a new language but it will take a lot to make something like that upstreamable, assuming we even find time to consider it in depth. > that better expresses some of the functionality that I've seen in > modern CMake code. I've started a CMake parsing library and plan > on using it to design the new syntax while maintaining support for > the traditional syntax as well. A major obstacle to replacing the language is separating the code model representation from the current language. Some work has been done to factor it out into a representation that can be used by the generators that is not tied to the implementation of the current language, but more work is needed and the original contributor working on that is no longer active. Search back through the dev list archives for posts by Stephen Kelly talking about where his work left off. If a new input language were to be introduced it should fix some of the fundamental problems with the current approach. These include: * Each directory and its included files must be processed serially due to the imperative language with side-effects. This means we can never make the implementation parallel. * The imperative form of the language also means that IDEs cannot easily edit the build specification through GUI actions. If at least things like a list of sources were doable in a declarative way that could help. When thinking about alternative approaches before I've considered the idea of having most of the build spec be declarative/functional (no side effects) and then having an imperative part that computes parameters to evaluate conditions and expressions within the main spec. The main spec could then be updated by IDEs in a structured way, evaluated in parallel, etc. while the imperative part could handle system introspection, configure-time file generation, etc. -Brad -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake-developers