]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
libusb1: Link with latomic only if compiler has no atomic builtins
authorKhem Raj <raj.khem@gmail.com>
Sat, 21 Jan 2023 01:23:45 +0000 (17:23 -0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 24 Jan 2023 22:06:48 +0000 (22:06 +0000)
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.

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>
meta/recipes-support/libusb/libusb1/0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch [new file with mode: 0644]
meta/recipes-support/libusb/libusb1_1.0.26.bb

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 (file)
index 0000000..3c223e0
--- /dev/null
@@ -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
index 7371faf0178f802df386a990b643a7f0060f6fa6..301e60c14f94da9e4641f4fb5b152f3b664a5e54 100644 (file)
@@ -11,6 +11,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=fbc093901857fcd118f065f900982c24"
 BBCLASSEXTEND = "native nativesdk"
 
 SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/libusb-${PV}.tar.bz2 \
+           file://0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch \
            file://run-ptest \
           "