1load("//bazel:defs.bzl", "compatible_with_rp2")
2
3package(default_visibility = ["//visibility:public"])
4
5# This is added to @pico-sdk//src/common/pico_base_headers:default_platform_headers
6# by default.
7cc_library(
8    name = "rename_exceptions",
9    hdrs = ["include/cmsis/rename_exceptions.h"],
10    # This is mildly odd, but intentional. We really don't want this header
11    # to have extra deps, and this header is touched by the host build.
12    defines = select({
13        "//bazel/constraint:host": [],
14        "//conditions:default": ["LIB_CMSIS_CORE=1"],
15    }),
16    includes = ["include"],
17)
18
19cc_library(
20    name = "cmsis_core",
21    srcs = select({
22        "//bazel/constraint:rp2040": [
23            "stub/CMSIS/Device/RP2040/Source/system_RP2040.c",
24        ],
25        "//bazel/constraint:rp2350": [
26            "stub/CMSIS/Device/RP2350/Source/system_RP2350.c",
27        ],
28        "//conditions:default": [],
29    }),
30    hdrs = [
31        "stub/CMSIS/Core/Include/cmsis_armcc.h",
32        "stub/CMSIS/Core/Include/cmsis_armclang.h",
33        "stub/CMSIS/Core/Include/cmsis_armclang_ltm.h",
34        "stub/CMSIS/Core/Include/cmsis_clang.h",
35        "stub/CMSIS/Core/Include/cmsis_compiler.h",
36        "stub/CMSIS/Core/Include/cmsis_gcc.h",
37        "stub/CMSIS/Core/Include/cmsis_iccarm.h",
38        "stub/CMSIS/Core/Include/cmsis_version.h",
39        "stub/CMSIS/Core/Include/core_cm0plus.h",
40        "stub/CMSIS/Core/Include/core_cm33.h",
41        "stub/CMSIS/Core/Include/m-profile/armv7m_cachel1.h",
42        "stub/CMSIS/Core/Include/m-profile/armv7m_mpu.h",
43        "stub/CMSIS/Core/Include/m-profile/armv81m_pac.h",
44        "stub/CMSIS/Core/Include/m-profile/armv8m_mpu.h",
45        "stub/CMSIS/Core/Include/m-profile/armv8m_pmu.h",
46        "stub/CMSIS/Core/Include/m-profile/cmsis_armclang_m.h",
47        "stub/CMSIS/Core/Include/m-profile/cmsis_clang_m.h",
48        "stub/CMSIS/Core/Include/m-profile/cmsis_gcc_m.h",
49        "stub/CMSIS/Core/Include/m-profile/cmsis_iccarm_m.h",
50        "stub/CMSIS/Core/Include/m-profile/cmsis_tiarmclang_m.h",
51        "stub/CMSIS/Core/Include/mpu_armv7.h",
52        "stub/CMSIS/Core/Include/mpu_armv8.h",
53        "stub/CMSIS/Core/Include/tz_context.h",
54    ] + select({
55        "//bazel/constraint:rp2040": [
56            "stub/CMSIS/Device/RP2040/Include/RP2040.h",
57            "stub/CMSIS/Device/RP2040/Include/system_RP2040.h",
58        ],
59        "//bazel/constraint:rp2350": [
60            "stub/CMSIS/Device/RP2350/Include/RP2350.h",
61            "stub/CMSIS/Device/RP2350/Include/system_RP2350.h",
62        ],
63        "//conditions:default": [],
64    }),
65    defines = ["LIB_CMSIS_CORE=1"],
66    includes = [
67        "stub/CMSIS/Core/Include",
68    ] + select({
69        "//bazel/constraint:rp2040": [
70            "stub/CMSIS/Device/RP2040/Include",
71        ],
72        "//bazel/constraint:rp2350": [
73            "stub/CMSIS/Device/RP2350/Include",
74        ],
75    }),
76    target_compatible_with = compatible_with_rp2(),
77    deps = [
78        "//src/rp2_common/hardware_clocks",
79    ],
80)
81