Commit Graph

64138 Commits

Author SHA1 Message Date
Thomas Petazzoni
874916567a arch: rework MMU option handling and move to "Target architecture" menu
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>
2022-07-27 11:38:07 +02:00
Thomas Petazzoni
9f81decf46 toolchain/toolchain-external/toolchain-external-custom: remove mentions of eglibc
eglibc is a thing of the past, stop mentioning it.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-27 11:11:19 +02:00
Arnout Vandecappelle (Essensium/Mind)
5e050a8849 Config.in: move toolchain menu before build options
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>
2022-07-27 11:11:19 +02:00
Arnout Vandecappelle (Essensium/Mind)
90932b407c toolchain: invert glibc <-> !static dependency
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>
2022-07-27 11:11:19 +02:00
Arnout Vandecappelle (Essensium/Mind)
1702ddd20c support/testing/tests/toolchain/test_aarch64_64k.py: fix flake8 errors
support/testing/tests/toolchain/test_aarch64_64k.py:35:5: E303 too many blank lines (2)
support/testing/tests/toolchain/test_aarch64_64k.py:40:65: W605 invalid escape sequence '\('
support/testing/tests/toolchain/test_aarch64_64k.py:45:1: E302 expected 2 blank lines, found 1
support/testing/tests/toolchain/test_aarch64_64k.py:52:1: E302 expected 2 blank lines, found 1
support/testing/tests/toolchain/test_aarch64_64k.py:59:1: E302 expected 2 blank lines, found 1
support/testing/tests/toolchain/test_aarch64_64k.py:65:1: W391 blank line at end of file

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2022-07-27 10:30:37 +02:00
Romain Naour
3b6bce6598 package/gcc: bump to version 10.4.0
Remove upstream patch: 0004-Remove-cyclades-from-libsanitizer.patch

https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=a7e72b282177fbaa6a852324641c871313d326da

See announce:
https://gcc.gnu.org/pipermail/gcc-announce/2022/000173.html

Tested in gitlab:
https://gitlab.com/kubu93/buildroot/-/pipelines/597437606

Signed-off-by: Romain Naour <romain.naour@smile.fr>
2022-07-27 10:25:28 +02:00
Thomas Petazzoni
c05d10e8c1 arch/Config.in: move the binary format selection further down
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>
2022-07-27 09:56:15 +02:00
Thomas Petazzoni
fda53f0791 package/Makefile.in: add detection for the lack of C library
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>
2022-07-27 09:56:15 +02:00
Thomas Petazzoni
f7d60ee57d arch/Config.in.riscv: lp64f ABI is only supported if MMU is enabled
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>
2022-07-27 09:56:15 +02:00
Christian Stewart
cda5dff3c1 package/moby-buildkit: support building as host package
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>
2022-07-27 09:46:27 +02:00
Fabrice Fontaine
94ab3132cc package/pipewire: simplify alsa-lib feature selection
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>
2022-07-27 09:41:22 +02:00
Fabrice Fontaine
55106a056e package/netdata: add freeipmi optional dependency
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-27 09:33:18 +02:00
Fabrice Fontaine
35a06eb6ff package/gensio: add openipmi support
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-27 09:33:12 +02:00
Thomas Petazzoni
1fe93a688a package/opencl-clhpp: add dependency on libopencl
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>
2022-07-27 09:30:06 +02:00
Gilles Talis
4e36889018 package/clpeak: new package
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>
2022-07-27 09:09:35 +02:00
Gilles Talis
2ae78f1c79 package/opencl-clhpp: new package
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>
2022-07-27 09:07:00 +02:00
Noah Huetter
3f6dbcb2f2 boot/opensbi: introduce BR2_TARGET_OPENSBI_ADDITIONAL_VARIABLES
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>
2022-07-27 00:14:32 +02:00
Giulio Benetti
dc535f7b93 package/harfbuzz: bump to version 5.0.1
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>
2022-07-27 00:12:14 +02:00
Thomas Petazzoni
2d366a2ad2 package/diffutils: drop host variant
It was only used by opkg-utils, but we now rely on the host system
provided diffutils.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-27 00:01:37 +02:00
Thomas Petazzoni
f7403e4d35 package/opkg-utils: drop host-diffutils dependency
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>
2022-07-27 00:01:19 +02:00
Thomas Petazzoni
1ca7348fd4 support/dependencies/dependencies.sh: check for 'cmp'
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>
2022-07-27 00:01:19 +02:00
José Luis Salvador Rufo
f3d5916a9f docs/manual/prerequisite.txt: add diffutils
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>
2022-07-26 23:57:16 +02:00
Thomas Petazzoni
69e84008ab Revert "libcurl: add host variant"
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>
2022-07-26 23:53:42 +02:00
Fabrice Fontaine
359a2f8efd package/opensc: disable cmocka
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>
2022-07-26 23:47:41 +02:00
Fabrice Fontaine
9267b0f14d package/f2fs-tools: bump to version 1.15.0
Update indention in hash file (two spaces)

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-26 23:47:32 +02:00
Thomas Petazzoni
97cd3680a4 package/pulseaudio: simplify alsa-lib feature selection
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>
2022-07-26 23:45:30 +02:00
Fabrice Fontaine
9b296904ee package/pulseaudio: alsa needs UCM
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>
2022-07-26 23:43:21 +02:00
Fabrice Fontaine
aa61d29b84 package/v4l2loopback: add V4L2LOOPBACK_LINUX_CONFIG_FIXUPS
Fix the following build failure:

