mirror of
https://github.com/Not-Nik/raylib-zig.git
synced 2025-09-09 12:07:27 +00:00
emcc: Look for emcc binary in PATH if no sysroot was specified
This commit is contained in:
parent
f26b2ab084
commit
d7d9e41863
32
emcc.zig
32
emcc.zig
@ -6,10 +6,6 @@ const builtin = @import("builtin");
|
|||||||
const emccOutputDir = "zig-out" ++ std.fs.path.sep_str ++ "htmlout" ++ std.fs.path.sep_str;
|
const emccOutputDir = "zig-out" ++ std.fs.path.sep_str ++ "htmlout" ++ std.fs.path.sep_str;
|
||||||
const emccOutputFile = "index.html";
|
const emccOutputFile = "index.html";
|
||||||
pub fn emscriptenRunStep(b: *std.Build) !*std.Build.Step.Run {
|
pub fn emscriptenRunStep(b: *std.Build) !*std.Build.Step.Run {
|
||||||
// Find emrun.
|
|
||||||
if (b.sysroot == null) {
|
|
||||||
@panic("Pass '--sysroot \"[path to emsdk installation]/upstream/emscripten\"'");
|
|
||||||
}
|
|
||||||
// If compiling on windows , use emrun.bat.
|
// If compiling on windows , use emrun.bat.
|
||||||
const emrunExe = switch (builtin.os.tag) {
|
const emrunExe = switch (builtin.os.tag) {
|
||||||
.windows => "emrun.bat",
|
.windows => "emrun.bat",
|
||||||
@ -18,7 +14,15 @@ pub fn emscriptenRunStep(b: *std.Build) !*std.Build.Step.Run {
|
|||||||
const emrun_run_arg = try b.allocator.alloc(u8, b.sysroot.?.len + emrunExe.len + 1);
|
const emrun_run_arg = try b.allocator.alloc(u8, b.sysroot.?.len + emrunExe.len + 1);
|
||||||
defer b.allocator.free(emrun_run_arg);
|
defer b.allocator.free(emrun_run_arg);
|
||||||
|
|
||||||
_ = try std.fmt.bufPrint(emrun_run_arg, "{s}" ++ std.fs.path.sep_str ++ "{s}", .{ b.sysroot.?, emrunExe });
|
if (b.sysroot == null) {
|
||||||
|
emrun_run_arg = emrunExe;
|
||||||
|
} else {
|
||||||
|
emrun_run_arg = try std.fmt.bufPrint(
|
||||||
|
emrun_run_arg,
|
||||||
|
"{s}" ++ std.fs.path.sep_str ++ "{s}",
|
||||||
|
.{ b.sysroot.?, emrunExe }
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const run_cmd = b.addSystemCommand(&[_][]const u8{ emrun_run_arg, emccOutputDir ++ emccOutputFile });
|
const run_cmd = b.addSystemCommand(&[_][]const u8{ emrun_run_arg, emccOutputDir ++ emccOutputFile });
|
||||||
return run_cmd;
|
return run_cmd;
|
||||||
@ -73,10 +77,6 @@ pub fn linkWithEmscripten(
|
|||||||
b: *std.Build,
|
b: *std.Build,
|
||||||
itemsToLink: []const *std.Build.Step.Compile,
|
itemsToLink: []const *std.Build.Step.Compile,
|
||||||
) !*std.Build.Step.Run {
|
) !*std.Build.Step.Run {
|
||||||
// Raylib uses --sysroot in order to find emscripten, so do the same here.
|
|
||||||
if (b.sysroot == null) {
|
|
||||||
@panic("Pass '--sysroot \"[path to emsdk installation]/upstream/emscripten\"'");
|
|
||||||
}
|
|
||||||
const emccExe = switch (builtin.os.tag) {
|
const emccExe = switch (builtin.os.tag) {
|
||||||
.windows => "emcc.bat",
|
.windows => "emcc.bat",
|
||||||
else => "emcc",
|
else => "emcc",
|
||||||
@ -84,11 +84,15 @@ pub fn linkWithEmscripten(
|
|||||||
var emcc_run_arg = try b.allocator.alloc(u8, b.sysroot.?.len + emccExe.len + 1);
|
var emcc_run_arg = try b.allocator.alloc(u8, b.sysroot.?.len + emccExe.len + 1);
|
||||||
defer b.allocator.free(emcc_run_arg);
|
defer b.allocator.free(emcc_run_arg);
|
||||||
|
|
||||||
emcc_run_arg = try std.fmt.bufPrint(
|
if (b.sysroot == null) {
|
||||||
emcc_run_arg,
|
emcc_run_arg = emccExe;
|
||||||
"{s}" ++ std.fs.path.sep_str ++ "{s}",
|
} else {
|
||||||
.{ b.sysroot.?, emccExe },
|
emcc_run_arg = try std.fmt.bufPrint(
|
||||||
);
|
emcc_run_arg,
|
||||||
|
"{s}" ++ std.fs.path.sep_str ++ "{s}",
|
||||||
|
.{ b.sysroot.?, emccExe },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Create the output directory because emcc can't do it.
|
// Create the output directory because emcc can't do it.
|
||||||
const mkdir_command = b.addSystemCommand(&[_][]const u8{ "mkdir", "-p", emccOutputDir });
|
const mkdir_command = b.addSystemCommand(&[_][]const u8{ "mkdir", "-p", emccOutputDir });
|
||||||
|
Loading…
x
Reference in New Issue
Block a user