Skip to content

Provide CMake integration and cross-platform native artifacts #53

Description

@GeneralPawz

What

Provide a supported way for a C or C++ project to build or consume the Axiolid C ABI with CMake. Package the generated header and native library as an imported target without leaking workspace layout, Cargo internals, or global compiler settings into the consumer.

Why now

A C ABI that only builds from inside the Rust workspace is not an integration surface. Native downstreams need deterministic discovery, linking, installation, runtime-library handling, and a version compatibility check on every supported platform.

Definition of done

  • find_package(Axiolid CONFIG REQUIRED) exposes a namespaced imported target and documented ABI version.
  • A minimal out-of-tree C project and C++ project both configure, build, link, and run.
  • Source-build and packaged-artifact paths pin an immutable release and produce equivalent behavior.
  • Linux, macOS, and Windows CI covers supported static/shared and runtime-library choices.
  • Install layout, transitive system libraries, rpath/DLL placement, debug/release selection, and cross-compilation behavior are explicit.
  • Builds do not use host-specific target-cpu=native defaults or mutate consumer-global CMake flags.
  • Artifact checksums, license material, and provenance are emitted by the release flow.

Non-goals

Application-specific CMake plugins belong in their downstream repositories.

Area

release

Effort

High

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

capabilityImplements an accepted capability (converted from a discussion)

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions