From 08664b26f866e91b1ce678225b99b3e04a4b3c95 Mon Sep 17 00:00:00 2001 From: Jan Beich Date: Wed, 19 Dec 2018 20:57:09 +0000 Subject: [PATCH] multimedia/dav1d: convert to upstreamable patches --- multimedia/dav1d/Makefile | 4 ++ multimedia/dav1d/distinfo | 4 ++ multimedia/dav1d/files/patch-neon | 75 --------------------- multimedia/dav1d/files/patch-neon-freebsd11 | 42 ++++++++++++ 4 files changed, 50 insertions(+), 75 deletions(-) delete mode 100644 multimedia/dav1d/files/patch-neon create mode 100644 multimedia/dav1d/files/patch-neon-freebsd11 diff --git a/multimedia/dav1d/Makefile b/multimedia/dav1d/Makefile index c3ce58fef46c..ce022e2b0c34 100644 --- a/multimedia/dav1d/Makefile +++ b/multimedia/dav1d/Makefile @@ -4,6 +4,10 @@ PORTNAME= dav1d DISTVERSION= 0.1.0 CATEGORIES= multimedia +PATCH_SITES= ${GL_SITE}/jbeich/${GL_PROJECT}/commit/ +PATCHFILES+= d3a03bd9939d.patch:-p1 +PATCHFILES+= 7f01c6166519.patch:-p1 + MAINTAINER= jbeich@FreeBSD.org COMMENT= Small and fast AV1 decoder diff --git a/multimedia/dav1d/distinfo b/multimedia/dav1d/distinfo index fb214740a5ac..5b4ec4d525ac 100644 --- a/multimedia/dav1d/distinfo +++ b/multimedia/dav1d/distinfo @@ -3,3 +3,7 @@ SHA256 (videolan-dav1d-a6b903fb6d78f1515b2c50ba17ae50ead8cf5b72_GL0.tar.gz) = 28 SIZE (videolan-dav1d-a6b903fb6d78f1515b2c50ba17ae50ead8cf5b72_GL0.tar.gz) = 443816 SHA256 (videolan-dav1d-test-data-0028f7f3d9cdcd0e95643e16d49d5a691807cb77_GL0.tar.gz) = f7172cb7d4f57e54d0caad8ab60fd43235983a2673a5e955c62fc3565a711eb9 SIZE (videolan-dav1d-test-data-0028f7f3d9cdcd0e95643e16d49d5a691807cb77_GL0.tar.gz) = 31033900 +SHA256 (d3a03bd9939d.patch) = 38b32e9e7c44eccba0ae328afc79ac9c41e15b06a977da9a0606f5c16d6f0bc2 +SIZE (d3a03bd9939d.patch) = 950 +SHA256 (7f01c6166519.patch) = 6e7407f6db3a423b6c0f801c6607b0609daa948fcd5252f9ba73e7ebc42ae9ff +SIZE (7f01c6166519.patch) = 1895 diff --git a/multimedia/dav1d/files/patch-neon b/multimedia/dav1d/files/patch-neon deleted file mode 100644 index b8d3e5cd4f12..000000000000 --- a/multimedia/dav1d/files/patch-neon +++ /dev/null @@ -1,75 +0,0 @@ -- Assume NEON on FreeBSD armv7 -- Implement NEON runtime detection on FreeBSD armv6 - ---- meson.build.orig 2018-12-11 14:14:56 UTC -+++ meson.build -@@ -147,6 +147,9 @@ if (host_machine.cpu_family() == 'aarch64' or - if cc.has_function('getauxval', prefix : '#include ', args : test_args) - cdata.set('HAVE_GETAUXVAL', 1) - endif -+ if cc.has_function('elf_aux_info', prefix : '#include ', args : test_args) -+ cdata.set('HAVE_ELF_AUX_INFO', 1) -+ endif - endif - - # Compiler flag tests ---- src/arm/cpu.c.orig 2018-12-11 14:14:56 UTC -+++ src/arm/cpu.c -@@ -29,7 +29,7 @@ - - #include "src/arm/cpu.h" - --#if defined(HAVE_GETAUXVAL) && ARCH_ARM -+#if (defined(HAVE_GETAUXVAL) || defined(HAVE_ELF_AUX_INFO)) && ARCH_ARM - #include - - #ifndef HWCAP_ARM_NEON -@@ -68,12 +68,48 @@ static unsigned parse_proc_cpuinfo(const char *flag) { - } - #endif - -+#if defined(__FreeBSD__) && __FreeBSD__ < 12 -+#include -+#include -+#include -+#include -+#include -+ -+#define HAVE_GETAUXVAL -+#define NEON_HWCAP HWCAP_NEON -+static unsigned long getauxval(unsigned long type) { -+ Elf_Auxinfo auxv[AT_COUNT]; -+ size_t len = sizeof(auxv); -+ int mib[] = { -+ CTL_KERN, -+ KERN_PROC, -+ KERN_PROC_AUXV, -+ getpid(), -+ }; -+ -+ if (sysctl(mib, nitems(mib), auxv, &len, NULL, 0) != -1) { -+ for (size_t i = 0; i < nitems(auxv); i++) -+ if ((unsigned long)auxv[i].a_type == type) -+ return auxv[i].a_un.a_val; -+ -+ errno = ENOENT; -+ } -+ return 0; -+} -+#endif -+ - unsigned dav1d_get_cpu_flags_arm(void) { - unsigned flags = 0; - #if ARCH_AARCH64 - flags |= DAV1D_ARM_CPU_FLAG_NEON; -+#elif defined(__ARM_NEON) -+ flags |= DAV1D_ARM_CPU_FLAG_NEON; - #elif defined(HAVE_GETAUXVAL) && ARCH_ARM - unsigned long hw_cap = getauxval(AT_HWCAP); -+ flags |= (hw_cap & NEON_HWCAP) ? DAV1D_ARM_CPU_FLAG_NEON : 0; -+#elif defined(HAVE_ELF_AUX_INFO) && ARCH_ARM -+ unsigned long hw_cap; -+ elf_aux_info(AT_HWCAP, &hw_cap, sizeof(hw_cap)); - flags |= (hw_cap & NEON_HWCAP) ? DAV1D_ARM_CPU_FLAG_NEON : 0; - #elif defined(__ANDROID__) - flags |= parse_proc_cpuinfo("neon") ? DAV1D_ARM_CPU_FLAG_NEON : 0; diff --git a/multimedia/dav1d/files/patch-neon-freebsd11 b/multimedia/dav1d/files/patch-neon-freebsd11 new file mode 100644 index 000000000000..3e2bd7fb12be --- /dev/null +++ b/multimedia/dav1d/files/patch-neon-freebsd11 @@ -0,0 +1,42 @@ +- Implement NEON runtime detection on FreeBSD 11.* armv6 + +--- src/arm/cpu.c.orig 2018-12-11 14:14:56 UTC ++++ src/arm/cpu.c +@@ -68,7 +68,37 @@ static unsigned parse_proc_cpuinfo(const char *flag) { + } + #endif + ++#if defined(__FreeBSD__) && __FreeBSD__ < 12 ++#include ++#include ++#include ++#include ++#include ++ ++#define HAVE_GETAUXVAL ++#define NEON_HWCAP HWCAP_NEON ++static unsigned long getauxval(unsigned long type) { ++ Elf_Auxinfo auxv[AT_COUNT]; ++ size_t len = sizeof(auxv); ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_AUXV, ++ getpid(), ++ }; ++ ++ if (sysctl(mib, nitems(mib), auxv, &len, NULL, 0) != -1) { ++ for (size_t i = 0; i < nitems(auxv); i++) ++ if ((unsigned long)auxv[i].a_type == type) ++ return auxv[i].a_un.a_val; ++ ++ errno = ENOENT; ++ } ++ return 0; ++} ++#endif ++ + unsigned dav1d_get_cpu_flags_arm(void) { + unsigned flags = 0; + #if ARCH_AARCH64 + flags |= DAV1D_ARM_CPU_FLAG_NEON;