Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: google/pigweed
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1f12d06f5133a9a471e0551e5f915dff80ee908c
Choose a base ref
...
head repository: google/pigweed
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 5eec847de00e03c08e6557b2023d008bad70e2fc
Choose a head ref
Loading
Showing 3,198 changed files with 277,608 additions and 61,170 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
14 changes: 14 additions & 0 deletions .allstar/binary_artifacts.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# 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.

# Ignore reason: Empty binaries used to test ELF parsing
ignorePaths:
- pw_tokenizer/py/elf_reader_test_binary.elf
15 changes: 15 additions & 0 deletions .bazelignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# 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.

.cipd
.presubmit
.environment
@@ -9,3 +23,4 @@ bazel-out
bazel-pigweed
bazel-testlogs
outbazel
pw_toolchain_bazel
227 changes: 147 additions & 80 deletions .bazelrc
Original file line number Diff line number Diff line change
@@ -11,113 +11,134 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
#

# TODO: https://pwbug.dev/258836641#comment4: Enabling bzlmod breaks the build.
common --noenable_bzlmod
# Standard flags required for all Pigweed projects.
import %workspace%/pw_build/pigweed.bazelrc

# UX flags
# ========
# Improve debugability by printing all arguments for failing commands.
common --verbose_failures

# TODO: https://pwbug.dev/319664275: Disable hermetic sandbox tmp due to issues
# with arm toolchain.
build --noincompatible_sandbox_hermetic_tmp
# Suppress the DEBUG: log messages from bazel. We get lots of spammy DEBUG:
# messages from our third-party dependencies.
build --ui_event_filters=-debug

# Specifies desired output mode for running tests.
# Valid values are
# 'summary' to output only test status summary
# 'errors' to also print test logs for failed tests
# 'all' to print logs for all tests
# 'streamed' to output logs for all tests in real time
# (this will force tests to be executed locally one at a time regardless
# of --test_strategy value).
test --test_output=errors

# Default build_tag_filters and test_tag_filters
# ==============================================
# Skip building any targets tagged do_not_build.
build --build_tag_filters=-do_not_build

# TODO: https://pwbug.dev/319664275: Go binaries fail at runtime with "fatal
# error: invalid function symbol table" unless we disable cgo via the below
# flag. This error is resolved when enabling --incompatible_sandbox_hermetic_tmp
# but that can't be turned on until this bug is resolved.
# Reference:
# https://github.com/bazelbuild/rules_go/blob/release-0.45/go/modes.rst#build-settings
build --@io_bazel_rules_go//go/config:pure
# Exclude integration tests from the default build. The test_tag_filters flag
# doesn't accumulate (https://github.com/bazelbuild/bazel/issues/7322): we have
# to specify it only once, setting all the exclusions in a comma-separated
# list.
test --test_tag_filters=-integration,-do_not_build,-do_not_run_test

# C++ related flags
# =================
# Silence all C/C++ warnings in external code.
#
# Note that this will not silence warnings from external headers #include'd in
# first-party code.
common --per_file_copt=external/.*@-w
common --host_per_file_copt=external/.*@-w

# Don't automatically create __init__.py files.
# TODO: https://pwbug.dev/324107025 - Temporary workaround until Sapphire
# migration is done or warnings are fixed.
common --per_file_copt=pw_bluetooth_sapphire/.*@-Wno-unused-parameter
common --host_per_file_copt=pw_bluetooth_sapphire/.*@-Wno-unused-parameter

# Picotool needs to build with exceptions and RTTI enabled.
common --per_file_copt=external.*picotool.*@-fexceptions,-frtti
common --host_per_file_copt=external.*picotool.*@-fexceptions,-frtti

# RP2xxx PIO assembler also needs exceptions.
common --host_per_file_copt=external.*pioasm.*@-fexceptions,-frtti

# Default to C++17 to ensure compatibility.
common --//pw_toolchain/cc:cxx_standard=17
common:cxx20 --//pw_toolchain/cc:cxx_standard=20

# Silence compiler warnings from external repositories.
#
# This prevents spurious package name collisions at import time, and should be
# the default (https://github.com/bazelbuild/bazel/issues/7386). It's
# particularly helpful for Pigweed, because we have many potential package name
# collisions due to a profusion of stuttering paths like
# pw_transfer/py/pw_transfer.
common --incompatible_default_to_explicit_init_py
# TODO: https://pwbug.dev/347317581 - This is supported by Bazel's default C++
# toolchain, but not yet by Pigweed's own toolchains.
build --features=external_include_paths

# Required for new toolchain resolution API.
build --incompatible_enable_cc_toolchain_resolution
# Turn on internal warnings for upstream Pigweed. DO NOT enable in downstream
# projects to allow for warnings to be added in the future without breaking
# downstream.
#
build --features=internal_strict_warnings

