From 50c3d29e6538bb1ae0b4905a0f0e7d968b645bec Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Fri, 21 Jun 2024 09:38:51 -0400 Subject: [PATCH] Treat build-time warnings as errors (#72) * Extend project configuration and defines, using `get` is a bug * Error out on missing `remove_components` * Enable all compiler warnings * Include OpenThread logging header in multipan `app.c` * Update src/ot-rcp/app.c --- .../inc/nc_efr32_wdog.h | 3 +-- .../src/nc_efr32_wdog.c | 2 +- src/rcp-uart-802154/app.c | 1 + tools/build_project.py | 25 ++++++++++++++++--- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/gecko_sdk_extensions/nc_efr32_watchdog_extension/inc/nc_efr32_wdog.h b/gecko_sdk_extensions/nc_efr32_watchdog_extension/inc/nc_efr32_wdog.h index d1af5b8b..db43de3f 100644 --- a/gecko_sdk_extensions/nc_efr32_watchdog_extension/inc/nc_efr32_wdog.h +++ b/gecko_sdk_extensions/nc_efr32_watchdog_extension/inc/nc_efr32_wdog.h @@ -19,8 +19,7 @@ #include "em_cmu.h" #include "em_wdog.h" #include "em_rmu.h" -#include "sli_cpc_timer.h" #include "sl_component_catalog.h" void nc_enable_watchdog(void); -void nc_periodic_timer(sli_cpc_timer_handle_t *handle, void *data); \ No newline at end of file +void nc_poke_watchdog(void); diff --git a/gecko_sdk_extensions/nc_efr32_watchdog_extension/src/nc_efr32_wdog.c b/gecko_sdk_extensions/nc_efr32_watchdog_extension/src/nc_efr32_wdog.c index 21979c00..f18b5a85 100644 --- a/gecko_sdk_extensions/nc_efr32_watchdog_extension/src/nc_efr32_wdog.c +++ b/gecko_sdk_extensions/nc_efr32_watchdog_extension/src/nc_efr32_wdog.c @@ -83,7 +83,7 @@ void nc_enable_watchdog(void) } -void nc_poke_watchdog() +void nc_poke_watchdog(void) { CORE_DECLARE_IRQ_STATE; CORE_ENTER_ATOMIC(); diff --git a/src/rcp-uart-802154/app.c b/src/rcp-uart-802154/app.c index 9f3b75ab..e0d57863 100644 --- a/src/rcp-uart-802154/app.c +++ b/src/rcp-uart-802154/app.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "openthread-system.h" #include "app.h" diff --git a/tools/build_project.py b/tools/build_project.py index 5e72582d..5dba1adf 100755 --- a/tools/build_project.py +++ b/tools/build_project.py @@ -322,11 +322,18 @@ def main(): LOGGER.warning( "Component %s is not present in manifest, cannot remove", component ) + sys.exit(1) # Extend configuration and C defines for input_config, output_config in [ - (manifest.get("configuration", {}), output_project.get("configuration", [])), - (manifest.get("slcp_defines", {}), output_project.get("define", [])), + ( + manifest.get("configuration", {}), + output_project.setdefault("configuration", []), + ), + ( + manifest.get("slcp_defines", {}), + output_project.setdefault("define", []), + ), ]: for name, value in input_config.items(): # Values are always strings @@ -542,6 +549,18 @@ def main(): LOGGER.error("Defines were unused, aborting: %s", unused_defines) sys.exit(1) + # Fix Gecko SDK bugs + sl_rail_util_pti_config_h = args.build_dir / "config/sl_rail_util_pti_config.h" + + # PTI seemingly cannot be excluded, even if it is disabled + if sl_rail_util_pti_config_h.exists(): + sl_rail_util_pti_config_h.write_text( + sl_rail_util_pti_config_h.read_text().replace( + '#warning "RAIL PTI peripheral not configured"\n', + '// #warning "RAIL PTI peripheral not configured"\n', + ) + ) + # Remove absolute paths from the build for reproducibility extra_compiler_flags = [ f"-ffile-prefix-map={str(src.absolute())}={dst}" @@ -550,7 +569,7 @@ def main(): args.build_dir: "/src", toolchain: "/toolchain", }.items() - ] + ] + ["-Wall", "-Wextra", "-Werror"] output_artifact = (args.build_dir / "build/debug" / base_project_name).with_suffix( ".gbl"