mirror of
https://github.com/Not-Nik/raylib-zig.git
synced 2025-09-09 12:07:27 +00:00
[build] Only cache raygui impl (#170)
This commit is contained in:
parent
a420751c0d
commit
2f773da6b3
19
build.zig
19
build.zig
@ -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,10 +145,8 @@ 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 {
|
||||||
if (b.modules.contains("raylib")) {
|
if (b.modules.contains("raylib")) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user