blob: 0aa78984987cb7c895c5c80df66b0628afa8ff82 [file] [log] [blame]
# 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
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# 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"
config KERNEL_BIN_NAME
string "The kernel binary name"
default "zephyr"
help
This option sets the name of the generated kernel binary.
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
platform.
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 VERSION_HEADER
bool "Add a version header to binary"
default n
help
This will add a version header section to the generated binary that
can be filled with the software version for example using a post
script.
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 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 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.
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.
config CPLUSPLUS
bool "Enable C++ support for the application"
default n
help
This option enables the use of applications built with C++.
choice
prompt "C Library"
default MINIMAL_LIBC
config MINIMAL_LIBC
bool
prompt "Build minimal c library"
help
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.
config NEWLIB_LIBC
bool
prompt "Build with newlib c library"
help
Build with newlib library. The newlib library is expected to be
part of the SDK in this case.
endchoice
config MINIMAL_LIBC_EXTENDED
bool "Build additional libc functions [EXPERIMENTAL]"
default n
depends on MINIMAL_LIBC
help
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,
strncasecmp.
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.
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 TASK_DEBUG
bool
prompt "Task debugging [EXPERIMENTAL]"
default n
help
This option allows execution of all tasks (with the exception of
essential system tasks) to be suspended so that debugging operations
can be performed.
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
prompt "Debug tracing object"
default n
help
This option enable the feature for tracing kernel objects. This option
is for debug purposes and increase the memory footprint of the kernel.
config OMIT_FRAME_POINTER
bool
prompt "Omit frame pointer"
default n
help
Prevent 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. Omitting frame pointers impedes debugging as local variables are
harder to locate and it is much more difficult to produce a stack
trace. Recommended only for production builds which do not need to be
debugged.
source "misc/debug/Kconfig"
endmenu
menu "Logging Options"
config SYS_LOG
bool
prompt "Enable Logging"
depends on PRINTK || STDOUT_CONSOLE
default n
help
Global switch for logging, when turned off log calls will not be
executed.
config SYS_LOG_SHOW_TAGS
bool
prompt "Prepend level tags to logs"
depends on SYS_LOG
default y
help
Prefixes all log lines with an identifier to the log level submitted in
the C code.
config SYS_LOG_SHOW_COLOR
bool
prompt "Use colored logs"
depends on SYS_LOG
default n
help
Use color in the logs. This requires an ANSI capable terminal.
config SYS_LOG_DEFAULT_LEVEL
int
prompt "Default log level"
depends on SYS_LOG
default 0
range 0 4
help
Sets log level for modules which don't specify it explicitly. When
set to 0 it means log wont be activated for those modules.
Levels are:
0 OFF, do not write by default
1 ERROR, default to only write SYS_LOG_ERR
2 WARNING, default to write SYS_LOG_WRN in adition to previous level
3 INFO, default to write SYS_LOG_INF in adition to previous levels
4 DEBUG, default to write SYS_LOG_DBG in adition to previous levels
config SYS_LOG_OVERRIDE_LEVEL
int
prompt "Override lowest log level"
depends on SYS_LOG
default 0
range 0 4
help
Forces a minimum log level for all modules. Modules use their
specified level if it is greater than this option, otherwise they use
the level specified by this option instead of their default or
whatever was manually set.
Levels are:
0 OFF, do not override
1 ERROR, override to write SYS_LOG_ERR
2 WARNING, override to write SYS_LOG_WRN in adition to previous level
3 INFO, override to write SYS_LOG_INF in adition to previous levels
4 DEBUG, override to write SYS_LOG_DBG in adition to previous levels
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 platform may have to do extra work to ensure a proper startup.
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