diff --git a/Kconfig.zephyr b/Kconfig.zephyr index 7a5bfee9635..c57c0d8cf54 100644 --- a/Kconfig.zephyr +++ b/Kconfig.zephyr @@ -10,6 +10,14 @@ config KERNELVERSION string option env="KERNELVERSION" +config ENV_VAR_SYM_BOARD_DIR + string + option env="ENV_VAR_BOARD_DIR" + +config ENV_VAR_SYM_ARCH + string + option env="ENV_VAR_ARCH" + source "arch/Kconfig" source "kernel/Kconfig" @@ -37,5 +45,5 @@ source "tests/Kconfig" # Board defaults should be parsed after SoC defaults # because board usually overrides SoC values. # -source "arch/*/soc/*/Kconfig.defconfig" -source "boards/*/*/Kconfig.defconfig" +source "arch/$ENV_VAR_SYM_ARCH/soc/*/Kconfig.defconfig" +source "$ENV_VAR_SYM_BOARD_DIR/Kconfig.defconfig" diff --git a/arch/Kconfig b/arch/Kconfig index 51a5886de3f..4c49d8431fe 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -298,6 +298,6 @@ config BOARD arch//soc// -source "arch/*/Kconfig" +source "arch/$ENV_VAR_SYM_ARCH/Kconfig" source "boards/Kconfig" diff --git a/boards/Kconfig b/boards/Kconfig index 08533c54359..e4391da7262 100644 --- a/boards/Kconfig +++ b/boards/Kconfig @@ -16,10 +16,10 @@ config QEMU_TARGET choice prompt "Board Selection" -source "boards/*/*/Kconfig.board" +source "$ENV_VAR_SYM_BOARD_DIR/Kconfig.board" endchoice menu "Board Options" -source "boards/*/*/Kconfig" +source "$ENV_VAR_SYM_BOARD_DIR/Kconfig" endmenu diff --git a/cmake/kconfig.cmake b/cmake/kconfig.cmake index 20fbf788951..e1f2f1bf304 100644 --- a/cmake/kconfig.cmake +++ b/cmake/kconfig.cmake @@ -33,6 +33,11 @@ set(COMMAND_FOR_menuconfig ${KCONFIG_MCONF} ${KCONFIG_ROOT}) set(COMMAND_FOR_oldconfig ${KCONFIG_CONF} --oldconfig ${KCONFIG_ROOT}) set(COMMAND_FOR_xconfig qconf ${KCONFIG_ROOT}) +# Set environment variables so that Kconfig can prune Kconfig source +# files for other architectures +set(ENV{ENV_VAR_ARCH} ${ARCH}) +set(ENV{ENV_VAR_BOARD_DIR} ${BOARD_DIR}) + foreach(kconfig_target ${kconfig_target_list}) if (NOT WIN32) add_custom_target( @@ -41,6 +46,8 @@ foreach(kconfig_target ${kconfig_target_list}) srctree=${PROJECT_SOURCE_DIR} KERNELVERSION=${PROJECT_VERSION} KCONFIG_CONFIG=${DOTCONFIG} + ENV_VAR_ARCH=$ENV{ENV_VAR_ARCH} + ENV_VAR_BOARD_DIR=$ENV{ENV_VAR_BOARD_DIR} ${COMMAND_FOR_${kconfig_target}} WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/kconfig USES_TERMINAL