From 9bbada90b2513c07870d3a6943e7d85c7b215229 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Tue, 24 Jan 2023 00:11:19 -0700 Subject: [PATCH] {mach,core}: move core sources to libs/core Signed-off-by: Stephen Gutekanst --- build.zig => libs/core/build.zig | 92 +++---------------- {src => libs/core/src}/Core.zig | 0 {src => libs/core/src}/Timer.zig | 0 {src => libs/core/src}/engine.zig | 0 {src => libs/core/src}/entry.zig | 0 {src => libs/core/src}/platform.zig | 0 .../core/src/platform/libmachcore.zig | 0 {src => libs/core/src}/platform/native.zig | 0 .../core/src}/platform/native/Core.zig | 0 .../core/src}/platform/native/entry.zig | 0 .../src}/platform/native/objc_message.zig | 0 .../core/src}/platform/native/util.zig | 0 {src => libs/core/src}/platform/wasm.zig | 0 {src => libs/core/src}/platform/wasm/Core.zig | 0 .../core/src}/platform/wasm/Timer.zig | 0 .../core/src}/platform/wasm/entry.zig | 0 {src => libs/core/src}/platform/wasm/js.zig | 0 {src => libs/core/src}/platform/wasm/mach.js | 0 18 files changed, 13 insertions(+), 79 deletions(-) rename build.zig => libs/core/build.zig (70%) rename {src => libs/core/src}/Core.zig (100%) rename {src => libs/core/src}/Timer.zig (100%) rename {src => libs/core/src}/engine.zig (100%) rename {src => libs/core/src}/entry.zig (100%) rename {src => libs/core/src}/platform.zig (100%) rename src/platform/libmach.zig => libs/core/src/platform/libmachcore.zig (100%) rename {src => libs/core/src}/platform/native.zig (100%) rename {src => libs/core/src}/platform/native/Core.zig (100%) rename {src => libs/core/src}/platform/native/entry.zig (100%) rename {src => libs/core/src}/platform/native/objc_message.zig (100%) rename {src => libs/core/src}/platform/native/util.zig (100%) rename {src => libs/core/src}/platform/wasm.zig (100%) rename {src => libs/core/src}/platform/wasm/Core.zig (100%) rename {src => libs/core/src}/platform/wasm/Timer.zig (100%) rename {src => libs/core/src}/platform/wasm/entry.zig (100%) rename {src => libs/core/src}/platform/wasm/js.zig (100%) rename {src => libs/core/src}/platform/wasm/mach.js (100%) diff --git a/build.zig b/libs/core/build.zig similarity index 70% rename from build.zig rename to libs/core/build.zig index 9b0067d6..34835747 100644 --- a/build.zig +++ b/libs/core/build.zig @@ -1,41 +1,30 @@ const std = @import("std"); const builtin = @import("builtin"); -const system_sdk = @import("libs/glfw/system_sdk.zig"); -const glfw = @import("libs/glfw/build.zig"); -const ecs = @import("libs/ecs/build.zig"); -const freetype = @import("libs/freetype/build.zig"); -const basisu = @import("libs/basisu/build.zig"); -const sysjs = @import("libs/sysjs/build.zig"); -const earcut = @import("libs/earcut/build.zig"); -const gamemode = @import("libs/gamemode/build.zig"); -const model3d = @import("libs/model3d/build.zig"); -const wasmserve = @import("tools/wasmserve/wasmserve.zig"); -const gpu_dawn = @import("libs/gpu-dawn/sdk.zig").Sdk(.{ - .glfw_include_dir = sdkPath("/libs/glfw/upstream/glfw/include"), +const system_sdk = @import("libs/mach-glfw/system_sdk.zig"); +const glfw = @import("libs/mach-glfw/build.zig"); +const sysjs = @import("libs/mach-sysjs/build.zig"); +const gamemode = @import("libs/mach-gamemode/build.zig"); +const wasmserve = @import("libs/mach-wasmserve/wasmserve.zig"); +const gpu_dawn = @import("libs/mach-gpu-dawn/sdk.zig").Sdk(.{ + .glfw_include_dir = sdkPath("/libs/mach-glfw/upstream/glfw/include"), .system_sdk = system_sdk, }); -const gpu = @import("libs/gpu/sdk.zig").Sdk(.{ +const gpu = @import("libs/mach-gpu/sdk.zig").Sdk(.{ .gpu_dawn = gpu_dawn, }); -const sysaudio = @import("libs/sysaudio/sdk.zig").Sdk(.{ - .system_sdk = system_sdk, - .sysjs = sysjs, -}); const CrossTarget = std.zig.CrossTarget; const Builder = std.build.Builder; const Pkg = std.build.Pkg; pub const pkg = Pkg{ - .name = "mach", + .name = "core", .source = .{ .path = sdkPath("/src/main.zig") }, - .dependencies = &.{ gpu.pkg, ecs.pkg, sysaudio.pkg, earcut.pkg }, + .dependencies = &.{ gpu.pkg }, }; pub const Options = struct { glfw_options: glfw.Options = .{}, gpu_dawn_options: gpu_dawn.Options = .{}, - sysaudio_options: sysaudio.Options = .{}, - freetype_options: freetype.Options = .{}, pub fn gpuOptions(options: Options) gpu.Options { return .{ @@ -58,29 +47,14 @@ pub fn build(b: *Builder) !void { const all_tests_step = b.step("test", "Run library tests"); const glfw_test_step = b.step("test-glfw", "Run GLFW library tests"); const gpu_test_step = b.step("test-gpu", "Run GPU 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"); - const model3d_test_step = b.step("test-model3d", "Run Model3D library tests"); const mach_test_step = b.step("test-mach", "Run Mach Core library tests"); glfw_test_step.dependOn(&(try glfw.testStep(b, mode, target)).step); gpu_test_step.dependOn(&(try gpu.testStep(b, mode, target, options.gpuOptions())).step); - freetype_test_step.dependOn(&freetype.testStep(b, mode, target).step); - ecs_test_step.dependOn(&ecs.testStep(b, mode, target).step); - basisu_test_step.dependOn(&basisu.testStep(b, mode, target).step); - sysaudio_test_step.dependOn(&sysaudio.testStep(b, mode, target).step); - model3d_test_step.dependOn(&model3d.testStep(b, mode, target).step); mach_test_step.dependOn(&testStep(b, mode, target).step); all_tests_step.dependOn(glfw_test_step); all_tests_step.dependOn(gpu_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); - all_tests_step.dependOn(model3d_test_step); all_tests_step.dependOn(mach_test_step); // TODO: we need a way to test wasm stuff @@ -88,27 +62,7 @@ pub fn build(b: *Builder) !void { // sysjs_test_step.dependOn(&sysjs.testStep(b, mode, target).step); // all_tests_step.dependOn(sysjs_test_step); - const shaderexp_app = try App.init( - b, - .{ - .name = "shaderexp", - .src = "shaderexp/main.zig", - .target = target, - .mode = mode, - }, - ); - try shaderexp_app.link(options); - shaderexp_app.install(); - - const shaderexp_compile_step = b.step("shaderexp", "Compile shaderexp"); - shaderexp_compile_step.dependOn(&shaderexp_app.getInstallStep().?.step); - - const shaderexp_run_cmd = try shaderexp_app.run(); - shaderexp_run_cmd.dependOn(&shaderexp_app.getInstallStep().?.step); - const shaderexp_run_step = b.step("run-shaderexp", "Run shaderexp"); - shaderexp_run_step.dependOn(shaderexp_run_cmd); - - // Compiles the `libmach` shared library + // Compiles the `libmachcore` shared library const shared_lib = try buildSharedLib(b, mode, target, options); shared_lib.install(); } @@ -129,25 +83,23 @@ fn testStep(b: *Builder, mode: std.builtin.Mode, target: CrossTarget) *std.build } fn buildSharedLib(b: *Builder, mode: std.builtin.Mode, target: CrossTarget, options: Options) !*std.build.LibExeObjStep { - const lib = b.addSharedLibrary("mach", "src/platform/libmach.zig", .unversioned); + const lib = b.addSharedLibrary("mach", "src/platform/libmachcore.zig", .unversioned); lib.setTarget(target); lib.setBuildMode(mode); lib.main_pkg_path = "src/"; const app_pkg = Pkg{ .name = "app", - .source = .{ .path = "src/platform/libmach.zig" }, + .source = .{ .path = "src/platform/libmachcore.zig" }, }; lib.addPackage(app_pkg); lib.addPackage(glfw.pkg); lib.addPackage(gpu.pkg); - lib.addPackage(sysaudio.pkg); if (target.isLinux()) { lib.addPackage(gamemode.pkg); gamemode.link(lib); } try glfw.link(b, lib, options.glfw_options); try gpu.link(b, lib, options.gpuOptions()); - lib.setOutputDir("libmach/build"); return lib; } @@ -160,8 +112,6 @@ pub const App = struct { platform: Platform, res_dirs: ?[]const []const u8, watch_paths: ?[]const []const u8, - use_freetype: ?[]const u8 = null, - use_model3d: bool = false, pub const InitError = error{OutOfMemory} || std.zig.system.NativeTargetInfo.DetectError; pub const LinkError = glfw.LinkError; @@ -189,11 +139,6 @@ pub const App = struct { deps: ?[]const Pkg = null, res_dirs: ?[]const []const u8 = null, watch_paths: ?[]const []const u8 = null, - - /// If set, freetype will be linked and can be imported using this name. - // TODO(build-system): name is currently not used / always "freetype" - use_freetype: ?[]const u8 = null, - use_model3d: bool = false, }, ) InitError!App { const target = (try std.zig.system.NativeTargetInfo.detect(options.target)).target; @@ -202,12 +147,10 @@ pub const App = struct { var deps = std.ArrayList(Pkg).init(b.allocator); try deps.append(pkg); try deps.append(gpu.pkg); - try deps.append(sysaudio.pkg); switch (platform) { .native => try deps.append(glfw.pkg), .web => try deps.append(sysjs.pkg), } - if (options.use_freetype) |_| try deps.append(freetype.pkg); if (options.deps) |app_deps| try deps.appendSlice(app_deps); const app_pkg = Pkg{ @@ -235,8 +178,6 @@ pub const App = struct { }; step.main_pkg_path = sdkPath("/src"); - step.addPackage(ecs.pkg); - step.addPackage(sysaudio.pkg); step.addPackage(gpu.pkg); step.addPackage(app_pkg); step.setTarget(options.target); @@ -249,8 +190,6 @@ pub const App = struct { .platform = platform, .res_dirs = options.res_dirs, .watch_paths = options.watch_paths, - .use_freetype = options.use_freetype, - .use_model3d = options.use_model3d, }; } @@ -261,11 +200,6 @@ pub const App = struct { if (app.step.target.isLinux()) gamemode.link(app.step); } - sysaudio.link(app.b, app.step, options.sysaudio_options); - if (app.use_freetype) |_| freetype.link(app.b, app.step, options.freetype_options); - if (app.use_model3d) { - model3d.link(app.b, app.step, app.step.target); - } } pub fn install(app: *const App) void { diff --git a/src/Core.zig b/libs/core/src/Core.zig similarity index 100% rename from src/Core.zig rename to libs/core/src/Core.zig diff --git a/src/Timer.zig b/libs/core/src/Timer.zig similarity index 100% rename from src/Timer.zig rename to libs/core/src/Timer.zig diff --git a/src/engine.zig b/libs/core/src/engine.zig similarity index 100% rename from src/engine.zig rename to libs/core/src/engine.zig diff --git a/src/entry.zig b/libs/core/src/entry.zig similarity index 100% rename from src/entry.zig rename to libs/core/src/entry.zig diff --git a/src/platform.zig b/libs/core/src/platform.zig similarity index 100% rename from src/platform.zig rename to libs/core/src/platform.zig diff --git a/src/platform/libmach.zig b/libs/core/src/platform/libmachcore.zig similarity index 100% rename from src/platform/libmach.zig rename to libs/core/src/platform/libmachcore.zig diff --git a/src/platform/native.zig b/libs/core/src/platform/native.zig similarity index 100% rename from src/platform/native.zig rename to libs/core/src/platform/native.zig diff --git a/src/platform/native/Core.zig b/libs/core/src/platform/native/Core.zig similarity index 100% rename from src/platform/native/Core.zig rename to libs/core/src/platform/native/Core.zig diff --git a/src/platform/native/entry.zig b/libs/core/src/platform/native/entry.zig similarity index 100% rename from src/platform/native/entry.zig rename to libs/core/src/platform/native/entry.zig diff --git a/src/platform/native/objc_message.zig b/libs/core/src/platform/native/objc_message.zig similarity index 100% rename from src/platform/native/objc_message.zig rename to libs/core/src/platform/native/objc_message.zig diff --git a/src/platform/native/util.zig b/libs/core/src/platform/native/util.zig similarity index 100% rename from src/platform/native/util.zig rename to libs/core/src/platform/native/util.zig diff --git a/src/platform/wasm.zig b/libs/core/src/platform/wasm.zig similarity index 100% rename from src/platform/wasm.zig rename to libs/core/src/platform/wasm.zig diff --git a/src/platform/wasm/Core.zig b/libs/core/src/platform/wasm/Core.zig similarity index 100% rename from src/platform/wasm/Core.zig rename to libs/core/src/platform/wasm/Core.zig diff --git a/src/platform/wasm/Timer.zig b/libs/core/src/platform/wasm/Timer.zig similarity index 100% rename from src/platform/wasm/Timer.zig rename to libs/core/src/platform/wasm/Timer.zig diff --git a/src/platform/wasm/entry.zig b/libs/core/src/platform/wasm/entry.zig similarity index 100% rename from src/platform/wasm/entry.zig rename to libs/core/src/platform/wasm/entry.zig diff --git a/src/platform/wasm/js.zig b/libs/core/src/platform/wasm/js.zig similarity index 100% rename from src/platform/wasm/js.zig rename to libs/core/src/platform/wasm/js.zig diff --git a/src/platform/wasm/mach.js b/libs/core/src/platform/wasm/mach.js similarity index 100% rename from src/platform/wasm/mach.js rename to libs/core/src/platform/wasm/mach.js