mirror of
https://github.com/panpaul/tiny_os
synced 2024-09-20 09:45:19 +08:00
feat: support features selection in xtask
This commit is contained in:
parent
1a924738f0
commit
1d672b4ff8
@ -6,7 +6,7 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[features]
|
||||
default = ["riscv.board.virt"]
|
||||
default = ["riscv.board.virt", "riscv.riscv64"]
|
||||
|
||||
legacy = ["utils/legacy", "vspace/legacy"]
|
||||
|
||||
@ -20,8 +20,8 @@ riscv = []
|
||||
"riscv.riscv64" = ["riscv", "riscv.pagetable.sv39"]
|
||||
"riscv.riscv32" = ["riscv", "riscv.pagetable.sv32", "legacy"]
|
||||
|
||||
"riscv.board.default" = ["riscv.riscv64"]
|
||||
"riscv.board.virt" = ["riscv.riscv64"]
|
||||
"riscv.board.default" = []
|
||||
"riscv.board.virt" = []
|
||||
|
||||
[dependencies]
|
||||
allocator = { path = "../lib/allocator" }
|
||||
|
@ -88,22 +88,28 @@ pub struct Artifact {
|
||||
impl Artifact {
|
||||
pub fn cargo_args(&self) -> Result<Vec<String>> {
|
||||
let mut args: Vec<String> = Vec::new();
|
||||
let mut features: Vec<String> = Vec::new();
|
||||
|
||||
// profile
|
||||
if let Some(Profile::Release) = self.profile {
|
||||
args.push("--release".to_string());
|
||||
}
|
||||
|
||||
// board
|
||||
if let Some(board) = self.board {
|
||||
args.push("--no-default-features".to_string());
|
||||
args.push("--features".to_string());
|
||||
args.push(board.cargo_args(&self.arch)?);
|
||||
}
|
||||
|
||||
// arch
|
||||
args.extend(self.arch.cargo_args().iter().map(|s| s.to_string()));
|
||||
|
||||
// board
|
||||
if let Some(board) = self.board {
|
||||
features.push(board.cargo_args(&self.arch)?);
|
||||
}
|
||||
|
||||
// features
|
||||
features.extend(self.features.iter().map(|s| s.to_string()));
|
||||
if !features.is_empty() {
|
||||
args.push("--no-default-features".to_string());
|
||||
args.push(format!("--features={}", features.join(",")));
|
||||
}
|
||||
|
||||
Ok(args)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user