| author | |
| committer | |
| log | c804ae2d6b1f62d9cb45db2613d36ef14ac539a0 |
| tree | 28f614cb43731aef7c018b1d094f4d288d6635fa |
| parent | 8a5d3e2eaf72195993e4932bfda66d08a36c6064 |
| parent | 1e60ca4b752a61e26067b4893be623442836ec6f |
| signature | Commit is signed but in an unrecognized format. |
16 files changed, 114 insertions(+), 91 deletions(-)
build.zig+8-8| ... | ... | @@ -16,7 +16,7 @@ pub fn build(b: *Builder) !void { |
| 16 | 16 | var docgen_exe = b.addExecutable("docgen", "doc/docgen.zig"); |
| 17 | 17 | |
| 18 | 18 | const rel_zig_exe = try os.path.relative(b.allocator, b.build_root, b.zig_exe); |
| 19 | const langref_out_path = os.path.join(b.allocator, b.cache_root, "langref.html") catch unreachable; | |
| 19 | const langref_out_path = os.path.join(b.allocator, [][]const u8{ b.cache_root, "langref.html" }) catch unreachable; | |
| 20 | 20 | var docgen_cmd = b.addCommand(null, b.env_map, [][]const u8{ |
| 21 | 21 | docgen_exe.getOutputPath(), |
| 22 | 22 | rel_zig_exe, |
| ... | ... | @@ -125,13 +125,13 @@ fn dependOnLib(b: *Builder, lib_exe_obj: var, dep: LibraryDep) void { |
| 125 | 125 | for (dep.libdirs.toSliceConst()) |lib_dir| { |
| 126 | 126 | lib_exe_obj.addLibPath(lib_dir); |
| 127 | 127 | } |
| 128 | const lib_dir = os.path.join(b.allocator, dep.prefix, "lib") catch unreachable; | |
| 128 | const lib_dir = os.path.join(b.allocator, [][]const u8{dep.prefix, "lib"}) catch unreachable; | |
| 129 | 129 | for (dep.system_libs.toSliceConst()) |lib| { |
| 130 | 130 | const static_bare_name = if (mem.eql(u8, lib, "curses")) |
| 131 | 131 | ([]const u8)("libncurses.a") |
| 132 | 132 | else |
| 133 | 133 | b.fmt("lib{}.a", lib); |
| 134 | const static_lib_name = os.path.join(b.allocator, lib_dir, static_bare_name) catch unreachable; | |
| 134 | const static_lib_name = os.path.join(b.allocator, [][]const u8{lib_dir, static_bare_name}) catch unreachable; | |
| 135 | 135 | const have_static = fileExists(static_lib_name) catch unreachable; |
| 136 | 136 | if (have_static) { |
| 137 | 137 | lib_exe_obj.addObjectFile(static_lib_name); |
| ... | ... | @@ -159,7 +159,7 @@ fn fileExists(filename: []const u8) !bool { |
| 159 | 159 | |
| 160 | 160 | fn addCppLib(b: *Builder, lib_exe_obj: var, cmake_binary_dir: []const u8, lib_name: []const u8) void { |
| 161 | 161 | const lib_prefix = if (lib_exe_obj.target.isWindows()) "" else "lib"; |
| 162 | lib_exe_obj.addObjectFile(os.path.join(b.allocator, cmake_binary_dir, "zig_cpp", b.fmt("{}{}{}", lib_prefix, lib_name, lib_exe_obj.target.libFileExt())) catch unreachable); | |
| 162 | lib_exe_obj.addObjectFile(os.path.join(b.allocator, [][]const u8{ cmake_binary_dir, "zig_cpp", b.fmt("{}{}{}", lib_prefix, lib_name, lib_exe_obj.target.libFileExt()) }) catch unreachable); | |
| 163 | 163 | } |
| 164 | 164 | |
| 165 | 165 | const LibraryDep = struct { |
| ... | ... | @@ -235,8 +235,8 @@ fn findLLVM(b: *Builder, llvm_config_exe: []const u8) !LibraryDep { |
| 235 | 235 | pub fn installStdLib(b: *Builder, stdlib_files: []const u8) void { |
| 236 | 236 | var it = mem.tokenize(stdlib_files, ";"); |
| 237 | 237 | while (it.next()) |stdlib_file| { |
| 238 | const src_path = os.path.join(b.allocator, "std", stdlib_file) catch unreachable; | |
| 239 | const dest_path = os.path.join(b.allocator, "lib", "zig", "std", stdlib_file) catch unreachable; | |
| 238 | const src_path = os.path.join(b.allocator, [][]const u8{"std", stdlib_file}) catch unreachable; | |
| 239 | const dest_path = os.path.join(b.allocator, [][]const u8{"lib", "zig", "std", stdlib_file}) catch unreachable; | |
| 240 | 240 | b.installFile(src_path, dest_path); |
| 241 | 241 | } |
| 242 | 242 | } |
| ... | ... | @@ -244,8 +244,8 @@ pub fn installStdLib(b: *Builder, stdlib_files: []const u8) void { |
| 244 | 244 | pub fn installCHeaders(b: *Builder, c_header_files: []const u8) void { |
| 245 | 245 | var it = mem.tokenize(c_header_files, ";"); |
| 246 | 246 | while (it.next()) |c_header_file| { |
| 247 | const src_path = os.path.join(b.allocator, "c_headers", c_header_file) catch unreachable; | |
| 248 | const dest_path = os.path.join(b.allocator, "lib", "zig", "include", c_header_file) catch unreachable; | |
| 247 | const src_path = os.path.join(b.allocator, [][]const u8{"c_headers", c_header_file}) catch unreachable; | |
| 248 | const dest_path = os.path.join(b.allocator, [][]const u8{"lib", "zig", "include", c_header_file}) catch unreachable; | |
| 249 | 249 | b.installFile(src_path, dest_path); |
| 250 | 250 | } |
| 251 | 251 | } |
doc/docgen.zig+5-5| ... | ... | @@ -990,13 +990,13 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 990 | 990 | try tokenizeAndPrint(tokenizer, out, code.source_token); |
| 991 | 991 | try out.write("</pre>"); |
| 992 | 992 | const name_plus_ext = try std.fmt.allocPrint(allocator, "{}.zig", code.name); |
| 993 | const tmp_source_file_name = try os.path.join(allocator, tmp_dir_name, name_plus_ext); | |
| 993 | const tmp_source_file_name = try os.path.join(allocator, [][]const u8{ tmp_dir_name, name_plus_ext }); | |
| 994 | 994 | try io.writeFile(tmp_source_file_name, trimmed_raw_source); |
| 995 | 995 | |
| 996 | 996 | switch (code.id) { |
| 997 | 997 | Code.Id.Exe => |expected_outcome| { |
| 998 | 998 | const name_plus_bin_ext = try std.fmt.allocPrint(allocator, "{}{}", code.name, exe_ext); |
| 999 | const tmp_bin_file_name = try os.path.join(allocator, tmp_dir_name, name_plus_bin_ext); | |
| 999 | const tmp_bin_file_name = try os.path.join(allocator, [][]const u8{ tmp_dir_name, name_plus_bin_ext }); | |
| 1000 | 1000 | var build_args = std.ArrayList([]const u8).init(allocator); |
| 1001 | 1001 | defer build_args.deinit(); |
| 1002 | 1002 | try build_args.appendSlice([][]const u8{ |
| ... | ... | @@ -1024,7 +1024,7 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1024 | 1024 | } |
| 1025 | 1025 | for (code.link_objects) |link_object| { |
| 1026 | 1026 | const name_with_ext = try std.fmt.allocPrint(allocator, "{}{}", link_object, obj_ext); |
| 1027 | const full_path_object = try os.path.join(allocator, tmp_dir_name, name_with_ext); | |
| 1027 | const full_path_object = try os.path.join(allocator, [][]const u8{ tmp_dir_name, name_with_ext }); | |
| 1028 | 1028 | try build_args.append("--object"); |
| 1029 | 1029 | try build_args.append(full_path_object); |
| 1030 | 1030 | try out.print(" --object {}", name_with_ext); |
| ... | ... | @@ -1216,12 +1216,12 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var |
| 1216 | 1216 | }, |
| 1217 | 1217 | Code.Id.Obj => |maybe_error_match| { |
| 1218 | 1218 | const name_plus_obj_ext = try std.fmt.allocPrint(allocator, "{}{}", code.name, obj_ext); |
| 1219 | const tmp_obj_file_name = try os.path.join(allocator, tmp_dir_name, name_plus_obj_ext); | |
| 1219 | const tmp_obj_file_name = try os.path.join(allocator, [][]const u8{ tmp_dir_name, name_plus_obj_ext }); | |
| 1220 | 1220 | var build_args = std.ArrayList([]const u8).init(allocator); |
| 1221 | 1221 | defer build_args.deinit(); |
| 1222 | 1222 | |
| 1223 | 1223 | const name_plus_h_ext = try std.fmt.allocPrint(allocator, "{}.h", code.name); |
| 1224 | const output_h_file_name = try os.path.join(allocator, tmp_dir_name, name_plus_h_ext); | |
| 1224 | const output_h_file_name = try os.path.join(allocator, [][]const u8{ tmp_dir_name, name_plus_h_ext }); | |
| 1225 | 1225 | |
| 1226 | 1226 | try build_args.appendSlice([][]const u8{ |
| 1227 | 1227 | zig_exe, |
src-self-hosted/compilation.zig+3-3| ... | ... | @@ -487,7 +487,7 @@ pub const Compilation = struct { |
| 487 | 487 | comp.name = try Buffer.init(comp.arena(), name); |
| 488 | 488 | comp.llvm_triple = try target.getTriple(comp.arena()); |
| 489 | 489 | comp.llvm_target = try Target.llvmTargetFromTriple(comp.llvm_triple); |
| 490 | comp.zig_std_dir = try std.os.path.join(comp.arena(), zig_lib_dir, "std"); | |
| 490 | comp.zig_std_dir = try std.os.path.join(comp.arena(), [][]const u8{ zig_lib_dir, "std" }); | |
| 491 | 491 | |
| 492 | 492 | const opt_level = switch (build_mode) { |
| 493 | 493 | builtin.Mode.Debug => llvm.CodeGenLevelNone, |
| ... | ... | @@ -1198,7 +1198,7 @@ pub const Compilation = struct { |
| 1198 | 1198 | const file_name = try std.fmt.allocPrint(self.gpa(), "{}{}", file_prefix[0..], suffix); |
| 1199 | 1199 | defer self.gpa().free(file_name); |
| 1200 | 1200 | |
| 1201 | const full_path = try os.path.join(self.gpa(), tmp_dir, file_name[0..]); | |
| 1201 | const full_path = try os.path.join(self.gpa(), [][]const u8{ tmp_dir, file_name[0..] }); | |
| 1202 | 1202 | errdefer self.gpa().free(full_path); |
| 1203 | 1203 | |
| 1204 | 1204 | return Buffer.fromOwnedSlice(self.gpa(), full_path); |
| ... | ... | @@ -1219,7 +1219,7 @@ pub const Compilation = struct { |
| 1219 | 1219 | const zig_dir_path = try getZigDir(self.gpa()); |
| 1220 | 1220 | defer self.gpa().free(zig_dir_path); |
| 1221 | 1221 | |
| 1222 | const tmp_dir = try os.path.join(self.arena(), zig_dir_path, comp_dir_name[0..]); | |
| 1222 | const tmp_dir = try os.path.join(self.arena(), [][]const u8{ zig_dir_path, comp_dir_name[0..] }); | |
| 1223 | 1223 | try os.makePath(self.gpa(), tmp_dir); |
| 1224 | 1224 | return tmp_dir; |
| 1225 | 1225 | } |
src-self-hosted/introspect.zig+2-2| ... | ... | @@ -8,10 +8,10 @@ const warn = std.debug.warn; |
| 8 | 8 | |
| 9 | 9 | /// Caller must free result |
| 10 | 10 | pub fn testZigInstallPrefix(allocator: *mem.Allocator, test_path: []const u8) ![]u8 { |
| 11 | const test_zig_dir = try os.path.join(allocator, test_path, "lib", "zig"); | |
| 11 | const test_zig_dir = try os.path.join(allocator, [][]const u8{ test_path, "lib", "zig" }); | |
| 12 | 12 | errdefer allocator.free(test_zig_dir); |
| 13 | 13 | |
| 14 | const test_index_file = try os.path.join(allocator, test_zig_dir, "std", "index.zig"); | |
| 14 | const test_index_file = try os.path.join(allocator, [][]const u8{ test_zig_dir, "std", "index.zig" }); | |
| 15 | 15 | defer allocator.free(test_index_file); |
| 16 | 16 | |
| 17 | 17 | var file = try os.File.openRead(test_index_file); |
src-self-hosted/libc_installation.zig+4-4| ... | ... | @@ -230,7 +230,7 @@ pub const LibCInstallation = struct { |
| 230 | 230 | while (path_i < search_paths.len) : (path_i += 1) { |
| 231 | 231 | const search_path_untrimmed = search_paths.at(search_paths.len - path_i - 1); |
| 232 | 232 | const search_path = std.mem.trimLeft(u8, search_path_untrimmed, " "); |
| 233 | const stdlib_path = try std.os.path.join(loop.allocator, search_path, "stdlib.h"); | |
| 233 | const stdlib_path = try std.os.path.join(loop.allocator, [][]const u8{ search_path, "stdlib.h" }); | |
| 234 | 234 | defer loop.allocator.free(stdlib_path); |
| 235 | 235 | |
| 236 | 236 | if (try fileExists(stdlib_path)) { |
| ... | ... | @@ -254,7 +254,7 @@ pub const LibCInstallation = struct { |
| 254 | 254 | const stream = &std.io.BufferOutStream.init(&result_buf).stream; |
| 255 | 255 | try stream.print("{}\\Include\\{}\\ucrt", search.path, search.version); |
| 256 | 256 | |
| 257 | const stdlib_path = try std.os.path.join(loop.allocator, result_buf.toSliceConst(), "stdlib.h"); | |
| 257 | const stdlib_path = try std.os.path.join(loop.allocator, [][]const u8{ result_buf.toSliceConst(), "stdlib.h" }); | |
| 258 | 258 | defer loop.allocator.free(stdlib_path); |
| 259 | 259 | |
| 260 | 260 | if (try fileExists(stdlib_path)) { |
| ... | ... | @@ -283,7 +283,7 @@ pub const LibCInstallation = struct { |
| 283 | 283 | builtin.Arch.aarch64v8 => try stream.write("arm"), |
| 284 | 284 | else => return error.UnsupportedArchitecture, |
| 285 | 285 | } |
| 286 | const ucrt_lib_path = try std.os.path.join(loop.allocator, result_buf.toSliceConst(), "ucrt.lib"); | |
| 286 | const ucrt_lib_path = try std.os.path.join(loop.allocator, [][]const u8{ result_buf.toSliceConst(), "ucrt.lib" }); | |
| 287 | 287 | defer loop.allocator.free(ucrt_lib_path); |
| 288 | 288 | if (try fileExists(ucrt_lib_path)) { |
| 289 | 289 | self.lib_dir = result_buf.toOwnedSlice(); |
| ... | ... | @@ -358,7 +358,7 @@ pub const LibCInstallation = struct { |
| 358 | 358 | builtin.Arch.aarch64v8 => try stream.write("arm\\"), |
| 359 | 359 | else => return error.UnsupportedArchitecture, |
| 360 | 360 | } |
| 361 | const kernel32_path = try std.os.path.join(loop.allocator, result_buf.toSliceConst(), "kernel32.lib"); | |
| 361 | const kernel32_path = try std.os.path.join(loop.allocator, [][]const u8{ result_buf.toSliceConst(), "kernel32.lib" }); | |
| 362 | 362 | defer loop.allocator.free(kernel32_path); |
| 363 | 363 | if (try fileExists(kernel32_path)) { |
| 364 | 364 | self.kernel32_lib_dir = result_buf.toOwnedSlice(); |
src-self-hosted/link.zig+1-1| ... | ... | @@ -315,7 +315,7 @@ fn constructLinkerArgsElf(ctx: *Context) !void { |
| 315 | 315 | } |
| 316 | 316 | |
| 317 | 317 | fn addPathJoin(ctx: *Context, dirname: []const u8, basename: []const u8) !void { |
| 318 | const full_path = try std.os.path.join(&ctx.arena.allocator, dirname, basename); | |
| 318 | const full_path = try std.os.path.join(&ctx.arena.allocator, [][]const u8{ dirname, basename }); | |
| 319 | 319 | const full_path_with_null = try std.cstr.addNullByte(&ctx.arena.allocator, full_path); |
| 320 | 320 | try ctx.args.append(full_path_with_null.ptr); |
| 321 | 321 | } |
src-self-hosted/main.zig+1-1| ... | ... | @@ -757,7 +757,7 @@ async fn fmtPath(fmt: *Fmt, file_path_ref: []const u8, check_mode: bool) FmtErro |
| 757 | 757 | var group = event.Group(FmtError!void).init(fmt.loop); |
| 758 | 758 | while (try dir.next()) |entry| { |
| 759 | 759 | if (entry.kind == std.os.Dir.Entry.Kind.Directory or mem.endsWith(u8, entry.name, ".zig")) { |
| 760 | const full_path = try os.path.join(fmt.loop.allocator, file_path, entry.name); | |
| 760 | const full_path = try os.path.join(fmt.loop.allocator, [][]const u8{ file_path, entry.name }); | |
| 761 | 761 | try group.call(fmtPath, fmt, full_path, check_mode); |
| 762 | 762 | } |
| 763 | 763 | } |
src-self-hosted/test.zig+2-2| ... | ... | @@ -87,7 +87,7 @@ pub const TestContext = struct { |
| 87 | 87 | ) !void { |
| 88 | 88 | var file_index_buf: [20]u8 = undefined; |
| 89 | 89 | const file_index = try std.fmt.bufPrint(file_index_buf[0..], "{}", self.file_index.incr()); |
| 90 | const file1_path = try std.os.path.join(allocator, tmp_dir_name, file_index, file1); | |
| 90 | const file1_path = try std.os.path.join(allocator, [][]const u8{ tmp_dir_name, file_index, file1 }); | |
| 91 | 91 | |
| 92 | 92 | if (std.os.path.dirname(file1_path)) |dirname| { |
| 93 | 93 | try std.os.makePath(allocator, dirname); |
| ... | ... | @@ -120,7 +120,7 @@ pub const TestContext = struct { |
| 120 | 120 | ) !void { |
| 121 | 121 | var file_index_buf: [20]u8 = undefined; |
| 122 | 122 | const file_index = try std.fmt.bufPrint(file_index_buf[0..], "{}", self.file_index.incr()); |
| 123 | const file1_path = try std.os.path.join(allocator, tmp_dir_name, file_index, file1); | |
| 123 | const file1_path = try std.os.path.join(allocator, [][]const u8{ tmp_dir_name, file_index, file1 }); | |
| 124 | 124 | |
| 125 | 125 | const output_file = try std.fmt.allocPrint(allocator, "{}-out{}", file1_path, Target(Target.Native).exeFileExt()); |
| 126 | 126 | if (std.os.path.dirname(file1_path)) |dirname| { |
std/build.zig+17-17| ... | ... | @@ -145,8 +145,8 @@ pub const Builder = struct { |
| 145 | 145 | |
| 146 | 146 | pub fn setInstallPrefix(self: *Builder, maybe_prefix: ?[]const u8) void { |
| 147 | 147 | self.prefix = maybe_prefix orelse "/usr/local"; // TODO better default |
| 148 | self.lib_dir = os.path.join(self.allocator, self.prefix, "lib") catch unreachable; | |
| 149 | self.exe_dir = os.path.join(self.allocator, self.prefix, "bin") catch unreachable; | |
| 148 | self.lib_dir = os.path.join(self.allocator, [][]const u8{self.prefix, "lib"}) catch unreachable; | |
| 149 | self.exe_dir = os.path.join(self.allocator, [][]const u8{self.prefix, "bin"}) catch unreachable; | |
| 150 | 150 | } |
| 151 | 151 | |
| 152 | 152 | pub fn addExecutable(self: *Builder, name: []const u8, root_src: ?[]const u8) *LibExeObjStep { |
| ... | ... | @@ -676,7 +676,7 @@ pub const Builder = struct { |
| 676 | 676 | if (os.path.isAbsolute(name)) { |
| 677 | 677 | return name; |
| 678 | 678 | } |
| 679 | const full_path = try os.path.join(self.allocator, search_prefix, "bin", self.fmt("{}{}", name, exe_extension)); | |
| 679 | const full_path = try os.path.join(self.allocator, [][]const u8{search_prefix, "bin", self.fmt("{}{}", name, exe_extension)}); | |
| 680 | 680 | if (os.path.real(self.allocator, full_path)) |real_path| { |
| 681 | 681 | return real_path; |
| 682 | 682 | } else |_| { |
| ... | ... | @@ -691,7 +691,7 @@ pub const Builder = struct { |
| 691 | 691 | } |
| 692 | 692 | var it = mem.tokenize(PATH, []u8{os.path.delimiter}); |
| 693 | 693 | while (it.next()) |path| { |
| 694 | const full_path = try os.path.join(self.allocator, path, self.fmt("{}{}", name, exe_extension)); | |
| 694 | const full_path = try os.path.join(self.allocator, [][]const u8{path, self.fmt("{}{}", name, exe_extension)}); | |
| 695 | 695 | if (os.path.real(self.allocator, full_path)) |real_path| { |
| 696 | 696 | return real_path; |
| 697 | 697 | } else |_| { |
| ... | ... | @@ -705,7 +705,7 @@ pub const Builder = struct { |
| 705 | 705 | return name; |
| 706 | 706 | } |
| 707 | 707 | for (paths) |path| { |
| 708 | const full_path = try os.path.join(self.allocator, path, self.fmt("{}{}", name, exe_extension)); | |
| 708 | const full_path = try os.path.join(self.allocator, [][]const u8{path, self.fmt("{}{}", name, exe_extension)}); | |
| 709 | 709 | if (os.path.real(self.allocator, full_path)) |real_path| { |
| 710 | 710 | return real_path; |
| 711 | 711 | } else |_| { |
| ... | ... | @@ -1113,7 +1113,7 @@ pub const LibExeObjStep = struct { |
| 1113 | 1113 | } |
| 1114 | 1114 | |
| 1115 | 1115 | pub fn getOutputPath(self: *LibExeObjStep) []const u8 { |
| 1116 | return if (self.output_path) |output_path| output_path else os.path.join(self.builder.allocator, self.builder.cache_root, self.out_filename) catch unreachable; | |
| 1116 | return if (self.output_path) |output_path| output_path else os.path.join(self.builder.allocator, [][]const u8{self.builder.cache_root, self.out_filename}) catch unreachable; | |
| 1117 | 1117 | } |
| 1118 | 1118 | |
| 1119 | 1119 | pub fn setOutputHPath(self: *LibExeObjStep, file_path: []const u8) void { |
| ... | ... | @@ -1126,7 +1126,7 @@ pub const LibExeObjStep = struct { |
| 1126 | 1126 | } |
| 1127 | 1127 | |
| 1128 | 1128 | pub fn getOutputHPath(self: *LibExeObjStep) []const u8 { |
| 1129 | return if (self.output_h_path) |output_h_path| output_h_path else os.path.join(self.builder.allocator, self.builder.cache_root, self.out_h_filename) catch unreachable; | |
| 1129 | return if (self.output_h_path) |output_h_path| output_h_path else os.path.join(self.builder.allocator, [][]const u8{self.builder.cache_root, self.out_h_filename}) catch unreachable; | |
| 1130 | 1130 | } |
| 1131 | 1131 | |
| 1132 | 1132 | pub fn addAssemblyFile(self: *LibExeObjStep, path: []const u8) void { |
| ... | ... | @@ -1226,7 +1226,7 @@ pub const LibExeObjStep = struct { |
| 1226 | 1226 | } |
| 1227 | 1227 | |
| 1228 | 1228 | if (self.build_options_contents.len() > 0) { |
| 1229 | const build_options_file = try os.path.join(builder.allocator, builder.cache_root, builder.fmt("{}_build_options.zig", self.name)); | |
| 1229 | const build_options_file = try os.path.join(builder.allocator, [][]const u8{builder.cache_root, builder.fmt("{}_build_options.zig", self.name)}); | |
| 1230 | 1230 | try std.io.writeFile(build_options_file, self.build_options_contents.toSliceConst()); |
| 1231 | 1231 | try zig_args.append("--pkg-begin"); |
| 1232 | 1232 | try zig_args.append("build_options"); |
| ... | ... | @@ -1476,7 +1476,7 @@ pub const LibExeObjStep = struct { |
| 1476 | 1476 | cc_args.append("-c") catch unreachable; |
| 1477 | 1477 | cc_args.append(abs_source_file) catch unreachable; |
| 1478 | 1478 | |
| 1479 | const cache_o_src = os.path.join(builder.allocator, builder.cache_root, source_file) catch unreachable; | |
| 1479 | const cache_o_src = os.path.join(builder.allocator, [][]const u8{builder.cache_root, source_file}) catch unreachable; | |
| 1480 | 1480 | if (os.path.dirname(cache_o_src)) |cache_o_dir| { |
| 1481 | 1481 | try builder.makePath(cache_o_dir); |
| 1482 | 1482 | } |
| ... | ... | @@ -1528,7 +1528,7 @@ pub const LibExeObjStep = struct { |
| 1528 | 1528 | cc_args.append("-current_version") catch unreachable; |
| 1529 | 1529 | cc_args.append(builder.fmt("{}.{}.{}", self.version.major, self.version.minor, self.version.patch)) catch unreachable; |
| 1530 | 1530 | |
| 1531 | const install_name = builder.pathFromRoot(os.path.join(builder.allocator, builder.cache_root, self.major_only_filename) catch unreachable); | |
| 1531 | const install_name = builder.pathFromRoot(os.path.join(builder.allocator, [][]const u8{builder.cache_root, self.major_only_filename}) catch unreachable); | |
| 1532 | 1532 | cc_args.append("-install_name") catch unreachable; |
| 1533 | 1533 | cc_args.append(install_name) catch unreachable; |
| 1534 | 1534 | } else { |
| ... | ... | @@ -1594,7 +1594,7 @@ pub const LibExeObjStep = struct { |
| 1594 | 1594 | cc_args.append("-c") catch unreachable; |
| 1595 | 1595 | cc_args.append(abs_source_file) catch unreachable; |
| 1596 | 1596 | |
| 1597 | const cache_o_src = os.path.join(builder.allocator, builder.cache_root, source_file) catch unreachable; | |
| 1597 | const cache_o_src = os.path.join(builder.allocator, [][]const u8{builder.cache_root, source_file}) catch unreachable; | |
| 1598 | 1598 | if (os.path.dirname(cache_o_src)) |cache_o_dir| { |
| 1599 | 1599 | try builder.makePath(cache_o_dir); |
| 1600 | 1600 | } |
| ... | ... | @@ -1757,7 +1757,7 @@ pub const TestStep = struct { |
| 1757 | 1757 | return output_path; |
| 1758 | 1758 | } else { |
| 1759 | 1759 | const basename = self.builder.fmt("test{}", self.target.exeFileExt()); |
| 1760 | return os.path.join(self.builder.allocator, self.builder.cache_root, basename) catch unreachable; | |
| 1760 | return os.path.join(self.builder.allocator, [][]const u8{self.builder.cache_root, basename}) catch unreachable; | |
| 1761 | 1761 | } |
| 1762 | 1762 | } |
| 1763 | 1763 | |
| ... | ... | @@ -1980,12 +1980,12 @@ const InstallArtifactStep = struct { |
| 1980 | 1980 | .step = Step.init(builder.fmt("install {}", artifact.step.name), builder.allocator, make), |
| 1981 | 1981 | .artifact = artifact, |
| 1982 | 1982 | .dest_file = os.path.join(builder.allocator, dest_dir, artifact.out_filename) catch unreachable, |
| 1983 | }; | |
| 1983 | }) catch unreachable; | |
| 1984 | 1984 | self.step.dependOn(&artifact.step); |
| 1985 | 1985 | builder.pushInstalledFile(self.dest_file); |
| 1986 | 1986 | if (self.artifact.kind == LibExeObjStep.Kind.Lib and !self.artifact.static) { |
| 1987 | builder.pushInstalledFile(os.path.join(builder.allocator, builder.lib_dir, artifact.major_only_filename) catch unreachable); | |
| 1988 | builder.pushInstalledFile(os.path.join(builder.allocator, builder.lib_dir, artifact.name_only_filename) catch unreachable); | |
| 1987 | builder.pushInstalledFile(os.path.join(builder.allocator, [][]const u8{builder.lib_dir, artifact.major_only_filename}) catch unreachable); | |
| 1988 | builder.pushInstalledFile(os.path.join(builder.allocator, [][]const u8{builder.lib_dir, artifact.name_only_filename}) catch unreachable); | |
| 1989 | 1989 | } |
| 1990 | 1990 | return self; |
| 1991 | 1991 | } |
| ... | ... | @@ -2141,13 +2141,13 @@ fn doAtomicSymLinks(allocator: *Allocator, output_path: []const u8, filename_maj |
| 2141 | 2141 | const out_dir = os.path.dirname(output_path) orelse "."; |
| 2142 | 2142 | const out_basename = os.path.basename(output_path); |
| 2143 | 2143 | // sym link for libfoo.so.1 to libfoo.so.1.2.3 |
| 2144 | const major_only_path = os.path.join(allocator, out_dir, filename_major_only) catch unreachable; | |
| 2144 | const major_only_path = os.path.join(allocator, [][]const u8{out_dir, filename_major_only}) catch unreachable; | |
| 2145 | 2145 | os.atomicSymLink(allocator, out_basename, major_only_path) catch |err| { |
| 2146 | 2146 | warn("Unable to symlink {} -> {}\n", major_only_path, out_basename); |
| 2147 | 2147 | return err; |
| 2148 | 2148 | }; |
| 2149 | 2149 | // sym link for libfoo.so to libfoo.so.1 |
| 2150 | const name_only_path = os.path.join(allocator, out_dir, filename_name_only) catch unreachable; | |
| 2150 | const name_only_path = os.path.join(allocator, [][]const u8{out_dir, filename_name_only}) catch unreachable; | |
| 2151 | 2151 | os.atomicSymLink(allocator, filename_major_only, name_only_path) catch |err| { |
| 2152 | 2152 | warn("Unable to symlink {} -> {}\n", name_only_path, filename_major_only); |
| 2153 | 2153 | return err; |
std/debug/index.zig+1-1| ... | ... | @@ -1352,7 +1352,7 @@ const LineNumberProgram = struct { |
| 1352 | 1352 | return error.InvalidDebugInfo; |
| 1353 | 1353 | } else |
| 1354 | 1354 | self.include_dirs[file_entry.dir_index]; |
| 1355 | const file_name = try os.path.join(self.file_entries.allocator, dir_name, file_entry.file_name); | |
| 1355 | const file_name = try os.path.join(self.file_entries.allocator, [][]const u8{dir_name, file_entry.file_name}); | |
| 1356 | 1356 | errdefer self.file_entries.allocator.free(file_name); |
| 1357 | 1357 | return LineInfo{ |
| 1358 | 1358 | .line = if (self.prev_line >= 0) @intCast(usize, self.prev_line) else 0, |
std/event/fs.zig+1-1| ... | ... | @@ -1336,7 +1336,7 @@ async fn testFsWatchCantFail(loop: *Loop, result: *(anyerror!void)) void { |
| 1336 | 1336 | } |
| 1337 | 1337 | |
| 1338 | 1338 | async fn testFsWatch(loop: *Loop) !void { |
| 1339 | const file_path = try os.path.join(loop.allocator, test_tmp_dir, "file.txt"); | |
| 1339 | const file_path = try os.path.join(loop.allocator, [][]const u8{test_tmp_dir, "file.txt"}); | |
| 1340 | 1340 | defer loop.allocator.free(file_path); |
| 1341 | 1341 | |
| 1342 | 1342 | const contents = |
std/os/child_process.zig+1-1| ... | ... | @@ -597,7 +597,7 @@ pub const ChildProcess = struct { |
| 597 | 597 | |
| 598 | 598 | var it = mem.tokenize(PATH, ";"); |
| 599 | 599 | while (it.next()) |search_path| { |
| 600 | const joined_path = try os.path.join(self.allocator, search_path, app_name); | |
| 600 | const joined_path = try os.path.join(self.allocator, [][]const u8{ search_path, app_name }); | |
| 601 | 601 | defer self.allocator.free(joined_path); |
| 602 | 602 | |
| 603 | 603 | const joined_path_w = try unicode.utf8ToUtf16LeWithNull(self.allocator, joined_path); |
std/os/get_app_data_dir.zig+3-3| ... | ... | @@ -30,7 +30,7 @@ pub fn getAppDataDir(allocator: *mem.Allocator, appname: []const u8) GetAppDataD |
| 30 | 30 | error.OutOfMemory => return error.OutOfMemory, |
| 31 | 31 | }; |
| 32 | 32 | defer allocator.free(global_dir); |
| 33 | return os.path.join(allocator, global_dir, appname); | |
| 33 | return os.path.join(allocator, [][]const u8{global_dir, appname}); | |
| 34 | 34 | }, |
| 35 | 35 | os.windows.E_OUTOFMEMORY => return error.OutOfMemory, |
| 36 | 36 | else => return error.AppDataDirUnavailable, |
| ... | ... | @@ -41,14 +41,14 @@ pub fn getAppDataDir(allocator: *mem.Allocator, appname: []const u8) GetAppDataD |
| 41 | 41 | // TODO look in /etc/passwd |
| 42 | 42 | return error.AppDataDirUnavailable; |
| 43 | 43 | }; |
| 44 | return os.path.join(allocator, home_dir, "Library", "Application Support", appname); | |
| 44 | return os.path.join(allocator, [][]const u8{home_dir, "Library", "Application Support", appname}); | |
| 45 | 45 | }, |
| 46 | 46 | builtin.Os.linux, builtin.Os.freebsd => { |
| 47 | 47 | const home_dir = os.getEnvPosix("HOME") orelse { |
| 48 | 48 | // TODO look in /etc/passwd |
| 49 | 49 | return error.AppDataDirUnavailable; |
| 50 | 50 | }; |
| 51 | return os.path.join(allocator, home_dir, ".local", "share", appname); | |
| 51 | return os.path.join(allocator, [][]const u8{home_dir, ".local", "share", appname}); | |
| 52 | 52 | }, |
| 53 | 53 | else => @compileError("Unsupported OS"), |
| 54 | 54 | } |
std/os/path.zig+51-28| ... | ... | @@ -35,38 +35,61 @@ pub fn isSep(byte: u8) bool { |
| 35 | 35 | |
| 36 | 36 | /// Naively combines a series of paths with the native path seperator. |
| 37 | 37 | /// Allocates memory for the result, which must be freed by the caller. |
| 38 | pub fn join(allocator: *Allocator, paths: ...) ![]u8 { | |
| 39 | if (is_windows) { | |
| 40 | return joinWindows(allocator, paths); | |
| 41 | } else { | |
| 42 | return joinPosix(allocator, paths); | |
| 38 | ||
| 39 | pub fn join(allocator: *Allocator, paths: []const []const u8) ![]u8 { | |
| 40 | assert(paths.len >= 1); | |
| 41 | var total_paths_len: usize = paths.len; // 1 sep per path | |
| 42 | { | |
| 43 | var path_i: usize = 0; | |
| 44 | while (path_i < paths.len) : (path_i += 1) { | |
| 45 | const arg = ([]const u8)(paths[path_i]); | |
| 46 | total_paths_len += arg.len; | |
| 47 | } | |
| 43 | 48 | } |
| 44 | } | |
| 45 | 49 | |
| 46 | pub fn joinWindows(allocator: *Allocator, paths: ...) ![]u8 { | |
| 47 | return mem.join(allocator, sep_windows, paths); | |
| 48 | } | |
| 50 | const buf = try allocator.alloc(u8, total_paths_len); | |
| 51 | errdefer allocator.free(buf); | |
| 52 | ||
| 53 | var buf_index: usize = 0; | |
| 54 | var path_i: usize = 0; | |
| 55 | while (true) { | |
| 56 | const arg = ([]const u8)(paths[path_i]); | |
| 57 | path_i += 1; | |
| 58 | mem.copy(u8, buf[buf_index..], arg); | |
| 59 | buf_index += arg.len; | |
| 60 | if (path_i >= paths.len) break; | |
| 61 | if (buf_index > 0 and buf[buf_index - 1] != sep) { | |
| 62 | buf[buf_index] = sep; | |
| 63 | buf_index += 1; | |
| 64 | } | |
| 65 | } | |
| 49 | 66 | |
| 50 | pub fn joinPosix(allocator: *Allocator, paths: ...) ![]u8 { | |
| 51 | return mem.join(allocator, sep_posix, paths); | |
| 67 | return allocator.shrink(u8, buf, buf_index); | |
| 52 | 68 | } |
| 53 | 69 | |
| 54 | 70 | test "os.path.join" { |
| 55 | assert(mem.eql(u8, try joinWindows(debug.global_allocator, "c:\\a\\b", "c"), "c:\\a\\b\\c")); | |
| 56 | assert(mem.eql(u8, try joinWindows(debug.global_allocator, "c:\\a\\b\\", "c"), "c:\\a\\b\\c")); | |
| 57 | ||
| 58 | assert(mem.eql(u8, try joinWindows(debug.global_allocator, "c:\\", "a", "b\\", "c"), "c:\\a\\b\\c")); | |
| 59 | assert(mem.eql(u8, try joinWindows(debug.global_allocator, "c:\\a\\", "b\\", "c"), "c:\\a\\b\\c")); | |
| 60 | ||
| 61 | assert(mem.eql(u8, try joinWindows(debug.global_allocator, "c:\\home\\andy\\dev\\zig\\build\\lib\\zig\\std", "io.zig"), "c:\\home\\andy\\dev\\zig\\build\\lib\\zig\\std\\io.zig")); | |
| 62 | ||
| 63 | assert(mem.eql(u8, try joinPosix(debug.global_allocator, "/a/b", "c"), "/a/b/c")); | |
| 64 | assert(mem.eql(u8, try joinPosix(debug.global_allocator, "/a/b/", "c"), "/a/b/c")); | |
| 65 | ||
| 66 | assert(mem.eql(u8, try joinPosix(debug.global_allocator, "/", "a", "b/", "c"), "/a/b/c")); | |
| 67 | assert(mem.eql(u8, try joinPosix(debug.global_allocator, "/a/", "b/", "c"), "/a/b/c")); | |
| 68 | ||
| 69 | assert(mem.eql(u8, try joinPosix(debug.global_allocator, "/home/andy/dev/zig/build/lib/zig/std", "io.zig"), "/home/andy/dev/zig/build/lib/zig/std/io.zig")); | |
| 71 | switch (builtin.os) { | |
| 72 | Os.windows => { | |
| 73 | assert(mem.eql(u8, try join(debug.global_allocator, [][]const u8{"c:\\a\\b", "c"}), "c:\\a\\b\\c")); | |
| 74 | assert(mem.eql(u8, try join(debug.global_allocator, [][]const u8{"c:\\a\\b\\", "c"}), "c:\\a\\b\\c")); | |
| 75 | assert(mem.eql(u8, try join(debug.global_allocator, [][]const u8{"c:\\", "a", "b\\", "c"}), "c:\\a\\b\\c")); | |
| 76 | assert(mem.eql(u8, try join(debug.global_allocator, [][]const u8{"c:\\a\\", "b\\", "c"}), "c:\\a\\b\\c")); | |
| 77 | assert(mem.eql(u8, try join( debug.global_allocator | |
| 78 | , [][]const u8{ "c:\\home\\andy\\dev\\zig\\build\\lib\\zig\\std" | |
| 79 | , "io.zig"}) | |
| 80 | , "c:\\home\\andy\\dev\\zig\\build\\lib\\zig\\std\\io.zig")); | |
| 81 | }, | |
| 82 | else => { | |
| 83 | assert(mem.eql(u8, try join(debug.global_allocator, [][]const u8{"/a/b", "c"}), "/a/b/c")); | |
| 84 | assert(mem.eql(u8, try join(debug.global_allocator, [][]const u8{"/a/b/", "c"}), "/a/b/c")); | |
| 85 | assert(mem.eql(u8, try join(debug.global_allocator, [][]const u8{"/", "a", "b/", "c"}), "/a/b/c")); | |
| 86 | assert(mem.eql(u8, try join(debug.global_allocator, [][]const u8{"/a/", "b/", "c"}), "/a/b/c")); | |
| 87 | assert(mem.eql(u8, try join( debug.global_allocator | |
| 88 | , [][]const u8{ "/home/andy/dev/zig/build/lib/zig/std" | |
| 89 | , "io.zig"}) | |
| 90 | , "/home/andy/dev/zig/build/lib/zig/std/io.zig")); | |
| 91 | } | |
| 92 | } | |
| 70 | 93 | } |
| 71 | 94 | |
| 72 | 95 | pub fn isAbsolute(path: []const u8) bool { |
| ... | ... | @@ -602,7 +625,7 @@ test "os.path.resolveWindows" { |
| 602 | 625 | const parsed_cwd = windowsParsePath(cwd); |
| 603 | 626 | { |
| 604 | 627 | const result = testResolveWindows([][]const u8{ "/usr/local", "lib\\zig\\std\\array_list.zig" }); |
| 605 | const expected = try join(debug.global_allocator, parsed_cwd.disk_designator, "usr\\local\\lib\\zig\\std\\array_list.zig"); | |
| 628 | const expected = try join(debug.global_allocator, [][]const u8{ parsed_cwd.disk_designator, "usr\\local\\lib\\zig\\std\\array_list.zig"}); | |
| 606 | 629 | if (parsed_cwd.kind == WindowsPath.Kind.Drive) { |
| 607 | 630 | expected[0] = asciiUpper(parsed_cwd.disk_designator[0]); |
| 608 | 631 | } |
| ... | ... | @@ -610,7 +633,7 @@ test "os.path.resolveWindows" { |
| 610 | 633 | } |
| 611 | 634 | { |
| 612 | 635 | const result = testResolveWindows([][]const u8{ "usr/local", "lib\\zig" }); |
| 613 | const expected = try join(debug.global_allocator, cwd, "usr\\local\\lib\\zig"); | |
| 636 | const expected = try join(debug.global_allocator, [][]const u8{ cwd, "usr\\local\\lib\\zig" }); | |
| 614 | 637 | if (parsed_cwd.kind == WindowsPath.Kind.Drive) { |
| 615 | 638 | expected[0] = asciiUpper(parsed_cwd.disk_designator[0]); |
| 616 | 639 | } |
test/cli.zig+3-3| ... | ... | @@ -29,7 +29,7 @@ pub fn main() !void { |
| 29 | 29 | }); |
| 30 | 30 | const zig_exe = try os.path.resolve(a, zig_exe_rel); |
| 31 | 31 | |
| 32 | const dir_path = try os.path.join(a, cache_root, "clitest"); | |
| 32 | const dir_path = try os.path.join(a, [][]const u8{ cache_root, "clitest" }); | |
| 33 | 33 | const TestFn = fn ([]const u8, []const u8) anyerror!void; |
| 34 | 34 | const test_fns = []TestFn{ |
| 35 | 35 | testZigInitLib, |
| ... | ... | @@ -99,8 +99,8 @@ fn testZigInitExe(zig_exe: []const u8, dir_path: []const u8) !void { |
| 99 | 99 | fn testGodboltApi(zig_exe: []const u8, dir_path: []const u8) anyerror!void { |
| 100 | 100 | if (builtin.os != builtin.Os.linux or builtin.arch != builtin.Arch.x86_64) return; |
| 101 | 101 | |
| 102 | const example_zig_path = try os.path.join(a, dir_path, "example.zig"); | |
| 103 | const example_s_path = try os.path.join(a, dir_path, "example.s"); | |
| 102 | const example_zig_path = try os.path.join(a, [][]const u8{ dir_path, "example.zig" }); | |
| 103 | const example_s_path = try os.path.join(a, [][]const u8{ dir_path, "example.s" }); | |
| 104 | 104 | |
| 105 | 105 | try std.io.writeFile(example_zig_path, |
| 106 | 106 | \\// Type your code here, or load an example. |
test/tests.zig+11-11| ... | ... | @@ -439,7 +439,7 @@ pub const CompareOutputContext = struct { |
| 439 | 439 | pub fn addCase(self: *CompareOutputContext, case: TestCase) void { |
| 440 | 440 | const b = self.b; |
| 441 | 441 | |
| 442 | const root_src = os.path.join(b.allocator, b.cache_root, case.sources.items[0].filename) catch unreachable; | |
| 442 | const root_src = os.path.join(b.allocator, [][]const u8{b.cache_root, case.sources.items[0].filename}) catch unreachable; | |
| 443 | 443 | |
| 444 | 444 | switch (case.special) { |
| 445 | 445 | Special.Asm => { |
| ... | ... | @@ -452,7 +452,7 @@ pub const CompareOutputContext = struct { |
| 452 | 452 | exe.addAssemblyFile(root_src); |
| 453 | 453 | |
| 454 | 454 | for (case.sources.toSliceConst()) |src_file| { |
| 455 | const expanded_src_path = os.path.join(b.allocator, b.cache_root, src_file.filename) catch unreachable; | |
| 455 | const expanded_src_path = os.path.join(b.allocator, [][]const u8{b.cache_root, src_file.filename}) catch unreachable; | |
| 456 | 456 | const write_src = b.addWriteFile(expanded_src_path, src_file.source); |
| 457 | 457 | exe.step.dependOn(&write_src.step); |
| 458 | 458 | } |
| ... | ... | @@ -476,7 +476,7 @@ pub const CompareOutputContext = struct { |
| 476 | 476 | } |
| 477 | 477 | |
| 478 | 478 | for (case.sources.toSliceConst()) |src_file| { |
| 479 | const expanded_src_path = os.path.join(b.allocator, b.cache_root, src_file.filename) catch unreachable; | |
| 479 | const expanded_src_path = os.path.join(b.allocator, [][]const u8{b.cache_root, src_file.filename}) catch unreachable; | |
| 480 | 480 | const write_src = b.addWriteFile(expanded_src_path, src_file.source); |
| 481 | 481 | exe.step.dependOn(&write_src.step); |
| 482 | 482 | } |
| ... | ... | @@ -499,7 +499,7 @@ pub const CompareOutputContext = struct { |
| 499 | 499 | } |
| 500 | 500 | |
| 501 | 501 | for (case.sources.toSliceConst()) |src_file| { |
| 502 | const expanded_src_path = os.path.join(b.allocator, b.cache_root, src_file.filename) catch unreachable; | |
| 502 | const expanded_src_path = os.path.join(b.allocator, [][]const u8{b.cache_root, src_file.filename}) catch unreachable; | |
| 503 | 503 | const write_src = b.addWriteFile(expanded_src_path, src_file.source); |
| 504 | 504 | exe.step.dependOn(&write_src.step); |
| 505 | 505 | } |
| ... | ... | @@ -572,8 +572,8 @@ pub const CompileErrorContext = struct { |
| 572 | 572 | const self = @fieldParentPtr(CompileCmpOutputStep, "step", step); |
| 573 | 573 | const b = self.context.b; |
| 574 | 574 | |
| 575 | const root_src = os.path.join(b.allocator, b.cache_root, self.case.sources.items[0].filename) catch unreachable; | |
| 576 | const obj_path = os.path.join(b.allocator, b.cache_root, "test.o") catch unreachable; | |
| 575 | const root_src = os.path.join(b.allocator, [][]const u8{b.cache_root, self.case.sources.items[0].filename}) catch unreachable; | |
| 576 | const obj_path = os.path.join(b.allocator, [][]const u8{b.cache_root, "test.o"}) catch unreachable; | |
| 577 | 577 | |
| 578 | 578 | var zig_args = ArrayList([]const u8).init(b.allocator); |
| 579 | 579 | zig_args.append(b.zig_exe) catch unreachable; |
| ... | ... | @@ -721,7 +721,7 @@ pub const CompileErrorContext = struct { |
| 721 | 721 | self.step.dependOn(&compile_and_cmp_errors.step); |
| 722 | 722 | |
| 723 | 723 | for (case.sources.toSliceConst()) |src_file| { |
| 724 | const expanded_src_path = os.path.join(b.allocator, b.cache_root, src_file.filename) catch unreachable; | |
| 724 | const expanded_src_path = os.path.join(b.allocator, [][]const u8{b.cache_root, src_file.filename}) catch unreachable; | |
| 725 | 725 | const write_src = b.addWriteFile(expanded_src_path, src_file.source); |
| 726 | 726 | compile_and_cmp_errors.step.dependOn(&write_src.step); |
| 727 | 727 | } |
| ... | ... | @@ -852,7 +852,7 @@ pub const TranslateCContext = struct { |
| 852 | 852 | const self = @fieldParentPtr(TranslateCCmpOutputStep, "step", step); |
| 853 | 853 | const b = self.context.b; |
| 854 | 854 | |
| 855 | const root_src = os.path.join(b.allocator, b.cache_root, self.case.sources.items[0].filename) catch unreachable; | |
| 855 | const root_src = os.path.join(b.allocator, [][]const u8{b.cache_root, self.case.sources.items[0].filename}) catch unreachable; | |
| 856 | 856 | |
| 857 | 857 | var zig_args = ArrayList([]const u8).init(b.allocator); |
| 858 | 858 | zig_args.append(b.zig_exe) catch unreachable; |
| ... | ... | @@ -986,7 +986,7 @@ pub const TranslateCContext = struct { |
| 986 | 986 | self.step.dependOn(&translate_c_and_cmp.step); |
| 987 | 987 | |
| 988 | 988 | for (case.sources.toSliceConst()) |src_file| { |
| 989 | const expanded_src_path = os.path.join(b.allocator, b.cache_root, src_file.filename) catch unreachable; | |
| 989 | const expanded_src_path = os.path.join(b.allocator, [][]const u8{b.cache_root, src_file.filename}) catch unreachable; | |
| 990 | 990 | const write_src = b.addWriteFile(expanded_src_path, src_file.source); |
| 991 | 991 | translate_c_and_cmp.step.dependOn(&write_src.step); |
| 992 | 992 | } |
| ... | ... | @@ -1101,7 +1101,7 @@ pub const GenHContext = struct { |
| 1101 | 1101 | |
| 1102 | 1102 | pub fn addCase(self: *GenHContext, case: *const TestCase) void { |
| 1103 | 1103 | const b = self.b; |
| 1104 | const root_src = os.path.join(b.allocator, b.cache_root, case.sources.items[0].filename) catch unreachable; | |
| 1104 | const root_src = os.path.join(b.allocator, [][]const u8{b.cache_root, case.sources.items[0].filename}) catch unreachable; | |
| 1105 | 1105 | |
| 1106 | 1106 | const mode = builtin.Mode.Debug; |
| 1107 | 1107 | const annotated_case_name = fmt.allocPrint(self.b.allocator, "gen-h {} ({})", case.name, @tagName(mode)) catch unreachable; |
| ... | ... | @@ -1113,7 +1113,7 @@ pub const GenHContext = struct { |
| 1113 | 1113 | obj.setBuildMode(mode); |
| 1114 | 1114 | |
| 1115 | 1115 | for (case.sources.toSliceConst()) |src_file| { |
| 1116 | const expanded_src_path = os.path.join(b.allocator, b.cache_root, src_file.filename) catch unreachable; | |
| 1116 | const expanded_src_path = os.path.join(b.allocator, [][]const u8{b.cache_root, src_file.filename}) catch unreachable; | |
| 1117 | 1117 | const write_src = b.addWriteFile(expanded_src_path, src_file.source); |
| 1118 | 1118 | obj.step.dependOn(&write_src.step); |
| 1119 | 1119 | } |