Whamcloud - gitweb
branch: b_new_cmd
[fs/lustre-release.git] / build / autoconf / lustre-build-linux.m4
index 8c123dc..b4a9dd2 100644 (file)
@@ -1,3 +1,5 @@
+m4_pattern_allow(AC_KERBEROS_V5)
+
 #
 # LB_LINUX_VERSION
 #
@@ -55,8 +57,13 @@ AC_DEFUN([LB_LINUX_RELEASE],
 [LINUXRELEASE=
 rm -f build/conftest.i
 AC_MSG_CHECKING([for Linux release])
+if test -s $LINUX_OBJ/include/linux/utsrelease.h ; then
+       LINUXRELEASEHEADER=utsrelease.h
+else
+       LINUXRELEASEHEADER=version.h
+fi
 LB_LINUX_TRY_MAKE([
-       #include <linux/version.h>
+       #include <linux/$LINUXRELEASEHEADER>
 ],[
        char *LINUXRELEASE;
        LINUXRELEASE=UTS_RELEASE;
@@ -110,6 +117,10 @@ AC_ARG_WITH([linux],
 AC_MSG_RESULT([$LINUX])
 AC_SUBST(LINUX)
 
+# -------- check for linux --------
+LB_CHECK_FILE([$LINUX],[],
+       [AC_MSG_ERROR([Kernel source $LINUX could not be found.])])
+
 # -------- linux objects (for 2.6) --
 AC_MSG_CHECKING([for Linux objects dir])
 AC_ARG_WITH([linux-obj],
@@ -120,7 +131,7 @@ AC_ARG_WITH([linux-obj],
 AC_MSG_RESULT([$LINUX_OBJ])
 AC_SUBST(LINUX_OBJ)
 
-# -------- check for .confg --------
+# -------- check for .config --------
 AC_ARG_WITH([linux-config],
        [AC_HELP_STRING([--with-linux-config=path],
                        [set path to Linux .conf (default=$LINUX_OBJ/.config)])],
@@ -275,6 +286,26 @@ $3
 ])
 
 #
+# LB_LINUX_CONFIG_IM
+#
+# check if a given config option is builtin or as module
+#
+AC_DEFUN([LB_LINUX_CONFIG_IM],
+[AC_MSG_CHECKING([if Linux was built with CONFIG_$1 in or as module])
+LB_LINUX_TRY_COMPILE([#include <linux/config.h>],[
+#if !(defined(CONFIG_$1) || defined(CONFIG_$1_MODULE))
+#error CONFIG_$1 and CONFIG_$1_MODULE not #defined
+#endif
+],[
+AC_MSG_RESULT([yes])
+$2
+],[
+AC_MSG_RESULT([no])
+$3
+])
+])
+
+#
 # LB_LINUX_TRY_MAKE
 #
 # like LB_LINUX_TRY_COMPILE, but with different arguments
@@ -327,6 +358,27 @@ if test "x$ARCH_UM" = "x" ; then
 fi
 ])
 
+LB_LINUX_CONFIG([KMOD],[],[
+       AC_MSG_WARN([])
+       AC_MSG_WARN([Kernel module loading support is highly recommended.])
+       AC_MSG_WARN([])
+])
+
+#
+# following CRYPTO related are required by capability
+#
+LB_LINUX_CONFIG_IM([CRYPTO],[],[
+       AC_MSG_ERROR([Lustre require that CONFIG_CRYPTO is enabled in your kernel.])
+])
+
+LB_LINUX_CONFIG_IM([CRYPTO_HMAC],[],[
+       AC_MSG_ERROR([Lustre require that CONFIG_CRYPTO_HMAC is enabled in your kernel.])
+])
+
+LB_LINUX_CONFIG_IM([CRYPTO_SHA1],[],[
+       AC_MSG_ERROR([Lustre require that CONFIG_CRYPTO_SHA1 is enabled in your kernel.])
+])
+
 #LB_LINUX_CONFIG_BIG_STACK
 
 # LNet tests
@@ -348,4 +400,67 @@ fi
 #
 AC_DEFUN([LB_LINUX_CONDITIONALS],
 [AM_CONDITIONAL(LINUX25, test x$linux25 = xyes)
+AM_CONDITIONAL(GSS, test x$enable_gss = xyes)
+])
+
+#
+# LB_LINUX_CONFIG_PAG
+#
+AC_DEFUN([LB_LINUX_CONFIG_PAG],
+[AC_MSG_CHECKING([if Linux is patched with basic PAG support])
+LB_LINUX_TRY_COMPILE([#include <linux/sched.h>],[
+unsigned long pag = current->pag;
+],[AC_MSG_RESULT([yes])
+AC_DEFINE(HAVE_LINUX_PAG, 1, [linux has basic PAG support for Lustre])],[
+AC_MSG_RESULT([no])
+])
+])
+
+#
+# LC_LINUX_CONFIG_GSS
+#
+# Build gss and related tools of Lustre. Currently both kernel and user space
+# parts are depend on linux platform.
+#
+AC_DEFUN([LC_LINUX_CONFIG_GSS],
+[AC_MSG_CHECKING([whether to enable gss/krb5 support])
+AC_ARG_ENABLE([gss], 
+       AC_HELP_STRING([--enable-gss], [enable gss/krb5 support]),
+       [],[enable_gss='no'])
+AC_MSG_RESULT([$enable_gss])
+
+if test x$enable_gss == xyes; then
+       LB_LINUX_CONFIG_IM([SUNRPC],[],[
+               AC_MSG_ERROR([GSS require that CONFIG_SUNRPC is enabled in your kernel.])
+       ])
+       LB_LINUX_CONFIG_IM([CRYPTO_DES],[],[
+               AC_MSG_WARN([DES support is recommended by using GSS.])
+       ])
+       LB_LINUX_CONFIG_IM([CRYPTO_MD5],[],[
+               AC_MSG_WARN([MD5 support is recommended by using GSS.])
+       ])
+       LB_LINUX_CONFIG_IM([CRYPTO_SHA256],[],[
+               AC_MSG_WARN([SHA256 support is recommended by using GSS.])
+       ])
+       LB_LINUX_CONFIG_IM([CRYPTO_SHA512],[],[
+               AC_MSG_WARN([SHA512 support is recommended by using GSS.])
+       ])
+       LB_LINUX_CONFIG_IM([CRYPTO_ARC4],[],[
+               AC_MSG_WARN([ARC4 support is recommended by using GSS.])
+       ])
+       #
+       # unfortunately AES symbol is depend (optimized) on arch
+       #
+
+       AC_CHECK_LIB(gssapi, gss_init_sec_context, [
+               GSSAPI_LIBS="$GSSAPI_LDFLAGS -lgssapi"
+               ], [
+               AC_MSG_ERROR([libgssapi is not found, consider --disable-gss.])
+               ], 
+       )
+
+       AC_SUBST(GSSAPI_LIBS)
+       AC_KERBEROS_V5
+fi
 ])
+