diff options
author | Etienne Dechamps <[email protected]> | 2012-07-17 10:36:43 +0200 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2012-07-26 13:40:18 -0700 |
commit | 319a99a3d440480fe9c37f637cb9cac8e0f20ded (patch) | |
tree | 22d62c05e2edde3e334484e2a0a8a0b4b2470b63 /config | |
parent | b2c5198b1996c9053c1bae38755f76125c8cb169 (diff) |
Make configure builtin-aware.
This patch adds a new option to configure: --enable-linux-builtin. When
this option is used, the following happens:
- Compilation of kernel modules is disabled.
- A failure to find UTS_RELEASE is followed by a suggestion to run
"make prepare" on the kernel source tree.
This patch also adds a new test which tries to compile an empty module
as a basic toolchain sanity test. If it fails and the option was
specified, the error is followed by a suggestion to run "make scripts"
on the kernel source tree.
Signed-off-by: Prakash Surya <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #851
Diffstat (limited to 'config')
-rw-r--r-- | config/kernel.m4 | 30 | ||||
-rw-r--r-- | config/zfs-build.m4 | 12 |
2 files changed, 36 insertions, 6 deletions
diff --git a/config/kernel.m4 b/config/kernel.m4 index c65c58cc0..2fb3fc91b 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -4,6 +4,7 @@ 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 @@ -86,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 ], [ @@ -191,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]) @@ -313,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. diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 index 6bfea5195..8e6b13b24 100644 --- a/config/zfs-build.m4 +++ b/config/zfs-build.m4 @@ -73,6 +73,11 @@ AC_DEFUN([ZFS_AC_CONFIG], [ AS_HELP_STRING([--with-config=CONFIG], [Config file 'kernel|user|all|srpm']), [ZFS_CONFIG="$withval"]) + AC_ARG_ENABLE([linux-builtin], + [AC_HELP_STRING([--enable-linux-builtin], + [Configure for builtin in-tree kernel modules @<:@default=no@:>@])], + [], + [enable_linux_builtin=no]) AC_MSG_CHECKING([zfs config]) AC_MSG_RESULT([$ZFS_CONFIG]); @@ -93,11 +98,10 @@ AC_DEFUN([ZFS_AC_CONFIG], [ esac AM_CONDITIONAL([CONFIG_USER], - [test "$ZFS_CONFIG" = user] || - [test "$ZFS_CONFIG" = all]) + [test "$ZFS_CONFIG" = user -o "$ZFS_CONFIG" = all]) AM_CONDITIONAL([CONFIG_KERNEL], - [test "$ZFS_CONFIG" = kernel] || - [test "$ZFS_CONFIG" = all]) + [test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all] && + [test "x$enable_linux_builtin" != xyes ]) ]) dnl # |