1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
use std::path::{Path, PathBuf};
#[derive(Debug, Clone)]
pub struct Probe {
pub prefix: PathBuf,
pub include_dirs: IncludeDirs,
pub lib_dirs: LibDirs,
}
#[derive(Debug, Clone)]
pub struct IncludeDirs {
pub carla_source: PathBuf,
pub carla_third_party: PathBuf,
pub recast: PathBuf,
pub rpclib: PathBuf,
pub boost: PathBuf,
pub libpng: PathBuf,
}
#[derive(Debug, Clone)]
pub struct LibDirs {
pub recast: PathBuf,
pub rpclib: PathBuf,
pub boost: PathBuf,
pub libpng: PathBuf,
pub libcarla_client: PathBuf,
}
impl IncludeDirs {
pub fn into_vec(self) -> Vec<PathBuf> {
let Self {
recast,
rpclib,
boost,
libpng,
carla_source,
carla_third_party,
} = self;
vec![
recast,
rpclib,
libpng,
boost,
carla_source,
carla_third_party,
]
}
}
impl LibDirs {
pub fn into_vec(self) -> Vec<PathBuf> {
let Self {
recast,
rpclib,
boost,
libpng,
libcarla_client,
} = self;
vec![recast, rpclib, libpng, boost, libcarla_client]
}
}
pub fn probe(carla_src_dir: &Path) -> Probe {
let carla_source_dir = carla_src_dir.join("LibCarla").join("source");
let carla_third_party_dir = carla_source_dir.join("third-party");
let build_dir = carla_src_dir.join("Build");
let recast_dir = build_dir.join("recast-0b13b0-c10-install");
let rpclib_dir = build_dir.join("rpclib-v2.2.1_c5-c10-libstdcxx-install");
let boost_dir = build_dir.join("boost-1.80.0-c10-install");
let libpng_dir = build_dir.join("libpng-1.6.37-install");
let libcarla_client_lib_dir = build_dir
.join("libcarla-client-build.release")
.join("LibCarla")
.join("cmake")
.join("client");
let include_dirs = IncludeDirs {
carla_source: carla_source_dir,
carla_third_party: carla_third_party_dir,
recast: recast_dir.join("include"),
rpclib: rpclib_dir.join("include"),
boost: boost_dir.join("include"),
libpng: libpng_dir.join("include"),
};
let lib_dirs = LibDirs {
recast: recast_dir.join("lib"),
rpclib: rpclib_dir.join("lib"),
boost: boost_dir.join("lib"),
libpng: libpng_dir.join("lib"),
libcarla_client: libcarla_client_lib_dir,
};
Probe {
prefix: carla_src_dir.to_path_buf(),
include_dirs,
lib_dirs,
}
}