libgir/codegen/sys/
mod.rs
1use std::collections::BTreeMap;
2
3use crate::{codegen::generate_single_version_file, env::Env, version::Version};
4
5mod build;
6mod cargo_toml;
7pub mod ffi_type;
8mod fields;
9mod functions;
10mod lib_;
11mod statics;
12mod tests;
13
14pub fn generate(env: &Env) {
15 generate_single_version_file(env);
16 lib_::generate(env);
17 build::generate(env);
18 let crate_name = cargo_toml::generate(env);
19 tests::generate(env, &crate_name);
20}
21
22pub fn collect_versions(env: &Env) -> BTreeMap<Version, Version> {
23 let mut versions: BTreeMap<Version, Version> = env
24 .namespaces
25 .main()
26 .versions
27 .iter()
28 .filter(|v| **v > env.config.min_cfg_version)
29 .map(|v| (*v, *v))
30 .collect();
31
32 for v in &env.config.extra_versions {
33 versions.insert(*v, *v);
34 }
35
36 for (version, lib_version) in &env.config.lib_version_overrides {
37 versions.insert(*version, *lib_version);
38 }
39
40 versions
41}