2个版本
使用旧的Rust 2015
0.3.2 | 2018年10月22日 |
---|---|
0.3.1 | 2018年9月21日 |
#817 in 配置
在 2 crates中使用
49KB
1K SLoC
fel4-config
概述
对feL4清单的解析、转换和验证。
此库的主要目的是解析和验证fel4.toml文件,这些文件包含与使用cargo-fel4工具构建seL4相关的配置选项。
此库的次要目的是协助将这些配置值应用于seL4的基于CMake的构建过程,如libsel4-sys仓库所示。
入门指南
依赖关系
fel4-config
通过其Cargo.toml文件管理依赖项,如Rust项目通常所做的那样。
构建
fel4-config
应在稳定或夜间Rust工具链上构建。
-
获取Rust工具链
-
从git获取仓库
git clone https://github.com/maindotrs/fel4-config.git cd fel4-config
-
使用cargo构建
cargo build
安装
fel4-config可以通过在您的Cargo.toml中添加以下内容包含到您的Rust项目中。
-
在您的相关
[dependencies]
部分fel4-config = "0.3"
用法
feL4清单文件通常命名为fel4.toml
,位于feL4项目的根目录中。通常不需要从头开始创建它们,因为cargo-fel4工具会在cargo fel4 new
命令中生成完整的清单。
feL4清单由一个[fel4]
标题部分后跟特定于目标的表组成。
[fel4]
表选择构建目标和平台对,这是您的项目将为其构建的,以及一些簿记
[fel4]
# The Rust build target triple that your feL4 project has selected
# Currently "x86_64-sel4-fel4", "armv7-sel4-fel4", and "aarch64-sel4-fel4" are the available options
target = "x86_64-sel4-fel4"
# The associated platform for your build target.
# "pc99" is available in combination with the "x86_64-sel4-fel4" target
# "sabre" is available in combination with the "armv7-sel4-fel4" target
# "tx1" is available in combination with the "aarch64-sel4-fel4" target
platform = "pc99"
# The path relative to your project root dir where feL4 output build artifacts will be stored
artifact-path = "artifacts"
# The path relative to your project root where the Rust target JSON specifications are stored
# `cargo fel4 new` will generate these specifications for you by default
target-specs-path = "target_specs"
# For the target triple you have selected, there ought to be a toml table
# and a few nested subtables.
# The top-level target table,
[x86_64-sel4-fel4]
BuildWithCommonSimulationSettings = true
KernelOptimisation = "-O2"
# ... Snip ... many more configuration options are possible
# A subtable with configuration options specific to the selected plaform, [$TARGET.$PLATFORM]
# Even if multiple platforms are defined in the toml for a target, only the options
# from the subtable matching the platform selected in the [fel4] header table's
# "platform" field will be applied to the final configuration.
[x86_64-sel4-fel4.pc99]
KernelX86MicroArch = "nehalem"
LibPlatSupportX86ConsoleDevice = "com1"
# [$TARGET.debug], a subtable with options only applied for debug builds
[x86_64-sel4-fel4.debug]
KernelDebugBuild = true
KernelPrinting = true
# [$TARGET.debug], a subtable with options only applied for release builds
[x86_64-sel4-fel4.release]
KernelDebugBuild = false
KernelPrinting = false
-
fel4-config提供了两种主要的类型,分别是
FullFel4Manifest
和Fel4Config
。FullFel4Manifest
表示fel4.toml的全部内容,可以通过get_full_manifest(::std::path::Path::new("./fel4.toml"))?
或parse_full_manifest
来生成。这些方法会对清单内容进行解析和基本验证。Fel4Config
代表了一个针对特定目标、平台和构建配置的清单内容的合并子集。您可以使用resolve_fel4_config
从FullFel4Manifest
创建一个Fel4Config
。let full:FullFel4Manifest = get_full_manifest(manifest_file.path()) .expect("Should be able to read the fel4.toml file"); let config:Fel4Config = resolve_fel4_config(full, &BuildProfile::Debug) .expect("Should have been able to resolve a config");
Fel4Config
包含了解决后、去重后的配置属性集。当前应用包括在
libsel4-sys
CMake配置、cargo-fel4
代码生成等方面。有关单个类型和函数的详细信息,请参阅生成的Rust文档。
cargo doc --open
示例
- 您可以在本存储库中的examples/exemplar.toml找到完整的fel4.toml示例。
测试
fel4-config使用了Rust的集成测试框架。测试依赖项通过Cargo.toml [dev-dependencies]
管理。
构建
为了确认测试能够正确构建
cargo build --tests
运行
测试可以像Rust项目一样常规执行
cargo test
许可证
有关更多详细信息,请参阅LICENSE文件
依赖关系
~2.5MB
~52K SLoC