diff --git a/build.zig b/build.zig index d4a159e5e6..e886377139 100644 --- a/build.zig +++ b/build.zig @@ -16,11 +16,12 @@ pub fn build(b: *Builder) !void { var docgen_exe = b.addExecutable("docgen", "doc/docgen.zig"); const rel_zig_exe = try os.path.relative(b.allocator, b.build_root, b.zig_exe); + const langref_out_path = os.path.join(b.allocator, b.cache_root, "langref.html") catch unreachable; var docgen_cmd = b.addCommand(null, b.env_map, [][]const u8{ docgen_exe.getOutputPath(), rel_zig_exe, "doc" ++ os.path.sep_str ++ "langref.html.in", - os.path.join(b.allocator, b.cache_root, "langref.html") catch unreachable, + langref_out_path, }); docgen_cmd.step.dependOn(&docgen_exe.step); diff --git a/src/main.cpp b/src/main.cpp index fdc34a83ae..bf6c142975 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -353,7 +353,7 @@ int main(int argc, char **argv) { size_t ver_minor = 0; size_t ver_patch = 0; bool timing_info = false; - const char *cache_dir = default_zig_cache_name; + const char *cache_dir = nullptr; CliPkg *cur_pkg = allocate(1); BuildMode build_mode = BuildModeDebug; ZigList test_exec_args = {0}; @@ -403,7 +403,7 @@ int main(int argc, char **argv) { CodeGen *g = codegen_create(build_runner_path, nullptr, OutTypeExe, BuildModeDebug, zig_lib_dir_buf); g->enable_time_report = timing_info; - buf_init_from_str(&g->cache_dir, cache_dir); + buf_init_from_str(&g->cache_dir, cache_dir ? cache_dir : default_zig_cache_name); codegen_set_out_name(g, buf_create_from_str("build")); Buf *build_file_buf = buf_create_from_str(build_file); @@ -412,8 +412,14 @@ int main(int argc, char **argv) { Buf build_file_dirname = BUF_INIT; os_path_split(&build_file_abs, &build_file_dirname, &build_file_basename); - Buf *cache_dir_buf = buf_create_from_str(cache_dir); - Buf full_cache_dir = os_path_resolve(&cache_dir_buf, 1); + + Buf full_cache_dir = BUF_INIT; + if (cache_dir == nullptr) { + os_path_join(&build_file_dirname, buf_create_from_str(default_zig_cache_name), &full_cache_dir); + } else { + Buf *cache_dir_buf = buf_create_from_str(cache_dir); + full_cache_dir = os_path_resolve(&cache_dir_buf, 1); + } args.items[1] = buf_ptr(&build_file_dirname); args.items[2] = buf_ptr(&full_cache_dir); @@ -830,7 +836,7 @@ int main(int argc, char **argv) { CodeGen *g = codegen_create(zig_root_source_file, target, out_type, build_mode, zig_lib_dir_buf); g->enable_time_report = timing_info; - buf_init_from_str(&g->cache_dir, cache_dir); + buf_init_from_str(&g->cache_dir, cache_dir ? cache_dir : default_zig_cache_name); codegen_set_out_name(g, buf_out_name); codegen_set_lib_version(g, ver_major, ver_minor, ver_patch); codegen_set_is_test(g, cmd == CmdTest);