4 # check if zerocopy is available/wanted
6 AC_DEFUN([LP_CONFIG_ZEROCOPY],
7 [AC_MSG_CHECKING([for zero-copy TCP support])
8 AC_ARG_ENABLE([zerocopy],
9 AC_HELP_STRING([--disable-zerocopy],
10 [disable socknal zerocopy]),
11 [],[enable_zerocopy='yes'])
12 if test x$enable_zerocopy = xno ; then
13 AC_MSG_RESULT([no (by request)])
15 ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`"
16 if test "$ZCCD" != 0 ; then
17 AC_DEFINE(SOCKNAL_ZC, 1, [use zero-copy TCP])
20 AC_MSG_RESULT([no (no kernel support)])
28 # check if cpu affinity is available/wanted
30 AC_DEFUN([LP_CONFIG_AFFINITY],
31 [AC_ARG_ENABLE([affinity],
32 AC_HELP_STRING([--disable-affinity],
33 [disable process/irq affinity]),
34 [],[enable_affinity='yes'])
36 AC_MSG_CHECKING([for CPU affinity support])
37 if test x$enable_affinity = xno ; then
38 AC_MSG_RESULT([no (by request)])
40 LB_LINUX_TRY_COMPILE([
41 #include <linux/sched.h>
49 set_cpus_allowed(&t, m);
51 AC_DEFINE(CPU_AFFINITY, 1, [kernel has cpu affinity support])
54 AC_MSG_RESULT([no (no kernel support)])
62 # check if quadrics support is in this kernel
64 AC_DEFUN([LP_CONFIG_QUADRICS],
65 [AC_MSG_CHECKING([if quadrics kernel headers are present])
66 if test -d $LINUX/drivers/net/qsnet ; then
69 AC_MSG_CHECKING([for multirail EKC])
70 if test -f $LINUX/include/elan/epcomms.h; then
71 AC_MSG_RESULT([supported])
72 QSWCPPFLAGS="-DMULTIRAIL_EKC=1"
74 AC_MSG_RESULT([not supported])
75 if test -d $LINUX/drivers/net/qsnet/include; then
76 QSWCPPFLAGS="-I$LINUX/drivers/net/qsnet/include"
78 QSWCPPFLAGS="-I$LINUX/include/linux"
93 # check if GM support is available
95 AC_DEFUN([LP_CONFIG_GM],
96 [AC_MSG_CHECKING([if gm support was requested])
98 AC_HELP_STRING([--with-gm=path],
99 [build gmnal against path]),
104 GMCPPFLAGS="-I/usr/local/gm/include"
114 GMCPPFLAGS="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm"
130 # check for OpenIB in the kernel
131 AC_DEFUN([LP_CONFIG_OPENIB],[
132 AC_MSG_CHECKING([whether to enable OpenIB support])
134 DFLTOPENIBCPPFLAGS="-I$LINUX/drivers/infiniband/include -DIN_TREE_BUILD"
135 AC_ARG_WITH([openib],
136 AC_HELP_STRING([--with-openib=path],
137 [build openibnal against path]),
140 yes) OPENIBCPPFLAGS="$DFLTOPENIBCPPFLAGS"
145 *) OPENIBCPPFLAGS="-I$with_openib/include"
150 OPENIBCPPFLAGS="$DFLTOPENIBCPPFLAGS"
153 if test $ENABLEOPENIB -eq 0; then
154 AC_MSG_RESULT([disabled])
156 EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
157 EXTRA_KCFLAGS="$EXTRA_KCFLAGS $OPENIBCPPFLAGS"
158 LB_LINUX_TRY_COMPILE([
159 #include <ts_ib_core.h>
161 struct ib_device_properties props;
165 OPENIBNAL="openibnal"
168 case $ENABLEOPENIB in
170 2) AC_MSG_ERROR([default openib headers not present]);;
171 3) AC_MSG_ERROR([bad --with-openib path]);;
172 *) AC_MSG_ERROR([internal error]);;
177 EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
179 AC_SUBST(OPENIBCPPFLAGS)
186 # check for infinicon infiniband support
188 AC_DEFUN([LP_CONFIG_IIB],
189 [AC_MSG_CHECKING([if Infinicon IB kernel headers are present])
190 # for how the only infinicon ib build has headers in /usr/include/iba
191 IIBCPPFLAGS="-I/usr/include -DIN_TREE_BUILD"
192 EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
193 EXTRA_KCFLAGS="$EXTRA_KCFLAGS $IIBCPPFLAGS"
194 LB_LINUX_TRY_COMPILE([
195 #include <linux/iba/ibt.h>
197 IBT_INTERFACE_UNION interfaces;
200 rc = IbtGetInterfaceByVersion(IBT_INTERFACE_VERSION_2,
203 return rc == FSUCCESS ? 0 : 1;
212 EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
213 AC_SUBST(IIBCPPFLAGS)
220 # check for Voltaire infiniband support
222 AC_DEFUN([LP_CONFIG_VIB],
223 [AC_MSG_CHECKING([if Voltaire IB kernel headers are present])
224 VIBCPPFLAGS="-I/usr/local/include/ibhost-kdevel -DCPU_BE=0 -DCPU_LE=1 -DGSI_PASS_PORT_NUM"
225 EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
226 EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS"
227 LB_LINUX_TRY_COMPILE([
228 #include <linux/list.h>
234 retval = vv_hca_open("ANY_HCA", NULL, &kib_hca);
236 return retval == vv_return_ok ? 0 : 1;
245 EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
246 AC_SUBST(VIBCPPFLAGS)
253 # check whether to use the RapidArray nal
255 AC_DEFUN([LP_CONFIG_RANAL],
257 AC_MSG_CHECKING([if RapidArray kernel headers are present])
260 EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
261 EXTRA_KCFLAGS="$EXTRA_KCFLAGS $RACPPFLAGS"
262 LB_LINUX_TRY_COMPILE([
263 #include <linux/types.h>
267 RAP_PVOID dev_handle;
269 rc = RapkGetDeviceByIndex(0, NULL, &dev_handle);
271 return rc == RAP_SUCCESS ? 0 : 1;
280 EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
286 # LP_STRUCT_PAGE_LIST
288 # 2.6.4 no longer has page->list
290 AC_DEFUN([LP_STRUCT_PAGE_LIST],
291 [AC_MSG_CHECKING([if struct page has a list field])
292 LB_LINUX_TRY_COMPILE([
293 #include <linux/mm.h>
299 AC_DEFINE(HAVE_PAGE_LIST, 1, [struct page has a list field])
308 # red hat 2.4 adds sighand to struct task_struct
310 AC_DEFUN([LP_STRUCT_SIGHAND],
311 [AC_MSG_CHECKING([if task_struct has a sighand field])
312 LB_LINUX_TRY_COMPILE([
313 #include <linux/sched.h>
315 struct task_struct p;
318 AC_DEFINE(CONFIG_RH_2_4_20, 1, [this kernel contains Red Hat 2.4.20 patches])
328 # cpu_online is different in rh 2.4, vanilla 2.4, and 2.6
330 AC_DEFUN([LP_FUNC_CPU_ONLINE],
331 [AC_MSG_CHECKING([if kernel defines cpu_online()])
332 LB_LINUX_TRY_COMPILE([
333 #include <linux/sched.h>
338 AC_DEFINE(HAVE_CPU_ONLINE, 1, [cpu_online found])
347 # same goes for cpumask_t
349 AC_DEFUN([LP_TYPE_CPUMASK_T],
350 [AC_MSG_CHECKING([if kernel defines cpumask_t])
351 LB_LINUX_TRY_COMPILE([
352 #include <linux/sched.h>
354 return sizeof (cpumask_t);
357 AC_DEFINE(HAVE_CPUMASK_T, 1, [cpumask_t found])
366 # we export show_task(), but not all kernels have it (yet)
368 AC_DEFUN([LP_FUNC_SHOW_TASK],
369 [AC_MSG_CHECKING([if kernel exports show_task])
371 for file in ksyms sched ; do
372 if grep -q "EXPORT_SYMBOL(show_task)" \
373 "$LINUX/kernel/$file.c" 2>/dev/null ; then
378 if test x$have_show_task = x1 ; then
379 AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])
389 # Portals linux kernel checks
391 AC_DEFUN([LP_PROG_LINUX],
411 # default paths for installed files
413 AC_DEFUN([LP_PATH_DEFAULTS],
420 # other configure checks
422 AC_DEFUN([LP_CONFIGURE],
423 [# portals/utils/portals.c
424 AC_CHECK_HEADERS([netdb.h netinet/tcp.h asm/types.h])
425 AC_CHECK_FUNCS([gethostbyname socket connect])
427 # portals/utils/debug.c
428 AC_CHECK_HEADERS([linux/version.h])
430 AC_CHECK_TYPE([spinlock_t],
431 [AC_DEFINE(HAVE_SPINLOCK_T, 1, [spinlock_t is defined])],
433 [#include <linux/spinlock.h>])
435 # -------- Check for required packages --------------
437 # this doesn't seem to work on older autoconf
438 # AC_CHECK_LIB(readline, readline,,)
439 AC_MSG_CHECKING([for readline support])
440 AC_ARG_ENABLE(readline,
441 AC_HELP_STRING([--disable-readline],
442 [do not use readline library]),
443 [],[enable_readline='yes'])
444 AC_MSG_RESULT([$enable_readline])
445 if test x$enable_readline = xyes ; then
446 LIBREADLINE="-lreadline -lncurses"
447 AC_DEFINE(HAVE_LIBREADLINE, 1, [readline library is available])
451 AC_SUBST(LIBREADLINE)
453 AC_MSG_CHECKING([if efence debugging support is requested])
454 AC_ARG_ENABLE(efence,
455 AC_HELP_STRING([--enable-efence],
456 [use efence library]),
457 [],[enable_efence='no'])
458 AC_MSG_RESULT([$enable_efence])
459 if test "$enable_efence" = "yes" ; then
461 AC_DEFINE(HAVE_LIBEFENCE, 1, [libefence support is requested])
467 # -------- enable acceptor libwrap (TCP wrappers) support? -------
468 AC_MSG_CHECKING([if libwrap support is requested])
469 AC_ARG_ENABLE([libwrap],
470 AC_HELP_STRING([--enable-libwrap], [use TCP wrappers]),
471 [case "${enableval}" in
472 yes) enable_libwrap=yes ;;
473 no) enable_libwrap=no ;;
474 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libwrap) ;;
475 esac],[enable_libwrap=no])
476 AC_MSG_RESULT([$enable_libwrap])
477 if test x$enable_libwrap = xyes ; then
479 AC_DEFINE(HAVE_LIBWRAP, 1, [libwrap support is requested])
485 # ----------------------------------------
486 # some tests for catamount-like systems
487 # ----------------------------------------
488 AC_ARG_ENABLE([sysio_init],
489 AC_HELP_STRING([--disable-sysio-init],
490 [call sysio init functions when initializing liblustre]),
491 [],[enable_sysio_init=yes])
492 AC_MSG_CHECKING([whether to initialize libsysio])
493 AC_MSG_RESULT([$enable_sysio_init])
494 if test x$enable_sysio_init != xno ; then
495 AC_DEFINE([INIT_SYSIO], 1, [call sysio init functions])
498 AC_ARG_ENABLE([urandom],
499 AC_HELP_STRING([--disable-urandom],
500 [disable use of /dev/urandom for liblustre]),
501 [],[enable_urandom=yes])
502 AC_MSG_CHECKING([whether to use /dev/urandom for liblustre])
503 AC_MSG_RESULT([$enable_urandom])
504 if test x$enable_urandom != xno ; then
505 AC_DEFINE([LIBLUSTRE_USE_URANDOM], 1, [use /dev/urandom for random data])
508 # -------- check for -lcap and -lpthread ----
509 if test x$enable_liblustre = xyes ; then
510 AC_CHECK_LIB([cap], [cap_get_proc],
513 AC_DEFINE([HAVE_LIBCAP], 1, [use libcap])
517 AC_CHECK_LIB([pthread], [pthread_create],
519 PTHREAD_LIBS="-lpthread"
520 AC_DEFINE([HAVE_LIBPTHREAD], 1, [use libpthread])
523 AC_SUBST(PTHREAD_LIBS)
530 # AM_CONDITOINAL defines for portals
532 AC_DEFUN([LP_CONDITIONALS],
533 [AM_CONDITIONAL(BUILD_QSWNAL, test x$QSWNAL = "xqswnal")
534 AM_CONDITIONAL(BUILD_GMNAL, test x$GMNAL = "xgmnal")
535 AM_CONDITIONAL(BUILD_OPENIBNAL, test x$OPENIBNAL = "xopenibnal")
536 AM_CONDITIONAL(BUILD_IIBNAL, test x$IIBNAL = "xiibnal")
537 AM_CONDITIONAL(BUILD_VIBNAL, test x$VIBNAL = "xvibnal")
538 AM_CONDITIONAL(BUILD_RANAL, test x$RANAL = "xranal")
544 # files that should be generated with AC_OUTPUT
546 AC_DEFUN([LP_CONFIG_FILES],
551 portals/autoconf/Makefile
553 portals/include/Makefile
554 portals/include/linux/Makefile
555 portals/include/portals/Makefile
556 portals/knals/Makefile
557 portals/knals/autoMakefile
558 portals/knals/gmnal/Makefile
559 portals/knals/gmnal/autoMakefile
560 portals/knals/openibnal/Makefile
561 portals/knals/openibnal/autoMakefile
562 portals/knals/iibnal/Makefile
563 portals/knals/iibnal/autoMakefile
564 portals/knals/vibnal/Makefile
565 portals/knals/vibnal/autoMakefile
566 portals/knals/lonal/Makefile
567 portals/knals/lonal/autoMakefile
568 portals/knals/qswnal/Makefile
569 portals/knals/qswnal/autoMakefile
570 portals/knals/ranal/Makefile
571 portals/knals/ranal/autoMakefile
572 portals/knals/socknal/Makefile
573 portals/knals/socknal/autoMakefile
574 portals/libcfs/Makefile
575 portals/libcfs/autoMakefile
576 portals/portals/Makefile
577 portals/portals/autoMakefile
578 portals/router/Makefile
579 portals/router/autoMakefile
580 portals/tests/Makefile
581 portals/tests/autoMakefile
582 portals/unals/Makefile
583 portals/utils/Makefile