Add traslateC to build; Renable examples
This commit is contained in:
parent
b3cce75768
commit
aa3cec841c
68
build.zig
68
build.zig
|
|
@ -572,6 +572,24 @@ pub const PlatformBackend = enum {
|
||||||
android,
|
android,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fn translateCMod(
|
||||||
|
comptime header: []const u8,
|
||||||
|
b: *std.Build,
|
||||||
|
target: std.Build.ResolvedTarget,
|
||||||
|
optimize: std.builtin.OptimizeMode,
|
||||||
|
raylib: *std.Build.Step.Compile,
|
||||||
|
) void {
|
||||||
|
const c = b.addTranslateC(.{
|
||||||
|
.root_source_file = b.path("src/" ++ header ++ ".h"),
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
.link_libc = true,
|
||||||
|
});
|
||||||
|
const c_mod = c.createModule();
|
||||||
|
c_mod.linkLibrary(raylib);
|
||||||
|
b.modules.put(b.graph.arena, header, c_mod) catch @panic("OOM");
|
||||||
|
}
|
||||||
|
|
||||||
pub 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(.{});
|
||||||
|
|
@ -585,15 +603,20 @@ pub fn build(b: *std.Build) !void {
|
||||||
|
|
||||||
b.installArtifact(lib);
|
b.installArtifact(lib);
|
||||||
|
|
||||||
//const examples = b.step("examples", "Build/Install all examples");
|
translateCMod("raylib", b, target, optimize, lib);
|
||||||
//examples.dependOn(try addExamples("audio", b, target, optimize, lib));
|
translateCMod("rcamera", b, target, optimize, lib);
|
||||||
//examples.dependOn(try addExamples("core", b, target, optimize, lib));
|
translateCMod("raymath", b, target, optimize, lib);
|
||||||
//examples.dependOn(try addExamples("models", b, target, optimize, lib));
|
translateCMod("rlgl", b, target, optimize, lib);
|
||||||
//examples.dependOn(try addExamples("others", b, target, optimize, lib));
|
|
||||||
//examples.dependOn(try addExamples("shaders", b, target, optimize, lib));
|
const examples = b.step("examples", "build/install all examples");
|
||||||
//examples.dependOn(try addExamples("shapes", b, target, optimize, lib));
|
examples.dependOn(try addExamples("core", b, target, optimize, lib));
|
||||||
//examples.dependOn(try addExamples("text", b, target, optimize, lib));
|
examples.dependOn(try addExamples("audio", b, target, optimize, lib));
|
||||||
//examples.dependOn(try addExamples("textures", b, target, optimize, lib));
|
examples.dependOn(try addExamples("models", b, target, optimize, lib));
|
||||||
|
examples.dependOn(try addExamples("others", b, target, optimize, lib));
|
||||||
|
examples.dependOn(try addExamples("shaders", b, target, optimize, lib));
|
||||||
|
examples.dependOn(try addExamples("shapes", b, target, optimize, lib));
|
||||||
|
examples.dependOn(try addExamples("text", b, target, optimize, lib));
|
||||||
|
examples.dependOn(try addExamples("textures", b, target, optimize, lib));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn addExamples(
|
fn addExamples(
|
||||||
|
|
@ -612,13 +635,16 @@ fn addExamples(
|
||||||
var iter = dir.iterate();
|
var iter = dir.iterate();
|
||||||
while (try iter.next(b.graph.io)) |entry| {
|
while (try iter.next(b.graph.io)) |entry| {
|
||||||
if (entry.kind != .file) continue;
|
if (entry.kind != .file) continue;
|
||||||
const extension_idx = std.mem.lastIndexOf(u8, entry.name, ".c") orelse continue;
|
|
||||||
const name = entry.name[0..extension_idx];
|
const filetype = std.fs.path.extension(entry.name);
|
||||||
const filename = try std.fmt.allocPrint(b.allocator, "{s}.c", .{name});
|
if (!std.mem.eql(u8, filetype, ".c")) continue;
|
||||||
const path = b.pathJoin(&.{ module_subpath, filename });
|
|
||||||
|
const filename = std.fs.path.stem(entry.name);
|
||||||
|
|
||||||
|
const path = b.pathJoin(&.{ module_subpath, entry.name });
|
||||||
|
|
||||||
// zig's mingw headers do not include pthread.h
|
// zig's mingw headers do not include pthread.h
|
||||||
if (std.mem.eql(u8, "core_loading_thread", name) and target.result.os.tag == .windows) continue;
|
if (std.mem.eql(u8, "core_loading_thread", filename) and target.result.os.tag == .windows) continue;
|
||||||
|
|
||||||
const exe_mod = b.createModule(.{
|
const exe_mod = b.createModule(.{
|
||||||
.target = target,
|
.target = target,
|
||||||
|
|
@ -627,20 +653,20 @@ fn addExamples(
|
||||||
exe_mod.addCSourceFile(.{ .file = b.path(path), .flags = &.{} });
|
exe_mod.addCSourceFile(.{ .file = b.path(path), .flags = &.{} });
|
||||||
exe_mod.linkLibrary(raylib);
|
exe_mod.linkLibrary(raylib);
|
||||||
|
|
||||||
const run_step = b.step(name, name);
|
const run_step = b.step(filename, filename);
|
||||||
|
|
||||||
if (target.result.os.tag == .emscripten) {
|
if (target.result.os.tag == .emscripten) {
|
||||||
const wasm = b.addLibrary(.{
|
const wasm = b.addLibrary(.{
|
||||||
.name = name,
|
.name = filename,
|
||||||
.linkage = .static,
|
.linkage = .static,
|
||||||
.root_module = exe_mod,
|
.root_module = exe_mod,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (std.mem.eql(u8, name, "rlgl_standalone")) {
|
if (std.mem.eql(u8, filename, "rlgl_standalone")) {
|
||||||
exe_mod.addIncludePath(b.path("src"));
|
exe_mod.addIncludePath(b.path("src"));
|
||||||
exe_mod.addIncludePath(b.path("src/external/glfw/include"));
|
exe_mod.addIncludePath(b.path("src/external/glfw/include"));
|
||||||
}
|
}
|
||||||
if (std.mem.eql(u8, name, "raylib_opengl_interop")) {
|
if (std.mem.eql(u8, filename, "raylib_opengl_interop")) {
|
||||||
exe_mod.addIncludePath(b.path("src/external"));
|
exe_mod.addIncludePath(b.path("src/external"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -675,14 +701,14 @@ fn addExamples(
|
||||||
} else {
|
} else {
|
||||||
// special examples that test using these external dependencies directly
|
// special examples that test using these external dependencies directly
|
||||||
// alongside raylib
|
// alongside raylib
|
||||||
if (std.mem.eql(u8, name, "rlgl_standalone")) {
|
if (std.mem.eql(u8, filename, "rlgl_standalone")) {
|
||||||
exe_mod.addIncludePath(b.path("src"));
|
exe_mod.addIncludePath(b.path("src"));
|
||||||
exe_mod.addIncludePath(b.path("src/external/glfw/include"));
|
exe_mod.addIncludePath(b.path("src/external/glfw/include"));
|
||||||
if (!hasCSource(raylib.root_module, "rglfw.c")) {
|
if (!hasCSource(raylib.root_module, "rglfw.c")) {
|
||||||
exe_mod.addCSourceFile(.{ .file = b.path("src/rglfw.c"), .flags = &.{} });
|
exe_mod.addCSourceFile(.{ .file = b.path("src/rglfw.c"), .flags = &.{} });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (std.mem.eql(u8, name, "raylib_opengl_interop")) {
|
if (std.mem.eql(u8, filename, "raylib_opengl_interop")) {
|
||||||
exe_mod.addIncludePath(b.path("src/external"));
|
exe_mod.addIncludePath(b.path("src/external"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -719,7 +745,7 @@ fn addExamples(
|
||||||
}
|
}
|
||||||
|
|
||||||
const exe = b.addExecutable(.{
|
const exe = b.addExecutable(.{
|
||||||
.name = name,
|
.name = filename,
|
||||||
.root_module = exe_mod,
|
.root_module = exe_mod,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user