mirror of
https://github.com/openzfs/zfs.git
synced 2025-10-01 19:56:28 +00:00

This include updating all the Makefile.am to have the correct include paths and libraries. In addition, the zlib m4 macro was updated to more correctly integrate with the Makefiles. And I added two new macros libblkid and libuuid which will be needed by subsequent commits for blkid and uuid support respectively. The blkid support is optional, the uuid support is mandatory for libefi.
95 lines
2.4 KiB
Plaintext
95 lines
2.4 KiB
Plaintext
dnl #
|
|
dnl # Check for ZFS support in libblkid. This test needs to check
|
|
dnl # more than if the library exists because we expect there are
|
|
dnl # at least 3 flavors of the library out in the wild:
|
|
dnl #
|
|
dnl # 1) blkid which has no ZFS support
|
|
dnl # 2) blkid with ZFS support and a flawed method of probing
|
|
dnl # 3) blkid with ZFS support and a working method of probing
|
|
dnl #
|
|
dnl # To handle this the check first validates that there is a version
|
|
dnl # of the library installed. If there is it creates a simulated
|
|
dnl # ZFS filesystem and then links a small test app which attempts
|
|
dnl # to detect the simualated filesystem type. If it correctly
|
|
dnl # identifies the filesystem as ZFS we can safely assume case 3).
|
|
dnl # Otherwise we disable blkid support and resort to manual probing.
|
|
dnl #
|
|
AC_DEFUN([ZFS_AC_CONFIG_USER_LIBBLKID], [
|
|
AC_ARG_WITH([blkid],
|
|
[AS_HELP_STRING([--with-blkid],
|
|
[support blkid caching @<:@default=check@:>@])],
|
|
[],
|
|
[with_blkid=check])
|
|
|
|
LIBBLKID=
|
|
AS_IF([test "x$with_blkid" != xno],
|
|
[
|
|
AC_CHECK_LIB([blkid], [blkid_get_cache],
|
|
[
|
|
AC_MSG_CHECKING([for blkid zfs support])
|
|
|
|
ZFS_DEV=`mktemp`
|
|
dd if=/dev/zero of=$ZFS_DEV bs=1024k count=8 \
|
|
>/dev/null 2>/dev/null
|
|
echo -en "\x0c\xb1\xba\0\0\0\0\0" | \
|
|
dd of=$ZFS_DEV bs=1k count=8 \
|
|
seek=132 conv=notrunc &>/dev/null \
|
|
>/dev/null 2>/dev/null
|
|
|
|
saved_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="-lblkid"
|
|
|
|
AC_RUN_IFELSE(AC_LANG_PROGRAM(
|
|
[
|
|
#include <stdio.h>
|
|
#include <blkid/blkid.h>
|
|
],
|
|
[
|
|
blkid_cache cache;
|
|
char *value;
|
|
|
|
if (blkid_get_cache(&cache, NULL) < 0)
|
|
return 1;
|
|
|
|
value = blkid_get_tag_value(cache, "TYPE",
|
|
"$ZFS_DEV");
|
|
if (!value) {
|
|
blkid_put_cache(cache);
|
|
return 2;
|
|
}
|
|
|
|
if (strcmp(value, "zfs")) {
|
|
free(value);
|
|
blkid_put_cache(cache);
|
|
return 3;
|
|
}
|
|
|
|
free(value);
|
|
blkid_put_cache(cache);
|
|
]),
|
|
[
|
|
rm -f $ZFS_DEV
|
|
AC_MSG_RESULT([yes])
|
|
AC_SUBST([LIBBLKID], ["-lblkid"])
|
|
AC_DEFINE([HAVE_LIBBLKID], 1,
|
|
[Define if you have libblkid])
|
|
],
|
|
[
|
|
rm -f $ZFS_DEV
|
|
AC_MSG_RESULT([no])
|
|
AS_IF([test "x$with_blkid" != xcheck],
|
|
[AC_MSG_FAILURE(
|
|
[--with-blkid given but unavailable])])
|
|
])
|
|
|
|
LDFLAGS="$saved_LDFLAGS"
|
|
],
|
|
[
|
|
AS_IF([test "x$with_blkid" != xcheck],
|
|
[AC_MSG_FAILURE(
|
|
[--with-blkid given but unavailable])])
|
|
]
|
|
[])
|
|
])
|
|
])
|