diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-10-23 02:42:47 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-10-23 02:42:47 +0900 |
| commit | 9a9f53daac112c841487a3c530318601c102895a (patch) | |
| tree | e7c8bf3f2d26069f68b91ee132abbdc14288bdef /internal | |
| parent | ac60441cfe5b7018314ebe2b72e9b4db834b70f3 (diff) | |
internal/rosa: cross-only native tools
For situations where a package uses a just-built program as part of its
own build process.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/rosa/azalea/evaluate.go | 3 | ||||
| -rw-r--r-- | internal/rosa/rosa.go | 7 | ||||
| -rw-r--r-- | internal/rosa/state.go | 5 |
3 files changed, 13 insertions, 2 deletions
diff --git a/internal/rosa/azalea/evaluate.go b/internal/rosa/azalea/evaluate.go index 59702062..9b7b08d0 100644 --- a/internal/rosa/azalea/evaluate.go +++ b/internal/rosa/azalea/evaluate.go @@ -208,6 +208,8 @@ var ( IdentInputs = unique.Make(Ident("inputs")) // IdentCross has the same semantics as [IdentTools]. IdentCross = unique.Make(Ident("cross")) + // IdentNative has the same semantics as [IdentTools]. + IdentNative = unique.Make(Ident("native")) // IdentRuntime has the same semantics as [IdentTools]. IdentRuntime = unique.Make(Ident("runtime")) // IdentExtra has the same semantics as [IdentTools]. @@ -364,6 +366,7 @@ func evaluateAny(d PF, s []Frame, expr, rp any) bool { IdentTools, IdentInputs, IdentCross, + IdentNative, IdentRuntime, IdentExtra, } { diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go index 7123de6e..27f31ecf 100644 --- a/internal/rosa/rosa.go +++ b/internal/rosa/rosa.go @@ -344,6 +344,8 @@ type PackageAttr struct { NoLibc bool // Inputs added only during cross-compilation. Cross P + // Native utilities added only during cross-compilation. + CrossTools P // Native utilities used by the build process. Tools P // Unregistered extras. @@ -429,7 +431,7 @@ func (t Toolchain) New( root := make([]pkg.Artifact, 0, 1<<3+ len(attr.Extra)+ len(attr.Tools)+ - len(attr.Cross)+ + len(attr.CrossTools)+ len(inputs)) root = append(root, attr.Extra...) @@ -545,6 +547,9 @@ func (t Toolchain) New( for _, p := range attr.Cross { rootCross = t.appendHandle(rootCross, spv, p) } + for _, p := range attr.CrossTools { + root = native.appendHandle(root, pv, p) + } } boot := native.S.New(t.stage - 1) diff --git a/internal/rosa/state.go b/internal/rosa/state.go index 5d2de9a0..aba5c312 100644 --- a/internal/rosa/state.go +++ b/internal/rosa/state.go @@ -1103,7 +1103,7 @@ func (ctx *evalContext) pf( overlay string join bool - tools, inputs, extra azalea.Array + tools, native, inputs, extra azalea.Array cross, runtimes = azalea.Array{}, azalea.Array{} bootstrap, libc = true, true @@ -1138,6 +1138,7 @@ func (ctx *evalContext) pf( k("exec"): &helper, k("inputs"): &inputs, k("cross"): &cross, + k("native"): &native, k("tools"): &tools, k("runtime"): &runtimes, k("join"): &join, @@ -1154,6 +1155,8 @@ func (ctx *evalContext) pf( return } else if attr.Cross, err = toHandles(cross); err != nil { return + } else if attr.CrossTools, err = toHandles(native); err != nil { + return } else if attr.Tools, err = toHandles(tools); err != nil { return } else if extraH, err = toHandles(extra); err != nil { |
