mirror of
https://github.com/raylib-zig/raylib-zig.git
synced 2025-12-06 14:23:10 +00:00
Update to Zig 0.12.0 and raylib 5.1-dev
This commit is contained in:
parent
6eeb304ff3
commit
19f054bec5
@ -92,9 +92,9 @@ Now add the modules and artifact to your target as you would normally:
|
|||||||
|
|
||||||
```zig
|
```zig
|
||||||
exe.linkLibrary(raylib_artifact);
|
exe.linkLibrary(raylib_artifact);
|
||||||
exe.addModule("raylib", raylib);
|
exe.root_module.addImport("raylib", raylib);
|
||||||
exe.addModule("raylib-math", raylib_math);
|
exe.root_module.addImport("raylib-math", raylib_math);
|
||||||
exe.addModule("rlgl", rlgl);
|
exe.root_module.addImport("rlgl", rlgl);
|
||||||
```
|
```
|
||||||
|
|
||||||
If you additionally want to support Web as a platform with emscripten, you will need `emcc.zig`. Refer to raylib-zig's project template on how to use it
|
If you additionally want to support Web as a platform with emscripten, you will need `emcc.zig`. Refer to raylib-zig's project template on how to use it
|
||||||
|
|||||||
46
build.zig
46
build.zig
@ -13,12 +13,12 @@ const Program = struct {
|
|||||||
fn link(
|
fn link(
|
||||||
b: *std.Build,
|
b: *std.Build,
|
||||||
exe: *std.Build.Step.Compile,
|
exe: *std.Build.Step.Compile,
|
||||||
target: std.zig.CrossTarget,
|
target: std.Build.ResolvedTarget,
|
||||||
optimize: std.builtin.Mode,
|
optimize: std.builtin.Mode,
|
||||||
) void {
|
) void {
|
||||||
const lib = getRaylib(b, target, optimize);
|
const lib = getRaylib(b, target.query, optimize);
|
||||||
|
|
||||||
const target_os = exe.target.toTarget().os.tag;
|
const target_os = exe.rootModuleTarget().os.tag;
|
||||||
switch (target_os) {
|
switch (target_os) {
|
||||||
.windows => {
|
.windows => {
|
||||||
exe.linkSystemLibrary("winmm");
|
exe.linkSystemLibrary("winmm");
|
||||||
@ -60,7 +60,7 @@ fn link(
|
|||||||
exe.linkLibrary(lib);
|
exe.linkLibrary(lib);
|
||||||
}
|
}
|
||||||
|
|
||||||
var _raylib_lib_cache: ?*std.build.Step.Compile = null;
|
var _raylib_lib_cache: ?*std.Build.Step.Compile = null;
|
||||||
fn getRaylib(
|
fn getRaylib(
|
||||||
b: *std.Build,
|
b: *std.Build,
|
||||||
target: std.zig.CrossTarget,
|
target: std.zig.CrossTarget,
|
||||||
@ -83,15 +83,15 @@ fn getModule(b: *std.Build) *std.Build.Module {
|
|||||||
if (b.modules.contains("raylib")) {
|
if (b.modules.contains("raylib")) {
|
||||||
return b.modules.get("raylib").?;
|
return b.modules.get("raylib").?;
|
||||||
}
|
}
|
||||||
return b.addModule("raylib", .{ .source_file = .{ .path = "lib/raylib.zig" } });
|
return b.addModule("raylib", .{ .root_source_file = b.path("lib/raylib.zig")});
|
||||||
}
|
}
|
||||||
|
|
||||||
const math = struct {
|
const math = struct {
|
||||||
fn getModule(b: *std.Build) *std.Build.Module {
|
fn getModule(b: *std.Build) *std.Build.Module {
|
||||||
const raylib = rl.getModule(b);
|
const raylib = rl.getModule(b);
|
||||||
return b.addModule("raylib-math", .{
|
return b.addModule("raylib-math", .{
|
||||||
.source_file = .{ .path = "lib/raymath.zig" },
|
.root_source_file = b.path("lib/raymath.zig"),
|
||||||
.dependencies = &.{.{ .name = "raylib-zig", .module = raylib }},
|
.imports = &.{.{ .name = "raylib-zig", .module = raylib }},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -100,13 +100,13 @@ const gl = struct {
|
|||||||
fn getModule(b: *std.Build) *std.Build.Module {
|
fn getModule(b: *std.Build) *std.Build.Module {
|
||||||
const raylib = rl.getModule(b);
|
const raylib = rl.getModule(b);
|
||||||
return b.addModule("rlgl", .{
|
return b.addModule("rlgl", .{
|
||||||
.source_file = .{ .path = "lib/rlgl.zig" },
|
.root_source_file = b.path("lib/rlgl.zig"),
|
||||||
.dependencies = &.{.{ .name = "raylib-zig", .module = raylib }},
|
.imports = &.{.{ .name = "raylib-zig", .module = raylib }},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
fn build(b: *std.Build) !void {
|
pub fn build(b: *std.Build) !void {
|
||||||
const target = b.standardTargetOptions(.{});
|
const target = b.standardTargetOptions(.{});
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
|
|
||||||
@ -190,24 +190,24 @@ fn build(b: *std.Build) !void {
|
|||||||
const rlgl = rl.gl.getModule(b);
|
const rlgl = rl.gl.getModule(b);
|
||||||
|
|
||||||
const raylib_test = b.addTest(.{
|
const raylib_test = b.addTest(.{
|
||||||
.root_source_file = .{ .path = "lib/raylib.zig" },
|
.root_source_file = b.path("lib/raylib.zig"),
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
|
|
||||||
const raylib_math_test = b.addTest(.{
|
const raylib_math_test = b.addTest(.{
|
||||||
.root_source_file = .{ .path = "lib/raymath.zig" },
|
.root_source_file = b.path("lib/raymath.zig"),
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
raylib_math_test.addModule("raylib-zig", raylib);
|
raylib_math_test.root_module.addImport("raylib-zig", raylib);
|
||||||
|
|
||||||
const rlgl_test = b.addTest(.{
|
const rlgl_test = b.addTest(.{
|
||||||
.root_source_file = .{ .path = "lib/rlgl.zig" },
|
.root_source_file = b.path("lib/rlgl.zig"),
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
rlgl_test.addModule("raylib-zig", raylib);
|
rlgl_test.root_module.addImport("raylib-zig", raylib);
|
||||||
|
|
||||||
const test_step = b.step("test", "Check for library compilation errors");
|
const test_step = b.step("test", "Check for library compilation errors");
|
||||||
test_step.dependOn(&raylib_test.step);
|
test_step.dependOn(&raylib_test.step);
|
||||||
@ -215,12 +215,12 @@ fn build(b: *std.Build) !void {
|
|||||||
test_step.dependOn(&rlgl_test.step);
|
test_step.dependOn(&rlgl_test.step);
|
||||||
|
|
||||||
for (examples) |ex| {
|
for (examples) |ex| {
|
||||||
if (target.getOsTag() == .emscripten) {
|
if (target.query.os_tag == .emscripten) {
|
||||||
const exe_lib = emcc.compileForEmscripten(b, ex.name, ex.path, target, optimize);
|
const exe_lib = emcc.compileForEmscripten(b, ex.name, ex.path, target, optimize);
|
||||||
exe_lib.addModule("raylib", raylib);
|
exe_lib.root_module.addImport("raylib", raylib);
|
||||||
exe_lib.addModule("raylib-math", raylib_math);
|
exe_lib.root_module.addImport("raylib-math", raylib_math);
|
||||||
exe_lib.addModule("rlgl", rlgl);
|
exe_lib.root_module.addImport("rlgl", rlgl);
|
||||||
const raylib_lib = getRaylib(b, target, optimize);
|
const raylib_lib = getRaylib(b, target.query, optimize);
|
||||||
|
|
||||||
// Note that raylib itself isn't actually added to the exe_lib
|
// Note that raylib itself isn't actually added to the exe_lib
|
||||||
// output file, so it also needs to be linked with emscripten.
|
// output file, so it also needs to be linked with emscripten.
|
||||||
@ -241,9 +241,9 @@ fn build(b: *std.Build) !void {
|
|||||||
.target = target,
|
.target = target,
|
||||||
});
|
});
|
||||||
rl.link(b, exe, target, optimize);
|
rl.link(b, exe, target, optimize);
|
||||||
exe.addModule("raylib", raylib);
|
exe.root_module.addImport("raylib", raylib);
|
||||||
exe.addModule("raylib-math", raylib_math);
|
exe.root_module.addImport("raylib-math", raylib_math);
|
||||||
exe.addModule("rlgl", rlgl);
|
exe.root_module.addImport("rlgl", rlgl);
|
||||||
const run_cmd = b.addRunArtifact(exe);
|
const run_cmd = b.addRunArtifact(exe);
|
||||||
const run_step = b.step(ex.name, ex.desc);
|
const run_step = b.step(ex.name, ex.desc);
|
||||||
run_step.dependOn(&run_cmd.step);
|
run_step.dependOn(&run_cmd.step);
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
.{
|
.{
|
||||||
.name = "raylib-zig",
|
.name = "raylib-zig",
|
||||||
.version = "5.0.0",
|
.version = "5.1.0",
|
||||||
.dependencies = .{
|
.dependencies = .{
|
||||||
.raylib = .{
|
.raylib = .{
|
||||||
.url = "https://github.com/raysan5/raylib/archive/5.0.tar.gz",
|
.url = "https://github.com/raysan5/raylib/archive/e47ebec66134800e734710038ea4e5f070f3ef06.tar.gz",
|
||||||
.hash = "1220c28847ca8e8756734ae84355802b764c9d9cf4de057dbc6fc2b15c56e726f27b",
|
.hash = "12208edb6d35c0aa5f57262014b02392c6ccfd0685a8eff1d961b42a612d3418fa89",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
.minimum_zig_version = "0.11.0",
|
.minimum_zig_version = "0.12.0",
|
||||||
.paths = .{ "lib/raylib.zig", "lib/raylib-ext.zig", "lib/raymath.zig", "lib/raymath-ext.zig", "lib/rlgl.zig", "lib/rlgl-ext.zig" },
|
.paths = .{ "lib/raylib.zig", "lib/raylib-ext.zig", "lib/raymath.zig", "lib/raymath-ext.zig", "lib/rlgl.zig", "lib/rlgl-ext.zig" },
|
||||||
}
|
}
|
||||||
|
|||||||
6
emcc.zig
6
emcc.zig
@ -29,7 +29,7 @@ pub fn compileForEmscripten(
|
|||||||
b: *std.Build,
|
b: *std.Build,
|
||||||
name: []const u8,
|
name: []const u8,
|
||||||
root_source_file: []const u8,
|
root_source_file: []const u8,
|
||||||
target: std.zig.CrossTarget,
|
target: std.Build.ResolvedTarget,
|
||||||
optimize: std.builtin.Mode,
|
optimize: std.builtin.Mode,
|
||||||
) *std.Build.Step.Compile {
|
) *std.Build.Step.Compile {
|
||||||
// TODO: It might be a good idea to create a custom compile step, that does
|
// TODO: It might be a good idea to create a custom compile step, that does
|
||||||
@ -37,13 +37,13 @@ pub fn compileForEmscripten(
|
|||||||
// the make function of the step. However it might also be a bad idea since
|
// the make function of the step. However it might also be a bad idea since
|
||||||
// it messes with the build system itself.
|
// it messes with the build system itself.
|
||||||
|
|
||||||
const new_target = updateTargetForWeb(target);
|
//const new_target = updateTargetForWeb(target);
|
||||||
|
|
||||||
// The project is built as a library and linked later.
|
// The project is built as a library and linked later.
|
||||||
const exe_lib = b.addStaticLibrary(.{
|
const exe_lib = b.addStaticLibrary(.{
|
||||||
.name = name,
|
.name = name,
|
||||||
.root_source_file = .{ .path = root_source_file },
|
.root_source_file = .{ .path = root_source_file },
|
||||||
.target = new_target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -26,12 +26,12 @@ pub fn build(b: *std.Build) !void {
|
|||||||
const raylib_artifact = raylib_dep.artifact("raylib");
|
const raylib_artifact = raylib_dep.artifact("raylib");
|
||||||
|
|
||||||
//web exports are completely separate
|
//web exports are completely separate
|
||||||
if (target.getOsTag() == .emscripten) {
|
if (target.query.os_tag == .emscripten) {
|
||||||
const exe_lib = emcc.compileForEmscripten(b, "'$PROJECT_NAME'", "src/main.zig", target, optimize);
|
const exe_lib = emcc.compileForEmscripten(b, "'$PROJECT_NAME'", "src/main.zig", target, optimize);
|
||||||
|
|
||||||
exe_lib.linkLibrary(raylib_artifact);
|
exe_lib.linkLibrary(raylib_artifact);
|
||||||
exe_lib.addModule("raylib", raylib);
|
exe_lib.root_module.addImport("raylib", raylib);
|
||||||
exe_lib.addModule("raylib-math", raylib_math);
|
exe_lib.root_module.addImport("raylib-math", raylib_math);
|
||||||
|
|
||||||
// Note that raylib itself is not actually added to the exe_lib output file, so it also needs to be linked with emscripten.
|
// Note that raylib itself is not actually added to the exe_lib output file, so it also needs to be linked with emscripten.
|
||||||
const link_step = try emcc.linkWithEmscripten(b, &[_]*std.Build.Step.Compile{ exe_lib, raylib_artifact });
|
const link_step = try emcc.linkWithEmscripten(b, &[_]*std.Build.Step.Compile{ exe_lib, raylib_artifact });
|
||||||
@ -47,8 +47,8 @@ pub fn build(b: *std.Build) !void {
|
|||||||
const exe = b.addExecutable(.{ .name = "'$PROJECT_NAME'", .root_source_file = .{ .path = "src/main.zig" }, .optimize = optimize, .target = target });
|
const exe = b.addExecutable(.{ .name = "'$PROJECT_NAME'", .root_source_file = .{ .path = "src/main.zig" }, .optimize = optimize, .target = target });
|
||||||
|
|
||||||
exe.linkLibrary(raylib_artifact);
|
exe.linkLibrary(raylib_artifact);
|
||||||
exe.addModule("raylib", raylib);
|
exe.root_module.addImport("raylib", raylib);
|
||||||
exe.addModule("raylib-math", raylib_math);
|
exe.root_module.addImport("raylib-math", raylib_math);
|
||||||
|
|
||||||
const run_cmd = b.addRunArtifact(exe);
|
const run_cmd = b.addRunArtifact(exe);
|
||||||
const run_step = b.step("run", "Run '$PROJECT_NAME'");
|
const run_step = b.step("run", "Run '$PROJECT_NAME'");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user