|
@@ -40,6 +40,17 @@ pub fn addRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
|
|
return raylib;
|
|
|
}
|
|
|
|
|
|
+fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend) void {
|
|
|
+ raylib.defineCMacro("PLATFORM_DESKTOP", null);
|
|
|
+
|
|
|
+ switch (platform) {
|
|
|
+ .glfw => raylib.defineCMacro("PLATFORM_DESKTOP_GLFW", null),
|
|
|
+ .rgfw => raylib.defineCMacro("PLATFORM_DESKTOP_RGFW", null),
|
|
|
+ .sdl => raylib.defineCMacro("PLATFORM_DESKTOP_SDL", null),
|
|
|
+ else => {}
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode, options: Options) !*std.Build.Step.Compile {
|
|
|
raylib_flags_arr.clearRetainingCapacity();
|
|
|
|
|
@@ -102,7 +113,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
|
|
raylib.linkLibC();
|
|
|
|
|
|
// No GLFW required on PLATFORM_DRM
|
|
|
- if (!options.platform_drm) {
|
|
|
+ if (options.platform != .drm) {
|
|
|
raylib.addIncludePath(b.path("src/external/glfw/include"));
|
|
|
}
|
|
|
|
|
@@ -136,10 +147,10 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
|
|
raylib.linkSystemLibrary("gdi32");
|
|
|
raylib.linkSystemLibrary("opengl32");
|
|
|
|
|
|
- raylib.defineCMacro("PLATFORM_DESKTOP", null);
|
|
|
+ setDesktopPlatform(raylib, options.platform);
|
|
|
},
|
|
|
.linux => {
|
|
|
- if (!options.platform_drm) {
|
|
|
+ if (options.platform != .drm) {
|
|
|
try c_source_files.append("rglfw.c");
|
|
|
raylib.linkSystemLibrary("GL");
|
|
|
raylib.linkSystemLibrary("rt");
|
|
@@ -177,7 +188,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
|
|
waylandGenerate(b, raylib, "xdg-activation-v1.xml", "xdg-activation-v1-client-protocol");
|
|
|
waylandGenerate(b, raylib, "idle-inhibit-unstable-v1.xml", "idle-inhibit-unstable-v1-client-protocol");
|
|
|
}
|
|
|
- raylib.defineCMacro("PLATFORM_DESKTOP", null);
|
|
|
+ setDesktopPlatform(raylib, options.platform);
|
|
|
} else {
|
|
|
if (options.opengl_version == .auto) {
|
|
|
raylib.linkSystemLibrary("GLESv2");
|
|
@@ -211,7 +222,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
|
|
raylib.linkSystemLibrary("Xxf86vm");
|
|
|
raylib.linkSystemLibrary("Xcursor");
|
|
|
|
|
|
- raylib.defineCMacro("PLATFORM_DESKTOP", null);
|
|
|
+ setDesktopPlatform(raylib, options.platform);
|
|
|
},
|
|
|
.macos => {
|
|
|
// On macos rglfw.c include Objective-C files.
|
|
@@ -227,7 +238,7 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.
|
|
|
raylib.linkFramework("AppKit");
|
|
|
raylib.linkFramework("IOKit");
|
|
|
|
|
|
- raylib.defineCMacro("PLATFORM_DESKTOP", null);
|
|
|
+ setDesktopPlatform(raylib, options.platform);
|
|
|
},
|
|
|
.emscripten => {
|
|
|
raylib.defineCMacro("PLATFORM_WEB", null);
|
|
@@ -286,7 +297,7 @@ pub const Options = struct {
|
|
|
rtext: bool = true,
|
|
|
rtextures: bool = true,
|
|
|
raygui: bool = false,
|
|
|
- platform_drm: bool = false,
|
|
|
+ platform: PlatformBackend = .glfw,
|
|
|
shared: bool = false,
|
|
|
linux_display_backend: LinuxDisplayBackend = .Both,
|
|
|
opengl_version: OpenglVersion = .auto,
|
|
@@ -323,6 +334,13 @@ pub const LinuxDisplayBackend = enum {
|
|
|
Both,
|
|
|
};
|
|
|
|
|
|
+pub const PlatformBackend = enum {
|
|
|
+ glfw,
|
|
|
+ rgfw,
|
|
|
+ sdl,
|
|
|
+ drm
|
|
|
+};
|
|
|
+
|
|
|
pub fn build(b: *std.Build) !void {
|
|
|
// Standard target options allows the person running `zig build` to choose
|
|
|
// what target to build for. Here we do not override the defaults, which
|
|
@@ -336,7 +354,7 @@ pub fn build(b: *std.Build) !void {
|
|
|
|
|
|
const defaults = Options{};
|
|
|
const options = Options{
|
|
|
- .platform_drm = b.option(bool, "platform_drm", "Compile raylib in native mode (no X11)") orelse defaults.platform_drm,
|
|
|
+ .platform = b.option(PlatformBackend, "platform", "Choose the platform backedn for desktop target") orelse defaults.platform,
|
|
|
.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,
|