Skip to content

Commit 21fc533

Browse files
author
Pablo Alessandro Santos Hugen
committed
Add workflow
1 parent 4bf1ee2 commit 21fc533

File tree

4 files changed

+94
-0
lines changed

4 files changed

+94
-0
lines changed

.github/workflows/ci.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Test, Package, and Release
2+
3+
on:
4+
push:
5+
branches: [main]
6+
tags: ['v*']
7+
pull_request:
8+
branches: [main]
9+
workflow_dispatch:
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- name: Check out repository
17+
uses: actions/checkout@v4
18+
with:
19+
fetch-depth: 0
20+
21+
- name: Set up Zig
22+
uses: mlugg/setup-zig@v1
23+
with:
24+
version: "master"
25+
26+
- name: Build example
27+
working-directory: ./example
28+
run: zig build cc
29+
30+
- name: Verify compile_commands.json
31+
working-directory: ./example
32+
run: |
33+
if [ ! -f "compile_commands.json" ]; then
34+
echo "error: compile_commands.json not found!"
35+
exit 1
36+
fi
37+
38+
if [ ! -s "compile_commands.json" ]; then
39+
echo "compile_commands.json is empty!"
40+
exit 1
41+
fi
42+
43+
if ! jq empty compile_commands.json 2>/dev/null; then
44+
echo "error: compile_commands.json contains invalid JSON!"
45+
exit 1
46+
fi
47+
48+
echo "compile_commands.json validation passed"
49+

example/build.zig

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const std = @import("std");
2+
const CompileCommands = @import("compile_commands");
3+
4+
pub fn build(b: *std.Build) !void {
5+
const target = b.standardTargetOptions(.{});
6+
const optimize = b.standardOptimizeOption(.{});
7+
const flags: []const []const u8 = &.{ "-gen-cdb-fragment-path", "cdb" };
8+
9+
const example_mod = b.createModule(.{
10+
.target = target,
11+
.optimize = optimize,
12+
.link_libc = true,
13+
});
14+
const example = b.addExecutable(.{
15+
.name = "example",
16+
.root_module = example_mod,
17+
});
18+
example.addCSourceFiles(.{
19+
.root = b.path("src"),
20+
.files = &.{"example.c"},
21+
.flags = flags,
22+
});
23+
24+
const cc_step = b.step("cc", "Generate Compile Commands Database");
25+
const gen_file_step = try CompileCommands.createStep(b, "cdb", "compile_commands.json");
26+
gen_file_step.dependOn(&example.step);
27+
cc_step.dependOn(gen_file_step);
28+
}

example/build.zig.zon

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
.{
2+
.name = .example,
3+
.version = "0.0.0",
4+
.fingerprint = 0x6eec9b9f0a97f862, // Changing this has security and trust implications.
5+
.minimum_zig_version = "0.15.0-dev.208+8acedfd5b",
6+
.dependencies = .{
7+
.compile_commands = .{ .path = "../" },
8+
},
9+
.paths = .{
10+
"build.zig",
11+
"build.zig.zon",
12+
"src",
13+
},
14+
}

example/src/example.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#include <stdio.h>
2+
3+
int main(void) { printf("Hello, World!\n"); }

0 commit comments

Comments
 (0)