diff options
Diffstat (limited to 'build.zig')
-rw-r--r-- | build.zig | 74 |
1 files changed, 32 insertions, 42 deletions
diff --git a/build.zig b/build.zig index 8c5c4c8..97957bd 100644 --- a/build.zig +++ b/build.zig @@ -1,5 +1,5 @@ // Build recipe -// Copyright (C) 2021-2023 Nguyễn Gia Phong +// Copyright (C) 2021-2023, 2025 Nguyễn Gia Phong // // This file is part of Black Shades. // @@ -18,61 +18,51 @@ const Build = @import("std").Build; const Compile = Build.Step.Compile; -const InstallDirectoryOptions = Build.InstallDirectoryOptions; - -const data = InstallDirectoryOptions{ - .source_dir = .{ .path = "data" }, - .install_dir = .{ .custom = "share" }, - .install_subdir = "blackshades", -}; pub fn build(b: *Build) void { - const bin = b.addExecutable(.{ - .name = "blackshades", - .root_source_file = .{ .path = "src/main.zig" }, + const mod = b.createModule(.{ + .root_source_file = b.path("src/main.zig"), .target = b.standardTargetOptions(.{}), .optimize = b.standardOptimizeOption(.{}), }); - bin.addIncludePath(.{ .path = "src" }); - bin.addCSourceFiles(&.{ - "src/GameDraw.cpp", - "src/GameInitDispose.cpp", - "src/GameLoop.cpp", - "src/GameTick.cpp", - "src/Globals.cpp", - "src/Person.cpp", - "src/Skeleton.cpp", - "src/Sprites.cpp", - }, &.{ "--std=c++17", "-Wall", "-Werror", "-fno-sanitize=undefined" }); - - for ([_]struct { []const u8, []const u8 }{ - .{ "gfz", "lib/gfz/src/gfz.zig" }, - .{ "ini", "lib/ini/src/ini.zig" }, - .{ "loca", "lib/loca/src/main.zig" }, - .{ "qoi", "lib/qoi/src/qoi.zig" }, - .{ "zeal", "lib/zeal/src/zeal.zig" }, - }) |lib| - bin.addModule(lib[0], b.createModule(.{ - .source_file = .{ .path = lib[1] }, - })); - @import("lib/gfz/build.zig").link(bin); - @import("lib/zeal/build.zig").link(bin); - bin.linkSystemLibrary("GL"); - bin.linkSystemLibrary("GLU"); - bin.linkSystemLibrary("c++"); + mod.addIncludePath(b.path("src")); + mod.addCSourceFiles(.{ + .files = &.{ + "src/GameDraw.cpp", + "src/GameInitDispose.cpp", + "src/GameLoop.cpp", + "src/GameTick.cpp", + "src/Globals.cpp", + "src/Person.cpp", + "src/Skeleton.cpp", + "src/Sprites.cpp", + }, + .flags = &.{ "--std=c++17", "-Wall", "-Werror" }, + }); + mod.linkSystemLibrary("GL", .{}); + mod.linkSystemLibrary("GLU", .{}); + mod.linkSystemLibrary("c++", .{}); + inline for (.{ "gfz", "ini", "known-folders", "qoi", "zeal" }) |lib| + mod.addImport(lib, b.dependency(lib, .{}).module(lib)); + const data = Build.Step.InstallDir.Options{ + .source_dir = b.path("data"), + .install_dir = .{ .custom = "share" }, + .install_subdir = "blackshades", + }; b.installDirectory(data); const options = b.addOptions(); const data_dir = b.getInstallPath(data.install_dir, data.install_subdir); options.addOption([]const u8, "data_dir", data_dir); - bin.addOptions("build_options", options); - b.installArtifact(bin); + mod.addOptions("build_options", options); + const bin = b.addExecutable(.{ .name = "blackshades", .root_module = mod }); + b.installArtifact(bin); const run_cmd = b.addRunArtifact(bin); - run_cmd.step.dependOn(b.getInstallStep()); + //run_cmd.step.dependOn(b.getInstallStep()); if (b.args) |args| run_cmd.addArgs(args); - const run_step = b.step("run", "Run the app"); + const run_step = b.step("run", "Run the game"); run_step.dependOn(&run_cmd.step); } |