summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorEtienne Dechamps <[email protected]>2012-07-17 10:36:43 +0200
committerBrian Behlendorf <[email protected]>2012-07-26 13:40:18 -0700
commit319a99a3d440480fe9c37f637cb9cac8e0f20ded (patch)
tree22d62c05e2edde3e334484e2a0a8a0b4b2470b63 /config
parentb2c5198b1996c9053c1bae38755f76125c8cb169 (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.m430
-rw-r--r--config/zfs-build.m412
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 #