dnl # * ../spl/
dnl # * $LINUX
dnl #
+dnl # --with-zfs-devel=path
+dnl # - User provided directory where zfs development headers
+dnl # are located. This option is typically used when user
+dnl # uses rpm2cpio to unpack src rpm.
+dnl # Assumes layout of:
+dnl # ${zfs-devel-path}/usr/include/libzfs
+dnl # ${zfs-devel-path}/usr/include/libspl
+dnl # ${zfs-devel-path}/lib64/libzfs.so.* or
+dnl # ${zfs-devel-path}/lib/libzfs.so.*
+dnl #
dnl # --with-zfs=path - Enable zfs support and use the zfs headers in the
dnl # provided path. No autodetection is performed and
dnl # if no headers are found this is a fatal error.
AC_SUBST(ZFS_SYMBOLS)
])
+AC_DEFUN([LB_ZFS_DEVEL], [
+ AC_ARG_WITH([zfs-devel],
+ [AS_HELP_STRING([--with-zfs-devel=PATH],
+ [Path to zfs development headers])],
+ [zfsdevel="$withval"])
+
+ AC_MSG_CHECKING([user provided zfs devel headers])
+ AS_IF([test ! -z "${zfsdevel}"], [
+ AS_IF([test -d "${zfsdevel}/usr/include/libspl" && test -d "${zfsdevel}/usr/include/libzfs"], [
+ zfsinc="-I $zfsdevel/usr/include/libspl -I $zfsdevel/usr/include/libzfs"
+ zfslib="-L$zfsdevel/usr/lib64 -L$zfsdevel/usr/lib -L$zfsdevel/lib64 -L$zfsdevel/lib"
+ ], [
+ AC_MSG_ERROR([Path to development headers directory does not exist])
+ ])
+ ])
+ AC_MSG_RESULT([$zfsinc])
+])
+
AC_DEFUN([LB_ZFS_USER], [
dnl #
dnl # Detect user space zfs development headers.
dnl #
AC_MSG_CHECKING([zfs devel headers])
- AS_IF([test -d /usr/include/libzfs && test -d /usr/include/libspl], [
- zfslib="-I /usr/include/libspl -I /usr/include/libzfs"
- ], [
- zfslib="[Not found]"
- enable_zfs=no
+ AS_IF([test -z "${zfsinc}"], [
+ AS_IF([test -e "${zfssrc}/include/libzfs.h" && test -e "${zfssrc}/lib/libspl/include"], [
+ zfsinc="-I $zfssrc/lib/libspl/include -I $zfssrc/include"
+ zfslib="-L$zfssrc/lib/libzfs/.libs/"
+ ], [test -d /usr/include/libzfs && test -d /usr/include/libspl], [
+ zfsinc="-I/usr/include/libspl -I /usr/include/libzfs"
+ zfslib=""
+ ], [
+ zfsinc="[Not Found]"
+ zfslib=""
+ enable_zfs=no
+ ])
])
- AC_MSG_RESULT([$zfslib])
+ AC_MSG_RESULT([$zfsinc])
- ZFS_LIBZFS_INCLUDE=${zfslib}
+ ZFS_LIBZFS_INCLUDE=${zfsinc}
+ ZFS_LIBZFS_LDFLAGS="-lzfs ${zfslib}"
AC_SUBST(ZFS_LIBZFS_INCLUDE)
+ AC_SUBST(ZFS_LIBZFS_LDFLAGS)
])
-AC_DEFUN([LB_PATH_ZFS], [
+AC_DEFUN([LB_CONFIG_ZFS], [
AC_ARG_WITH([zfs],
[AS_HELP_STRING([--with-zfs=PATH], [Path to zfs source])],
[
zfssrc="$withval"
])
], [
- AS_IF([test x$enable_server = xyes &&
- test x$enable_dist = xno], [
+ AS_IF([test x$enable_server != xno], [
require_zfs=no
enable_zfs=yes
], [
LB_SPL
LB_ZFS
])
-
+ LB_ZFS_DEVEL
LB_ZFS_USER
dnl #
])
])
- AM_CONDITIONAL(ZFS_ENABLED, test x$enable_zfs = xyes)
+ AS_IF([test "x$enable_zfs" = xyes], [
+ LB_CHECK_COMPILE([if zfs defines dsl_pool_config_enter/exit],
+ dsl_pool_config_enter, [
+ #include <sys/dsl_pool.h>
+ ],[
+ dsl_pool_config_enter(NULL, FTAG);
+ ],[
+ AC_DEFINE(HAVE_DSL_POOL_CONFIG, 1,
+ [Have dsl_pool_config_enter/exit in ZFS])
+ ])
+ LB_CHECK_COMPILE([if zfs defines dsl_sync_task_do_nowait],
+ dsl_sync_task_do_nowait, [
+ #include <sys/dsl_synctask.h>
+ ],[
+ dsl_sync_task_do_nowait(NULL, NULL, NULL, NULL, NULL, 0, NULL);
+ ],[
+ AC_DEFINE(HAVE_DSL_SYNC_TASK_DO_NOWAIT, 1,
+ [Have dsl_sync_task_do_nowait in ZFS])
+ ])
+ LB_CHECK_COMPILE([if zfs defines sa_spill_alloc],
+ sa_spill_alloc, [
+ #include <sys/kmem.h>
+ #include <sys/sa.h>
+ ],[
+ void *ptr;
+
+ ptr = sa_spill_alloc(KM_SLEEP);
+ sa_spill_free(ptr);
+ ],[
+ AC_DEFINE(HAVE_SA_SPILL_ALLOC, 1,
+ [Have sa_spill_alloc in ZFS])
+ ])
+ ])
+
+ AM_CONDITIONAL(ZFS_ENABLED, [test "x$enable_zfs" = xyes])
])