kconfig,toolchain: add an option for compiler save-temps

Add a Kconfig option to set the compiler save-temps flag and set the GCC
implementation. This is very useful for troubleshooting macro expansion
issues, having an option allows a user to set it like any other config
option.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
This commit is contained in:
Fabio Baltieri 2023-03-29 10:11:46 +01:00 committed by Anas Nashif
parent d82175eadd
commit 3f8f7130e7
5 changed files with 20 additions and 0 deletions

View file

@ -299,6 +299,11 @@ zephyr_compile_options($<TARGET_PROPERTY:compiler,no_common>)
# @Intent: Set compiler specific flag for production of debug information
zephyr_compile_options($<TARGET_PROPERTY:compiler,debug>)
if(CONFIG_COMPILER_SAVE_TEMPS)
# @Intent: Set compiler specific flag for saving temporary object files
zephyr_compile_options($<TARGET_PROPERTY:compiler,save_temps>)
endif()
if(CONFIG_COMPILER_COLOR_DIAGNOSTICS)
# @Intent: Set compiler specific flag for diagnostic messages
zephyr_compile_options($<TARGET_PROPERTY:compiler,diagnostic>)

View file

@ -363,6 +363,12 @@ config COMPILER_WARNINGS_AS_ERRORS
help
Turn on "warning as error" toolchain flags
config COMPILER_SAVE_TEMPS
bool "Save temporary object files"
help
Instruct the compiler to save the temporary intermediate files
permanently. These can be useful for troubleshooting build issues.
config COMPILER_COLOR_DIAGNOSTICS
bool "Colored diagnostics"
default y

View file

@ -20,6 +20,9 @@ set_property(TARGET compiler PROPERTY coverage --coverage -fno-inline)
# clang flag for colourful diagnostic messages
set_compiler_property(PROPERTY diagnostic -fcolor-diagnostics)
# clang flag to save temporary object files
set_compiler_property(PROPERTY save_temps -save-temps)
#######################################################
# This section covers flags related to warning levels #
#######################################################

View file

@ -103,6 +103,9 @@ set_compiler_property(PROPERTY freestanding)
# Flag to include debugging symbol in compilation
set_compiler_property(PROPERTY debug)
# Flags to save temporary object files
set_compiler_property(PROPERTY save_temps)
set_compiler_property(PROPERTY no_common)
# Flags for imacros. The specific header must be appended by user.

View file

@ -180,6 +180,9 @@ check_set_compiler_property(PROPERTY freestanding -ffreestanding)
# Flag to enable debugging
set_compiler_property(PROPERTY debug -g)
# Flags to save temporary object files
set_compiler_property(PROPERTY save_temps -save-temps=obj)
# GCC 11 by default emits DWARF version 5 which cannot be parsed by
# pyelftools. Can be removed once pyelftools supports v5.
check_set_compiler_property(APPEND PROPERTY debug -gdwarf-4)