Backport a fix from 1.0.27 so we only link atomic if no atomic builtins
are available.

Signed-off-by: Otavio Salvador <ota...@ossystems.com.br>
---

Changes in v2:
- add signed-off-by

 ...k-with-latomic-only-if-no-atomic-bui.patch | 53 +++++++++++++++++++
 meta/recipes-support/libusb/libusb1_1.0.26.bb |  1 +
 2 files changed, 54 insertions(+)
 create mode 100644 
meta/recipes-support/libusb/libusb1/0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch

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..5c49cbb8a7
--- /dev/null
+++ 
b/meta/recipes-support/libusb/libusb1/0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch
@@ -0,0 +1,53 @@
+From a6890a6a9a8f88b567631874e209aaadc79e28e5 Mon Sep 17 00:00:00 2001
+From: Lonnie Abelbeck <lon...@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(...)
+
+Upstream-Status: Backport [1.0.27]
+
+Fixes #1135
+Closes #1139
+(cherry picked from commit 95e601ce116dd46ea7915c171976b85ea0905d58)
+
+Signed-off-by: Otavio Salvador <ota...@ossystems.com.br>
+---
+ configure.ac | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index d4f12510..96787500 100644
+--- 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
+-- 
+2.37.0
+
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"
 BBCLASSEXTEND = "native nativesdk"
 
 SRC_URI = 
"https://github.com/libusb/libusb/releases/download/v${PV}/libusb-${PV}.tar.bz2 
\
+           
file://0001-configure.ac-Link-with-latomic-only-if-no-atomic-bui.patch \
            file://run-ptest \
           "
 
-- 
2.37.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#168579): 
https://lists.openembedded.org/g/openembedded-core/message/168579
Mute This Topic: https://lists.openembedded.org/mt/92653354/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to