# `ceres-solver-sys`
## Low-level unsafe Rust bindings for [Ceres Solver](http://ceres-solver.org)
[](https://github.com/light-curve/ceres-solver-rs/actions/workflows/test.yml)
[](https://results.pre-commit.ci/latest/github/light-curve/ceres-solver-rs/master)

Currently, we bind C API only using [`bindgen`](https://rust-lang.github.io/rust-bindgen/).
The minimal tested version of Ceres Solver is 2.0
### Cargo feature flags
- `v2_1` wraps Ceres Solver 2.1 API, which added CUDA support
- `system` (default) links a system copy of the Ceres Solver library. By default, it would be a synamic library, but you can tweak it with `pkg-config`
- `source` (optional) overrides `system` and links a static library file built by `ceres-solver-src` crate, it is also applies `v2_1` feature flag, because `ceres-solver-src` crate builds Ceres Solver 2.2 from source
`system` feature requires `pkg-config` system dependency, while `source` requires `ceres-solver-src` build dependencies such as CMake and C++17 compatible compiler.