Compare commits
5 Commits
2524dbf206
...
wasm
Author | SHA1 | Date | |
---|---|---|---|
|
f032509b12 | ||
|
2a10ffc55c | ||
|
de7b29c458 | ||
|
b9e39139bc | ||
|
ac6cb02184 |
84
build.zig
84
build.zig
@@ -1,4 +1,7 @@
|
||||
const std = @import("std");
|
||||
const sokol = @import("sokol");
|
||||
|
||||
const title = "sok";
|
||||
|
||||
pub fn build(b: *std.Build) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
@@ -6,30 +9,79 @@ pub fn build(b: *std.Build) void {
|
||||
|
||||
const dep_sokol = b.dependency("sokol", .{ .target = target, .optimize = optimize });
|
||||
|
||||
const exe = b.addExecutable(.{
|
||||
.name = "sok",
|
||||
.root_source_file = b.path("src/main.zig"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
if (!target.result.isWasm()) {
|
||||
// Native exe
|
||||
|
||||
exe.root_module.addImport("sokol", dep_sokol.module("sokol"));
|
||||
const exe = b.addExecutable(.{
|
||||
.name = title,
|
||||
.root_source_file = b.path("src/main.zig"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
// Set this to hide console
|
||||
//exe.subsystem = .Windows;
|
||||
exe.root_module.addImport("sokol", dep_sokol.module("sokol"));
|
||||
|
||||
b.installArtifact(exe);
|
||||
// Set this to hide console on windows
|
||||
//exe.subsystem = .Windows;
|
||||
|
||||
const run_cmd = b.addRunArtifact(exe);
|
||||
b.installArtifact(exe);
|
||||
|
||||
run_cmd.step.dependOn(b.getInstallStep());
|
||||
// Check step (for ZLS)
|
||||
|
||||
if (b.args) |args| {
|
||||
run_cmd.addArgs(args);
|
||||
const exe_check = b.addExecutable(.{
|
||||
.name = "check_step",
|
||||
.root_source_file = b.path("src/main.zig"),
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
exe_check.root_module.addImport("sokol", dep_sokol.module("sokol"));
|
||||
|
||||
const check = b.step("check", "Check if project compiles");
|
||||
check.dependOn(&exe_check.step);
|
||||
|
||||
// Run
|
||||
|
||||
const run_cmd = b.addRunArtifact(exe);
|
||||
|
||||
run_cmd.step.dependOn(b.getInstallStep());
|
||||
|
||||
if (b.args) |args| {
|
||||
run_cmd.addArgs(args);
|
||||
}
|
||||
|
||||
const run_step = b.step("run", "Run" ++ title ++ " as native app");
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
} else {
|
||||
// Web
|
||||
|
||||
const wasmLib = b.addStaticLibrary(.{
|
||||
.name = title,
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.root_source_file = b.path("src/pacman.zig"),
|
||||
});
|
||||
wasmLib.root_module.addImport("sokol", dep_sokol.module("sokol"));
|
||||
|
||||
// create a build step which invokes the Emscripten linker
|
||||
const emsdk = dep_sokol.builder.dependency("emsdk", .{});
|
||||
const link_step = try sokol.emLinkStep(b, .{
|
||||
.lib_main = wasmLib,
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
.emsdk = emsdk,
|
||||
.use_webgl2 = true,
|
||||
.use_emmalloc = true,
|
||||
.use_filesystem = false,
|
||||
.shell_file_path = dep_sokol.path("src/sokol/web/shell.html").getPath(b),
|
||||
});
|
||||
// ...and a special run step to start the web build output via 'emrun'
|
||||
const run = sokol.emRunStep(b, .{ .name = "sok", .emsdk = emsdk });
|
||||
run.step.dependOn(&link_step.step);
|
||||
b.step("run", "Run " ++ title ++ " as wasm").dependOn(&run.step);
|
||||
}
|
||||
|
||||
const run_step = b.step("run", "Run the app");
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
// Tests
|
||||
|
||||
const exe_unit_tests = b.addTest(.{
|
||||
.root_source_file = b.path("src/main.zig"),
|
||||
|
@@ -1,18 +1,17 @@
|
||||
.{
|
||||
.name = "sok",
|
||||
.version = "0.0.0",
|
||||
.minimum_zig_version = "0.13.0",
|
||||
|
||||
.dependencies = .{
|
||||
.sokol = .{
|
||||
.url = "git+https://github.com/floooh/sokol-zig.git#d3e21f76498213d6d58179065756f5f2ed9b90cf",
|
||||
.hash = "122052a192829b377c637ce242ee8c9121e03d8cd10c889758dc6fb176368de7d67b",
|
||||
},
|
||||
},
|
||||
|
||||
.minimum_zig_version = "0.14.0-dev.144+a31fe8aa3",
|
||||
.paths = .{
|
||||
"build.zig",
|
||||
"build.zig.zon",
|
||||
"src",
|
||||
},
|
||||
|
||||
.dependencies = .{
|
||||
.sokol = .{
|
||||
.url = "git+https://github.com/floooh/sokol-zig.git#ed91d03b62ef9e5850f33a98a3f703c01d86798d",
|
||||
.hash = "12208af0258178372af254d34e32e7f6cdf2e0f6a51bfb8d6706aff159e2ec6d2c65",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
12
readme.md
12
readme.md
@@ -10,8 +10,20 @@ The goal of this project is not fixed, and is just to try out some sokol feature
|
||||
|
||||
To build, you need to have zig master (you can use [zvm](https://www.zvm.app/) to help you with this). Then just `zig build run` and that should be it!
|
||||
|
||||
To build for wasm, use `zig build -Dtarget=wasm32-emscripten run`
|
||||
|
||||
Note that if you change shaders, you have to recompile them manually - run compile_shaders.bat.
|
||||
|
||||
### Live error checking
|
||||
|
||||
This project has been configured so that zls can show live compile errors on save. To make it work, you need to set these zls config params (in VSCode just copy these to your preferences):
|
||||
```
|
||||
"zig.zls.enableBuildOnSave": true,
|
||||
"zig.zls.buildOnSaveStep": "check"
|
||||
```
|
||||
|
||||
Also, if you're in VSCode, install ErrorLens extension so you can see the errors inline.
|
||||
|
||||
## Why zig?
|
||||
|
||||
Zig is a low level language and toolchain that is designed as a "better C". Its main goal is to be simple, robust and fast. A few strong points:
|
||||
|
@@ -1,7 +1,7 @@
|
||||
const std = @import("std");
|
||||
const sokol = @import("sokol");
|
||||
|
||||
const sg = sokol.gfx;
|
||||
const Event = sokol.app.Event;
|
||||
|
||||
const shader = @import("shaders/triangle2.glsl.zig");
|
||||
|
||||
@@ -144,8 +144,6 @@ export fn cleanup() void {
|
||||
std.log.info("Ended", .{});
|
||||
}
|
||||
|
||||
const Event = sokol.app.Event;
|
||||
|
||||
export fn event(eptr: [*c]const Event) void {
|
||||
const e: *const Event = @ptrCast(eptr);
|
||||
|
||||
|
Reference in New Issue
Block a user