mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

To get access to environment variables, Kconfig needs to define a symbol using "option env=" syntax. It is tedious to add a symbol entry for each environment variable given that we need to define much more such as 'CC', 'AS', 'srctree' etc. to evaluate the compiler capability in Kconfig. Adding '$' for symbol references is grammatically inconsistent. Looking at the code, the symbols prefixed with 'S' are expanded by: - conf_expand_value() This is used to expand 'arch/$ARCH/defconfig' and 'defconfig_list' - sym_expand_string_value() This is used to expand strings in 'source' and 'mainmenu' All of them are fixed values independent of user configuration. So, they can be changed into the direct expansion instead of symbols. This change makes the code much cleaner. The bounce symbols 'SRCARCH', 'ARCH', 'SUBARCH', 'KERNELVERSION' are gone. sym_init() hard-coding 'UNAME_RELEASE' is also gone. 'UNAME_RELEASE' should be replaced with an environment variable. ARCH_DEFCONFIG is a normal symbol, so it should be simply referenced without '$' prefix. The new syntax is addicted by Make. The variable reference needs parentheses, like $(FOO), but you can omit them for single-letter variables, like $F. Yet, in Makefiles, people tend to use the parenthetical form for consistency / clarification. At this moment, only the environment variable is supported, but I will extend the concept of 'variable' later on. The variables are expanded in the lexer so we can simplify the token handling on the parser side. For example, the following code works. [Example code] config MY_TOOLCHAIN_LIST string default "My tools: CC=$(CC), AS=$(AS), CPP=$(CPP)" [Result] $ make -s alldefconfig && tail -n 1 .config CONFIG_MY_TOOLCHAIN_LIST="My tools: CC=gcc, AS=as, CPP=gcc -E" Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Kees Cook <keescook@chromium.org>
70 lines
1.5 KiB
Text
70 lines
1.5 KiB
Text
# SPDX-License-Identifier: GPL-2.0
|
|
mainmenu "User Mode Linux/$(SUBARCH) $(KERNELVERSION) Kernel Configuration"
|
|
|
|
source "arch/um/Kconfig.common"
|
|
|
|
menu "UML-specific options"
|
|
|
|
menu "Host processor type and features"
|
|
|
|
source "arch/x86/Kconfig.cpu"
|
|
|
|
endmenu
|
|
|
|
config UML_X86
|
|
def_bool y
|
|
select GENERIC_FIND_FIRST_BIT
|
|
|
|
config 64BIT
|
|
bool "64-bit kernel" if "$(SUBARCH)" = "x86"
|
|
default "$(SUBARCH)" != "i386"
|
|
|
|
config X86_32
|
|
def_bool !64BIT
|
|
select HAVE_AOUT
|
|
select ARCH_WANT_IPC_PARSE_VERSION
|
|
select MODULES_USE_ELF_REL
|
|
select CLONE_BACKWARDS
|
|
select OLD_SIGSUSPEND3
|
|
select OLD_SIGACTION
|
|
|
|
config X86_64
|
|
def_bool 64BIT
|
|
select MODULES_USE_ELF_RELA
|
|
|
|
config ARCH_DEFCONFIG
|
|
string
|
|
default "arch/um/configs/i386_defconfig" if X86_32
|
|
default "arch/um/configs/x86_64_defconfig" if X86_64
|
|
|
|
config RWSEM_XCHGADD_ALGORITHM
|
|
def_bool 64BIT
|
|
|
|
config RWSEM_GENERIC_SPINLOCK
|
|
def_bool !RWSEM_XCHGADD_ALGORITHM
|
|
|
|
config 3_LEVEL_PGTABLES
|
|
bool "Three-level pagetables" if !64BIT
|
|
default 64BIT
|
|
help
|
|
Three-level pagetables will let UML have more than 4G of physical
|
|
memory. All the memory that can't be mapped directly will be treated
|
|
as high memory.
|
|
|
|
However, this it experimental on 32-bit architectures, so if unsure say
|
|
N (on x86-64 it's automatically enabled, instead, as it's safe there).
|
|
|
|
config ARCH_HAS_SC_SIGNALS
|
|
def_bool !64BIT
|
|
|
|
config ARCH_REUSE_HOST_VSYSCALL_AREA
|
|
def_bool !64BIT
|
|
|
|
config GENERIC_HWEIGHT
|
|
def_bool y
|
|
|
|
source "arch/um/Kconfig.um"
|
|
|
|
endmenu
|
|
|
|
source "arch/um/Kconfig.rest"
|