Skip to content

Commit 5bc9feb

Browse files
committed
organize std and make import relative to current file
closes #216
1 parent 7ce753a commit 5bc9feb

30 files changed

+67
-72
lines changed

CMakeLists.txt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -201,41 +201,41 @@ install(TARGETS zig DESTINATION bin)
201201

202202
install(FILES ${C_HEADERS} DESTINATION ${C_HEADERS_DEST})
203203

204-
install(FILES "${CMAKE_SOURCE_DIR}/std/bootstrap.zig" DESTINATION "${ZIG_STD_DEST}")
205-
install(FILES "${CMAKE_SOURCE_DIR}/std/build.zig" DESTINATION "${ZIG_STD_DEST}")
206-
install(FILES "${CMAKE_SOURCE_DIR}/std/builtin.zig" DESTINATION "${ZIG_STD_DEST}")
207204
install(FILES "${CMAKE_SOURCE_DIR}/std/c/darwin.zig" DESTINATION "${ZIG_STD_DEST}/c")
208205
install(FILES "${CMAKE_SOURCE_DIR}/std/c/index.zig" DESTINATION "${ZIG_STD_DEST}/c")
209206
install(FILES "${CMAKE_SOURCE_DIR}/std/c/linux.zig" DESTINATION "${ZIG_STD_DEST}/c")
210207
install(FILES "${CMAKE_SOURCE_DIR}/std/c/windows.zig" DESTINATION "${ZIG_STD_DEST}/c")
211-
install(FILES "${CMAKE_SOURCE_DIR}/std/compiler_rt.zig" DESTINATION "${ZIG_STD_DEST}")
212208
install(FILES "${CMAKE_SOURCE_DIR}/std/cstr.zig" DESTINATION "${ZIG_STD_DEST}")
213-
install(FILES "${CMAKE_SOURCE_DIR}/std/darwin.zig" DESTINATION "${ZIG_STD_DEST}")
214-
install(FILES "${CMAKE_SOURCE_DIR}/std/darwin_x86_64.zig" DESTINATION "${ZIG_STD_DEST}")
215209
install(FILES "${CMAKE_SOURCE_DIR}/std/debug.zig" DESTINATION "${ZIG_STD_DEST}")
216210
install(FILES "${CMAKE_SOURCE_DIR}/std/dwarf.zig" DESTINATION "${ZIG_STD_DEST}")
217211
install(FILES "${CMAKE_SOURCE_DIR}/std/elf.zig" DESTINATION "${ZIG_STD_DEST}")
218212
install(FILES "${CMAKE_SOURCE_DIR}/std/empty.zig" DESTINATION "${ZIG_STD_DEST}")
219213
install(FILES "${CMAKE_SOURCE_DIR}/std/endian.zig" DESTINATION "${ZIG_STD_DEST}")
220-
install(FILES "${CMAKE_SOURCE_DIR}/std/errno.zig" DESTINATION "${ZIG_STD_DEST}")
221214
install(FILES "${CMAKE_SOURCE_DIR}/std/fmt.zig" DESTINATION "${ZIG_STD_DEST}")
222215
install(FILES "${CMAKE_SOURCE_DIR}/std/hash_map.zig" DESTINATION "${ZIG_STD_DEST}")
223216
install(FILES "${CMAKE_SOURCE_DIR}/std/index.zig" DESTINATION "${ZIG_STD_DEST}")
224217
install(FILES "${CMAKE_SOURCE_DIR}/std/io.zig" DESTINATION "${ZIG_STD_DEST}")
225-
install(FILES "${CMAKE_SOURCE_DIR}/std/linux.zig" DESTINATION "${ZIG_STD_DEST}")
226-
install(FILES "${CMAKE_SOURCE_DIR}/std/linux_i386.zig" DESTINATION "${ZIG_STD_DEST}")
227-
install(FILES "${CMAKE_SOURCE_DIR}/std/linux_x86_64.zig" DESTINATION "${ZIG_STD_DEST}")
228218
install(FILES "${CMAKE_SOURCE_DIR}/std/list.zig" DESTINATION "${ZIG_STD_DEST}")
229219
install(FILES "${CMAKE_SOURCE_DIR}/std/math.zig" DESTINATION "${ZIG_STD_DEST}")
230220
install(FILES "${CMAKE_SOURCE_DIR}/std/mem.zig" DESTINATION "${ZIG_STD_DEST}")
231221
install(FILES "${CMAKE_SOURCE_DIR}/std/net.zig" DESTINATION "${ZIG_STD_DEST}")
232-
install(FILES "${CMAKE_SOURCE_DIR}/std/os.zig" DESTINATION "${ZIG_STD_DEST}")
233-
install(FILES "${CMAKE_SOURCE_DIR}/std/panic.zig" DESTINATION "${ZIG_STD_DEST}")
222+
install(FILES "${CMAKE_SOURCE_DIR}/std/os/darwin.zig" DESTINATION "${ZIG_STD_DEST}/os")
223+
install(FILES "${CMAKE_SOURCE_DIR}/std/os/darwin_x86_64.zig" DESTINATION "${ZIG_STD_DEST}/os")
224+
install(FILES "${CMAKE_SOURCE_DIR}/std/os/errno.zig" DESTINATION "${ZIG_STD_DEST}/os")
225+
install(FILES "${CMAKE_SOURCE_DIR}/std/os/index.zig" DESTINATION "${ZIG_STD_DEST}/os")
226+
install(FILES "${CMAKE_SOURCE_DIR}/std/os/linux.zig" DESTINATION "${ZIG_STD_DEST}/os")
227+
install(FILES "${CMAKE_SOURCE_DIR}/std/os/linux_i386.zig" DESTINATION "${ZIG_STD_DEST}/os")
228+
install(FILES "${CMAKE_SOURCE_DIR}/std/os/linux_x86_64.zig" DESTINATION "${ZIG_STD_DEST}/os")
229+
install(FILES "${CMAKE_SOURCE_DIR}/std/os/windows.zig" DESTINATION "${ZIG_STD_DEST}/os")
234230
install(FILES "${CMAKE_SOURCE_DIR}/std/rand.zig" DESTINATION "${ZIG_STD_DEST}")
235231
install(FILES "${CMAKE_SOURCE_DIR}/std/rand_test.zig" DESTINATION "${ZIG_STD_DEST}")
236232
install(FILES "${CMAKE_SOURCE_DIR}/std/sort.zig" DESTINATION "${ZIG_STD_DEST}")
237-
install(FILES "${CMAKE_SOURCE_DIR}/std/test_runner.zig" DESTINATION "${ZIG_STD_DEST}")
238-
install(FILES "${CMAKE_SOURCE_DIR}/std/windows.zig" DESTINATION "${ZIG_STD_DEST}")
233+
install(FILES "${CMAKE_SOURCE_DIR}/std/special/bootstrap.zig" DESTINATION "${ZIG_STD_DEST}/special")
234+
install(FILES "${CMAKE_SOURCE_DIR}/std/special/builtin.zig" DESTINATION "${ZIG_STD_DEST}/special")
235+
install(FILES "${CMAKE_SOURCE_DIR}/std/special/compiler_rt.zig" DESTINATION "${ZIG_STD_DEST}/special")
236+
install(FILES "${CMAKE_SOURCE_DIR}/std/special/panic.zig" DESTINATION "${ZIG_STD_DEST}/special")
237+
install(FILES "${CMAKE_SOURCE_DIR}/std/special/test_runner.zig" DESTINATION "${ZIG_STD_DEST}/special")
238+
install(FILES "${CMAKE_SOURCE_DIR}/std/target.zig" DESTINATION "${ZIG_STD_DEST}")
239239

