|
@ -12,8 +12,6 @@ comptime { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend) void { |
|
|
fn setDesktopPlatform(raylib: *std.Build.Step.Compile, platform: PlatformBackend) void { |
|
|
raylib.defineCMacro("PLATFORM_DESKTOP", null); |
|
|
|
|
|
|
|
|
|
|
|
switch (platform) { |
|
|
switch (platform) { |
|
|
.glfw => raylib.defineCMacro("PLATFORM_DESKTOP_GLFW", null), |
|
|
.glfw => raylib.defineCMacro("PLATFORM_DESKTOP_GLFW", null), |
|
|
.rgfw => raylib.defineCMacro("PLATFORM_DESKTOP_RGFW", null), |
|
|
.rgfw => raylib.defineCMacro("PLATFORM_DESKTOP_RGFW", null), |
|
@ -58,6 +56,7 @@ const config_h_flags = outer: { |
|
|
var lines = std.mem.tokenizeScalar(u8, config_h, '\n'); |
|
|
var lines = std.mem.tokenizeScalar(u8, config_h, '\n'); |
|
|
while (lines.next()) |line| { |
|
|
while (lines.next()) |line| { |
|
|
if (!std.mem.containsAtLeast(u8, line, 1, "SUPPORT")) continue; |
|
|
if (!std.mem.containsAtLeast(u8, line, 1, "SUPPORT")) continue; |
|
|
|
|
|
if (std.mem.containsAtLeast(u8, line, 1, "MODULE")) continue; |
|
|
if (std.mem.startsWith(u8, line, "//")) continue; |
|
|
if (std.mem.startsWith(u8, line, "//")) continue; |
|
|
if (std.mem.startsWith(u8, line, "#if")) continue; |
|
|
if (std.mem.startsWith(u8, line, "#if")) continue; |
|
|
|
|
|
|
|
@ -94,10 +93,9 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Sets a flag indiciating the use of a custom `config.h` |
|
|
|
|
|
try raylib_flags_arr.append("-DEXTERNAL_CONFIG_FLAGS"); |
|
|
if (options.config.len > 0) { |
|
|
if (options.config.len > 0) { |
|
|
// Sets a flag indiciating the use of a custom `config.h` |
|
|
|
|
|
try raylib_flags_arr.append("-DEXTERNAL_CONFIG_FLAGS"); |
|
|
|
|
|
|
|
|
|
|
|
// Splits a space-separated list of config flags into multiple flags |
|
|
// Splits a space-separated list of config flags into multiple flags |
|
|
// |
|
|
// |
|
|
// Note: This means certain flags like `-x c++` won't be processed properly. |
|
|
// Note: This means certain flags like `-x c++` won't be processed properly. |
|
@ -126,6 +124,9 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. |
|
|
// Otherwise, append default value from config.h to compile flags |
|
|
// Otherwise, append default value from config.h to compile flags |
|
|
try raylib_flags_arr.append(flag); |
|
|
try raylib_flags_arr.append(flag); |
|
|
} |
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
// Set default config if no custome config got set |
|
|
|
|
|
try raylib_flags_arr.appendSlice(&config_h_flags); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const raylib = if (options.shared) |
|
|
const raylib = if (options.shared) |
|
@ -150,26 +151,32 @@ fn compileRaylib(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std. |
|
|
var c_source_files = try std.ArrayList([]const u8).initCapacity(b.allocator, 2); |
|
|
var c_source_files = try std.ArrayList([]const u8).initCapacity(b.allocator, 2); |
|
|
c_source_files.appendSliceAssumeCapacity(&.{ "src/rcore.c", "src/utils.c" }); |
|
|
c_source_files.appendSliceAssumeCapacity(&.{ "src/rcore.c", "src/utils.c" }); |
|
|
|
|
|
|
|
|
if (options.raudio) { |
|
|
|
|
|
try c_source_files.append("src/raudio.c"); |
|
|
|
|
|
} |
|
|
|
|
|
if (options.rmodels) { |
|
|
|
|
|
try c_source_files.append("src/rmodels.c"); |
|
|
|
|
|
} |
|
|
|
|
|
if (options.rshapes) { |
|
|
if (options.rshapes) { |
|
|
try c_source_files.append("src/rshapes.c"); |
|
|
try c_source_files.append("src/rshapes.c"); |
|
|
|
|
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RSHAPES"); |
|
|
|
|
|
} |
|
|
|
|
|
if (options.rtextures) { |
|
|
|
|
|
try c_source_files.append("src/rtextures.c"); |
|
|
|
|
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RTEXTURES"); |
|
|
} |
|
|
} |
|
|
if (options.rtext) { |
|
|
if (options.rtext) { |
|
|
try c_source_files.append("src/rtext.c"); |
|
|
try c_source_files.append("src/rtext.c"); |
|
|
|
|
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RTEXT"); |
|
|
} |
|
|
} |
|
|
if (options.rtextures) { |
|
|
|
|
|
try c_source_files.append("src/rtextures.c"); |
|
|
|
|
|
|
|
|
if (options.rmodels) { |
|
|
|
|
|
try c_source_files.append("src/rmodels.c"); |
|
|
|
|
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RMODELS"); |
|
|
|
|
|
} |
|
|
|
|
|
if (options.raudio) { |
|
|
|
|
|
try c_source_files.append("src/raudio.c"); |
|
|
|
|
|
try raylib_flags_arr.append("-DSUPPORT_MODULE_RAUDIO"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (options.opengl_version != .auto) { |
|
|
if (options.opengl_version != .auto) { |
|
|
raylib.defineCMacro(options.opengl_version.toCMacroStr(), null); |
|
|
raylib.defineCMacro(options.opengl_version.toCMacroStr(), null); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
raylib.addIncludePath(b.path("src/platforms")); |
|
|
switch (target.result.os.tag) { |
|
|
switch (target.result.os.tag) { |
|
|
.windows => { |
|
|
.windows => { |
|
|
try c_source_files.append("src/rglfw.c"); |
|
|
try c_source_files.append("src/rglfw.c"); |
|
@ -329,7 +336,7 @@ pub const Options = struct { |
|
|
|
|
|
|
|
|
const defaults = Options{}; |
|
|
const defaults = Options{}; |
|
|
|
|
|
|
|
|
fn getOptions(b: *std.Build) Options { |
|
|
|
|
|
|
|
|
pub fn getOptions(b: *std.Build) Options { |
|
|
return .{ |
|
|
return .{ |
|
|
.platform = b.option(PlatformBackend, "platform", "Choose the platform backedn for desktop target") orelse defaults.platform, |
|
|
.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, |
|
|
.raudio = b.option(bool, "raudio", "Compile with audio support") orelse defaults.raudio, |
|
|