third_party/pico_sdk: Do not remove strict warnings

Changes the Pi Pico build files to apply flag exceptions rather than
completely removing all strict warnings.

Change-Id: I2d482f590157f215ee0691d4e55eff4fd5fc437a
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/120217
Pigweed-Auto-Submit: Armando Montanez <amontanez@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Reviewed-by: Anthony DiGirolamo <tonymd@google.com>
diff --git a/targets/rp2040/BUILD.gn b/targets/rp2040/BUILD.gn
index d256414..71cf261 100644
--- a/targets/rp2040/BUILD.gn
+++ b/targets/rp2040/BUILD.gn
@@ -22,10 +22,6 @@
 
 if (current_toolchain != default_toolchain) {
   pw_source_set("pico_logging_test_main") {
-    # Required because the pico SDK can't properly propagate -Wno-undef and
-    # -Wno-unused-function because of Pigweed's very unusual default_configs
-    # behavior.
-    remove_configs = [ "$dir_pw_build:strict_warnings" ]
     deps = [
       "$PICO_ROOT/src/common/pico_base",
       "$PICO_ROOT/src/common/pico_stdlib",
diff --git a/third_party/pico_sdk/gn/BUILD.gn b/third_party/pico_sdk/gn/BUILD.gn
index f411b80..8234f01 100644
--- a/third_party/pico_sdk/gn/BUILD.gn
+++ b/third_party/pico_sdk/gn/BUILD.gn
@@ -13,15 +13,11 @@
 # the License.
 
 # These warnings need to be disabled when using strict warnings.
-#
-# TODO(amontanez): Just applying these flags to Pi Pico source sets does not
-# work because of Pigweed's default_configs notion and how it orders flags.
-# Removing Pigweed's strict  warnings config is the only working solution for
-# now.
 config("disable_warnings") {
   cflags = [
     "-Wno-undef",
     "-Wno-unused-function",
+    "-Wno-ignored-qualifiers",
   ]
   asmflags = cflags
 }
diff --git a/third_party/pico_sdk/gn/generate_config_header.gni b/third_party/pico_sdk/gn/generate_config_header.gni
index 0cbc4e0..ee2a5b7 100644
--- a/third_party/pico_sdk/gn/generate_config_header.gni
+++ b/third_party/pico_sdk/gn/generate_config_header.gni
@@ -57,8 +57,10 @@
   # This source set bundles up the generated header such that depending on
   # this template will allow targets to include "pico/config_autogen.h".
   pw_source_set("${target_name}") {
-    remove_configs = [ "$dir_pw_build:strict_warnings" ]
-    public_configs = [ ":${target_name}.public_include_dirs" ]
+    public_configs = [
+      "${PICO_ROOT}/gn:disable_warnings",
+      ":${target_name}.public_include_dirs",
+    ]
     deps = [ ":${target_name}.generated_header" ]
     public = [ "${_generated_header_path}" ]
     forward_variables_from(invoker, "*", [ "config_header_files" ])
diff --git a/third_party/pico_sdk/src/BUILD.gn b/third_party/pico_sdk/src/BUILD.gn
index 6eb97aa..e63f451 100644
--- a/third_party/pico_sdk/src/BUILD.gn
+++ b/third_party/pico_sdk/src/BUILD.gn
@@ -30,10 +30,13 @@
 config("elf2uf2_configs") {
   include_dirs = [ "$PICO_SRC_DIR/src/common/boot_uf2/include" ]
   cflags_cc = [ "-std=gnu++14" ]
+  cflags = [ "-Wno-reorder-ctor" ]
 }
 
 pw_executable("elf2uf2") {
-  configs = [ ":elf2uf2_configs" ]
+  configs = [
+    ":elf2uf2_configs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   sources = [ "$PICO_SRC_DIR/tools/elf2uf2/main.cpp" ]
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
 }
diff --git a/third_party/pico_sdk/src/boards/BUILD.gn b/third_party/pico_sdk/src/boards/BUILD.gn
index d92764e..13a9bdc 100644
--- a/third_party/pico_sdk/src/boards/BUILD.gn
+++ b/third_party/pico_sdk/src/boards/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("boards") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public = [
     "${_CWD}/include/boards/adafruit_feather_rp2040.h",
     "${_CWD}/include/boards/adafruit_itsybitsy_rp2040.h",
diff --git a/third_party/pico_sdk/src/common/boot_picoboot/BUILD.gn b/third_party/pico_sdk/src/common/boot_picoboot/BUILD.gn
index 2e141d4..8110df4 100644
--- a/third_party/pico_sdk/src/common/boot_picoboot/BUILD.gn
+++ b/third_party/pico_sdk/src/common/boot_picoboot/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("boot_picoboot") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
 
   # Optionally requires a dep on "pico/platform.h"
 
diff --git a/third_party/pico_sdk/src/common/boot_uf2/BUILD.gn b/third_party/pico_sdk/src/common/boot_uf2/BUILD.gn
index 2e6468b..f1dd2a8 100644
--- a/third_party/pico_sdk/src/common/boot_uf2/BUILD.gn
+++ b/third_party/pico_sdk/src/common/boot_uf2/BUILD.gn
@@ -26,7 +26,9 @@
 }
 
 pw_source_set("boot_uf2") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public = [ "${_CWD}/include/boot/uf2.h" ]
 }
diff --git a/third_party/pico_sdk/src/common/pico_base/BUILD.gn b/third_party/pico_sdk/src/common/pico_base/BUILD.gn
index 73e176d..179750a 100644
--- a/third_party/pico_sdk/src/common/pico_base/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_base/BUILD.gn
@@ -44,10 +44,10 @@
 }
 
 pw_source_set("pico_base") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
   public_configs = [
     ":board_define",
     ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
   ]
   public = [
     "${_CWD}/include/pico.h",
diff --git a/third_party/pico_sdk/src/common/pico_base/generate_version_header.gni b/third_party/pico_sdk/src/common/pico_base/generate_version_header.gni
index 189bf7e..5200cf5 100644
--- a/third_party/pico_sdk/src/common/pico_base/generate_version_header.gni
+++ b/third_party/pico_sdk/src/common/pico_base/generate_version_header.gni
@@ -64,8 +64,10 @@
   }
 
   pw_source_set("${target_name}") {
-    remove_configs = [ "$dir_pw_build:strict_warnings" ]
-    public_configs = [ ":${target_name}.public_include_dirs" ]
+    public_configs = [
+      "${PICO_ROOT}/gn:disable_warnings",
+      ":${target_name}.public_include_dirs",
+    ]
     deps = [ ":${target_name}.generated_header" ]
     public = [ "${_generated_header_path}" ]
     forward_variables_from(invoker,
diff --git a/third_party/pico_sdk/src/common/pico_binary_info/BUILD.gn b/third_party/pico_sdk/src/common/pico_binary_info/BUILD.gn
index 86fbbb5..6bed6bb 100644
--- a/third_party/pico_sdk/src/common/pico_binary_info/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_binary_info/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_binary_info") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/common/pico_base" ]
   public = [
     "${_CWD}/include/pico/binary_info.h",
diff --git a/third_party/pico_sdk/src/common/pico_bit_ops/BUILD.gn b/third_party/pico_sdk/src/common/pico_bit_ops/BUILD.gn
index 7a55fb1..e7ca014 100644
--- a/third_party/pico_sdk/src/common/pico_bit_ops/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_bit_ops/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_bit_ops") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/common/pico_base" ]
   public = [ "${_CWD}/include/pico/bit_ops.h" ]
 }
diff --git a/third_party/pico_sdk/src/common/pico_divider/BUILD.gn b/third_party/pico_sdk/src/common/pico_divider/BUILD.gn
index dea76d4..fb5a81e 100644
--- a/third_party/pico_sdk/src/common/pico_divider/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_divider/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_divider") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2_common/hardware_divider",
diff --git a/third_party/pico_sdk/src/common/pico_stdlib/BUILD.gn b/third_party/pico_sdk/src/common/pico_stdlib/BUILD.gn
index 721254d..0ca61ee 100644
--- a/third_party/pico_sdk/src/common/pico_stdlib/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_stdlib/BUILD.gn
@@ -29,8 +29,10 @@
 }
 
 pw_source_set("headers") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    "${PICO_ROOT}/gn:disable_warnings",
+    ":public_include_dirs",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/common/pico_time",
@@ -51,7 +53,7 @@
 }
 
 pw_source_set("pico_stdlib") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
+  public_configs = [ "${PICO_ROOT}/gn:disable_warnings" ]
   public_deps = [ ":headers" ]
 
   # Ensure the pico stdlib implementation is linked in.
diff --git a/third_party/pico_sdk/src/common/pico_sync/BUILD.gn b/third_party/pico_sdk/src/common/pico_sync/BUILD.gn
index 4fe1f46..fccc423 100644
--- a/third_party/pico_sdk/src/common/pico_sync/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_sync/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_sync") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/common/pico_time:headers",
diff --git a/third_party/pico_sdk/src/common/pico_time/BUILD.gn b/third_party/pico_sdk/src/common/pico_time/BUILD.gn
index ca0dff6..25a08d4 100644
--- a/third_party/pico_sdk/src/common/pico_time/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_time/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("headers") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2_common/hardware_timer",
@@ -39,7 +41,7 @@
 }
 
 pw_source_set("pico_time") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
