Skip to content

Commit fc79b31

Browse files
committed
fix: xtask 语义搞错了
Signed-off-by: YdrMaster <[email protected]>
1 parent ed2eedd commit fc79b31

File tree

1 file changed

+20
-22
lines changed

1 file changed

+20
-22
lines changed

xtask/src/main.rs

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ fn main() {
3535
use Commands::*;
3636
match Cli::parse().command {
3737
Make(args) => {
38-
args.make(package(args.kernel.as_ref()));
38+
args.make(package(args.kernel.as_ref()), true);
3939
}
4040
Asm(args) => args.dump(),
4141
Qemu(args) => args.run(),
@@ -56,7 +56,7 @@ struct BuildArgs {
5656
}
5757

5858
impl BuildArgs {
59-
fn make(&self, package: &str) -> PathBuf {
59+
fn make(&self, package: &str, binary: bool) -> PathBuf {
6060
let target = "riscv64imac-unknown-none-elf";
6161
Cargo::build()
6262
.package(package)
@@ -68,11 +68,23 @@ impl BuildArgs {
6868
})
6969
.target(target)
7070
.invoke();
71-
PROJECT
71+
let elf = PROJECT
7272
.join("target")
7373
.join(target)
7474
.join(if self.debug { "debug" } else { "release" })
75-
.join(package)
75+
.join(package);
76+
if binary {
77+
let bin = elf.with_extension("bin");
78+
BinUtil::objcopy()
79+
.arg(elf)
80+
.arg("--strip-all")
81+
.args(["-O", "binary"])
82+
.arg(&bin)
83+
.invoke();
84+
bin
85+
} else {
86+
elf
87+
}
7688
}
7789
}
7890

@@ -92,7 +104,7 @@ impl AsmArgs {
92104
///
93105
/// 如果设置了 `kernel` 但不是 'test' 或 'test-kernel',将 `kernel` 指定的二进制文件反汇编,并保存到指定位置。
94106
fn dump(self) {
95-
let elf = self.build.make(package(self.build.kernel.as_ref()));
107+
let elf = self.build.make(package(self.build.kernel.as_ref()), false);
96108
let out = PROJECT.join(self.output.unwrap_or(format!(
97109
"{}.asm",
98110
elf.file_stem().unwrap().to_string_lossy()
@@ -121,14 +133,14 @@ impl QemuArgs {
121133
fn run(mut self) {
122134
let sbi = self.sbi.take().unwrap_or_else(|| "rust".into());
123135
let sbi = match sbi.to_lowercase().as_str() {
124-
"rust" | "rustsbi" => objcopy(self.build.make("rustsbi-qemu"), true),
136+
"rust" | "rustsbi" => self.build.make("rustsbi-qemu", true),
125137
"open" | "opensbi" => PathBuf::from("default"),
126138
_ => panic!(),
127139
};
128140
let kernel = self.build.kernel.take().unwrap_or_else(|| "test".into());
129141
let kernel = match kernel.to_lowercase().as_str() {
130-
"test" | "test-kernel" => objcopy(self.build.make("test-kernel"), true),
131-
"bench" | "bench-kernel" => objcopy(self.build.make("bench-kernel"), true),
142+
"test" | "test-kernel" => self.build.make("test-kernel", true),
143+
"bench" | "bench-kernel" => self.build.make("bench-kernel", true),
132144
_ => panic!(),
133145
};
134146
let status = Qemu::system("riscv64")
@@ -170,20 +182,6 @@ fn package<T: AsRef<str>>(name: Option<T>) -> &'static str {
170182
}
171183
}
172184

173-
fn objcopy(elf: impl AsRef<Path>, binary: bool) -> PathBuf {
174-
let elf = elf.as_ref();
175-
let bin = elf.with_extension("bin");
176-
BinUtil::objcopy()
177-
.arg(elf)
178-
.arg("--strip-all")
179-
.conditional(binary, |binutil| {
180-
binutil.args(["-O", "binary"]);
181-
})
182-
.arg(&bin)
183-
.invoke();
184-
bin
185-
}
186-
187185
#[test]
188186
fn test() {
189187
QemuArgs::default().run();

0 commit comments

Comments
 (0)