Skip to content

Commit

Permalink
third_party/pico_sdk: Do not remove strict warnings
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
armandomontanez authored and CQ Bot Account committed Nov 23, 2022
1 parent 878f290 commit de28a3c
Show file tree
Hide file tree
Showing 63 changed files with 257 additions and 145 deletions.
4 changes: 0 additions & 4 deletions targets/rp2040/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@ import("$dir_pw_toolchain/generate_toolchain.gni")

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",
Expand Down
6 changes: 1 addition & 5 deletions third_party/pico_sdk/gn/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
6 changes: 4 additions & 2 deletions third_party/pico_sdk/gn/generate_config_header.gni
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,10 @@ template("generate_config_header") {
# 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" ])
Expand Down
7 changes: 5 additions & 2 deletions third_party/pico_sdk/src/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,13 @@ group("pico_sdk") {
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" ]
}
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/boards/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/common/boot_picoboot/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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"

Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/common/boot_uf2/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ config("public_include_dirs") {
}

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" ]
}
2 changes: 1 addition & 1 deletion third_party/pico_sdk/src/common/pico_base/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ generate_version_header("version") {
}

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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,10 @@ template("generate_version_header") {
}

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,
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/common/pico_binary_info/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/common/pico_bit_ops/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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" ]
}
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/common/pico_divider/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
8 changes: 5 additions & 3 deletions third_party/pico_sdk/src/common/pico_stdlib/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@ config("public_include_dirs") {
}

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",
Expand All @@ -51,7 +53,7 @@ pw_source_set("headers") {
}

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.
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/common/pico_sync/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
8 changes: 5 additions & 3 deletions third_party/pico_sdk/src/common/pico_time/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand All @@ -39,7 +41,7 @@ pw_source_set("headers") {
}

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 = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ config("public_include_dirs") {
}

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" ]
}
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/common/pico_util/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
12 changes: 8 additions & 4 deletions third_party/pico_sdk/src/rp2040/hardware_regs/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,18 @@ config("public_include_dirs") {
}

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",
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/rp2040/hardware_structs/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
23 changes: 12 additions & 11 deletions third_party/pico_sdk/src/rp2_common/boot_stage2/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,17 @@ config("public_include_dirs") {
]
}

# 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)

Expand All @@ -41,21 +52,11 @@ pw_executable("boot_stage2_elf") {
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" ]
Expand Down
12 changes: 8 additions & 4 deletions third_party/pico_sdk/src/rp2_common/cmsis/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,20 @@ config("public_include_dirs") {
}

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",
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/rp2_common/hardware_adc/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/rp2_common/hardware_base/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/rp2_common/hardware_claim/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
6 changes: 4 additions & 2 deletions third_party/pico_sdk/src/rp2_common/hardware_clocks/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ config("public_include_dirs") {
}

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",
Expand Down
Loading

0 comments on commit de28a3c

Please sign in to comment.