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提供了两种主要的类型,分别是FullFel4ManifestFel4ConfigFullFel4Manifest表示fel4.toml的全部内容,可以通过get_full_manifest(::std::path::Path::new("./fel4.toml"))?parse_full_manifest来生成。这些方法会对清单内容进行解析和基本验证。

    Fel4Config代表了一个针对特定目标、平台和构建配置的清单内容的合并子集。您可以使用resolve_fel4_configFullFel4Manifest创建一个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
    

示例

测试

fel4-config使用了Rust的集成测试框架。测试依赖项通过Cargo.toml [dev-dependencies]管理。

构建

为了确认测试能够正确构建

cargo build --tests

运行

测试可以像Rust项目一样常规执行

cargo test

许可证

有关更多详细信息,请参阅LICENSE文件

依赖关系

~2.5MB
~52K SLoC