summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Kconfig.cmake25
1 files changed, 22 insertions, 3 deletions
diff --git a/cmake/Kconfig.cmake b/cmake/Kconfig.cmake
index 232a11f..47f8295 100644
--- a/cmake/Kconfig.cmake
+++ b/cmake/Kconfig.cmake
@@ -7,25 +7,44 @@ set(TOOL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tools)
set(KCONFIG_DIR ${TOOL_DIR}/Kconfiglib)
set(LOCAL_CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/.config)
-if(DEFCONFIG)
+if(DEFCONFIG AND NOT EXISTS ${CMAKE_BINARY_DIR}/config.cmake)
execute_process(
COMMAND ${KCONFIG_DIR}/defconfig.py ${CMAKE_CURRENT_SOURCE_DIR}/configs/${DEFCONFIG}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
+
+ execute_process(
+ COMMAND ${KCONFIG_DIR}/genconfig.py --header-path ${CMAKE_BINARY_DIR}/generated.h --config-out
+ ${CMAKE_BINARY_DIR}/config.make
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+
+ execute_process(
+ COMMAND ${TOOL_DIR}/make-cmake-config ${CMAKE_BINARY_DIR}/config.make
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
+ ${CMAKE_BINARY_DIR}/config.cmake
+ )
+
+elseif(EXISTS ${CMAKE_BINARY_DIR}/config.cmake)
+ message("Ignoring DEFCONFIG")
else()
message(FATAL_ERROR "DEFCONFIG not set.")
endif()
+include(${CMAKE_BINARY_DIR}/config.cmake)
+
add_custom_target(menuconfig
COMMAND ${KCONFIG_DIR}/menuconfig.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
-add_custom_target(genconfig
+add_custom_command(TARGET menuconfig POST_BUILD
COMMAND ${KCONFIG_DIR}/genconfig.py --header-path ${CMAKE_BINARY_DIR}/generated.h --config-out
${CMAKE_BINARY_DIR}/config.make
COMMAND ${TOOL_DIR}/make-cmake-config ${CMAKE_BINARY_DIR}/config.make
- COMMAND cmake -B ${CMAKE_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)