Skip to content

Commit ac528b0

Browse files
committed
Initial commit
0 parents  commit ac528b0

File tree

16 files changed

+524
-0
lines changed

16 files changed

+524
-0
lines changed

.ci/build.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
3+
set -x
4+
set -e
5+
6+
git -C externals/cetech1/ submodule update --init
7+
8+
zig build init
9+
zig build -Dexternals_optimize=Debug -Dwith_shaderc=false
10+
11+
ls -Rhan zig-out/

.github/workflows/test.yaml

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
name: Test
2+
3+
permissions:
4+
checks: write
5+
6+
on:
7+
pull_request:
8+
push:
9+
10+
concurrency:
11+
group: ${{ github.head_ref || github.run_id }}-${{ github.actor }}
12+
cancel-in-progress: true
13+
14+
jobs:
15+
validation:
16+
name: Validation
17+
runs-on: ubuntu-latest
18+
timeout-minutes: 1
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@v4
22+
23+
- name: Read .zig-version
24+
id: zigversion
25+
uses: juliangruber/read-file-action@v1
26+
with:
27+
path: ./.zigversion
28+
- name: Install Zig
29+
uses: mlugg/setup-zig@v1
30+
with:
31+
version: ${{ steps.zigversion.outputs.content }}
32+
33+
- name: Lint
34+
run: zig fmt --check . --exclude externals/
35+
36+
# TODO: Fix me
37+
x86-64-linux:
38+
needs: ["validation"]
39+
name: x86-64 Linux
40+
runs-on: ubuntu-latest
41+
timeout-minutes: 20
42+
steps:
43+
- name: Checkout
44+
uses: actions/checkout@v4
45+
with:
46+
submodules: true
47+
48+
- name: Prepare
49+
uses: awalsh128/cache-apt-pkgs-action@latest
50+
with:
51+
packages: libdbus-1-dev
52+
version: 1.0
53+
54+
- name: Read .zig-version
55+
id: zigversion
56+
uses: juliangruber/read-file-action@v1
57+
with:
58+
path: ./.zigversion
59+
- name: Install Zig
60+
uses: mlugg/setup-zig@v1
61+
with:
62+
version: ${{ steps.zigversion.outputs.content }}
63+
64+
- name: Build
65+
run: .ci/build.sh
66+
67+
# FIXME: this works on cetech1 CI but not in this repo.
68+
# x86-64-macos:
69+
# needs: ["validation"]
70+
# name: x86-64 Macos
71+
# runs-on: macos-latest
72+
# timeout-minutes: 20
73+
# steps:
74+
# - name: Checkout
75+
# uses: actions/checkout@v4
76+
# with:
77+
# submodules: true
78+
79+
# - name: Read .zig-version
80+
# id: zigversion
81+
# uses: juliangruber/read-file-action@v1
82+
# with:
83+
# path: ./.zigversion
84+
# - name: Install Zig
85+
# uses: mlugg/setup-zig@v1
86+
# with:
87+
# version: ${{ steps.zigversion.outputs.content }}
88+
89+
# - name: Build
90+
# run: .ci/build.sh
91+
92+
# FIXME: this works on cetech1 CI but not in this repo.
93+
# x86-64-windows:
94+
# needs: ["validation"]
95+
# name: x86-64 Windows
96+
# runs-on: windows-latest
97+
# timeout-minutes: 20
98+
# steps:
99+
# - name: Checkout
100+
# uses: actions/checkout@v4
101+
# with:
102+
# submodules: true
103+
104+
# - name: Read .zig-version
105+
# id: zigversion
106+
# uses: juliangruber/read-file-action@v1
107+
# with:
108+
# path: ./.zigversion
109+
# - name: Install Zig
110+
# uses: mlugg/setup-zig@v1
111+
# with:
112+
# version: ${{ steps.zigversion.outputs.content }}
113+
114+
# - name: Build
115+
# shell: bash
116+
# run: .ci/build.sh

