kumquat-buildroot/boot/uboot/Config.in
Thomas Petazzoni df3d1f8177 boot/uboot: support building U-Boot with Python 3.x
U-Boot versions newer than 2020.01 use Python 3.x instead of Python
2.x in various scripts.

We already had the BR2_TARGET_UBOOT_NEEDS_PYLIBFDT and
BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS options, but depending on the U-Boot
version, we now need to indicate if Python 2.x or Python 3.x should be
used.

In addition, it turns out that some U-Boot configurations need a
Python interpreter, without needing pylibfdt or pyelftools. Some of
our defconfigs were abusing the BR2_TARGET_UBOOT_NEEDS_PYLIBFDT option
to make sure a Python interpreter was built.

To solve this issue, we introduce a choice, that let the users specify
what, if any, host python version is needed. The default is 'no', to
preserve the previous behaviour, unless any of the pylibfdt or the
pyelftools options is enabled, in which case we hide the 'no' option,
and use python 2 by default. This dfault is guaranteed by the order of
options in the choice.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[yann.morin.1998@free.fr:
  - explicitly make the choice a bool
  - make BR2_TARGET_UBOOT_NEEDS_PYTHON a blind option
  - introduce the 'no' option in the choice
  - reword the commit log accordingly
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2020-05-15 22:59:21 +02:00

598 lines
18 KiB
Plaintext

config BR2_TARGET_UBOOT
bool "U-Boot"
help
Build "Das U-Boot" Boot Monitor
https://www.denx.de/wiki/U-Boot
if BR2_TARGET_UBOOT
choice
prompt "Build system"
default BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG if BR2_TARGET_UBOOT_LATEST_VERSION
default BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
config BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
bool "Kconfig"
help
Select this option if you use a recent U-Boot version (2015.04
or newer), so that we use the Kconfig build system.
config BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
bool "Legacy"
help
Select this option if you use an old U-Boot (older than
2015.04), so that we use the old build system.
endchoice
if BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
config BR2_TARGET_UBOOT_BOARDNAME
string "U-Boot board name"
help
One of U-Boot supported boards to be built.
This will be suffixed with _config to meet U-Boot standard
naming. See boards.cfg in U-Boot source code for the list of
available configurations.
endif
choice
prompt "U-Boot Version"
help
Select the specific U-Boot version you want to use
config BR2_TARGET_UBOOT_LATEST_VERSION
bool "2020.04"
config BR2_TARGET_UBOOT_CUSTOM_VERSION
bool "Custom version"
help
This option allows to use a specific official versions
config BR2_TARGET_UBOOT_CUSTOM_TARBALL
bool "Custom tarball"
config BR2_TARGET_UBOOT_CUSTOM_GIT
bool "Custom Git repository"
config BR2_TARGET_UBOOT_CUSTOM_HG
bool "Custom Mercurial repository"
config BR2_TARGET_UBOOT_CUSTOM_SVN
bool "Custom Subversion repository"
endchoice
config BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE
string "U-Boot version"
depends on BR2_TARGET_UBOOT_CUSTOM_VERSION
config BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION
string "URL of custom U-Boot tarball"
depends on BR2_TARGET_UBOOT_CUSTOM_TARBALL
if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN
config BR2_TARGET_UBOOT_CUSTOM_REPO_URL
string "URL of custom repository"
default BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL \
if BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL != "" # legacy
config BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION
string "Custom repository version"
default BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION \
if BR2_TARGET_UBOOT_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_TARGET_UBOOT_VERSION
string
default "2020.04" if BR2_TARGET_UBOOT_LATEST_VERSION
default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \
if BR2_TARGET_UBOOT_CUSTOM_VERSION
default "custom" if BR2_TARGET_UBOOT_CUSTOM_TARBALL
default BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION \
if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN
config BR2_TARGET_UBOOT_PATCH
string "Custom U-Boot patches"
default BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != "" # legacy
help
A space-separated list of patches to apply to U-Boot.
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.
Most users may leave this empty
if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
choice
prompt "U-Boot configuration"
default BR2_TARGET_UBOOT_USE_DEFCONFIG
config BR2_TARGET_UBOOT_USE_DEFCONFIG
bool "Using an in-tree board defconfig file"
config BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
bool "Using a custom board (def)config file"
endchoice
config BR2_TARGET_UBOOT_BOARD_DEFCONFIG
string "Board defconfig"
depends on BR2_TARGET_UBOOT_USE_DEFCONFIG
help
Name of the board for which U-Boot should be built, without
the _defconfig suffix.
config BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
string "Configuration file path"
depends on BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
help
Path to the U-Boot configuration file.
config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES
string "Additional configuration fragment files"
help
A space-separated list of configuration fragment files,
that will be merged to the main U-Boot configuration file.
endif
config BR2_TARGET_UBOOT_NEEDS_DTC
bool "U-Boot needs dtc"
select BR2_PACKAGE_HOST_DTC
help
Select this option if your U-Boot board configuration
requires the Device Tree compiler to be available.
config BR2_TARGET_UBOOT_NEEDS_PYTHON
bool
choice
bool "U-Boot needs host Python"
config BR2_TARGET_UBOOT_NEEDS_PYTHON_NONE
bool "no"
depends on !BR2_TARGET_UBOOT_NEEDS_PYTHON
help
Select this option if U-Boot does not need any
host python to build.
config BR2_TARGET_UBOOT_NEEDS_PYTHON2
bool "python 2.x"
help
Select this option if U-Boot needs a host Python 2.x
interpreter. This is the case for some U-Boot
configurations, prior to U-Boot 2020.01.
config BR2_TARGET_UBOOT_NEEDS_PYTHON3
bool "python 3.x"
help
Select this option if U-Boot needs a host Python 3.x
interpreter. This is the case for some U-Boot
configurations, after U-Boot 2020.01.
endchoice
config BR2_TARGET_UBOOT_NEEDS_PYLIBFDT
bool "U-Boot needs pylibfdt"
select BR2_TARGET_UBOOT_NEEDS_PYTHON
help
Select this option if your U-Boot board configuration
requires the Python libfdt library to be available.
config BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS
bool "U-Boot needs pyelftools"
select BR2_TARGET_UBOOT_NEEDS_PYTHON
help
Select this option if your U-Boot board configuration
requires the Python pyelftools library to be available.
This is used by some rockchip SOCs for elf parsing.
For example: rk3399 soc boards.
config BR2_TARGET_UBOOT_NEEDS_OPENSSL
bool "U-Boot needs OpenSSL"
help
Select this option if your U-Boot board configuration
requires OpenSSL to be available on the host. This is
typically the case when the board configuration has
CONFIG_FIT_SIGNATURE enabled.
config BR2_TARGET_UBOOT_NEEDS_LZOP
bool "U-Boot needs lzop"
help
Select this option if your U-Boot board configuration
requires lzop to be available on the host. This is typically
the case when the board configuration has CONFIG_SPL_LZO
enabled.
config BR2_TARGET_UBOOT_NEEDS_ATF_BL31
bool "U-Boot needs ATF BL31"
depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE
depends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33
select BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31
help
Some specific platforms (such as Allwinner A64/H5)
encapsulate the BL31 part of ATF inside U-Boot. This option
makes sure ATF gets built prior to U-Boot, and that the BL31
variable pointing to ATF's BL31 binary, is passed during the
Buildroot build.
choice
prompt "U-Boot ATF BL31 format"
default BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN
depends on BR2_TARGET_UBOOT_NEEDS_ATF_BL31
config BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN
bool "bl31.bin"
config BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF
bool "bl31.elf"
endchoice
menu "U-Boot binary format"
config BR2_TARGET_UBOOT_FORMAT_AIS
bool "u-boot.ais"
help
AIS (Application Image Script) is a format defined by TI.
It is required to load code/data on OMAP-L1 processors.
u-boot.ais contains U-Boot with the SPL support.
config BR2_TARGET_UBOOT_FORMAT_BIN
bool "u-boot.bin"
default y
config BR2_TARGET_UBOOT_FORMAT_DTB_BIN
bool "u-boot-dtb.bin"
config BR2_TARGET_UBOOT_FORMAT_DTB_IMG
bool "u-boot-dtb.img"
config BR2_TARGET_UBOOT_FORMAT_DTB_IMX
bool "u-boot-dtb.imx"
config BR2_TARGET_UBOOT_FORMAT_IMG
bool "u-boot.img"
config BR2_TARGET_UBOOT_FORMAT_ITB
bool "u-boot.itb"
config BR2_TARGET_UBOOT_FORMAT_IMX
bool "u-boot.imx"
config BR2_TARGET_UBOOT_FORMAT_NAND_BIN
bool "u-boot-nand.bin"
config BR2_TARGET_UBOOT_FORMAT_KWB
bool "u-boot.kwb (Marvell)"
depends on BR2_arm
config BR2_TARGET_UBOOT_FORMAT_ELF
bool "u-boot.elf"
config BR2_TARGET_UBOOT_FORMAT_SB
bool "u-boot.sb (Freescale i.MX28)"
depends on BR2_arm
config BR2_TARGET_UBOOT_FORMAT_SD
bool "u-boot.sd (Freescale i.MX28)"
depends on BR2_arm
help
This is Freescale i.MX28 SB format, with a header for booting
from an SD card.
U-Boot includes an mxsboot tool to generate this format,
starting from 2011.12.
See doc/README.mxs (or doc/README.mx28_common before 2013.07)
config BR2_TARGET_UBOOT_FORMAT_NAND
bool "u-boot.nand (Freescale i.MX28)"
depends on BR2_arm
help
This is Freescale i.MX28 BootStream format (.sb), with a
header for booting from a NAND flash.
U-Boot includes an mxsboot tool to generate this format,
starting from 2011.12.
There are two possibilities when preparing an image writable
to NAND flash:
1) The NAND was not written at all yet or the BCB (Boot
Control Blocks) is broken. In this case, the NAND image
'u-boot.nand' needs to written.
2) The NAND flash was already written with a good BCB. This
applies after 'u-boot.nand' was correctly written. There is no
need to write the BCB again. In this case, the bootloader can
be upgraded by writing 'u-boot.sb'.
To satisfy both cases, the 'u-boot.nand' image obtained from
mxsboot as well as the U-Boot make target 'u-boot.sb' are
copied to the binaries directory.
See doc/README.mxs (or doc/README.mx28_common before 2013.07)
if BR2_TARGET_UBOOT_FORMAT_NAND
config BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE
int "NAND page size"
default 2048
help
The NAND page size of the targets NAND flash in bytes as a
decimal integer value.
The value provided here is passed to the -w option of mxsboot.
config BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE
int "NAND OOB size"
default 64
help
The NAND OOB size of the targets NAND flash in bytes as a
decimal integer value.
The value provided here is passed to the -o option of mxsboot.
config BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE
int "NAND erase size"
default 131072
help
The NAND eraseblock size of the targets NAND flash in bytes as
a decimal integer value.
The value provided here is passed to the -e option of mxsboot.
endif
config BR2_TARGET_UBOOT_FORMAT_CUSTOM
bool "Custom (specify below)"
help
On some platforms, the standard U-Boot binary is not called
u-boot.bin, but u-boot<something>.bin. If this is your case,
you should select this option and specify the correct name(s)
in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME.
config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME
string "U-Boot binary format: custom names"
depends on BR2_TARGET_UBOOT_FORMAT_CUSTOM
help
In case the U-Boot binary for the target platform is not among
the default names, one or more custom names can be listed
here.
Use space to separate multiple names.
Example:
u-boot_magic.bin
endmenu
config BR2_TARGET_UBOOT_OMAP_IFT
bool "produce a .ift signed image (OMAP)"
depends on BR2_TARGET_UBOOT_FORMAT_BIN
depends on BR2_arm || BR2_armeb
select BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS
help
Use gpsign to produce an image of u-boot.bin signed with
a Configuration Header for booting on OMAP processors.
This allows U-Boot to boot without the need for an
intermediate bootloader (e.g. x-loader) if it is written
on the first sector of the boot medium.
This only works for some media, such as NAND. Check your
chip documentation for details. You might also want to
read the documentation of gpsign, the tool that generates
the .ift image, at:
https://github.com/nmenon/omap-u-boot-utils/blob/master/README
if BR2_TARGET_UBOOT_OMAP_IFT
config BR2_TARGET_UBOOT_OMAP_IFT_CONFIG
string "gpsign Configuration Header config file"
help
The Configuration Header (CH) config file defines the
desired content of the CH for the signed image.
It usually contains external RAM settings and
possibly other external devices initialization.
The omap-u-boot-utils software contains example
configuration files for some boards:
https://github.com/nmenon/omap-u-boot-utils/tree/master/configs
endif
config BR2_TARGET_UBOOT_SPL
bool "Install U-Boot SPL binary image"
depends on !BR2_TARGET_XLOADER
help
Install the U-Boot SPL binary image to the images
directory.
SPL is a first stage bootloader loaded into internal
memory in charge of enabling and configuring the
external memory (DDR), and load the u-boot program
into DDR.
config BR2_TARGET_UBOOT_SPL_NAME
string "U-Boot SPL/TPL binary image name(s)"
default "spl/u-boot-spl.bin"
depends on BR2_TARGET_UBOOT_SPL
help
A space-separated list of SPL/TPL binaries, generated during
u-boot build. For most platform SPL name is spl/u-boot-spl.bin
and TPL name is tpl/u-boot-tpl.bin but not always. SPL name is
MLO on OMAP and SPL on i.MX6 for example.
config BR2_TARGET_UBOOT_ZYNQ_IMAGE
bool "Generate image for Xilinx Zynq"
depends on BR2_arm
depends on BR2_TARGET_UBOOT_SPL
depends on BR2_TARGET_UBOOT_FORMAT_DTB_IMG
help
Generate the BOOT.BIN file from U-Boot's SPL. The image
boots the Xilinx Zynq chip without any FPGA bitstream.
A bitstream can be loaded by the U-Boot. The SPL searchs
for u-boot-dtb.img file so this U-Boot format is required
to be set.
config BR2_TARGET_UBOOT_ZYNQMP
bool "Boot on the Xilinx ZynqMP SoCs"
depends on BR2_aarch64
help
Enable options specific to the Xilinx ZynqMP family of SoCs.
if BR2_TARGET_UBOOT_ZYNQMP
config BR2_TARGET_UBOOT_ZYNQMP_PMUFW
string "PMU firmware location"
depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
help
Location of a PMU firmware binary.
If not empty, instructs the U-Boot build process to generate
a boot.bin (to be loaded by the ZynqMP boot ROM) containing
both the U-Boot SPL and the PMU firmware in the
Xilinx-specific boot format.
The value can be an absolute or relative path, and will be
used directly from where it is located, or an URI
(e.g. http://...), and it will be downloaded and used from
the download directory.
If empty, the generated boot.bin will not contain a PMU
firmware.
This feature requires U-Boot >= 2018.07.
config BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE
string "Custom psu_init_gpl file"
depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
help
On ZynqMP the booloader is responsible for some basic
initializations, such as enabling peripherals and
configuring pinmuxes. The psu_init_gpl.c file (and,
optionally, psu_init_gpl.h) contains the code for such
initializations.
Although U-Boot contains psu_init_gpl.c files for some
boards, each of them describes only one specific
configuration. Users of a different board, or needing a
different configuration, can generate custom files using the
Xilinx development tools.
Set this variable to the path to your psu_init_gpl.c file
(e.g. "board/myboard/psu_init_gpl.c"). psu_init_gpl.h, if
needed, should be in the same directory. U-Boot will build
and link the user-provided file instead of the built-in one.
Leave empty to use the files provided by U-Boot.
This feature requires commit
6da4f67ad09cd8b311d77b2b04e557b7ef65b56c from upstream
U-Boot, available from versions after 2018.07.
endif
config BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC
bool "CRC image for Altera SoC FPGA (mkpimage)"
depends on BR2_arm
depends on BR2_TARGET_UBOOT_SPL || BR2_TARGET_UBOOT_FORMAT_DTB_BIN
help
Pass the U-Boot image through the mkpimage tool to enable
booting on the Altera SoC FPGA based platforms.
On some platforms, it's the SPL that needs to be passed
through mkpimage. On some other platforms there is no SPL
because the internal SRAM is big enough to store the full
U-Boot. In this case, it's directly the full U-Boot image
that is passed through mkpimage.
If BR2_TARGET_UBOOT_SPL is enabled then
BR2_TARGET_UBOOT_SPL_NAME is converted by mkpimage using
header version 0.
Otherwise the full u-boot-dtb.bin is converted using
mkpimage header version 1.
In either case the resulting file will be given a .crc
extension.
menuconfig BR2_TARGET_UBOOT_ENVIMAGE
bool "Environment image"
help
Generate a valid binary environment image from a text file
describing the key=value pairs of the environment.
The environment image will be called uboot-env.bin.
if BR2_TARGET_UBOOT_ENVIMAGE
config BR2_TARGET_UBOOT_ENVIMAGE_SOURCE
string "Source files for environment"
help
Text files describing the environment. Files should have
lines of the form var=value, one per line. Blank lines and
lines starting with a # are ignored.
Multiple source files are concatenated in the order listed.
Leave empty to generate image from compiled-in env.
config BR2_TARGET_UBOOT_ENVIMAGE_SIZE
string "Size of environment"
help
Size of envronment, can be prefixed with 0x for hexadecimal
values.
config BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT
bool "Environment has two copies"
help
Some platforms define in their U-Boot configuration that the
U-Boot environment should be duplicated in two locations (for
extra safety). Check your U-Boot configuration for the
CONFIG_ENV_ADDR_REDUND and CONFIG_ENV_SIZE_REDUND settings to
see if this is the case for your platform.
If it is the case, then you should enable this option to
ensure that the U-Boot environment image generated by
Buildroot is compatible with the "redundant environment"
mechanism of U-Boot.
endif # BR2_TARGET_UBOOT_ENVIMAGE
config BR2_TARGET_UBOOT_BOOT_SCRIPT
bool "Generate a U-Boot boot script"
help
Generate a U-Boot boot script, given a file listing U-Boot
commands to be executed at boot time. The generated boot
script will be called 'boot.scr'.
if BR2_TARGET_UBOOT_BOOT_SCRIPT
config BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE
string "U-Boot boot script source"
help
Source file to generate the U-Boot boot script.
endif
if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
config BR2_TARGET_UBOOT_CUSTOM_DTS_PATH
string "Device Tree Source file paths"
help
Space-separated list of paths to device tree source files
that will be copied to arch/ARCH/dts/ before starting the
build.
To use this device tree source file, the U-Boot configuration
file must refer to it.
endif
config BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS
string "Custom make options"
help
List of custom make options passed at build time. Can be
used for example to pass a DEVICE_TREE= value.
endif # BR2_TARGET_UBOOT