| # Copyright 2025 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. |
| |
| build:k_common --build_tag_filters=-do_not_build |
| test:k_common --test_tag_filters=-integration,-do_not_build,-do_not_run_test |
| test:k_common --@pigweed//pw_kernel:enable_tests=true |
| # Place the test build in a separate directory to the build directory to avoid trashing the build |
| # cache when switching between test and build commands. |
| # TODO: b/485267571 - Investigate if we can remove the need for this by removing the |
| # //pw_kernel:enable_tests flag. |
| test:k_common --platform_suffix=test |
| |
| # Lint configuration |
| # ================== |
| # Enable clippy lints |
| build:k_lint --aspects=@rules_rust//rust:defs.bzl%rust_clippy_aspect |
| build:k_lint --output_groups=+clippy_checks |
| # LINT.IfChange |
| build:k_lint --@rules_rust//rust/settings:clippy_flags="\ |
| -Dclippy::alloc_instead_of_core,\ |
| -Dclippy::as_underscore,\ |
| -Dclippy::assertions_on_result_states,\ |
| -Dclippy::cast_lossless,\ |
| -Dclippy::cast_possible_truncation,\ |
| -Dclippy::cast_possible_wrap,\ |
| -Dclippy::cast_precision_loss,\ |
| -Dclippy::cast_sign_loss,\ |
| -Dclippy::char_lit_as_u8,\ |
| -Dclippy::correctness,\ |
| -Dclippy::dbg_macro,\ |
| -Dclippy::decimal_literal_representation,\ |
| -Dclippy::double_must_use,\ |
| -Dclippy::fn_to_numeric_cast,\ |
| -Dclippy::fn_to_numeric_cast_with_truncation,\ |
| -Dclippy::missing_safety_doc,\ |
| -Dclippy::must_use_candidate,\ |
| -Dclippy::must_use_unit,\ |
| -Dclippy::obfuscated_if_else,\ |
| -Dclippy::perf,\ |
| -Dclippy::ptr_as_ptr,\ |
| -Dclippy::return_self_not_must_use,\ |
| -Dclippy::std_instead_of_core,\ |
| -Dclippy::style,\ |
| -Dclippy::suspicious,\ |
| -Dclippy::unimplemented,\ |
| -Dclippy::unnecessary_cast,\ |
| -Dclippy::unnested_or_patterns,\ |
| -Dinvalid_reference_casting,\ |
| -Aclippy::new_without_default" |
| # LINT.ThenChange(//.bazelrc) |
| |
| # TODO: Deny the following lints: |
| # - clippy::use_debug |
| # - clippy::unwrap_used (but only in prod) |
| # - clippy::todo |
| # - clippy::undocumented_unsafe_blocks |
| # - clippy::indexing_slicing |
| |
| # Enforce rustfmt formatting |
| build:k_lint --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect |
| build:k_lint --@rules_rust//rust/settings:rustfmt.toml=//pw_kernel:rustfmt.toml |
| build:k_lint --output_groups=+rustfmt_checks |
| |
| # Host target configuration |
| # =========================== |
| common:k_host --config=k_common |
| common:k_host --platforms=//pw_kernel/target/host:host |
| |
| # TODO: davidroth - Each config also sets the platform. This isn't strictly |
| # necessary when building system images as it will transition to the correct |
| # platform. This would however break the rust_analyzer gen_rust_project flow |
| # as it currently assumes the platform is associated with the config. |
| # In the future we should update the tooling to not require a platform and |
| # potentially even a config to be set when building the system image. |
| |
| # QEMU mps2-an505 target configuration |
| # ======================================= |
| common:k_qemu_mps2_an505 --config=k_common |
| common:k_qemu_mps2_an505 --platforms=//pw_kernel/target/mps2_an505:mps2_an505 |
| run:k_qemu_mps2_an505 --run_under="//pw_kernel/tooling:qemu \ |
| --cpu cortex-m33 \ |
| --machine mps2-an505 \ |
| --semihosting \ |
| --image " |
| test:k_qemu_mps2_an505 --run_under="//pw_kernel/tooling:qemu \ |
| --cpu cortex-m33 \ |
| --machine mps2-an505 \ |
| --semihosting \ |
| --image " |
| |
| # QEMU virt riscv32 target configuration |
| # ======================================= |
| common:k_qemu_virt_riscv32 --config=k_common |
| common:k_qemu_virt_riscv32 --platforms=//pw_kernel/target/qemu_virt_riscv32:qemu_virt_riscv32 |
| run:k_qemu_virt_riscv32 --run_under="//pw_kernel/tooling:qemu \ |
| --cpu rv32 \ |
| --machine virt \ |
| --semihosting \ |
| --image " |
| test:k_qemu_virt_riscv32 --run_under="//pw_kernel/tooling:qemu \ |
| --cpu rv32 \ |
| --machine virt \ |
| --semihosting \ |
| --image " |
| |
| # RP2350 target configuration |
| # ======================================= |
| common:k_rp2350 --config=k_common |
| common:k_rp2350 --platforms=//pw_kernel/target/pw_rp2350 |
| run:k_rp2350 --run_under="//pw_kernel/tooling:serial_detokenizer " |