| # Kconfig - miscellany configuration options | 
 |  | 
 | # | 
 | # Copyright (c) 2014-2015 Wind River Systems, Inc. | 
 | # | 
 | # SPDX-License-Identifier: Apache-2.0 | 
 | # | 
 |  | 
 | menu "Compile and Link Features" | 
 |  | 
 | menu "Linker Options" | 
 | config TEXT_SECTION_OFFSET | 
 | 	hex "TEXT section offset" | 
 | 	default 0 | 
 | 	help | 
 | 	This sets and offset before the text section and allows booting images | 
 | 	with custom headers that are inserted at the beginning of the image. | 
 |  | 
 | config HAVE_CUSTOM_LINKER_SCRIPT | 
 | 	prompt "Custom linker scripts provided" | 
 | 	def_bool n | 
 | 	help | 
 | 	Set this option if you have a custom linker script which needed to | 
 | 	be define in CUSTOM_LINKER_SCRIPT. | 
 |  | 
 | config CUSTOM_LINKER_SCRIPT | 
 | 	string "Path to custom linker script" | 
 | 	default "" | 
 | 	depends on HAVE_CUSTOM_LINKER_SCRIPT | 
 | 	help | 
 | 	Path to the linker script to be used instead of the one define by the | 
 | 	board. | 
 |  | 
 | 	The linker script must be based on a version provided by Zephyr since | 
 | 	the kernel can expect a certain layout/certain regions. | 
 |  | 
 | 	This is useful when an application needs to add sections into the | 
 | 	linker script and avoid having to change the script provided by | 
 | 	Zephyr. | 
 |  | 
 | config CUSTOM_RODATA_LD | 
 | 	bool "Include custom-rodata.ld" | 
 | 	default n | 
 | 	help | 
 | 	Include a customized linker script fragment for inserting additional | 
 | 	data and linker directives into the rodata section. | 
 |  | 
 | config CUSTOM_RWDATA_LD | 
 | 	bool "Include custom-rwdata.ld" | 
 | 	default n | 
 | 	help | 
 | 	Include a customized linker script fragment for inserting additional | 
 | 	data and linker directives into the data section. | 
 |  | 
 | config CUSTOM_SECTIONS_LD | 
 | 	bool "Include custom-sections.ld" | 
 | 	default n | 
 | 	help | 
 | 	Include a customized linker script fragment for inserting additional | 
 | 	arbitrary sections. | 
 |  | 
 | config LINK_WHOLE_ARCHIVE | 
 | 	bool "Allow linking with --whole-archive" | 
 | 	default n | 
 | 	help | 
 | 	This options allows linking external libraries with the | 
 | 	--whole-archive option to keep all symbols. | 
 |  | 
 | endmenu | 
 |  | 
 | menu "Compiler Options" | 
 | config CROSS_COMPILE | 
 | 	string "Cross-compiler tool prefix" | 
 | 	help | 
 | 	Same as running 'make CROSS_COMPILE=prefix-' but stored for | 
 | 	default make runs in this kernel build directory.  You don't | 
 | 	need to set this unless you want the configured kernel build | 
 | 	directory to select the cross-compiler automatically. | 
 |  | 
 | config COMPILER_OPT | 
 | 	string | 
 | 	prompt "Custom compiler options" | 
 | 	default "" | 
 | 	help | 
 | 	This option is a free-form string that is passed to the compiler | 
 | 	when building all parts of a project (i.e. kernel). | 
 | 	The compiler options specified by this string supplement the | 
 | 	pre-defined set of compiler supplied by the build system, | 
 | 	and can be used to change compiler optimization, warning and error | 
 | 	messages, and so on. | 
 |  | 
 | config TOOLCHAIN_VARIANT | 
 | 	string "Cross-compiler variant name" | 
 | 	help | 
 | 	For optimized compilers with reduced features, specify the name | 
 | 	of the variant. | 
 |  | 
 | endmenu | 
 |  | 
 | config CPLUSPLUS | 
 | 	bool "Enable C++ support for the application" | 
 | 	default n | 
 | 	help | 
 | 	This option enables the use of applications built with C++. | 
 |  | 
 | config GDB_INFO | 
 | 	bool | 
 | 	prompt "Task-aware debugging with GDB" | 
 | 	default n | 
 | 	help | 
 | 	  This option enables the kernel to collect additional information | 
 | 	  during interrupts, exceptions, and context switches. This information | 
 | 	  is required for task-aware debugging with GDB. | 
 |  | 
 | config KERNEL_BIN_NAME | 
 | 	string "The kernel binary name" | 
 | 	default "zephyr" | 
 | 	help | 
 | 	This option sets the name of the generated kernel binary. | 
 |  | 
 | endmenu | 
 |  | 
 | menu "Debugging Options" | 
 |  | 
 | config DEBUG | 
 | 	bool "Build kernel with debugging enabled" | 
 | 	default n | 
 | 	help | 
 | 	Build a kernel suitable for debugging.  Right now, this option | 
 | 	only disables optimization, more debugging variants can be selected | 
 | 	from here to allow more debugging. | 
 |  | 
 | config STACK_USAGE | 
 | 	bool "Generate stack usage information" | 
 | 	default n | 
 | 	help | 
 | 	Generate  an extra file that specifies the maximum amount of stack used, | 
 | 	on a per-function basis. | 
 |  | 
 | config PRINTK | 
 | 	bool | 
 | 	prompt "Send printk() to console" | 
 | 	depends on CONSOLE_HAS_DRIVER | 
 | 	default y | 
 | 	help | 
 | 	This option directs printk() debugging output to the supported | 
 | 	console device, rather than suppressing the generation | 
 | 	of printk() output entirely. Output is sent immediately, without | 
 | 	any mutual exclusion or buffering. | 
 |  | 
 | config STDOUT_CONSOLE | 
 | 	bool | 
 | 	prompt "Send stdout to console" | 
 | 	depends on CONSOLE_HAS_DRIVER | 
 | 	default n | 
 | 	help | 
 | 	This option directs standard output (e.g. printf) to the console | 
 | 	device, rather than suppressing it entirely. | 
 |  | 
 | config EARLY_CONSOLE | 
 | 	bool | 
 | 	prompt "Send stdout at the earliest stage possible" | 
 | 	default n | 
 | 	help | 
 | 	This option will enable stdout as early as possible, for debugging | 
 | 	purpose. For instance, in case of STDOUT_CONSOLE being set it will | 
 | 	initialize its driver earlier than normal, in order to get the stdout | 
 | 	sent through the console at the earliest stage possible. | 
 |  | 
 | config ASSERT | 
 | 	bool | 
 | 	prompt "Enable __ASSERT() macro" | 
 | 	default n | 
 | 	help | 
 | 	This enables the __ASSERT() macro in the kernel code. If an assertion | 
 | 	fails, the calling thread is put on an infinite tight loop. Since | 
 | 	enabling this adds a significant footprint, it should only be enabled | 
 | 	in a non-production system. | 
 |  | 
 | config ASSERT_LEVEL | 
 | 	int | 
 | 	prompt "__ASSERT() level" | 
 | 	default 2 | 
 | 	range 0 2 | 
 | 	depends on ASSERT | 
 | 	help | 
 | 	This option specifies the assertion level used by the __ASSERT() | 
 | 	macro. It can be set to one of three possible values: | 
 |  | 
 | 	Level 0: off | 
 | 	Level 1: on + warning in every file that includes __assert.h | 
 | 	Level 2: on + no warning | 
 |  | 
 | config DEBUG_TRACING_KERNEL_OBJECTS | 
 | 	bool "Kernel object tracing (deprecated)" | 
 | 	select OBJECT_TRACING | 
 | 	default n | 
 | 	help | 
 | 	  For backward compatibility only | 
 |  | 
 | config OBJECT_TRACING | 
 | 	bool | 
 | 	prompt "Kernel object tracing" | 
 | 	default n | 
 | 	help | 
 | 	This option enable the feature for tracing kernel objects. This option | 
 | 	is for debug purposes and increases the memory footprint of the kernel. | 
 |  | 
 | config OVERRIDE_FRAME_POINTER_DEFAULT | 
 | 	bool | 
 | 	prompt "Override compiler defaults for -fomit-frame-pointer" | 
 | 	default n | 
 | 	help | 
 | 	Omitting the frame pointer prevents the compiler from putting the stack | 
 | 	frame pointer into a register. Saves a few instructions in function | 
 | 	prologues/epilogues and frees up a register for general-purpose use, | 
 | 	which can provide good performance improvements on register-constrained | 
 | 	architectures like x86. On some architectures (including x86) omitting | 
 | 	frame pointers impedes debugging as local variables are harder to | 
 | 	locate. At -O1 and above gcc will enable -fomit-frame-pointer | 
 | 	automatically but only if the architecture does not require if for | 
 | 	effective debugging. | 
 |  | 
 | 	Choose Y is you want to override the default frame pointer behaviour | 
 | 	of your compiler, otherwise choose N. | 
 |  | 
 | config OMIT_FRAME_POINTER | 
 | 	bool | 
 | 	prompt "Omit frame pointer" | 
 | 	default n | 
 | 	depends on OVERRIDE_FRAME_POINTER_DEFAULT | 
 | 	help | 
 | 	Choose Y for best performance. On some architectures (including x86) | 
 | 	this will favour code size and performance over debugability. | 
 |  | 
 | 	Choose N in you wish to retain the frame pointer. This option may | 
 | 	be useful if your application uses runtime backtracing and does not | 
 | 	support parsing unwind tables. | 
 |  | 
 | 	If unsure, disable OVERRIDE_FRAME_POINTER_DEFAULT to allow the compiler | 
 | 	to adopt sensible defaults for your architecture. | 
 |  | 
 | endmenu | 
 |  | 
 | menu "System Monitoring Options" | 
 |  | 
 | config PERFORMANCE_METRICS | 
 | 	bool | 
 | 	prompt "Enable performance metrics [EXPERIMENTAL]" | 
 | 	default n | 
 | 	help | 
 | 	Enable Performance Metrics. | 
 |  | 
 | config BOOT_TIME_MEASUREMENT | 
 | 	bool | 
 | 	prompt "Boot time measurements [EXPERIMENTAL]" | 
 | 	default n | 
 | 	depends on PERFORMANCE_METRICS | 
 | 	help | 
 | 	This option enables the recording of timestamps during system start | 
 | 	up. The global variable __start_tsc records the time kernel begins | 
 | 	executing, while __main_tsc records when main() begins executing, | 
 | 	and __idle_tsc records when the CPU becomes idle. All values are | 
 | 	recorded in terms of CPU clock cycles since system reset. | 
 |  | 
 | config CPU_CLOCK_FREQ_MHZ | 
 | 	int | 
 | 	prompt "CPU CLock Frequency in MHz" | 
 | 	default 20 | 
 | 	depends on BOOT_TIME_MEASUREMENT | 
 | 	help | 
 | 	This option specifies the CPU Clock Frequency in MHz in order to | 
 | 	convert Intel RDTSC timestamp to microseconds. | 
 |  | 
 | endmenu | 
 |  | 
 | menu "Boot Options" | 
 |  | 
 | config IS_BOOTLOADER | 
 | 	bool "Act as a bootloader" | 
 | 	default n | 
 | 	depends on XIP | 
 | 	depends on ARM | 
 | 	help | 
 | 	This option indicates that Zephyr will act as a bootloader to execute | 
 | 	a separate Zephyr image payload. | 
 |  | 
 | config BOOTLOADER_SRAM_SIZE | 
 | 	int "SRAM reserved for when Zephyr acts as a bootloader" | 
 | 	default 16 | 
 | 	depends on !XIP || IS_BOOTLOADER | 
 | 	depends on ARM | 
 | 	help | 
 | 	This option specifies the amount of SRAM (measure in kB) reserved for | 
 | 	when Zephyr is to act as a bootloader. | 
 |  | 
 | config BOOTLOADER_KEXEC | 
 | 	bool | 
 | 	prompt "Boot using Linux kexec() system call" | 
 | 	depends on X86 | 
 | 	default n | 
 | 	help | 
 | 	This option signifies that Linux boots the kernel using kexec system call | 
 | 	and utility. This method is used to boot the kernel over the network. | 
 |  | 
 | config BOOTLOADER_UNKNOWN | 
 | 	bool | 
 | 	prompt "Generic boot loader support" | 
 | 	default n | 
 | 	depends on X86 | 
 | 	help | 
 | 	This option signifies that the target has a generic bootloader | 
 | 	or that it supports multiple ways of booting and it isn't clear | 
 | 	at build time which method is to be used. When this option is enabled | 
 | 	the board may have to do extra work to ensure a proper startup. | 
 |  | 
 | config BOOTLOADER_CONTEXT_RESTORE | 
 | 	bool | 
 | 	prompt "Boot loader has context restore support" | 
 | 	default y | 
 | 	depends on SYS_POWER_DEEP_SLEEP && BOOTLOADER_CONTEXT_RESTORE_SUPPORTED | 
 | 	help | 
 | 	This option signifies that the target has a bootloader | 
 | 	that restores CPU context upon resuming from deep sleep | 
 | 	power state. | 
 |  | 
 | config REBOOT | 
 | 	bool "Reboot functionality" | 
 | 	default n | 
 | 	select SYSTEM_CLOCK_DISABLE | 
 | 	help | 
 | 	Enable the sys_reboot() API. Enabling this can drag in other subsystems | 
 | 	needed to perform a "safe" reboot (e.g. SYSTEM_CLOCK_DISABLE, to stop the | 
 | 	system clock before issuing a reset). | 
 | endmenu |