[build] Only cache raygui impl (#170)

This commit is contained in:
Not-Nik 2024-11-08 15:35:57 +01:00
parent a420751c0d
commit 2f773da6b3
No known key found for this signature in database
GPG Key ID: E95F679E3CDD9784

View File

@ -97,9 +97,16 @@ fn link(
exe.linkLibrary(lib); exe.linkLibrary(lib);
} }
var _raylib_lib_cache: ?*std.Build.Step.Compile = null; var _raygui_impl_cache: ?*std.Build.Step.WriteFile = null;
var _raygui_impl_path_cache: ?std.Build.LazyPath = null;
fn getRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) *std.Build.Step.Compile { fn getRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) *std.Build.Step.Compile {
if (_raylib_lib_cache) |lib| return lib else { if (_raygui_impl_cache == null) {
var gen_step = b.addWriteFiles();
_raygui_impl_cache = gen_step;
_raygui_impl_path_cache = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n");
}
const raylib = b.dependency("raylib", .{ const raylib = b.dependency("raylib", .{
.target = target, .target = target,
.optimize = optimize, .optimize = optimize,
@ -121,12 +128,10 @@ fn getRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.buil
.optimize = optimize, .optimize = optimize,
}); });
var gen_step = b.addWriteFiles(); lib.step.dependOn(&(_raygui_impl_cache orelse unreachable).step);
lib.step.dependOn(&gen_step.step);
const raygui_c_path = gen_step.add("raygui.c", "#define RAYGUI_IMPLEMENTATION\n#include \"raygui.h\"\n");
lib.addCSourceFile(.{ lib.addCSourceFile(.{
.file = raygui_c_path, .file = (_raygui_impl_path_cache orelse unreachable),
.flags = &[_][]const u8{ .flags = &[_][]const u8{
"-std=gnu99", "-std=gnu99",
"-D_GNU_SOURCE", "-D_GNU_SOURCE",
@ -140,9 +145,7 @@ fn getRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.buil
lib.installHeader(raygui_dep.path("src/raygui.h"), "raygui.h"); lib.installHeader(raygui_dep.path("src/raygui.h"), "raygui.h");
b.installArtifact(lib); b.installArtifact(lib);
_raylib_lib_cache = lib;
return lib; return lib;
}
} }
fn getModule(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *std.Build.Module { fn getModule(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *std.Build.Module {