summaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/libusb/libusb1
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-support/libusb/libusb1')
-rw-r--r--meta/recipes-support/libusb/libusb1/0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch46
-rw-r--r--meta/recipes-support/libusb/libusb1/no-dll.patch19
-rwxr-xr-xmeta/recipes-support/libusb/libusb1/run-ptest29
3 files changed, 75 insertions, 19 deletions
diff --git a/meta/recipes-support/libusb/libusb1/0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch b/meta/recipes-support/libusb/libusb1/0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch
new file mode 100644
index 0000000000..3c223e0822
--- /dev/null
+++ b/meta/recipes-support/libusb/libusb1/0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch
@@ -0,0 +1,46 @@
+From 95e601ce116dd46ea7915c171976b85ea0905d58 Mon Sep 17 00:00:00 2001
+From: Lonnie Abelbeck <lonnie@abelbeck.com>
+Date: Sun, 8 May 2022 14:05:56 -0500
+Subject: [PATCH] configure.ac: Link with -latomic only if no atomic builtins
+
+Follow-up to 561dbda, a check of GCC atomic builtins needs to be done
+first.
+
+I'm no autoconf guru, but using this:
+https://github.com/mesa3d/mesa/blob/0df485c285b73c34ba9062f0c27e55c3c702930d/configure.ac#L469
+as inspiration, I created a pre-check before calling AC_SEARCH_LIBS(...)
+
+Fixes #1135
+Closes #1139
+Upstream-Status: Backport [https://github.com/kraj/libusb/commit/95e601ce116dd46ea7915c171976b85ea0905d58]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ configure.ac | 16 +++++++++++++++-
+ libusb/version_nano.h | 2 +-
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -153,7 +153,21 @@ if test "x$platform" = xposix; then
+ AC_SEARCH_LIBS([pthread_create], [pthread],
+ [test "x$ac_cv_search_pthread_create" != "xnone required" && AC_SUBST(THREAD_LIBS, [-lpthread])],
+ [], [])
+- AC_SEARCH_LIBS([__atomic_fetch_add_4], [atomic])
++ dnl Check for new-style atomic builtins. We first check without linking to -latomic.
++ AC_MSG_CHECKING(whether __atomic_load_n is supported)
++ AC_LINK_IFELSE([AC_LANG_SOURCE([[
++ #include <stdint.h>
++ int main() {
++ struct {
++ uint64_t *v;
++ } x;
++ return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) &
++ (int)__atomic_add_fetch(x.v, (uint64_t)1, __ATOMIC_ACQ_REL);
++ }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=yes, GCC_ATOMIC_BUILTINS_SUPPORTED=no)
++ AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_SUPPORTED)
++ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" != xyes; then
++ AC_SEARCH_LIBS([__atomic_fetch_add_4], [atomic])
++ fi
+ elif test "x$platform" = xwindows; then
+ AC_DEFINE([PLATFORM_WINDOWS], [1], [Define to 1 if compiling for a Windows platform.])
+ else
diff --git a/meta/recipes-support/libusb/libusb1/no-dll.patch b/meta/recipes-support/libusb/libusb1/no-dll.patch
deleted file mode 100644
index 6e6bb83d1f..0000000000
--- a/meta/recipes-support/libusb/libusb1/no-dll.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-As all invokes all-recursive which uses sub-makes to invoke all-am, the
-resulting makefile wants to build libusb-1.0.la twice. In non-parallel builds
-the second attempt is skipped as the target already exists, but in highly
-parallel builds it's likely that two makes will be building libusb-1.0.la at the
-same time.
-
-Solve this by removing the explicit all target, which as libusb-1.0.dll isn't
-built under Linux is redundant anyway.
-
-Upstream-Status: Pending
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/libusb/Makefile.am b/libusb/Makefile.am
-index 0cab0a0..c880213 100644
---- a/libusb/Makefile.am
-+++ b/libusb/Makefile.am
-@@ -1,2 +0,0 @@
--all: libusb-1.0.la libusb-1.0.dll
--
diff --git a/meta/recipes-support/libusb/libusb1/run-ptest b/meta/recipes-support/libusb/libusb1/run-ptest
new file mode 100755
index 0000000000..eaa47a2bc4
--- /dev/null
+++ b/meta/recipes-support/libusb/libusb1/run-ptest
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+echo
+echo "---------------------------- libusb1 tests ---------------------------"
+echo
+
+./stress | { \
+while read -r str
+do
+ echo "$str"
+ if [ "${str#*Starting test run:}" != "$str" ]
+ then
+ name="${str#Starting test run: }"
+ name="${name%...}"
+ else
+ case "$str" in
+ "Success (0)")
+ echo "PASS: $name"
+ ;;
+ "Failure (1)" | "Error (2)")
+ echo "FAIL: $name"
+ ;;
+ "Skip (3)")
+ echo "SKIP: $name"
+ ;;
+ esac
+ fi
+done
+}