This is wrong but should not crash ] ) } ! # comment config BR2_PACKAGE_GAMMARAY bool "gammaray" depends on BR2_PACKAGE_QT5 help GammaRay Qt introspection probe. second line of help, with correct indentation GammaRay Qt introspection probe. second line of help, with correct indentation third line underindented and thus wrong default 'true' config W1_MASTER_GPIO_CUSTOM tristate "Custom GPIO-based W1 driver" depends on GENERIC_GPIO select W1_GPIOconfig AG71XX tristate "Atheros AR7XXX/AR9XXX built-in ethernet mac support" depends on ATH79 imply HAS_TXX9_SERIAL def_bool LD_VERSION >= 225000000 || LD_IS_LLD select PHYLIB ---help--- If you wish to compile a kernel for AR7XXX/91XXX and enable ethernet support, then you should always answer Y to this. comment "module support disabled" depends on !MODULES menu myMenu depends on NET config NETDEVICES bool "Atheros AR71xx built-in ethernet driver debugging" def_bool ds default n help Atheros AR71xx built-in ethernet driver debugging messages. endmenu if TARGET_OX820 config SYS_CPU default "arm1136" endif if AG71XX config AG71XX_DEBUG bool "Atheros AR71xx built-in ethernet driver debugging" default n help Atheros AR71xx built-in ethernet driver debugging messages. endif # comment menu "System setup" choice prompt "Alpha system type" default ALPHA_GENERIC string "bad" ---help--- This is the system type of your hardware. config HZ_32 bool "32 Hz" config HZ_64 bool "64 Hz" config ALPHA_GENERIC bool "Generic" depends on TTY select HAVE_EISA select GENERIC_BUG_RELATIVE_POINTERS if X86_64 bool "64-bit kernel" if "$(SUBARCH)" = "x86" bool "Support the legacy \"mmu-masters\" devicetree bindings" depends on ARM_SMMU=y && OF help A generic kernel will run on all supported Alpha hardware. endchoice config VGA_HOSE bool def_bool y depends on VGA_CONSOLE && (ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL || ALPHA_TSUNAMI) default y default n default 3 bool "Use WTINT" if ALPHA_SRM || ALPHA_GENERIC default y if ALPHA_QEMU default n if ALPHA_EV5 || ALPHA_EV56 || (ALPHA_EV4 && !ALPHA_LCA) default n if !ALPHA_SRM && !ALPHA_GENERIC default y if SMP default "y" if PPC_POWERNV range 2 32 depends on SMP default "32" if ALPHA_GENERIC || ALPHA_MARVEL default '4' if !ALPHA_GENERIC && !ALPHA_MARVEL help Support VGA on an arbitrary hose; needed for several platforms which always have multiple hoses, and whose consoles support it. endmenu menu "ARC Architecture Configuration" menu "ARC Platform/SoC/Board" #New platform adds here source "arch/arc/plat-eznps/Kconfig" source 'arch/arc/plat-hsdk/Kconfig' endmenu menu "ARC CPU Configuration" choice prompt "ARC Core" default ARC_CPU_HS if ISA_ARCV2 help bla bla if ISA_ARCOMPACT config ARC_CPU_750D bool "ARC750D" select ARC_CANT_LLSC help Support for ARC750 core endif #ISA_ARCOMPACT endchoice if SMP config NR_CPUS int "Maximum number of CPUs (2-4096)" range 2 4096 default "4" endif #SMP config ARC_MMU_V4 bool "MMU v4" depends on ISA_ARCV2 endmenu # "ARC CPU Configuration" menuconfig ARC_PLAT_EZNPS bool "\"EZchip\" ARC dev platform" depends on ISA_ARCOMPACT select CPU_BIG_ENDIAN select CLKSRC_NPS if !PHYS_ADDR_T_64BIT help Support for EZchip development platforms, based on ARC700 cores. We handle few flavors: - Hardware Emulator AKA HE which is FPGA based chassis - Simulator based on MetaWare nSIM - NPS400 chip based on ASIC # SPDX-License-Identifier: GPL-2.0-only config ARM64 def_bool y select HAVE_DYNAMIC_FTRACE_WITH_REGS \ if $(cc-option,-fpatchable-function-entry=2) select HAVE_EFFICIENT_UNALIGNED_ACCESS help ARM 64-bit (AArch64) Linux support. config PHYS_OFFSET hex "Physical address of main memory" if MMU depends on !ARM_PATCH_PHYS_VIRT default DRAM_BASE if !MMU default 0x00000000 if ARCH_EBSA110 || \ ARCH_FOOTBRIDGE || \ ARCH_INTEGRATOR || \ ARCH_REALVIEW default 0x10000000 if ARCH_OMAP1 || ARCH_RPC default 0x20000000 if ARCH_S5PV210 default 0xc0000000 if ARCH_SA1100 help Please provide the physical address corresponding to the location of main memory in your system. comment "S3C2416 Boards" config KERNEL_RAM_BASE_ADDRESS hex "Virtual address of memory base" default 0xe0000000 if SOC_TMS320C6455 default 0xe0000000 if SOC_TMS320C6457 config CC_IS_GCC def_bool $(success,echo "$(CC_VERSION_TEXT)" | grep -q gcc) endif # error # next line caused hang, see https://phabricator.kde.org/D18509 menu # the next lines should all be fine plain:=plain_value with_whitespace := plain value whitespace value_with_expansion := $(ARCH) plain_expansion_mix := Linux/$(ARCH) $(KERNELVERSION) Kernel Configuration # function definition cc-option-bit = $(if-success,$(CC) -Werror $(1) -E -x c /dev/null -o /dev/null,$(1)) # function call $(cc-option-bit,-m64) # function call and storing the result m32-flag := $(cc-option-bit,-m32) # call to known function name := $(filename) # call to known function with arguments $(warning-if,y,hello world 1) # ... with nested expansions $(error-if,$(success, $(LD) -v | grep -q gold), gold linker '$(LD)' not supported) # expansion in different contexts config FOO_$(BAR$(BAZ)) int "$(filename)" default $(lineno) if $(lineno) >= 5 menu "A MENU" visible if 01 > 00 config A_BOOL def_bool y && m || !!(!(!!n)) || "$(foo)" endmenu # Advanced real world example taken from init/Kconfig in Linux 5.10: # Invoke the system shell /bin/sh with a command to pipe a C program with an # asm goto statement to the C compiler that is set by the environment. If the # exit code is 0 then set the default value of CC_HAS_ASM_GOTO_OUTPUT to y, # otherwise to n. config CC_HAS_ASM_GOTO_OUTPUT depends on CC_HAS_ASM_GOTO def_bool $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null) # Real world example with irregular indentation config W1_MASTER_DS2490 tristate "DS2490 USB <-> W1 transport layer for 1-wire" depends on USB help Say Y here if you want to have a driver for DS2490 based USB <-> W1 bridges, for example DS9490*. This support is also available as a module. If so, the module will be called ds2490. # synthetic example to_upper=$(shell,echo $(1) | tr [:lower:] [:upper:]) config ARGS_$(to_upper,$(CC)) string "Arguments for the current compiler \"$(CC)\"" help This is a bad idea. See # binary operator in expression of an if statement if CPU_SUPPORTS_CPUFREQ && MIPS_EXTERNAL_TIMER source "drivers/cpufreq/Kconfig" endif # alert on characters (here a colon) that are ignored (taken from axTLS 2.1.5) config CONFIG_LUA_CORE string "Location of Lua CORE" default "/usr/local" help: If the Lua exists on another directory then this needs to be changed comment "Comment texts know expansions, too: $(CC), and the depends property:" depends on A_BOOL # "boolean" is now a free variable name ... boolean=foo # ... but it looks like a bad idea. This may be disputed. menuconfig MODULES bool "Enable loadable module support" modules # the three modern options config OPTIONS option allnoconfig_y option modules option defconfig_list # old option "env" and obsolete custom options config OPTIONS option env=ARCH option custom-without-argument option custom-with-argument=ABC # old syntax menu OLD_STYLE_PROMPT visible if CPU_SUPPORTS_CPUFREQ # busybox 1.31.1 source libbb/Config.in # uClibc-ng-1.0.37 config DESIRED_TARGET_ARCH string option env="ARCH" config OLD_HELP hex ---help--- old help property default 0x1CEC0FEE endmenu # a few errors allnoconfig_y bool def_bool def_tristate default defconfig_list depends endchoice endif help hex imply int mainmenu modules on option optional prompt range select string tristate visible config OK bool "still OK" help still OK now=fail andNow=OK