It should be possible to point the ./configure script at a kernel source
tree and have it work without needing to also specifiy exactly what
kernel version its looking at. This patch modifies configure.ac so that
the MODUTS is only set to the output of `uname -r` if neither a kernel
location nor version is given, and so the "sanity check" process which
compares the kernel version is able to set MODUTS if it hasn't already
been.

Signed-off-by: Jason Gerecke <jason.gere...@wacom.com>
---
 configure.ac | 138 ++++++++++++++++++++++++++++++++---------------------------
 1 file changed, 75 insertions(+), 63 deletions(-)

diff --git a/configure.ac b/configure.ac
index cad0258..2e3af9d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,48 +24,11 @@ fi
 AC_MSG_RESULT($WCM_ISLINUX)
 
 dnl  kernel source, module versioning, etc
-WCM_ENV_KERNEL=no
+WCM_ENV_KERNEL=
 WCM_KERNEL_DIR=
 WCM_KERNEL_VER=
 MODUTS=
 
-dnl Check which version of the driver we should compile
-AC_ARG_WITH(kernel-version,
-       AS_HELP_STRING([--with-kernel-version=version], [Specify kernel 
version]),
-       [MODUTS="$withval"],
-       [MODUTS=`uname -r`])
-
-AC_MSG_CHECKING(kernel version)
-AC_MSG_RESULT([$MODUTS])
-MINOR=`echo $MODUTS | sed 's/[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\).*/\1/'`
-if echo $MODUTS | grep "^2.4" >/dev/null; then
-       AC_MSG_ERROR([kernel 2.4.x is not supported])
-elif echo $MODUTS | grep "^2.6" >/dev/null; then
-       if test $MINOR -ge 26; then
-               case $MINOR in
-                       26|27|28|29|30|31|32|33|34|35) WCM_KERNEL_VER="2.6.30";;
-                       36|37) WCM_KERNEL_VER="2.6.36";;
-                       *) WCM_KERNEL_VER="2.6.38";;
-               esac
-       else
-               AC_MSG_ERROR([use the kernel driver included in the 
'linuxwacom' package for kernels older than 2.6.26])
-       fi
-elif echo $MODUTS | grep "^3." >/dev/null; then
-       MINOR=`echo $MODUTS | sed 's/[[0-9]]*\.\([[0-9]]*\).*/\1/'`
-       if test $MINOR -ge 17; then
-               WCM_KERNEL_VER="3.17"
-       elif test $MINOR -ge 7; then
-               WCM_KERNEL_VER="3.7"
-       else
-               WCM_KERNEL_VER="2.6.38"
-       fi
-elif echo $MODUTS | grep "^4." >/dev/null; then
-       WCM_KERNEL_VER="3.17"
-else
-       AC_MSG_ERROR(kernel version $MODUTS not supported)
-fi
-
-dnl Check for kernel build environment
 AC_DEFUN([WCM_ISBUILDDIR], [\
     \( -f "$1/.config" -o \
        -f "$1/include/config/auto.conf" -o \
@@ -76,13 +39,28 @@ AC_ARG_WITH(kernel,
        AS_HELP_STRING([--with-kernel=dir], [Specify kernel source directory]),
        [WCM_KERNEL_DIR="$withval"])
 
+AC_ARG_WITH(kernel-version,
+       AS_HELP_STRING([--with-kernel-version=version], [Specify kernel 
version]),
+       [MODUTS="$withval"])
+
+
+dnl Assume the user wants to build for the running kernel version if neither
+dnl the kernel directory nor version has been specified
+if test "$WCM_KERNEL_DIR" = "yes" -o -z "$WCM_KERNEL_DIR"; then
+       if test "$MODUTS" = "yes" -o -z "$MODUTS"; then
+               MODUTS=`uname -r`
+       fi
+fi
+
+dnl Discover the kernel source location if not already set
 AC_MSG_CHECKING(for kernel source/headers)
 if test "$WCM_KERNEL_DIR" = "yes" -o -z "$WCM_KERNEL_DIR"; then
+       if test "$MODUTS" = "yes" -o -z "$MODUTS"; then X=`uname -r`; else 
X="$MODUTS"; fi
        AC_DEFUN([SEARCH_DIRECTORIES], [[
-         [/lib/modules/$MODUTS/source],
-         [/lib/modules/$MODUTS/build],
+         [/lib/modules/$X/source],
+         [/lib/modules/$X/build],
          [/usr/src/linux],
-         [/usr/src/linux-$MODUTS],
+         [/usr/src/linux-$X],
          [/usr/src/linux-2.6]
        ]])
        WCM_KERNEL_DIR=
@@ -91,37 +69,71 @@ if test "$WCM_KERNEL_DIR" = "yes" -o -z "$WCM_KERNEL_DIR"; 
then
                if test -z "$WCM_KERNEL_DIR"; then
                        if test WCM_ISBUILDDIR(ROOTDIR); then
                                WCM_KERNEL_DIR="ROOTDIR"
-                               AC_MSG_RESULT($WCM_KERNEL_DIR)
                        fi
                fi
        ])
+fi
+if test -z "$WCM_KERNEL_DIR"; then
+       AC_MSG_RESULT([not found])
+       AC_MSG_WARN([Unable to find build config in any of: SEARCH_DIRECTORIES])
+fi
+AC_MSG_RESULT([$WCM_KERNEL_DIR])
+if test \! WCM_ISBUILDDIR($WCM_KERNEL_DIR); then
+       AC_MSG_WARN([Kernel directory does not appear to have needed config 
files])
+       WCM_ENV_KERNEL="no"
+fi
 
-       if test -z "$WCM_KERNEL_DIR"; then
-               AC_MSG_RESULT([not found])
-               AC_MSG_NOTICE([Unable to find build config in any of: 
SEARCH_DIRECTORIES])
-       fi
-elif test "$WCM_KERNEL_DIR" != "no"; then
-       AC_MSG_RESULT([$WCM_KERNEL_DIR])
-       if test \! WCM_ISBUILDDIR($WCM_KERNEL_DIR); then
-               AC_MSG_NOTICE([Kernel directory does not appear to have needed 
config files])
-       fi
+dnl Discover the kernel source version if not already set
+AC_MSG_CHECKING(kernel version)
+SRC_VERSION=[$(sed -n '/UTS_RELEASE/ s/^[^"]*"\([^"]*\).*$/\1/gp' \
+              "$WCM_KERNEL_DIR/include/linux/version.h"           \
+              "$WCM_KERNEL_DIR/include/generated/utsrelease.h"    \
+              "$WCM_KERNEL_DIR/include/linux/utsrelease.h" 2> /dev/null | head 
-n1)]
+AC_MSG_RESULT([$SRC_VERSION])
+if test "$MODUTS" = "yes" -o -z "$MODUTS"; then
+       MODUTS="$SRC_VERSION"
+elif test "$SRC_VERSION" != "$MODUTS"; then
+       AC_MSG_WARN([Spcified '$MODUTS' kernel, but found '$SRC_VERSION' 
instead])
+       WCM_ENV_KERNEL="no"
 fi
 
-dnl Final sanity check to make sure the kernel versions match
-for F in "$WCM_KERNEL_DIR/include/linux/version.h" \
-       "$WCM_KERNEL_DIR/include/generated/utsrelease.h" \
-       "$WCM_KERNEL_DIR/include/linux/utsrelease.h"; do
-       if test -f $F; then
-               if test "$MODUTS" = "`grep UTS_RELEASE $F | sed -e 
's/^[[^"]]*"\([[^"]]*\).*$/\1/g'`"; then
-                       WCM_ENV_KERNEL=yes
-               fi
-       fi
-done
 
 if test "$WCM_ENV_KERNEL" = "no"; then
        AC_MSG_ERROR([We could not find the development environment to dnl
-build modules for the '$MODUTS' kernel. Please install the kernel source or dnl
-the kernel development package and try again.])
+build modules for the '$MODUTS' kernel within the '$WCM_KERNEL_DIR' dnl
+directory. Please install the kernel source or the kernel development dnl
+package and try again.])
+fi
+WCM_ENV_KERNEL="yes"
+
+
+dnl Check which version of the driver we should compile
+MINOR=`echo $MODUTS | sed 's/[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\).*/\1/'`
+if echo $MODUTS | grep "^2.4" >/dev/null; then
+       AC_MSG_ERROR([kernel 2.4.x is not supported])
+elif echo $MODUTS | grep "^2.6" >/dev/null; then
+       if test $MINOR -ge 26; then
+               case $MINOR in
+                       26|27|28|29|30|31|32|33|34|35) WCM_KERNEL_VER="2.6.30";;
+                       36|37) WCM_KERNEL_VER="2.6.36";;
+                       *) WCM_KERNEL_VER="2.6.38";;
+               esac
+       else
+               AC_MSG_ERROR([use the kernel driver included in the 
'linuxwacom' package for kernels older than 2.6.26])
+       fi
+elif echo $MODUTS | grep "^3." >/dev/null; then
+       MINOR=`echo $MODUTS | sed 's/[[0-9]]*\.\([[0-9]]*\).*/\1/'`
+       if test $MINOR -ge 17; then
+               WCM_KERNEL_VER="3.17"
+       elif test $MINOR -ge 7; then
+               WCM_KERNEL_VER="3.7"
+       else
+               WCM_KERNEL_VER="2.6.38"
+       fi
+elif echo $MODUTS | grep "^4." >/dev/null; then
+       WCM_KERNEL_VER="3.17"
+else
+       AC_MSG_ERROR(kernel version $MODUTS not supported)
 fi
 
 dnl Separate test output from file-generation output
-- 
2.6.2


------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to