-
Notifications
You must be signed in to change notification settings - Fork 25
Add optimized Cura build profile for mixed C++ standards #27
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
base: master
Are you sure you want to change the base?
Conversation
Introduces cura_build_optimized.jinja to handle mixed C++ standard requirements across components, platform-specific options, and build optimizations. Includes settings for compiler standards, shared library configurations, plugin disabling, and parallelization for improved build performance.
wawanbreton
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.
This does seem to re-copy a large part of existing files. If it is the case, please make a common file and include it in both.
Also, why do we need this ? If it is for a specific need, then the file name could be more explicit.
Added specific shared library and option settings for ARM64 Windows in cura.jinja to improve compatibility. Removed the cura_build_optimized.jinja profile, consolidating build configuration into the main profile.
Enhances the logic for selecting pip requirements by considering OS and architecture-specific keys, including normalized architecture names. This allows for more precise dependency resolution based on the target environment.
| # ARM64 Windows: Arcus needs to be shared for proper Python binding | ||
| arcus/*:shared=True | ||
| # ARM64 Windows: Disable tbbproxy (not available on ARM64 platforms) | ||
| onetbb/*:tbbproxy=False |
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.
I just saw a conanfile.py in an other repository, that did the same locally, so since this is global, maybe the other one is no more required ? I can't find it though 😅
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 one you mean?
So in my head it makes more sense to have it in the conan-config. So the one in the engine is a backup in case this one does not work as expected. I can make the builds based on changes on CuraEngine branches but making builds with different conan-config branches is much more difficult.
As part of the clean up probably one of the two will be yeeted out for the final version.
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.
That makes some sense. I think I remember some good practices I learned during the conan2 migration, and one of them was to put as many of those things in profiles as possible, so that when you install dependencies of any sub-project, you get the same global configuration and that avoids conflicts. By putting it only in the conanfile of a single project, you can easily end-up with multiple projects requiring different versions/settings of the same dependency. In this case, the setting change is really specific to an architecture so having it in a profile fully makes sense. CuraEngine only specifies that it requires OneTBB, and the profile indicates that it should be setup in a specific way, whenever it is for CuraEngine or anyone else (for example if we some day use it on libuvula).
This pull request adds platform-specific configuration for ARM64 Windows systems to the
profiles/cura.jinjafile. The main goal is to ensure compatibility and proper functioning of dependencies when running on ARM64 Windows.Platform-specific dependency configuration for ARM64 Windows:
mpdecimalis built as a shared library for CPython compatibility on ARM64 Windows.arcusto build as a shared library for proper Python binding on ARM64 Windows.tbbproxyinonetbbsince it is not available on ARM64 platforms.CURA-12814