From c9ed5424d983820326a2e7b70ad37541d6073cf1 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 16 Nov 2020 12:20:03 -0800 Subject: vlc: Fix build on riscv32 Signed-off-by: Khem Raj --- ...hread-Use-SYS_futex-instead-of-__NR_futex.patch | 46 ++++++++++++++++++++++ .../recipes-multimedia/vlc/vlc_3.0.11.1.bb | 2 + 2 files changed, 48 insertions(+) create mode 100644 meta-multimedia/recipes-multimedia/vlc/vlc/0001-linux-thread-Use-SYS_futex-instead-of-__NR_futex.patch (limited to 'meta-multimedia') diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc/0001-linux-thread-Use-SYS_futex-instead-of-__NR_futex.patch b/meta-multimedia/recipes-multimedia/vlc/vlc/0001-linux-thread-Use-SYS_futex-instead-of-__NR_futex.patch new file mode 100644 index 0000000000..405490dcfc --- /dev/null +++ b/meta-multimedia/recipes-multimedia/vlc/vlc/0001-linux-thread-Use-SYS_futex-instead-of-__NR_futex.patch @@ -0,0 +1,46 @@ +From f7957c35654222e5bd1038341612bbb40a88e98b Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 16 Nov 2020 12:08:43 -0800 +Subject: [PATCH] linux/thread: Use SYS_futex instead of __NR_futex + +SYS_futex it expected from system C library. +in glibc (/usr/include/bits/syscall.h defines it in terms of of NR_futex) +some newer 32bit architectures e.g. riscv32 are using 64bit time_t from +get go unlike other 32bit architectures in glibc, therefore it wont have +NR_futex defined but just NR_futex_time64 this aliases it to NR_futex so +that SYS_futex is then defined for rv32 + +Upstream-Status: Submitted [https://github.com/videolan/vlc/pull/117] +Signed-off-by: Khem Raj +--- + src/linux/thread.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/linux/thread.c b/src/linux/thread.c +index 20da296..30639a3 100644 +--- a/src/linux/thread.c ++++ b/src/linux/thread.c +@@ -30,6 +30,11 @@ + #include + #include + ++/* 32bit architectures with 64bit time_t do not define __NR_futex syscall */ ++#if !defined(SYS_futex) && defined(SYS_futex_time64) ++#define SYS_futex SYS_futex_time64 ++#endif ++ + #ifndef FUTEX_PRIVATE_FLAG + #define FUTEX_WAKE_PRIVATE FUTEX_WAKE + #define FUTEX_WAIT_PRIVATE FUTEX_WAIT +@@ -50,7 +55,7 @@ unsigned long vlc_thread_id(void) + static int sys_futex(void *addr, int op, unsigned val, + const struct timespec *to, void *addr2, int val3) + { +- return syscall(__NR_futex, addr, op, val, to, addr2, val3); ++ return syscall(SYS_futex, addr, op, val, to, addr2, val3); + } + + static int vlc_futex_wake(void *addr, int nr) +-- +2.29.2 + diff --git a/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.11.1.bb b/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.11.1.bb index 44178a10d1..7902825f24 100644 --- a/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.11.1.bb +++ b/meta-multimedia/recipes-multimedia/vlc/vlc_3.0.11.1.bb @@ -14,6 +14,7 @@ DEPENDS = "coreutils-native fribidi libtool libgcrypt libgcrypt-native \ tiff" LDFLAGS_append_riscv64 = " -latomic" +LDFLAGS_append_riscv32 = " -latomic" # While this item does not require it, it depends on ffmpeg which does LICENSE_FLAGS = "commercial" @@ -24,6 +25,7 @@ SRC_URI = "http://download.videolan.org/pub/videolan/${BPN}/${PV}/${BP}.tar.xz \ file://0003-fix-luaL-checkint.patch \ file://0004-Use-packageconfig-to-detect-mmal-support.patch \ file://0005-Fix-build-with-Qt-5.15.patch \ + file://0001-linux-thread-Use-SYS_futex-instead-of-__NR_futex.patch \ " SRC_URI[sha256sum] = "189311d28aa814f106a7b3645211ac52c0b3e2b9f4b348de2f63bab3218086b8" -- cgit 1.2.3-korg