This commit is contained in:
TriForceX
2019-09-25 20:51:37 -03:00
commit 6203ff3e7c
11215 changed files with 428258 additions and 0 deletions

View File

@@ -0,0 +1,84 @@
From 233413841882608c6d5b98b6ce89fcb8a292db82 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 6 Aug 2016 10:22:34 +0200
Subject: [PATCH] configure.ac: fix architecture detection
The current architecture detection, based on the "host_cpu" part of the
tuple does not work properly for a number of reason:
- The code assumes that if host_cpu starts with "arm" then ARM
instructions are available, which is incorrect. Indeed, Cortex-M
platforms can run Linux, they are ARM platforms (so host_cpu = arm),
but they don't support ARM instructions: they support only the
Thumb-2 instruction set.
- The armv7 case is also not very useful, as it is not standard at all
to pass armv7 as host_cpu even if the host system is actually ARMv7
based.
- For the same reason, the armv8 case is not very useful: armv8 is
never used as the host_cpu part of a tuple.
So, this commit moves away from a host_cpu based logic, and instead
tests using AC_CHECK_DECLS() the built-in definitions of the compiler:
- If we have __ARM_ARCH_ISA_ARM defined, then it's an ARM processor
that supports the ARM instruction set (this allows to exclude Thumb-2
only processors).
- If we have __ARM_ARCH_7A__, then we have an ARMv7-A processor, and
we can enable the corresponding optimizations
- Same for __i386__ and __x86_64__.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Submitted upstream, under a slightly different form so that it applies
on master:
https://lists.freedesktop.org/archives/pulseaudio-discuss/2016-August/026600.html
---
configure.ac | 27 +++++++++------------------
1 file changed, 9 insertions(+), 18 deletions(-)
diff --git a/configure.ac b/configure.ac
index 6f9553b..836c6ad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -55,24 +55,15 @@ AS_CASE(["${host}"],
)
AC_SUBST(PLATFORM_CFLAGS)
-AS_CASE(["${host_cpu}"],
- [i?86|x86_64],
- [
- HAVE_X86=1
- ],
- [armv7*|armv8*],
- [
- HAVE_ARM=1
- HAVE_ARMV7=1
- ARCH_CFLAGS="-DWEBRTC_ARCH_ARM -DWEBRTC_ARCH_ARM_V7"
- ],
- [arm*],
- [
- HAVE_ARM=1
- ARCH_CFLAGS="-DWEBRTC_ARCH_ARM"
- ]
- # FIXME: Add MIPS support, see webrtc/BUILD.gn for defines
-)
+# Testing __ARM_ARCH_ISA_ARM since the code contains ARM instructions,
+# which don't work on Thumb-2 only platforms (ARMv7-M).
+AC_CHECK_DECLS([__ARM_ARCH_ISA_ARM],
+ [HAVE_ARM=1; ARCH_CFLAGS="${ARCH_CFLAGS} -DWEBRTC_ARCH_ARM"])
+AC_CHECK_DECLS([__ARM_ARCH_7A__],
+ [HAVE_ARMV7=1; ARCH_CFLAGS="${ARCH_CFLAGS} -DWEBRTC_ARCH_ARM_V7"])
+AC_CHECK_DECLS([__i386__], [HAVE_X86=1])
+AC_CHECK_DECLS([__x86_64__], [HAVE_X86=1])
+
AM_CONDITIONAL(HAVE_X86, [test "x${HAVE_X86}" = "x1"])
AM_CONDITIONAL(HAVE_ARM, [test "x${HAVE_ARM}" = "x1"])
AM_CONDITIONAL(HAVE_ARMV7, [test "x${HAVE_ARMV7}" = "x1"])
--
2.7.4

View File

