Wholesale copy of all Kindred Create additions that don't conflict with upstream FreeCAD code: - kindred-icons/ (1444 Catppuccin Mocha SVG icon overrides) - src/Mod/Create/ (Kindred Create workbench) - src/Gui/ Kindred source files (FileOrigin, OriginManager, OriginSelectorWidget, CommandOrigin, BreadcrumbToolBar, EditingContext) - src/Gui/Icons/ (Kindred branding and silo icons) - src/Gui/PreferencePacks/KindredCreate/ - src/Gui/Stylesheets/ (KindredCreate.qss, images_dark-light/) - package/ (rattler-build recipe) - docs/ (architecture, guides, specifications) - .gitea/ (CI workflows, issue templates) - mods/silo, mods/ztools submodules - .gitmodules (Kindred submodule URLs) - resources/ (kindred-create.desktop, kindred-create.xml) - banner-logo-light.png, CONTRIBUTING.md
2.3 KiB
2.3 KiB
Build System
Kindred Create uses CMake for build configuration, pixi (conda-based) for dependency management and task running, and ccache for compilation caching.
Overview
- CMake >= 3.22.0
- Ninja generator (via conda presets)
- pixi manages all dependencies — compilers, Qt6, OpenCASCADE, Python, etc.
- ccache with 4 GB max, zlib compression level 6, sloppy mode
- mold linker on Linux for faster link times
CMake configuration
The root CMakeLists.txt defines:
- Kindred Create version:
0.1.0(viaKINDRED_CREATE_VERSION) - FreeCAD base version:
1.0.0(viaFREECAD_VERSION) - CMake policy settings for compatibility
- ccache auto-detection
- Submodule dependency checks
- Library setup: yaml-cpp, fmt, ICU
Version injection
The version flows from CMake to Python via configure_file():
CMakeLists.txt (KINDRED_CREATE_VERSION = "0.1.0")
→ src/Mod/Create/version.py.in (template)
→ build/*/Mod/Create/version.py (generated)
→ update_checker.py (imports VERSION)
CMake presets
Defined in CMakePresets.json:
| Preset | Platform | Build type |
|---|---|---|
conda-linux-debug |
Linux | Debug |
conda-linux-release |
Linux | Release |
conda-macos-debug |
macOS | Debug |
conda-macos-release |
macOS | Release |
conda-windows-debug |
Windows | Debug |
conda-windows-release |
Windows | Release |
All presets inherit from a hidden common base and a hidden conda base (Ninja generator, conda toolchain).
cMake/ helper modules
The cMake/ directory contains CMake helper macros inherited from FreeCAD:
- FreeCAD_Helpers — macros for building FreeCAD modules
- Platform detection modules
- Dependency finding modules (Find*.cmake)
Dependencies
Core dependencies managed by pixi (from pixi.toml):
| Category | Packages |
|---|---|
| Build | cmake, ninja, swig, compilers (clang/gcc) |
| CAD kernel | occt 7.8, coin3d, opencamlib, pythonocc-core |
| UI | Qt6 6.8, PySide6, pyside6 |
| Math | eigen, numpy, scipy, sympy |
| Data | hdf5, vtk, smesh, ifcopenshell |
| Python | 3.11 (< 3.12), pip, freecad-stubs |
Platform-specific extras:
- Linux: clang, kernel-headers, mesa, X11, libspnav
- macOS: sed
- Windows: pthreads-win32