+  public_configs = [ "${PICO_ROOT}/gn:disable_warnings" ]
   public_deps = [ ":headers" ]
   deps = [ "${PICO_ROOT}/src/common/pico_util" ]
   sources = [
diff --git a/third_party/pico_sdk/src/common/pico_usb_reset_interface/BUILD.gn b/third_party/pico_sdk/src/common/pico_usb_reset_interface/BUILD.gn
index 2c3abd8..ce201b4 100644
--- a/third_party/pico_sdk/src/common/pico_usb_reset_interface/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_usb_reset_interface/BUILD.gn
@@ -26,7 +26,9 @@
 }
 
 pw_source_set("pico_usb_reset_interface") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public = [ "${_CWD}/include/pico/usb_reset_interface.h" ]
 }
diff --git a/third_party/pico_sdk/src/common/pico_util/BUILD.gn b/third_party/pico_sdk/src/common/pico_util/BUILD.gn
index eed47bd..a283d01 100644
--- a/third_party/pico_sdk/src/common/pico_util/BUILD.gn
+++ b/third_party/pico_sdk/src/common/pico_util/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_util") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/common/pico_sync",
diff --git a/third_party/pico_sdk/src/rp2040/hardware_regs/BUILD.gn b/third_party/pico_sdk/src/rp2040/hardware_regs/BUILD.gn
index 739d4bb..48ad183 100644
--- a/third_party/pico_sdk/src/rp2040/hardware_regs/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2040/hardware_regs/BUILD.gn
@@ -26,14 +26,18 @@
 }
 
 pw_source_set("platform_defs") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public = [ "${_CWD}/include/hardware/platform_defs.h" ]
 }
 
 pw_source_set("hardware_regs") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     ":platform_defs",
     "${PICO_ROOT}/src/rp2_common/pico_platform:headers",
