Skip to content

Make the CMake build graph enforce the MIT core / commercial extension boundary #8

Description

@godofecht

LICENSING.md says the MIT core is zero-dependency and can compile/ship alone, but the current top-level CMake does not expose that architecture: it discovers/fetches xsimd at configure time and collects most src/*.cpp into a single TinyML target.

This should be fixed as a build-system invariant, not left as documentation.

Acceptance criteria:

  • Add an explicit core-only build mode that never downloads, discovers, links, or exposes xsimd.
  • Replace broad source globbing with explicit core and extended source lists so the licence boundary is reviewable in CMake.
  • Keep the existing full/extended build available for the commercial tier.
  • Ensure MIT headers never gain a transitive dependency on extended headers or xsimd.
  • Add CI coverage for both core-only and full builds.
  • Add an install/export path so a downstream CMake project can consume the core target through find_package or an exported target without copying headers manually.
  • Add a small downstream smoke test that configures against the installed package and links a minimal executable.
  • Document build options and target names in README/LICENSING.md.

This is important because the repository currently documents a stronger separation than the build system itself guarantees.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions