Commit Graph

15320 Commits

Author SHA1 Message Date
Andrew Kelley d7eab060db configurer: serialize Step.UpdateSourceFiles 2026-05-25 18:54:35 -07:00
Andrew Kelley f9f00c2dee configurer: serialize Step.CheckFile 2026-05-25 18:54:35 -07:00
Andrew Kelley d45f792c91 configurer: serialize Step.Fmt 2026-05-25 18:54:35 -07:00
Andrew Kelley 1186a10d4e configurer: serialize WriteFile 2026-05-25 18:54:35 -07:00
Andrew Kelley f4ae918684 configurer: implement serializing InstallDir 2026-05-25 18:54:35 -07:00
Andrew Kelley ecba6324bf configurer: update TranslateC step
and get zig's build.zig script fully compiling
2026-05-25 18:54:35 -07:00
Andrew Kelley 8a8bf5ad02 maker: update ObjCopy to new system 2026-05-25 18:54:35 -07:00
Andrew Kelley affe5ed867 std.Build: port UpdateSourceFiles step to new system 2026-05-25 18:54:35 -07:00
Andrew Kelley d3ec255a1f more progress towards zig's build.zig compiling 2026-05-25 18:54:35 -07:00
Andrew Kelley 1a83b4d8fa zig build: add zig_exe back to argv
trying to eliminate this can be a followup
2026-05-25 18:54:35 -07:00
Andrew Kelley 3d78589765 std.Build: port Fmt step to new system
and integrate properly with LazyPath
2026-05-25 18:54:35 -07:00
Andrew Kelley ddabd57743 progress towards compiling zig's build script 2026-05-25 18:54:35 -07:00
Andrew Kelley fa26566867 configurer: get InstallDir and Options steps compiling 2026-05-25 18:54:35 -07:00
Andrew Kelley c57bf99043 Configuration: implement Storage.UnionList.tag 2026-05-25 18:54:35 -07:00
Andrew Kelley 364a1400ff configurer: fix compilation in the presence of dependencies 2026-05-25 18:54:35 -07:00
Andrew Kelley ac0b1bfda2 build system: implement options
options which are passed to configurer and therefore observable by the
build script are added to the cache hash. A sorted list is hashed since
they are unordered.
2026-05-25 18:54:35 -07:00
Andrew Kelley aec708ce25 build system: remove unneeded args from configurer
not needed:
* zig exe path
* zig lib dir
* build root
* local cache root
* global cache root
2026-05-25 18:54:35 -07:00
Andrew Kelley 1dc82c1328 configurer: remove Cache 2026-05-25 18:54:35 -07:00
Andrew Kelley 7819e4dea7 rename addCliExtras to addPassthruArgs
finally, a good name
2026-05-25 18:54:35 -07:00
Andrew Kelley 8f224bc3f0 rename addBuildPositionals to addCliExtras
they don't have to be positionals
2026-05-25 18:54:35 -07:00
Andrew Kelley 0d95b44a1c build system: implement cli positionals 2026-05-25 18:54:35 -07:00
Andrew Kelley fa23575767 maker: fix the has side effects logic in run step 2026-05-25 18:54:35 -07:00
Andrew Kelley 5f626d28c1 maker: report when result_oom flag is set 2026-05-25 18:54:34 -07:00
Andrew Kelley 1e956fda90 maker: add the --listen and --seed args back to run 2026-05-25 18:54:34 -07:00
Andrew Kelley 0f3471eb66 maker: finish porting over run step 2026-05-25 18:54:34 -07:00
Andrew Kelley 4e3d14f590 maker: update more Run step logic 2026-05-25 18:54:34 -07:00
Andrew Kelley c8b583885d maker: port Run step logic up to spawnChildAndCollect 2026-05-25 18:54:34 -07:00
Andrew Kelley 0d48cbb822 std.process.Environ.Map: add putAll and clearRetainingCapacity 2026-05-25 18:54:34 -07:00
Andrew Kelley 378b790ee2 maker: port more of Run step over 2026-05-25 18:54:34 -07:00
Andrew Kelley 5a4b5b549b maker: restore Step.Run logic for adding artifact arg
When an artifact arg is added to a Run step, if the artifact is
installed, then the installation path is added rather than the cache
artifact path. This is probably something that should change in the
future, but the goal of this branch is to generally avoid breakage other
than that caused by phase separation.
2026-05-25 18:54:34 -07:00
Andrew Kelley 24d260363f configurer: fix bad serialization of strings in run args 2026-05-25 18:54:34 -07:00
Andrew Kelley 7c718fc72e fix compilation errors from rebase conflicts 2026-05-25 18:54:34 -07:00
Andrew Kelley a399d37886 maker: upgrade some of the run step logic 2026-05-25 18:54:34 -07:00
Andrew Kelley 81ee4ab32c configurer: serialize all data from run steps 2026-05-25 18:54:34 -07:00
Andrew Kelley 8bc0913212 compiler: fix compilation errors 2026-05-25 18:54:34 -07:00
Andrew Kelley e436d9c4ad configurer: back out the string interning from prev commit
partial revert of 2d3fbb687fba1ed52b42998ac4dcbf2a042644ea - see its
commit message for reasoning
2026-05-25 18:54:34 -07:00
Andrew Kelley c6d37f3895 configurer: make string duplication also intern
I had this idea to make b.dupe() also intern the strings since they will
be ultimately serialized to Configuration. Unfortunately the idea does
not work, because although a process-lived arena is used for the
string_bytes ArrayList of the Configuration.Wip, when the ArrayList is
resized, Allocator.free() memsets the freed memory to undefined, even
though it still technically lives due to being in a process-scoped
arena. So this commit will need to be partially reverted. However, I
kept it for posterity, and there are some more changes which I will now
note below.

