-
Notifications
You must be signed in to change notification settings - Fork 133
CMake Improvements #598
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
CMake Improvements #598
Conversation
danielinux
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR Jim.
I did not test but I've spotted a bit too much pollution of the / directory. Please move .sh and .bat files under tools/scripts/. There are also some cmake-specific json files that could go under cmake/
The documentation for cmake builds (including existing one) should probably be moved in a new file under docs/ and referred to from /README.md
Let's not put platform-specific (stm32?) information in the main README.md either. This will confuse users on all other targets. Anything target-specific should be in docs/Targets.md.
Some files have meaningless or confusing names (my_test, wolfbuild)
Some instructions point to your private repository
|
Hi @danielinux Thanks for your feedback! I realize that I came in for a remodel and left a bunch of trash laying around. I've cleaned this up in my latest 32e46e6 commit. Thing are still WIP on my dev branch, but things here in this PR should be a bit cleaner now. @dgarske - I've not yet addressed the unused cmake vars. Changes of interest since my prior commit include non-os-specific presets. more testing, more docs (including cmake .config), script improvements, VS Code workspace moved to root directory, improved dynamic cmake downloads, main cmake functionality moved to include files in the There's more work to be done, particularly around supporting all of the targets. I'd like to get this initial update stable and merged before moving on to additional features and target devices. Suggestions welcome. EDIT: Launching VS Code from a non-VS2022 dev prompt (compiler NOT in the path by default) is not working, failing here: I'm revisiting compiler detection. I had this working, must have broke it. The features still work if everything is in the path (e.g. launch from Visual Studio command prompt), but it should support a fully specified toolchain & include path with no assumptions, nothing in path. |
|
Still WIP, but I've applied cc4d2da that contains most of my current progress on cmake-specific updates from my dev branch. A variety of other changes are also in the works, but those changes are in separate pull requests. |
|
I've pushed my latest changes to pr-cmake-improvements branch for this PR. See my current workflow results. There's only new Required. See CMake docs:
Notable update: NO new VSCode files added to Open the cd ~/workspace/wolfBoot-$USER
code ./IDE/VSCode/wolfBoot.code-workspaceSee blog: CMake Presets integration in Visual Studio and Visual Studio Code I plan to move ALL Visual Studio files to Various other CMake improvements, a good spot for testing at 5266e0a . |
63be6c9 to
0a6698d
Compare
|
Still reviewing changes. Please re-organize documentation flow. CMake section still growing, so it deserves its own file in docs/ Very important: remove docs/STM32.md and move the relevant info to Target.md (specific to STM32L4, requiring cubeMx, all other STM32 don't have that dependency and these instructions are very confusing because of this). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is still adding a file docs/STM32.md with wrong "generic" instructions for STM32 targets, which in fact only apply to STM32L4, plus randomly introducing IDE-specific instructions. Remove that file as per previous comments.
Also, please add CMake build tests in the workflow for other targets as well. The main issue to resolve in this PR is CMake coverage across targets.
|
@danielinux I've added additional STM32 targets and updated workflows to test them all in 1ad66e9 I've also updated the docs and removed the I currently have a sim default preset with spaces in the name so that it shows up like this in the IDE list this:
However, I've had some problems using that from command-line, so those sim tests are disabled for now. See 4474cf8 I started down the road or other ARM targets, but the first one I tried doesn't have a GitHub workflow toolchain, so the |
danielinux
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor changes
|
@danielinux Thanks for the review; Applied updates and changes as requested. See 079fb00 I inadvertently left the in-source build error message test; reverted in f202980 |
|
Additional work remains, but this is still a good stopping point for this update. In particular: See the "Known issues" I added at the beginning of the PR description. |
|
LGTM, off to @dgarske for final review & merge |
dgarske
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice set of CMake improvements! Thank you Jim

New Features
load_dot_config(path)Known issues
stm32h5andstm32l5andstm32wbhave"BUILD_TEST_APPS": "OFF"(toolchain / include file issue)CMake reading .config files
This PR adds support for configuring the CMake build directly from a Kconfig-style
.configfile. When a.configis present at the repository root andUSE_DOT_CONFIG=ONis set, CMake reads build options from that file instead of requiring them to be passed manually on the command line.Example usage:
For convenience,
tools/scripts/cmake_dot_config.shdemonstrates one way to copyconfig/examples/<target>.configto.configand then run the CMake configure step using this mechanism, but it is just an example wrapper around the CMake interface shown above.Test Drive
Work remains on CMake files, but the initial VS Code build should be working:
Select
STM32L4wait for Cmake to finish, then clickbuild. Theoutputpane might be not visible. Grab frame to expand up:I'm not sure yet which extensions are required, but at least the Microsoft
ms-vscode.cmake-tools.Here's a list of what I have installed:
Development
I use Visual Studio for CMake development but the objective is for an IDE-agnostic CMake build experience.
I use VisualGDB for embedded development; this will be a good exercise for flexible HAL file positioning and config.
I'm using an STM32L4, specifically the B-L475E-IOT01A Discovery kit IoT node that I happened to have on hand related to #585.
Some of the changes are specifically hard-code to the above. My objective is to make everything a configuration setting.
VS Code Presets
Was previously OS-specific, and needed to be launched from VS2022 command prompt. The
stm32l4tested (see above).Visual Studio 2022
There's currently no VS2022 project file. Simply open the directory.
Select a device from the ribbon bar, shown here for the
stm32l4From
Solution Explorer, right-clickCmakeLists.txtand then selectConfigure wolfBoot.To build, follow the same steps to right click, and select
Build.View the CMake and Build messages in the
OutputWindow. Noter the dropdown to select view:CMake Dev Status:
Make Dev Status:
./tools/scripts/wolfboot_build.sh --target stm32l4