# 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_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,
)
