diff options
-rw-r--r-- | src/rust/Cargo.toml | 7 | ||||
-rw-r--r-- | src/rust/build.rs | 19 | ||||
-rw-r--r-- | src/rust/src/main.rs | 26 | ||||
-rw-r--r-- | src/rust/wrapper.h | 3 |
4 files changed, 55 insertions, 0 deletions
diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml new file mode 100644 index 00000000..e45d616f --- /dev/null +++ b/src/rust/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "rust" +version = "0.1.0" +edition = "2021" + +[build-dependencies] +bindgen = "*"
\ No newline at end of file diff --git a/src/rust/build.rs b/src/rust/build.rs new file mode 100644 index 00000000..8bc6fb16 --- /dev/null +++ b/src/rust/build.rs @@ -0,0 +1,19 @@ +extern crate bindgen; + +use std::env; +use std::path::PathBuf; + +fn main() { + println!("cargo:rustc-link-lib=libcamera_c"); + println!("cargo::rustc-link-search=/home/jmondi/project/libcamera/worktrees/c-abi/build/src/libcamera_c/"); + + let bindings = bindgen::Builder::default() + .header("wrapper.h") + .generate() + .expect("Unable to generate bindings"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + bindings + .write_to_file(out_path.join("bindings.rs")) + .expect("Couldn't write bindings!"); +}
\ No newline at end of file diff --git a/src/rust/src/main.rs b/src/rust/src/main.rs new file mode 100644 index 00000000..eae33f97 --- /dev/null +++ b/src/rust/src/main.rs @@ -0,0 +1,26 @@ +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] + +include!(concat!(env!("OUT_DIR"),"/bindings.rs")); + +fn manager_create() -> *mut camera_manager { + unsafe { + camera_manager_create() + } +} + +fn manager_start(mngr: *mut camera_manager) { + unsafe { camera_manager_start(mngr); } +} + +fn manager_stop(mngr: *mut camera_manager) { + unsafe { camera_manager_stop(mngr); } +} + +fn main() { + println!("Hello, world!"); + let manager = manager_create(); + manager_start(manager); + manager_stop(manager); +} diff --git a/src/rust/wrapper.h b/src/rust/wrapper.h new file mode 100644 index 00000000..1747542b --- /dev/null +++ b/src/rust/wrapper.h @@ -0,0 +1,3 @@ +#include "../../include/libcamera_c/camera_manager_c.h" +#include "../../include/libcamera_c/camera_c.h" +#include "../../include/libcamera_c/request_c.h" |