All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-multimedia][PATCH] openh264: make neon optional and disable if not supported
@ 2023-08-31  8:54 Benjamin Bara
  0 siblings, 0 replies; only message in thread
From: Benjamin Bara @ 2023-08-31  8:54 UTC (permalink / raw)
  To: schnitzeltony; +Cc: openembedded-devel, Benjamin Bara

From: Benjamin Bara <benjamin.bara@skidata.com>

openh264 currently enforces neon on armv7, although it has fallbacks
implemented in C/C++ and it is mentioned in the README that it is
optional[1].

Therefore, make neon optional and disable it if the machine does not
support it.

[1] https://github.com/cisco/openh264/blob/v2.3.1/README.md?plain=1#L54

Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
---
 ...ossibility-to-disable-NEON-extension.patch | 103 ++++++++++++++++++
 .../openh264/openh264_2.3.1.bb                |   4 +
 2 files changed, 107 insertions(+)
 create mode 100644 meta-multimedia/recipes-multimedia/openh264/openh264/0002-Makefile-add-possibility-to-disable-NEON-extension.patch

diff --git a/meta-multimedia/recipes-multimedia/openh264/openh264/0002-Makefile-add-possibility-to-disable-NEON-extension.patch b/meta-multimedia/recipes-multimedia/openh264/openh264/0002-Makefile-add-possibility-to-disable-NEON-extension.patch
new file mode 100644
index 000000000..298ac1c01
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/openh264/openh264/0002-Makefile-add-possibility-to-disable-NEON-extension.patch
@@ -0,0 +1,103 @@
+From bc3a3baeaccfe9c1286848b348baf92dfbd05346 Mon Sep 17 00:00:00 2001
+From: Benjamin Bara <benjamin.bara@skidata.com>
+Date: Thu, 31 Aug 2023 09:27:31 +0200
+Subject: [PATCH 2/2] Makefile: add possibility to disable NEON extension
+
+README states that the NEON extension is optional. However, currently it
+cannot be turned off, therefore add an option to disable it.
+
+Upstream-Status: Submitted [https://github.com/cisco/openh264/pull/3679]
+Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
+---
+ Makefile                   |  1 +
+ build/arch.mk              |  4 ++++
+ build/msvc-common.mk       | 10 ++++++++--
+ build/platform-mingw_nt.mk |  5 ++++-
+ 4 files changed, 17 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index baed53a7..cc22c4aa 100644
+--- a/Makefile
++++ b/Makefile
+@@ -35,6 +35,7 @@ CCASFLAGS=$(CFLAGS)
+ STATIC_LDFLAGS=-lstdc++
+ STRIP ?= strip
+ USE_STACK_PROTECTOR = Yes
++USE_NEON=Yes
+ 
+ SHAREDLIB_MAJORVERSION=7
+ FULL_VERSION := 2.3.1
+diff --git a/build/arch.mk b/build/arch.mk
+index 4e1538c4..fd6a81e4 100644
+--- a/build/arch.mk
++++ b/build/arch.mk
+@@ -17,18 +17,22 @@ ifneq ($(filter-out arm64 arm64e, $(filter arm%, $(ARCH))),)
+ ifeq ($(USE_ASM), Yes)
+ ASM_ARCH = arm
+ ASMFLAGS += -I$(SRC_PATH)codec/common/arm/
++ifeq ($(USE_NEON), Yes)
+ CFLAGS += -DHAVE_NEON
+ endif
+ endif
++endif
+ 
+ #for arm64
+ ifneq ($(filter arm64 aarch64 arm64e, $(ARCH)),)
+ ifeq ($(USE_ASM), Yes)
+ ASM_ARCH = arm64
+ ASMFLAGS += -I$(SRC_PATH)codec/common/arm64/
++ifeq ($(USE_NEON), Yes)
+ CFLAGS += -DHAVE_NEON_AARCH64
+ endif
+ endif
++endif
+ 
+ #for mips
+ ifneq ($(filter mips mips64, $(ARCH)),)
+diff --git a/build/msvc-common.mk b/build/msvc-common.mk
+index 5891ea4e..5a1e2582 100644
+--- a/build/msvc-common.mk
++++ b/build/msvc-common.mk
+@@ -10,7 +10,10 @@ else
+ endif
+ ifeq ($(ASM_ARCH), arm)
+ CCAS = gas-preprocessor.pl -as-type armasm -force-thumb -- armasm
+-CCASFLAGS = -nologo -DHAVE_NEON -ignore 4509
++CCASFLAGS = -nologo -ignore 4509
++ifeq ($(USE_NEON), Yes)
++CCASFLAGS += -DHAVE_NEON
++endif
+ endif
+ 
+ CC=cl
+@@ -20,7 +23,10 @@ CXX_O=-Fo$@
+ 
+ ifeq ($(ASM_ARCH), arm64)
+ CCAS = clang-cl
+-CCASFLAGS = -nologo -DHAVE_NEON_AARCH64 --target=arm64-windows
++CCASFLAGS = -nologo --target=arm64-windows
++ifeq ($(USE_NEON), Yes)
++CCASFLAGS += -DHAVE_NEON_AARCH64
++endif
+ endif
+ 
+ 
+diff --git a/build/platform-mingw_nt.mk b/build/platform-mingw_nt.mk
+index b7a5495d..d73e362a 100644
+--- a/build/platform-mingw_nt.mk
++++ b/build/platform-mingw_nt.mk
+@@ -17,7 +17,10 @@ endif
+ endif
+ ifeq ($(ASM_ARCH), arm)
+ CCAS = gas-preprocessor.pl -as-type clang -force-thumb -- $(CC)
+-CCASFLAGS = -DHAVE_NEON -mimplicit-it=always
++CCASFLAGS = -mimplicit-it=always
++ifeq ($(USE_NEON), Yes)
++CCASFLAGS += -DHAVE_NEON
++endif
+ endif
+ EXEEXT = .exe
+ 
+-- 
+2.34.1
+
diff --git a/meta-multimedia/recipes-multimedia/openh264/openh264_2.3.1.bb b/meta-multimedia/recipes-multimedia/openh264/openh264_2.3.1.bb
index 89b1ea58c..6dfd75935 100644
--- a/meta-multimedia/recipes-multimedia/openh264/openh264_2.3.1.bb
+++ b/meta-multimedia/recipes-multimedia/openh264/openh264_2.3.1.bb
@@ -16,6 +16,7 @@ SRCREV = "0a48f4d2e9be2abb4fb01b4c3be83cf44ce91a6e"
 BRANCH = "openh264v${PV}"
 SRC_URI = "git://github.com/cisco/openh264.git;protocol=https;branch=${BRANCH} \
            file://0001-Makefile-Use-cp-options-to-preserve-file-mode.patch \
+           file://0002-Makefile-add-possibility-to-disable-NEON-extension.patch \
            "
 
 COMPATIBLE_MACHINE:armv7a = "(.*)"
@@ -35,6 +36,9 @@ EXTRA_OEMAKE:mips = "ARCH=mips"
 EXTRA_OEMAKE:mips64 = "ARCH=mips64"
 EXTRA_OEMAKE:riscv64 = "ARCH=riscv64"
 
+EXTRA_OEMAKE:append:armv7a = "${@bb.utils.contains("TUNE_FEATURES","neon",""," USE_NEON=No",d)}"
+EXTRA_OEMAKE:append:armv7ve = "${@bb.utils.contains("TUNE_FEATURES","neon",""," USE_NEON=No",d)}"
+
 EXTRA_OEMAKE:append = " ENABLEPIC=Yes"
 do_configure() {
     :
-- 
2.34.1



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2023-08-31  8:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-31  8:54 [meta-multimedia][PATCH] openh264: make neon optional and disable if not supported Benjamin Bara

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.