mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 03:45:50 +08:00
cmake/nuttx_mkconfig: Improve .config comparison logic
Refactor the process of comparing .config and .config.orig files by stripping CONFIG_BASE_DEFCONFIG lines to prevent false -dirty flags. Update .config to ensure it matches the expected Make behavior by writing the correct BASE_DEFCONFIG value. Signed-off-by: Arjav Patel <arjav1528@gmail.com>
This commit is contained in:
committed by
Alan C. Assis
parent
5060ee80d1
commit
c172074f21
@@ -43,13 +43,43 @@ if(COMPARE_RESULT EQUAL 0 AND EXISTS ${CONFIG_H})
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(BASE_DEFCONFIG "${NUTTX_BOARD}/${NUTTX_CONFIG}")
|
set(BASE_DEFCONFIG "${NUTTX_BOARD}/${NUTTX_CONFIG}")
|
||||||
execute_process(
|
# Mirror tools/Unix.mk:258-263: compare .config to .config.orig after stripping
|
||||||
COMMAND ${CMAKE_COMMAND} -E compare_files ${CMAKE_BINARY_DIR}/.config
|
# CONFIG_BASE_DEFCONFIG lines so our own write of that value does not spuriously
|
||||||
${CMAKE_BINARY_DIR}/.config.orig RESULT_VARIABLE COMPARE_RESULT)
|
# trigger -dirty on subsequent runs.
|
||||||
|
file(READ ${CMAKE_BINARY_DIR}/.config CONFIG_FOR_DIRTY)
|
||||||
|
file(READ ${CMAKE_BINARY_DIR}/.config.orig CONFIG_ORIG_FOR_DIRTY)
|
||||||
|
# Strip CONFIG_BASE_DEFCONFIG line (with optional trailing newline for last line)
|
||||||
|
string(REGEX REPLACE "\nCONFIG_BASE_DEFCONFIG=\"[^\"]*\"\n?" "\n"
|
||||||
|
CONFIG_FOR_DIRTY "${CONFIG_FOR_DIRTY}")
|
||||||
|
string(REGEX REPLACE "^CONFIG_BASE_DEFCONFIG=\"[^\"]*\"\n?" ""
|
||||||
|
CONFIG_FOR_DIRTY "${CONFIG_FOR_DIRTY}")
|
||||||
|
string(REGEX REPLACE "\nCONFIG_BASE_DEFCONFIG=\"[^\"]*\"\n?" "\n"
|
||||||
|
CONFIG_ORIG_FOR_DIRTY "${CONFIG_ORIG_FOR_DIRTY}")
|
||||||
|
string(REGEX REPLACE "^CONFIG_BASE_DEFCONFIG=\"[^\"]*\"\n?" ""
|
||||||
|
CONFIG_ORIG_FOR_DIRTY "${CONFIG_ORIG_FOR_DIRTY}")
|
||||||
|
if(CONFIG_FOR_DIRTY STREQUAL CONFIG_ORIG_FOR_DIRTY)
|
||||||
|
set(COMPARE_RESULT 0)
|
||||||
|
else()
|
||||||
|
set(COMPARE_RESULT 1)
|
||||||
|
endif()
|
||||||
if(COMPARE_RESULT)
|
if(COMPARE_RESULT)
|
||||||
string(APPEND BASE_DEFCONFIG "-dirty")
|
string(APPEND BASE_DEFCONFIG "-dirty")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Write CONFIG_BASE_DEFCONFIG to .config so it matches Make behavior
|
||||||
|
file(READ ${CMAKE_BINARY_DIR}/.config CONFIG_CONTENT)
|
||||||
|
string(REGEX REPLACE "CONFIG_BASE_DEFCONFIG=\".*\""
|
||||||
|
"CONFIG_BASE_DEFCONFIG=\"${BASE_DEFCONFIG}\"" CONFIG_CONTENT
|
||||||
|
"${CONFIG_CONTENT}")
|
||||||
|
if(NOT CONFIG_CONTENT MATCHES "CONFIG_BASE_DEFCONFIG=")
|
||||||
|
string(APPEND CONFIG_CONTENT "\nCONFIG_BASE_DEFCONFIG=\"${BASE_DEFCONFIG}\"\n")
|
||||||
|
endif()
|
||||||
|
file(WRITE ${CMAKE_BINARY_DIR}/.config "${CONFIG_CONTENT}")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/.config
|
||||||
|
${CMAKE_BINARY_DIR}/.config.prev
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
set(DEQUOTELIST
|
set(DEQUOTELIST
|
||||||
# NuttX
|
# NuttX
|
||||||
"CONFIG_DEBUG_OPTLEVEL" # Custom debug level
|
"CONFIG_DEBUG_OPTLEVEL" # Custom debug level
|
||||||
|
|||||||
Reference in New Issue
Block a user