Go to file
Thomas Petazzoni f112f05b8f package/x265: fix runtime issue on ARMv6, ensure correctness on ARMv7
The build logic in source/cmake/FindNeon.cmake caused the x265 build
system to always think that the CPU supports neon: it was looking in
/proc/cpuinfo, which of course is wrong when cross-compilation, but
then the sequence of grep was interacting badly with CMake, causing
the build system to always conclude that the CPU supports NEON.

This causes runtime issues on ARMv6.

Setting -DCROSS_COMPILE_ARM=1 fixes this, as it tells the x265 build
system we are cross-compiling and it skips its bogus NEON check. So
for ARMv6, we pass -DCROSS_COMPILE_ARM=1.

But then, we still want NEON for ARMv7 processors with NEON, so this
commit adds a patch that allows to explicitly specify whether the CPU
supports NEON, in the -DCROSS_COMPILE_ARM=1 case, and we use this
option when BR2_ARM_CPU_HAS_NEON.

For those wondering why -DCROSS_COMPILE_ARM=1 is not passed for all
ARM platforms: it's because from the perspective of x265, only ARM >=
v6 is ARM: it has assembly code that needs at least ARMv6. Earlier ARM
platforms are not detected as ARM by the x265 build logic, and
therefore fallback on generic code.

This has been build-tested on:
- ARMv5: generic code is used, no assembly
- ARMv6: assembly code is used, but not with NEON support
- ARMv7 with NEON: assembly code is used, with NEON support

Reported-by: David Barbion <davidb@230ruedubac.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
(cherry picked from commit 1fbd26f83169a206bdf9c36c85510a33c0e7a864)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-08-09 21:27:59 +02:00
.github .github: add a pull request warning that explains the mailing list workflow 2024-05-07 18:09:38 +02:00
.gitlab/issue_templates gitlab: add default issue template 2024-07-11 00:01:44 +02:00
arch arch/Config.in.x86: enable SSE2 on Pentium M 2024-06-08 13:05:27 +02:00
board configs/stm32mp157a_dk1: add hashes 2024-07-31 18:48:06 +02:00
boot boot/syslinux: fix building with GCC 14.x 2024-07-28 09:07:29 +02:00
configs configs/stm32mp157a_dk1: add hashes 2024-07-31 18:48:06 +02:00
docs docs/manual: normalize delimiters of listing blocks 2024-08-07 00:39:49 +02:00
fs fs/tar: use appropriate TAR 2024-06-15 20:28:56 +02:00
linux {linux, linux-headers}: bump 4.19.x / 5.{4, 10, 15}.x / 6.{1, 6, 9}.x series 2024-07-11 20:29:31 +02:00
package package/x265: fix runtime issue on ARMv6, ensure correctness on ARMv7 2024-08-09 21:27:59 +02:00
support support/testing: add mosquitto runtime test 2024-08-01 12:58:54 +02:00
system system: expose BR2_ROOTFS_POST_SCRIPT_ARGS for PRE_BUILD scripts 2024-04-28 14:07:55 +02:00
toolchain toolchain/Config.in: update BR2_TOOLCHAIN_HAS_LIBATOMIC dependencies 2024-06-08 13:12:23 +02:00
utils utils/check-package: check linux-tools 2024-08-07 00:36:24 +02:00
.checkpackageignore package/x265: replace patch fixing gcc option 2024-08-09 21:27:34 +02:00
.clang-format .clang-format: initial import from Linux 5.15.6 2022-01-01 15:01:13 +01:00
.defconfig
.editorconfig editorconfig: leave patch files alone wrt trainling spaces 2024-06-16 12:24:58 +02:00
.flake8 Revert ".flake8: fix check for 80/132 columns" 2021-01-02 17:38:20 +01:00
.gitignore update gitignore 2013-05-04 12:41:55 +02:00
.gitlab-ci.yml support/misc/gitlab-ci.yml.in: retry a job only if it failed due to a runner issue 2023-08-27 10:09:37 +02:00
.shellcheckrc utils/check-package: improve shellcheck reproducibility 2022-07-25 23:52:47 +02:00
CHANGES Update for 2024.02.4 2024-07-13 14:29:13 +02:00
Config.in Config.in: drop --passive-ftp from default wget options 2024-06-08 20:12:16 +02:00
Config.in.legacy toolchain: drop codescape mips toolchains 2024-03-22 20:51:35 +01:00
COPYING
DEVELOPERS support/testing: add mosquitto runtime test 2024-08-01 12:58:54 +02:00
Makefile Update for 2024.02.4 2024-07-13 14:29:13 +02:00
Makefile.legacy Remove BR2_DEPRECATED 2016-10-15 23:14:45 +02:00
README docs: move the IRC channel away from Freenode 2021-05-29 22:16:23 +02:00

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on OFTC IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches