mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 23:19:36 +00:00
- Updated build and run commands to accept a --target option for specifying target platforms. - Enhanced documentation to include cross-compilation usage and supported targets. - Modified configuration to allow target-specific settings and toolchains. - Introduced a new test command to run project tests with specified profiles and targets. - Improved handling of target directories and output structure for different platforms. - Added support for multiple targets in the configuration file. - Implemented inheritance for workspace and dependencies based on target and profile.
60 lines
1.7 KiB
Rust
60 lines
1.7 KiB
Rust
pub mod common;
|
|
pub mod gas;
|
|
pub mod msvc;
|
|
pub mod nasm;
|
|
pub mod unix_cc;
|
|
|
|
pub struct BuildContext<'a> {
|
|
pub profile: &'a str,
|
|
pub project_name: &'a str,
|
|
pub compiler: &'a str,
|
|
pub language: &'a str,
|
|
pub standard: &'a str,
|
|
#[allow(dead_code)]
|
|
pub target: Option<&'a str>,
|
|
pub target_dir: Option<&'a str>,
|
|
pub kind: &'a str,
|
|
pub platform: Option<&'a str>,
|
|
pub linker: Option<&'a str>,
|
|
pub archiver: Option<&'a str>,
|
|
pub source_roots: &'a [std::path::PathBuf],
|
|
pub exclude_dirs: &'a [std::path::PathBuf],
|
|
pub include_paths: &'a [String],
|
|
pub include_dirs: &'a [String],
|
|
pub lib_dirs: &'a [String],
|
|
pub libs: &'a [String],
|
|
pub cflags: &'a [String],
|
|
pub ldflags: &'a [String],
|
|
}
|
|
|
|
pub fn build(ctx: &BuildContext) -> Result<f64, String> {
|
|
let compiler = ctx.compiler.to_lowercase();
|
|
if compiler.contains("clang-cl") {
|
|
return msvc::build(ctx);
|
|
}
|
|
if compiler == "as" || compiler.contains("gas") {
|
|
return gas::build(ctx);
|
|
}
|
|
if compiler.contains("nasm") {
|
|
return nasm::build(ctx);
|
|
}
|
|
if compiler == "cl" || compiler.contains("msvc") {
|
|
return msvc::build(ctx);
|
|
}
|
|
unix_cc::build(ctx)
|
|
}
|
|
|
|
pub fn collect_sources(ctx: &BuildContext) -> Result<Vec<String>, String> {
|
|
let compiler = ctx.compiler.to_lowercase();
|
|
if compiler.contains("clang-cl") || compiler == "cl" || compiler.contains("msvc") {
|
|
return msvc::collect_sources(ctx);
|
|
}
|
|
if compiler == "as" || compiler.contains("gas") {
|
|
return gas::collect_sources(ctx);
|
|
}
|
|
if compiler.contains("nasm") {
|
|
return nasm::collect_sources(ctx);
|
|
}
|
|
unix_cc::collect_sources(ctx)
|
|
}
|