mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 19:19:41 +00:00
feat: add cross-compilation support with --target flag
- 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.
This commit is contained in:
@@ -9,6 +9,8 @@ standard = "c11"
|
||||
compiler = "clang"
|
||||
kind = "bin"
|
||||
# optional:
|
||||
# inherit = true # Inherit from base (default true)
|
||||
# targets = ["linux", "macos"] # Multiple targets to build
|
||||
# target = "./dist"
|
||||
# platform = "x86_64"
|
||||
# cflags = ["-Wall"]
|
||||
@@ -30,6 +32,8 @@ kind = "bin"
|
||||
- `standard` (string, required): language standard passed to compiler.
|
||||
- `compiler` (string, required): compiler command (for example `clang`, `gcc`, `cl`).
|
||||
- `kind` (string, required): `bin`, `staticlib`, or `sharedlib`.
|
||||
- `inherit` (bool, optional): inherit settings from base `[build]` (default `true`). If `false`, only use target/profile specific settings.
|
||||
- `targets` (string array, optional): list of targets to build simultaneously. Supports short names (`linux`, `macos`, `windows`).
|
||||
- `target` (string, optional): custom output directory for final artifact.
|
||||
- `platform` (string, optional): architecture hint for compiler (used for `-march` or `/arch`).
|
||||
- `cflags` (string array, optional): extra compile flags.
|
||||
@@ -82,6 +86,15 @@ Step notes:
|
||||
Profile tables inherit all values from `[build]`. Any field present in the profile table replaces the base value.
|
||||
Array fields (like `cflags`/`ldflags`) are appended to the base array.
|
||||
|
||||
Target tables override profile and base settings for specific targets. Full inheritance order:
|
||||
1. `[build.<target>.<profile>]`
|
||||
2. `[build.<profile>.<target>]`
|
||||
3. `[build.<target>]`
|
||||
4. `[build.<profile>]`
|
||||
5. `[build]`
|
||||
|
||||
If custom `cflags` are set (non-empty), default compiler flags are disabled.
|
||||
|
||||
```toml
|
||||
[build.debug]
|
||||
cflags = ["-g3"]
|
||||
@@ -89,6 +102,29 @@ cflags = ["-g3"]
|
||||
[build.release]
|
||||
cflags = ["-O3"]
|
||||
ldflags = ["-s"]
|
||||
|
||||
# Target-specific overrides (applied after profile)
|
||||
[build.linux]
|
||||
compiler = "gcc"
|
||||
cflags = ["-march=x86_64"]
|
||||
|
||||
[build.macos]
|
||||
compiler = "clang"
|
||||
cflags = ["-arch", "x86_64"]
|
||||
|
||||
# Full inheritance example
|
||||
[build.linux.release]
|
||||
cflags = ["-O3", "-march=native"] # Overrides profile and base
|
||||
|
||||
[build.release.linux]
|
||||
ldflags = ["-static"] # Alternative order
|
||||
|
||||
[build.windows.debug]
|
||||
compiler = "x86_64-w64-mingw32-gcc"
|
||||
cflags = [] # Empty to disable defaults
|
||||
|
||||
[build.release]
|
||||
inherit = false # No inheritance, only explicit settings
|
||||
```
|
||||
|
||||
## Toolchain section
|
||||
|
||||
Reference in New Issue
Block a user