diff --git a/third_party/pico_sdk/src/rp2040/hardware_structs/BUILD.gn b/third_party/pico_sdk/src/rp2040/hardware_structs/BUILD.gn
index b472f5e..1a9edfe 100644
--- a/third_party/pico_sdk/src/rp2040/hardware_structs/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2040/hardware_structs/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_structs") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/rp2040/hardware_regs",
     "${PICO_ROOT}/src/rp2040/hardware_regs:platform_defs",
diff --git a/third_party/pico_sdk/src/rp2_common/boot_stage2/BUILD.gn b/third_party/pico_sdk/src/rp2_common/boot_stage2/BUILD.gn
index 7eeee43..2a6851e 100644
--- a/third_party/pico_sdk/src/rp2_common/boot_stage2/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/boot_stage2/BUILD.gn
@@ -30,6 +30,17 @@
   ]
 }
 
+# The upstream boot_stage2.ld doesn't specify the binary entry point or
+# mark the required sections as KEEP(), so they're optimized out with
+# Pigweed's aggressive default optimizations.
+#
+# Because of Pigweed's pw_build_DEFAULT_CONFIGS behavior, this flag
+# needs to be a config rather than just an ldflag of boot_stage2_elf to ensure
+# the flag is ordered properly.
+config("no_gc_sections") {
+  ldflags = [ "-Wl,--no-gc-sections" ]
+}
+
 pw_executable("boot_stage2_elf") {
   _linker_script_path = rebase_path("${_CWD}/boot_stage2.ld", root_build_dir)
 
@@ -41,21 +52,11 @@
   ldflags += [
     "-T${_linker_script_path}",
     "-nostartfiles",
-
-    # Unfortunately, this is not properly applied to compiler flags thanks to
-    # `default_configs`.
-    "-Wl,--no-gc-sections",
   ]
 
   public_configs = [ ":public_include_dirs" ]
+  configs = [ ":no_gc_sections" ]
 
-  # The upstream boot_stage2.ld doesn't specify the binary entry point or
-  # mark the required sections as KEEP(), so they're optimized out with
-  # Pigweed's aggressive default optimizations.
-  remove_configs = [
-    "$dir_pw_build:reduced_size",
-    "$dir_pw_build:strict_warnings",
-  ]
   is_boot_stage2 = true
 
   public = [ "${_CWD}/include/boot_stage2/config.h" ]
diff --git a/third_party/pico_sdk/src/rp2_common/cmsis/BUILD.gn b/third_party/pico_sdk/src/rp2_common/cmsis/BUILD.gn
index 94c8f41..0751c61 100644
--- a/third_party/pico_sdk/src/rp2_common/cmsis/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/cmsis/BUILD.gn
@@ -30,16 +30,20 @@
 }
 
 pw_source_set("rename_exceptions") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public = [ "include/cmsis/rename_exceptions.h" ]
 }
 
 # TODO(amontanez): The CMSIS stub should probably be more configurable to match
 # CMake.
 pw_source_set("cmsis") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public = [
     "${_CWD}/stub/CMSIS/Core/Include/cmsis_armcc.h",
     "${_CWD}/stub/CMSIS/Core/Include/cmsis_armclang.h",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_adc/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_adc/BUILD.gn
index 7a93646..244be5b 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_adc/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_adc/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_adc") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_base/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_base/BUILD.gn
index 00909d4..7f78ed7 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_base/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_base/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_base") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_claim/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_claim/BUILD.gn
index 9ced82c..605d342 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_claim/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_claim/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_claim") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2_common/hardware_sync",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_clocks/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_clocks/BUILD.gn
index dd4eb47..6f23228 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_clocks/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_clocks/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_clocks") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public = [ "${_CWD}/include/hardware/clocks.h" ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_divider/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_divider/BUILD.gn
index 25e1a5f..a277b2e 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_divider/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_divider/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_divider") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_dma/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_dma/BUILD.gn
index 33ca25c..060461d 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_dma/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_dma/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_dma") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_exception/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_exception/BUILD.gn
index cb8e2de..4b8e385 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_exception/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_exception/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_exception") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_flash/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_flash/BUILD.gn
index 6e3e190..ab124bd 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_flash/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_flash/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_flash") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/common/pico_base" ]
   deps = [
     "${PICO_ROOT}/src/common/pico_sync",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_gpio/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_gpio/BUILD.gn
index 193f323..7755c21 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_gpio/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_gpio/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_gpio") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_i2c/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_i2c/BUILD.gn
index 1c3f717..9db3180 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_i2c/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_i2c/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_i2c") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/common/pico_time",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_interp/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_interp/BUILD.gn
index 6a2dec8..f483733 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_interp/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_interp/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_interp") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_irq/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_irq/BUILD.gn
index a21900e..23eb0b7 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_irq/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_irq/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_irq") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_pio/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_pio/BUILD.gn
index f1fc257..9f5177a 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_pio/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_pio/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_pio") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_pll/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_pll/BUILD.gn
index 837611d..2952e66 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_pll/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_pll/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_pll") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_pwm/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_pwm/BUILD.gn
index 968ef3e..b67cecb 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_pwm/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_pwm/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_pwm") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_resets/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_resets/BUILD.gn
index 92beff0..99cba55 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_resets/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_resets/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_resets") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_rtc/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_rtc/BUILD.gn
index b59a0f2..eca3cc0 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_rtc/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_rtc/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_rtc") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_spi/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_spi/BUILD.gn
index 42f5597..b32518a 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_spi/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_spi/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_spi") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/common/pico_time",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_sync/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_sync/BUILD.gn
index 442aab3..a85301a 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_sync/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_sync/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_sync") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_timer/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_timer/BUILD.gn
index 6abf5ac..97f6da1 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_timer/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_timer/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_timer") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_uart/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_uart/BUILD.gn
index 0c71aae..04654d1 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_uart/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_uart/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_uart") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_regs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_vreg/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_vreg/BUILD.gn
index 1815fc0..b36293d 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_vreg/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_vreg/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_vreg") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_watchdog/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_watchdog/BUILD.gn
index 644f722..3acc5fd 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_watchdog/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_watchdog/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_watchdog") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/hardware_xosc/BUILD.gn b/third_party/pico_sdk/src/rp2_common/hardware_xosc/BUILD.gn
index a2d77d8..6e5d693 100644
--- a/third_party/pico_sdk/src/rp2_common/hardware_xosc/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/hardware_xosc/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("hardware_xosc") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2040/hardware_structs",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_bootrom/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_bootrom/BUILD.gn
index d1d28a2..2f401ac 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_bootrom/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_bootrom/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_bootrom") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/common/pico_base" ]
   public = [
     "${_CWD}/include/pico/bootrom.h",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_double/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_double/BUILD.gn
index ef7feb7..c2fe44f 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_double/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_double/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_double") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2_common/pico_bootrom",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/BUILD.gn
index 6d355ee..b469e0c 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("rp2040_usb_device_enumeration") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/common/pico_time",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_float/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_float/BUILD.gn
index 04c0fdf..967b6c0 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_float/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_float/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_float") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2_common/pico_bootrom",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_int64_ops/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_int64_ops/BUILD.gn
index 6458280..def0ace 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_int64_ops/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_int64_ops/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_int64_ops") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/common/pico_base" ]
   deps = [ "${PICO_ROOT}/src/rp2_common/pico_platform" ]
   public = [ "${_CWD}/include/pico/int64_ops.h" ]
