Skip to content

Commit a7562c6

Browse files
committed
Tests cross compilation in CI, workaround for xscrnsaver hash depending on platform
1 parent 878ff1a commit a7562c6

File tree

3 files changed

+28
-7
lines changed

3 files changed

+28
-7
lines changed

.github/workflows/ci.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,8 @@ jobs:
3333
if: runner.os != 'Windows' # zig fmt failing on Windows CI, unclear why
3434
run: zig fmt --ast-check --check .
3535

36-
- name: Build
37-
run: zig build --summary all
36+
- name: Build for Windows
37+
run: zig build -Dtarget=x86_64-windows-gnu --summary all
38+
39+
- name: Build for Linux
40+
run: zig build -Dtarget=x86_64-linux-gnu --summary all

build.zig.zon

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,6 @@
7272
.url = "https://gitlab.freedesktop.org/xorg/lib/libxrender/-/archive/libXrender-0.9.12/libxrender-libXrender-0.9.12.tar.gz",
7373
.hash = "N-V-__8AANorBADbt-RlITZJofNvQWTiaQlv7r7lWYtxAqGx",
7474
},
75-
.xscrnsaver = .{
76-
.url = "https://gitlab.freedesktop.org/xorg/lib/libxscrnsaver/-/archive/libXScrnSaver-1.2.4/libxscrnsaver-libXScrnSaver-1.2.4.tar.gz",
77-
.hash = "N-V-__8AAMXRAAAKIBB3YHvwcykG71lH-HtylfJ0AV048a7V",
78-
},
7975
.decor = .{
8076
.url = "https://gitlab.freedesktop.org/libdecor/libdecor/-/archive/0.2.3/libdecor-0.2.3.tar.gz",
8177
.hash = "N-V-__8AAEG5BAAsZkN2QXLyeuqTnHEOXHHUOGPC9azQ7zq8",
@@ -116,6 +112,19 @@
116112
.hash = "N-V-__8AAH-J2wA1QFgeIKK0hLveAjq3mNnOJb96xak4HFqx",
117113
.lazy = true,
118114
},
115+
.xscrnsaver = .{
116+
// This dependency must be kept in sync with `xscrnsaver_windows` for similar reasons explained in the `pulseaudio` dependency.
117+
.url = "https://gitlab.freedesktop.org/xorg/lib/libxscrnsaver/-/archive/libXScrnSaver-1.2.4/libxscrnsaver-libXScrnSaver-1.2.4.tar.gz",
118+
.hash = "N-V-__8AAMXRAAAKIBB3YHvwcykG71lH-HtylfJ0AV048a7V",
119+
.lazy = true,
120+
},
121+
.xscrnsaver_windows = .{
122+
// This is a duplicate of `xscrnsaver`, but with a different hash due to a Zig bug that
123+
// results in a different hash on Windows than Linux.
124+
.url = "https://gitlab.freedesktop.org/xorg/lib/libxscrnsaver/-/archive/libXScrnSaver-1.2.4/libxscrnsaver-libXScrnSaver-1.2.4.tar.gz",
125+
.hash = "N-V-__8AAEO3AADhS3i2HiVniZnPqWJh33VqmmUp7JO33xqe",
126+
.lazy = true,
127+
},
119128
.alsa = .{
120129
.url = "https://github.com/alsa-project/alsa-lib/archive/refs/tags/v1.2.14.tar.gz",
121130
.hash = "N-V-__8AACPMQgBfqlZq9Kx2qUwCMrZVkl-5dDd5bVDiF06E",

src/linux.zig

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,16 @@ pub fn build(
436436
lib.addIncludePath(b.path("deps/alsa/include"));
437437
}
438438

439+
// Provide the xscrnsaver headers. Conditional is workaround for cross compilation, see
440+
// comment in `build.zig.zon`
441+
const xscrnsaver_name = switch (@import("builtin").os.tag) {
442+
.windows => "xscrnsaver_windows",
443+
else => "xscrnsaver",
444+
};
445+
if (b.lazyDependency(xscrnsaver_name, .{})) |xscrnsaver| {
446+
lib.addIncludePath(xscrnsaver.path("include"));
447+
}
448+
439449
// Provide upstream headers that don't require any special handling
440450
lib.addIncludePath(b.dependency("egl", .{}).path("api"));
441451
lib.addIncludePath(b.dependency("opengl", .{}).path("api"));
@@ -447,7 +457,6 @@ pub fn build(
447457
lib.addIncludePath(b.dependency("xfixes", .{}).path("include"));
448458
lib.addIncludePath(b.dependency("xrandr", .{}).path("include"));
449459
lib.addIncludePath(b.dependency("xrender", .{}).path("include"));
450-
lib.addIncludePath(b.dependency("xscrnsaver", .{}).path("include"));
451460
lib.addIncludePath(b.dependency("jack", .{}).path("common"));
452461
lib.addIncludePath(b.dependency("sndio", .{}).path("libsndio"));
453462
lib.addIncludePath(b.path("deps/wayland/protocols"));

0 commit comments

Comments
 (0)