aboutsummaryrefslogtreecommitdiff
path: root/std
diff options
context:
space:
mode:
Diffstat (limited to 'std')
-rw-r--r--std/bootstrap.zig9
-rw-r--r--std/build.zig13
-rw-r--r--std/index.zig1
-rw-r--r--std/test_runner.zig2
-rw-r--r--std/test_runner_libc.zig6
-rw-r--r--std/test_runner_nolibc.zig5
6 files changed, 19 insertions, 17 deletions
diff --git a/std/bootstrap.zig b/std/bootstrap.zig
index f520834654..074f06557e 100644
--- a/std/bootstrap.zig
+++ b/std/bootstrap.zig
@@ -1,17 +1,16 @@
// This file is in a package which has the root source file exposed as "@root".
+// It is included in the compilation unit when exporting an executable.
const root = @import("@root");
const std = @import("std");
-const want_start_symbol = switch(@compileVar("os")) {
- Os.linux => true,
- else => false,
-};
-const want_main_symbol = !want_start_symbol;
+const want_main_symbol = std.build.linkingLibrary("c");
+const want_start_symbol = !want_main_symbol;
const exit = switch(@compileVar("os")) {
Os.linux => std.linux.exit,
Os.darwin => std.darwin.exit,
+ else => @compileError("Unsupported OS"),
};
var argc: usize = undefined;
diff --git a/std/build.zig b/std/build.zig
new file mode 100644
index 0000000000..a21baa387d
--- /dev/null
+++ b/std/build.zig
@@ -0,0 +1,13 @@
+const mem = @import("mem.zig");
+
+pub fn linkingLibrary(lib_name: []const u8) -> bool {
+ // TODO shouldn't need this if
+ if (@compileVar("link_libs").len != 0) {
+ for (@compileVar("link_libs")) |link_lib| {
+ if (mem.eql(u8, link_lib, lib_name)) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
diff --git a/std/index.zig b/std/index.zig
index b4a86f0f9d..0a0b9557ad 100644
--- a/std/index.zig
+++ b/std/index.zig
@@ -1,3 +1,4 @@
+pub const build = @import("build.zig");
pub const cstr = @import("cstr.zig");
pub const debug = @import("debug.zig");
pub const fmt = @import("fmt.zig");
diff --git a/std/test_runner.zig b/std/test_runner.zig
index 7aa11e523e..f494801671 100644
--- a/std/test_runner.zig
+++ b/std/test_runner.zig
@@ -7,7 +7,7 @@ const TestFn = struct {
extern var zig_test_fn_list: []TestFn;
-pub fn runTests() -> %void {
+pub fn main(args: [][]u8) -> %void {
for (zig_test_fn_list) |testFn, i| {
%%io.stderr.printf("Test {}/{} {}...", i + 1, zig_test_fn_list.len, testFn.name);
diff --git a/std/test_runner_libc.zig b/std/test_runner_libc.zig
deleted file mode 100644
index bbd4f71d8b..0000000000
--- a/std/test_runner_libc.zig
+++ /dev/null
@@ -1,6 +0,0 @@
-const test_runner = @import("test_runner.zig");
-
-export fn main(argc: c_int, argv: &&u8) -> c_int {
- test_runner.runTests() %% return -1;
- return 0;
-}
diff --git a/std/test_runner_nolibc.zig b/std/test_runner_nolibc.zig
deleted file mode 100644
index 226cbb2a5c..0000000000
--- a/std/test_runner_nolibc.zig
+++ /dev/null
@@ -1,5 +0,0 @@
-const test_runner = @import("test_runner.zig");
-
-pub fn main(args: [][]u8) -> %void {
- return test_runner.runTests();
-}