* [Buildroot] [PATCH next v2 1/2] package/highway: new package
@ 2022-11-24 22:05 Julien Olivain
2022-11-24 22:05 ` [Buildroot] [PATCH next v2 2/2] package/libjxl: " Julien Olivain
2023-02-13 22:20 ` [Buildroot] [PATCH next v2 1/2] package/highway: " Thomas Petazzoni via buildroot
0 siblings, 2 replies; 5+ messages in thread
From: Julien Olivain @ 2022-11-24 22:05 UTC (permalink / raw)
To: buildroot; +Cc: Julien Olivain
Highway is a C++ library that provides portable SIMD/vector intrinsics.
https://github.com/google/highway
Signed-off-by: Julien Olivain <ju.o@free.fr>
---
Changes v1 -> v2:
- Included Thomas' comments:
- Removed _ARCH_SUPPORTS
- Removed depends on !BR2_arm || BR2_ARM_FPU_VFPV4
The package will not attempt to build on all arm arch.
- Removed depends on !BR2_RISCV_32
Highway 1.0.2 supports rv32
- Add a patch to better handle arm toolchains
not providing <sys/auxv.h>
- Rewrote and simplified the runtime test to now use the
armv5 default basic config.
Tested on branch next at commit 1692691 with commands:
make check-package
...
0 warnings generated
python -m flake8 support/testing/tests/package/test_highway.py
[no-output]
support/testing/run-tests \
-d dl -o output_folder \
tests.package.test_highway.TestHighway
...
OK
./utils/test-pkg -a -p highway
arm-aarch64 [ 1/44]: OK
bootlin-aarch64-glibc [ 2/44]: OK
bootlin-arcle-hs38-uclibc [ 3/44]: OK
bootlin-armv5-uclibc [ 4/44]: OK
bootlin-armv7-glibc [ 5/44]: OK
bootlin-armv7m-uclibc [ 6/44]: OK
bootlin-armv7-musl [ 7/44]: OK
bootlin-m68k-5208-uclibc [ 8/44]: SKIPPED
bootlin-m68k-68040-uclibc [ 9/44]: OK
bootlin-microblazeel-uclibc [10/44]: OK
bootlin-mipsel32r6-glibc [11/44]: OK
bootlin-mipsel-uclibc [12/44]: OK
bootlin-nios2-glibc [13/44]: OK
bootlin-openrisc-uclibc [14/44]: OK
bootlin-powerpc64le-power8-glibc [15/44]: OK
bootlin-powerpc-e500mc-uclibc [16/44]: OK
bootlin-riscv32-glibc [17/44]: OK
bootlin-riscv64-glibc [18/44]: OK
bootlin-riscv64-musl [19/44]: OK
bootlin-sh4-uclibc [20/44]: OK
bootlin-sparc64-glibc [21/44]: OK
bootlin-sparc-uclibc [22/44]: OK
bootlin-x86-64-glibc [23/44]: OK
bootlin-x86-64-musl [24/44]: OK
bootlin-x86-64-uclibc [25/44]: OK
bootlin-xtensa-uclibc [26/44]: FAILED
br-arm-basic [27/44]: SKIPPED
br-arm-full-nothread [28/44]: OK
br-arm-full-static [29/44]: OK
br-i386-pentium4-full [30/44]: OK
br-i386-pentium-mmx-musl [31/44]: OK
br-mips64-n64-full [32/44]: OK
br-mips64r6-el-hf-glibc [33/44]: OK
br-powerpc-603e-basic-cpp [34/44]: OK
br-powerpc64-power7-glibc [35/44]: OK
linaro-aarch64-be [36/44]: OK
linaro-aarch64 [37/44]: OK
linaro-arm [38/44]: OK
sourcery-arm-armv4t [39/44]: SKIPPED
sourcery-arm [40/44]: SKIPPED
sourcery-arm-thumb2 [41/44]: SKIPPED
sourcery-mips64 [42/44]: SKIPPED
sourcery-mips [43/44]: SKIPPED
sourcery-nios2 [44/44]: OK
44 builds, 7 skipped, 1 build failed, 0 legal-info failed, 0 show-info failed
Note: Failure of bootlin-xtensa-uclibc is a known issue unrelated to
this package.
---
DEVELOPERS | 2 +
package/Config.in | 1 +
...Check-for-the-presence-of-sys-auxv.h.patch | 62 +++++++++++++++++++
package/highway/Config.in | 30 +++++++++
package/highway/highway.hash | 3 +
package/highway/highway.mk | 51 +++++++++++++++
support/testing/tests/package/test_highway.py | 22 +++++++
7 files changed, 171 insertions(+)
create mode 100644 package/highway/0001-Check-for-the-presence-of-sys-auxv.h.patch
create mode 100644 package/highway/Config.in
create mode 100644 package/highway/highway.hash
create mode 100644 package/highway/highway.mk
create mode 100644 support/testing/tests/package/test_highway.py
diff --git a/DEVELOPERS b/DEVELOPERS
index a2c60f38fd..13655bfab4 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1693,6 +1693,7 @@ F: configs/zynq_qmtech_defconfig
F: package/fluid-soundfont/
F: package/fluidsynth/
F: package/glslsandbox-player/
+F: package/highway/
F: package/octave/
F: package/ola/
F: package/ptm2human/
@@ -1706,6 +1707,7 @@ F: package/zynaddsubfx/
F: support/testing/tests/package/sample_python_distro.py
F: support/testing/tests/package/sample_python_gnupg.py
F: support/testing/tests/package/sample_python_pyalsa.py
+F: support/testing/tests/package/test_highway.py
F: support/testing/tests/package/test_hwloc.py
F: support/testing/tests/package/test_octave.py
F: support/testing/tests/package/test_ola.py
diff --git a/package/Config.in b/package/Config.in
index 7ad7e2d487..0a06ebe978 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2007,6 +2007,7 @@ menu "Other"
source "package/gsl/Config.in"
source "package/gtest/Config.in"
source "package/gumbo-parser/Config.in"
+ source "package/highway/Config.in"
source "package/jemalloc/Config.in"
source "package/lapack/Config.in"
source "package/libabseil-cpp/Config.in"
diff --git a/package/highway/0001-Check-for-the-presence-of-sys-auxv.h.patch b/package/highway/0001-Check-for-the-presence-of-sys-auxv.h.patch
new file mode 100644
index 0000000000..df86798613
--- /dev/null
+++ b/package/highway/0001-Check-for-the-presence-of-sys-auxv.h.patch
@@ -0,0 +1,62 @@
+From 491e3b1c2b8c44a2cfd35db117b02ef0fdf6a8e5 Mon Sep 17 00:00:00 2001
+From: Julien Olivain <ju.o@free.fr>
+Date: Wed, 23 Nov 2022 23:27:11 +0100
+Subject: [PATCH] Check for the presence of <sys/auxv.h>
+
+Not all gcc versions are providing <sys/auxv.h>. Checking for
+HWY_ARCH_ARM && HWY_COMPILER_GCC_ACTUAL && HWY_OS_LINUX is not
+sufficient and fail to build in some situations (it was observed for
+some gcc armv7m toolchains).
+
+This patch adds a check for <sys/auxv.h> and include it only if present.
+
+Signed-off-by: Julien Olivain <ju.o@free.fr>
+---
+ CMakeLists.txt | 3 +++
+ hwy/detect_targets.h | 2 +-
+ hwy/targets.cc | 2 +-
+ 3 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b6b14ab..df6b5ab 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -84,6 +84,9 @@ check_cxx_source_compiles(
+ HWY_RISCV
+ )
+
++include(CheckIncludeFile)
++check_include_file(sys/auxv.h HAVE_SYS_AUXV_H)
++
+ if (HWY_ENABLE_CONTRIB)
+ # Glob all the traits so we don't need to modify this file when adding
+ # additional special cases.
+diff --git a/hwy/detect_targets.h b/hwy/detect_targets.h
+index 7f7e179..f0c6f94 100644
+--- a/hwy/detect_targets.h
++++ b/hwy/detect_targets.h
+@@ -392,7 +392,7 @@
+ #define HWY_HAVE_RUNTIME_DISPATCH 1
+ // On Arm, currently only GCC does, and we require Linux to detect CPU
+ // capabilities.
+-#elif HWY_ARCH_ARM && HWY_COMPILER_GCC_ACTUAL && HWY_OS_LINUX
++#elif HWY_ARCH_ARM && HWY_COMPILER_GCC_ACTUAL && HWY_OS_LINUX && HAVE_SYS_AUXV_H
+ #define HWY_HAVE_RUNTIME_DISPATCH 1
+ #else
+ #define HWY_HAVE_RUNTIME_DISPATCH 0
+diff --git a/hwy/targets.cc b/hwy/targets.cc
+index 2fde4db..abd6a94 100644
+--- a/hwy/targets.cc
++++ b/hwy/targets.cc
+@@ -42,7 +42,7 @@
+ #include <cpuid.h>
+ #endif // HWY_COMPILER_MSVC
+
+-#elif HWY_ARCH_ARM && HWY_OS_LINUX
++#elif HWY_ARCH_ARM && HWY_OS_LINUX && HAVE_SYS_AUXV_H
+ #include <asm/hwcap.h>
+ #include <sys/auxv.h>
+ #endif // HWY_ARCH_*
+--
+2.38.1
+
diff --git a/package/highway/Config.in b/package/highway/Config.in
new file mode 100644
index 0000000000..23861f0b94
--- /dev/null
+++ b/package/highway/Config.in
@@ -0,0 +1,30 @@
+config BR2_PACKAGE_HIGHWAY
+ bool "highway"
+ depends on BR2_TOOLCHAIN_HAS_ATOMIC
+ depends on BR2_INSTALL_LIBSTDCPP
+ # For gcc bug 58969, see:
+ # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58969
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++11, GCC_BUG_58969
+ help
+ Highway is a C++ library that provides portable SIMD/vector
+ intrinsics.
+
+ https://github.com/google/highway
+
+if BR2_PACKAGE_HIGHWAY
+
+config BR2_PACKAGE_HIGHWAY_CONTRIB
+ bool "Enable Contrib"
+ help
+ Build Highway contrib library which contains extra
+ SIMD-related utilities: an image class with aligned rows, a
+ math library (16 functions already implemented, mostly
+ trigonometry), and functions for computing dot products and
+ sorting.
+
+config BR2_PACKAGE_HIGHWAY_EXAMPLES
+ bool "Enable Examples"
+ help
+ Build Highway examples
+
+endif
diff --git a/package/highway/highway.hash b/package/highway/highway.hash
new file mode 100644
index 0000000000..3ff468443e
--- /dev/null
+++ b/package/highway/highway.hash
@@ -0,0 +1,3 @@
+# Locally computed:
+sha256 e8ef71236ac0d97f12d553ec1ffc5b6375d57b5f0b860c7447dd69b6ed1072db highway-1.0.2.tar.gz
+sha256 43070e2d4e532684de521b885f385d0841030efa2b1a20bafb76133a5e1379c1 LICENSE
diff --git a/package/highway/highway.mk b/package/highway/highway.mk
new file mode 100644
index 0000000000..cf93ff1051
--- /dev/null
+++ b/package/highway/highway.mk
@@ -0,0 +1,51 @@
+################################################################################
+#
+# highway
+#
+################################################################################
+
+HIGHWAY_VERSION = 1.0.2
+HIGHWAY_SITE = $(call github,google,highway,$(HIGHWAY_VERSION))
+HIGHWAY_LICENSE = Apache-2.0
+HIGHWAY_LICENSE_FILES = LICENSE
+HIGHWAY_INSTALL_STAGING = YES
+
+HIGHWAY_CXXFLAGS = $(TARGET_CXXFLAGS)
+
+ifeq ($(BR2_PACKAGE_HIGHWAY_CONTRIB),y)
+HIGHWAY_CONF_OPTS += -DHWY_ENABLE_CONTRIB=ON
+else
+HIGHWAY_CONF_OPTS += -DHWY_ENABLE_CONTRIB=OFF
+endif
+
+# Examples are not installed by cmake. This binary can be useful for
+# quick testing and debug.
+define HIGHWAY_INSTALL_EXAMPLES
+ $(INSTALL) -m 0755 \
+ $(@D)/examples/hwy_benchmark \
+ $(TARGET_DIR)/usr/bin/hwy_benchmark
+endef
+
+ifeq ($(BR2_PACKAGE_HIGHWAY_EXAMPLES),y)
+HIGHWAY_CONF_OPTS += -DHWY_ENABLE_EXAMPLES=ON
+HIGHWAY_POST_INSTALL_TARGET_HOOKS += HIGHWAY_INSTALL_EXAMPLES
+else
+HIGHWAY_CONF_OPTS += -DHWY_ENABLE_EXAMPLES=OFF
+endif
+
+ifeq ($(BR2_ARM_FPU_VFPV4),y)
+HIGHWAY_CONF_OPTS += -DHWY_CMAKE_ARM7=ON
+else
+HIGHWAY_CONF_OPTS += -DHWY_CMAKE_ARM7=OFF
+endif
+
+# Workaround for gcc bug 104028 on m68k.
+# See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104028
+ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_104028),y)
+HIGHWAY_CXXFLAGS += -O0
+endif
+
+HIGHWAY_CONF_OPTS += \
+ -DCMAKE_CXX_FLAGS="$(HIGHWAY_CXXFLAGS)"
+
+$(eval $(cmake-package))
diff --git a/support/testing/tests/package/test_highway.py b/support/testing/tests/package/test_highway.py
new file mode 100644
index 0000000000..f32363e26f
--- /dev/null
+++ b/support/testing/tests/package/test_highway.py
@@ -0,0 +1,22 @@
+import os
+
+import infra.basetest
+
+
+class TestHighway(infra.basetest.BRTest):
+ config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
+ """
+ BR2_PACKAGE_HIGHWAY=y
+ BR2_PACKAGE_HIGHWAY_EXAMPLES=y
+ BR2_TARGET_ROOTFS_CPIO=y
+ # BR2_TARGET_ROOTFS_TAR is not set
+ """
+
+ def test_run(self):
+ cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
+ self.emulator.boot(arch="armv5",
+ kernel="builtin",
+ options=["-initrd", cpio_file])
+ self.emulator.login()
+
+ self.assertRunOk("hwy_benchmark", timeout=20)
--
2.38.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH next v2 2/2] package/libjxl: new package
2022-11-24 22:05 [Buildroot] [PATCH next v2 1/2] package/highway: new package Julien Olivain
@ 2022-11-24 22:05 ` Julien Olivain
2023-02-13 22:22 ` Thomas Petazzoni via buildroot
2023-02-13 22:20 ` [Buildroot] [PATCH next v2 1/2] package/highway: " Thomas Petazzoni via buildroot
1 sibling, 1 reply; 5+ messages in thread
From: Julien Olivain @ 2022-11-24 22:05 UTC (permalink / raw)
To: buildroot; +Cc: Julien Olivain
libjxl is the reference implementation of JPEG XL (encoder and decoder).
https://github.com/libjxl/libjxl
Signed-off-by: Julien Olivain <ju.o@free.fr>
---
Changes v1 -> v2:
- Included Thomas' comments:
- Removed: depends on BR2_PACKAGE_HIGHWAY_ARCH_SUPPORTS
- Added, to workaround build/link failures:
- depends on !BR2_STATIC_LIBS
- depends on !BR2_sh4
- Added missing Config.in comment
- Added optional libpng dependency, when selected
Tested on branch next at commit 1692691 with commands:
make check-package
...
0 warnings generated
python -m flake8 support/testing/tests/package/test_libjxl.py
[no-output]
support/testing/run-tests \
-d dl -o output_folder \
tests.package.test_libjxl.TestLibJXL
...
OK
./utils/test-pkg -a -p libjxl
arm-aarch64 [ 1/44]: OK
bootlin-aarch64-glibc [ 2/44]: OK
bootlin-arcle-hs38-uclibc [ 3/44]: OK
bootlin-armv5-uclibc [ 4/44]: OK
bootlin-armv7-glibc [ 5/44]: OK
bootlin-armv7m-uclibc [ 6/44]: SKIPPED
bootlin-armv7-musl [ 7/44]: OK
bootlin-m68k-5208-uclibc [ 8/44]: SKIPPED
bootlin-m68k-68040-uclibc [ 9/44]: OK
bootlin-microblazeel-uclibc [10/44]: OK
bootlin-mipsel32r6-glibc [11/44]: OK
bootlin-mipsel-uclibc [12/44]: OK
bootlin-nios2-glibc [13/44]: OK
bootlin-openrisc-uclibc [14/44]: OK
bootlin-powerpc64le-power8-glibc [15/44]: OK
bootlin-powerpc-e500mc-uclibc [16/44]: OK
bootlin-riscv32-glibc [17/44]: OK
bootlin-riscv64-glibc [18/44]: OK
bootlin-riscv64-musl [19/44]: OK
bootlin-sh4-uclibc [20/44]: SKIPPED
bootlin-sparc64-glibc [21/44]: OK
bootlin-sparc-uclibc [22/44]: OK
bootlin-x86-64-glibc [23/44]: OK
bootlin-x86-64-musl [24/44]: OK
bootlin-x86-64-uclibc [25/44]: OK
bootlin-xtensa-uclibc [26/44]: FAILED
br-arm-basic [27/44]: SKIPPED
br-arm-full-nothread [28/44]: SKIPPED
br-arm-full-static [29/44]: SKIPPED
br-i386-pentium4-full [30/44]: OK
br-i386-pentium-mmx-musl [31/44]: OK
br-mips64-n64-full [32/44]: OK
br-mips64r6-el-hf-glibc [33/44]: OK
br-powerpc-603e-basic-cpp [34/44]: OK
br-powerpc64-power7-glibc [35/44]: OK
linaro-aarch64-be [36/44]: OK
linaro-aarch64 [37/44]: OK
linaro-arm [38/44]: OK
sourcery-arm-armv4t [39/44]: SKIPPED
sourcery-arm [40/44]: SKIPPED
sourcery-arm-thumb2 [41/44]: SKIPPED
sourcery-mips64 [42/44]: SKIPPED
sourcery-mips [43/44]: SKIPPED
sourcery-nios2 [44/44]: OK
44 builds, 11 skipped, 1 build failed, 0 legal-info failed, 0 show-info failed
Note: Failure of bootlin-xtensa-uclibc is a known issue unrelated to
this package.
Note 2: relaxing the arch dependencies of the highway and libjxl
packages revealed few bugs. Notably a gcc sh4 issue, and a libjxl
issue in static configuration with toolchains needing libatomic.
Those cases are just excluded for now.
---
DEVELOPERS | 2 +
package/Config.in | 1 +
package/libjxl/Config.in | 23 +++++++++
package/libjxl/libjxl.hash | 4 ++
package/libjxl/libjxl.mk | 33 ++++++++++++
support/testing/tests/package/test_libjxl.py | 53 ++++++++++++++++++++
6 files changed, 116 insertions(+)
create mode 100644 package/libjxl/Config.in
create mode 100644 package/libjxl/libjxl.hash
create mode 100644 package/libjxl/libjxl.mk
create mode 100644 support/testing/tests/package/test_libjxl.py
diff --git a/DEVELOPERS b/DEVELOPERS
index 13655bfab4..6279ba6454 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1694,6 +1694,7 @@ F: package/fluid-soundfont/
F: package/fluidsynth/
F: package/glslsandbox-player/
F: package/highway/
+F: package/libjxl/
F: package/octave/
F: package/ola/
F: package/ptm2human/
@@ -1709,6 +1710,7 @@ F: support/testing/tests/package/sample_python_gnupg.py
F: support/testing/tests/package/sample_python_pyalsa.py
F: support/testing/tests/package/test_highway.py
F: support/testing/tests/package/test_hwloc.py
+F: support/testing/tests/package/test_libjxl.py
F: support/testing/tests/package/test_octave.py
F: support/testing/tests/package/test_ola.py
F: support/testing/tests/package/test_ola/
diff --git a/package/Config.in b/package/Config.in
index 0a06ebe978..1e539d7393 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1576,6 +1576,7 @@ menu "Graphics"
source "package/libgta/Config.in"
source "package/libgtk2/Config.in"
source "package/libgtk3/Config.in"
+ source "package/libjxl/Config.in"
source "package/libmediaart/Config.in"
source "package/libmng/Config.in"
source "package/libpng/Config.in"
diff --git a/package/libjxl/Config.in b/package/libjxl/Config.in
new file mode 100644
index 0000000000..6a15bde107
--- /dev/null
+++ b/package/libjxl/Config.in
@@ -0,0 +1,23 @@
+config BR2_PACKAGE_LIBJXL
+ bool "libjxl"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # highway
+ depends on BR2_TOOLCHAIN_HAS_ATOMIC # highway
+ depends on BR2_TOOLCHAIN_HAS_THREADS
+ depends on BR2_INSTALL_LIBSTDCPP # highway
+ # libjxl fail to link statically due to libatomic issue
+ depends on !BR2_STATIC_LIBS
+ # GCC bug on sh4: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81426
+ depends on !BR2_sh4
+ select BR2_PACKAGE_BROTLI
+ select BR2_PACKAGE_HIGHWAY
+ select BR2_PACKAGE_LCMS2
+ help
+ libjxl is the reference implementation of JPEG XL (encoder
+ and decoder).
+
+ https://github.com/libjxl/libjxl
+
+comment "libjxl needs a toolchain with C++, threads, gcc >= 7"
+ depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \
+ !BR2_INSTALL_LIBSTDCPP || \
+ !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/libjxl/libjxl.hash b/package/libjxl/libjxl.hash
new file mode 100644
index 0000000000..e71d32e61d
--- /dev/null
+++ b/package/libjxl/libjxl.hash
@@ -0,0 +1,4 @@
+# Locally computed:
+sha256 3114bba1fabb36f6f4adc2632717209aa6f84077bc4e93b420e0d63fa0455c5e libjxl-0.7.0.tar.gz
+sha256 8405932022a556380c2d8c272eff154a923feb197233f348ce5f7334fb0a5ede LICENSE
+sha256 91915f8ae056a68a3c5bdf05d9f6f78bb6903e27a8ca3a8434c9e4ac87300575 PATENTS
diff --git a/package/libjxl/libjxl.mk b/package/libjxl/libjxl.mk
new file mode 100644
index 0000000000..cc24ba258c
--- /dev/null
+++ b/package/libjxl/libjxl.mk
@@ -0,0 +1,33 @@
+################################################################################
+#
+# libjxl
+#
+################################################################################
+
+LIBJXL_VERSION = 0.7.0
+LIBJXL_SITE = $(call github,libjxl,libjxl,v$(LIBJXL_VERSION))
+LIBJXL_LICENSE = BSD-3-Clause
+LIBJXL_LICENSE_FILES = LICENSE PATENTS
+LIBJXL_CPE_ID_VENDOR = libjxl_project
+LIBJXL_INSTALL_STAGING = YES
+
+LIBJXL_DEPENDENCIES = \
+ brotli \
+ lcms2 \
+ highway
+
+ifeq ($(BR2_PACKAGE_LIBPNG),y)
+LIBJXL_DEPENDENCIES += libpng
+endif
+
+LIBJXL_CONF_OPTS = \
+ -DJPEGXL_BUNDLE_LIBPNG=OFF \
+ -DJPEGXL_BUNDLE_SKCMS=OFF \
+ -DJPEGXL_ENABLE_DOXYGEN=OFF \
+ -DJPEGXL_ENABLE_JNI=OFF \
+ -DJPEGXL_ENABLE_MANPAGES=OFF \
+ -DJPEGXL_ENABLE_OPENEXR=OFF \
+ -DJPEGXL_ENABLE_SJPEG=OFF \
+ -DJPEGXL_ENABLE_SKCMS=OFF
+
+$(eval $(cmake-package))
diff --git a/support/testing/tests/package/test_libjxl.py b/support/testing/tests/package/test_libjxl.py
new file mode 100644
index 0000000000..b6d5ffc9ce
--- /dev/null
+++ b/support/testing/tests/package/test_libjxl.py
@@ -0,0 +1,53 @@
+import os
+
+import infra.basetest
+
+
+class TestLibJXL(infra.basetest.BRTest):
+ # infra.basetest.BASIC_TOOLCHAIN_CONFIG is not used as it is armv5
+ # and the image encoding would take too long (several minutes).
+ # We also add GraphicsMagick to generate and compare images for
+ # the test.
+ config = \
+ """
+ BR2_aarch64=y
+ BR2_TOOLCHAIN_EXTERNAL=y
+ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
+ BR2_LINUX_KERNEL=y
+ BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+ BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.15.79"
+ BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+ BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux.config"
+ BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+ BR2_TARGET_ROOTFS_CPIO=y
+ BR2_TARGET_ROOTFS_CPIO_GZIP=y
+ # BR2_TARGET_ROOTFS_TAR is not set
+ BR2_PACKAGE_GRAPHICSMAGICK=y
+ BR2_PACKAGE_LIBJXL=y
+ """
+
+ def test_run(self):
+ img = os.path.join(self.builddir, "images", "rootfs.cpio.gz")
+ kern = os.path.join(self.builddir, "images", "Image")
+ self.emulator.boot(arch="aarch64",
+ kernel=kern,
+ kernel_cmdline=["console=ttyAMA0"],
+ options=["-M", "virt", "-cpu", "cortex-a57", "-m", "256M", "-initrd", img])
+ self.emulator.login()
+
+ ref = "/var/tmp/reference.ppm"
+ jxl = "/var/tmp/encoded.jxl"
+ dec = "/var/tmp/decoded.ppm"
+
+ cmd = "gm convert IMAGE:LOGO {}".format(ref)
+ self.assertRunOk(cmd)
+
+ cmd = "cjxl {} {}".format(ref, jxl)
+ self.assertRunOk(cmd, timeout=30)
+
+ cmd = "djxl {} {}".format(jxl, dec)
+ self.assertRunOk(cmd)
+
+ cmd = "gm compare -metric mse -maximum-error 1e-3 {} {}".format(
+ ref, dec)
+ self.assertRunOk(cmd)
--
2.38.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH next v2 1/2] package/highway: new package
2022-11-24 22:05 [Buildroot] [PATCH next v2 1/2] package/highway: new package Julien Olivain
2022-11-24 22:05 ` [Buildroot] [PATCH next v2 2/2] package/libjxl: " Julien Olivain
@ 2023-02-13 22:20 ` Thomas Petazzoni via buildroot
2023-02-14 23:20 ` Julien Olivain
1 sibling, 1 reply; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-02-13 22:20 UTC (permalink / raw)
To: Julien Olivain; +Cc: buildroot
On Thu, 24 Nov 2022 23:05:51 +0100
Julien Olivain <ju.o@free.fr> wrote:
> Highway is a C++ library that provides portable SIMD/vector intrinsics.
>
> https://github.com/google/highway
>
> Signed-off-by: Julien Olivain <ju.o@free.fr>
Thanks! I've applied, with some small changes, see below.
> diff --git a/package/highway/0001-Check-for-the-presence-of-sys-auxv.h.patch b/package/highway/0001-Check-for-the-presence-of-sys-auxv.h.patch
> new file mode 100644
> index 0000000000..df86798613
> --- /dev/null
> +++ b/package/highway/0001-Check-for-the-presence-of-sys-auxv.h.patch
> @@ -0,0 +1,62 @@
> +From 491e3b1c2b8c44a2cfd35db117b02ef0fdf6a8e5 Mon Sep 17 00:00:00 2001
> +From: Julien Olivain <ju.o@free.fr>
> +Date: Wed, 23 Nov 2022 23:27:11 +0100
> +Subject: [PATCH] Check for the presence of <sys/auxv.h>
> +
> +Not all gcc versions are providing <sys/auxv.h>. Checking for
> +HWY_ARCH_ARM && HWY_COMPILER_GCC_ACTUAL && HWY_OS_LINUX is not
> +sufficient and fail to build in some situations (it was observed for
> +some gcc armv7m toolchains).
> +
> +This patch adds a check for <sys/auxv.h> and include it only if present.
> +
> +Signed-off-by: Julien Olivain <ju.o@free.fr>
Has this patch been submitted upstream?
> diff --git a/package/highway/Config.in b/package/highway/Config.in
> new file mode 100644
> index 0000000000..23861f0b94
> --- /dev/null
> +++ b/package/highway/Config.in
> @@ -0,0 +1,30 @@
> +config BR2_PACKAGE_HIGHWAY
> + bool "highway"
> + depends on BR2_TOOLCHAIN_HAS_ATOMIC
> + depends on BR2_INSTALL_LIBSTDCPP
> + # For gcc bug 58969, see:
> + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58969
> + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++11, GCC_BUG_58969
> + help
> + Highway is a C++ library that provides portable SIMD/vector
> + intrinsics.
> +
> + https://github.com/google/highway
> +
> +if BR2_PACKAGE_HIGHWAY
> +
> +config BR2_PACKAGE_HIGHWAY_CONTRIB
> + bool "Enable Contrib"
> + help
> + Build Highway contrib library which contains extra
> + SIMD-related utilities: an image class with aligned rows, a
> + math library (16 functions already implemented, mostly
> + trigonometry), and functions for computing dot products and
> + sorting.
> +
> +config BR2_PACKAGE_HIGHWAY_EXAMPLES
> + bool "Enable Examples"
> + help
> + Build Highway examples
> +
> +endif
You forgot the Config.in comment matching the "depends on" of the main
options:
comment "highway needs a toolchain w/ C++, gcc >= 7"
depends on BR2_TOOLCHAIN_HAS_ATOMIC
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_7
> +HIGHWAY_CXXFLAGS = $(TARGET_CXXFLAGS)
> +
> +ifeq ($(BR2_PACKAGE_HIGHWAY_CONTRIB),y)
> +HIGHWAY_CONF_OPTS += -DHWY_ENABLE_CONTRIB=ON
> +else
> +HIGHWAY_CONF_OPTS += -DHWY_ENABLE_CONTRIB=OFF
> +endif
> +
> +# Examples are not installed by cmake. This binary can be useful for
> +# quick testing and debug.
> +define HIGHWAY_INSTALL_EXAMPLES
> + $(INSTALL) -m 0755 \
> + $(@D)/examples/hwy_benchmark \
> + $(TARGET_DIR)/usr/bin/hwy_benchmark
> +endef
I've moved this...
> +
> +ifeq ($(BR2_PACKAGE_HIGHWAY_EXAMPLES),y)
> +HIGHWAY_CONF_OPTS += -DHWY_ENABLE_EXAMPLES=ON
... here, as it is used only within this condition.
Applied with those changes, thanks!
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH next v2 2/2] package/libjxl: new package
2022-11-24 22:05 ` [Buildroot] [PATCH next v2 2/2] package/libjxl: " Julien Olivain
@ 2023-02-13 22:22 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-02-13 22:22 UTC (permalink / raw)
To: Julien Olivain; +Cc: buildroot
Hello Julien,
On Thu, 24 Nov 2022 23:05:52 +0100
Julien Olivain <ju.o@free.fr> wrote:
> libjxl is the reference implementation of JPEG XL (encoder and decoder).
>
> https://github.com/libjxl/libjxl
>
> Signed-off-by: Julien Olivain <ju.o@free.fr>
Thanks, I've applied with some small changes, see below.
> diff --git a/package/libjxl/Config.in b/package/libjxl/Config.in
> new file mode 100644
> index 0000000000..6a15bde107
> --- /dev/null
> +++ b/package/libjxl/Config.in
> @@ -0,0 +1,23 @@
> +config BR2_PACKAGE_LIBJXL
> + bool "libjxl"
> + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # highway
> + depends on BR2_TOOLCHAIN_HAS_ATOMIC # highway
> + depends on BR2_TOOLCHAIN_HAS_THREADS
> + depends on BR2_INSTALL_LIBSTDCPP # highway
> + # libjxl fail to link statically due to libatomic issue
> + depends on !BR2_STATIC_LIBS
> + # GCC bug on sh4: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81426
> + depends on !BR2_sh4
Changed to use a new BR2_TOOLCHAIN_HAS_GCC_BUG_81426 blind option.
> + select BR2_PACKAGE_BROTLI
> + select BR2_PACKAGE_HIGHWAY
> + select BR2_PACKAGE_LCMS2
> + help
> + libjxl is the reference implementation of JPEG XL (encoder
> + and decoder).
> +
> + https://github.com/libjxl/libjxl
> +
> +comment "libjxl needs a toolchain with C++, threads, gcc >= 7"
> + depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \
> + !BR2_INSTALL_LIBSTDCPP || \
> + !BR2_TOOLCHAIN_HAS_THREADS
This was not complete: you have 6 "depends on" above, so 6 depends on
should be handled here one way or another:
comment "libjxl needs a toolchain with C++, threads, gcc >= 7, dynamic library"
depends on BR2_TOOLCHAIN_HAS_ATOMIC
depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_81426
depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 || \
!BR2_INSTALL_LIBSTDCPP || \
!BR2_TOOLCHAIN_HAS_THREADS || \
BR2_STATIC_LIBS
Applied with that change. Thanks a lot for the runtime tests, very
useful as usual!
Best regards,
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH next v2 1/2] package/highway: new package
2023-02-13 22:20 ` [Buildroot] [PATCH next v2 1/2] package/highway: " Thomas Petazzoni via buildroot
@ 2023-02-14 23:20 ` Julien Olivain
0 siblings, 0 replies; 5+ messages in thread
From: Julien Olivain @ 2023-02-14 23:20 UTC (permalink / raw)
To: Thomas Petazzoni; +Cc: buildroot
Hi Thomas,
On 13/02/2023 23:20, Thomas Petazzoni wrote:
> On Thu, 24 Nov 2022 23:05:51 +0100
> Julien Olivain <ju.o@free.fr> wrote:
>
>> Highway is a C++ library that provides portable SIMD/vector
>> intrinsics.
>>
>> https://github.com/google/highway
>>
>> Signed-off-by: Julien Olivain <ju.o@free.fr>
>
> Thanks! I've applied, with some small changes, see below.
Thanks for the improvements!
[...]
>> +This patch adds a check for <sys/auxv.h> and include it only if
>> present.
>> +
>> +Signed-off-by: Julien Olivain <ju.o@free.fr>
>
> Has this patch been submitted upstream?
Yes! A slightly reworked version was accepted upstream and is already in
the
latest 1.0.3 version tag. See:
https://github.com/google/highway/commit/1cab22047a6ef750ef2bc38ad47d6e765d6d376a
I'm currently reworking this 1.0.3 and I'll send a version bump when
ready.
Best regards,
Julien.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-02-14 23:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-24 22:05 [Buildroot] [PATCH next v2 1/2] package/highway: new package Julien Olivain
2022-11-24 22:05 ` [Buildroot] [PATCH next v2 2/2] package/libjxl: " Julien Olivain
2023-02-13 22:22 ` Thomas Petazzoni via buildroot
2023-02-13 22:20 ` [Buildroot] [PATCH next v2 1/2] package/highway: " Thomas Petazzoni via buildroot
2023-02-14 23:20 ` Julien Olivain
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.