Page MenuHomePhabricator

CMake buildsystem proposal
Updated 252 Days AgoPublic

Abstract

The current TF-A buildsystem became too complex and rigid, a new buildsystem using CMake is proposed. This document provides a summary about how we plan to introduce the buildsystem related changes to TF-A. For technical details, please check https://review.trustedfirmware.org/#/c/TF-A/trusted-firmware-a/+/2662/

Timeline

The migration of the TF-A buildsystem is a long and complex process, to make it more manageable, the plan is to split to two phases:

First phase: introducing cmake support

  • Feasibility study and prototyping.
  • Create a build-system framework based on cmake.
  • Imlement build solution for TF-A using the framework.
  • No source code modification.
  • No project structure modification.

In the first phase the focus is on the framework and the project source code is unchanged. Therefore the buildsystem logic will be similar to the current Makefile based, the full potential of CMake is not used.

Second phase: refactoring

  • Enhancement of TF-A structure.
    • Source code refactoring to enhance flexibility.
    • Better modularization, clear APIs and dependencies
  • Build framework enhancements.

Some parts of the TF-A source code are currently monolithic, with no clear modules and dependencies defined. In the second phase this can also be refactored, to make the project more flexible. CMake allows easy modularization (e.g. transitive dependency handling, etc...). This also causes that some changes are necessary to the framework.

The following diagram describes the planned timeline:

Last Author
balintdobszay
Last Edited
Nov 29 2019, 4:28 PM

Event Timeline

balintdobszay created this document.Nov 8 2019, 2:34 PM
balintdobszay edited the content of this document. (Show Details)
balintdobszay changed the visibility from "All Users" to "Custom Policy".
balintdobszay changed the edit policy from "All Users" to "Custom Policy".
balintdobszay changed the title from Cmake-buildsystem-proposal to CMake buildsystem proposal.Nov 8 2019, 2:37 PM
balintdobszay edited the content of this document. (Show Details)
balintdobszay changed the visibility from "Custom Policy" to "Custom Policy".
balintdobszay changed the edit policy from "Custom Policy" to "Custom Policy".
balintdobszay edited the content of this document. (Show Details)Nov 12 2019, 9:11 AM
balintdobszay edited the content of this document. (Show Details)
balintdobszay edited the content of this document. (Show Details)
balintdobszay edited the content of this document. (Show Details)Nov 12 2019, 3:16 PM
balintdobszay edited the content of this document. (Show Details)Nov 13 2019, 9:30 AM
balintdobszay edited the content of this document. (Show Details)Nov 13 2019, 9:46 AM
balintdobszay edited the content of this document. (Show Details)Nov 13 2019, 9:48 AM
balintdobszay edited the content of this document. (Show Details)
balintdobszay edited the content of this document. (Show Details)Nov 13 2019, 10:06 AM
balintdobszay edited the content of this document. (Show Details)Nov 13 2019, 11:24 AM
balintdobszay edited the content of this document. (Show Details)Nov 13 2019, 11:27 AM
balintdobszay edited the content of this document. (Show Details)Nov 13 2019, 11:30 AM
balintdobszay changed the edit policy from "Custom Policy" to "Custom Policy".
balintdobszay changed the visibility from "Custom Policy" to "Trusted Firmware A (Project)".Nov 14 2019, 10:17 AM
balintdobszay changed the edit policy from "Custom Policy" to "Custom Policy".
gyuri-szing edited the content of this document. (Show Details)Nov 26 2019, 3:37 PM
balintdobszay edited the content of this document. (Show Details)Nov 29 2019, 3:27 PM
balintdobszay edited the content of this document. (Show Details)
balintdobszay changed the visibility from "Trusted Firmware A (Project)" to "Public (No Login Required)".Nov 29 2019, 3:41 PM
balintdobszay edited the content of this document. (Show Details)Nov 29 2019, 4:28 PM