mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 01:51:00 +03:00
config/libatomic: require -latomic iff atomic.c doesn't link w/o it
In absence of LTO, and dynamic libatomic, la.so ends up in the needs section of every toolchain executable; some consider this an issue. Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #12345 Closes #12359
This commit is contained in:
parent
1325434b2d
commit
d9f0f1582c
@ -1,34 +1,28 @@
|
|||||||
dnl #
|
dnl #
|
||||||
dnl # If -latomic exists, it's needed for __atomic intrinsics.
|
dnl # If -latomic exists and atomic.c doesn't link without it,
|
||||||
dnl #
|
dnl # it's needed for __atomic intrinsics.
|
||||||
dnl # Some systems (like FreeBSD 13) don't have a libatomic at all because
|
|
||||||
dnl # their toolchain doesn't ship it – they obviously don't need it.
|
|
||||||
dnl #
|
|
||||||
dnl # Others (like sufficiently ancient CentOS) have one,
|
|
||||||
dnl # but terminally broken or unlinkable (e.g. it's a dangling symlink,
|
|
||||||
dnl # or a linker script that points to a nonexistent file) –
|
|
||||||
dnl # most arches affected by this don't actually need -latomic (and if they do,
|
|
||||||
dnl # then they should have libatomic that actually exists and links,
|
|
||||||
dnl # so don't fall into this category).
|
|
||||||
dnl #
|
|
||||||
dnl # Technically, we could check if the platform *actually* needs -latomic,
|
|
||||||
dnl # or if it has native support for all the intrinsics we use,
|
|
||||||
dnl # but it /really/ doesn't matter, and C11 recommends to always link it.
|
|
||||||
dnl #
|
dnl #
|
||||||
AC_DEFUN([ZFS_AC_CONFIG_USER_LIBATOMIC], [
|
AC_DEFUN([ZFS_AC_CONFIG_USER_LIBATOMIC], [
|
||||||
AC_MSG_CHECKING([whether -latomic is present])
|
AC_MSG_CHECKING([whether -latomic is required])
|
||||||
|
|
||||||
saved_libs="$LIBS"
|
saved_libs="$LIBS"
|
||||||
LIBS="$LIBS -latomic"
|
LIBS="$LIBS -latomic"
|
||||||
|
LIBATOMIC_LIBS=""
|
||||||
|
|
||||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [
|
||||||
LIBATOMIC_LIBS="-latomic"
|
LIBS="$saved_libs"
|
||||||
AC_MSG_RESULT([yes])
|
saved_cflags="$CFLAGS"
|
||||||
], [
|
CFLAGS="$CFLAGS -isystem lib/libspl/include"
|
||||||
LIBATOMIC_LIBS=""
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include "lib/libspl/atomic.c"], [])], [], [LIBATOMIC_LIBS="-latomic"])
|
||||||
AC_MSG_RESULT([no])
|
CFLAGS="$saved_cflags"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
if test -n "$LIBATOMIC_LIBS"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
|
||||||
LIBS="$saved_libs"
|
LIBS="$saved_libs"
|
||||||
AC_SUBST([LIBATOMIC_LIBS])
|
AC_SUBST([LIBATOMIC_LIBS])
|
||||||
])
|
])
|
||||||
|
Loading…
Reference in New Issue
Block a user