# Do not attempt to configure an autodetected (local) toolchain. We vendor all
# our toolchains, and CI VMs may not have any local toolchain to detect.
common --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
# This feature can't be enabled until __unordtf2 and __letf2 are implemented by
# compiler-rt. See https://reviews.llvm.org/D53608.
# build --features=fully_static_link

# Required for combined code coverage reports.
coverage --experimental_generate_llvm_lcov
coverage --combined_report=lcov

# Suppress the DEBUG: log messages from bazel. We get lots of spammy DEBUG:
# messages from our third-party dependencies.
build --ui_event_filters=-debug

# Enforces consistent action environment variables. This is important to
# address Protobuf's rebuild sensitivity on changes to the environment
# variables.
build --incompatible_strict_action_env

# Java related flags
# ==================
# Workaround for https://github.com/bazelbuild/rules_jvm_external/issues/445.
build --java_language_version=11
build --tool_java_language_version=11
build --java_runtime_version=remotejdk_11
build --repo_env=JAVA_HOME=../bazel_tools/jdk

# Silence compiler warnings from external repositories.
#
# This is supported by Bazel's default C++ toolchain, but not yet by
# rules_cc_toolchain
# (https://github.com/bazelembedded/rules_cc_toolchain/issues/46).
build --features=external_include_paths

# This feature can't be enabled until __unordtf2 and __letf2 are implemented by
# compiler-rt. See https://reviews.llvm.org/D53608.
# build --features=fully_static_link

# Default label flags values
# ==========================
build --@freertos//:freertos_config=//third_party/freertos:freertos_config
build --@mbedtls//:mbedtls_config=//third_party/mbedtls:default_config

# Define the --config=asan-libfuzzer configuration.
build:asan-libfuzzer \
--@rules_fuzzing//fuzzing:cc_engine=@rules_fuzzing//fuzzing/engines:libfuzzer
build:asan-libfuzzer \
--@rules_fuzzing//fuzzing:cc_engine_instrumentation=libfuzzer
build:asan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan

# Include FuzzTest build configurations.
try-import %workspace%/third_party/fuzztest/fuzztest.bazelrc
build:fuzztest \
--@pigweed//targets:pw_fuzzer_fuzztest_backend=@com_google_fuzztest//fuzztest:fuzztest_core
build:fuzztest \
--@pigweed//targets:pw_unit_test_main=@com_google_fuzztest//fuzztest:fuzztest_gtest_main

# We use non-default labels for the STM32Cube repositories upstream (to reserve
# the option of building for more than one MCU family down the road), so need to
# override the three labels below.
common --//third_party/stm32cube:hal_driver=@stm32f4xx_hal_driver//:hal_driver
common --@stm32f4xx_hal_driver//:cmsis_device=@cmsis_device_f4//:cmsis_device
common --@stm32f4xx_hal_driver//:cmsis_init=@cmsis_device_f4//:default_cmsis_init
common --@cmsis_device_f4//:cmsis_core=@cmsis_core

# Config for the stm32f429i_disc1_stm32cube platform.
#
# TODO: b/301334234 - Make the platform set the flags below.
build:stm32f429i --platforms=//targets/stm32f429i_disc1_stm32cube:platform
build:stm32f429i --copt="-DSTM32CUBE_HEADER=\"stm32f4xx.h\""
build:stm32f429i --copt="-DSTM32F429xx"
build:stm32f429i --@stm32f4xx_hal_driver//:hal_config=//targets/stm32f429i_disc1_stm32cube:hal_config
build:stm32f429i --//pw_log:backend_impl=@pigweed//pw_log_tokenized:impl
build:stm32f429i --//targets:pw_log_backend=@pigweed//pw_log_tokenized
build:stm32f429i --//targets:pw_log_tokenized_handler_backend=@pigweed//pw_system:log_backend
common --//pw_env_setup/py:pigweed_json=//:pigweed.json

build --//pw_function:config_override=//pw_function:upstream_default_config

# Sanitizer config definitions
# ============================
common:asan --//pw_toolchain/host_clang:asan
# TODO: https://github.com/bazelbuild/bazel/issues/7322 - We need to repeat the
# -integration because the test_tag_filters flag does not
# accumulate.
test:asan --test_tag_filters=-integration,-noasan,-do_not_build,-do_not_run_test

common:ubsan --//pw_toolchain/host_clang:ubsan
# TODO: https://github.com/bazelbuild/bazel/issues/7322 - We need to repeat the
# -integration because the test_tag_filters flag does not accumulate.
test:ubsan --test_tag_filters=-integration,-noubsan,-do_not_build,-do_not_run_test

