aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index d9a581b570..d30c9e3f44 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -72,6 +72,7 @@ CodeGen *codegen_create(Buf *root_source_dir, const ZigTarget *target) {
g->root_package = new_package(buf_ptr(root_source_dir), "");
g->std_package = new_package(ZIG_STD_DIR, "index.zig");
g->root_package->package_table.put(buf_create_from_str("std"), g->std_package);
+ g->zig_std_dir = buf_create_from_str(ZIG_STD_DIR);
if (target) {
@@ -165,6 +166,11 @@ void codegen_set_libc_include_dir(CodeGen *g, Buf *libc_include_dir) {
g->libc_include_dir = libc_include_dir;
}
+void codegen_set_zig_std_dir(CodeGen *g, Buf *zig_std_dir) {
+ g->zig_std_dir = zig_std_dir;
+ g->std_package->root_src_dir = *zig_std_dir;
+}
+
void codegen_set_dynamic_linker(CodeGen *g, Buf *dynamic_linker) {
g->dynamic_linker = dynamic_linker;
}
@@ -4752,7 +4758,7 @@ void codegen_render_ast(CodeGen *g, FILE *f, int indent_size) {
static ImportTableEntry *add_special_code(CodeGen *g, PackageTableEntry *package, const char *basename) {
- Buf *std_dir = buf_create_from_str(ZIG_STD_DIR);
+ Buf *std_dir = g->zig_std_dir;
Buf *code_basename = buf_create_from_str(basename);
Buf path_to_code_src = BUF_INIT;
os_path_join(std_dir, code_basename, &path_to_code_src);
@@ -4770,7 +4776,7 @@ static ImportTableEntry *add_special_code(CodeGen *g, PackageTableEntry *package
}
static PackageTableEntry *create_bootstrap_pkg(CodeGen *g) {
- PackageTableEntry *package = new_package(ZIG_STD_DIR, "");
+ PackageTableEntry *package = new_package(buf_ptr(g->zig_std_dir), "");
package->package_table.put(buf_create_from_str("std"), g->std_package);
package->package_table.put(buf_create_from_str("@root"), g->root_package);
return package;