mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-20 14:16:33 +00:00
使用cargo管理一些C文件的编译,并且移动部分汇编到arch目录 (#447)
* 使用cargo管理main.c的编译 * 使用build-scripts编译架构相关的c代码 * 删除elf.h
This commit is contained in:
@ -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))
|
||||
}
|
||||
|
1
build-scripts/kernel_build/src/constant/mod.rs
Normal file
1
build-scripts/kernel_build/src/constant/mod.rs
Normal file
@ -0,0 +1 @@
|
||||
pub const ARCH_DIR_X86_64: &str = "src/arch/x86_64";
|
@ -4,6 +4,7 @@ extern crate cc;
|
||||
|
||||
mod bindgen;
|
||||
mod cfiles;
|
||||
mod constant;
|
||||
mod kconfig;
|
||||
mod utils;
|
||||
|
||||
|
Reference in New Issue
Block a user