SoC common : build :Add multi-config files choice supported. [1/1]
PD#SWPL-189565
Problem:
Fixed use menuconfig to load the last configuration.
Solution:
Add a cache variable to save the config name and use it if needed.
Verify:
N/A
Change-Id: If34583432cc78512ef56f4f8471d3770be6b1587
Signed-off-by: xiaohu.huang <xiaohu.huang@amlogic.com>
diff --git a/Makefile b/Makefile
index 7fa8d73..199792b 100644
--- a/Makefile
+++ b/Makefile
@@ -287,16 +287,20 @@
menuconfig: toolchain $(kernel_BUILD_DIR)
@ cmake --build $(kernel_BUILD_DIR) --target $@
-%defconfig:
- @ make config BOARD_SPEC_CONFIG=$@
+%defconfig:config_clean toolchain
+ @ make $(kernel_BUILD_DIR) BOARD_SPEC_CONFIG=$@
+ @ echo "configuration $@ written to $(kernel_BUILD_DIR)/.config"
.PHONY: config
-config: config_clean toolchain $(kernel_BUILD_DIR)
- @ echo "configuration written to $(kernel_BUILD_DIR)/.config"
+config: config_clean toolchain
+ @ make $(kernel_BUILD_DIR) BOARD_SPEC_CONFIG=defconfig
+ @ echo "configuration defconfig written to $(kernel_BUILD_DIR)/.config"
.PHONY: config_clean
config_clean:
- @ rm -f $(kernel_BUILD_DIR)/build.ninja;
+ @ if [ -f $(kernel_BUILD_DIR)/build.ninja ]; then \
+ rm -f $(kernel_BUILD_DIR)/build.ninja; \
+ fi
.PHONY: flash
flash:
diff --git a/cmake/kconfig.cmake b/cmake/kconfig.cmake
index d7beacd..c11b6e5 100755
--- a/cmake/kconfig.cmake
+++ b/cmake/kconfig.cmake
@@ -18,12 +18,17 @@
set(KCONFIG_ROOT ${SDK_BASE}/Kconfig)
endif()
-if(NOT DEFINED ENV{BOARD_SPEC_CONFIG} OR "$ENV{BOARD_SPEC_CONFIG}" STREQUAL "")
+if(NOT DEFINED ENV{BOARD_SPEC_CONFIG} AND NOT DEFINED DEFCONFIG_NAME)
message(STATUS "Use default config file:defconfig.")
set(BOARD_DEFCONFIG ${BOARD_DIR}/defconfig)
else()
- message(STATUS "Use config file $ENV{BOARD_SPEC_CONFIG}.")
+ if (NOT "$ENV{BOARD_SPEC_CONFIG}" STREQUAL "")
+ set(DEFCONFIG_NAME $ENV{BOARD_SPEC_CONFIG} CACHE STRING "save defconfig file name" FORCE)
+ else()
+ set(ENV{BOARD_SPEC_CONFIG} ${DEFCONFIG_NAME})
+ endif()
set(BOARD_DEFCONFIG ${BOARD_DIR}/$ENV{BOARD_SPEC_CONFIG})
+ message(STATUS "Use config file $ENV{BOARD_SPEC_CONFIG}.")
endif()
set(DOTCONFIG ${PROJECT_BINARY_DIR}/.config)