const std = @import("std"); pub fn build(builder: *std.build.Builder) void { const target = builder.standardTargetOptions(.{}); const mode = builder.standardReleaseOptions(); // Ona executable. { const ona_exe = builder.addExecutable("ona", "src/main.zig"); ona_exe.setTarget(target); ona_exe.setBuildMode(mode); ona_exe.install(); ona_exe.addIncludeDir("./ext"); ona_exe.linkSystemLibrary("SDL2"); // Lua dependency. ona_exe.linkLibrary(link_lua: { const lua_lib = builder.addStaticLibrary("lua", null); lua_lib.addIncludeDir("./ext/lua"); lua_lib.linkLibC(); // TODO: Implement support for more than Linux. lua_lib.addCSourceFiles(&.{ "./ext/lua/lapi.c", "./ext/lua/lauxlib.c", "./ext/lua/lbaselib.c", "./ext/lua/lcode.c", "./ext/lua/lcorolib.c", "./ext/lua/lctype.c", "./ext/lua/ldblib.c", "./ext/lua/ldebug.c", "./ext/lua/ldo.c", "./ext/lua/ldump.c", "./ext/lua/lfunc.c", "./ext/lua/lgc.c", "./ext/lua/llex.c", "./ext/lua/lmathlib.c", "./ext/lua/lmem.c", "./ext/lua/loadlib.c", "./ext/lua/lobject.c", "./ext/lua/lopcodes.c", "./ext/lua/loslib.c", "./ext/lua/lparser.c", "./ext/lua/lstate.c", "./ext/lua/lstring.c", "./ext/lua/lstrlib.c", "./ext/lua/ltablib.c", "./ext/lua/lundump.c", "./ext/lua/lutf8lib.c", "./ext/lua/lvm.c", "./ext/lua/lzio.c", "./ext/lua/ltable.c", "./ext/lua/ltm.c", }, &.{"-DLUA_USE_LINUX", "-Wl"}); lua_lib.install(); break: link_lua lua_lib; }); const run_cmd = ona_exe.run(); run_cmd.step.dependOn(builder.getInstallStep()); if (builder.args) |args| run_cmd.addArgs(args); builder.step("run", "Run Ona application").dependOn(&run_cmd.step); } // Ona tests. { const ona_tests = builder.addTest("src/main.zig"); ona_tests.setTarget(target); ona_tests.setBuildMode(mode); builder.step("test", "Run Ona unit tests").dependOn(&ona_tests.step); } }