mirror of
https://git.busybox.net/buildroot.git
synced 2025-01-26 22:33:27 +08:00
squid: rework atomic handling
squid can use the __sync built-ins when available, but uses an AC_TRY_RUN autoconf tests to check their availability, which isn't compatible with cross-compilation. Due to this, squid.mk is already hinting the configure script about this by passing squid_cv_gnu_atomics=yes/no depending on the availability of atomic operations. So far, squid.mk was assuming that BR2_ARCH_HAS_ATOMICS && BR2_ARCH_IS_64 was needed, since 8 bytes __sync built-ins are used. However, this was a bit too restrictive, since certain 32 bits architectures (ARM, x86) do provide 8 bytes __sync built-ins. So, instead of using BR2_ARCH_HAS_ATOMICS, we now rely on BR2_TOOLCHAIN_HAS_SYNC_4 and BR2_TOOLCHAIN_HAS_SYNC_8, since both 4 bytes and 8 bytes __sync built-ins are tested by the autoconf test. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
This commit is contained in:
parent
e64573c47f
commit
55dc90db2e
@ -41,12 +41,10 @@ SQUID_CONF_OPTS = \
|
||||
--with-swapdir=/var/cache/squid/ \
|
||||
--with-default-user=squid
|
||||
|
||||
# Atomics in Squid use __sync_add_and_fetch_8, i.e a 64 bits atomic
|
||||
# operation. This atomic intrinsic is only available natively on
|
||||
# 64-bit architectures that have atomic operations. On 32-bit
|
||||
# architectures, it would be provided by libatomic, but Buildroot
|
||||
# typically doesn't provide it.
|
||||
ifeq ($(BR2_ARCH_HAS_ATOMICS)$(BR2_ARCH_IS_64),yy)
|
||||
# Atomics in Squid use __sync built-ins on 4 and 8 bytes. However, the
|
||||
# configure script tests them using AC_TRY_RUN, so we have to give
|
||||
# some hints.
|
||||
ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4)$(BR2_TOOLCHAIN_HAS_SYNC_8),yy)
|
||||
SQUID_CONF_ENV += squid_cv_gnu_atomics=yes
|
||||
else
|
||||
SQUID_CONF_ENV += squid_cv_gnu_atomics=no
|
||||
|
Loading…
Reference in New Issue
Block a user