c2c0623bff
Commit f13477b
(linux: config.in: add comment for Arm Cortex-M) added a
comment so that the user that the linux kernel may miscompile with
binutils 2.29+, when the target is an armv7m CPU.
However, the real trigger is a compilation in thumb2 mode, which happens
to be the only option for armv7m CPUs.
We can't know whether the kernel will be built in arm or thumb2 mode,
though, because we do not have that information: it is only available in
the Linux' .config file, which we don;t have access to at the time we
run our menuconfig.
So, relax the conditions under which the comment is made, so that it
appears as soon as binutils are >= 2.29 (i.e. not 2.28, which is the
oldest we support) for ARM CPUs.
[Peter: reword comment]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Christophe Priouzeau <christophe.priouzeau@st.com>
Cc: Laurent GONZALEZ <br22@gezedo.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
436 lines
13 KiB
Plaintext
436 lines
13 KiB
Plaintext
menu "Kernel"
|
|
|
|
config BR2_LINUX_KERNEL
|
|
bool "Linux Kernel"
|
|
help
|
|
Enable this option if you want to build a Linux kernel for
|
|
your embedded device
|
|
|
|
if BR2_LINUX_KERNEL
|
|
|
|
comment "Linux kernel may fail to boot with binutils >= 2.29"
|
|
depends on BR2_arm || BR2_armeb
|
|
depends on !BR2_BINUTILS_VERSION_2_28_X
|
|
|
|
# Packages that need to have a kernel with support for loadable modules,
|
|
# but do not use the kernel-modules infrastructure, should select that
|
|
# option.
|
|
config BR2_LINUX_NEEDS_MODULES
|
|
bool
|
|
|
|
#
|
|
# Version selection. We provide the choice between:
|
|
#
|
|
# 1. A single fairly recent stable kernel version
|
|
# 2. A custom stable version
|
|
# 3. A custom tarball
|
|
# 4. A set of custom repository locations
|
|
#
|
|
choice
|
|
prompt "Kernel version"
|
|
|
|
config BR2_LINUX_KERNEL_LATEST_VERSION
|
|
bool "Latest version (4.16)"
|
|
|
|
config BR2_LINUX_KERNEL_LATEST_CIP_VERSION
|
|
bool "Latest CIP SLTS version (v4.4.130-cip23)"
|
|
help
|
|
CIP launched in the spring of 2016 to address the needs of
|
|
organizations in industries such as power generation and
|
|
distribution, water, oil and gas, transportation, building
|
|
automation and more for reliable and secure Linux-based
|
|
embedded systems that can be sustained over a period of
|
|
10 to as many as 60 years.
|
|
The project's goal is to provide an open source base layer
|
|
of industrial-grade software that permits the use and
|
|
implementation of software building blocks that meet
|
|
these requirements.
|
|
|
|
The CIP community plans to maintain 4.4 for security and
|
|
bug fixes for more than 10 years.
|
|
|
|
https://www.cip-project.org
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_VERSION
|
|
bool "Custom version"
|
|
help
|
|
This option allows to use a specific official version from
|
|
kernel.org, like 2.6.x, 2.6.x.y, 3.x.y, ...
|
|
|
|
Note: you cannot use this option to select a _longterm_ 2.6
|
|
kernel, because these kernels are not located at the standard
|
|
URL at kernel.org. Instead, select "Custom tarball" and
|
|
specify the right URL directly.
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_TARBALL
|
|
bool "Custom tarball"
|
|
help
|
|
This option allows to specify a URL pointing to a kernel
|
|
source tarball. This URL can use any protocol recognized by
|
|
Buildroot, like http://, ftp://, file:// or scp://.
|
|
|
|
When pointing to a local tarball using file://, you may want
|
|
to use a make variable like $(TOPDIR) to reference the root of
|
|
the Buildroot tree.
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_GIT
|
|
bool "Custom Git repository"
|
|
help
|
|
This option allows Buildroot to get the Linux kernel source
|
|
code from a Git repository.
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_HG
|
|
bool "Custom Mercurial repository"
|
|
help
|
|
This option allows Buildroot to get the Linux kernel source
|
|
code from a Mercurial repository.
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_SVN
|
|
bool "Custom Subversion repository"
|
|
help
|
|
This option allows Buildroot to get the Linux kernel source
|
|
code from a Subversion repository.
|
|
|
|
endchoice
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE
|
|
string "Kernel version"
|
|
depends on BR2_LINUX_KERNEL_CUSTOM_VERSION
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION
|
|
string "URL of custom kernel tarball"
|
|
depends on BR2_LINUX_KERNEL_CUSTOM_TARBALL
|
|
|
|
if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_REPO_URL
|
|
string "URL of custom repository"
|
|
default BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL \
|
|
if BR2_LINUX_KERNEL_CUSTOM_GIT_REPO_URL != "" # legacy
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION
|
|
string "Custom repository version"
|
|
default BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION \
|
|
if BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION != "" # legacy
|
|
help
|
|
Revision to use in the typical format used by
|
|
Git/Mercurial/Subversion E.G. a sha id, a tag, branch, ..
|
|
|
|
endif
|
|
|
|
config BR2_LINUX_KERNEL_VERSION
|
|
string
|
|
default "4.16.13" if BR2_LINUX_KERNEL_LATEST_VERSION
|
|
default "v4.4.130-cip23" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION
|
|
default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \
|
|
if BR2_LINUX_KERNEL_CUSTOM_VERSION
|
|
default "custom" if BR2_LINUX_KERNEL_CUSTOM_TARBALL
|
|
default BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION \
|
|
if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN
|
|
|
|
#
|
|
# Patch selection
|
|
#
|
|
|
|
config BR2_LINUX_KERNEL_PATCH
|
|
string "Custom kernel patches"
|
|
help
|
|
A space-separated list of patches to apply to the
|
|
kernel. Each patch can be described as an URL, a local file
|
|
path, or a directory. In the case of a directory, all files
|
|
matching *.patch in the directory will be applied.
|
|
|
|
#
|
|
# Configuration selection
|
|
#
|
|
|
|
choice
|
|
prompt "Kernel configuration"
|
|
default BR2_LINUX_KERNEL_USE_DEFCONFIG
|
|
|
|
config BR2_LINUX_KERNEL_USE_DEFCONFIG
|
|
bool "Using an in-tree defconfig file"
|
|
|
|
config BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG
|
|
bool "Use the architecture default configuration"
|
|
help
|
|
This option will use the default configuration for the
|
|
selected architecture. I.e, it is equivalent to running
|
|
"make ARCH=<foo> defconfig". This is useful on architectures
|
|
that have a single defconfig file, such as ARM64.
|
|
|
|
config BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG
|
|
bool "Using a custom (def)config file"
|
|
|
|
endchoice
|
|
|
|
config BR2_LINUX_KERNEL_DEFCONFIG
|
|
string "Defconfig name"
|
|
depends on BR2_LINUX_KERNEL_USE_DEFCONFIG
|
|
help
|
|
Name of the kernel defconfig file to use, without the
|
|
trailing _defconfig. The defconfig is located in
|
|
arch/<arch>/configs in the kernel tree.
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE
|
|
string "Configuration file path"
|
|
depends on BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG
|
|
help
|
|
Path to the kernel configuration file
|
|
|
|
Note: this can be a defconfig file or a complete .config file,
|
|
which can later be saved back with make
|
|
linux-update-(def)config.
|
|
|
|
config BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
|
|
string "Additional configuration fragment files"
|
|
help
|
|
A space-separated list of kernel configuration fragment files,
|
|
that will be merged to the main kernel configuration file.
|
|
|
|
#
|
|
# Binary format
|
|
#
|
|
|
|
choice
|
|
prompt "Kernel binary format"
|
|
default BR2_LINUX_KERNEL_ZIMAGE if BR2_arm || BR2_armeb
|
|
|
|
config BR2_LINUX_KERNEL_UIMAGE
|
|
bool "uImage"
|
|
depends on BR2_arc || BR2_arm || BR2_armeb || \
|
|
BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \
|
|
BR2_sh || BR2_mips || BR2_mipsel || \
|
|
BR2_mips64 || BR2_mips64el || BR2_xtensa
|
|
select BR2_PACKAGE_HOST_UBOOT_TOOLS
|
|
|
|
config BR2_LINUX_KERNEL_APPENDED_UIMAGE
|
|
bool "uImage with appended DT"
|
|
depends on BR2_arm || BR2_armeb
|
|
select BR2_LINUX_KERNEL_DTS_SUPPORT
|
|
select BR2_LINUX_KERNEL_APPENDED_DTB
|
|
select BR2_PACKAGE_HOST_UBOOT_TOOLS
|
|
|
|
config BR2_LINUX_KERNEL_BZIMAGE
|
|
bool "bzImage"
|
|
depends on BR2_i386 || BR2_x86_64
|
|
|
|
config BR2_LINUX_KERNEL_ZIMAGE
|
|
bool "zImage"
|
|
depends on BR2_arm || BR2_armeb || BR2_powerpc || \
|
|
BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \
|
|
BR2_sh || BR2_xtensa
|
|
|
|
config BR2_LINUX_KERNEL_ZIMAGE_EPAPR
|
|
bool "zImage.epapr"
|
|
depends on BR2_powerpc64 || BR2_powerpc64le
|
|
|
|
config BR2_LINUX_KERNEL_APPENDED_ZIMAGE
|
|
bool "zImage with appended DT"
|
|
depends on BR2_arm || BR2_armeb
|
|
select BR2_LINUX_KERNEL_DTS_SUPPORT
|
|
select BR2_LINUX_KERNEL_APPENDED_DTB
|
|
|
|
config BR2_LINUX_KERNEL_CUIMAGE
|
|
bool "cuImage"
|
|
depends on BR2_powerpc
|
|
select BR2_PACKAGE_HOST_UBOOT_TOOLS
|
|
select BR2_LINUX_KERNEL_DTS_SUPPORT
|
|
select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
|
|
|
|
config BR2_LINUX_KERNEL_SIMPLEIMAGE
|
|
bool "simpleImage"
|
|
depends on BR2_microblaze
|
|
select BR2_PACKAGE_HOST_UBOOT_TOOLS
|
|
select BR2_LINUX_KERNEL_DTS_SUPPORT
|
|
select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
|
|
|
|
config BR2_LINUX_KERNEL_IMAGE
|
|
bool "Image"
|
|
depends on BR2_aarch64
|
|
|
|
config BR2_LINUX_KERNEL_LINUX_BIN
|
|
bool "linux.bin"
|
|
depends on BR2_microblaze
|
|
select BR2_PACKAGE_HOST_UBOOT_TOOLS
|
|
|
|
config BR2_LINUX_KERNEL_VMLINUX_BIN
|
|
bool "vmlinux.bin"
|
|
depends on BR2_mips || BR2_mipsel || BR2_sh
|
|
|
|
config BR2_LINUX_KERNEL_VMLINUX
|
|
bool "vmlinux"
|
|
|
|
config BR2_LINUX_KERNEL_VMLINUZ
|
|
bool "vmlinuz"
|
|
depends on BR2_mips || BR2_mipsel
|
|
|
|
config BR2_LINUX_KERNEL_VMLINUZ_BIN
|
|
bool "vmlinuz.bin"
|
|
depends on BR2_mips || BR2_mipsel
|
|
|
|
config BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
|
|
bool "custom target"
|
|
help
|
|
For certain cases a board-specific target image must be
|
|
used. For example, on powerPC where the OpenFirmware
|
|
description is attached in a board-specific kernel image
|
|
target like 'cuImage.mpc8379_rdb'.
|
|
|
|
Select this option and specify the make target in "Kernel
|
|
image target name".
|
|
|
|
endchoice
|
|
|
|
#
|
|
# Kernel compression format
|
|
#
|
|
|
|
choice
|
|
prompt "Kernel compression format"
|
|
help
|
|
This selection will just ensure that the correct host tools
|
|
are built. The actual compression for the kernel should be
|
|
selected in the kernel configuration menu.
|
|
|
|
config BR2_LINUX_KERNEL_GZIP
|
|
bool "gzip compression"
|
|
|
|
config BR2_LINUX_KERNEL_LZ4
|
|
bool "lz4 compression"
|
|
|
|
config BR2_LINUX_KERNEL_LZMA
|
|
bool "lzma compression"
|
|
|
|
config BR2_LINUX_KERNEL_LZO
|
|
bool "lzo compression"
|
|
|
|
config BR2_LINUX_KERNEL_XZ
|
|
bool "xz compression"
|
|
|
|
endchoice
|
|
|
|
config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
|
|
string "Kernel image target name"
|
|
depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
|
|
help
|
|
Specify the kernel make target to build the kernel that you
|
|
need.
|
|
|
|
config BR2_LINUX_KERNEL_IMAGE_NAME
|
|
string "Kernel image name"
|
|
depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
|
|
help
|
|
The filename of the kernel image, if it is different from the
|
|
make target (above). Only Xtensa uses a filename different
|
|
from the make target. Defaults to
|
|
BR2_LINUX_KERNEL_IMAGE_TARGET_NAME.
|
|
|
|
If unsure, leave it empty.
|
|
|
|
config BR2_LINUX_KERNEL_UIMAGE_LOADADDR
|
|
string "load address (for 3.7+ multi-platform image)"
|
|
depends on BR2_arm || BR2_armeb
|
|
depends on BR2_LINUX_KERNEL_UIMAGE || BR2_LINUX_KERNEL_APPENDED_UIMAGE
|
|
help
|
|
If your ARM system's Linux kernel is configured with the new
|
|
(3.7+) multi-architecture support (CONFIG_ARCH_MULTIPLATFORM=y
|
|
in your kernel config), then it is necessary to specify a
|
|
kernel load address when building the uImage. This should be a
|
|
hexadecimal string beginning with 0x, for example: 0x00008000.
|
|
|
|
If unsure, let this option empty.
|
|
|
|
config BR2_LINUX_KERNEL_DTS_SUPPORT
|
|
bool "Build a Device Tree Blob (DTB)"
|
|
help
|
|
Compile one or more device tree sources into device tree
|
|
blobs.
|
|
Select the dts files to compile in the options below.
|
|
|
|
if BR2_LINUX_KERNEL_DTS_SUPPORT
|
|
|
|
# We have mainly three cases when it comes to device tree support:
|
|
# 1) We don't want any support at all. Then the ..DTS_SUPPORT
|
|
# variable won't be set
|
|
# 2) We want device tree support, so we need the user to enter the
|
|
# device tree name or the path to the custom device he uses, but
|
|
# the kernel abstracts this from us and only build an image that
|
|
# looks like a regular kernel image. In this case, we only need
|
|
# to derive the kernel image name from the given device tree
|
|
# name, and all the rest is as usual
|
|
# 3) We want device tree support, but the kernel requires us to
|
|
# build the device tree blob separately. In this case, some
|
|
# more logic will be needed.
|
|
# The variable below address the second case, were you only want
|
|
# limited actions from buildroot.
|
|
config BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
|
|
bool
|
|
|
|
config BR2_LINUX_KERNEL_APPENDED_DTB
|
|
bool
|
|
|
|
config BR2_LINUX_KERNEL_INTREE_DTS_NAME
|
|
string "In-tree Device Tree Source file names"
|
|
help
|
|
Name of in-tree device tree source file, without
|
|
the trailing .dts. You can provide a list of
|
|
dts files to build, separated by spaces.
|
|
|
|
config BR2_LINUX_KERNEL_CUSTOM_DTS_PATH
|
|
string "Out-of-tree Device Tree Source file paths"
|
|
help
|
|
Path to to out-of-tree device tree source files.
|
|
You can provide a list of dts paths to copy and
|
|
build, separated by spaces.
|
|
|
|
endif
|
|
|
|
config BR2_LINUX_KERNEL_INSTALL_TARGET
|
|
bool "Install kernel image to /boot in target"
|
|
depends on !BR2_TARGET_ROOTFS_INITRAMFS
|
|
help
|
|
Select this option to have the kernel image installed to
|
|
/boot in the target root filesystem, as is typically done on
|
|
x86/x86_64 systems.
|
|
|
|
Note that this option also installs the Device Tree Blobs to
|
|
/boot if DTBs have been generated by the kernel build
|
|
process.
|
|
|
|
config BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL
|
|
bool "Needs host OpenSSL"
|
|
help
|
|
Some Linux kernel configuration options (such as
|
|
CONFIG_SYSTEM_TRUSTED_KEYRING) require building a host
|
|
program called extract-cert, which itself needs
|
|
OpenSSL. Enabling this option will ensure host-openssl gets
|
|
built before the Linux kernel.
|
|
|
|
Enable this option if you get a Linux kernel build failure
|
|
such as "scripts/extract-cert.c:21:25: fatal error:
|
|
openssl/bio.h: No such file or directory".
|
|
|
|
config BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF
|
|
bool "Needs host libelf"
|
|
help
|
|
Some Linux kernel configuration options (such as
|
|
CONFIG_UNWINDER_ORC) require building a host program that
|
|
needs libelf. Enabling this option will ensure host-elfutils
|
|
(which provides libelf) gets built before the Linux kernel.
|
|
|
|
Enable this option if you get a Linux kernel build failure
|
|
such as "Cannot generate ORC metadata for
|
|
CONFIG_UNWINDER_ORC=y, please install libelf-dev,
|
|
libelf-devel or elfutils-libelf-devel".
|
|
|
|
# Linux extensions
|
|
source "linux/Config.ext.in"
|
|
|
|
# Linux tools
|
|
source "package/linux-tools/Config.in"
|
|
|
|
endif # BR2_LINUX_KERNEL
|
|
|
|
endmenu
|