-
Notifications
You must be signed in to change notification settings - Fork 3k
CMake: Refactor Cypress targets #14289
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: Refactor Cypress targets #14289
Conversation
Refactor all Cypress targets to be CMake buildsystem targets. This removes the need for checking MBED_TARGET_LABELS repeatedly and allows us to be more flexible in the way we include MBED_TARGET source in the build. A side effect of this is it will allow us to support custom targets without breaking the build for 'standard' targets, as we use CMake's standard mechanism for adding build rules to the build system, rather than implementing our own layer of logic to exclude files not needed for the target being built. Using this approach, if an MBED_TARGET is not linked to using target_link_libraries its source files will not be added to the build. This means custom target source can be added to the user's application CMakeLists.txt without polluting the build system when trying to compile for a standard MBED_TARGET.
The CMake custom target must be unique to avoid more than one Mbed target adding the same. Only the CMake custom command added for the Mbed target being built is run as the custom CMake target now includes the Mbed target name.
@hugueskamba, thank you for your changes. |
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.
We should create 2 issues to address the comments, I can create them tomorrow.
@@ -94,4 +94,5 @@ target_link_libraries(mbed-lpc546xx | |||
mbed-lpc546xx-xpresso | |||
) | |||
|
|||
mbed_post_build_lpc_patch_vtable() | |||
mbed_post_build_lpc_patch_vtable("LPC546XX") | |||
mbed_post_build_lpc_patch_vtable("FF_LPC546XX") |
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.
looking at this from the cmake here, it would make sense to use the same name as CMake target. In this case mbed-lpc546xx-xpresso
, we do not need to have knowledge of targets.json naming in CMake.
We can fix this in separate PR, let's think about how and why. The naming could be CMake target name + post-build, this would result in mbed-lpc546xx-xpresso-post-build
. This might be more obvious from CMake.
DEPENDS ${CMAKE_BINARY_DIR}/${APP_TARGET}.bin | ||
|
||
add_custom_target(mbed-post-build-bin-${mbed_target_name} | ||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${APP_TARGET}.bin |
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 will be fixed also separately, the clean-up (removing app target requirement) got in 3 days ago.
It affects currently only post build targets and it's already there. We will look at this soon and remove this from post build.
Jenkins CI Test : ❌ FAILEDBuild Number: 1 | 🔒 Jenkins CI Job | 🌐 Logs & ArtifactsCLICK for Detailed Summary
|
Jenkins CI Test : ❌ FAILEDBuild Number: 2 | 🔒 Jenkins CI Job | 🌐 Logs & ArtifactsCLICK for Detailed Summary
|
The failures do not seem to be related, investigating where it broke and why. |
This is blocked now on ARMmbed/mbed-tools#191 |
Jenkins CI Test : ✔️ SUCCESSBuild Number: 3 | 🔒 Jenkins CI Job | 🌐 Logs & ArtifactsCLICK for Detailed Summary
|
Summary of changes
CMake: Refactor Cypress targets
Refactor all Cypress targets to be CMake buildsystem targets. This removes
the need for checking MBED_TARGET_LABELS repeatedly and allows us to be
more flexible in the way we include MBED_TARGET source in the build.
A side effect of this is it will allow us to support custom targets
without breaking the build for 'standard' targets, as we use CMake's
standard mechanism for adding build rules to the build system, rather
than implementing our own layer of logic to exclude files not needed for
the target being built. Using this approach, if an MBED_TARGET is not
linked to using target_link_libraries its source files will not be
added to the build. This means custom target source can be added to the
user's application CMakeLists.txt without polluting the build system
when trying to compile for a standard MBED_TARGET.
It also includes a fix for post build operations (see commit message).
Impact of changes
Migration actions required
Documentation
Pull request type
Test results
Reviewers