1load("//bazel:defs.bzl", "compatible_with_rp2")
2
3package(default_visibility = ["//visibility:public"])
4
5cc_library(
6    name = "pico_bit_ops",
7    srcs = ["bit_ops_aeabi.S"],
8    linkopts = select({
9        "//bazel/constraint:rp2040": [
10            "-Wl,--wrap=__clzsi2",
11            "-Wl,--wrap=__clzsi2",
12            "-Wl,--wrap=__clzdi2",
13            "-Wl,--wrap=__ctzsi2",
14            "-Wl,--wrap=__popcountsi2",
15            "-Wl,--wrap=__popcountdi2",
16            "-Wl,--wrap=__clz",
17            "-Wl,--wrap=__clzl",
18            "-Wl,--wrap=__clzsi2",
19            "-Wl,--wrap=__clzll",
20        ],
21        "//conditions:default": [],
22    }) + ["-Wl,--wrap=__ctzdi2"],
23    target_compatible_with = compatible_with_rp2(),
24    deps = [
25        "//src/common/pico_bit_ops_headers:pico_bit_ops_interface",
26        "//src/rp2_common:pico_platform_internal",
27        "//src/rp2_common/pico_bootrom",
28        "//src/rp2_common/pico_runtime_init",
29    ],
30    alwayslink = True,  # Ensures the wrapped symbols are linked in.
31)
32