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}