aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWyatt Hepler <hepler@google.com>2023-01-25 20:27:56 +0000
committerCQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-01-25 20:27:56 +0000
commit3ba0e951a04309c5232ef2aa469dfee36ac4a3a1 (patch)
tree11e5d96901ac7ad9b228690f16b78381eb5432b6
parent314a9a4c11b37518bd58a3890df1aa4fd9cc4c84 (diff)
downloadpigweed-3ba0e951a04309c5232ef2aa469dfee36ac4a3a1.tar.gz
targets/docs: Build with C++20
- Switch docs builds to C++20. - Remove compound operations for volatile variables, which are deprecated in C++20. Change-Id: Id60e758bc295b4271960c3d25a53e6ef82d5b2c6 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126911 Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com> Reviewed-by: Alexei Frolov <frolv@google.com> Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
-rw-r--r--pw_hdlc/size_report/hdlc_size_report.cc2
-rw-r--r--pw_sys_io_baremetal_stm32f429/sys_io_baremetal.cc26
-rw-r--r--targets/docs/BUILD.gn3
-rw-r--r--targets/docs/target_docs.rst3
-rw-r--r--targets/stm32f429i_disc1/boot.cc2
5 files changed, 24 insertions, 12 deletions
diff --git a/pw_hdlc/size_report/hdlc_size_report.cc b/pw_hdlc/size_report/hdlc_size_report.cc
index 540d9de54..b8cf35e44 100644
--- a/pw_hdlc/size_report/hdlc_size_report.cc
+++ b/pw_hdlc/size_report/hdlc_size_report.cc
@@ -90,7 +90,7 @@ void HdlcSizeReport() {
Result<hdlc::Frame> frame = decoder.Process(std::byte('~'));
// Force use of nodiscard frame.
if (frame.ok()) {
- get_size++;
+ get_size = get_size + 1;
}
decoder.Clear();
#endif
diff --git a/pw_sys_io_baremetal_stm32f429/sys_io_baremetal.cc b/pw_sys_io_baremetal_stm32f429/sys_io_baremetal.cc
index 4475a0851..7cd8fc594 100644
--- a/pw_sys_io_baremetal_stm32f429/sys_io_baremetal.cc
+++ b/pw_sys_io_baremetal_stm32f429/sys_io_baremetal.cc
@@ -134,24 +134,30 @@ volatile UsartBlock& usart1 =
extern "C" void pw_sys_io_stm32f429_Init() {
// Enable 'A' GIPO clocks.
- platform_rcc.ahb1_config |= kGpioAEnable;
+ platform_rcc.ahb1_config = platform_rcc.ahb1_config | kGpioAEnable;
// Enable Uart TX pin.
// Output type defaults to push-pull (rather than open/drain).
- gpio_a.modes |= kGpioPortModeAlternate << kGpio9PortModePos;
- gpio_a.out_speed |= kGpioSpeedVeryHigh << kGpio9PortSpeedPos;
- gpio_a.pull_up_down |= kPullTypePullUp << kGpio9PullTypePos;
- gpio_a.alt_high |= kGpioAlternateFunctionUsart1 << kGpio9AltModeHighPos;
+ gpio_a.modes = gpio_a.modes | (kGpioPortModeAlternate << kGpio9PortModePos);
+ gpio_a.out_speed =
+ gpio_a.out_speed | (kGpioSpeedVeryHigh << kGpio9PortSpeedPos);
+ gpio_a.pull_up_down =
+ gpio_a.pull_up_down | (kPullTypePullUp << kGpio9PullTypePos);
+ gpio_a.alt_high =
+ gpio_a.alt_high | (kGpioAlternateFunctionUsart1 << kGpio9AltModeHighPos);
// Enable Uart RX pin.
// Output type defaults to push-pull (rather than open/drain).
- gpio_a.modes |= kGpioPortModeAlternate << kGpio10PortModePos;
- gpio_a.out_speed |= kGpioSpeedVeryHigh << kGpio10PortSpeedPos;
- gpio_a.pull_up_down |= kPullTypePullUp << kGpio10PullTypePos;
- gpio_a.alt_high |= kGpioAlternateFunctionUsart1 << kGpio10AltModeHighPos;
+ gpio_a.modes = gpio_a.modes | (kGpioPortModeAlternate << kGpio10PortModePos);
+ gpio_a.out_speed =
+ gpio_a.out_speed | (kGpioSpeedVeryHigh << kGpio10PortSpeedPos);
+ gpio_a.pull_up_down =
+ gpio_a.pull_up_down | (kPullTypePullUp << kGpio10PullTypePos);
+ gpio_a.alt_high =
+ gpio_a.alt_high | (kGpioAlternateFunctionUsart1 << kGpio10AltModeHighPos);
// Initialize USART1. Initialized to 8N1 at the specified baud rate.
- platform_rcc.apb2_config |= kUsart1Enable;
+ platform_rcc.apb2_config = platform_rcc.apb2_config | (kUsart1Enable);
// Warning: Normally the baud rate register calculation is based off
// peripheral 2 clock. For this code, the peripheral clock defaults to
diff --git a/targets/docs/BUILD.gn b/targets/docs/BUILD.gn
index 4e9b33c2e..10f341139 100644
--- a/targets/docs/BUILD.gn
+++ b/targets/docs/BUILD.gn
@@ -20,6 +20,7 @@ import("$dir_pw_protobuf_compiler/proto.gni")
import("$dir_pw_third_party/nanopb/nanopb.gni")
import("$dir_pw_toolchain/arm_gcc/toolchains.gni")
import("$dir_pw_toolchain/generate_toolchain.gni")
+import("$dir_pw_toolchain/traits.gni")
if (current_toolchain != default_toolchain) {
pw_source_set("tokenized_log_handler") {
@@ -55,6 +56,8 @@ generate_toolchain("docs") {
pw_log_BACKEND = dir_pw_log_tokenized
pw_tokenizer_GLOBAL_HANDLER_WITH_PAYLOAD_BACKEND =
get_path_info(":tokenized_log_handler", "abspath")
+
+ pw_toolchain_CXX_STANDARD = pw_toolchain_STANDARD.CXX20
}
}
diff --git a/targets/docs/target_docs.rst b/targets/docs/target_docs.rst
index 37db6c248..e130e8a17 100644
--- a/targets/docs/target_docs.rst
+++ b/targets/docs/target_docs.rst
@@ -6,6 +6,9 @@ docs
The Pigweed docs target assembles Pigweed's reStructuredText and markdown
documentation into a collection of HTML pages.
+The docs target uses the :ref:`target-stm32f429i-disc1` toolchain with C++20 for
+size reports.
+
Building
========
To build for this target, invoke ninja with the top-level "docs" group as the
diff --git a/targets/stm32f429i_disc1/boot.cc b/targets/stm32f429i_disc1/boot.cc
index 5150c7b5c..586159b13 100644
--- a/targets/stm32f429i_disc1/boot.cc
+++ b/targets/stm32f429i_disc1/boot.cc
@@ -34,7 +34,7 @@ void pw_boot_PreStaticMemoryInit() {
// Memory mapped register to enable FPU. (ARMv7-M Section B3.2.2, Table B3-4)
volatile uint32_t& arm_v7m_cpacr =
*reinterpret_cast<volatile uint32_t*>(0xE000ED88u);
- arm_v7m_cpacr |= kFpuEnableMask;
+ arm_v7m_cpacr = arm_v7m_cpacr | kFpuEnableMask;
// Ensure the FPU configuration is committed and enabled before continuing and
// potentially executing any FPU instructions, however rare that may be during