Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
D
dune-common
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 69
    • Issues 69
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 44
    • Merge Requests 44
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Core Modules
  • dune-common
  • Milestones
  • New CMake Build-System

Open
Milestone

New CMake Build-System

While the current dune build system does its job, it is outdated, hard to maintain and extend, and complicated to use. In #199 a general discussion about a revision of the cmake build system is going on and there is a general consensus in updating the current system. The proposal for a new cmake build-system can be found in https://gitlab.dune-project.org/simon.praetorius/dune-cmake/-/wikis/Proposal-for-a-new-Dune-Build-System.

This Milestone intends to provide a roadmap to reach the new build-system in small steps that can be reviewed individually. In a proof-of-concept it was shown that module-wise transition is possible, see https://gitlab.dune-project.org/simon.praetorius/dune-cmake/issues/12. So, the plan is to start with dune-common and to provide templates for the transition of the other dune-modules.

The general steps necessary for a transition of one module to the new cmake system are as follows:

  1. Update and cleanup the FindModules, by providing imported targets. These modules should follow the general cmake developer guideline and the examples in It's Time To Do CMake Right. If possible, FindModules should be replaced by ConfigFiles provided by the packages itself.
  2. Update the AddXYZFlags.cmake files to use these new library targets. (hopefully, these can be removed at the end)
  3. Replace the compile features detection by https://gitlab.dune-project.org/simon.praetorius/dune-cmake/-/merge_requests/19 or something similar.
  4. Move find_package from DuneXYZMacros.cmake to dune-xyz-config.cmake.in in form of find_dependency
  5. Replace the global-property based configuration system by a target based configuration system

Steps 1 and 2 can probably be done with little discussion. Those steps should be fully compatible to the current build system. Steps 3 and 4 are more involved changes and need to be tested thoroughly. For step 4 we may provide a template or examples. The final step 5 will be a big one and will be broken down into smaller sub-steps.

How the target-based cmake could look like is discussion in the https://gitlab.dune-project.org/simon.praetorius/dune-cmake repository that also acts as a template for the interaction of dune modules in the new build system.

  • Issues 8
  • Merge Requests 19
  • Participants 1
  • Labels 1
75% complete
75%
Start date
No start date
None
Due date
No due date
8
Issues 8 New issue
Open: 2 Closed: 6
19
Merge requests 19
Open: 3 Closed: 0 Merged: 16
0
Releases
None
Reference: core/dune-common%"New CMake Build-System"