diff options
Diffstat (limited to 'build.zig')
-rw-r--r-- | build.zig | 91 |
1 files changed, 45 insertions, 46 deletions
diff --git a/build.zig b/build.zig index 05f9e91..9f69257 100644 --- a/build.zig +++ b/build.zig @@ -16,63 +16,62 @@ // You should have received a copy of the GNU General Public License // along with Black Shades. If not, see <https://www.gnu.org/licenses/>. -const std = @import("std"); -const InstallDirectoryOptions = std.build.InstallDirectoryOptions; -const Builder = std.build.Builder; +const Build = @import("std").Build; +const Compile = Build.Step.Compile; +const InstallDirectoryOptions = Build.InstallDirectoryOptions; const data = InstallDirectoryOptions{ - .source_dir = "data", + .source_dir = .{ .path = "data" }, .install_dir = .{ .custom = "share" }, .install_subdir = "blackshades", }; -pub fn build(b: *Builder) void { +pub fn build(b: *Build) void { + const bin = b.addExecutable(.{ + .name = "blackshades", + .root_source_file = .{ .path = "src/main.zig" }, + .target = b.standardTargetOptions(.{}), + .optimize = b.standardOptimizeOption(.{}), + }); + bin.addIncludePath(.{ .path = "src" }); + bin.addCSourceFiles(&.{ + "src/Decals.cpp", + "src/GameDraw.cpp", + "src/GameInitDispose.cpp", + "src/GameLoop.cpp", + "src/GameTick.cpp", + "src/Globals.cpp", + "src/Models.cpp", + "src/Person.cpp", + "src/Quaternions.cpp", + "src/Skeleton.cpp", + "src/Sprites.cpp", + }, &.{ "--std=c++17", "-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++"); + 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); - const exe = b.addExecutable("blackshades", "src/main.zig"); - exe.addIncludePath("src"); - - const cxxflags = [_][]const u8{ "--std=c++17", "-fno-sanitize=undefined" }; - exe.addCSourceFile("src/Decals.cpp", &cxxflags); - exe.addCSourceFile("src/GameDraw.cpp", &cxxflags); - exe.addCSourceFile("src/GameInitDispose.cpp", &cxxflags); - exe.addCSourceFile("src/GameLoop.cpp", &cxxflags); - exe.addCSourceFile("src/GameTick.cpp", &cxxflags); - exe.addCSourceFile("src/Globals.cpp", &cxxflags); - exe.addCSourceFile("src/Models.cpp", &cxxflags); - exe.addCSourceFile("src/Person.cpp", &cxxflags); - exe.addCSourceFile("src/Quaternions.cpp", &cxxflags); - exe.addCSourceFile("src/Skeleton.cpp", &cxxflags); - exe.addCSourceFile("src/Sprites.cpp", &cxxflags); - - exe.addPackagePath("gfz", "lib/gfz/src/gfz.zig"); - @import("lib/gfz/build.zig").link(exe); - exe.addPackagePath("ini", "lib/ini/src/ini.zig"); - exe.addPackagePath("loca", "lib/loca/src/main.zig"); - exe.addPackagePath("qoi", "lib/qoi/src/qoi.zig"); - exe.addPackagePath("zeal", "lib/zeal/src/zeal.zig"); - @import("lib/zeal/build.zig").link(exe); - - exe.linkSystemLibrary("GL"); - exe.linkSystemLibrary("GLU"); - exe.linkSystemLibrary("c++"); - - // Standard target options allows the person running `zig build` to choose - // what target to build for. Here we do not override the defaults, which - // means any target is allowed, and the default is native. Other options - // for restricting supported target set are available. - exe.setTarget(b.standardTargetOptions(.{})); - - // Standard release options allow the person running `zig build` to select - // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. - exe.setBuildMode(b.standardReleaseOptions()); - exe.addOptions("build_options", options); - exe.install(); - - const run_cmd = exe.run(); + const run_cmd = b.addRunArtifact(bin); run_cmd.step.dependOn(b.getInstallStep()); if (b.args) |args| run_cmd.addArgs(args); |