const std = @import("std"); pub fn build(b: *std.Build) !void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); const libusb_use_udev = b.option( bool, "libusb_use_udev", "libusb: link and use udev (Linux only. Default: false)", ) orelse false; const libusb_enable_logging = b.option( bool, "libusb_enable_logging", "enable libusb's built-in logging (Default: false)", ) orelse false; const libusb_enable_debug_logging = b.option( bool, "libusb_enable_debug_logging", "enable libusb's debug logging (Default: false)", ) orelse false; const libljacklm = b.addStaticLibrary(.{ .name = "ljacklm", .target = target, .optimize = optimize, .link_libc = true, }); if (optimize == .Debug) { libljacklm.defineCMacro("LJ_DEBUG", "1"); } if (target.result.os.tag == .windows) { libljacklm.defineCMacro("LJACKLM_USE_WINDOWS_MUTEX_SHIM", "1"); } libljacklm.addCSourceFile(.{ .file = b.path("libljacklm/ljacklm.c") }); libljacklm.installHeader(b.path("libljacklm/ljacklm.h"), "ljacklm.h"); const usb_dep = b.dependency( "labjackusb", .{ .target = target, .optimize = optimize, .libusb_use_udev = libusb_use_udev, .libusb_enable_logging = libusb_enable_logging, .libusb_enable_debug_logging = libusb_enable_debug_logging, }, ); libljacklm.linkLibrary(usb_dep.artifact("labjackusb")); b.installArtifact(libljacklm); }