This commit is contained in:
Fabien Freling 2024-07-17 11:14:41 +02:00
parent aefe5fa327
commit d12af291e1
5 changed files with 53 additions and 8 deletions

View file

@ -30,19 +30,21 @@ pub fn build(b: *Build) !void {
} else {
try buildNative(b, target, optimize, dep_sokol, dep_cimgui);
}
try buildTui(b, target, optimize);
}
fn buildNative(b: *Build, target: ResolvedTarget, optimize: OptimizeMode, dep_sokol: *Dependency, dep_cimgui: *Dependency) !void {
const demo = b.addExecutable(.{
.name = "demo",
.root_source_file = b.path("src/main.zig"),
.root_source_file = b.path("src/gui/main.zig"),
.target = target,
.optimize = optimize,
});
demo.root_module.addImport("sokol", dep_sokol.module("sokol"));
demo.root_module.addImport("cimgui", dep_cimgui.module("cimgui"));
b.installArtifact(demo);
b.step("run", "Run demo").dependOn(&b.addRunArtifact(demo).step);
b.step("run-gui", "Run demo").dependOn(&b.addRunArtifact(demo).step);
}
fn buildWasm(b: *Build, target: ResolvedTarget, optimize: OptimizeMode, dep_sokol: *Dependency, dep_cimgui: *Dependency) !void {
@ -50,7 +52,7 @@ fn buildWasm(b: *Build, target: ResolvedTarget, optimize: OptimizeMode, dep_soko
// needs to be linked in a separate build step with the Emscripten linker
const demo = b.addStaticLibrary(.{
.name = "demo",
.root_source_file = b.path("src/main.zig"),
.root_source_file = b.path("src/gui/main.zig"),
.target = target,
.optimize = optimize,
});
@ -86,5 +88,20 @@ fn buildWasm(b: *Build, target: ResolvedTarget, optimize: OptimizeMode, dep_soko
// ...and a special run step to start the web build output via 'emrun'
const run = sokol.emRunStep(b, .{ .name = "demo", .emsdk = dep_emsdk });
run.step.dependOn(&link_step.step);
b.step("run", "Run demo").dependOn(&run.step);
b.step("run-gui", "Run demo").dependOn(&run.step);
}
fn buildTui(b: *Build, target: ResolvedTarget, optimize: OptimizeMode) !void {
const tui = b.addExecutable(.{
.name = "demo",
.root_source_file = b.path("src/tui/main.zig"),
.target = target,
.optimize = optimize,
});
tui.linkLibC();
tui.linkSystemLibrary("notcurses");
b.installArtifact(tui);
b.step("run-tui", "Run TUI").dependOn(&b.addRunArtifact(tui).step);
}

View file

@ -12,8 +12,10 @@
zls
];
buildInputs = [
alsa-lib
lldb
# GUI
alsa-lib
xorg.libX11
xorg.libXcursor
xorg.libXi
@ -22,6 +24,9 @@
xorg.libXinerama
libGL
libGLU
# TUI
notcurses
];
};
};

View file

@ -2,6 +2,8 @@ alias b := build
build:
zig build
alias r := run
run:
zig build run
gui:
zig build run-gui
tui:
zig build run-tui

21
src/tui/main.zig Normal file
View file

@ -0,0 +1,21 @@
const std = @import("std");
const nc = @cImport({
@cInclude("notcurses/notcurses.h");
});
pub fn main() !void {
const stdout = std.io.getStdOut().writer();
try stdout.print("Hello, {s}!\n", .{"world"});
var nc_opts = nc.notcurses_options{
.termtype = null,
.loglevel = nc.NCLOGLEVEL_SILENT,
.margin_t = 0,
.margin_r = 0,
.margin_b = 0,
.margin_l = 0,
.flags = 0,
};
const ncs: *nc.notcurses = (nc.notcurses_core_init(&nc_opts, null) orelse @panic("notcurses_core_init() failed"));
defer _ = nc.notcurses_stop(ncs);
}