diff --git a/third_party/pico_sdk/src/rp2_common/pico_malloc/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_malloc/BUILD.gn
index ad1afbe..4d080b2 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_malloc/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_malloc/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_malloc") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/common/pico_sync",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_mem_ops/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_mem_ops/BUILD.gn
index df40c7e..775f270 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_mem_ops/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_mem_ops/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_mem_ops") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/common/pico_base" ]
   deps = [
     "${PICO_ROOT}/src/rp2_common/pico_bootrom",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_multicore/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_multicore/BUILD.gn
index d154954..1e7833b 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_multicore/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_multicore/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_multicore") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/common/pico_sync",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_platform/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_platform/BUILD.gn
index 593196d..f97238e 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_platform/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_platform/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("headers") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/rp2040/hardware_regs:platform_defs" ]
   configs = [ "${PICO_ROOT}/src/rp2_common/pico_platform:public_include_dirs" ]
   public = [
@@ -37,7 +39,7 @@
 }
 
 pw_source_set("pico_platform") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
+  public_configs = [ "${PICO_ROOT}/gn:disable_warnings" ]
   public_deps = [ ":headers" ]
   deps = [ "${PICO_ROOT}/src/rp2_common/hardware_base" ]
   sources = [ "${_CWD}/platform.c" ]
diff --git a/third_party/pico_sdk/src/rp2_common/pico_printf/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_printf/BUILD.gn
index 00453c4..a159a2f 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_printf/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_printf/BUILD.gn
@@ -34,8 +34,10 @@
 }
 
 pw_source_set("pico_printf") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/common/pico_base" ]
   deps = [ "${PICO_ROOT}/src/rp2_common/pico_platform" ]
   public = [ "${_CWD}/include/pico/printf.h" ]
