terrain

Endless caves
git clone git://git.electrosoup.com/terrain
Log | Files | Refs | README | LICENSE

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 }