diff --git a/build.rs b/build.rs index 61513ab..ad95cfd 100644 --- a/build.rs +++ b/build.rs @@ -32,6 +32,7 @@ fn make_and_install(source_dir: &str, build_dir: &str, install_dir: &str) -> std .args(&[ "-DCMAKE_BUILD_TYPE=Release", "-DBUILD_SHARED_LIBS=OFF", + "-DROUDI_ENVIRONMENT=ON", &cmake_prefix_path, &cmake_install_prefix, &component_source_dir, @@ -136,14 +137,20 @@ fn main() -> std::io::Result<()> { println!("cargo:rustc-link-search={}", iceoryx_lib_dir); + println!("cargo:rustc-link-lib=iceoryx_posh_testing"); + println!("cargo:rustc-link-lib=iceoryx_posh_roudi"); println!("cargo:rustc-link-lib=iceoryx_posh"); println!("cargo:rustc-link-lib=iceoryx_hoofs"); println!("cargo:rustc-link-lib=iceoryx_platform"); + + println!("cargo:rustc-link-lib=acl"); + #[cfg(not(any(target_os = "windows", target_os = "macos")))] println!("cargo:rustc-link-lib=stdc++"); #[cfg(any(target_os = "macos"))] println!("cargo:rustc-link-lib=c++"); + Ok(()) } diff --git a/src/lib.rs b/src/lib.rs index 333f678..f5b9efe 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,7 @@ extern crate cpp; mod error; mod runtime; +mod testing; pub mod introspection; pub mod pb; diff --git a/src/testing/mod.rs b/src/testing/mod.rs new file mode 100644 index 0000000..7ba9d94 --- /dev/null +++ b/src/testing/mod.rs @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: © Contributors to the iceoryx-rs project +// SPDX-FileContributor: Mathias Kraus + +mod roudi_environment_ffi; + +// re-exports +pub (crate) use roudi_environment_ffi::RouDiEnvironment; diff --git a/src/testing/roudi_environment_ffi.rs b/src/testing/roudi_environment_ffi.rs new file mode 100644 index 0000000..76d5995 --- /dev/null +++ b/src/testing/roudi_environment_ffi.rs @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: © Contributors to the iceoryx-rs project +// SPDX-FileContributor: Mathias Kraus + +cpp! {{ + #include "iceoryx_posh/testing/roudi_environment/roudi_environment.hpp" + + using iox::roudi::RouDiEnvironment; +}} + +cpp_class!(pub unsafe struct RouDiEnvironment as "RouDiEnvironment"); + +impl RouDiEnvironment { + pub(crate) fn new() -> Box { + unsafe { + let raw = cpp!([] -> *mut RouDiEnvironment as "RouDiEnvironment*" + { + return new RouDiEnvironment(); + }); + + Box::from_raw(raw) + } + } +}