@@ -28,22 +28,18 @@ const CdbGenStep = struct {
2828 var cwd = std .fs .cwd ();
2929
3030 // Open fragments directory (created by zig via -gen-cdb-fragment-path).
31- var dir = cwd .openDir (self .frags_dir , .{ .iterate = true }) catch | e | {
32- std .log .err (
33- \\compile db fragments dir '{s}' not found ({s}).
34- \\clear caches and build with -Dgenerate-commands
35- , .{
36- self .frags_dir ,
37- @errorName (e ),
38- });
39- return e ;
31+ var dir = cwd .openDir (self .frags_dir , .{ .iterate = true }) catch {
32+ return ;
4033 };
4134 defer dir .close ();
4235
4336 // Write compile_commands.json as a JSON array of fragment objects.
4437 var out_file = try cwd .createFile (self .out_path , .{ .truncate = true });
4538 defer out_file .close ();
46- var w = out_file .writer ();
39+ var write_buffer : [4096 ]u8 = undefined ;
40+
41+ var ww = out_file .writer (& write_buffer );
42+ const w = & ww .interface ;
4743
4844 try w .writeByte ('[' );
4945
@@ -69,11 +65,13 @@ const CdbGenStep = struct {
6965 }
7066
7167 try w .writeAll ("]\n " );
68+ try w .flush ();
69+
7270 cwd .deleteTree (self .frags_dir ) catch {};
7371 }
7472};
7573
76- const VERSION = "4.0 " ;
74+ const VERSION = "4.3 " ;
7775
7876const main_targets : []const std.Target.Query = &[_ ]std.Target.Query {
7977 .{ .cpu_arch = .aarch64 , .os_tag = .macos , .abi = null },
@@ -209,24 +207,22 @@ pub fn build(b: *std.Build) !void {
209207 // Parse short git rev
210208 var file = try std .fs .cwd ().openFile (".git/logs/HEAD" , .{});
211209 defer file .close ();
212- var buf_reader = std .io .bufferedReader (file .reader ());
213- var in_stream = buf_reader .reader ();
214- var buf : [1024 ]u8 = undefined ;
215- var last_line : [1024 ]u8 = undefined ;
216- while (try in_stream .readUntilDelimiterOrEof (& buf , '\n ' )) | line | {
210+ var buf : [4096 ]u8 = undefined ;
211+ var reader = file .reader (& buf );
212+ var last_line : [4096 ]u8 = undefined ;
213+ while (reader .interface .takeDelimiterInclusive ('\n ' )) | line | {
217214 if (line .len > 0 )
218215 last_line = buf ;
219- }
220- const git_rev = buf [41.. 51 ];
216+ } else | err | if ( err != error . EndOfStream ) return err ;
217+ const git_rev = buf [41.. 48 ];
221218
222219 // Binary version
223220 const version = if (! release )
224221 VERSION ++ "-" ++ git_rev
225222 else
226223 VERSION ;
227-
228- const gen_cdb = b .option (bool , "generate-commands" ,
229- "generate compile_commands.json fragments" ) orelse false ;
224+
225+ const gen_cdb = b .option (bool , "generate-commands" , "generate compile_commands.json fragments" ) orelse false ;
230226
231227 //
232228 // Build
@@ -285,7 +281,7 @@ fn buildBinary(
285281 // TODO: Propagate these to all 3rd party dependencies
286282 //
287283
288- var global_flags = std .ArrayList ([]const u8 ).init (b .allocator );
284+ var global_flags = std .array_list . Managed ([]const u8 ).init (b .allocator );
289285 defer global_flags .deinit ();
290286
291287 try global_flags .appendSlice (cfg .flags );
@@ -338,7 +334,7 @@ fn buildBinary(
338334 // C Opts for Urbit PKGs And Binary
339335 //
340336
341- var urbit_flags = std .ArrayList ([]const u8 ).init (b .allocator );
337+ var urbit_flags = std .array_list . Managed ([]const u8 ).init (b .allocator );
342338 defer urbit_flags .deinit ();
343339
344340 try urbit_flags .appendSlice (global_flags .items );
@@ -535,11 +531,10 @@ fn buildBinary(
535531 // Build Artifact
536532 //
537533
538- const urbit = b .addExecutable (.{
539- .name = cfg .binary_name ,
534+ const urbit = b .addExecutable (.{ .name = cfg .binary_name , .root_module = b .createModule (.{
540535 .target = target ,
541536 .optimize = optimize ,
542- });
537+ }) }) ;
543538
544539 if (t .os .tag == .windows ) {
545540 urbit .stack_size = 67108864 ;
@@ -780,11 +775,10 @@ fn buildBinary(
780775 for (tests ) | tst | {
781776 const test_step =
782777 b .step (tst .name , b .fmt ("Build & run: {s}" , .{tst .file }));
783- const test_exe = b .addExecutable (.{
784- .name = tst .name ,
778+ const test_exe = b .addExecutable (.{ .name = tst .name , .root_module = b .createModule (.{
785779 .target = target ,
786780 .optimize = optimize ,
787- });
781+ }) }) ;
788782
789783 if (t .os .tag .isDarwin () and ! target .query .isNative ()) {
790784 const macos_sdk = b .lazyDependency ("macos_sdk" , .{
@@ -808,7 +802,7 @@ fn buildBinary(
808802 test_exe .addLibraryPath (.{
809803 .cwd_relative = "/opt/homebrew/opt/llvm@18/lib/clang/18/lib/darwin" ,
810804 });
811- if (cfg .asan ) test_exe .linkSystemLibrary ("clang_rt.asan_osx_dynamic" );
805+ if (cfg .asan ) test_exe .linkSystemLibrary ("clang_rt.asan_osx_dynamic" );
812806 if (cfg .ubsan ) test_exe .linkSystemLibrary ("clang_rt.ubsan_osx_dynamic" );
813807 }
814808
0 commit comments