- dupePaths: don't rewrite backslashes to forward slashes. backslashes
  are valid in filenames on non-windows systems.
- always compile configurer in single-threaded mode
- use arena allocator for everything, no gpa for anything
- construct the Configuration.Wip instance earlier, so some stuff can be
  prepopulated as desired.
- don't forget to flush
2026-05-25 18:54:34 -07:00
Andrew Kelley 1a63d26836 maker: implement TopLevel step 2026-05-25 18:54:34 -07:00
Andrew Kelley aa0652ff8d maker: implement InstallArtifact and InstallFile 2026-05-25 18:54:34 -07:00
Andrew Kelley dd51fc30f8 maker: finish migrating compile step make logic 2026-05-25 18:54:34 -07:00
Andrew Kelley b998d71e93 maker: finish lowering compile step CLI args 2026-05-25 18:54:34 -07:00
Andrew Kelley c60d33f167 Configuration: refactor maxInt(u32) 2026-05-25 18:54:34 -07:00
Andrew Kelley 6ad6a58e5d Configuration: fix bad serialization of PrefixedList and MultiList
Length zero is still serialized because there is no flag bit to hide the
length.
2026-05-25 18:54:34 -07:00
Andrew Kelley a60ffaf5b3 maker: finish migrating most of CLI lowering code 2026-05-25 18:54:34 -07:00
Andrew Kelley cc4f205fc3 maker: progress towards lowering zig cli args 2026-05-25 18:54:34 -07:00
Andrew Kelley c8f7e27060 zig build: add --debug-maker CLI flag
for changing the optimization mode of the maker executable
2026-05-25 18:54:34 -07:00
Andrew Kelley ec2b156720 std: rename zig.Configuration to Build.Configuration 2026-05-25 18:54:34 -07:00
Andrew Kelley 71ac3f15b3 build system: implement LazyPath
Number of generated files is recorded in serialized Configuration. Maker
preallocates array of generated files so that loads and stores can be
synchronization-free (protected by the dependency tree ordering).

More progress on Compile Step Zig CLI lowering.
2026-05-25 18:54:34 -07:00
Andrew Kelley eaffd55513 maker: progress towards lowering Compile Step CLI args
next thing to do is figure out how LazyPath is supposed to work now.
something like this:
* each Step that provides LazyPath objects has a setLazyPath and
  getLazyPath function which takes a tagged union identifying which one
  to access
* steps that fulfill LazyPath objects can freely call setLazyPath
  without obtaining a lock because the dependency graph prevents
  simultaneous access.
* similarly, steps that access LazyPath results can freely call
  getLazyPath without obtaining a lock, because after modification,
  there may be simultaneous reads from dependencies but they will all be
  read-only
* a fulfilled LazyPath object is a read-only std.Build.Cache.Path.
2026-05-25 18:54:34 -07:00
Andrew Kelley 8f36a83b45 Configuration: serialize remaining CSourceFiles information 2026-05-25 18:54:34 -07:00