Whamcloud - gitweb
LU-12214 build: fix make rpms
[fs/lustre-release.git] / config / lustre-build-zfs.m4
index 54d788f..f632df1 100644 (file)
@@ -111,7 +111,7 @@ AC_DEFUN([LB_SPL], [
        dnl #
        AC_MSG_CHECKING([spl build directory])
        AS_IF([test -z "$splobj"], [
-               last_spl_obj_dir=$(ls -d ${splsrc}/[[0-9]]*/ | tail -n 1 | sed 's|/$||')
+               last_spl_obj_dir=$(ls -d ${splsrc}/[[0-9]]*/  2> /dev/null | tail -n 1 | sed 's|/$||')
                AS_IF([test "${splsrc}" = "${spldkms}/source"], [
                        AS_IF([test -e "${spldkms}/${LINUXRELEASE}/${target_cpu}/spl_config.h"], [
                                splobj=${spldkms}/${LINUXRELEASE}/${target_cpu}
@@ -229,7 +229,7 @@ AC_DEFUN([LB_ZFS], [
        dnl #
        AC_MSG_CHECKING([zfs build directory])
        AS_IF([test -z "$zfsobj"], [
-               last_zfs_obj_dir=$(ls -d ${zfssrc}/[[0-9]]*/ | tail -n 1 | sed 's|/$||')
+               last_zfs_obj_dir=$(ls -d ${zfssrc}/[[0-9]]*/ 2> /dev/null | tail -n 1 | sed 's|/$||')
                AS_IF([test "${zfssrc}" = "${zfsdkms}/source"], [
                        AS_IF([test -e "${zfsdkms}/${LINUXRELEASE}/${target_cpu}/zfs_config.h"], [
                                zfsobj=${zfsdkms}/${LINUXRELEASE}/${target_cpu}
@@ -348,21 +348,26 @@ AC_DEFUN([LB_CONFIG_ZFS], [
                [AS_HELP_STRING([--with-zfs=PATH], [Path to zfs source])],
                [
                        AS_IF([test x$withval = xno], [
+                               enable_spl=no
                                enable_zfs=no
                                require_zfs=no
                        ], [test x$withval = xyes], [
+                               enable_spl=yes
                                enable_zfs=yes
                                require_zfs=yes
                        ], [
+                               enable_spl=yes
                                enable_zfs=yes
                                require_zfs=yes
                                zfssrc="$withval"
                        ])
                ], [
                        AS_IF([test x$enable_server != xno], [
+                               enable_spl=yes
                                require_zfs=no
                                enable_zfs=yes
                        ], [
+                               enable_spl=no
                                require_zfs=no
                                enable_zfs=no
                        ])
@@ -373,13 +378,35 @@ AC_DEFUN([LB_CONFIG_ZFS], [
 
        AS_IF([test x$enable_zfs = xyes], [
                AS_IF([test x$enable_modules = xyes], [
-                       LB_SPL
                        LB_ZFS
                ])
                LB_ZFS_DEVEL
                LB_ZFS_USER
 
                dnl #
+               dnl # Define zfs source code version
+               dnl #
+               ZFS_MAJOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\1/'])
+               ZFS_MINOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\2/'])
+               ZFS_PATCH=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\3/'])
+               ZFS_FIX=$(echo $zfsver   | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\5/'])
+               AS_IF([test -z "$ZFS_FIX"], [ZFS_FIX="0"])
+
+               AC_DEFINE_UNQUOTED([ZFS_MAJOR], [$ZFS_MAJOR], [zfs major version])
+               AC_DEFINE_UNQUOTED([ZFS_MINOR], [$ZFS_MINOR], [zfs minor version])
+               AC_DEFINE_UNQUOTED([ZFS_PATCH], [$ZFS_PATCH], [zfs patch version])
+               AC_DEFINE_UNQUOTED([ZFS_FIX],   [$ZFS_FIX],   [zfs fix version])
+
+               dnl #
+               dnl # SPL is only needed if ZFS is prior to 0.8.0
+               dnl #
+               AS_IF([test x$enable_modules = xyes && test $ZFS_MAJOR -eq 0 && test $ZFS_MINOR -lt 8], [
+                       LB_SPL
+               ],[
+                       enable_spl=no
+               ])
+
+               dnl #
                dnl # enable_zfs will be set to no in LB_SPL or LB_ZFS if
                dnl # one of more of the build requirements is not met.
                dnl #
@@ -408,21 +435,6 @@ your distribution.
                ])
        ])
 
-       dnl #
-       dnl # Define zfs source code version
-       dnl #
-       AS_IF([test x$enable_zfs = xyes], [
-               ZFS_MAJOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\1/'])
-               ZFS_MINOR=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\2/'])
-               ZFS_PATCH=$(echo $zfsver | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\3/'])
-               ZFS_FIX=$(echo $zfsver   | sed -re ['s/([0-9]+)\.([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\5/'])
-               AS_IF([test -z "$ZFS_FIX"], [ZFS_FIX="0"])
-
-               AC_DEFINE_UNQUOTED([ZFS_MAJOR], [$ZFS_MAJOR], [zfs major version])
-               AC_DEFINE_UNQUOTED([ZFS_MINOR], [$ZFS_MINOR], [zfs minor version])
-               AC_DEFINE_UNQUOTED([ZFS_PATCH], [$ZFS_PATCH], [zfs patch version])
-               AC_DEFINE_UNQUOTED([ZFS_FIX],   [$ZFS_FIX],   [zfs fix version])
-       ])
 
        AS_IF([test "x$enable_zfs" = xyes], [
                LB_CHECK_COMPILE([if zfs defines dsl_pool_config_enter/exit],
@@ -536,15 +548,24 @@ your distribution.
                dnl #
                dnl # ZFS 0.7.0 feature: MULTIHOST
                dnl #
-               LB_CHECK_COMPILE([if ZFS has multihost protection],
-               spa_multihost, [
-                       #include <sys/spa.h>
-               ],[
+               restore_CFLAGS=$CFLAGS
+               CFLAGS="$CFLAGS $ZFS_LIBZFS_INCLUDE -Werror"
+               AC_MSG_CHECKING([[if ZFS has multihost protection]])
+               AC_COMPILE_IFELSE([
+                 AC_LANG_PROGRAM(
+                 [[
+                   #define _LARGEFILE64_SOURCE 1
+                   #include <sys/sysmacros.h>
+                   #include <sys/spa.h>
+                 ]], [[
                        spa_multihost(NULL);
-               ],[
-                       AC_DEFINE(HAVE_ZFS_MULTIHOST, 1,
-                               [Have multihost protection in ZFS])
-               ])
+                 ]])
+                 ],[
+                 AC_DEFINE(HAVE_ZFS_MULTIHOST, 1,
+                       [Have multihost protection in ZFS])
+                 spa_multihost_fn="yes"],[spa_multihost_fn="no"]),
+               AC_MSG_RESULT([$spa_multihost_fn])
+               CFLAGS=$restore_CFLAGS
                dnl #
                dnl # ZFS 0.7.x adds new method zap_lookup_by_dnode
                dnl #
@@ -716,4 +737,5 @@ your distribution.
                AC_SUBST(ENABLE_ZFS, no)
        ])
        AM_CONDITIONAL(ZFS_ENABLED, [test "x$enable_zfs" = xyes])
+       AM_CONDITIONAL(SPL_ENABLED, [test "x$enable_spl" = xyes])
 ])