# 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 = [
        "//libraries/pw_board_led_rp2040:backend_constraint_value",
        "@freertos//:disable_task_statics",
        "@freertos//:port_ARM_CM0",
        "@pico-sdk//bazel/constraint:rp2040",
        "@pigweed//pw_build/constraints/rtos:freertos",
        "@pigweed//pw_interrupt_cortex_m:backend",
        "@pigweed//targets/rp2040:freertos_config_cv",
        "@platforms//os:none",

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

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