-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
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
Update toolchains to newer compilers #25327
base: bugfix-2.1.x
Are you sure you want to change the base?
Conversation
…future - improved generic_create_variant.py to not mess with official board variant configurations (only touch if board_build.variant value is prefixed with MARLIN_)
…e STM32 framework (it is excluded by default) [chitu_f103 fix]
I really hope you have thoroughly tested these new compilers on all boards effected, and are not just blindly upgrading them... beyond it still compiles... |
The upgrade process is being performed slowly! You can see that I have left compatibility .ini configurations as fallback. The following boards have been tested IRL:
Also please do not seed distrust into PlatformIO official registry packages. They have been released for a good reason and PlatformIO targets embedded devs. I will nevertheless make sure everything works ;) Progress is necessary! |
…32 to fix compilation issues on the latest Espressif toolchains When the PR luc-github/ESP3DLib#51 has been merged then please change it back! - (temporarily) updated the "ESP Async WebServer" dependency for MKS TinyBee / ESP32 to fix compilation issues on the latest Espressif toolchains Please watch PR me-no-dev/ESPAsyncWebServer#1142 and change back once merged. - fixed another ESP32 bug due to toolchain update
Please watch PRs me-no-dev/ESPAsyncWebServer#1142 and luc-github/ESP3DLib#51 for merging, then change back dependencies if the official packages work. |
@ellensp Hey I need some help testing the things that run on CI locally. Do you know how I can do that? I'd greatly appreciate it! Need to fix the issue for the MKS TinyBee which fails in an unknown Linux script... Never mind! Got it figured out. I simply took another crash course into Marlin FW, specifically the automated build system scripts and stuff. Really interesting and worth a video! That system looks very stable so users should get an insight if they want to contribute to Marlin FW. |
…uilding again (shell passthrough special characters)
Please monitor PR espressif/arduino-esp32#7744 + check for the release of arduino-espressif32 version 2.0.7. Then remove the custom dependency from esp32.ini ! |
…spressif32 (please fix dependency once 2.0.7 of that package is out on PlatformIO registry!)
I noticed that you added gnu++1z to avr env According to this document https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
So perhaps you should be using gnu++17 instead ? The document also state "This is the default" is this define even needed? It does build slightly differently example ramps build. Without gnu++1z 38 bytes less flash... |
Thanks for pointing this out! I am still trying to figure out the proper C++ standard targets for each platform. The C++17 standard is already pretty good, but there are really amazing features in C++20 that we should not miss out on. It is sometimes necessary to override -std flags from dependency packages / platform options, so that is also a reason. |
…tions Please check PR rhapsodyv/Arduino_Core_STM32#1 and if @rhapsodyv has merged then adjust the dependency to an official one!
@ellensp Please note that the currently available GCC for AVR version is 7.3 on PlatformIO and you have mentioned the default -std=c++17 option that is only from GCC version 11. https://registry.platformio.org/tools/platformio/toolchain-atmelavr/versions Worth pointing out because GCC versions differ between platforms! Basically GCC maintenance is a huge mess due to the distributed nature of the compiler. |
As part of my work I can fix the following issue: #24717 |
Marlin is reluctant to bump toolchain versions because it will break things, potentially for thousands people. Can you test at least dozens configurations for each MCU? And that's just hardware, not software feature conmbinations. Do you at least cople dozens most popular boards, dozen different displays and machines of every kinematic so you can debug and fix stuff you will break with toolchain updates? As long as current toolchain is satisying - we'd better not touch it. |
"As part of my work I can fix the following issue: #24717" That is trivial, main issue is pins_debugging needs re written for stm32 platform, it doesn't support many MPU's properly at all. Most Issues are with analog pins. And this should be in a separate PR. |
@ellensp I think that a proper implementation of pin debugging should be in a seperate PR. But I will adjust some things for compatibility sake. |
@EvilGremlin As I have said, PlatformIO packages are there for a reason. They are tried & tested by the embedded community. Thus it is safe to assume that they are ready to be deployed on real hardware. Nevertheless I will perform big tests on real hardware. |
…moving Marlin internals out of variants-headers and making them optional (new platdefs STM32 HAL folder for Marlin specific board specializations + _STM32_PLATDEFS define) @ellensp said that PINS_DEBUGGING support should be rewritten in another PR; I agree but this is a necessity to unbreak compilation + PINS_DEBUGGING is not a release feature so don't obstruct progress, please!
…t is a bad idea to rely on such internal thus adjusted some things.
@sjasonsmith — I agree that this should not be merged all at once, so I've been slowly integrating small parts of this as time allows. Today I'm just bringing this PR up to date with a new merge, and then following up to see if I can make the CI tests pass. I see ESP32 is up to version 6.4.0 now, so this PR might also be updated to point to that version. Over time we can continue to pick up small parts of this and integrate them as we have time to test, perhaps starting with ESP32 since it will have the smallest impact on the smallest number of boards. I would definitely like to get updated to the more modern STM32 platform too since it apparently has some nice improvements. |
c624e13
to
e6f1b07
Compare
9c65146
to
4f65466
Compare
c792921
to
37fb26b
Compare
37d77d6
to
aa44542
Compare
fd7feb5
to
b43c22e
Compare
abc96f6
to
52729d3
Compare
Description
This pull request updates the platform and package versions of build configurations to their latest version. The build configurations have been rigorously tested (mostly under my HAL SPI rework).
Improved generic_create_variant.py to not mess with official board variant configurations (only touch if board_build.variant value is prefixed with MARLIN_).
Benefits
Newer compilers emit better code. Newer compilers provide newer C++ language features thus more powerful software models can be implemented. Newer toolchains may come with support for even more boards.
Related Issues
#24911 (depends on this PR)