docs: write BUILD_SYSTEM.md — CMake presets, pixi tasks, and platform variants #95

Closed
opened 2026-02-09 13:45:24 +00:00 by forbes · 1 comment
Owner

Tier 3 — Infrastructure

File: docs/BUILD_SYSTEM.md

What this document should cover

  1. Build system overview — CMake + pixi (conda-based) + ccache

    • CMake >= 3.22.0 required
    • Pixi manages all dependencies and provides task runner
    • ccache for compilation caching (4GB, zlib level 6, sloppy mode)
    • Mold linker on Linux for link speed
  2. pixi.toml reference:

    • All defined tasks with descriptions:
      • configure / configure-debug / configure-release
      • build / build-debug / build-release
      • install / install-debug / install-release
      • test / test-debug / test-release
      • freecad / freecad-debug / freecad-release
    • Core dependencies: cmake, ninja, gcc/clang, swig, occt 7.8, coin3d, Qt6 6.8, PySide6, Python 3.11 (< 3.12)
    • Platform-specific dependency groups (linux, osx, win)
    • Pip dependencies: freecad-stubs
  3. CMake presets (CMakePresets.json):

    • conda-linux-debug / conda-linux-release
    • conda-macos-debug / conda-macos-release
    • conda-windows-debug / conda-windows-release
    • Preset inheritance and configuration options
  4. Root CMakeLists.txt key sections:

    • Version constants: KINDRED_CREATE_VERSION 0.1.0, FREECAD_VERSION 1.0.0
    • Policy settings (CMP0144, CMP0148, etc.)
    • ccache auto-detection
    • Submodule dependency checks
    • Library setup: yaml-cpp, fmt, ICU
  5. cMake/ helper modules:

    • FreeCAD_Helpers macros
    • Platform detection
    • Dependency finding modules
    • Document key macros and their purpose
  6. Platform-specific notes:

    • Linux: clang, kernel-headers, mesa, X11, libspnav
    • macOS: minimal extra deps (sed)
    • Windows: pthreads-win32, MSVC
    • Python pinned to 3.11 (< 3.12)
  7. Troubleshooting:

    • ccache cache full
    • Missing dependencies
    • Preset not found errors
    • Submodule build failures

Key source files

  • pixi.toml — task definitions and dependencies
  • CMakePresets.json — platform presets
  • CMakeLists.txt (root) — main build configuration
  • cMake/ — helper modules directory

Acceptance criteria

  • All pixi tasks are documented
  • CMake presets are explained with usage examples
  • Platform-specific setup is covered for Linux, macOS, and Windows
  • Troubleshooting section addresses common build failures
## Tier 3 — Infrastructure **File:** `docs/BUILD_SYSTEM.md` ### What this document should cover 1. **Build system overview** — CMake + pixi (conda-based) + ccache - CMake >= 3.22.0 required - Pixi manages all dependencies and provides task runner - ccache for compilation caching (4GB, zlib level 6, sloppy mode) - Mold linker on Linux for link speed 2. **`pixi.toml` reference:** - All defined tasks with descriptions: - configure / configure-debug / configure-release - build / build-debug / build-release - install / install-debug / install-release - test / test-debug / test-release - freecad / freecad-debug / freecad-release - Core dependencies: cmake, ninja, gcc/clang, swig, occt 7.8, coin3d, Qt6 6.8, PySide6, Python 3.11 (< 3.12) - Platform-specific dependency groups (linux, osx, win) - Pip dependencies: freecad-stubs 3. **CMake presets** (`CMakePresets.json`): - `conda-linux-debug` / `conda-linux-release` - `conda-macos-debug` / `conda-macos-release` - `conda-windows-debug` / `conda-windows-release` - Preset inheritance and configuration options 4. **Root `CMakeLists.txt` key sections:** - Version constants: `KINDRED_CREATE_VERSION 0.1.0`, `FREECAD_VERSION 1.0.0` - Policy settings (CMP0144, CMP0148, etc.) - ccache auto-detection - Submodule dependency checks - Library setup: yaml-cpp, fmt, ICU 5. **`cMake/` helper modules:** - FreeCAD_Helpers macros - Platform detection - Dependency finding modules - Document key macros and their purpose 6. **Platform-specific notes:** - Linux: clang, kernel-headers, mesa, X11, libspnav - macOS: minimal extra deps (sed) - Windows: pthreads-win32, MSVC - Python pinned to 3.11 (< 3.12) 7. **Troubleshooting:** - ccache cache full - Missing dependencies - Preset not found errors - Submodule build failures ### Key source files - `pixi.toml` — task definitions and dependencies - `CMakePresets.json` — platform presets - `CMakeLists.txt` (root) — main build configuration - `cMake/` — helper modules directory ### Acceptance criteria - [ ] All pixi tasks are documented - [ ] CMake presets are explained with usage examples - [ ] Platform-specific setup is covered for Linux, macOS, and Windows - [ ] Troubleshooting section addresses common build failures
forbes added the documentation label 2026-02-09 13:45:24 +00:00
Author
Owner

Superseded by the mdBook documentation structure set up in PR #105. The content scope of this issue is now covered by the pages in docs/src/. Remaining content work is tracked in #104.

Superseded by the mdBook documentation structure set up in PR #105. The content scope of this issue is now covered by the pages in `docs/src/`. Remaining content work is tracked in #104.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kindred/create#95