]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix build on RISC-V (#856)
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 8 Jul 2021 17:06:49 +0000 (17:06 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Thu, 8 Jul 2021 18:31:46 +0000 (18:31 +0000)
Compiling on RISC-V (without an explicit -latomic) fails with

    /usr/riscv64-linux-gnu/include/c++/10/ostream:611:
    undefined reference to __atomic_compare_exchange_1

Use std::atomic<uint8_t>::exchange() to detect whether -latomic
implements 1-byte compare-and-exchange API used by Squid.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
configure.ac

index 85018e65a8c05b7c955b1b9f0714feb98779d1b3..3ce45e1f3699cee9c83c7b3744a0a1a71ccd2381 100644 (file)
@@ -450,8 +450,11 @@ AC_DEFUN([LIBATOMIC_CHECKER],[
 #include <atomic>
 #include <cstdint>
       int
-      main(int, char **) {
-          return std::atomic<uint64_t>{}.is_lock_free() ? 0 : 1;
+      main(int argc, char **) {
+          return (
+              std::atomic<uint8_t>(uint8_t(argc)).exchange(0) &&
+              std::atomic<uint64_t>{}.is_lock_free()
+              ) ? 0 : 1;
       }
   ]])],[
     AC_MSG_RESULT(yes)