.gitignore

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Build
2+
/build
3+
4+
# ZIG
5+
*zig-cache
6+
*zig-out
7+
8+
# VSCode
9+
10+
# MacOS
11+
*.DS_Store
12+
.DS_Store
13+
*.dylib
14+
15+
# Xcode
16+
*.pbxuser
17+
*.mode1v3
18+
*.mode2v3
19+
*.perspectivev3
20+
*.xcuserstate
21+
project.xcworkspace/
22+
xcuserdata/
23+
24+
kcov-output/
25+
26+
imgui.ini
27+
28+
_static.zig
29+
30+
# VSCode
31+
.vscode/launch.json
32+
.vscode/settings.json
33+
34+
# temp folder for tests
35+
/fixtures/tmp
36+
37+
# folder for generated tmp data, cache and debug purpose files
38+
.ct_temp
39+

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "externals/cetech1"]
2+
path = externals/cetech1
3+
url = https://github.com/cyberegoorg/cetech1.git

.version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0.1.0-a1

.vscode/extensions.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"recommendations": [
3+
"ziglang.vscode-zig", // ZIG support
4+
"vadimcn.vscode-lldb", // Debugging support
5+
"Gruntfuggly.todo-tree", // Todo viewer
6+
"kdheepak.d2-markdown-preview", // D2 preview
7+
"oderwat.indent-rainbow", // Bring colors to life
8+
"MalcolmMielle.semantic-highlighting" // More colors to life
9+
]
10+
}

.zigversion

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2024.11.0-mach

