# Copyright 2024 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

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

platform(
    name = "platform",
    constraint_values = [
        "//applications/app_common_impl:rp2040_backend_constraint_value",
        "@freertos//:port_ARM_CM0",
        "@freertos//:disable_task_statics",
        "@pico-sdk//bazel/constraint:rp2040",
        "@pico-sdk//bazel/constraint:stdio_usb",
        "@pigweed//pw_build/constraints/rtos:freertos",
        "@pigweed//pw_build/constraints/chipset:rp2040",
        "@pigweed//pw_interrupt_cortex_m:backend",

        # For toolchain selection.
        "@platforms//cpu:armv6-m",
        "@pw_toolchain//constraints/arm_mcpu:cortex-m0",
    ],
)

cc_library(
    name = "extra_platform_libs",
    deps = [
        "//targets/rp2040:pre_init",
        "@pico-sdk//src/common/pico_stdlib:pico_stdlib",
        "@pigweed//pw_atomic:atomic_cortex_m",
        "@pigweed//pw_tokenizer:linker_script",
    ],
    alwayslink = 1,
)

cc_library(
    name = "freertos_config",
    hdrs = [
        "config/FreeRTOSConfig.h",
    ],
    includes = ["config"],
    deps = ["@pigweed//third_party/freertos:config_assert"],
)

cc_library(
    name = "pre_init",
    srcs = [
        "boot.cc",
    ],
    deps = [
        "//lib/rpc:kudzu_service",
        "@freertos",
        "@pigweed//pw_assert",
        "@pigweed//pw_string",
        "@pigweed//pw_system:init",
    ],
    alwayslink = 1,
)
