Skip to content

Commit 6cb8d82

Browse files
authored
Merge pull request #2 from dwclake/main
Add build.zig.zon and update build.zig for the latest zig master
2 parents 54c645b + ba28031 commit 6cb8d82

File tree

4 files changed

+50
-52
lines changed

4 files changed

+50
-52
lines changed

build.zig

+45-52
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,67 @@
11
const std = @import("std");
22

3-
pub fn build(b: *std.Build) void {
4-
const target = b.standardTargetOptions(.{});
3+
pub fn build(b: *std.Build) !void {
4+
const target_query: std.Target.Query = .{};
5+
const target = b.resolveTargetQuery(target_query);
56
const optimize = b.standardOptimizeOption(.{});
67

7-
_ = b.addModule("llvm", .{
8-
.source_file = .{
9-
.path = "src/llvm.zig",
10-
},
8+
const lib = b.addStaticLibrary(.{
9+
.name = "llvm",
10+
.root_source_file = .{.path = "src/llvm-zig.zig"},
11+
.target = target,
12+
.optimize = optimize
1113
});
14+
15+
lib.defineCMacro("_FILE_OFFSET_BITS", "64");
16+
lib.defineCMacro("__STDC_CONSTANT_MACROS", null);
17+
lib.defineCMacro("__STDC_FORMAT_MACROS", null);
18+
lib.defineCMacro("__STDC_LIMIT_MACROS", null);
19+
lib.linkSystemLibrary("z");
20+
lib.linkLibC();
21+
switch (target.result.os.tag) {
22+
.linux => lib.linkSystemLibrary("LLVM-17"), // Ubuntu
23+
.macos => {
24+
lib.addLibraryPath(.{ .path = "/usr/local/opt/llvm/lib" });
25+
lib.linkSystemLibrary("LLVM");
26+
},
27+
else => lib.linkSystemLibrary("LLVM"),
28+
}
29+
30+
b.installArtifact(lib);
31+
32+
_ = try b.modules.put("llvm", &lib.root_module);
33+
1234
_ = b.addModule("clang", .{
13-
.source_file = .{
35+
.root_source_file = .{
1436
.path = "src/clang.zig",
1537
},
1638
});
1739

18-
buildTests(b);
19-
2040
const examples = b.option(bool, "Examples", "Build all examples [default: false]") orelse false;
21-
2241
if (examples) {
23-
buildExample(b, .{
42+
buildExample(b, target, .{
2443
.filepath = "examples/sum_module.zig",
25-
.target = target,
44+
.target = target.query,
2645
.optimize = optimize,
2746
});
28-
buildExample(b, .{
29-
.filepath = "examples/fatorial_module.zig",
30-
.target = target,
47+
buildExample(b, target, .{
48+
.filepath = "examples/factorial_module.zig",
49+
.target = target.query,
3150
.optimize = optimize,
3251
});
3352
}
53+
54+
buildTests(b, target);
3455
}
3556

36-
fn buildExample(b: *std.Build, i: BuildInfo) void {
57+
fn buildExample(b: *std.Build, target: std.Build.ResolvedTarget, i: BuildInfo) void {
3758
const exe = b.addExecutable(.{
3859
.name = i.filename(),
3960
.root_source_file = .{ .path = i.filepath },
40-
.target = i.target,
61+
.target = target,
4162
.optimize = i.optimize,
4263
});
43-
exe.defineCMacro("_FILE_OFFSET_BITS", "64");
44-
exe.defineCMacro("__STDC_CONSTANT_MACROS", null);
45-
exe.defineCMacro("__STDC_FORMAT_MACROS", null);
46-
exe.defineCMacro("__STDC_LIMIT_MACROS", null);
47-
exe.addModule("llvm", b.modules.get("llvm").?);
48-
exe.linkSystemLibrary("z");
49-
switch (i.target.getOsTag()) {
50-
.linux => exe.linkSystemLibrary("LLVM-17"), // Ubuntu
51-
.macos => {
52-
exe.addLibraryPath(.{ .path = "/usr/local/opt/llvm/lib" });
53-
exe.linkSystemLibrary("LLVM");
54-
},
55-
else => exe.linkSystemLibrary("LLVM"),
56-
}
57-
exe.linkLibC();
64+
exe.root_module.addImport("llvm", b.modules.get("llvm").?);
5865

5966
b.installArtifact(exe);
6067

@@ -81,20 +88,20 @@ const BuildInfo = struct {
8188
}
8289
};
8390

84-
fn buildTests(b: *std.Build) void {
91+
fn buildTests(b: *std.Build, target: std.Build.ResolvedTarget) void {
8592
const llvm_tests = b.addTest(.{
86-
.root_source_file = .{ .path = "src/llvm.zig" },
87-
.target = .{},
93+
.root_source_file = .{ .path = "src/llvm-zig.zig" },
94+
.target = target,
8895
.optimize = .Debug,
8996
.name = "llvm-tests",
9097
});
9198
const clang_tests = b.addTest(.{
9299
.root_source_file = .{ .path = "src/clang.zig" },
93-
.target = .{},
100+
.target = target,
94101
.optimize = .Debug,
95102
.name = "clang-tests",
96103
});
97-
switch (clang_tests.target.getOsTag()) {
104+
switch (target.result.os.tag) {
98105
.linux => clang_tests.linkSystemLibrary("clang-17"), // Ubuntu
99106
.macos => {
100107
clang_tests.addLibraryPath(.{ .path = "/usr/local/opt/llvm/lib" });
@@ -104,21 +111,7 @@ fn buildTests(b: *std.Build) void {
104111
}
105112
clang_tests.linkLibC();
106113

107-
llvm_tests.defineCMacro("_FILE_OFFSET_BITS", "64");
108-
llvm_tests.defineCMacro("__STDC_CONSTANT_MACROS", null);
109-
llvm_tests.defineCMacro("__STDC_FORMAT_MACROS", null);
110-
llvm_tests.defineCMacro("__STDC_LIMIT_MACROS", null);
111-
llvm_tests.addModule("llvm", b.modules.get("llvm").?);
112-
llvm_tests.linkSystemLibrary("z");
113-
switch (llvm_tests.target.getOsTag()) {
114-
.linux => llvm_tests.linkSystemLibrary("LLVM-17"), // Ubuntu
115-
.macos => {
116-
llvm_tests.addLibraryPath(.{ .path = "/usr/local/opt/llvm/lib" });
117-
llvm_tests.linkSystemLibrary("LLVM");
118-
},
119-
else => llvm_tests.linkSystemLibrary("LLVM"),
120-
}
121-
llvm_tests.linkLibC();
114+
llvm_tests.root_module.addImport("llvm", b.modules.get("llvm").?);
122115

123116
// TODO: CI build LLVM tests with clang
124117
// llvm_tests.step.dependOn(&clang_tests.step);

build.zig.zon

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.{
2+
.name = "llvm-zig",
3+
.version = "0.0.0",
4+
.paths = .{"."},
5+
}
File renamed without changes.

src/llvm.zig src/llvm-zig.zig

File renamed without changes.

0 commit comments

Comments
 (0)