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, }); lib.linkLibC(); lib.addIncludePath(.{ .path = thisDir() ++ "/flecs" }); lib.addCSourceFile(.{ .file = .{ .path = thisDir() ++ "/flecs/flecs.c" }, .flags = &.{"-fno-sanitize=undefined"}, }); lib.defineCMacro("FLECS_NO_CPP", null); lib.defineCMacro("FLECS_USE_OS_ALLOC", null); if (@import("builtin").mode == .Debug) lib.defineCMacro("FLECS_SANITIZE", null); if (lib.target.isWindows()) lib.linkSystemLibraryName("ws2_32"); b.installArtifact(lib); const main_tests = b.addTest(.{ .root_source_file = .{ .path = "src/main.zig" }, .target = target, .optimize = optimize, }); main_tests.linkLibC(); main_tests.addIncludePath(.{ .path = thisDir() ++ "/flecs" }); main_tests.addCSourceFile(.{ .file = .{ .path = thisDir() ++ "/flecs/flecs.c" }, .flags = &.{"-fno-sanitize=undefined"}, }); main_tests.defineCMacro("FLECS_NO_CPP", null); main_tests.defineCMacro("FLECS_USE_OS_ALLOC", null); main_tests.defineCMacro("FLECS_SANITIZE", null); if (main_tests.target.isWindows()) main_tests.linkSystemLibraryName("ws2_32"); const run_main_tests = b.addRunArtifact(main_tests); const test_step = b.step("test", "Run library tests"); test_step.dependOn(&run_main_tests.step); } inline fn thisDir() []const u8 { return comptime std.fs.path.dirname(@src().file) orelse "."; }