From 1fbd36199a8c684aa7dc3a7c6145ed40fb4bc85e Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Fri, 28 Apr 2023 15:50:24 -0700 Subject: [PATCH] mach: depend on mach-ecs and mach-earcut standalone repositories Signed-off-by: Stephen Gutekanst --- build.zig | 25 ++++++++++++++++--------- build.zig.zon | 15 +++++++++++++++ src/main.zig | 2 ++ 3 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 build.zig.zon diff --git a/build.zig b/build.zig index ed6ca350..47712ba2 100644 --- a/build.zig +++ b/build.zig @@ -31,15 +31,25 @@ const core = @import("libs/core/sdk.zig").Sdk(.{ var _module: ?*std.build.Module = null; -pub fn module(b: *std.Build) *std.build.Module { +pub fn module(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) *std.build.Module { if (_module) |m| return m; + + const ecs_dep = b.dependency("mach_ecs", .{ + .target = target, + .optimize = optimize, + }); + const earcut_dep = b.dependency("mach_earcut", .{ + .target = target, + .optimize = optimize, + }); + _module = b.createModule(.{ .source_file = .{ .path = sdkPath("/src/main.zig") }, .dependencies = &.{ .{ .name = "core", .module = core.module(b) }, - .{ .name = "ecs", .module = ecs.module(b) }, + .{ .name = "ecs", .module = ecs_dep.module("mach-ecs") }, .{ .name = "sysaudio", .module = sysaudio.module(b) }, - .{ .name = "earcut", .module = earcut.module(b) }, + .{ .name = "earcut", .module = earcut_dep.module("mach-earcut") }, }, }); return _module.?; @@ -69,7 +79,7 @@ pub fn build(b: *std.Build) !void { .optimize = optimize, .target = target, }); - app.addModule("mach", module(b)); + app.addModule("mach", module(b, optimize, target)); if (app.target.getOsTag() == .windows) app.linkLibC(); b.installArtifact(app); @@ -80,7 +90,6 @@ pub fn build(b: *std.Build) !void { const all_tests_step = b.step("test", "Run library tests"); const core_test_step = b.step("test-core", "Run Core library tests"); - const ecs_test_step = b.step("test-ecs", "Run ECS library tests"); const freetype_test_step = b.step("test-freetype", "Run Freetype library tests"); const basisu_test_step = b.step("test-basisu", "Run Basis-Universal library tests"); const sysaudio_test_step = b.step("test-sysaudio", "Run sysaudio library tests"); @@ -90,7 +99,6 @@ pub fn build(b: *std.Build) !void { core_test_step.dependOn(&(try core.testStep(b, optimize, target)).step); freetype_test_step.dependOn(&freetype.testStep(b, optimize, target).step); - ecs_test_step.dependOn(&ecs.testStep(b, optimize, target).step); basisu_test_step.dependOn(&basisu.testStep(b, optimize, target).step); sysaudio_test_step.dependOn(&sysaudio.testStep(b, optimize, target).step); model3d_test_step.dependOn(&model3d.testStep(b, optimize, target).step); @@ -98,7 +106,6 @@ pub fn build(b: *std.Build) !void { mach_test_step.dependOn(&testStep(b, optimize, target).step); all_tests_step.dependOn(core_test_step); - all_tests_step.dependOn(ecs_test_step); all_tests_step.dependOn(basisu_test_step); all_tests_step.dependOn(freetype_test_step); all_tests_step.dependOn(sysaudio_test_step); @@ -139,7 +146,7 @@ fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.C .target = target, .optimize = optimize, }); - var iter = module(b).dependencies.iterator(); + var iter = module(b, optimize, target).dependencies.iterator(); while (iter.next()) |e| { main_tests.addModule(e.key_ptr.*, e.value_ptr.*); } @@ -179,7 +186,7 @@ pub const App = struct { ) InitError!App { var deps = std.ArrayList(std.build.ModuleDependency).init(b.allocator); if (options.deps) |v| try deps.appendSlice(v); - try deps.append(.{ .name = "mach", .module = module(b) }); + try deps.append(.{ .name = "mach", .module = module(b, options.optimize, options.target) }); try deps.append(.{ .name = "sysaudio", .module = sysaudio.module(b) }); if (options.use_freetype) |_| try deps.append(.{ .name = "freetype", .module = freetype.module(b) }); diff --git a/build.zig.zon b/build.zig.zon new file mode 100644 index 00000000..452f1ab2 --- /dev/null +++ b/build.zig.zon @@ -0,0 +1,15 @@ +.{ + .name = "mach", + .version = "0.2.0", + + .dependencies = .{ + .mach_ecs = .{ + .url = "https://github.com/hexops/mach-ecs/archive/3986581a241960babe1682ac5d5132be602cef38.tar.gz", + .hash = "1220949ae605cc45e2d84cd0522a27ea09be0f93df13e7babba06c4ec349bf4afe0a", + }, + .mach_earcut = .{ + .url = "https://github.com/hexops/mach-earcut/archive/5a34772313a6a0679cc6c83f310a59741d03c246.tar.gz", + .hash = "1220c7059f62cf479e1c3de773cddb71aeb5824ac74528392cd38715f586d7a52e2f", + }, + }, +} diff --git a/src/main.zig b/src/main.zig index 2dcbdccb..60b6e969 100644 --- a/src/main.zig +++ b/src/main.zig @@ -22,4 +22,6 @@ const std = @import("std"); test { std.testing.refAllDeclsRecursive(ResourceManager); std.testing.refAllDeclsRecursive(gfx); + _ = ecs; + _ = earcut; }