Skip to content

Commit db9d615

Browse files
authored
Allow defining zopengl export-linkage at build time (#33)
1 parent e3f8563 commit db9d615

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

build.zig

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,18 @@ pub fn build(b: *std.Build) void {
77
.preferred_optimize_mode = .ReleaseSafe,
88
});
99

10-
_ = b.addModule("root", .{
10+
const default_export_linkage: std.builtin.GlobalLinkage =
11+
if (target.result.os.tag == .emscripten) .weak else .strong;
12+
const export_linkage = b.option(std.builtin.GlobalLinkage, "export_linkage", "Global linkage for exported OpenGL C symbols") orelse
13+
default_export_linkage;
14+
15+
const build_options = b.addOptions();
16+
build_options.addOption(std.meta.Tag(std.builtin.GlobalLinkage), "linkage", @intFromEnum(export_linkage));
17+
18+
const root = b.addModule("root", .{
1119
.root_source_file = b.path("src/zopengl.zig"),
1220
});
21+
root.addOptions("build_options", build_options);
1322

1423
{
1524
const test_step = b.step("test", "Run zopengl tests");
@@ -22,6 +31,7 @@ pub fn build(b: *std.Build) void {
2231
.optimize = optimize,
2332
}),
2433
});
34+
tests.root_module.addOptions("build_options", build_options);
2535
b.installArtifact(tests);
2636

2737
test_step.dependOn(&b.addRunArtifact(tests).step);
@@ -36,5 +46,6 @@ pub fn build(b: *std.Build) void {
3646
.optimize = optimize,
3747
}),
3848
});
49+
lib.root_module.addOptions("build_options", build_options);
3950
_ = b.installArtifact(lib);
4051
}

src/zopengl.zig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const std = @import("std");
22
const assert = std.debug.assert;
33

44
const options = @import("zopengl_options");
5+
const build_options = @import("build_options");
56

67
comptime {
78
@setEvalBranchQuota(20_000);
@@ -1371,7 +1372,7 @@ fn getProcAddress(comptime T: type, proc_name: [:0]const u8) !T {
13711372
// C exports
13721373
//
13731374
//--------------------------------------------------------------------------------------------------
1374-
const linkage: @import("std").builtin.GlobalLinkage = .strong;
1375+
const linkage: std.builtin.GlobalLinkage = @enumFromInt(build_options.linkage);
13751376
comptime {
13761377
//----------------------------------------------------------------------------------------------
13771378
// OpenGL 1.0 (Core Profile)

0 commit comments

Comments
 (0)