@@ -0,0 +1,63 @@
From b7a166acaddc4c78afa2b653e25114d9114699f3 Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date: Sat, 6 Aug 2016 11:24:50 +0200
Subject: [PATCH] Proper detection of cxxabi.h and execinfo.h
The current code in webrtc/base/checks.cc assumes that if __GLIBCXX__ is
defined and __UCLIBC__ is not defined, then both cxxabi.h and execinfo.h
will be available.
Unfortunately, this is not correct with the musl C library:
- It defines __GLIBCXX__
- It does not define __UCLIBC__ (it's not uClibc after all!)
- But it also doesn't provide execinfo.h
Therefore, in order to make things work properly, we switch to proper
autoconf checks for cxxabi.h and execinfo.h, and only use the backtrace
functionality if both are provided.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
configure.ac | 2 ++
webrtc/base/checks.cc | 4 ++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index acbb3e2..ff4c752 100644
--- a/configure.ac
+++ b/configure.ac
@@ -45,6 +45,8 @@ AC_SUBST(GNUSTL_CFLAGS)
# Borrowed from gst-plugins-bad
AC_CHECK_HEADER(MobileCoreServices/MobileCoreServices.h, HAVE_IOS="yes", HAVE_IOS="no", [-])
+AC_CHECK_HEADERS([cxxabi.h execinfo.h])
+
# Based on gst-plugins-bad configure.ac and defines in
# <chromium source>/build/config/BUILDCONFIG.gn and
# webrtc/BUILD.gn
diff --git a/webrtc/base/checks.cc b/webrtc/base/checks.cc
index 49a31f2..05d23a6 100644
--- a/webrtc/base/checks.cc
+++ b/webrtc/base/checks.cc
@@ -16,7 +16,7 @@
#include <cstdio>
#include <cstdlib>
-#if defined(__GLIBCXX__) && !defined(__UCLIBC__)
+#if defined(HAVE_CXX_ABI_H) && defined(HAVE_EXECINFO_H)
#include <cxxabi.h>
#include <execinfo.h>
#endif
@@ -55,7 +55,7 @@ void PrintError(const char* format, ...) {
// to get usable symbols on Linux. This is copied from V8. Chromium has a more
// advanced stace trace system; also more difficult to copy.
void DumpBacktrace() {
-#if defined(__GLIBCXX__) && !defined(__UCLIBC__)
+#if defined(HAVE_CXX_ABI_H) && defined(HAVE_EXECINFO_H)
void* trace[100];
int size = backtrace(trace, sizeof(trace) / sizeof(*trace));
char** symbols = backtrace_symbols(trace, size);
--
2.7.4

View File

@@ -0,0 +1,21 @@
config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS
bool
default y if BR2_arm || BR2_i386 || BR2_x86_64
config BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING
bool "webrtc-audio-processing"
depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
# pthread_condattr_setclock
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
help
AudioProcessing library based on Google's implementation of
WebRTC.
http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/
comment "webrtc-audio-processing needs a toolchain w/ C++, NPTL, gcc >= 4.8"
depends on BR2_PACKAGE_WEBRTC_AUDIO_PROCESSING_ARCH_SUPPORTS
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL \
|| !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

View File

@@ -0,0 +1,2 @@
# Locally calculated
sha256 756e291d4f557d88cd50c4fe3b8454ec238362d22cedb3e6173240d90f0a80fa webrtc-audio-processing-0.3.tar.xz

View File

@@ -0,0 +1,21 @@
################################################################################
#
# webrtc-audio-processing
#
################################################################################
WEBRTC_AUDIO_PROCESSING_VERSION = 0.3
WEBRTC_AUDIO_PROCESSING_SOURCE = webrtc-audio-processing-$(WEBRTC_AUDIO_PROCESSING_VERSION).tar.xz
WEBRTC_AUDIO_PROCESSING_SITE = http://freedesktop.org/software/pulseaudio/webrtc-audio-processing
WEBRTC_AUDIO_PROCESSING_INSTALL_STAGING = YES
WEBRTC_AUDIO_PROCESSING_LICENSE = BSD-3-Clause
WEBRTC_AUDIO_PROCESSING_LICENSE_FILES = COPYING
# 0001-configure.ac-fix-architecture-detection.patch
# 0002-Proper-detection-of-cxxabi.h-and-execinfo.h.patch
WEBRTC_AUDIO_PROCESSING_AUTORECONF = YES
ifeq ($(BR2_SOFT_FLOAT),y)
WEBRTC_AUDIO_PROCESSING_CONF_OPTS += --with-ns-mode=fixed
endif
$(eval $(autotools-package))