summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorfreakmangd <[email protected]>2024-04-10 04:36:18 -0400
committerGitHub <[email protected]>2024-04-10 10:36:18 +0200
commitb3dfa2d8abff549a9a9129f7ef2462ef1261ac4d (patch)
treec9b537cb251c5da439426a676f42548512852b68 /src
parenta4819f99cbf191d132e4dacea1f0ba1574fe2a7e (diff)
downloadraylib-b3dfa2d8abff549a9a9129f7ef2462ef1261ac4d.tar.gz
raylib-b3dfa2d8abff549a9a9129f7ef2462ef1261ac4d.zip
Update to latest zig and simplify build.zig (#3905)
* update to latest zig, and don't use srcdir * preserve compatibility, simplify Child.run compatibility
Diffstat (limited to 'src')
-rw-r--r--src/build.zig107
1 files changed, 49 insertions, 58 deletions
diff --git a/src/build.zig b/src/build.zig
index 91cd9cb1..fe6365ef 100644
--- a/src/build.zig
+++ b/src/build.zig
@@ -3,8 +3,7 @@ const builtin = @import("builtin");
// This has been tested with zig version(s):
// 0.11.0
-// 0.12.0-dev.2075+f5978181e
-// 0.12.0-dev.2990+31763d28c
+// 0.12.0-dev.3580+e204a6edb
//
// Anytype is used here to preserve compatibility, in 0.12.0dev the std.zig.CrossTarget type
// was reworked into std.Target.Query and std.Build.ResolvedTarget. Using anytype allows
@@ -51,37 +50,37 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
// No GLFW required on PLATFORM_DRM
if (!options.platform_drm) {
- raylib.addIncludePath(.{ .cwd_relative = srcdir ++ "/external/glfw/include" });
+ raylib.addIncludePath(.{ .path = "src/external/glfw/include" });
}
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rcore.c"),
- try join2(gpa, srcdir, "utils.c"),
+ "src/rcore.c",
+ "src/utils.c",
}, raylib_flags_arr.items);
if (options.raudio) {
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "raudio.c"),
+ "src/raudio.c",
}, raylib_flags_arr.items);
}
if (options.rmodels) {
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rmodels.c"),
+ "src/rmodels.c",
}, raylib_flags_arr.items);
}
if (options.rshapes) {
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rshapes.c"),
+ "src/rshapes.c",
}, raylib_flags_arr.items);
}
if (options.rtext) {
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rtext.c"),
+ "src/rtext.c",
}, raylib_flags_arr.items);
}
if (options.rtextures) {
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rtextures.c"),
+ "src/rtextures.c",
}, raylib_flags_arr.items);
}
@@ -91,14 +90,14 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
if (options.raygui) {
const raygui_c_path = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n");
raylib.addCSourceFile(.{ .file = raygui_c_path, .flags = raylib_flags_arr.items });
- raylib.addIncludePath(.{ .cwd_relative = srcdir });
- raylib.addIncludePath(.{ .cwd_relative = srcdir ++ "/../../raygui/src" });
+ raylib.addIncludePath(.{ .path = "src" });
+ raylib.addIncludePath(.{ .path = "../raygui/src" });
}
switch (getOsTagVersioned(target)) {
.windows => {
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rglfw.c"),
+ "src/rglfw.c",
}, raylib_flags_arr.items);
raylib.linkSystemLibrary("winmm");
raylib.linkSystemLibrary("gdi32");
@@ -109,7 +108,7 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
.linux => {
if (!options.platform_drm) {
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rglfw.c"),
+ "src/rglfw.c",
}, raylib_flags_arr.items);
raylib.linkSystemLibrary("GL");
raylib.linkSystemLibrary("rt");
@@ -130,7 +129,7 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
raylib.linkSystemLibrary("wayland-cursor");
raylib.linkSystemLibrary("wayland-egl");
raylib.linkSystemLibrary("xkbcommon");
- raylib.addIncludePath(.{ .path = srcdir });
+ raylib.addIncludePath(.{ .path = "src" });
try waylandGenerate(gpa, "wayland.xml", "wayland-client-protocol");
try waylandGenerate(gpa, "xdg-shell.xml", "xdg-shell-client-protocol");
try waylandGenerate(gpa, "xdg-decoration-unstable-v1.xml", "xdg-decoration-unstable-v1-client-protocol");
@@ -163,7 +162,7 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
},
.freebsd, .openbsd, .netbsd, .dragonfly => {
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rglfw.c"),
+ "src/rglfw.c",
}, raylib_flags_arr.items);
raylib.linkSystemLibrary("GL");
raylib.linkSystemLibrary("rt");
@@ -182,7 +181,7 @@ pub fn addRaylib(b: *std.Build, target: anytype, optimize: std.builtin.OptimizeM
// On macos rglfw.c include Objective-C files.
try raylib_flags_arr.append("-ObjC");
addCSourceFilesVersioned(raylib, &.{
- try join2(gpa, srcdir, "rglfw.c"),
+ "src/rglfw.c",
}, raylib_flags_arr.items);
raylib.linkFramework("Foundation");
raylib.linkFramework("CoreServices");
@@ -259,24 +258,18 @@ pub fn build(b: *std.Build) !void {
const lib = try addRaylib(b, target, optimize, options);
- lib.installHeader("src/raylib.h", "raylib.h");
- lib.installHeader("src/raymath.h", "raymath.h");
- lib.installHeader("src/rlgl.h", "rlgl.h");
+ installHeaderVersioned(lib, "src/raylib.h", "raylib.h");
+ installHeaderVersioned(lib, "src/raymath.h", "raymath.h");
+ installHeaderVersioned(lib, "src/rlgl.h", "rlgl.h");
if (options.raygui) {
- lib.installHeader("../raygui/src/raygui.h", "raygui.h");
+ installHeaderVersioned(lib, "../raygui/src/raygui.h", "raygui.h");
}
b.installArtifact(lib);
}
-const srcdir = struct {
- fn getSrcDir() []const u8 {
- return std.fs.path.dirname(@src().file).?;
- }
-}.getSrcDir();
-
-const waylandDir = srcdir ++ "/external/glfw/deps/wayland";
+const waylandDir = "src/external/glfw/deps/wayland";
fn getOsTagVersioned(target: anytype) std.Target.Os.Tag {
if (comptime builtin.zig_version.minor >= 12) {
@@ -291,14 +284,11 @@ fn addCSourceFilesVersioned(
files: []const []const u8,
flags: []const []const u8,
) void {
- //- HACK(cabarger): I hate this so much!!!
if (comptime builtin.zig_version.minor >= 12) {
- for (files) |file| {
- exe.addCSourceFile(.{
- .file = .{ .path = file },
- .flags = flags,
- });
- }
+ exe.addCSourceFiles(.{
+ .files = files,
+ .flags = flags,
+ });
} else if (comptime builtin.zig_version.minor == 11) {
exe.addCSourceFiles(files, flags);
} else {
@@ -306,32 +296,33 @@ fn addCSourceFilesVersioned(
}
}
-fn waylandGenerate(allocator: std.mem.Allocator, comptime protocol: []const u8, comptime basename: []const u8) !void {
- const protocolDir = waylandDir ++ "/" ++ protocol;
- const clientHeader = srcdir ++ "/" ++ basename ++ ".h";
- const privateCode = srcdir ++ "/" ++ basename ++ "-code.h";
+fn installHeaderVersioned(
+ lib: *std.Build.Step.Compile,
+ source: []const u8,
+ dest: []const u8,
+) void {
if (comptime builtin.zig_version.minor >= 12) {
- _ = try std.process.Child.run(.{
- .allocator = allocator,
- .argv = &[_][]const u8{ "wayland-scanner", "client-header", protocolDir, clientHeader },
- });
- _ = try std.process.Child.run(.{
- .allocator = allocator,
- .argv = &[_][]const u8{ "wayland-scanner", "private-code", protocolDir, privateCode },
- });
+ lib.installHeader(.{ .path = source }, dest);
} else {
- _ = try std.process.Child.exec(.{
- .allocator = allocator,
- .argv = &[_][]const u8{ "wayland-scanner", "client-header", protocolDir, clientHeader },
- });
- _ = try std.process.Child.exec(.{
- .allocator = allocator,
- .argv = &[_][]const u8{ "wayland-scanner", "private-code", protocolDir, privateCode },
- });
+ lib.installHeader(source, dest);
}
}
-fn join2(allocator: std.mem.Allocator, path1: []const u8, path2: []const u8) ![]u8 {
- const joinedPath = try std.fs.path.join(allocator, &[_][]const u8{ path1, path2 });
- return joinedPath;
+const childRunVersioned = if (builtin.zig_version.minor >= 12)
+ std.process.Child.run
+else
+ std.process.Child.exec;
+
+fn waylandGenerate(allocator: std.mem.Allocator, comptime protocol: []const u8, comptime basename: []const u8) !void {
+ const protocolDir = waylandDir ++ "/" ++ protocol;
+ const clientHeader = "src/" ++ basename ++ ".h";
+ const privateCode = "src/" ++ basename ++ "-code.h";
+ _ = try childRunVersioned(.{
+ .allocator = allocator,
+ .argv = &[_][]const u8{ "wayland-scanner", "client-header", protocolDir, clientHeader },
+ });
+ _ = try childRunVersioned(.{
+ .allocator = allocator,
+ .argv = &[_][]const u8{ "wayland-scanner", "private-code", protocolDir, privateCode },
+ });
}