| 
				
				
				
				 | 
			
			 | 
			
			@ -1,6 +1,7 @@ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			const std = @import("std"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			const builtin = @import("builtin"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// This has been tested to work with zig 0.11.0 (67709b6, Aug 4 2023) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// This has been tested to work with zig 0.11.0 and zig 0.12.0-dev.1390+94cee4fb2 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			pub fn addRaylib(b: *std.Build, target: std.zig.CrossTarget, optimize: std.builtin.OptimizeMode, options: Options) *std.Build.CompileStep { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    const raylib_flags = &[_][]const u8{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        "-std=gnu99", | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -20,55 +21,37 @@ pub fn addRaylib(b: *std.Build, target: std.zig.CrossTarget, optimize: std.built | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        raylib.addIncludePath(.{ .path = srcdir ++ "/external/glfw/include" }); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            srcdir ++ "/rcore.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            srcdir ++ "/utils.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        srcdir ++ "/rcore.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        srcdir ++ "/utils.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    }, raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (options.raudio) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                srcdir ++ "/raudio.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            srcdir ++ "/raudio.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }, raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (options.rmodels) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                srcdir ++ "/rmodels.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            &[_][]const u8{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                "-fno-sanitize=undefined", // https://github.com/raysan5/raylib/issues/1891 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } ++ raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            srcdir ++ "/rmodels.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }, &[_][]const u8{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            "-fno-sanitize=undefined", // https://github.com/raysan5/raylib/issues/1891 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } ++ raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (options.rshapes) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                srcdir ++ "/rshapes.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            srcdir ++ "/rshapes.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }, raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (options.rtext) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                srcdir ++ "/rtext.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            srcdir ++ "/rtext.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }, raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (options.rtextures) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                srcdir ++ "/rtextures.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            srcdir ++ "/rtextures.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }, raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    var gen_step = b.addWriteFiles(); | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -83,10 +66,9 @@ pub fn addRaylib(b: *std.Build, target: std.zig.CrossTarget, optimize: std.built | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    switch (target.getOsTag()) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        .windows => { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                &.{srcdir ++ "/rglfw.c"}, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                srcdir ++ "/rglfw.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }, raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkSystemLibrary("winmm"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkSystemLibrary("gdi32"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkSystemLibrary("opengl32"); | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -96,10 +78,9 @@ pub fn addRaylib(b: *std.Build, target: std.zig.CrossTarget, optimize: std.built | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        .linux => { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (!options.platform_drm) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    &.{srcdir ++ "/rglfw.c"}, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                    srcdir ++ "/rglfw.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                }, raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                raylib.linkSystemLibrary("GL"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                raylib.linkSystemLibrary("rt"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                raylib.linkSystemLibrary("dl"); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -127,10 +108,9 @@ pub fn addRaylib(b: *std.Build, target: std.zig.CrossTarget, optimize: std.built | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        .freebsd, .openbsd, .netbsd, .dragonfly => { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                &.{srcdir ++ "/rglfw.c"}, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                raylib_flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                srcdir ++ "/rglfw.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }, raylib_flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkSystemLibrary("GL"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkSystemLibrary("rt"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkSystemLibrary("dl"); | 
			
		
		
	
	
		
			
				| 
				
				
				
					
						
					
				
				 | 
			
			 | 
			
			@ -149,10 +129,9 @@ pub fn addRaylib(b: *std.Build, target: std.zig.CrossTarget, optimize: std.built | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            const raylib_flags_extra_macos = &[_][]const u8{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                "-ObjC", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.addCSourceFiles( | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                &.{srcdir ++ "/rglfw.c"}, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                raylib_flags ++ raylib_flags_extra_macos, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            ); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            addCSourceFilesVersioned(raylib, &.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			                srcdir ++ "/rglfw.c", | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            }, raylib_flags ++ raylib_flags_extra_macos); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkFramework("Foundation"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkFramework("CoreServices"); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            raylib.linkFramework("CoreGraphics"); | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -235,3 +214,14 @@ const srcdir = struct { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        return std.fs.path.dirname(@src().file).?; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			}.getSrcDir(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			fn addCSourceFilesVersioned(exe: *std.Build.Step.Compile, files: []const []const u8, flags: []const []const u8) void { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (comptime builtin.zig_version.minor >= 12) { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        exe.addCSourceFiles(.{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            .files = files, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            .flags = flags, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } else { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        exe.addCSourceFiles(files, flags); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} |