Skip to content

Commit

Permalink
Bump zig to 0.12.0-dev.2150+63de8a598
Browse files Browse the repository at this point in the history
  • Loading branch information
SinclaM committed Jan 12, 2024
1 parent dd67e3c commit 97d1a56
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 127 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ zig build -Doptimize=ReleaseFast

To target the web (populating `www/` with the all the site's files):
```bash
zig build --sysroot ~/emsdk/upstream/emscripten -Dtarget=wasm32-emscripten -Doptimize=ReleaseFast
zig build --sysroot [emsdk]/upstream/emscripten -Dtarget=wasm32-emscripten -Dcpu=generic+bulk_memory+atomics+simd128 -Doptimize=ReleaseFast
&& sed -i'' -e 's/_emscripten_return_address,/() => {},/g' www/ray-tracer-challenge.js
```

Expand Down
239 changes: 117 additions & 122 deletions build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -16,132 +16,127 @@ pub fn build(b: *std.Build) !void {
// set a preferred release mode, allowing the user to decide how to optimize.
const optimize = b.standardOptimizeOption(.{});

const zigimg = b.dependency("zigimg", .{
.target = target,
.optimize = optimize,
});
const zigimg = b.dependency("zigimg", .{});

if (target.cpu_arch) |arch| {
if (arch == std.Target.Cpu.Arch.wasm32) {
const lib = b.addStaticLibrary(.{
.name = "lib",
.root_source_file = .{ .path = "src/lib.zig" },
.target = .{
.cpu_arch = .wasm32,
.cpu_model = .{ .explicit = &std.Target.wasm.cpu.mvp },
.cpu_features_add = std.Target.wasm.featureSet(&.{ .atomics, .bulk_memory, .simd128 }),
.os_tag = .emscripten,
},
.optimize = optimize,
.link_libc = true
});
lib.shared_memory = true;
lib.single_threaded = false;
lib.bundle_compiler_rt = true;

lib.addModule("zigimg", zigimg.module("zigimg"));

if (b.sysroot == null) {
@panic("pass '--sysroot \"[path to emsdk]/upstream/emscripten\"'");
}
const zigimg_mod = b.addModule(
"zigimg",
.{ .root_source_file = .{ .dependency = .{ .dependency = zigimg, .sub_path = "zigimg.zig"} } }
);

const emccExe = switch (builtin.os.tag) {
.windows => "emcc.bat",
else => "emcc",
};
var emcc_run_arg = try b.allocator.alloc(
u8,
b.sysroot.?.len + emccExe.len + 1
);
defer b.allocator.free(emcc_run_arg);

emcc_run_arg = try std.fmt.bufPrint(
emcc_run_arg,
"{s}" ++ std.fs.path.sep_str ++ "{s}",
.{ b.sysroot.?, emccExe }
);

const emcc_command = b.addSystemCommand(&[_][]const u8{emcc_run_arg});
emcc_command.addFileArg(lib.getEmittedBin());
emcc_command.step.dependOn(&lib.step);
emcc_command.addArgs(&[_][]const u8{
"-o",
"www" ++ std.fs.path.sep_str ++ "ray-tracer-challenge.js",
"--embed-file",
"data@/",
"--no-entry",
"-pthread",
"-sPTHREAD_POOL_SIZE=navigator.hardwareConcurrency",
"-sINITIAL_MEMORY=167772160",
"-sALLOW_MEMORY_GROWTH",
"-sEXPORTED_FUNCTIONS=_startInitRenderer,_tryFinishInitRenderer,_initRendererIsOk,_initRendererGetPixels,_initRendererGetWidth,_initRendererGetHeight,_initRendererGetErr,_deinitRenderer,_startRender,_tryFinishRender,_rotateCamera,_moveCamera",
"-sEXPORTED_RUNTIME_METHODS=ccall,cwrap",
"-sSTACK_SIZE=10485760", // Increase stack size to 10MB
"-sALLOW_BLOCKING_ON_MAIN_THREAD=1",
"-O3",
//"-sUSE_OFFSET_CONVERTER",
});
b.getInstallStep().dependOn(&emcc_command.step);

var www = try std.fs.cwd().openDir("www", .{});
defer www.close();

www.makeDir("scenes") catch |err| switch (err) {
error.PathAlreadyExists => {},
else => @panic("Unable to create www/scenes!")
};

www.makeDir("data") catch |err| switch (err) {
error.PathAlreadyExists => {},
else => @panic("Unable to create www/scenes!")
};

{
// Copy all the scene descriptions into www
var scenes_src = try std.fs.cwd().openDir("scenes", .{});
defer scenes_src.close();

var scenes_dest = try www.openDir("scenes", .{});
defer scenes_dest.close();

var iter_scenes = try std.fs.cwd().openDir("scenes", .{ .iterate = true});
defer iter_scenes.close();

var iter = iter_scenes.iterate();
while (true) {
const entry = try iter.next();
if (entry == null) {
break;
} else {
switch (entry.?.kind) {
.file => try scenes_src.copyFile(entry.?.name, scenes_dest, entry.?.name, .{}),
else => {},
}
if (target.result.cpu.arch == .wasm32) {
const lib = b.addStaticLibrary(.{
.name = "lib",
.root_source_file = .{ .path = "src/lib.zig" },
.target = target,
.optimize = optimize,
.link_libc = true,
.single_threaded = false,
});
lib.shared_memory = true;
lib.bundle_compiler_rt = true;

lib.root_module.addImport("zigimg", zigimg_mod);

if (b.sysroot == null) {
@panic("pass '--sysroot \"[path to emsdk]/upstream/emscripten\"'");
}

const emccExe = switch (builtin.os.tag) {
.windows => "emcc.bat",
else => "emcc",
};
var emcc_run_arg = try b.allocator.alloc(
u8,
b.sysroot.?.len + emccExe.len + 1
);
defer b.allocator.free(emcc_run_arg);

emcc_run_arg = try std.fmt.bufPrint(
emcc_run_arg,
"{s}" ++ std.fs.path.sep_str ++ "{s}",
.{ b.sysroot.?, emccExe }
);

const emcc_command = b.addSystemCommand(&[_][]const u8{emcc_run_arg});
emcc_command.addFileArg(lib.getEmittedBin());
emcc_command.step.dependOn(&lib.step);
emcc_command.addArgs(&[_][]const u8{
"-o",
"www" ++ std.fs.path.sep_str ++ "ray-tracer-challenge.js",
"--embed-file",
"data@/",
"--no-entry",
"-pthread",
"-sPTHREAD_POOL_SIZE=navigator.hardwareConcurrency",
"-sINITIAL_MEMORY=167772160",
"-sALLOW_MEMORY_GROWTH",
"-sEXPORTED_FUNCTIONS=_startInitRenderer,_tryFinishInitRenderer,_initRendererIsOk,_initRendererGetPixels,_initRendererGetWidth,_initRendererGetHeight,_initRendererGetErr,_deinitRenderer,_startRender,_tryFinishRender,_rotateCamera,_moveCamera",
"-sEXPORTED_RUNTIME_METHODS=ccall,cwrap",
"-sSTACK_SIZE=10485760", // Increase stack size to 10MB
"-sALLOW_BLOCKING_ON_MAIN_THREAD=1",
"-O3",
//"-sUSE_OFFSET_CONVERTER",
});
b.getInstallStep().dependOn(&emcc_command.step);

var www = try std.fs.cwd().openDir("www", .{});
defer www.close();

www.makeDir("scenes") catch |err| switch (err) {
error.PathAlreadyExists => {},
else => @panic("Unable to create www/scenes!")
};

www.makeDir("data") catch |err| switch (err) {
error.PathAlreadyExists => {},
else => @panic("Unable to create www/scenes!")
};

{
// Copy all the scene descriptions into www
var scenes_src = try std.fs.cwd().openDir("scenes", .{});
defer scenes_src.close();

var scenes_dest = try www.openDir("scenes", .{});
defer scenes_dest.close();

var iter_scenes = try std.fs.cwd().openDir("scenes", .{ .iterate = true});
defer iter_scenes.close();

var iter = iter_scenes.iterate();
while (true) {
const entry = try iter.next();
if (entry == null) {
break;
} else {
switch (entry.?.kind) {
.file => try scenes_src.copyFile(entry.?.name, scenes_dest, entry.?.name, .{}),
else => {},
}
}
}
}

{
// Copy all the data files into www
var data_src = try std.fs.cwd().openDir("data", .{});
defer data_src.close();

var data_dest = try www.openDir("data", .{});
defer data_dest.close();

var iter_data = try std.fs.cwd().openDir("data", .{ .iterate = true });
defer iter_data.close();

var iter = iter_data.iterate();
while (true) {
const entry = try iter.next();
if (entry == null) {
break;
} else {
switch (entry.?.kind) {
.file => try data_src.copyFile(entry.?.name, data_dest, entry.?.name, .{}),
else => {},
}
{
// Copy all the data files into www
var data_src = try std.fs.cwd().openDir("data", .{});
defer data_src.close();

var data_dest = try www.openDir("data", .{});
defer data_dest.close();

var iter_data = try std.fs.cwd().openDir("data", .{ .iterate = true });
defer iter_data.close();

var iter = iter_data.iterate();
while (true) {
const entry = try iter.next();
if (entry == null) {
break;
} else {
switch (entry.?.kind) {
.file => try data_src.copyFile(entry.?.name, data_dest, entry.?.name, .{}),
else => {},
}
}
}
Expand All @@ -156,7 +151,7 @@ pub fn build(b: *std.Build) !void {
.optimize = optimize,
});

exe.addModule("zigimg", zigimg.module("zigimg"));
exe.root_module.addImport("zigimg", zigimg_mod);

// This declares intent for the executable to be installed into the
// standard location when the user invokes the "install" step (the default
Expand Down Expand Up @@ -196,7 +191,7 @@ pub fn build(b: *std.Build) !void {
.optimize = optimize,
});

unit_tests.addModule("zigimg", zigimg.module("zigimg"));
unit_tests.root_module.addImport("zigimg", zigimg_mod);

const run_unit_tests = b.addRunArtifact(unit_tests);

Expand Down
4 changes: 2 additions & 2 deletions build.zig.zon
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
.version = "0.0.0",
.dependencies = .{
.zigimg = .{
.url = "https://github.com/zigimg/zigimg/archive/b510787f9908ef704c9292768988a3d4c864d41c.tar.gz",
.hash = "1220e4f559ea449f13383e34b1102e6e1befd6f59a5a9538f823613546b4876e8706",
.url = "https://github.com/SinclaM/zigimg/archive/650b64edf1ceb70f38bcaf196b42df7336c9eb33.tar.gz",
.hash = "12203af19f62bb559971649325ebb825b8db60b80e6d0eb3daa9a5e98b562dce1fb5",
},
},
.paths = .{
Expand Down
4 changes: 2 additions & 2 deletions src/raytracer/noise.zig
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ const permutation = [_]u8 {
};

const p = blk: {
comptime var i = 0;
comptime var self: [512]u8 = undefined;
var i = 0;
var self: [512]u8 = undefined;
while (i < 256) : (i += 1) {
self[256 + i] = permutation[i];
self[i] = permutation[i];
Expand Down

0 comments on commit 97d1a56

Please sign in to comment.