diff --git a/third_party/pico_sdk/src/rp2_common/pico_runtime/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_runtime/BUILD.gn
index f0c42c6..134c1de 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_runtime/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_runtime/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_runtime") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
 
   deps = [
     "${PICO_ROOT}/src/common/pico_base",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_standard_link/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_standard_link/BUILD.gn
index 457f93d..654c34b 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_standard_link/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_standard_link/BUILD.gn
@@ -29,7 +29,7 @@
 }
 
 pw_source_set("pico_standard_link") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
+  public_configs = [ "${PICO_ROOT}/gn:disable_warnings" ]
   all_dependent_configs = [ ":linker_script" ]
   inputs = [ "${_CWD}/memmap_default.ld" ]
   deps = [
diff --git a/third_party/pico_sdk/src/rp2_common/pico_stdio/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_stdio/BUILD.gn
index 38e2c69..5d77ea3 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_stdio/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_stdio/BUILD.gn
@@ -40,8 +40,10 @@
 # TODO(amontanez): This is definitely a facade. For now, just have header and
 # header+impl build targets to simulate.
 pw_source_set("headers") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_base",
     "${PICO_ROOT}/src/rp2_common/pico_platform",
@@ -54,7 +56,7 @@
 }
 
 pw_source_set("pico_stdio") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