common:tsan --//pw_toolchain/host_clang:tsan
# TODO: https://github.com/bazelbuild/bazel/issues/7322 - We need to repeat the
# -integration because the test_tag_filters flag does not accumulate.
test:tsan --test_tag_filters=-integration,-notsan,-do_not_build,-do_not_run_test

# Include libFuzzer build configurations.
import %workspace%/pw_fuzzer/libfuzzer.bazelrc

# Include FuzzTest build configurations.
import %workspace%/pw_fuzzer/fuzztest.bazelrc

# For some platforms i.e. google/oss-fuzz we need to use the system provided
# rather than the hermetic toolchains. This allows oss-fuzz to override the
@@ -127,18 +148,64 @@ build:stm32f429i --//targets:pw_log_tokenized_handler_backend=@pigweed//pw_syste
common:non_hermetic --repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=0
common:non_hermetic --extra_toolchains=@local_config_cc_toolchains//...

# Specifies desired output mode for running tests.
# Valid values are
# 'summary' to output only test status summary
# 'errors' to also print test logs for failed tests
# 'all' to print logs for all tests
# 'streamed' to output logs for all tests in real time
# (this will force tests to be executed locally one at a time regardless
# of --test_strategy value).
test --test_output=errors

# User bazelrc file; see
# https://bazel.build/configure/best-practices#bazelrc-file
# Configure workspace status command to test pw_build_info git_build_info
# https://bazel.build/docs/user-manual#workspace-status-command
# TODO: b/348046338 - Add a Windows version of this command
build --workspace_status_command=pw_build_info/git_workspace_status_command.sh

# Target platform config definitions
# ==================================
# Exclude //pw_bluetooth_sapphire/fuchsia when the host platform is not
# linux-amd64. This is the only platform that the Fuchsia SDK supports.
common --enable_platform_specific_config

# Import `--config=fuchsia` scoped pigweed backends.
import %workspace%/pw_bluetooth_sapphire/fuchsia/backends.bazelrc

# Configs for RP2xxx platforms.
build:rp2040 --platforms=@pigweed//targets/rp2040
test:rp2040 --run_under=//targets/rp2040/py:unit_test_client

build:rp2350 --platforms=@pigweed//targets/rp2040:rp2350
test:rp2350 --run_under=//targets/rp2040/py:unit_test_client

# Config for the stm32f429i_disc1 baremetal platform.
build:stm32f429i_baremetal --platforms=//targets/stm32f429i_disc1:platform

# Config for the stm32f429i_disc1_stm32cube freertos platform.
build:stm32f429i_freertos --platforms=//targets/stm32f429i_disc1_stm32cube:platform

# Config for the lm3s6965evb platform, used to build pw_rust/examples.
build:lm3s6965evb --platforms=//pw_build/platforms:lm3s6965evb

# Config for the microbit platform, used to build pw_rust/examples.
build:microbit --platforms=//pw_build/platforms:lm3s6965evb

# Remote execution config definitions
# ===================================
# Use the remote cache. This will only work for users who have permission to access it.
common:remote_cache --bes_backend="buildeventservice.googleapis.com"
common:remote_cache --bes_instance_name=pigweed-rbe-open
common:remote_cache --bes_results_url="https://source.cloud.google.com/results/invocations/"
common:remote_cache --bes_timeout=600s
common:remote_cache --experimental_remote_cache_eviction_retries=5
common:remote_cache --google_default_credentials=true
# Required to use buildeventservice on Bazel 8+.
# TODO: b/345556899 -- Remove this flag when no longer required.
common:remote_cache --legacy_important_outputs
common:remote_cache --remote_cache=grpcs://remotebuildexecution.googleapis.com
common:remote_cache --remote_instance_name=projects/pigweed-rbe-open/instances/default-instance
common:remote_cache --remote_upload_local_results=false

# cache-silo-key: this is essentially a "salt" added to the remote cache key.
# Change it to a new value when we want to create a new cache from scratch
# (e.g. to recover from cache poisoning). We've used the current date in
# YYYYMMDD format in the past.
common --remote_default_exec_properties=cache-silo-key=20240918

# User bazelrc file
# =================
# See https://bazel.build/configure/best-practices#bazelrc-file
#
# Note: this should be at the bottom of the file, so that user-specified
# options override anything in this file
1 change: 1 addition & 0 deletions .bazelversion
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1ff5af18d045e8f30a2a0367470db4e8225a785c
15 changes: 15 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
# 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.

BasedOnStyle: Google
BinPackArguments: false
BinPackParameters: false
DerivePointerAlignment: false
PointerAlignment: Left
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
LineEnding: LF
14 changes: 14 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# 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.

---
Checks: >
bugprone-argument-comment,
14 changes: 14 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
// 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.

// ESLint configuration
module.exports = {
env: {
Loading