kumquat-buildroot/package/iperf3/0001-Check-and-link-libatomic-if-needed.patch
Julien Olivain f10488a411 package/iperf3: fix build with libatomic
Commit 9f94b3b354 "package/iperf3: bump to version 3.16" updated
the package but forgot to reflect a breaking change mentioned in
the release note [1], "iperf3 now requires pthreads and C atomic
variables to compile and run".

When the toolchain has no atomic support, or the libatomic is not
added in the linker flags, the compilation now fail with output:

    arm-buildroot-linux-gnueabi/bin/ld: ./.libs/libiperf.so: undefined reference to '__atomic_load_8'

This issue can be seen when running the iperf3 runtime test, with
command:

    support/testing/run-tests \
        -d dl -o output_test \
        tests.package.test_iperf3

This commit fixes the issue by adding a dependency on
BR2_TOOLCHAIN_HAS_ATOMIC and by adding an upstream patch to detect
if linking to libatomic is needed.

Fixes: [2]

[1] https://github.com/esnet/iperf/releases/tag/3.16
[2] https://gitlab.com/buildroot.org/buildroot/-/jobs/6466933622

Signed-off-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-04-01 22:10:22 +02:00

43 lines
1.3 KiB
Diff

From bbf710e77e4a0438a2d995fd69b472e5ff054c69 Mon Sep 17 00:00:00 2001
From: Jan Palus <jpalus@fastmail.com>
Date: Sun, 3 Dec 2023 12:14:05 +0100
Subject: [PATCH] Check and link libatomic if needed
Some architectures without native support for 64-bit atomics need
linking with libatomic.
Signed-off-by: Julien Olivain <ju.o@free.fr>
Upstream: https://github.com/esnet/iperf/commit/1511e9f85b548891ea53d4e378903344df1fd31e
---
configure.ac | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 2594b39..ad7eaf1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -92,7 +92,19 @@ CXX="$PTHREAD_CXX"
])
# Atomics
-AC_CHECK_HEADERS([stdatomic.h])
+AC_CHECK_HEADERS([stdatomic.h],
+ [AC_MSG_CHECKING([whether libatomic is required])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdatomic.h>]], [[atomic_uint_fast64_t i; i++;]])],
+ [AC_MSG_RESULT([no])],
+ [save_LIBS="$LIBS"
+ LIBS="$LIBS -latomic"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdatomic.h>]], [[atomic_uint_fast64_t i; i++;]])],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_ERROR([failed to find working configuration with atomics])]
+ )]
+ )],
+ []
+)
# Check for poll.h (it's in POSIX so everyone should have it?)
AC_CHECK_HEADERS([poll.h])
--
2.44.0