summaryrefslogtreecommitdiff
path: root/build.zig
diff options
context:
space:
mode:
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig68
1 files changed, 55 insertions, 13 deletions
diff --git a/build.zig b/build.zig
index 048b263..762efee 100644
--- a/build.zig
+++ b/build.zig
@@ -1,6 +1,33 @@
const std = @import("std");
-const raySdk = @import("raylib/src/build.zig");
+const raySdk = @import("raylib");
+
+pub const Options = struct {
+ raudio: bool = true,
+ rmodels: bool = true,
+ rshapes: bool = true,
+ rtext: bool = true,
+ rtextures: bool = true,
+ platform_drm: bool = false,
+ shared: bool = false,
+ linux_display_backend: LinuxDisplayBackend = .X11,
+ opengl_version: OpenglVersion = .auto,
+};
+
+pub const OpenglVersion = enum {
+ auto,
+ gl_1_1,
+ gl_2_1,
+ gl_3_3,
+ gl_4_3,
+ gles_2,
+ gles_3,
+};
+
+pub const LinuxDisplayBackend = enum {
+ X11,
+ Wayland,
+};
// Although this function looks imperative, note that its job is to
// declaratively construct a build graph that will be executed by an external
@@ -16,23 +43,38 @@ pub fn build(b: *std.Build) !void {
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. Here we do not
// set a preferred release mode, allowing the user to decide how to optimize.
const optimize = b.standardOptimizeOption(.{});
- const defaults = raySdk.Options{};
- const options = raySdk.Options{
+ const defaults = Options{};
+ const options = Options{
.platform_drm = b.option(bool, "platform_drm", "Compile raylib in native mode (no X11)") orelse defaults.platform_drm,
.raudio = b.option(bool, "raudio", "Compile with audio support") orelse defaults.raudio,
.rmodels = b.option(bool, "rmodels", "Compile with models support") orelse defaults.rmodels,
.rtext = b.option(bool, "rtext", "Compile with text support") orelse defaults.rtext,
.rtextures = b.option(bool, "rtextures", "Compile with textures support") orelse defaults.rtextures,
.rshapes = b.option(bool, "rshapes", "Compile with shapes support") orelse defaults.rshapes,
- .raygui = b.option(bool, "raygui", "Compile with raygui support") orelse defaults.raygui,
+ .shared = b.option(bool, "shared", "Compile as shared library") orelse defaults.shared,
+ .linux_display_backend = b.option(LinuxDisplayBackend, "linux_display_backend", "Linux display backend to use") orelse defaults.linux_display_backend,
+ .opengl_version = b.option(OpenglVersion, "opengl_version", "OpenGL version to use") orelse defaults.opengl_version,
};
- const raylib = try raySdk.addRaylib(b, target, optimize, options);
+
+ const raylib = b.dependency("raylib", .{
+ .target = target,
+ .optimize = optimize,
+ .raudio = options.raudio,
+ .rmodels = options.rmodels,
+ .rshapes = options.rshapes,
+ .rtext = options.rtext,
+ .rtextures = options.rtextures,
+ .platform_drm = options.platform_drm,
+ .shared = options.shared,
+ .linux_display_backend = options.linux_display_backend,
+ .opengl_version = options.opengl_version,
+ });
const lib = b.addStaticLibrary(.{
- .name = "zigdown",
+ .name = "shipit",
// In this case the main source file is merely a path, however, in more
// complicated build scripts, this could be a generated file.
- .root_source_file = .{ .path = "src/root.zig" },
+ .root_source_file = b.path("src/root.zig"),
.target = target,
.optimize = optimize,
});
@@ -46,7 +88,7 @@ pub fn build(b: *std.Build) !void {
.name = "zig-raylib",
// In this case the main source file is merely a path, however, in more
// complicated build scripts, this could be a generated file.
- .root_source_file = .{ .path = "src/main.zig" },
+ .root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
});
@@ -56,15 +98,15 @@ pub fn build(b: *std.Build) !void {
.name = "zig-raylib",
// In this case the main source file is merely a path, however, in more
// complicated build scripts, this could be a generated file.
- .root_source_file = .{ .path = "src/main.zig" },
+ .root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
});
const check = b.step("check", "Check if it compiles");
check.dependOn(&exe_check.step);
- exe.addIncludePath(.{ .path = "raylib/src" });
- exe.linkLibrary(raylib);
+ exe.addIncludePath(b.path("raylib/src"));
+ exe.linkLibrary(raylib.artifact("raylib"));
// This declares intent for the executable to be installed into the
// standard location when the user invokes the "install" step (the default
@@ -97,14 +139,14 @@ pub fn build(b: *std.Build) !void {
// Creates a step for unit testing. This only builds the test executable
// but does not run it.
const lib_unit_tests = b.addTest(.{
- .root_source_file = .{ .path = "src/root.zig" },
+ .root_source_file = b.path("src/root.zig"),
.target = target,
.optimize = optimize,
});
const run_lib_unit_tests = b.addRunArtifact(lib_unit_tests);
const unit_tests = b.addTest(.{
- .root_source_file = .{ .path = "src/main.zig" },
+ .root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
});