@@ -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}
0 commit comments