mirror of
https://github.com/apache/nuttx.git
synced 2026-09-08 01:46:35 +00:00
cmake: normalize .config on reconfigure
olddefconfig only ran when .config was generated from the defconfig, so changes applied to an existing .config (e.g. with kconfig-tweak) never got their dependent defaults. Run olddefconfig on reconfigure as well, as the Make flow does on every build. Signed-off-by: raiden00pl <raiden00@railab.me> Assisted-by: Claude Code
This commit is contained in:
parent
30cbb23e6b
commit
9b0d46c222
2 changed files with 18 additions and 5 deletions
|
|
@ -368,6 +368,9 @@ if(NOT EXISTS ${NUTTX_BINARY_DIR}/.config OR NOT "${NUTTX_DEFCONFIG}" STREQUAL
|
|||
# Do olddefconfig step to expand the abbreviated defconfig into normal config
|
||||
nuttx_olddefconfig()
|
||||
|
||||
# save the orig compressed formatted defconfig at the very beginning
|
||||
nuttx_save_defconfig_orig()
|
||||
|
||||
file(RENAME ${NUTTX_BINARY_DIR}/.config.compressed
|
||||
${NUTTX_BINARY_DIR}/.config)
|
||||
set(ENV{KCONFIG_CONFIG} ${NUTTX_BINARY_DIR}/.config)
|
||||
|
|
@ -385,9 +388,11 @@ if(NOT EXISTS ${NUTTX_BINARY_DIR}/.config OR NOT "${NUTTX_DEFCONFIG}" STREQUAL
|
|||
endif()
|
||||
file(WRITE ${NUTTX_BINARY_DIR}/.config "${_config_init_content}")
|
||||
|
||||
# store original expanded .config
|
||||
configure_file(${NUTTX_BINARY_DIR}/.config ${NUTTX_BINARY_DIR}/.config.orig
|
||||
COPYONLY)
|
||||
# store original expanded .config; plain copy so .config does not become a
|
||||
# configure dependency: the compiler cannot change after the first configure,
|
||||
# so a modified .config must not reconfigure mid-build
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${NUTTX_BINARY_DIR}/.config
|
||||
${NUTTX_BINARY_DIR}/.config.orig)
|
||||
|
||||
set(NUTTX_DEFCONFIG_SAVED
|
||||
${NUTTX_DEFCONFIG}
|
||||
|
|
@ -411,6 +416,11 @@ if(NOT EXISTS ${NUTTX_BINARY_DIR}/.config OR NOT "${NUTTX_DEFCONFIG}" STREQUAL
|
|||
message(STATUS " Board: ${NUTTX_BOARD}")
|
||||
message(STATUS " Config: ${NUTTX_CONFIG}")
|
||||
message(STATUS " Appdir: ${NUTTX_APPS_DIR}")
|
||||
else()
|
||||
# Normalize user modifications to .config (e.g. kconfig-tweak) so dependent
|
||||
# defaults materialize, as the Make flow does on each build
|
||||
set(ENV{KCONFIG_CONFIG} ${NUTTX_BINARY_DIR}/.config)
|
||||
nuttx_olddefconfig()
|
||||
endif()
|
||||
|
||||
# declare global custom targets at very beginning `nuttx_global` is used to hold
|
||||
|
|
|
|||
|
|
@ -216,8 +216,12 @@ function(nuttx_olddefconfig)
|
|||
"nuttx_olddefconfig: Failed to initialize Kconfig configuration: ${KCONFIG_OUTPUT}"
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# save the orig compressed formatted defconfig at the very beginning
|
||||
# save the orig compressed formatted defconfig at the very beginning; only valid
|
||||
# during the initial configure while .config.compressed exists
|
||||
|
||||
function(nuttx_save_defconfig_orig)
|
||||
execute_process(COMMAND savedefconfig --out ${NUTTX_BINARY_DIR}/defconfig.tmp
|
||||
WORKING_DIRECTORY ${NUTTX_DIR})
|
||||
|
||||
|
|
@ -227,7 +231,6 @@ function(nuttx_olddefconfig)
|
|||
${NUTTX_BINARY_DIR}/.config.compressed ${NUTTX_BINARY_DIR}/defconfig.tmp
|
||||
${NUTTX_BINARY_DIR}/defconfig.orig
|
||||
WORKING_DIRECTORY ${NUTTX_DIR})
|
||||
|
||||
endfunction()
|
||||
|
||||
function(nuttx_setconfig)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue