Browse Source

Add optimized Cura build profile for mixed C++ standards

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.
pull/27/head
HellAholic 4 months ago
parent
commit
a6c89ad975
  1. 101
      profiles/cura_build_optimized.jinja

101
profiles/cura_build_optimized.jinja

@ -0,0 +1,101 @@
include(default)
# Optimized Cura Build Profile
# Generated based on C++ compatibility analysis
# Handles mixed C++ standard requirements across components
[replace_requires]
{% if platform.system() == 'Linux' %}
# FIXME: once gRPC is updated to 1.67.0 or higher
# Using 255.10 or higher https://github.com/conan-io/conan-center-index/issues/24889
# https://github.com/conan-io/conan-center-index/blob/879e140d9438ab491aceea766d0cf0ae3595dae8/recipes/grpc/all/conanfile.py#L122
libsystemd/*: libsystemd/[>=255.10]
{% endif %}
[settings]
# Default C++ standard for components that support it (libSavitar, libnest2d)
compiler.cppstd=17
# C++20 overrides for components that require it
curaengine*:compiler.cppstd=20
curaengine_plugin_infill_generate*:compiler.cppstd=20
curaengine_plugin_gradual_flow*:compiler.cppstd=20
curaengine_grpc_definitions*:compiler.cppstd=20
scripta*:compiler.cppstd=20
umspatial*:compiler.cppstd=20
dulcificum*:compiler.cppstd=20
uvula*:compiler.cppstd=20
curator/*:compiler.cppstd=20
arcus*:compiler.cppstd=20
pyarcus*:compiler.cppstd=20
# Optimize build type for release builds
build_type=Release
[options]
# gRPC optimizations - disable unused plugins
asio-grpc/*:local_allocator=recycling_allocator
grpc/*:csharp_plugin=False
grpc/*:node_plugin=False
grpc/*:objective_c_plugin=False
grpc/*:php_plugin=False
grpc/*:ruby_plugin=False
grpc/*:python_plugin=False
# Boost header-only for better compatibility
boost/*:header_only=True
# Platform-specific optimizations
{% if platform.system() == 'Linux' %}
openssl/*:shared=True
{% endif %}
# Python bindings - shared libraries for proper module loading
pyarcus/*:shared=True
pysavitar/*:shared=True
pynest2d/*:shared=True
cpython/*:shared=True
cpython/*:with_tkinter=False
cpython/*:with_curses=False
# Python dependencies - required for ARM64 builds
mpdecimal/*:shared=True
# Dulcificum library configuration
{% if platform.system() == 'Windows' %}
dulcificum/*:shared=False
{% else %}
dulcificum/*:shared=True
{% endif %}
# Core library configurations
clipper/*:shared=True
arcus/*:shared=True
# OneTBB configuration - disable tbbproxy for ARM64 compatibility
onetbb/*:tbbproxy=False
# Optimization flags
{% if platform.system() == 'Windows' %}
curaengine/*:enable_more_compiler_optimization_flags=True
{% endif %}
# Disable testing for faster builds
curaengine/*:enable_benchmarks=False
curaengine/*:enable_extensive_warnings=False
[conf]
# Skip tests to speed up builds
tools.build:skip_test=True
# Compiler-specific optimizations
{% if platform.system() == 'Windows' %}
tools.cmake.cmaketoolchain:generator=Ninja
{% endif %}
# Memory optimization for large builds
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=True
# Build parallelization
tools.build:jobs={{ os.cpu_count() }}
Loading…
Cancel
Save