ona/build.zig

120 lines
2.4 KiB
Zig
Raw Normal View History

const builtin = @import("builtin");
2023-04-19 01:25:35 +02:00
const std = @import("std");
pub fn build(b: *std.Build) !void {
2023-07-10 02:10:56 +02:00
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const sokol_dependency = b.dependency("sokol", .{
.target = target,
.optimize = optimize,
});
const coral_module = b.createModule(.{
.root_source_file = b.path("src/coral/coral.zig"),
2023-04-19 01:25:35 +02:00
});
const flow_module = b.createModule(.{
.root_source_file = b.path("src/flow/flow.zig"),
.imports = &.{
.{
.name = "coral",
.module = coral_module,
},
}
});
2023-04-19 01:25:35 +02:00
const ona_module = b.createModule(.{
.root_source_file = b.path("src/ona/ona.zig"),
2023-04-19 01:25:35 +02:00
.imports = &.{
.{
.name = "sokol",
.module = sokol_dependency.module("sokol"),
},
.{
.name = "coral",
.module = coral_module,
},
.{
.name = "flow",
.module = flow_module,
},
},
});
ona_module.addIncludePath(b.path("ext/"));
ona_module.linkLibrary(build_spirvcross(b, target, optimize));
2023-07-11 00:44:27 +02:00
b.step("test", "Run unit tests").dependOn(create: {
const tests = b.addTest(.{
2024-05-29 20:52:46 +02:00
.root_source_file = b.path("src/main.zig"),
2023-07-11 00:44:27 +02:00
.target = target,
.optimize = optimize,
});
break: create &tests.step;
2023-07-10 02:10:56 +02:00
});
b.installArtifact(add: {
const exe = b.addExecutable(.{
.name = "main",
.root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
});
exe.root_module.addImport("ona", ona_module);
exe.root_module.addImport("coral", coral_module);
exe.linkLibC();
exe.linkSystemLibrary("SDL2");
break: add exe;
});
}
fn build_spirvcross(
b: *std.Build,
target: std.Build.ResolvedTarget,
mode: std.builtin.OptimizeMode,
) *std.Build.Step.Compile {
const dir = "ext/spirv-cross/";
const sources = [_][]const u8{
"spirv_cross.cpp",
"spirv_parser.cpp",
"spirv_cross_parsed_ir.cpp",
"spirv_cfg.cpp",
"spirv_glsl.cpp",
"spirv_msl.cpp",
"spirv_hlsl.cpp",
"spirv_reflect.cpp",
"spirv_cross_util.cpp",
"spirv_cross_c.cpp",
};
const lib = b.addStaticLibrary(.{
.name = "spirvcross",
.target = target,
.optimize = mode,
});
switch (lib.rootModuleTarget().abi) {
.msvc => lib.linkLibC(),
else => lib.linkLibCpp(),
}
inline for (sources) |src| {
lib.addCSourceFile(.{
.file = b.path(dir ++ src),
.flags = &.{"-fstrict-aliasing", "-DSPIRV_CROSS_C_API_GLSL", "-DSPIRV_CROSS_C_API_HLSL", "-DSPIRV_CROSS_C_API_MSL"},
});
}
return lib;
2023-04-19 01:25:35 +02:00
}