cmake: modules: dts: Restore gen_defines.py warnings

Ever since 059aae7c91 (cmake: modules:
dts: make Device Tree error messages more visible, PR #76472), warnings
generated by gen_defines.py got only printed when the exit code signaled
an error.

Without this patch, the warning gets swallowed and the build continues:

```
$ west build --pristine --board nrf54l15pdk/nrf54l15/cpuapp \
  samples/userspace/hello_world_user
<snip>
-- Found BOARD.dts:
<snip>/boards/nordic/nrf54l15pdk/nrf54l15pdk_nrf54l15_cpuapp.dts
-- Generated zephyr.dts: <snip>/build/zephyr/zephyr.dts
<snip>
```

With this patch, the behavior is back to how it was before
059aae7c91:
```
$ west build --pristine --board nrf54l15pdk/nrf54l15/cpuapp \
  samples/userspace/hello_world_user
<snip>
-- Found BOARD.dts: <snip>/nrf54l15pdk/nrf54l15pdk_nrf54l15_cpuapp.dts
unit address and first address in 'reg' (0x5004c000) don't match for
/soc/peripheral@50000000/vpr@4c000/mailbox@1
-- Generated zephyr.dts: <snip>zephyr/build/zephyr/zephyr.dts
<snip>
```

Signed-off-by: Reto Schneider <reto.schneider@husqvarnagroup.com>
This commit is contained in:
Reto Schneider 2024-09-10 21:51:21 +02:00 committed by Carles Cufí
commit db7a3901bd

View file

@ -289,33 +289,13 @@ ${EXTRA_GEN_DEFINES_ARGS}
execute_process( execute_process(
COMMAND ${CMD_GEN_DEFINES} COMMAND ${CMD_GEN_DEFINES}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
RESULT_VARIABLE ret COMMAND_ERROR_IS_FATAL ANY
ERROR_VARIABLE stderr
) )
if(NOT "${ret}" STREQUAL "0") zephyr_file_copy(${ZEPHYR_DTS}.new ${ZEPHYR_DTS} ONLY_IF_DIFFERENT)
if (stderr) zephyr_file_copy(${DEVICETREE_GENERATED_H}.new ${DEVICETREE_GENERATED_H} ONLY_IF_DIFFERENT)
# gen_defines.py failed after printing message(s) to stderr. file(REMOVE ${ZEPHYR_DTS}.new ${DEVICETREE_GENERATED_H}.new)
# Append stream content to the FATAL_ERROR message on a new line. message(STATUS "Generated zephyr.dts: ${ZEPHYR_DTS}")
set(stderr "\n${stderr}") message(STATUS "Generated devicetree_generated.h: ${DEVICETREE_GENERATED_H}")
else()
# gen_defines.py did not print anything on stderr. To inform users
# of this condition, set ${stderr} to "<empty>" to have this printed
# in the error message. Note that we do NOT want a newline, such that
# the error message is printed as a single line, e.g.:
#
# gen_defines.py failed with result code: 1 - stderr contents: <empty>
#
set(stderr "<empty>")
endif()
message(STATUS "In: ${PROJECT_BINARY_DIR}, command: ${CMD_GEN_DEFINES}")
message(FATAL_ERROR "gen_defines.py failed with result code: ${ret} - stderr contents: ${stderr}")
else()
zephyr_file_copy(${ZEPHYR_DTS}.new ${ZEPHYR_DTS} ONLY_IF_DIFFERENT)
zephyr_file_copy(${DEVICETREE_GENERATED_H}.new ${DEVICETREE_GENERATED_H} ONLY_IF_DIFFERENT)
file(REMOVE ${ZEPHYR_DTS}.new ${DEVICETREE_GENERATED_H}.new)
message(STATUS "Generated zephyr.dts: ${ZEPHYR_DTS}")
message(STATUS "Generated devicetree_generated.h: ${DEVICETREE_GENERATED_H}")
endif()
# #
# Run GEN_DRIVER_KCONFIG_SCRIPT. # Run GEN_DRIVER_KCONFIG_SCRIPT.