Open
Conversation
Still need to make these submodules fully optional, but they'll be fine for now.
Why migrate? CMake supports and generates "make files" for many supported compilers at this point, supports many platforms out of the box, and can easily be extended with additional features. In some cases, you can even have CMake download and install the necessary compilers for the project. I've also split the teensy_loader_cli.c file into multiple parts, which aids in platform separation. While using #ifdef/#endif is fine mostly, there are better options available that do not require regenerating intermediate source code files. For now I've opted against removing all the #ifdef/#endif pairs, as some of them are still useful.
Using a CI enables us to quickly check if we messed up somewhere, though in this case it'll be limited to code mistakes only. We can also use CI to automatically push releases to Github, removing a step that would take away our precious screen staring time. Ideally we also want it to update a comment in a Pull Request, so that binaries are available directly in the Pull Request, always pointing at the latest changes. But that's a bit difficult
Author
|
I've done what I can to make everything work. The README should be easy enough to follow now, and building seems to work flawlessly on the tested platforms (Windows, Ubuntu 20/22/24.04, MacOS 11). I've even got the automatic releases thing working, with it automatically creating a nightly release for any untagged builds. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I've migrated the teensy_loader_cli project over to the CMake Makefile Generator, in hopes of making it easier to compile across all platforms. CMake is a widely supported and popular "Build System", and significantly simplifies many tasks that would otherwise require more time to do. This change also splits the main file into multiple smaller ones, so that we rely less on the precompiler, speeding up compiles a tiny bit.
While I was at it, I've also taken the liberty of automatic versioning, including a clang-format file (and integration), as well as an EditorConfig file. All of these are technically optional, and not required for operation, but it felt weird to not include them after years of automating these things.
This Pull Request additionally includes automatic building of the teensy_loader_cli binary using Github Actions for various platforms. I have not implemented the automated builds for BSD platforms, but the major three platforms are present and can be adapted (see ToDo comment in main.yml).