configure: add configure checks to compile kernel modules
There're new configure options added to tune modules building process.
New m4 function tries to determine if kernel-devel package is available
and sets makefile's variables (WITH_MODULES, ...) accordingly.
Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
Acked-by: Cyril Hrubis <chrubis@suse.cz>
diff --git a/configure.ac b/configure.ac
index f217f50..f0fc6b0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -167,5 +167,6 @@
LTP_CHECK_ACL_SUPPORT
LTP_CHECK_FS_IOC_FLAGS
LTP_CHECK_MREMAP_FIXED
+LTP_CHECK_KERNEL_DEVEL
AC_OUTPUT
diff --git a/include/mk/config.mk.default b/include/mk/config.mk.default
index bd364a6..953747c 100644
--- a/include/mk/config.mk.default
+++ b/include/mk/config.mk.default
@@ -73,4 +73,10 @@
CFLAGS += $(DEBUG_CFLAGS) $(OPT_CFLAGS) $(WCFLAGS)
CXXFLAGS += $(DEBUG_CXXFLAGS) $(OPT_CXXFLAGS) $(WCXXFLAGS)
+LINUX_VERSION :=
+LINUX_DIR :=
+LINUX_VERSION_MAJOR :=
+LINUX_VERSION_PATCH :=
+WITH_MODULES := no
+
export datarootdir includedir libdir mandir prefix
diff --git a/include/mk/config.mk.in b/include/mk/config.mk.in
index b835c86..96633f1 100644
--- a/include/mk/config.mk.in
+++ b/include/mk/config.mk.in
@@ -75,6 +75,12 @@
CFLAGS += $(DEBUG_CFLAGS) $(OPT_CFLAGS) $(WCFLAGS)
CXXFLAGS += $(DEBUG_CXXFLAGS) $(OPT_CXXFLAGS) $(WCXXFLAGS)
+LINUX_VERSION := @LINUX_VERSION@
+LINUX_DIR := @LINUX_DIR@
+LINUX_VERSION_MAJOR := @LINUX_VERSION_MAJOR@
+LINUX_VERSION_PATCH := @LINUX_VERSION_PATCH@
+WITH_MODULES := @WITH_MODULES@
+
ifeq ($(strip $(prefix)),)
$(error you are using $$(prefix) incorrectly -- set it to $(abs_top_srcdir) if you want to build in the source tree)
endif
diff --git a/m4/ltp-kernel_devel.m4 b/m4/ltp-kernel_devel.m4
new file mode 100644
index 0000000..ba53bc1
--- /dev/null
+++ b/m4/ltp-kernel_devel.m4
@@ -0,0 +1,76 @@
+dnl Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
+dnl
+dnl This program is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU General Public License as
+dnl published by the Free Software Foundation; either version 2 of
+dnl the License, or (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it would be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write the Free Software Foundation,
+dnl Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+dnl
+dnl Author: Alexey Kodanev <alexey.kodanev@oracle.com>
+dnl
+
+dnl
+dnl LTP_CHECK_KERNEL_DEVEL
+dnl ----------------------------
+dnl Building kernel modules
+dnl requires kernel-devel installed
+dnl
+
+AC_DEFUN([LTP_CHECK_KERNEL_DEVEL],[dnl
+
+AC_MSG_CHECKING([for kernel-devel])
+AC_ARG_WITH(
+ [linux-version],
+ [AC_HELP_STRING([--with-linux-version=VERSION],
+ [specify the Linux version to build modules for])],
+ [LINUX_VERSION="${withval}"],
+ AS_IF([test "$cross_compiling" = "no"],
+ [LINUX_VERSION=`uname -r`]))
+
+AC_SUBST(LINUX_VERSION)
+
+AC_ARG_WITH([linux-dir],
+ [AC_HELP_STRING([--with-linux-dir=DIR],
+ [specify path to kernel-devel directory])],
+ [LINUX_DIR="${withval}"],
+ AS_IF([test -n "$LINUX_VERSION"],
+ [LINUX_DIR="/lib/modules/$LINUX_VERSION/build"]))
+
+AC_SUBST(LINUX_DIR)
+
+if test -f "$LINUX_DIR/Makefile"; then
+ LINUX_VERSION_MAJOR=`sed -n '0,/^VERSION = [[0-9]]*/s,\
+^VERSION = ,,p' ${LINUX_DIR}/Makefile`
+
+ LINUX_VERSION_PATCH=`sed -n '0,/^PATCHLEVEL = [[0-9]]*/s,\
+^PATCHLEVEL = ,,p' ${LINUX_DIR}/Makefile`
+fi
+
+if [[ -n "$LINUX_VERSION_MAJOR" -a -n "$LINUX_VERSION_PATCH" ]]; then
+ WITH_MODULES="yes"
+else
+ WITH_MODULES="no"
+fi
+
+AC_SUBST(LINUX_VERSION_MAJOR)
+AC_SUBST(LINUX_VERSION_PATCH)
+
+AC_MSG_RESULT([$WITH_MODULES])
+
+AC_ARG_WITH(
+ [modules],
+ [AC_HELP_STRING([--without-modules],
+ [disable auto-building kernel modules])],
+ [WITH_MODULES="no"],
+ [])
+
+AC_SUBST(WITH_MODULES)
+])