+  public_configs = [ "${PICO_ROOT}/gn:disable_warnings" ]
   all_dependent_configs = [ ":printf_wrappers" ]
   public_deps = [ ":headers" ]
   deps = [
diff --git a/third_party/pico_sdk/src/rp2_common/pico_stdio_semihosting/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_stdio_semihosting/BUILD.gn
index 5590ad2..a41941b 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_stdio_semihosting/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_stdio_semihosting/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_stdio_semihosting") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/rp2_common/pico_stdio:headers" ]
   deps = [ "${PICO_ROOT}/src/common/pico_binary_info" ]
   public = [ "${_CWD}/include/pico/stdio_semihosting.h" ]
diff --git a/third_party/pico_sdk/src/rp2_common/pico_stdio_uart/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_stdio_uart/BUILD.gn
index 788a0de..c4ca7a2 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_stdio_uart/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_stdio_uart/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_stdio_uart") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/rp2_common/hardware_uart",
     "${PICO_ROOT}/src/rp2_common/pico_stdio:headers",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_stdio_usb/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_stdio_usb/BUILD.gn
index 30a3434..7bf6d1f 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_stdio_usb/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_stdio_usb/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_stdio_usb") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [
     "${PICO_ROOT}/src/common/pico_usb_reset_interface",
     "${PICO_ROOT}/src/rp2_common/pico_stdio:headers",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_stdlib/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_stdlib/BUILD.gn
index 448d1d7..aca0c9e 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_stdlib/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_stdlib/BUILD.gn
@@ -24,7 +24,7 @@
 import("${PICO_ROOT}/src/common/pico_stdlib/pico_stdio.gni")
 
 pw_source_set("pico_stdlib") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
+  public_configs = [ "${PICO_ROOT}/gn:disable_warnings" ]
   deps = [
     "${PICO_ROOT}/src/common/pico_stdlib:headers",
     "${PICO_ROOT}/src/rp2_common/hardware_clocks",
diff --git a/third_party/pico_sdk/src/rp2_common/pico_unique_id/BUILD.gn b/third_party/pico_sdk/src/rp2_common/pico_unique_id/BUILD.gn
index a3f7b57..c74f108 100644
--- a/third_party/pico_sdk/src/rp2_common/pico_unique_id/BUILD.gn
+++ b/third_party/pico_sdk/src/rp2_common/pico_unique_id/BUILD.gn
@@ -26,8 +26,10 @@
 }
 
 pw_source_set("pico_unique_id") {
-  remove_configs = [ "$dir_pw_build:strict_warnings" ]
-  public_configs = [ ":public_include_dirs" ]
+  public_configs = [
+    ":public_include_dirs",
+    "${PICO_ROOT}/gn:disable_warnings",
+  ]
   public_deps = [ "${PICO_ROOT}/src/common/pico_base" ]
   deps = [ "${PICO_ROOT}/src/rp2_common/hardware_flash" ]
   public = [ "${_CWD}/include/pico/unique_id.h" ]