The MMU option is currently located in the "Toolchain" menu, but it
doesn't make sense as it's really architecture related. In addition,
the selection of MMU has an impact on the choice of binary format
available, which is visible in the architecture menu.
Therefore, this commit moves the MMU option into the architecture
menu.
However, if we simply move it in arch/Config.in, it means that we
would have the following order of options:
Target architecture
Target architecture variant
ABI
MMU
Binary format
But really, the MMU option should be right below the Target
architecture variant, and the available ABIs derived from that.
The variant and ABI are arch-specfic, and defined in the per-arch
Config.in fragments; a Kconfig option can have only one prompt defined,
even under conditions, and appears at the place in the menu where its
prompt was defined. So, there is no (easy) possibility to have a
generic option appear where we want it.
Since in fact only 2 architectures show a visible prompt for the MMU
option (RISC-V and Xtensa), we move this option in
arch/Config.in.riscv and arch/Config.in.xtensa.
Some walkthrough the commit:
- BR2_ARCH_HAS_MMU_MANDATORY and BR2_ARCH_HAS_MMU_OPTIONAL are
removed as they are no longer needed
- BR2_USE_MMU becomes a hidden boolean
- All the places where we used to select BR2_ARCH_HAS_MMU_MANDATORY
now select BR2_USE_MMU directly.
- Introduce BR2_RISCV_USE_MMU and BR2_XTENSA_USE_MMU.
- All defconfigs that used "# BR2_USE_MMU is not set" are switched to
using the new option.
All in all, this simplifies things quite a bit, and allows to have a
good option ordering in the Target architecture menu.
This commit might raise a concern in terms of backward compatibility
with existing configurations. The only configurations that will be
broken by this change are RISC-V noMMU (which was very recently
introduced) and Xtensa noMMU (which we can probably agree is not such
a widely popular configuration).
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
[yann.morin.1998@free.fr:
- expand further why we need per-arch MMU options
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Many of the build options depend on the toolchain configuration. In
addition, it's pretty logical that you select first target architecture,
then the toolchain, and only then things like debug and pic/pie.
Therefore, move the "Toolchain" menu before the "Build options" menu
instead of after.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Currently, glibc depends on !BR2_STATIC_LIBS in all the toolchain
variants.
However, for some architectures, glibc is the only supported libc. In
commit 3b3105328e ("Config.in: only
allow BR2_STATIC_LIBS on supported libc/arch"), we implemented a fix
to avoid configurations were BR2_STATIC_LIBS=y with an architecture
already supported by glibc, because these configurations are
impossible. This commit 3b3105328e
prevents from selecting BR2_STATIC_LIBS=y when the C library used for
the internal toolchain backend is glibc.
However, it introduces a discrepency between how this topic is handled
for internal and external toolchains:
- For internal toolchains, we prevent BR2_STATIC_LIBS=y if glibc is
chosen.
- For external toolchains, we allow BR2_STATIC_LIBS=y in all cases,
and it's each glibc toolchain that has !BR2_STATIC_LIBS
This commit addresses this discrepency by preventing BR2_STATIC_LIBS=y
if glibc is chosen in all cases.
Thanks to this, we can remove the !BR2_STATIC_LIBS dependency on both
the glibc package, and all glibc external toolchains.
Fixes: https://bugs.busybox.net/show_bug.cgi?id=14256
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[Thomas: update to master, fix the gen-bootlin-toolchains script, add
a comment in the static/shared choice to indicate that static is
supported only with uclibc or musl]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Right now the "Target options" menu looks like this:
Target architecture (....)
... options related to the binary format selection ...
... options related to the architecture variant selection ...
This doesn't make much sense: the architecture variant selection
should be just below the target architecture selection. With this
commit, things will now be presented this way:
Target architecture (....)
... options related to the architecture variant selection ...
... options related to the binary format selection ...
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
We recently had several cases of architecture configurations for which
no C library was available, leading to a build failure during the gcc
build. In order to more easily detect those bogus configurations,
let's bail out very early by detecting the lack of C library
selection.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[yann.morin.1998@free.fr:
- move as final else clause in existing conditional block
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Even though that seems weird, the LP64F ABI is only supported when MMU
support is enabled. Indeed, as per commit
9a51381ced ("package/uclibc: prevent
config with unsupported RISC-V float ABI"), uClibc does not support
LP64F. But uClibc is the only C library that support RISC-V 64-bit
noMMU.
So the selection of LP64F and !MMU is impossible. Right now this
selection causes a build failure as no C library is enabled.
This commit fixes this by ensuring we cannot use LP64F when MMU
support is not available.
Fixes:
http://autobuild.buildroot.net/results/6320dcc655f1871eb8bf6a9689bddde7447385f5/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Users may want to use buildkitd and buildkitctl to build images on the host.
Adds package host-moby-buildkit and BR2_PACKAGE_HOST_MOBY_BUILDKIT.
Signed-off-by: Christian Stewart <christian@paral.in>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Instead of having the user need to figure out that 2 alsa-lib features
are needed for pipewire ALSA support, have the top-level pulseaudio
option select the relevant alsa-lib features, when alsa-lib is enabled
as already done for pulseaudio in commit
97cd3680a4
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Even though opencl-clhpp's build does not need libopencl, as it's just
made of headers, any user of opencl-clhpp will assume libopencl is
already installed.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
clpeak is a tool that profiles OpenCL devices to find
their peak capacities
Signed-off-by: Gilles Talis <gilles.talis@gmail.com>
Reviewed-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
opencl-clhpp are the OpenCL API C++ bindings
Signed-off-by: Gilles Talis <gilles.talis@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Noah Huetter <noahhuetter@gmail.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
[Thomas/Arnout: change option name from
BR2_TARGET_OPENSBI_CUSTOM_MAKEOPTS to
BR2_TARGET_OPENSBI_ADDITIONAL_VARIABLES]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Since the major release changed I've built successfully all packages that
have direct dependency to harfbuzz:
- efl
- libass
- mupdf
- pango
- qt5base
- sdl2_ttf
- supertuxkart
- vlc
- webkitgtk
- wpewebkit
Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
diffutils is now a host system dependency, so there is no need for
opkg-utils to depend on host-diffutils.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
cmp from diffutils is part of the host system requirements, so check
for it. It is used in package/pkg-generic.mk.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
The command `cmp` is used by `package/pkg-generic.mk` at commit
8623cc5deb. This command is provided by `diffutils`, so it should be
installed on the host system.
Signed-off-by: José Luis Salvador Rufo <salvador.joseluis@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
The host-libcurl was initially added for host-cargo, but it is no
longer used, so we can remove it.
This reverts commit 736e0fc5d6.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Disable cmocka (enabled by default) to avoid the following uclibc build
failure raised since the addition of the package in commit
8aaa7ecbce:
In file included from p11test_common.h:30,
from p11test_helpers.h:25,
from p11test.c:24:
/home/giuliobenetti/autobuild/run/instance-0/output-1/host/powerpc-buildroot-linux-uclibc/sysroot/usr/include/cmocka.h:2334:47: error: unknown type name 'va_list'
2334 | void vprint_message(const char* const format, va_list args) CMOCKA_PRINTF_ATTRIBUTE(1, 0);
| ^~~~~~~
Fixes:
- http://autobuild.buildroot.org/results/19d1171a76cd4789472b16aa24b44f58cd7e0a1e
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Instead of having the user need to figure out that 3 alsa-lib features
are needed for pulseaudio ALSA support, have the top-level pulseaudio
option select the relevant alsa-lib features, when alsa-lib is
enabled.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
alsa needs UCM since bump to version 16.1 in commit
6f31312964 to avoid the following build
failure:
In file included from ../src/modules/alsa/alsa-mixer.h:51,
from ../src/modules/alsa/alsa-ucm.c:51:
../src/modules/alsa/alsa-ucm.h:26:10: fatal error: alsa/use-case.h: No such file or directory
26 | #include <alsa/use-case.h>
| ^~~~~~~~~~~~~~~~~
Fixes:
- http://autobuild.buildroot.org/results/c651c03bc493ac721ad6517ace550237488ef8a8
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
When changing permissions on all directories in the staging directory,
after copying sysroot, paths that contain spaces break the call to
chmod.
With -print0 for find and -0 for xargs white spaces are correctly
interpreted.
Signed-off-by: Daniel Lang <d.lang@abatec.at>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Bump qt5 packages to latest submodule versions from:
https://invent.kde.org/qt/qt/qt5/-/tree/kde/5.15
Drop a qt5location patch which is now upstream.
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is based on earlier work from Łukasz Stelmach
<l.stelmach@samsung.com> to add support for different page sizes on
ARM64.
In his initial submission, Łukasz took an approach similar to this
one, i.e make it ARM64-specific. Following the feedback on the mailing
list, his second version [1] tried to generalize the logic to
configure the page size between architectures. But the general
consensus during the review process was that there wasn't much to
generalize in the end.
So, this new iteration is back to a simpler approach:
* We have new options in Config.in.arm to configure the page
size. Only 4 KB and 64 KB are supported, because our testing in
Qemu and real hardware has not allowed to get a successful setup
for 16 KB pages. We can always re-add support for 16 KB later if
that is resolved.
* The logic to define the ARCH_TOOLCHAIN_WRAPPER_OPTS options is
moved from the ARC-specific file to arch/arch.mk, and extended to
cover ARM64.
* The appropriate logic in uclibc.mk and linux.mk is added to tweak
the relevant configuration options.
* A test case is added in the runtime test infrastructure to test
building and booting under Qemu a 64 KB configuration, with all 3 C
libraries.
For the regular configuration of 4 KB pages, this commit makes one
functional change: on ARM64, -Wl,-z,max-page-size=4096 is now passed in
the compiler flags of the wrapper.
[1] https://patchwork.ozlabs.org/project/buildroot/list/?series=275452
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
So far, BR2_UCLIBC_TARGET_ARCH had a value for all
architectures... except for ARM64. Its value is passed as ARCH= when
building uClibc... which is currently empty:
/usr/bin/make -j33 -C .../build/uclibc-1.0.41 ARCH="" CROSS_COMPILE=".../host/bin/aarch64-buildroot-linux-uclibc-"
And also in uclibc.mk, when we inject the architecture in uClibc's
.config:
$(call KCONFIG_ENABLE_OPT,TARGET_$(UCLIBC_TARGET_ARCH))
$(call KCONFIG_SET_OPT,TARGET_ARCH,"$(UCLIBC_TARGET_ARCH)")
We enable TARGET_ (which doesn't exist) and set TARGET_ARCH to the
empty string.
Nobody noticed so far, and it happens to work because aarch64 is the
first architecture in the choice of architectures in
extra/Configs/Config.in in the uClibc code. So, when the architecture
is not specified, aarch64 is used.
As we are about to add some logic in uclibc.mk that will use
BR2_UCLIBC_TARGET_ARCH, we noticed this missing definition.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
When compiling Qt6 applications for the target, CMake needs to have
two variables defined to find the host installation of Qt. These two
variables are unconditionally defined, regardless of whether Qt6 is
enabled in the configuration or not, as they do no harm when Qt6 is
not present/used.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit proposes a very minimal package for qt6base. It only
supports building QtCore, so it *really* is minimal. But that's a
starting point, which we can progressively build on top. It is based
on initial work from Peter Seiderer.
This minimal QtCore build is however sufficient to build and run
simple non-graphical Qt applications.
A number of comments:
- Even though there's only qt6base for now, many other qt6 modules
will come later on, which is why we're using the same structure as
for qt5, with a subdir for package/qt6/
- Qt6 is mutually exclusive with Qt5. Even though the library names
on the target and the location of the header files are distinct,
the host tools (qmake, moc and al.) have the same name, so at least
for now, we make them mutually exclusive.
- We've chosen to use non-bundled libraries for zlib, bb2,
double-conversion and pcre2, for both the target and the host
qt6base packages.
- Contrary to qt5 where the target package was building the host
tools, now we have a host qt6base package building the host tools,
and which is needed as a dependency for the target qt6base package.
- qt6base is using CMake. However, it strongly recommends to use
Ninja as a backend instead of make, a recommendation that we follow
in this commit. Since we don't have support for Ninja in the
cmake-package infrastructure (yet), we do this manually in
qt6base.mk itself, by passing -Gninja to CMake at configure time,
and then by using cmake --build at build time and cmake --install
at install time, using explicitly provided build and install
commands. Hopefully these can go away once we have support for
Ninja directly in cmake-package.
- We disable a number of features or external libraries using FEATURE
options. However, because there are over 400 FEATURE options in
qt6base, we didn't go all the way to explicitly disabling *all* of
them (which would be needed for both the host and target
packages). We expect that this list of explicit FEATURE options
disabling will need to grow based on the feedback of users and
issues encountered.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This will be needed by qt6base, and it is not worth creating a hidden
host package option for this.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Both the target and host variants of this package will be needed for
qt6base.
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Both the target and host variants of this package will be needed by
qt6base.
Our reading of double-conversion/utils.h in the code base seems to
show that all architectures currently supported in Buildroot (to the
exception of csky, which we intend to remove, and is anyway not
usable/testable today) are supported by double-conversion.
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
It should be possible to compile ARM_TRUSTED_FIRMWARE without u-boot or EDK2.
For example, one might want to produce "bl31.bin" for use as an init stub for
the Raspberry Pi 4.
Signed-off-by: Christian Stewart <christian@paral.in>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
- Rebased second patch
- Drop third and fourth patches (already in version)
- duktape is an optional dependency since version 1.0.0 and
fab4215b78
- gengetopt is not a dependency since version 1.0.1 and
c21500c02ehttps://github.com/meetecho/janus-gateway/blob/v1.0.1/CHANGELOG.md
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
While we're at it, update URL to https instead of ftp.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Fix the following build failure with gcc 4.8 raised since bump to
version 1.0.0 in commit ib832f6eb9d86920907c50901a99f13b44dd94647 and
9dba7224cb:
fscryptctl.c: In function 'string_to_mode':
fscryptctl.c:214:3: error: 'for' loop initial declarations are only allowed in C99 mode
for (size_t i = 0; i < ARRAY_SIZE(mode_strings); i++) {
^
Fixes:
- http://autobuild.buildroot.org/results/58e8facd9105dcdfbc21ed245de03f3162c98cc9
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Currently, this option doesn't do anything. It only adds
--enable-plugins --enable-lto to the configure flags, but doesn't
disable them if it is not set. Since both of these default to enabled,
plugins and lto are effectively always enabled.
There really is no need to make this configurable: it adds a bit of size
and build time to host-gcc, but we don't care about that for host tools.
It's still up to individual builds to enable the LTO options.
Therefore, remove the option entirely. For clarity, explicitly pass
--enable-plugins --enable-lto to configure.
No legacy handling is added for the removed option. Since the behaviour
hasn't actually changed (independently of whether the option was enabled
or not), there's no point bothering the user with a legacy option.
elf2flt was linking with libdl depending on this option. Since the
option doesn't do anything, this is probably not needed. Still, to avoid
breaking things, and because linking with libdl doesn't cost us anything
anyway, always link with libdl.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Currently, this option doesn't do anything. It only adds
--enable-plugins --enable-lto to the configure flags, but doesn't
disable them if it is not set. Since both of these default to enabled,
plugins and lto are effectively always enabled.
There really is no need to make this configurable: it adds a bit of size
and build time to host-binutils, but we don't care about that for host
tools. It's still up to individual builds to enable the LTO options.
Therefore, remove the option entirely. For clarity, explicitly pass
--enable-plugins --enable-lto to configure.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
BR2_GCC_ENABLE_LTO only enables LTO in the toolchain, not in packages.
Use BR2_ENABLE_LTO instead to enable it in packages as well.
Note that BR2_GCC_ENABLE_LTO is currently non-functional (LTO is still
enabled in the toolchain even if it's not set), so we *do* have LTO
available in the toolchain.
Note that the option has no effect at all on these defconfigs anyway,
since they don't contain any package that is affected by the
BR2_ENABLE_LTO option. Still, it makes sense to enable it for these
really memory-constrained targets for when packages are added.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
The BR2_GCC_ENABLE_LTO controls whether or not LTO is available in the
(internal) toolchain - it shouldn't be used to control whether packages
are built with LTO. Use the new BR2_ENABLE_LTO option instead.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Some packages have a configure option to enable LTO. Add a global option
to enable/disable this in packages.
Note that we could instead (or in addition) pass -flto directly to the
compiler in the toolchain wrapper, but that has a *much* bigger impact,
so for the time being let's not do that.
No toolchain dependency is added for this, because all toolchains now
support LTO.
- LTO support was merged in GCC years before 4.6 (our minimal version)
was released.
- Our oldest external toolchain, Sourcery ARM 2014.05, has LTO support.
- For our internal toolchains, it is supposedly regulated by
BR2_GCC_ENABLE_LTO. However, that option only *enables* it - it
doesn't disable LTO support when it's not provided. Since LTO support
defaults to enabled for a long time already in GCC, in practice all
Buildroot-generated toolchains do support LTO.
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
ntpsec needs host-bison to avoid the following build failure raised
since the addition of the package in commit
27b8d0ba8c:
Could not find the program ['bison']
Fixes:
- http://autobuild.buildroot.org/results/3bb44312200122334b959dc48dd02fd591ab9949
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>