1package(default_visibility = ["//visibility:public"])
2
3alias(
4    name = "pico_divider",
5    actual = select({
6        "//bazel/constraint:pico_divider_auto_enabled": ":pico_divider_auto",
7        "//bazel/constraint:pico_divider_hardware_enabled": ":divider_hardware",
8        "//conditions:default": ":divider_compiler",
9    }),
10)
11
12alias(
13    name = "pico_divider_auto",
14    actual = select({
15        "//bazel/constraint:rp2040": ":divider_hardware",
16        "//conditions:default": ":divider_compiler",
17    }),
18)
19
20cc_library(
21    name = "divider_compiler",
22    srcs = ["divider_compiler.c"],
23    target_compatible_with = ["//bazel/constraint:rp2350"],
24    deps = [
25        "//src/common/pico_divider_headers",
26        "//src/rp2_common:hardware_regs",
27        "//src/rp2_common:pico_platform",
28        "//src/rp2_common/hardware_divider",
29    ],
30)
31
32cc_library(
33    name = "divider_hardware",
34    srcs = ["divider_hardware.S"],
35    linkopts = [
36        "-Wl,--wrap=__aeabi_idiv",
37        "-Wl,--wrap=__aeabi_idivmod",
38        "-Wl,--wrap=__aeabi_ldivmod",
39        "-Wl,--wrap=__aeabi_uidiv",
40        "-Wl,--wrap=__aeabi_uidivmod",
41        "-Wl,--wrap=__aeabi_uldivmod",
42    ],
43    target_compatible_with = ["//bazel/constraint:rp2040"],
44    deps = [
45        "//src/common/pico_divider_headers",
46        "//src/rp2_common:hardware_regs",
47        "//src/rp2_common:pico_platform",
48        "//src/rp2_common/hardware_divider",
49    ],
50    alwayslink = True,  # Ensures the wrapped symbols are linked in.
51)
52