📄 lustre-lnet.m4
字号:
#AC_DEFUN([LN_TYPE_CPUMASK_T],[AC_MSG_CHECKING([if kernel defines cpumask_t])LB_LINUX_TRY_COMPILE([ #include <linux/sched.h>],[ return sizeof (cpumask_t);],[ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_CPUMASK_T, 1, [cpumask_t found])],[ AC_MSG_RESULT([no])])])## LN_FUNC_SHOW_TASK## we export show_task(), but not all kernels have it (yet)#AC_DEFUN([LN_FUNC_SHOW_TASK],[LB_CHECK_SYMBOL_EXPORT([show_task],[kernel/ksyms.c kernel/sched.c],[AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])],[])])# check userland __u64 typeAC_DEFUN([LN_U64_LONG_LONG],[AC_MSG_CHECKING([u64 is long long type])tmp_flags="$CFLAGS"CFLAGS="$CFLAGS -Werror"AC_COMPILE_IFELSE([ #include <linux/types.h> int main(void) { unsigned long long *data1; __u64 *data2; data1 = data2; return 0; }],[ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_U64_LONG_LONG, 1, [__u64 is long long type])],[ AC_MSG_RESULT([no])])CFLAGS="$tmp_flags"])# check userland size_t typeAC_DEFUN([LN_SIZE_T_LONG],[AC_MSG_CHECKING([size_t is unsigned long type])tmp_flags="$CFLAGS"CFLAGS="$CFLAGS -Werror"AC_COMPILE_IFELSE([ #include <linux/types.h> int main(void) { unsigned long *data1; size_t *data2; data1 = data2; return 0; }],[ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_SIZE_T_LONG, 1, [size_t is long type])],[ AC_MSG_RESULT([no])])CFLAGS="$tmp_flags"])AC_DEFUN([LN_SSIZE_T_LONG],[AC_MSG_CHECKING([ssize_t is signed long type])tmp_flags="$CFLAGS"CFLAGS="$CFLAGS -Werror"AC_COMPILE_IFELSE([ #include <linux/types.h> int main(void) { long *data1; ssize_t *data2; data1 = data2; return 0; }],[ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_SSIZE_T_LONG, 1, [ssize_t is long type])],[ AC_MSG_RESULT([no])])CFLAGS="$tmp_flags"])# LN_TASKLIST_LOCK# 2.6.18 remove tasklist_lock exportAC_DEFUN([LN_TASKLIST_LOCK],[LB_CHECK_SYMBOL_EXPORT([tasklist_lock],[kernel/fork.c],[AC_DEFINE(HAVE_TASKLIST_LOCK, 1, [tasklist_lock exported])],[])])# 2.6.19 API changes# kmem_cache_destroy(cachep) return void instead of# intAC_DEFUN([LN_KMEM_CACHE_DESTROY_INT],[AC_MSG_CHECKING([kmem_cache_destroy(cachep) return int])LB_LINUX_TRY_COMPILE([ #include <linux/slab.h>],[ int i = kmem_cache_destroy(NULL);],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KMEM_CACHE_DESTROY_INT, 1, [kmem_cache_destroy(cachep) return int])],[ AC_MSG_RESULT(NO)])])# 2.6.19 API change#panic_notifier_list use atomic_notifier operations#AC_DEFUN([LN_ATOMIC_PANIC_NOTIFIER],[AC_MSG_CHECKING([panic_notifier_list is atomic])LB_LINUX_TRY_COMPILE([ #include <linux/notifier.h> #include <linux/kernel.h>],[ struct atomic_notifier_head panic_notifier_list;],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ATOMIC_PANIC_NOTIFIER, 1, [panic_notifier_list is atomic_notifier_head])],[ AC_MSG_RESULT(NO)])])# 2.6.20 API change INIT_WORK use 2 args and not# store data insideAC_DEFUN([LN_3ARGS_INIT_WORK],[AC_MSG_CHECKING([check INIT_WORK want 3 args])LB_LINUX_TRY_COMPILE([ #include <linux/workqueue.h>],[ struct work_struct work; INIT_WORK(&work, NULL, NULL);],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_3ARGS_INIT_WORK, 1, [INIT_WORK use 3 args and store data inside])],[ AC_MSG_RESULT(NO)])])# 2.6.21 api change. 'register_sysctl_table' use only one argument,# instead of more old which need two.AC_DEFUN([LN_2ARGS_REGISTER_SYSCTL],[AC_MSG_CHECKING([check register_sysctl_table want 2 args])LB_LINUX_TRY_COMPILE([ #include <linux/sysctl.h>],[ return register_sysctl_table(NULL,0);],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_2ARGS_REGISTER_SYSCTL, 1, [register_sysctl_table want 2 args])],[ AC_MSG_RESULT(NO)])])# 2.6.21 marks kmem_cache_t deprecated and uses struct kmem_cache# insteadAC_DEFUN([LN_KMEM_CACHE],[AC_MSG_CHECKING([check kernel has struct kmem_cache])tmp_flags="$EXTRA_KCFLAGS"EXTRA_KCFLAGS="-Werror"LB_LINUX_TRY_COMPILE([ #include <linux/slab.h> typedef struct kmem_cache cache_t;],[ cache_t *cachep = NULL; kmem_cache_alloc(cachep, 0);],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KMEM_CACHE, 1, [kernel has struct kmem_cache])],[ AC_MSG_RESULT(NO)])EXTRA_KCFLAGS="$tmp_flags"])# 2.6.23 lost dtor argumentAC_DEFUN([LN_KMEM_CACHE_CREATE_DTOR],[AC_MSG_CHECKING([check kmem_cache_create has dtor argument])LB_LINUX_TRY_COMPILE([ #include <linux/slab.h>],[ kmem_cache_create(NULL, 0, 0, 0, NULL, NULL);],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KMEM_CACHE_CREATE_DTOR, 1, [kmem_cache_create has dtor argument])],[ AC_MSG_RESULT(NO)])])## LN_PROG_LINUX## LNet linux kernel checks#AC_DEFUN([LN_PROG_LINUX],[LN_FUNC_CPU_ONLINELN_TYPE_GFP_TLN_TYPE_CPUMASK_TLN_CONFIG_AFFINITYLN_CONFIG_BACKOFFLN_CONFIG_PANIC_DUMPLOGLN_CONFIG_QUADRICSLN_CONFIG_GMLN_CONFIG_OPENIBLN_CONFIG_CIBLN_CONFIG_VIBLN_CONFIG_IIBLN_CONFIG_O2IBLN_CONFIG_RALNDLN_CONFIG_PTLLNDLN_CONFIG_MXLN_STRUCT_PAGE_LISTLN_STRUCT_SIGHANDLN_FUNC_SHOW_TASKLN_U64_LONG_LONGLN_SSIZE_T_LONGLN_SIZE_T_LONG# 2.6.18LN_TASKLIST_LOCK# 2.6.19LN_KMEM_CACHE_DESTROY_INTLN_ATOMIC_PANIC_NOTIFIER# 2.6.20LN_3ARGS_INIT_WORK# 2.6.21LN_2ARGS_REGISTER_SYSCTLLN_KMEM_CACHE# 2.6.23LN_KMEM_CACHE_CREATE_DTOR])## LN_PROG_DARWIN## Darwin checks#AC_DEFUN([LN_PROG_DARWIN],[LB_DARWIN_CHECK_FUNCS([get_preemption_level])])## LN_PATH_DEFAULTS## default paths for installed files#AC_DEFUN([LN_PATH_DEFAULTS],[])## LN_CONFIGURE## other configure checks#AC_DEFUN([LN_CONFIGURE],[# lnet/utils/portals.cAC_CHECK_HEADERS([netdb.h netinet/tcp.h asm/types.h endian.h sys/ioctl.h])AC_CHECK_FUNCS([gethostbyname socket connect])# lnet/utils/debug.cAC_CHECK_HEADERS([linux/version.h])AC_CHECK_TYPE([spinlock_t], [AC_DEFINE(HAVE_SPINLOCK_T, 1, [spinlock_t is defined])], [], [#include <linux/spinlock.h>])# lnet/utils/wirecheck.cAC_CHECK_FUNCS([strnlen])# -------- Check for required packages --------------## LC_CONFIG_READLINE## Build with readline#AC_MSG_CHECKING([whether to enable readline support])AC_ARG_ENABLE(readline, AC_HELP_STRING([--disable-readline], [disable readline support]), [],[enable_readline='yes'])AC_MSG_RESULT([$enable_readline])# -------- check for readline if enabled ----if test x$enable_readline = xyes ; then LIBS_save="$LIBS" LIBS="-lncurses $LIBS" AC_CHECK_LIB([readline],[readline],[ LIBREADLINE="-lreadline -lncurses" AC_DEFINE(HAVE_LIBREADLINE, 1, [readline library is available]) ],[ LIBREADLINE="" ]) LIBS="$LIBS_save"else LIBREADLINE=""fiAC_SUBST(LIBREADLINE)AC_MSG_CHECKING([if efence debugging support is requested])AC_ARG_ENABLE(efence, AC_HELP_STRING([--enable-efence], [use efence library]), [],[enable_efence='no'])AC_MSG_RESULT([$enable_efence])if test "$enable_efence" = "yes" ; then LIBEFENCE="-lefence" AC_DEFINE(HAVE_LIBEFENCE, 1, [libefence support is requested])else LIBEFENCE=""fiAC_SUBST(LIBEFENCE)# -------- enable acceptor libwrap (TCP wrappers) support? -------AC_MSG_CHECKING([if libwrap support is requested])AC_ARG_ENABLE([libwrap], AC_HELP_STRING([--enable-libwrap], [use TCP wrappers]), [case "${enableval}" in yes) enable_libwrap=yes ;; no) enable_libwrap=no ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-libwrap) ;; esac],[enable_libwrap=no])AC_MSG_RESULT([$enable_libwrap])if test x$enable_libwrap = xyes ; then LIBWRAP="-lwrap" AC_DEFINE(HAVE_LIBWRAP, 1, [libwrap support is requested])else LIBWRAP=""fiAC_SUBST(LIBWRAP)# -------- check for -lpthread support ----AC_MSG_CHECKING([whether to use libpthread for lnet library])AC_ARG_ENABLE([libpthread], AC_HELP_STRING([--disable-libpthread], [disable libpthread]), [],[enable_libpthread=yes])if test "$enable_libpthread" = "yes" ; then AC_CHECK_LIB([pthread], [pthread_create], [ENABLE_LIBPTHREAD="yes"], [ENABLE_LIBPTHREAD="no"]) if test "$ENABLE_LIBPTHREAD" = "yes" ; then AC_MSG_RESULT([$ENABLE_LIBPTHREAD]) PTHREAD_LIBS="-lpthread" AC_DEFINE([HAVE_LIBPTHREAD], 1, [use libpthread]) else PTHREAD_LIBS="" AC_MSG_RESULT([no libpthread is found]) fi AC_SUBST(PTHREAD_LIBS)else AC_MSG_RESULT([no (disabled explicitly)]) ENABLE_LIBPTHREAD="no"fiAC_SUBST(ENABLE_LIBPTHREAD)# ----------------------------------------# some tests for catamount-like systems# ----------------------------------------AC_ARG_ENABLE([sysio_init], AC_HELP_STRING([--disable-sysio-init], [call sysio init functions when initializing liblustre]), [],[enable_sysio_init=yes])AC_MSG_CHECKING([whether to initialize libsysio])AC_MSG_RESULT([$enable_sysio_init])if test x$enable_sysio_init != xno ; then AC_DEFINE([INIT_SYSIO], 1, [call sysio init functions])fiAC_ARG_ENABLE([urandom], AC_HELP_STRING([--disable-urandom], [disable use of /dev/urandom for liblustre]), [],[enable_urandom=yes])AC_MSG_CHECKING([whether to use /dev/urandom for liblustre])AC_MSG_RESULT([$enable_urandom])if test x$enable_urandom != xno ; then AC_DEFINE([LIBLUSTRE_USE_URANDOM], 1, [use /dev/urandom for random data])fi# -------- check for -lcap support ----if test x$enable_liblustre = xyes ; then AC_CHECK_LIB([cap], [cap_get_proc], [ CAP_LIBS="-lcap" AC_DEFINE([HAVE_LIBCAP], 1, [use libcap]) ], [ CAP_LIBS="" ]) AC_SUBST(CAP_LIBS)fiLN_CONFIG_MAX_PAYLOADLN_CONFIG_UPTLLNDLN_CONFIG_USOCKLND])## LN_CONDITIONALS## AM_CONDITOINAL defines for lnet#AC_DEFUN([LN_CONDITIONALS],[AM_CONDITIONAL(BUILD_QSWLND, test x$QSWLND = "xqswlnd")AM_CONDITIONAL(BUILD_GMLND, test x$GMLND = "xgmlnd")AM_CONDITIONAL(BUILD_MXLND, test x$MXLND = "xmxlnd")AM_CONDITIONAL(BUILD_O2IBLND, test x$O2IBLND = "xo2iblnd")AM_CONDITIONAL(BUILD_OPENIBLND, test x$OPENIBLND = "xopeniblnd")AM_CONDITIONAL(BUILD_CIBLND, test x$CIBLND = "xciblnd")AM_CONDITIONAL(BUILD_IIBLND, test x$IIBLND = "xiiblnd")AM_CONDITIONAL(BUILD_VIBLND, test x$VIBLND = "xviblnd")AM_CONDITIONAL(BUILD_RALND, test x$RALND = "xralnd")AM_CONDITIONAL(BUILD_PTLLND, test x$PTLLND = "xptllnd")AM_CONDITIONAL(BUILD_UPTLLND, test x$UPTLLND = "xptllnd")AM_CONDITIONAL(BUILD_USOCKLND, test x$USOCKLND = "xusocklnd")])## LN_CONFIG_FILES## files that should be generated with AC_OUTPUT#AC_DEFUN([LN_CONFIG_FILES],[AC_CONFIG_FILES([lnet/Kernelenvlnet/Makefilelnet/autoMakefilelnet/autoconf/Makefilelnet/doc/Makefilelnet/include/Makefilelnet/include/libcfs/Makefilelnet/include/libcfs/linux/Makefilelnet/include/lnet/Makefilelnet/include/lnet/linux/Makefilelnet/klnds/Makefilelnet/klnds/autoMakefilelnet/klnds/gmlnd/Makefilelnet/klnds/mxlnd/autoMakefilelnet/klnds/mxlnd/Makefilelnet/klnds/gmlnd/autoMakefilelnet/klnds/openiblnd/Makefilelnet/klnds/openiblnd/autoMakefilelnet/klnds/o2iblnd/Makefilelnet/klnds/o2iblnd/autoMakefilelnet/klnds/ciblnd/Makefilelnet/klnds/ciblnd/autoMakefilelnet/klnds/iiblnd/Makefilelnet/klnds/iiblnd/autoMakefilelnet/klnds/viblnd/Makefilelnet/klnds/viblnd/autoMakefilelnet/klnds/qswlnd/Makefilelnet/klnds/qswlnd/autoMakefilelnet/klnds/ralnd/Makefilelnet/klnds/ralnd/autoMakefilelnet/klnds/socklnd/Makefilelnet/klnds/socklnd/autoMakefilelnet/klnds/ptllnd/Makefilelnet/klnds/ptllnd/autoMakefilelnet/libcfs/Makefilelnet/libcfs/autoMakefilelnet/libcfs/linux/Makefilelnet/lnet/Makefilelnet/lnet/autoMakefilelnet/selftest/Makefilelnet/selftest/autoMakefilelnet/ulnds/Makefilelnet/ulnds/autoMakefilelnet/ulnds/socklnd/Makefilelnet/ulnds/ptllnd/Makefilelnet/utils/Makefile])case $lb_target_os in darwin) AC_CONFIG_FILES([lnet/include/libcfs/darwin/Makefilelnet/include/lnet/darwin/Makefilelnet/libcfs/darwin/Makefile]) ;;esac])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -