xref: /DragonOS/build-scripts/kernel_build/src/cfiles/arch/mod.rs (revision e26ca418df7af685226d12d7f22fe1785ba163e4)
1 use std::path::PathBuf;
2 
3 use cc::Build;
4 
5 use crate::utils::cargo_handler::{CargoHandler, TargetArch};
6 
7 use self::x86_64::X86_64CFilesArch;
8 
9 pub mod x86_64;
10 
11 pub(super) trait CFilesArch {
12     /// 设置架构相关的宏定义
13     fn setup_defines(&self, c: &mut Build);
14     /// 设置架构相关的全局包含目录
15     fn setup_global_include_dir(&self, c: &mut Build);
16     /// 设置需要编译的架构相关的文件
17     fn setup_files(&self, c: &mut Build, files: &mut Vec<PathBuf>);
18 }
19 
20 /// 获取当前的架构;
21 pub(super) fn current_cfiles_arch() -> &'static dyn CFilesArch {
22     let arch = CargoHandler::target_arch();
23     match arch {
24         TargetArch::X86_64 => &X86_64CFilesArch,
25         _ => panic!("Unsupported arch: {:?}", arch),
26     }
27 }
28