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); b.installArtifact(lib); const main_tests = b.addTest(.{ .root_source_file = .{ .path = "tests/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"}, }); step.defineCMacro("FLECS_NO_CPP", null); step.defineCMacro("FLECS_USE_OS_ALLOC", null); if (@import("builtin").mode == .Debug) step.defineCMacro("FLECS_SANITIZE", null); if (step.target.isWindows()) step.linkSystemLibraryName("ws2_32"); }