mirror of https://github.com/pcleavelin/zooy
				
				
				
			
		
			
				
	
	
		
			63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Zig
		
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Zig
		
	
	
| const std = @import("std");
 | |
| const raylib = @import("libs/raylib/build.zig");
 | |
| 
 | |
| // Although this function looks imperative, note that its job is to
 | |
| // declaratively construct a build graph that will be executed by an external
 | |
| // runner.
 | |
| 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
 | |
|     // means any target is allowed, and the default is native. Other options
 | |
|     // for restricting supported target set are available.
 | |
|     const target = b.standardTargetOptions(.{});
 | |
| 
 | |
|     // Standard optimization options allow the person running `zig build` to select
 | |
|     // 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 lib = b.addStaticLibrary(.{
 | |
|         .name = "zooy",
 | |
|         // 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/lib.zig" },
 | |
|         .target = target,
 | |
|         .optimize = optimize,
 | |
|     });
 | |
| 
 | |
|     raylib.addTo(b, lib, target, optimize);
 | |
| 
 | |
|     // This declares intent for the library to be installed into the standard
 | |
|     // location when the user invokes the "install" step (the default step when
 | |
|     // running `zig build`).
 | |
|     b.installArtifact(lib);
 | |
| 
 | |
|     // Creates a step for unit testing. This only builds the test executable
 | |
|     // but does not run it.
 | |
|     const main_tests = b.addTest(.{
 | |
|         .root_source_file = .{ .path = "src/main.zig" },
 | |
|         .target = target,
 | |
|         .optimize = optimize,
 | |
|     });
 | |
| 
 | |
|     const run_main_tests = b.addRunArtifact(main_tests);
 | |
| 
 | |
|     // This creates a build step. It will be visible in the `zig build --help` menu,
 | |
|     // and can be selected like this: `zig build test`
 | |
|     // This will evaluate the `test` step rather than the default, which is "install".
 | |
|     const test_step = b.step("test", "Run library tests");
 | |
|     test_step.dependOn(&run_main_tests.step);
 | |
| }
 | |
| 
 | |
| fn current_file() []const u8 {
 | |
|     return @src().file;
 | |
| }
 | |
| 
 | |
| const cwd = std.fs.path.dirname(current_file()).?;
 | |
| const sep = std.fs.path.sep_str;
 | |
| 
 | |
| pub fn addTo(exe: *std.build.LibExeObjStep) void {
 | |
|     exe.addAnonymousModule("zooy", .{ .source_file = .{ .path = cwd ++ sep ++ "src/lib.zig" } });
 | |
|     exe.addIncludePath(cwd);
 | |
| }
 |