mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 09:38:29 +00:00
- Added support for registry-based dependencies in the dependencies section. - Updated the package section to include a project type field. - Introduced a new CLI command `dcr setup` to load and display registry configurations. - Implemented a new module for handling registry operations, including loading and resolving packages from registries. - Enhanced the build process to handle library packaging, including copying headers and libraries to the appropriate target directories. - Updated the CLI to support building library packages and added tests for library package builds. - Improved error handling and output messages during dependency resolution and package fetching.
61 lines
1.7 KiB
Rust
61 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 package_type: 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)
|
|
}
|