diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f4d0786772..6985507aa3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -215,6 +215,14 @@ if(CONFIG_MISRA_SANE) zephyr_compile_options($<$:${CPP_MISRA_SANE_FLAG}>) endif() +# This is intend to be temporary. Once we have fixed the violations that +# prevents build Zephyr, these flags shall be part of the default flags. +if(CONFIG_CODING_GUIDELINE_CHECK) + # @Intent: Obtain toolchain compiler flags relating to coding guideline + toolchain_cc_warning_error_coding_guideline_check(CC_CODING_GUIDELINE_CHECK_FLAG) + zephyr_compile_options($<$:${CC_CODING_GUIDELINE_CHECK_FLAG}>) +endif() + # @Intent: Set compiler specific macro inclusion of AUTOCONF_H toolchain_cc_imacros(${AUTOCONF_H}) diff --git a/Kconfig.zephyr b/Kconfig.zephyr index 3fe5f3500dd..a76ca8c29dd 100644 --- a/Kconfig.zephyr +++ b/Kconfig.zephyr @@ -171,6 +171,12 @@ endmenu menu "Compiler Options" +config CODING_GUIDELINE_CHECK + bool "Enforce coding guideline rules" + help + Use available compiler flags to check coding guideline rules during + the build. + config NATIVE_APPLICATION bool "Build as a native host application" help diff --git a/cmake/compiler/clang/target_warnings.cmake b/cmake/compiler/clang/target_warnings.cmake index cd2b9700faa..3ae0473ee01 100644 --- a/cmake/compiler/clang/target_warnings.cmake +++ b/cmake/compiler/clang/target_warnings.cmake @@ -116,6 +116,14 @@ macro(toolchain_cc_cpp_warning_error_misra_sane dest_var_name) set_ifndef(${dest_var_name} "-Werror=vla") endmacro() +macro(toolchain_cc_warning_error_coding_guideline_check dest_var_name) + if (NOT ${dest_var_name}) + set(${dest_var_name} + -Wvla + ) + endif() +endmacro() + # List the warnings that are not supported for C++ compilations list(APPEND CXX_EXCLUDED_OPTIONS diff --git a/cmake/compiler/gcc/target_warnings.cmake b/cmake/compiler/gcc/target_warnings.cmake index 34d4406fab2..cb244b00e15 100644 --- a/cmake/compiler/gcc/target_warnings.cmake +++ b/cmake/compiler/gcc/target_warnings.cmake @@ -109,6 +109,14 @@ macro(toolchain_cc_cpp_warning_error_misra_sane dest_var_name) set_ifndef(${dest_var_name} "-Werror=vla") endmacro() +macro(toolchain_cc_warning_error_coding_guideline_check dest_var_name) + if (NOT ${dest_var_name}) + set(${dest_var_name} + -Wvla + ) + endif() +endmacro() + # List the warnings that are not supported for C++ compilations list(APPEND CXX_EXCLUDED_OPTIONS