Skip to main content

maliput_sdk/
lib.rs

1// BSD 3-Clause License
2//
3// Copyright (c) 2024, Woven by Toyota.
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are met:
8//
9// * Redistributions of source code must retain the above copyright notice, this
10//   list of conditions and the following disclaimer.
11//
12// * Redistributions in binary form must reproduce the above copyright notice,
13//   this list of conditions and the following disclaimer in the documentation
14//   and/or other materials provided with the distribution.
15//
16// * Neither the name of the copyright holder nor the names of its
17//   contributors may be used to endorse or promote products derived from
18//   this software without specific prior written permission.
19//
20// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30#![allow(rustdoc::bare_urls)]
31#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
32
33use std::path::PathBuf;
34
35/// Returns a map of libraries here vendored and the directories to search for the binaries.
36pub fn sdk_libraries() -> Vec<(String, PathBuf)> {
37    let mut libs = vec![("maliput".to_string(), PathBuf::from(env!("MALIPUT_BIN_PATH")))];
38    #[cfg(feature = "maliput_malidrive")]
39    libs.push((
40        "maliput_malidrive".to_string(),
41        PathBuf::from(env!("MALIPUT_MALIDRIVE_BIN_PATH")),
42    ));
43    #[cfg(feature = "maliput_geopackage")]
44    libs.push((
45        "maliput_geopackage".to_string(),
46        PathBuf::from(env!("MALIPUT_GEOPACKAGE_BIN_PATH")),
47    ));
48    libs
49}
50
51/// Returns a map of resources here vendored and the directories to search for the resources.
52#[allow(clippy::vec_init_then_push)]
53pub fn sdk_resources() -> Vec<(String, PathBuf)> {
54    let mut resources = vec![];
55    #[cfg(feature = "maliput_malidrive")]
56    resources.push((
57        "maliput_malidrive".to_string(),
58        PathBuf::from(env!("MALIPUT_MALIDRIVE_RESOURCE_PATH")),
59    ));
60    resources
61}
62
63/// Returns the path to the maliput_malidrive plugin.
64#[cfg(feature = "maliput_malidrive")]
65pub fn get_maliput_malidrive_plugin_path() -> PathBuf {
66    PathBuf::from(env!("MALIPUT_MALIDRIVE_PLUGIN_PATH"))
67}
68
69/// Returns the path to the maliput_geopackage plugin.
70#[cfg(feature = "maliput_geopackage")]
71pub fn get_maliput_geopackage_plugin_path() -> PathBuf {
72    PathBuf::from(env!("MALIPUT_GEOPACKAGE_PLUGIN_PATH"))
73}