240240
add_executable(run_tests ${TEST_SOURCES})
241241
target_link_libraries(run_tests)

src/all_types.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,6 +1362,7 @@ struct CodeGen {
13621362
Buf *libc_static_lib_dir;
13631363
Buf *libc_include_dir;
13641364
Buf *zig_std_dir;
1365+
Buf *zig_std_special_dir;
13651366
Buf *dynamic_linker;
13661367
Buf *ar_path;
13671368
Buf triple_str;

src/analyze.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2874,11 +2874,8 @@ void preview_use_decl(CodeGen *g, AstNode *node) {
28742874
ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package,
28752875
Buf *abs_full_path, Buf *src_dirname, Buf *src_basename, Buf *source_code)
28762876
{
2877-
Buf *full_path = buf_alloc();
2878-
os_path_join(src_dirname, src_basename, full_path);
2879-
28802877
if (g->verbose) {
2881-
fprintf(stderr, "\nOriginal Source (%s):\n", buf_ptr(full_path));
2878+
fprintf(stderr, "\nOriginal Source (%s):\n", buf_ptr(abs_full_path));
28822879
fprintf(stderr, "----------------\n");
28832880
fprintf(stderr, "%s\n", buf_ptr(source_code));
28842881

@@ -2890,7 +2887,7 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package,
28902887
tokenize(source_code, &tokenization);
28912888

28922889
if (tokenization.err) {
2893-
ErrorMsg *err = err_msg_create_with_line(full_path, tokenization.err_line, tokenization.err_column,
2890+
ErrorMsg *err = err_msg_create_with_line(abs_full_path, tokenization.err_line, tokenization.err_column,
28942891
source_code, tokenization.line_offsets, tokenization.err);
28952892

28962893
print_err_msg(err, g->err_color);
@@ -2908,7 +2905,7 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package,
29082905
import_entry->package = package;
29092906
import_entry->source_code = source_code;
29102907
import_entry->line_offsets = tokenization.line_offsets;
2911-
import_entry->path = full_path;
2908+
import_entry->path = abs_full_path;
29122909

29132910
import_entry->root = ast_parse(source_code, tokenization.tokens, import_entry, g->err_color,
29142911
&g->next_node_index);

src/codegen.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ CodeGen *codegen_create(Buf *root_source_dir, const ZigTarget *target) {
8080
g->root_package->package_table.put(buf_create_from_str("std"), g->std_package);
8181
g->zig_std_dir = buf_create_from_str(ZIG_STD_DIR);
8282

83+
g->zig_std_special_dir = buf_alloc();
84+
os_path_join(g->zig_std_dir, buf_sprintf("special"), g->zig_std_special_dir);
85+
8386

8487
if (target) {
8588
// cross compiling, so we can't rely on all the configured stuff since
@@ -4237,10 +4240,9 @@ void codegen_parseh(CodeGen *g, Buf *src_dirname, Buf *src_basename, Buf *source
42374240
}
42384241

42394242
static ImportTableEntry *add_special_code(CodeGen *g, PackageTableEntry *package, const char *basename) {
4240-
Buf *std_dir = g->zig_std_dir;
42414243
Buf *code_basename = buf_create_from_str(basename);
42424244
Buf path_to_code_src = BUF_INIT;
4243-
os_path_join(std_dir, code_basename, &path_to_code_src);
4245+
os_path_join(g->zig_std_special_dir, code_basename, &path_to_code_src);
42444246
Buf *abs_full_path = buf_alloc();
42454247
int err;
42464248
if ((err = os_path_real(&path_to_code_src, abs_full_path))) {
@@ -4251,18 +4253,18 @@ static ImportTableEntry *add_special_code(CodeGen *g, PackageTableEntry *package
42514253
zig_panic("unable to open '%s': %s", buf_ptr(&path_to_code_src), err_str(err));
42524254
}
42534255

4254-
return add_source_file(g, package, abs_full_path, std_dir, code_basename, import_code);
4256+
return add_source_file(g, package, abs_full_path, g->zig_std_special_dir, code_basename, import_code);
42554257
}
42564258

42574259
static PackageTableEntry *create_bootstrap_pkg(CodeGen *g) {
4258-
PackageTableEntry *package = new_package(buf_ptr(g->zig_std_dir), "");
4260+
PackageTableEntry *package = new_package(buf_ptr(g->zig_std_special_dir), "");
42594261
package->package_table.put(buf_create_from_str("std"), g->std_package);
42604262
package->package_table.put(buf_create_from_str("@root"), g->root_package);
42614263
return package;
42624264
}
42634265

42644266
static PackageTableEntry *create_panic_pkg(CodeGen *g) {
4265-
PackageTableEntry *package = new_package(buf_ptr(g->zig_std_dir), "");
4267+
PackageTableEntry *package = new_package(buf_ptr(g->zig_std_special_dir), "");
42664268
package->package_table.put(buf_create_from_str("std"), g->std_package);
42674269
return package;
42684270
}

src/ir.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10385,7 +10385,10 @@ static TypeTableEntry *ir_analyze_instruction_import(IrAnalyze *ira, IrInstructi
1038510385
// try it as a filename
1038610386
target_package = import->package;
1038710387
import_target_path = import_target_str;
10388-
search_dir = &import->package->root_src_dir;
10388+
10389+
// search relative to importing file
10390+
search_dir = buf_alloc();
10391+
os_path_dirname(import->path, search_dir);
1038910392
}
1039010393

1039110394
Buf full_path = BUF_INIT;

src/link.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,9 @@ static const char *get_o_file_extension(CodeGen *g) {
4242

4343
static Buf *build_o(CodeGen *parent_gen, const char *oname) {
4444
Buf *source_basename = buf_sprintf("%s.zig", oname);
45-
Buf *std_dir_path = parent_gen->zig_std_dir;
4645

4746
ZigTarget *child_target = parent_gen->is_native_target ? nullptr : &parent_gen->zig_target;
48-
CodeGen *child_gen = codegen_create(std_dir_path, child_target);
47+
CodeGen *child_gen = codegen_create(parent_gen->zig_std_special_dir, child_target);
4948
child_gen->link_libc = parent_gen->link_libc;
5049

5150
child_gen->link_libs.resize(parent_gen->link_libs.length);
@@ -70,13 +69,14 @@ static Buf *build_o(CodeGen *parent_gen, const char *oname) {
7069
codegen_set_mios_version_min(child_gen, parent_gen->mios_version_min);
7170

7271
Buf *full_path = buf_alloc();
73-
os_path_join(std_dir_path, source_basename, full_path);
72+
os_path_join(parent_gen->zig_std_special_dir, source_basename, full_path);
73+
7474
Buf source_code = BUF_INIT;
7575
if (os_fetch_file_path(full_path, &source_code)) {
7676
zig_panic("unable to fetch file: %s\n", buf_ptr(full_path));
7777
}
7878

79-
codegen_add_root_code(child_gen, std_dir_path, source_basename, &source_code);
79+
codegen_add_root_code(child_gen, parent_gen->zig_std_special_dir, source_basename, &source_code);
8080
const char *o_ext = get_o_file_extension(child_gen);
8181
Buf *o_out = buf_sprintf("%s%s", oname, o_ext);
8282
codegen_link(child_gen, buf_ptr(o_out));

std/c/index.zig

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
pub use @import("errno.zig");
1+
pub use @import("../os/errno.zig");
22

33
pub use switch(@compileVar("os")) {
4-
Os.linux => @import("c/linux.zig"),
5-
Os.windows => @import("c/windows.zig"),
6-
Os.darwin, Os.macosx, Os.ios => @import("c/darwin.zig"),
4+
Os.linux => @import("linux.zig"),
5+
Os.windows => @import("windows.zig"),
6+
Os.darwin, Os.macosx, Os.ios => @import("darwin.zig"),
77
else => empty_import,
88
};
99

1010
pub extern fn abort() -> noreturn;
1111

1212

13-
const empty_import = @import("empty.zig");
13+
const empty_import = @import("../empty.zig");

std/debug.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const mem = @import("mem.zig");
22
const io = @import("io.zig");
3-
const os = @import("os.zig");
3+
const os = @import("os/index.zig");
44
const elf = @import("elf.zig");
55
const DW = @import("dwarf.zig");
66
const List = @import("list.zig").List;

std/index.zig

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
1-
pub const build = @import("build.zig");
1+
pub const c = @import("c/index.zig");
22
pub const cstr = @import("cstr.zig");
33
pub const debug = @import("debug.zig");
4+
pub const empty_import = @import("empty.zig");
45
pub const fmt = @import("fmt.zig");
56
pub const hash_map = @import("hash_map.zig");
67
pub const io = @import("io.zig");
78
pub const list = @import("list.zig");
89
pub const math = @import("math.zig");
910
pub const mem = @import("mem.zig");
1011
pub const net = @import("net.zig");
11-
pub const os = @import("os.zig");
12+
pub const os = @import("os/index.zig");
1213
pub const rand = @import("rand.zig");
1314
pub const sort = @import("sort.zig");
14-
pub const linux = switch(@compileVar("os")) {
15-
Os.linux => @import("linux.zig"),
16-
else => empty_import,
17-
};
18-
pub const darwin = switch(@compileVar("os")) {
19-
Os.darwin => @import("darwin.zig"),
20-
else => empty_import,
21-
};
22-
pub const empty_import = @import("empty.zig");
15+
pub const target = @import("target.zig");

std/io.zig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
const system = switch(@compileVar("os")) {
2-
Os.linux => @import("linux.zig"),
3-
Os.darwin => @import("darwin.zig"),
2+
Os.linux => @import("os/linux.zig"),
3+
Os.darwin => @import("os/darwin.zig"),
44
else => @compileError("Unsupported OS"),
55
};
66

7-
const errno = @import("errno.zig");
7+
const errno = @import("os/errno.zig");
88
const math = @import("math.zig");
99
const debug = @import("debug.zig");
1010
const assert = debug.assert;
11-
const os = @import("os.zig");
11+
const os = @import("os/index.zig");
1212
const mem = @import("mem.zig");
1313
const Buffer0 = @import("cstr.zig").Buffer0;
1414
const fmt = @import("fmt.zig");

std/mem.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const assert = @import("debug.zig").assert;
22
const math = @import("math.zig");
3-
const os = @import("os.zig");
3+
const os = @import("os/index.zig");
44
const io = @import("io.zig");
55

66
pub const Cmp = math.Cmp;

std/net.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const linux = @import("linux.zig");
2-
const errno = @import("errno.zig");
1+
const linux = @import("os/linux.zig");
2+
const errno = @import("os/errno.zig");
33
const assert = @import("debug.zig").assert;
44
const endian = @import("endian.zig");
55

File renamed without changes.
File renamed without changes.
File renamed without changes.

std/os.zig renamed to std/os/index.zig

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
1-
const posix = switch(@compileVar("os")) {
2-
Os.linux => @import("linux.zig"),
3-
Os.darwin, Os.macosx, Os.ios => @import("darwin.zig"),
1+
pub const windows = @import("windows.zig");
2+
pub const darwin = @import("darwin.zig");
3+
pub const linux = @import("linux.zig");
4+
pub const posix = switch(@compileVar("os")) {
5+
Os.linux => linux,
6+
Os.darwin, Os.macosx, Os.ios => darwin,
7+
Os.windows => windows,
48
else => @compileError("Unsupported OS"),
59
};
6-
const windows = @import("windows.zig");
10+
711
const errno = @import("errno.zig");
8-
const linking_libc = @import("build.zig").linking_libc;
9-
const c = @import("c/index.zig");
12+
const linking_libc = @import("../target.zig").linking_libc;
13+
const c = @import("../c/index.zig");
1014

1115
error Unexpected;
1216

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

std/bootstrap.zig renamed to std/special/bootstrap.zig

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,10 @@
44
const root = @import("@root");
55
const std = @import("std");
66

7-
const want_main_symbol = std.build.linking_libc;
7+
const want_main_symbol = std.target.linking_libc;
88
const want_start_symbol = !want_main_symbol;
99

10-
const exit = switch(@compileVar("os")) {
11-
Os.linux => std.linux.exit,
12-
Os.darwin => std.darwin.exit,
13-
else => @compileError("Unsupported OS"),
14-
};
10+
const exit = std.os.posix.exit;
1511

1612
var argc: usize = undefined;
1713
var argv: &&u8 = undefined;
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

test/cases/import.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const assert = @import("std").debug.assert;
2-
const a_namespace = @import("cases/import/a_namespace.zig");
2+
const a_namespace = @import("import/a_namespace.zig");
33

44
test "callFnViaNamespaceLookup" {
55
assert(a_namespace.foo() == 1234);

test/cases/namespace_depends_on_compile_var/index.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ test "namespaceDependsOnCompileVar" {
88
}
99
}
1010
const some_namespace = switch(@compileVar("os")) {
11-
Os.linux => @import("cases/namespace_depends_on_compile_var/a.zig"),
12-
else => @import("cases/namespace_depends_on_compile_var/b.zig"),
11+
Os.linux => @import("a.zig"),
12+
else => @import("b.zig"),
1313
};

test/cases/pub_enum/index.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const other = @import("cases/pub_enum/other.zig");
1+
const other = @import("other.zig");
22
const assert = @import("std").debug.assert;
33

44
test "pubEnum" {

test/run_tests.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,8 +1254,7 @@ export fn entry() -> usize { @sizeOf(@typeOf(seventh_fib_number)) }
12541254
const resource = @embedFile("bogus.txt");
12551255
12561256
export fn entry() -> usize { @sizeOf(@typeOf(resource)) }
1257-
)SOURCE", 1, ".tmp_source.zig:2:29: error: unable to find './bogus.txt'");
1258-
1257+
)SOURCE", 2, ".tmp_source.zig:2:29: error: unable to find '", "/bogus.txt'");
12591258

12601259
add_compile_fail_case("non-const expression in struct literal outside function", R"SOURCE(
12611260
const Foo = struct {

0 commit comments

Comments
 (0)