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 liblabjackusb = b.addStaticLibrary(.{ .name = "labjackusb", .target = target, .optimize = optimize, .link_libc = true, }); if (optimize == .Debug) { liblabjackusb.defineCMacro("LJ_DEBUG", "1"); } liblabjackusb.addCSourceFile(.{ .file = b.path("liblabjackusb/labjackusb.c") }); liblabjackusb.installHeader(b.path("liblabjackusb/labjackusb.h"), "labjackusb.h"); // udev rules should be installed to /lib/udev/rules.d or /etc/udev/rules.d // udevadm control --reload-rules // /etc/init.d/udev-post reload // udevstart const usb_dep = b.dependency( "usb", .{ .target = target, .optimize = optimize, .use_udev = libusb_use_udev, .enable_logging = libusb_enable_logging, .enable_debug_logging = libusb_enable_debug_logging, }, ); liblabjackusb.linkLibrary(usb_dep.artifact("usb")); b.installArtifact(liblabjackusb); }