diff options
Diffstat (limited to 'config/user-libatomic.m4')
-rw-r--r-- | config/user-libatomic.m4 | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/config/user-libatomic.m4 b/config/user-libatomic.m4 new file mode 100644 index 000000000..14a60bbea --- /dev/null +++ b/config/user-libatomic.m4 @@ -0,0 +1,34 @@ +dnl # +dnl # If -latomic exists, it's needed for __atomic intrinsics. +dnl # +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 # +AC_DEFUN([ZFS_AC_CONFIG_USER_LIBATOMIC], [ + AC_MSG_CHECKING([whether -latomic is present]) + + saved_libs="$LIBS" + LIBS="$LIBS -latomic" + + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [ + LIBATOMIC_LIBS="-latomic" + AC_MSG_RESULT([yes]) + ], [ + LIBATOMIC_LIBS="" + AC_MSG_RESULT([no]) + ]) + + LIBS="$saved_libs" + AC_SUBST([LIBATOMIC_LIBS]) +]) |