The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/config/kernel-config-defined.m4

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 dnl #
    2 dnl # Certain kernel build options are not supported.  These must be
    3 dnl # detected at configure time and cause a build failure.  Otherwise
    4 dnl # modules may be successfully built that behave incorrectly.
    5 dnl #
    6 AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEFINED], [
    7         AS_IF([test "x$cross_compiling" != xyes], [
    8                 AC_RUN_IFELSE([
    9                         AC_LANG_PROGRAM([
   10                                 #include "$LINUX/include/linux/license.h"
   11                         ], [
   12                                 return !license_is_gpl_compatible(
   13                                     "$ZFS_META_LICENSE");
   14                         ])
   15                 ], [
   16                         AC_DEFINE([ZFS_IS_GPL_COMPATIBLE], [1],
   17                             [Define to 1 if GPL-only symbols can be used])
   18                 ], [
   19                 ])
   20         ])
   21 
   22         ZFS_AC_KERNEL_SRC_CONFIG_MODULES
   23         ZFS_AC_KERNEL_SRC_CONFIG_BLOCK
   24         ZFS_AC_KERNEL_SRC_CONFIG_DEBUG_LOCK_ALLOC
   25         ZFS_AC_KERNEL_SRC_CONFIG_TRIM_UNUSED_KSYMS
   26         ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_DEFLATE
   27         ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_INFLATE
   28 
   29         AC_MSG_CHECKING([for kernel config option compatibility])
   30         ZFS_LINUX_TEST_COMPILE_ALL([config])
   31         AC_MSG_RESULT([done])
   32 
   33         ZFS_AC_KERNEL_CONFIG_MODULES
   34         ZFS_AC_KERNEL_CONFIG_BLOCK
   35         ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC
   36         ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS
   37         ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE
   38         ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE
   39 ])
   40 
   41 dnl #
   42 dnl # Check CONFIG_BLOCK
   43 dnl #
   44 dnl # Verify the kernel has CONFIG_BLOCK support enabled.
   45 dnl #
   46 AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_BLOCK], [
   47         ZFS_LINUX_TEST_SRC([config_block], [
   48                 #if !defined(CONFIG_BLOCK)
   49                 #error CONFIG_BLOCK not defined
   50                 #endif
   51         ],[])
   52 ])
   53 
   54 AC_DEFUN([ZFS_AC_KERNEL_CONFIG_BLOCK], [
   55         AC_MSG_CHECKING([whether CONFIG_BLOCK is defined])
   56         ZFS_LINUX_TEST_RESULT([config_block], [
   57                 AC_MSG_RESULT([yes])
   58         ],[
   59                 AC_MSG_RESULT([no])
   60                 AC_MSG_ERROR([
   61         *** This kernel does not include the required block device support.
   62         *** Rebuild the kernel with CONFIG_BLOCK=y set.])
   63         ])
   64 ])
   65 
   66 dnl #
   67 dnl # Check CONFIG_DEBUG_LOCK_ALLOC
   68 dnl #
   69 dnl # This is typically only set for debug kernels because it comes with
   70 dnl # a performance penalty.  However, when it is set it maps the non-GPL
   71 dnl # symbol mutex_lock() to the GPL-only mutex_lock_nested() symbol.
   72 dnl # This will cause a failure at link time which we'd rather know about
   73 dnl # at compile time.
   74 dnl #
   75 dnl # Since we plan to pursue making mutex_lock_nested() a non-GPL symbol
   76 dnl # with the upstream community we add a check to detect this case.
   77 dnl #
   78 AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_DEBUG_LOCK_ALLOC], [
   79         ZFS_LINUX_TEST_SRC([config_debug_lock_alloc], [
   80                 #include <linux/mutex.h>
   81         ],[
   82                 struct mutex lock;
   83 
   84                 mutex_init(&lock);
   85                 mutex_lock(&lock);
   86                 mutex_unlock(&lock);
   87         ], [], [ZFS_META_LICENSE])
   88 ])
   89 
   90 AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC], [
   91         AC_MSG_CHECKING([whether mutex_lock() is GPL-only])
   92         ZFS_LINUX_TEST_RESULT([config_debug_lock_alloc_license], [
   93                 AC_MSG_RESULT(no)
   94         ],[
   95                 AC_MSG_RESULT(yes)
   96                 AC_MSG_ERROR([
   97         *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible
   98         *** with the CDDL license and will prevent the module linking stage
   99         *** from succeeding.  You must rebuild your kernel without this
  100         *** option enabled.])
  101         ])
  102 ])
  103 
  104 dnl #
  105 dnl # Check CONFIG_MODULES
  106 dnl #
  107 dnl # Verify the kernel has CONFIG_MODULES support enabled.
  108 dnl #
  109 AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_MODULES], [
  110         ZFS_LINUX_TEST_SRC([config_modules], [
  111                 #if !defined(CONFIG_MODULES)
  112                 #error CONFIG_MODULES not defined
  113                 #endif
  114         ],[])
  115 ])
  116 
  117 AC_DEFUN([ZFS_AC_KERNEL_CONFIG_MODULES], [
  118         AC_MSG_CHECKING([whether CONFIG_MODULES is defined])
  119         AS_IF([test "x$enable_linux_builtin" != xyes], [
  120                 ZFS_LINUX_TEST_RESULT([config_modules], [
  121                         AC_MSG_RESULT([yes])
  122                 ],[
  123                         AC_MSG_RESULT([no])
  124                         AC_MSG_ERROR([
  125                 *** This kernel does not include the required loadable module
  126                 *** support!
  127                 ***
  128                 *** To build OpenZFS as a loadable Linux kernel module
  129                 *** enable loadable module support by setting
  130                 *** `CONFIG_MODULES=y` in the kernel configuration and run
  131                 *** `make modules_prepare` in the Linux source tree.
  132                 ***
  133                 *** If you don't intend to enable loadable kernel module
  134                 *** support, please compile OpenZFS as a Linux kernel built-in.
  135                 ***
  136                 *** Prepare the Linux source tree by running `make prepare`,
  137                 *** use the OpenZFS `--enable-linux-builtin` configure option,
  138                 *** copy the OpenZFS sources into the Linux source tree using
  139                 *** `./copy-builtin <linux source directory>`,
  140                 *** set `CONFIG_ZFS=y` in the kernel configuration and compile
  141                 *** kernel as usual.
  142                         ])
  143                 ])
  144         ], [
  145                 ZFS_LINUX_TRY_COMPILE([], [], [
  146                         AC_MSG_RESULT([not needed])
  147                 ],[
  148                         AC_MSG_RESULT([error])
  149                         AC_MSG_ERROR([
  150                 *** This kernel is unable to compile object files.
  151                 ***
  152                 *** Please make sure you prepared the Linux source tree
  153                 *** by running `make prepare` there.
  154                         ])
  155                 ])
  156         ])
  157 ])
  158 
  159 dnl #
  160 dnl # Check CONFIG_TRIM_UNUSED_KSYMS
  161 dnl #
  162 dnl # Verify the kernel has CONFIG_TRIM_UNUSED_KSYMS disabled.
  163 dnl #
  164 AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_TRIM_UNUSED_KSYMS], [
  165         ZFS_LINUX_TEST_SRC([config_trim_unusued_ksyms], [
  166                 #if defined(CONFIG_TRIM_UNUSED_KSYMS)
  167                 #error CONFIG_TRIM_UNUSED_KSYMS not defined
  168                 #endif
  169         ],[])
  170 ])
  171 
  172 AC_DEFUN([ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS], [
  173         AC_MSG_CHECKING([whether CONFIG_TRIM_UNUSED_KSYM is disabled])
  174         ZFS_LINUX_TEST_RESULT([config_trim_unusued_ksyms], [
  175                 AC_MSG_RESULT([yes])
  176         ],[
  177                 AC_MSG_RESULT([no])
  178                 AS_IF([test "x$enable_linux_builtin" != xyes], [
  179                         AC_MSG_ERROR([
  180         *** This kernel has unused symbols trimming enabled, please disable.
  181         *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set.])
  182                 ])
  183         ])
  184 ])
  185 
  186 dnl #
  187 dnl # Check CONFIG_ZLIB_INFLATE
  188 dnl #
  189 dnl # Verify the kernel has CONFIG_ZLIB_INFLATE support enabled.
  190 dnl #
  191 AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_INFLATE], [
  192         ZFS_LINUX_TEST_SRC([config_zlib_inflate], [
  193                 #if !defined(CONFIG_ZLIB_INFLATE) && \
  194                     !defined(CONFIG_ZLIB_INFLATE_MODULE)
  195                 #error CONFIG_ZLIB_INFLATE not defined
  196                 #endif
  197         ],[])
  198 ])
  199 
  200 AC_DEFUN([ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE], [
  201         AC_MSG_CHECKING([whether CONFIG_ZLIB_INFLATE is defined])
  202         ZFS_LINUX_TEST_RESULT([config_zlib_inflate], [
  203                 AC_MSG_RESULT([yes])
  204         ],[
  205                 AC_MSG_RESULT([no])
  206                 AC_MSG_ERROR([
  207         *** This kernel does not include the required zlib inflate support.
  208         *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set.])
  209         ])
  210 ])
  211 
  212 dnl #
  213 dnl # Check CONFIG_ZLIB_DEFLATE
  214 dnl #
  215 dnl # Verify the kernel has CONFIG_ZLIB_DEFLATE support enabled.
  216 dnl #
  217 AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_DEFLATE], [
  218         ZFS_LINUX_TEST_SRC([config_zlib_deflate], [
  219                 #if !defined(CONFIG_ZLIB_DEFLATE) && \
  220                     !defined(CONFIG_ZLIB_DEFLATE_MODULE)
  221                 #error CONFIG_ZLIB_DEFLATE not defined
  222                 #endif
  223         ],[])
  224 ])
  225 
  226 AC_DEFUN([ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE], [
  227         AC_MSG_CHECKING([whether CONFIG_ZLIB_DEFLATE is defined])
  228         ZFS_LINUX_TEST_RESULT([config_zlib_deflate], [
  229                 AC_MSG_RESULT([yes])
  230         ],[
  231                 AC_MSG_RESULT([no])
  232                 AC_MSG_ERROR([
  233         *** This kernel does not include the required zlib deflate support.
  234         *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set.])
  235         ])
  236 ])

Cache object: 19078ead84128e117fb1d4a8f4aa8b31


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.