+m4_pattern_allow(AC_KERBEROS_V5)
+
#
# LB_LINUX_VERSION
#
[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;
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],
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)])],
])
#
+# 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
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
-# Portals tests
-LP_PROG_LINUX
+# LNet tests
+LN_PROG_LINUX
# Lustre tests
LC_PROG_LINUX
+
+# Portals tests
+if test "$PORTALS" ; then
+ LP_PROG_LINUX
+fi
])
#
#
AC_DEFUN([LB_LINUX_CONDITIONALS],
[AM_CONDITIONAL(LINUX25, test x$linux25 = xyes)
+AM_CONDITIONAL(GSS, test x$enable_gss = xyes)
])
+
+#
+# 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
+])
+