load("//bazel:defs.bzl", "otp_header_parse", "picotool_binary_data_header")

package(default_visibility = ["//visibility:public"])

PICOTOOL_SDK_VERSION_STRING = module_version() if module_version() != None else "0.0.1-WORKSPACE"

picotool_binary_data_header(
    name = "rp2350_rom",
    src = "bootrom.end.bin",
    out = "rp2350.rom.h",
)

# TODO: Make it possible to build the prebuilt from source.
picotool_binary_data_header(
    name = "xip_ram_perms_elf",
    src = "//xip_ram_perms:xip_ram_perms_prebuilt",
    out = "xip_ram_perms_elf.h",
)

# TODO: Make it possible to build the prebuilt from source.
picotool_binary_data_header(
    name = "flash_id_bin",
    src = "//picoboot_flash_id:picoboot_flash_id_prebuilt",
    out = "flash_id_bin.h",
)

cc_library(
    name = "xip_ram_perms",
    srcs = ["xip_ram_perms.cpp"],
    hdrs = [
        "xip_ram_perms.h",
        "xip_ram_perms_elf.h",
    ],
    deps = [
        "//bazel:data_locs",
        "//lib/whereami",
    ],
)

filegroup(
    name = "data_locs_header",
    srcs = ["data_locs.h"],
)

otp_header_parse(
    name = "otp_header",
    src = "@pico-sdk//src/rp2350/hardware_regs:otp_data_header",
    out = "rp2350.json.h",
    target_compatible_with = select({
        "@rules_cc//cc/compiler:msvc-cl": ["@platforms//:incompatible"],
        "//conditions:default": [],
    }),
)

cc_binary(
    name = "picotool",
    srcs = [
        "cli.h",
        "clipp/clipp.h",
        "main.cpp",
        "otp.cpp",
        "otp.h",
        "rp2350.rom.h",
        "xip_ram_perms.cpp",
    ] + select({
        # MSVC can't handle long strings, so use this manually generated
        # header instead.
        "@rules_cc//cc/compiler:msvc-cl": [],
        "//conditions:default": ["rp2350.json.h"],
    }),
    copts = select({
        "@rules_cc//cc/compiler:msvc-cl": [
            "/std:c++20",
        ],
        "//conditions:default": [
            "-fexceptions",
            "-Wno-delete-non-abstract-non-virtual-dtor",
            "-Wno-reorder-ctor",
            "-Wno-unused-variable",
            "-Wno-unused-but-set-variable",
        ],
    }),
    defines = [
        'PICOTOOL_VERSION=\\"{}\\"'.format(PICOTOOL_SDK_VERSION_STRING),
        'SYSTEM_VERSION=\\"host\\"',
        'COMPILER_INFO=\\"local\\"',
        "SUPPORT_A0=0",
        "SUPPORT_A2=1",
        "PICOTOOL_CODE_OTP=0",
        # TODO: Make it possible to compile from source.
        "USE_PRECOMPILED=1",
    ],
    # Windows does not behave nicely with the automagic force_dynamic_linkage_enabled.
    dynamic_deps = select({
        "@rules_libusb//:force_dynamic_linkage_enabled": ["@libusb//:libusb_dynamic"],
        "//conditions:default": [],
    }),
    deps = [
        ":xip_ram_perms",
        "//bazel:data_locs",
        "//bintool",
        "//elf",
        "//elf2uf2",
        "//errors",
        "//lib/nlohmann_json:json",
        "//picoboot_connection",
        "@libusb",
        "@pico-sdk//src/common/boot_picobin_headers",
        "@pico-sdk//src/common/boot_picoboot_headers",
        "@pico-sdk//src/common/boot_uf2_headers",
        "@pico-sdk//src/common/pico_base_headers",
        "@pico-sdk//src/common/pico_binary_info",
        "@pico-sdk//src/common/pico_usb_reset_interface_headers",
        "@pico-sdk//src/rp2350/hardware_regs:otp_data",
        "@pico-sdk//src/rp2_common/pico_bootrom:pico_bootrom_headers",
        "@pico-sdk//src/rp2_common/pico_stdio_usb:reset_interface_headers",
    ] + select({
        # MSVC can't handle long strings, so use this manually generated
        # header instead.
        "@rules_cc//cc/compiler:msvc-cl": ["//otp_header_parser:pre_generated_otp_header"],
        "//conditions:default": [],
    }),
)
