使用cargo管理一些C文件的编译,并且移动部分汇编到arch目录 (#447)

* 使用cargo管理main.c的编译

* 使用build-scripts编译架构相关的c代码

* 删除elf.h
This commit is contained in:
LoGin
2023-11-17 21:25:15 +08:00
committed by GitHub
parent e4600f7f7d
commit 46e234aef6
36 changed files with 556 additions and 1683 deletions

View File

@ -2,7 +2,7 @@ use std::path::PathBuf;
use cc::Build;
use crate::utils::FileUtils;
use crate::{constant::ARCH_DIR_X86_64, utils::FileUtils};
use super::CFilesArch;
@ -18,10 +18,26 @@ impl CFilesArch for X86_64CFilesArch {
}
fn setup_files(&self, _c: &mut Build, files: &mut Vec<PathBuf>) {
files.push(PathBuf::from("src/arch/x86_64/driver/hpet.c"));
files.push(arch_path("driver/hpet.c"));
// 获取`kernel/src/arch/x86_64/driver/apic`下的所有C文件
files.append(&mut FileUtils::list_all_files(
&PathBuf::from("src/arch/x86_64/driver/apic"),
&arch_path("driver/apic"),
Some("c"),
true,
));
files.append(&mut FileUtils::list_all_files(
&arch_path("init"),
Some("c"),
true,
));
files.append(&mut FileUtils::list_all_files(
&arch_path("asm"),
Some("c"),
true,
));
files.append(&mut FileUtils::list_all_files(
&arch_path("interrupt"),
Some("c"),
true,
));
@ -36,3 +52,7 @@ impl CFilesArch for X86_64CFilesArch {
c.asm_flag("-m64");
}
}
fn arch_path(relative_path: &str) -> PathBuf {
PathBuf::from(format!("{}/{}", ARCH_DIR_X86_64, relative_path))
}

View File

@ -0,0 +1 @@
pub const ARCH_DIR_X86_64: &str = "src/arch/x86_64";

View File

@ -4,6 +4,7 @@ extern crate cc;
mod bindgen;
mod cfiles;
mod constant;
mod kconfig;
mod utils;