ERROR: modpost: "video_ioctl2" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "__video_register_device" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "v4l2_ctrl_new_custom" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "v4l2_ctrl_handler_init_class" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "video_device_alloc" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "v4l2_device_register" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "video_device_release" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "v4l2_ctrl_handler_free" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "v4l2_device_unregister" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!
ERROR: modpost: "video_unregister_device" [/nvmedata/autobuild/instance-10/output-1/build/v4l2loopback-0.12.5/./v4l2loopback.ko] undefined!

Fixes:
 - http://autobuild.buildroot.org/results/640f8f61c7f433ffe5e9a6759eecc9a03f735569

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-26 23:37:03 +02:00
Jared Bents
d51d4378ba package/rsyslog: install systemd service file with correct permissions
Signed-off-by: Jared Bents <jared.bents@rockwellcollins.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-26 23:32:09 +02:00
Lang Daniel
235acd628a toolchain: handle white spaces in sysroot dir in copy_toolchain_sysroot
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>
2022-07-26 23:11:25 +02:00
James Hilliard
558d62490b package/qt5: bump packages to latest kde submodule versions
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>
2022-07-26 23:10:27 +02:00
Thomas Petazzoni
dcb74db89e arch: add support for configurable page size on ARM64
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>
2022-07-26 22:54:39 +02:00
Thomas Petazzoni
8195e85e10 package/uclibc: define BR2_UCLIBC_TARGET_ARCH for ARM64
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>
2022-07-26 22:54:38 +02:00
Thomas Petazzoni
b4cb2d3ebc support/misc/toolchainfile.cmake.in: add definitions needed by Qt6
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>
2022-07-26 22:54:38 +02:00
Thomas Petazzoni
9522dde070 package/qt6/qt6base: new package
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>
2022-07-26 22:54:38 +02:00
Thomas Petazzoni
fbb8eb0be2 package/pcre2: add pcre2-16 to the host variant
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>
2022-07-26 22:54:37 +02:00
Peter Seiderer
2156c6d216 package/libb2: new package
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>
2022-07-26 22:54:37 +02:00
Peter Seiderer
39c08b2aa1 package/double-conversion: new package
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>
2022-07-26 22:54:37 +02:00
Christian Stewart
9e315b0cad boot/arm-trusted-firmware: allow enabling without uboot or edk2
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>
2022-07-26 22:51:09 +02:00
Fabrice Fontaine
89c5bfe3e4 package/janus-gateway: bump to version 1.0.3
- 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
  c21500c02e

https://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>
2022-07-26 22:11:24 +02:00
Fabrice Fontaine
7dba02bf62 package/freeradius-server: add CPE variables
cpe:2.3🅰️freeradius:freeradius is a valid CPE identifier for this
package:

  https://nvd.nist.gov/products/cpe/search/results?namingFormat=2.3&keyword=cpe%3A2.3%3Aa%3Afreeradius%3Afreeradius

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-26 22:09:31 +02:00
Arnout Vandecappelle (Essensium/Mind)
0e017b4c7b package/bird: bump to 2.0.10
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>
2022-07-26 22:04:21 +02:00
Fabrice Fontaine
042399b93c package/fscryptctl: fix build with gcc 4.8
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>
2022-07-26 22:00:22 +02:00
Petr Vorel
10990c576b package/iproute2: bump version to 5.18.0
Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-26 21:59:06 +02:00
Arnout Vandecappelle (Essensium/Mind)
b07210b272 package/gcc: remove BR2_GCC_ENABLE_LTO
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>
2022-07-26 21:56:31 +02:00
Arnout Vandecappelle (Essensium/Mind)
f0f99c9087 package/binutils: remove BR2_BINUTILS_ENABLE_LTO
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>
2022-07-26 21:56:21 +02:00
Arnout Vandecappelle (Essensium/Mind)
fecec75b62 configs/*: use BR2_ENABLE_LTO to enable LTO instead of BR2_GCC_ENABLE_LTO
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>
2022-07-26 21:56:13 +02:00
Arnout Vandecappelle (Essensium/Mind)
70e37f8060 package/*: use BR2_ENABLE_LTO to enable LTO instead of BR2_GCC_ENABLE_LTO
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>
2022-07-26 21:54:06 +02:00
Arnout Vandecappelle (Essensium/Mind)
fb51422780 Config.in: add new option BR2_ENABLE_LTO to globally enable LTO
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>
2022-07-26 21:53:52 +02:00
Fabrice Fontaine
4c47efafc2 package/ntpsec: needs host-bison
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>
2022-07-26 21:00:55 +02:00