Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement new CMakeLists.txt generation backend (cbuild2cmake) #1237

Closed
brondani opened this issue Dec 4, 2023 · 1 comment
Closed

Implement new CMakeLists.txt generation backend (cbuild2cmake) #1237

brondani opened this issue Dec 4, 2023 · 1 comment
Assignees
Labels
cmake-backend Issues that will be solved by the new CMake-backend enhancement New feature or request

Comments

@brondani
Copy link
Collaborator

brondani commented Dec 4, 2023

As a result of the investigation tracked in #1044 the new CMakeLists.txt generation backend should be planned and implemented according to the CMakeLists Proposal.

Work breakdown structure

Area Work Packages Priority Depends References
1. Test Strategy 1.1. Create a test plan for the migration of integration test cases. All aspects covered by current Build Manager tests must be documented and equivalent go test cases must be implemented 1️⃣ #1 ✔️
1.2. Implement CMSIS-Toolbox E2E integration tests 1️⃣ 1.1 #101
2. Extend csolution 2.1. Explicitly store context inter-dependencies in cbuild-idx.yml 1️⃣ #1272 ✔️
2.2. Redefine intdir: in the multi-context scenario a solution level intermediate directory is needed 1️⃣ #1243
2.3. Add pre- and post-build build steps to csolution.yml and cproject.yml in the form of executes nodes 2️⃣ TBD
2.4. Extend project nodes to accept cmake [generic|standalone], input and output to handle the integration of generic CMake libraries as well as standalone CMake projects 3️⃣ TBD
3. Implement executable cbuild2cmake 3.1. Parse cbuild-idx.yml and cbuild.yml files 1️⃣ #2, #21 ✔️
3.2. Parse toolchain registration (environment variables) 1️⃣ #3, #22 ✔️
3.3. Generate Super Project CMakeLists.txt making use of CMake ExternalProject features, set step dependencies and by-products, database generation 1️⃣ 2.1, 2.2 #4 #62 ✔️
3.4. Add pre- and post-build build steps handling 2️⃣ 2.3 TBD
3.5. Handle generic CMake libraries and standalone CMake projects 3️⃣ 2.4 TBD
3.6. For each context: generate CMakeLists.txt, groups.cmake and components.cmake files considering compile options as well languages and scope 1️⃣ 1 #1234, #5 ✔️
3.7. Generate <toolchain>.cmake file 1️⃣ #65 ✔️
3.8. Create toolchain configuration yml files to replace cmake files 3️⃣ TBD
3.9. Handle templates for toolchain configuration and CMakeLists at solution and context levels 3️⃣ TBD
3.10. Generate context specific compile options 1️⃣ #29 ✔️
3.11. Generate miscellaneous compile options at context, component, group and file level 1️⃣ #31 ✔️
3.12. Handle abstracted compile options (optimize, debug, warnings) and language standard 1️⃣ #32 ✔️
3.13. Handle local and global pre-includes 1️⃣ #33 ✔️
3.14. Process undefines and del-paths at component, group and file level 1️⃣ #34 ✔️
3.15. Generate linker pre-processing target 1️⃣ #35 ✔️
3.16. Handle linker script and linker flags 1️⃣ #36 ✔️
3.17. Generate elf2hex and elf2bin targets 1️⃣ #37 ✔️
4. Extend cbuild 4.1. Extend the cbuild front-end to optionally call cbuild2cmake instead of cbuildgen 1️⃣ #165 ✔️
5. Distributables 5.1. Update CMSIS-Toolbox to incorporate the new binary cbuild2cmake 1️⃣ #1398 ✔️
5.2. Update the toolbox release flow to directly collect binaries cpackget, cbuild, csolution and cbridge, allowing future removal of the current Build Manager 2️⃣ TBD
5.3. Add new yml toolchain configuration files and templates 3️⃣ TBD
6. CMake Module 6.1. Further development on CMSIS-Pack-Utils for CMSIS Packs consumption from CMake 4️⃣ 3.6 TBD
@brondani brondani added enhancement New feature or request cmake-backend Issues that will be solved by the new CMake-backend labels Dec 4, 2023
@brondani brondani self-assigned this Dec 4, 2023
@jkrech jkrech changed the title Implement new CMakeLists.txt generation backend Implement new CMakeLists.txt generation backend (cbuild2cmake) Dec 12, 2023
@brondani
Copy link
Collaborator Author

brondani commented Apr 3, 2024

Except for E2E integration tests and intdir redefinition, all first priority work packages were completed.
The remaining work is tracked here: #1422

@brondani brondani closed this as completed Apr 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cmake-backend Issues that will be solved by the new CMake-backend enhancement New feature or request
Projects
No open projects
Development

No branches or pull requests

1 participant