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