const std = @import("std"); pub fn build(b: *std.Build) !void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); const module = b.createModule(.{ .source_file = .{ .path = "src/main.zig" }, }); try b.modules.put(b.dupe("flecs-zig-ble"), module); const lib = b.addStaticLibrary(.{ .name = "flecs-zig-ble", .root_source_file = .{ .path = "src/main.zig" }, .target = target, .optimize = optimize, }); setupFlecs(lib); lib.installHeader("libs/flecs/flecs.h", "flecs.h"); b.installArtifact(lib); const main_tests = b.addTest(.{ .root_source_file = .{ .path = "test/main.zig" }, // Has to be specified so tests can run autodoc tests from src/. .main_pkg_path = .{ .path = "." }, .target = target, .optimize = optimize, }); setupFlecs(main_tests); const run_main_tests = b.addRunArtifact(main_tests); const test_step = b.step("test", "Run library tests"); test_step.dependOn(&run_main_tests.step); } fn setupFlecs(step: *std.Build.CompileStep) void { step.linkLibC(); step.addIncludePath(.{ .path = "libs/flecs" }); step.addCSourceFile(.{ .file = .{ .path = "libs/flecs/flecs.c" }, .flags = &.{"-fno-sanitize=undefined"}, }); if (step.target.isWindows()) step.linkSystemLibraryName("ws2_32"); }