const std = @import("std");
const microzig = @import("microzig");

const MicroBuild = microzig.MicroBuild(.{
    .rp2xxx = true,
});

pub fn build(b: *std.Build) void {
    const mz_dep = b.dependency("microzig", .{});
    const mb = MicroBuild.init(b, mz_dep) orelse return;

    // build options
    const opt_board = b.option(Board, "board", "BoardConfig to use") orelse .pico;
    const opt_uart = b.option(bool, "uart", "Enable UART logging") orelse true;
    const options = b.addOptions();
    options.addOption(Board, "board", opt_board);
    options.addOption(bool, "uart", opt_uart);
    const opt_module = options.createModule();

    const firmware = mb.add_firmware(.{
        .name = "RP2040Decoder",
        .target = mb.ports.rp2xxx.boards.raspberrypi.pico,
        .optimize = .ReleaseSmall,
        .root_source_file = b.path("src/main.zig"),
    });
    firmware.app_mod.addImport("build_options", opt_module);

    mb.install_firmware(firmware, .{});
}

const Board = enum {
    pico,
    gabk,
};