Make configure builtin-aware.
[zfs.git] / config / kernel.m4
index 7f07c90..2fb3fc9 100644 (file)
@@ -4,10 +4,12 @@ dnl #
 AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL
        ZFS_AC_SPL
+       ZFS_AC_TEST_MODULE
        ZFS_AC_KERNEL_CONFIG
        ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS
        ZFS_AC_KERNEL_TYPE_FMODE_T
        ZFS_AC_KERNEL_KOBJ_NAME_LEN
+       ZFS_AC_KERNEL_3ARG_BLKDEV_GET
        ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH
        ZFS_AC_KERNEL_OPEN_BDEV_EXCLUSIVE
        ZFS_AC_KERNEL_INVALIDATE_BDEV_ARGS
@@ -34,6 +36,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_BLK_RQ_POS
        ZFS_AC_KERNEL_BLK_RQ_SECTORS
        ZFS_AC_KERNEL_GET_DISK_RO
+       ZFS_AC_KERNEL_GET_GENDISK
        ZFS_AC_KERNEL_RQ_IS_SYNC
        ZFS_AC_KERNEL_RQ_FOR_EACH_SEGMENT
        ZFS_AC_KERNEL_CONST_XATTR_HANDLER
@@ -45,8 +48,11 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_NR_CACHED_OBJECTS
        ZFS_AC_KERNEL_FREE_CACHED_OBJECTS
        ZFS_AC_KERNEL_FALLOCATE
+       ZFS_AC_KERNEL_TRUNCATE_RANGE
        ZFS_AC_KERNEL_CREATE_UMODE_T
        ZFS_AC_KERNEL_AUTOMOUNT
+       ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE
+       ZFS_AC_KERNEL_CLEAR_INODE
        ZFS_AC_KERNEL_INSERT_INODE_LOCKED
        ZFS_AC_KERNEL_D_MAKE_ROOT
        ZFS_AC_KERNEL_D_OBTAIN_ALIAS
@@ -81,7 +87,7 @@ dnl #
 AC_DEFUN([ZFS_AC_MODULE_SYMVERS], [
        modpost=$LINUX/scripts/Makefile.modpost
        AC_MSG_CHECKING([kernel file name for module symbols])
-       AS_IF([test -f "$modpost"], [
+       AS_IF([test "x$enable_linux_builtin" != xyes -a -f "$modpost"], [
                AS_IF([grep -q Modules.symvers $modpost], [
                        LINUX_SYMBOLS=Modules.symvers
                ], [
@@ -186,7 +192,13 @@ AC_DEFUN([ZFS_AC_KERNEL], [
                ])
        ], [
                AC_MSG_RESULT([Not found])
-               AC_MSG_ERROR([*** Cannot find UTS_RELEASE definition.])
+               if test "x$enable_linux_builtin" != xyes; then
+                       AC_MSG_ERROR([*** Cannot find UTS_RELEASE definition.])
+               else
+                       AC_MSG_ERROR([
+       *** Cannot find UTS_RELEASE definition.
+       *** Please run 'make prepare' inside the kernel source tree.])
+               fi
        ])
 
        AC_MSG_RESULT([$kernsrcver])
@@ -308,6 +320,25 @@ AC_DEFUN([ZFS_AC_SPL], [
 ])
 
 dnl #
+dnl # Basic toolchain sanity check.
+dnl #
+AC_DEFUN([ZFS_AC_TEST_MODULE],
+       [AC_MSG_CHECKING([whether modules can be built])
+       ZFS_LINUX_TRY_COMPILE([],[],[
+               AC_MSG_RESULT([yes])
+       ],[
+               AC_MSG_RESULT([no])
+               if test "x$enable_linux_builtin" != xyes; then
+                       AC_MSG_ERROR([*** Unable to build an empty module.])
+               else
+                       AC_MSG_ERROR([
+       *** Unable to build an empty module.
+       *** Please run 'make scripts' inside the kernel source tree.])
+               fi
+       ])
+])
+
+dnl #
 dnl # Certain kernel build options are not supported.  These must be
 dnl # detected at configure time and cause a build failure.  Otherwise
 dnl # modules may be successfully built that behave incorrectly.