1
1
const builtin = @import ("builtin" );
2
+ const host_os = builtin .target .os .tag ;
3
+
2
4
const std = @import ("std" );
3
5
4
6
pub const emsdk_ver_major = "4" ;
@@ -15,7 +17,7 @@ pub fn emccPath(b: *std.Build) []const u8 {
15
17
b .dependency ("emsdk" , .{}).path ("" ).getPath (b ),
16
18
"upstream" ,
17
19
"emscripten" ,
18
- switch (builtin . target . os . tag ) {
20
+ switch (host_os ) {
19
21
.windows = > "emcc.bat" ,
20
22
else = > "emcc" ,
21
23
},
@@ -27,7 +29,7 @@ pub fn emrunPath(b: *std.Build) []const u8 {
27
29
b .dependency ("emsdk" , .{}).path ("" ).getPath (b ),
28
30
"upstream" ,
29
31
"emscripten" ,
30
- switch (builtin . target . os . tag ) {
32
+ switch (host_os ) {
31
33
.windows = > "emrun.bat" ,
32
34
else = > "emrun" ,
33
35
},
@@ -47,15 +49,15 @@ pub fn htmlPath(b: *std.Build) []const u8 {
47
49
pub fn activateEmsdkStep (b : * std.Build ) * std.Build.Step {
48
50
const emsdk_script_path = std .fs .path .join (b .allocator , &.{
49
51
b .dependency ("emsdk" , .{}).path ("" ).getPath (b ),
50
- switch (builtin . target . os . tag ) {
52
+ switch (host_os ) {
51
53
.windows = > "emsdk.bat" ,
52
54
else = > "emsdk" ,
53
55
},
54
56
}) catch unreachable ;
55
57
56
58
var emsdk_install = b .addSystemCommand (&.{ emsdk_script_path , "install" , emsdk_version });
57
59
58
- switch (builtin . target . os . tag ) {
60
+ switch (host_os ) {
59
61
.linux , .macos = > {
60
62
emsdk_install .step .dependOn (& b .addSystemCommand (&.{ "chmod" , "+x" , emsdk_script_path }).step );
61
63
},
@@ -78,7 +80,7 @@ pub fn activateEmsdkStep(b: *std.Build) *std.Build.Step {
78
80
}.make ,
79
81
});
80
82
81
- switch (builtin . target . os . tag ) {
83
+ switch (host_os ) {
82
84
.linux , .macos = > {
83
85
const chmod_emcc = b .addSystemCommand (&.{ "chmod" , "+x" , emccPath (b ) });
84
86
chmod_emcc .step .dependOn (& emsdk_activate .step );
@@ -89,12 +91,25 @@ pub fn activateEmsdkStep(b: *std.Build) *std.Build.Step {
89
91
step .dependOn (& chmod_emrun .step );
90
92
},
91
93
.windows = > {
94
+ const windows_wait_step = b .allocator .create (std .Build .Step ) catch unreachable ;
95
+ windows_wait_step .* = std .Build .Step .init (.{
96
+ .id = .custom ,
97
+ .name = "Wait for a sceond" ,
98
+ .owner = b ,
99
+ .makeFn = & struct {
100
+ fn make (_ : * std.Build.Step , _ : std.Build.Step.MakeOptions ) anyerror ! void {
101
+ std .time .sleep (std .time .ns_per_s * 1 );
102
+ }
103
+ }.make ,
104
+ });
105
+ windows_wait_step .dependOn (& emsdk_activate .step );
106
+
92
107
const takeown_emcc = b .addSystemCommand (&.{ "takeown" , "/f" , emccPath (b ) });
93
- takeown_emcc .step .dependOn (& emsdk_activate . step );
108
+ takeown_emcc .step .dependOn (windows_wait_step );
94
109
step .dependOn (& takeown_emcc .step );
95
110
96
111
const takeown_emrun = b .addSystemCommand (&.{ "takeown" , "/f" , emrunPath (b ) });
97
- takeown_emrun .step .dependOn (& emsdk_activate . step );
112
+ takeown_emrun .step .dependOn (windows_wait_step );
98
113
step .dependOn (& takeown_emrun .step );
99
114
},
100
115
else = > {},
0 commit comments