diff --git a/doc/about.rst b/doc/about.rst index 85089a8..8aea3bc 100644 --- a/doc/about.rst +++ b/doc/about.rst @@ -4,49 +4,54 @@ About Autocmake =============== You typically want to use CMake when you get tired of manually editing -Makefiles. Autocmake is for people who are tired of editing CMake files. -Autocmake assembles CMake modules, generates ``CMakeLists.txt`` as well as -``setup.py``, which serves as a front-end to ``CMakeLists.txt``. All this is -done based on a lightweight ``autocmake.cfg`` file:: +Makefiles. Autocmake is for people who are tired of editing CMake files +directly. Autocmake assembles CMake modules, generates ``CMakeLists.txt`` as +well as ``setup.py``, which serves as a front-end to ``CMakeLists.txt``. All +this is done based on a lightweight ``autocmake.cfg`` file:: update.py --self - | - | fetches Autocmake infrastructure - v - autocmake.cfg - | - | update.py - v + | | + | fetches Autocmake | + | infrastructure | + v Developer maintaining + autocmake.cfg Autocmake + | | + | update.py | + | | + v v CMakeLists.txt (and setup.py front-end) - | - | setup.py (which invokes CMake) - v - Makefile (or something else) - | - | make - v + | | + | setup.py | + | which invokes CMake | + v User of the code + Makefile (or something else) | + | | + | make | + | | + v v Build/install/test targets Why Autocmake ------------- -The main motivation for us to create Autocmake as a CMake framework library was -to simplify CMake code transfer between codes. We got tired of manually diffing -and copy-pasting boiler-plate CMake code and watching it diverge while -maintaining the CMake infrastructure in a growing number of scientific projects -which typically have very similar requirements: +The main motivation for us to create Autocmake as a CMake framework library and +CMake module composer was to simplify CMake code transfer between codes. We got +tired of manually diffing and copy-pasting boiler-plate CMake code and watching +it diverge while maintaining the CMake infrastructure in a growing number of +scientific projects which typically have very similar requirements: - Fortran and/or C and/or C++ support -- Compiler flags -- Front-end script (setup.py) +- Tuning of compiler flags +- Front-end script for the CMake-unaware user (setup.py) - Support for parallelization: MPI, OMP, CUDA -- Math libraries (BLAS, LAPACK) +- Math libraries: BLAS, LAPACK Our other motivation for Autocmake was to make it easier for developers who do -not know CMake to generate a CMake infrastructure within minutes. +not know CMake to generate a CMake infrastructure within minutes by providing +a higher-level entry point. -Autocmake is a chance to provide well documented and tested set of CMake +Autocmake is a chance to provide a well documented and tested set of CMake plug-ins. With this we wish to give also users of codes the opportunity to introduce the occasional tweak without the need to read CMake documentation. @@ -61,6 +66,5 @@ possible and to minimize "hidden" actions in the background. Convention over configuration ----------------------------- -Our guideline is to follow good established conventions -to allow users and developers to recognize the configuration -when moving to a new project. +Our guideline is to follow good established conventions in order to allow users +and developers to recognize the configuration when moving to a new project.