From 188703283bff41cb9b27e6515ba94d93c2d47d3f Mon Sep 17 00:00:00 2001 From: Arran Ireland Date: Sun, 13 Jul 2025 16:04:04 +0100 Subject: [PATCH] ci: add examples, wasm and c --- .github/workflows/ci.yml | 72 ++++++++++++++++++++++++++++++++++++---- build.zig | 25 ++++++++++---- 2 files changed, 83 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0038319..47554ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,8 +11,10 @@ on: - '**.c' - '**.h' +# Remove guard against Linux Debug when #35 is closed. + jobs: - build: + test: strategy: fail-fast: false matrix: @@ -25,13 +27,69 @@ jobs: - uses: mlugg/setup-zig@v2 - - name: Build - run: zig build - - - name: Test Debug - # Remove this when 0.15.0 releases. + - name: Debug if: matrix.os != 'ubuntu-latest' run: zig build test -Doptimize=Debug - - name: Test Release + - name: Release run: zig build test -Doptimize=ReleaseFast + + examples: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + with: + submodules: false + + - uses: mlugg/setup-zig@v2 + + - name: Debug + if: matrix.os != 'ubuntu-latest' + run: zig build example -Dname=tcp -Doptimize=Debug -Dci=true + + - name: Release + run: zig build example -Dname=tcp -Doptimize=ReleaseFast -Dci=true + + c: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + with: + submodules: false + + - uses: mlugg/setup-zig@v2 + + - name: Debug + if: matrix.os != 'ubuntu-latest' + run: zig build c -Doptimize=Debug + + - name: Release + run: zig build c -Doptimize=ReleaseFast + + wasm: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + with: + submodules: false + + - uses: mlugg/setup-zig@v2 + + - name: Debug + if: matrix.os != 'ubuntu-latest' + run: zig build wasm -Doptimize=Debug + + - name: Release + run: zig build wasm -Doptimize=ReleaseFast diff --git a/build.zig b/build.zig index 67f1d55..637f43d 100644 --- a/build.zig +++ b/build.zig @@ -23,13 +23,16 @@ const Builder = struct { optimize: Optimize, pub fn init(b: *std.Build) Self { + const options = b.addOptions(); const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); + const core = b.addModule(@tagName(.core), .{ .root_source_file = b.path(@tagName(.core) ++ "/lib.zig"), .target = target, .optimize = optimize, }); + const io = b.addModule(@tagName(.io), .{ .root_source_file = b.path(@tagName(.io) ++ "/lib.zig"), .target = target, @@ -40,7 +43,7 @@ const Builder = struct { return .{ .b = b, - .options = b.addOptions(), + .options = options, .target = target, .optimize = optimize, }; @@ -80,14 +83,22 @@ const Builder = struct { self.addImport(example, .core); self.addImport(example, .io); - const run = self.b.addRunArtifact(example); - run.step.dependOn(self.b.getInstallStep()); + const ci = self.b.option(bool, "ci", "Running in CI") orelse false; - if (self.b.args) |args| { - run.addArgs(args); - } + if (ci) { + const install_example = self.b.addInstallArtifact(example, .{}); + install_example.step.dependOn(self.b.getInstallStep()); + step.dependOn(&install_example.step); + } else { + const run_example = self.b.addRunArtifact(example); + run_example.step.dependOn(self.b.getInstallStep()); - step.dependOn(&run.step); + if (self.b.args) |args| { + run_example.addArgs(args); + } + + step.dependOn(&run_example.step); + } } pub fn tests(self: *Self) void {