build.zig (1502B)
1 const std = @import("std"); 2 3 pub fn build(b: *std.Build) !void { 4 const target = b.standardTargetOptions(.{}); 5 const optimize = b.standardOptimizeOption(.{}); 6 7 const lib = b.addStaticLibrary(.{ 8 .name = "engine", 9 .target = target, 10 .optimize = optimize, 11 }); 12 13 var sources = std.ArrayList([]const u8).init(b.allocator); 14 { 15 var dir = try std.fs.cwd().openIterableDir("src/engine", .{}); 16 var walker = try dir.walk(b.allocator); 17 defer walker.deinit(); 18 19 while (try walker.next()) |entry| { 20 const ext = std.fs.path.extension(entry.basename); 21 if (std.mem.eql(u8, ext, ".c")) { 22 try sources.append(b.pathJoin(&.{ "src/engine", entry.path })); 23 } 24 } 25 } 26 lib.addCSourceFiles(sources.items, &[_][]const u8{}); 27 lib.addIncludePath(std.build.LazyPath.relative("include")); 28 lib.addIncludePath(std.build.LazyPath.relative("include/engine")); 29 30 const exe = b.addExecutable(.{ 31 .name = "app", 32 .target = target, 33 .optimize = optimize, 34 }); 35 exe.addCSourceFile(.{ 36 .file = std.build.LazyPath.relative("src/app/main.c"), 37 .flags = &.{}, 38 }); 39 exe.addIncludePath(std.build.LazyPath.relative("include")); 40 exe.linkLibrary(lib); 41 exe.addObjectFile(std.build.LazyPath.relative("lib/libglfw3.a")); 42 exe.linkFramework("Cocoa"); 43 exe.linkFramework("IOKit"); 44 exe.linkFramework("OpenGL"); 45 b.installArtifact(exe); 46 }