X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=build%2Fautoconf%2Flustre-build-linux.m4;h=b4a9dd2405b4587a6989389fb2a54ef616f4db0f;hb=e0b066f02640b770db0c66889744a323e15c98d7;hp=8c08893f7a2d46930d504d6c6c85aa6b2a80a3ba;hpb=898351a74d8e482826a8f430fa2e26a567423264;p=fs%2Flustre-release.git diff --git a/build/autoconf/lustre-build-linux.m4 b/build/autoconf/lustre-build-linux.m4 index 8c08893..b4a9dd2 100644 --- a/build/autoconf/lustre-build-linux.m4 +++ b/build/autoconf/lustre-build-linux.m4 @@ -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 + #include ],[ 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 ],[ +#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 @@ -283,6 +314,27 @@ AC_DEFUN([LB_LINUX_TRY_MAKE], [LB_LINUX_COMPILE_IFELSE([AC_LANG_PROGRAM([[$1]], [[$2]])], [$3], [$4], [$5], [$6])]) # +# LB_LINUX_CONFIG_BIG_STACK +# +# check for big stack patch +# +AC_DEFUN([LB_LINUX_CONFIG_BIG_STACK], +[if test "x$ARCH_UM" = "x" -a "x$linux25" = "xno" ; then + case $target_cpu in + i?86 | x86_64) + LB_LINUX_CONFIG([STACK_SIZE_16KB],[],[ + LB_LINUX_CONFIG([STACK_SIZE_32KB],[],[ + LB_LINUX_CONFIG([STACK_SIZE_64KB],[],[ + AC_MSG_ERROR([Lustre requires that Linux is configured with at least a 16KB stack.]) + ]) + ]) + ]) + ;; + esac +fi +]) + +# # LB_PROG_LINUX # # linux tests @@ -306,11 +358,39 @@ if test "x$ARCH_UM" = "x" ; then fi ]) -# Portals tests -LP_PROG_LINUX +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 +LN_PROG_LINUX # Lustre tests LC_PROG_LINUX + +# Portals tests +if test "$PORTALS" ; then + LP_PROG_LINUX +fi ]) # @@ -319,6 +399,68 @@ LC_PROG_LINUX # AM_CONDITIONALS for linux # AC_DEFUN([LB_LINUX_CONDITIONALS], -[AM_CONDITIONAL(INKERNEL, test x$enable_inkernel = xyes) -AM_CONDITIONAL(LINUX25, test x$linux25 = xyes) +[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 ],[ +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 +]) +