summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2023-01-20 17:23:45 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-02-04 23:32:20 +0000
commit166a865b016ce6d85d9e872e14c3798e18960b2f (patch)
tree687f6d8cd02fc6ffe358d8cfdd5ebda09dc2d2cf
parent4fe11a56a750cc5ad13d069d8608c5a629169683 (diff)
downloadpoky-166a865b016ce6d85d9e872e14c3798e18960b2f.tar.gz
libusb1: Link with latomic only if compiler has no atomic builtins
This makes build use compiler to decide from where to get atomics instead of assuming that it should always come from libatomic, helps sharing build artifacts with OSes which may not have libatomic installed because it is not required on those hosts. (From OE-Core rev: c660d75211352a47797c3d400dd504759675a0f6) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit a026d9afcbe07a8324ca951ba3439373dcb3771c) Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-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_1.0.26.bb1
2 files changed, 47 insertions, 0 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 @@
1From 95e601ce116dd46ea7915c171976b85ea0905d58 Mon Sep 17 00:00:00 2001
2From: Lonnie Abelbeck <lonnie@abelbeck.com>
3Date: Sun, 8 May 2022 14:05:56 -0500
4Subject: [PATCH] configure.ac: Link with -latomic only if no atomic builtins
5
6Follow-up to 561dbda, a check of GCC atomic builtins needs to be done
7first.
8
9I'm no autoconf guru, but using this:
10https://github.com/mesa3d/mesa/blob/0df485c285b73c34ba9062f0c27e55c3c702930d/configure.ac#L469
11as inspiration, I created a pre-check before calling AC_SEARCH_LIBS(...)
12
13Fixes #1135
14Closes #1139
15Upstream-Status: Backport [https://github.com/kraj/libusb/commit/95e601ce116dd46ea7915c171976b85ea0905d58]
16Signed-off-by: Khem Raj <raj.khem@gmail.com>
17---
18 configure.ac | 16 +++++++++++++++-
19 libusb/version_nano.h | 2 +-
20 2 files changed, 16 insertions(+), 2 deletions(-)
21
22--- a/configure.ac
23+++ b/configure.ac
24@@ -153,7 +153,21 @@ if test "x$platform" = xposix; then
25 AC_SEARCH_LIBS([pthread_create], [pthread],
26 [test "x$ac_cv_search_pthread_create" != "xnone required" && AC_SUBST(THREAD_LIBS, [-lpthread])],
27 [], [])
28- AC_SEARCH_LIBS([__atomic_fetch_add_4], [atomic])
29+ dnl Check for new-style atomic builtins. We first check without linking to -latomic.
30+ AC_MSG_CHECKING(whether __atomic_load_n is supported)
31+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
32+ #include <stdint.h>
33+ int main() {
34+ struct {
35+ uint64_t *v;
36+ } x;
37+ return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) &
38+ (int)__atomic_add_fetch(x.v, (uint64_t)1, __ATOMIC_ACQ_REL);
39+ }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=yes, GCC_ATOMIC_BUILTINS_SUPPORTED=no)
40+ AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_SUPPORTED)
41+ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" != xyes; then
42+ AC_SEARCH_LIBS([__atomic_fetch_add_4], [atomic])
43+ fi
44 elif test "x$platform" = xwindows; then
45 AC_DEFINE([PLATFORM_WINDOWS], [1], [Define to 1 if compiling for a Windows platform.])
46 else
diff --git a/meta/recipes-support/libusb/libusb1_1.0.26.bb b/meta/recipes-support/libusb/libusb1_1.0.26.bb
index fd63e7adc2..ff3f0be7a5 100644
--- a/meta/recipes-support/libusb/libusb1_1.0.26.bb
+++ b/meta/recipes-support/libusb/libusb1_1.0.26.bb
@@ -11,6 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
11BBCLASSEXTEND = "native nativesdk" 11BBCLASSEXTEND = "native nativesdk"
12 12
13SRC_URI = "https://github.com/libusb/libusb/releases/download/v${PV}/libusb-${PV}.tar.bz2 \ 13SRC_URI = "https://github.com/libusb/libusb/releases/download/v${PV}/libusb-${PV}.tar.bz2 \
14 file://0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch \
14 file://run-ptest \ 15 file://run-ptest \
15 " 16 "
16 17