1load("//bazel:defs.bzl", "compatible_with_rp2")
2
3package(default_visibility = ["//visibility:public"])
4
5alias(
6    name = "pico_mem_ops",
7    actual = select({
8        "//bazel/constraint:rp2040": ":pico_mem_ops_pico",
9        "//conditions:default": ":pico_mem_ops_compiler",
10    }),
11)
12
13cc_library(
14    name = "pico_mem_ops_compiler",
15    hdrs = ["include/pico/mem_ops.h"],
16    includes = ["include"],
17    target_compatible_with = compatible_with_rp2(),
18    visibility = ["//visibility:private"],
19    deps = [
20        "//src/rp2_common:pico_platform_internal",
21    ],
22)
23
24cc_library(
25    name = "pico_mem_ops_pico",
26    srcs = [
27        "mem_ops.c",
28        "mem_ops_aeabi.S",
29    ],
30    hdrs = ["include/pico/mem_ops.h"],
31    includes = ["include"],
32    linkopts = [
33        "-Wl,--wrap=memcpy",
34        "-Wl,--wrap=memset",
35        "-Wl,--wrap=__aeabi_memcpy",
36        "-Wl,--wrap=__aeabi_memset",
37        "-Wl,--wrap=__aeabi_memcpy4",
38        "-Wl,--wrap=__aeabi_memset4",
39        "-Wl,--wrap=__aeabi_memcpy8",
40        "-Wl,--wrap=__aeabi_memset8",
41    ],
42    target_compatible_with = compatible_with_rp2(),
43    visibility = ["//visibility:private"],
44    deps = [
45        "//src/rp2_common:pico_platform_internal",
46        "//src/rp2_common/pico_bootrom",
47        "//src/rp2_common/pico_runtime_init",
48    ],
49    alwayslink = True,  # Ensures the wrapped symbols are linked in.
50)
51