# Kconfig - miscellany configuration options
# Copyright (c) 2014-2015 Wind River Systems, Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
menu "Compile and Link Features"
string "The kernel binary name"
This option sets the name of the generated kernel binary.
prompt "Custom linker scripts provided"
Set this option if you have a custom linker script which needed to
be define in CUSTOM_LINKER_SCRIPT.
string "Path to custom linker script"
depends on HAVE_CUSTOM_LINKER_SCRIPT
Path to the linker script to be used instead of the one define by the
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
string "Cross-compiler tool prefix"
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.
prompt "Task-aware debugging with GDB"
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.
bool "Allow linking with --whole-archive"
This options allows linking external libraries with the
--whole-archive option to keep all symbols.
prompt "Custom compiler options"
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.
string "Cross-compiler variant name"
For optimized compilers with reduced features, specify the name
of the variant.
bool "Enable C++ support for the application"
This option enables the use of applications built with C++.
prompt "C Library"
prompt "Build minimal c library"
Build integrated minimal c library. This integrated library is available
to support kernel functionality and test cases. It is not designed to be
used with applications. For applications, please use an external C
library such as newlib.
prompt "Build with newlib c library"
Build with newlib library. The newlib library is expected to be
part of the SDK in this case.
bool "Build additional libc functions [EXPERIMENTAL]"
depends on MINIMAL_LIBC
This option enables building some optional libc functions that
are not used directly by the kernel but can be used in applications.
The option adds the following functions: strtoul, strtol, atoi,
Warning: Use the above functions only for testing, if you need to
use any of the functions in an application you probably should be
linking against a full lib c implementation instead.
menu "Debugging Options"
bool "Build kernel with debugging enabled"
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.
prompt "Task debugging [EXPERIMENTAL]"
This option allows execution of all tasks (with the exception of
essential system tasks) to be suspended so that debugging operations
can be performed.
bool "Generate stack usage information"
Generate an extra file that specifies the maximum amount of stack used,
on a per-function basis.
prompt "Send printk() to console"
depends on CONSOLE_HAS_DRIVER
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.
prompt "Send stdout to console"
depends on CONSOLE_HAS_DRIVER
This option directs standard output (e.g. printf) to the console
device, rather than suppressing it entirely.
prompt "Send stdout at the earliest stage possible"
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.
prompt "Enable __ASSERT() macro"
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.
prompt "__ASSERT() level"
depends on ASSERT
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
prompt "Debug tracing object"
This option enable the feature for tracing kernel objects. This option
is for debug purposes and increase the memory footprint of the kernel.
menu "System Monitoring Options"
prompt "Enable performance metrics [EXPERIMENTAL]"
Enable Performance Metrics.
prompt "Boot time measurements [EXPERIMENTAL]"
depends on PERFORMANCE_METRICS
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.
prompt "CPU CLock Frequency in MHz"
depends on BOOT_TIME_MEASUREMENT
This option specifies the CPU Clock Frequency in MHz in order to
convert Intel RDTSC timestamp to microseconds.
menu "Boot Options"
prompt "Boot using Linux kexec() system call"
depends on X86
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.
prompt "Generic boot loader support"
depends on X86
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 platform may have to do extra work to ensure a proper startup.
bool "Reboot functionality"
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).