-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.zig
53 lines (42 loc) · 1.92 KB
/
build.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const std = @import("std");
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const liblua = buildLibLua(b, target, optimize);
b.installArtifact(liblua);
const exe = b.addExecutable(.{
.name = "lua",
.target = target,
.optimize = optimize,
});
exe.linkLibC();
exe.linkLibrary(liblua);
exe.addCSourceFile("lua.c", &.{});
var exe_step = b.step("exe", "emit lua executable");
var emit_exe = b.addInstallArtifact(exe);
exe_step.dependOn(&emit_exe.step);
}
pub fn buildLibLua(b: *std.Build, target: std.zig.CrossTarget, optimize: std.builtin.OptimizeMode) *std.Build.CompileStep {
const lua = b.addStaticLibrary(.{
.name = "liblua",
.target = target,
.optimize = optimize,
});
for (PresetModules.get(.core)) |module| {
lua.addCSourceFile(std.mem.concat(b.allocator, u8, &.{ @tagName(module), ".c" }) catch @panic("OOM"), &.{});
}
for (PresetModules.get(.lib)) |module| {
lua.addCSourceFile(std.mem.concat(b.allocator, u8, &.{ @tagName(module), ".c" }) catch @panic("OOM"), &.{});
}
lua.linkLibC();
return lua;
}
const LuaPreset = enum {
core,
lib,
};
const PresetModules = std.EnumArray(LuaPreset, []const LuaModule).init(.{
.core = &.{ .lapi, .lcode, .lctype, .ldebug, .ldo, .ldump, .lfunc, .lgc, .llex, .lmem, .lobject, .lopcodes, .lparser, .lstate, .lstring, .ltable, .ltm, .lundump, .lvm, .lzio },
.lib = &.{ .lauxlib, .lbaselib, .lcorolib, .ldblib, .liolib, .lmathlib, .loadlib, .loslib, .lstrlib, .ltablib, .lutf8lib, .linit },
});
const LuaModule = enum { lapi, lauxlib, lbaselib, lcode, lcorolib, lctype, ldblib, ldebug, ldo, ldump, lfunc, lgc, linit, liolib, llex, lmathlib, lmem, loadlib, lobject, lopcodes, loslib, lparser, lstate, lstring, lstrlib, ltable, ltablib, ltm, lua, luac, lundump, lutf8lib, lvm, lzio };