package/libcurl: fix build when !BR2_TOOLCHAIN_HAS_SYNC_1
On platform that do not provide __atomic_exchange_1(), and when libatomic is not available (e.g., threads support disabled) link of libcurl.so fails. To solve this use an indirect way to make HAVE_ATOMIC undefined. Add an upstream patch for checking the stdatomic.h header, and seed the 'no' answer. Fixes: http://autobuild.buildroot.net/results/8f695d4dbb91cfde8e93ab38e837b0a0042b986b/ http://autobuild.buildroot.net/results/3b4712b0ace52da1650e88cdaafb6a20be135464/ Cc: Matt Weber <matthew.weber@collins.com> Signed-off-by: Baruch Siach <baruch@tkos.co.il> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
parent
96a6b3bf39
commit
f81454db59
@ -0,0 +1,70 @@
|
||||
From a68074b5db2a1fb637853b808e5b263c2ce9cbdd Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Stenberg <daniel@haxx.se>
|
||||
Date: Tue, 28 Jun 2022 08:37:22 +0200
|
||||
Subject: [PATCH] configure: check for the stdatomic.h header in configure
|
||||
|
||||
... and only set HAVE_ATOMIC if that header exists since we use
|
||||
typedefes set in it.
|
||||
|
||||
Reported-by: Ryan Schmidt
|
||||
Fixes #9059
|
||||
Closes #9060
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Upstream status: commit a68074b5db2a1fb637853b808e5b263c2ce9cbdd
|
||||
|
||||
m4/curl-functions.m4 | 36 +++++++++++++++++++-----------------
|
||||
1 file changed, 19 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4
|
||||
index ec406f56aed8..f3e12a53a9fd 100644
|
||||
--- a/m4/curl-functions.m4
|
||||
+++ b/m4/curl-functions.m4
|
||||
@@ -6570,24 +6570,26 @@ AC_DEFUN([CURL_COVERAGE],[
|
||||
])
|
||||
|
||||
dnl CURL_ATOMIC
|
||||
-dnl --------------------------------------------------
|
||||
-dnl Check if _Atomic works
|
||||
+dnl -------------------------------------------------------------
|
||||
+dnl Check if _Atomic works. But only check if stdatomic.h exists.
|
||||
dnl
|
||||
AC_DEFUN([CURL_ATOMIC],[
|
||||
- AC_MSG_CHECKING([if _Atomic is available])
|
||||
- AC_COMPILE_IFELSE([
|
||||
- AC_LANG_PROGRAM([[
|
||||
- $curl_includes_unistd
|
||||
- ]],[[
|
||||
- _Atomic int i = 0;
|
||||
- ]])
|
||||
- ],[
|
||||
- AC_MSG_RESULT([yes])
|
||||
- AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
|
||||
- [Define to 1 if you have _Atomic support.])
|
||||
- tst_atomic="yes"
|
||||
- ],[
|
||||
- AC_MSG_RESULT([no])
|
||||
- tst_atomic="no"
|
||||
+ AC_CHECK_HEADERS(stdatomic.h, [
|
||||
+ AC_MSG_CHECKING([if _Atomic is available])
|
||||
+ AC_COMPILE_IFELSE([
|
||||
+ AC_LANG_PROGRAM([[
|
||||
+ $curl_includes_unistd
|
||||
+ ]],[[
|
||||
+ _Atomic int i = 0;
|
||||
+ ]])
|
||||
+ ],[
|
||||
+ AC_MSG_RESULT([yes])
|
||||
+ AC_DEFINE_UNQUOTED(HAVE_ATOMIC, 1,
|
||||
+ [Define to 1 if you have _Atomic support.])
|
||||
+ tst_atomic="yes"
|
||||
+ ],[
|
||||
+ AC_MSG_RESULT([no])
|
||||
+ tst_atomic="no"
|
||||
+ ])
|
||||
])
|
||||
])
|
||||
--
|
||||
2.35.1
|
||||
|
@ -15,6 +15,8 @@ LIBCURL_LICENSE_FILES = COPYING
|
||||
LIBCURL_CPE_ID_VENDOR = haxx
|
||||
LIBCURL_CPE_ID_PRODUCT = libcurl
|
||||
LIBCURL_INSTALL_STAGING = YES
|
||||
# We are patching configure.ac
|
||||
LIBCURL_AUTORECONF = YES
|
||||
|
||||
# We disable NTLM support because it uses fork(), which doesn't work
|
||||
# on non-MMU platforms. Moreover, this authentication method is
|
||||
@ -36,6 +38,12 @@ ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
|
||||
LIBCURL_CONF_OPTS += LIBS=-latomic
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_1),)
|
||||
# Even though stdatomic.h does exist, link fails for __atomic_exchange_1
|
||||
# Work around this by pretending atomics aren't available.
|
||||
LIBCURL_CONF_ENV += ac_cv_header_stdatomic_h=no
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LIBCURL_VERBOSE),y)
|
||||
LIBCURL_CONF_OPTS += --enable-verbose
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user