README.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# [CETech1](https://github.com/cyberegoorg/cetech1) minimal project
2+
3+
> [!IMPORTANT]
4+
> Work in progressssssssssssss
5+
6+
## Getting started
7+
8+
1. Create repository from this template.
9+
10+
2. [Get ZIG](https://cyberegoorg.github.io/cetech1/getting-started.html#get-zig)
11+
12+
3. [Get ZLS](https://cyberegoorg.github.io/cetech1/getting-started.html#zls)
13+
14+
4. Init
15+
16+
```sh
17+
git -C externals/cetech1/ submodule update --init
18+
zig build init
19+
```
20+
21+
5. Build
22+
23+
```sh
24+
zig build
25+
```
26+
27+
6. Create CETech1 project in `content` dir
28+
29+
```sh
30+
zig-out/bin/cetech1 --asset-root content/
31+
```
32+
33+
7. Add `content` dir with project to git
34+
35+
```sh
36+
git add content/
37+
```
38+
39+
8. Have fun

build.zig

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
const std = @import("std");
2+
const builtin = @import("builtin");
3+
4+
const min_zig_version = std.SemanticVersion.parse("0.14.0-dev.1911") catch @panic("Where is .zigversion?");
5+
const version = std.SemanticVersion.parse(@embedFile(".version")) catch @panic("Where is .version?");
6+
7+
const cetech1_build = @import("cetech1");
8+
9+
const enabled_cetech_modules = cetech1_build.core_modules ++ cetech1_build.editor_modules;
10+
11+
pub const modules = [_][]const u8{
12+
// Minimal
13+
"minimal",
14+
};
15+
16+
pub fn build(b: *std.Build) !void {
17+
try ensureZigVersion();
18+
19+
const target = b.standardTargetOptions(.{});
20+
const optimize = b.standardOptimizeOption(.{});
21+
22+
//
23+
// OPTIONS
24+
//
25+
26+
const options = .{
27+
.externals_optimize = b.option(std.builtin.OptimizeMode, "externals_optimize", "Optimize for externals libs") orelse .ReleaseFast,
28+
.dynamic_modules = b.option(bool, "dynamic_modules", "build all modules in dynamic mode.") orelse true,
29+
//.static_modules = b.option(bool, "static_modules", "build all modules in static mode.") orelse false,
30+
31+
// Tracy options
32+
.enable_tracy = b.option(bool, "with_tracy", "build with tracy.") orelse true,
33+
.tracy_on_demand = b.option(bool, "tracy_on_demand", "build tracy with TRACY_ON_DEMAND") orelse true,
34+
35+
.enable_shaderc = b.option(bool, "with_shaderc", "build with shaderc support") orelse true,
36+
};
37+
38+
const options_step = b.addOptions();
39+
options_step.addOption(std.SemanticVersion, "version", version);
40+
41+
// add build args
42+
inline for (std.meta.fields(@TypeOf(options))) |field| {
43+
options_step.addOption(field.type, field.name, @field(options, field.name));
44+
}
45+
const options_module = options_step.createModule();
46+
_ = options_module; // autofix
47+
48+
//
49+
// Extrnals
50+
//
51+
52+
// Cetech1
53+
const cetech1 = b.dependency(
54+
"cetech1",
55+
.{
56+
.target = target,
57+
.optimize = optimize,
58+
.externals_optimize = options.externals_optimize,
59+
60+
.with_tracy = options.enable_tracy,
61+
.tracy_on_demand = options.tracy_on_demand,
62+
63+
.with_shaderc = options.enable_shaderc,
64+
65+
//.static_modules = options.static_modules,
66+
.dynamic_modules = options.dynamic_modules,
67+
},
68+
);
69+
70+
//
71+
// TOOLS
72+
//
73+
74+
const generate_vscode_tool = b.addExecutable(.{
75+
.name = "generate_vscode",
76+
.root_source_file = b.path("tools/generate_vscode.zig"),
77+
.target = target,
78+
});
79+
generate_vscode_tool.root_module.addAnonymousImport("generate_vscode", .{
80+
.root_source_file = b.path("externals/cetech1/src/tools/generate_vscode.zig"),
81+
});
82+
83+
//
84+
// Init repository step
85+
//
86+
const init_step = b.step("init", "init repository");
87+
cetech1_build.initStep(b, init_step, "externals/cetech1/");
88+
89+
//
90+
// Gen vscode
91+
//
92+
const vscode_step = b.step("vscode", "init/update vscode configs");
93+
const gen_vscode = b.addRunArtifact(generate_vscode_tool);
94+
gen_vscode.addDirectoryArg(b.path(".vscode/"));
95+
vscode_step.dependOn(&gen_vscode.step);
96+
97+
if (options.enable_shaderc) {
98+
b.installArtifact(cetech1.artifact("shaderc"));
99+
}
100+
101+
if (options.dynamic_modules) {
102+
b.installArtifact(cetech1.artifact("cetech1"));
103+
104+
var buff: [256:0]u8 = undefined;
105+
106+
// CETech modules
107+
for (enabled_cetech_modules) |m| {
108+
const artifact_name = try std.fmt.bufPrintZ(&buff, "ct_{s}", .{m});
109+
const art = cetech1.artifact(artifact_name);
110+
const step = b.addInstallArtifact(art, .{});
111+
b.default_step.dependOn(&step.step);
112+
}
113+
114+
// Project modules
115+
for (modules) |m| {
116+
const artifact_name = try std.fmt.bufPrintZ(&buff, "ct_{s}", .{m});
117+
const art = b.dependency(m, .{
118+
.target = target,
119+
.optimize = optimize,
120+
}).artifact(artifact_name);
121+
122+
const step = b.addInstallArtifact(art, .{});
123+
b.default_step.dependOn(&step.step);
124+
}
125+
}
126+
}
127+
128+
fn ensureZigVersion() !void {
129+
var installed_ver = builtin.zig_version;
130+
installed_ver.build = null;
131+
132+
if (installed_ver.order(min_zig_version) == .lt) {
133+
std.log.err("\n" ++
134+
\\---------------------------------------------------------------------------
135+
\\
136+
\\Installed Zig compiler version is too old.
137+
\\
138+
\\Min. required version: {any}
139+
\\Installed version: {any}
140+
\\
141+
\\Please install newer version and try again.
142+
\\zig/get_zig.sh <ARCH>
143+
\\
144+
\\---------------------------------------------------------------------------
145+
\\
146+
, .{ min_zig_version, installed_ver });
147+
return error.ZigIsTooOld;
148+
}
149+
}

build.zig.zon

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.{
2+
.name = "cetech1-minimal",
3+
.version = "0.1.0",
4+
.paths = .{
5+
"build.zig",
6+
"build.zig.zon",
7+
"README.md",
8+
},
9+
.dependencies = .{
10+
.cetech1 = .{ .path = "externals/cetech1" },
11+
12+
//
13+
// Modules
14+
//
15+
.minimal = .{ .path = "modules/minimal" },
16+
},
17+
}

0 commit comments

Comments
 (0)