#
+# LP_CHECK_GCC_VERSION
+#
+# Check compiler version
+#
+AC_DEFUN([LP_CHECK_GCC_VERSION],
+[AC_MSG_CHECKING([compiler version])
+PTL_CC_VERSION=`$CC --version | awk '/^gcc/{print $ 3}'`
+PTL_MIN_CC_VERSION="3.2.2"
+v2n() {
+ awk -F. '{printf "%d\n", (($ 1)*100+($ 2))*100+($ 3)}'
+}
+if test -z "$PTL_CC_VERSION" -o \
+ `echo $PTL_CC_VERSION | v2n` -ge `echo $PTL_MIN_CC_VERSION | v2n`; then
+ AC_MSG_RESULT([ok])
+else
+ AC_MSG_RESULT([Buggy compiler found])
+ AC_MSG_ERROR([Need gcc version >= $PTL_MIN_CC_VERSION])
+fi
+])
+
+#
# LP_CONFIG_ZEROCOPY
#
# check if zerocopy is available/wanted
# check if quadrics support is in this kernel
#
AC_DEFUN([LP_CONFIG_QUADRICS],
-[AC_MSG_CHECKING([if quadrics kernel headers are present])
-if test -d $LINUX/drivers/net/qsnet ; then
+[AC_MSG_CHECKING([for QsNet sources])
+AC_ARG_WITH([qsnet],
+ AC_HELP_STRING([--with-qsnet=path],
+ [set path to qsnet source (default=$LINUX)]),
+ [QSNET=$with_qsnet],
+ [QSNET=$LINUX])
+AC_MSG_RESULT([$QSNET])
+
+AC_MSG_CHECKING([if quadrics kernel headers are present])
+if test -d $QSNET/drivers/net/qsnet ; then
AC_MSG_RESULT([yes])
QSWNAL="qswnal"
AC_MSG_CHECKING([for multirail EKC])
- if test -f $LINUX/include/elan/epcomms.h; then
+ if test -f $QSNET/include/elan/epcomms.h; then
AC_MSG_RESULT([supported])
- QSWCPPFLAGS="-DMULTIRAIL_EKC=1"
+ QSWCPPFLAGS="-I$QSNET/include -DMULTIRAIL_EKC=1"
else
AC_MSG_RESULT([not supported])
- if test -d $LINUX/drivers/net/qsnet/include; then
- QSWCPPFLAGS="-I$LINUX/drivers/net/qsnet/include"
+ if test -d $QSNET/drivers/net/qsnet/include; then
+ QSWCPPFLAGS="-I$QSNET/drivers/net/qsnet/include"
else
- QSWCPPFLAGS="-I$LINUX/include/linux"
+ QSWCPPFLAGS="-I$QSNET/include/linux"
fi
fi
+
+ LB_LINUX_CONFIG([QSNET],[],[
+ LB_LINUX_CONFIG([QSNET_MODULE],[],[
+ AC_MSG_WARN([QSNET is not enabled in this kernel; not building qswnal.])
+ QSWNAL=""
+ QSWCPPFLAGS=""
+ ])
+ ])
else
AC_MSG_RESULT([no])
QSWNAL=""
# check if GM support is available
#
AC_DEFUN([LP_CONFIG_GM],
-[AC_MSG_CHECKING([if gm support was requested])
-AC_ARG_WITH([gm],
- AC_HELP_STRING([--with-gm=path],
- [build gmnal against path]),
- [
- case $with_gm in
- yes)
- AC_MSG_RESULT([yes])
- GMCPPFLAGS="-I/usr/local/gm/include"
- GMNAL="gmnal"
- ;;
- no)
- AC_MSG_RESULT([no])
- GMCPPFLAGS=""
- GMNAL=""
- ;;
- *)
- AC_MSG_RESULT([yes])
- GMCPPFLAGS="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm"
- GMNAL="gmnal"
- ;;
- esac
- ],[
- AC_MSG_RESULT([no])
- GMCPPFLAGS=""
- GMNAL=""
- ])
+[LB_ARG_LIBS_INCLUDES([Myrinet],[gm])
+if test x$gm_includes != x ; then
+ GMCPPFLAGS="-I$gm_includes"
+ if test -d "$gm/drivers" ; then
+ GMCPPFLAGS="$GMCPPFLAGS -I$gm/drivers -I$gm/drivers/linux/gm"
+ fi
+fi
AC_SUBST(GMCPPFLAGS)
+
+if test x$gm_libs != x ; then
+ GMLIBS="-L$gm_libs"
+fi
+AC_SUBST(GMLIBS)
+
+ENABLE_GM=0
+if test x$gm != x ; then
+ GMNAL="gmnal"
+ ENABLE_GM=1
+fi
AC_SUBST(GMNAL)
+AC_SUBST(ENABLE_GM)
])
#
struct ib_device_properties dev_props;
struct ib_cm_active_param cm_active_params;
tTS_IB_CLIENT_QUERY_TID tid;
+ int enum1 = IB_QP_ATTRIBUTE_STATE;
+ int enum2 = IB_ACCESS_LOCAL_WRITE;
+ int enum3 = IB_CQ_CALLBACK_INTERRUPT;
+ int enum4 = IB_CQ_PROVIDER_REARM;
return 0;
],[
AC_MSG_RESULT([yes])
#
# check for infinicon infiniband support
#
-AC_DEFUN([LP_CONFIG_IIB],
-[AC_MSG_CHECKING([if Infinicon IB kernel headers are present])
-# for how the only infinicon ib build has headers in /usr/include/iba
-IIBCPPFLAGS="-I/usr/include -DIN_TREE_BUILD"
-EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS $IIBCPPFLAGS"
-LB_LINUX_TRY_COMPILE([
- #include <linux/iba/ibt.h>
-],[
- IBT_INTERFACE_UNION interfaces;
- FSTATUS rc;
+#
+# LP_CONFIG_IIB
+#
+# check for infinicon infiniband support
+#
+AC_DEFUN([LP_CONFIG_IIB],[
+AC_MSG_CHECKING([whether to enable Infinicon support])
+# set default
+IIBPATH="/usr/include"
+AC_ARG_WITH([iib],
+ AC_HELP_STRING([--with-iib=path],
+ [build iibnal against path]),
+ [
+ case $with_iib in
+ yes) ENABLEIIB=2
+ ;;
+ no) ENABLEIIB=0
+ ;;
+ *) IIBPATH="${with_iib}/include"
+ ENABLEIIB=3
+ ;;
+ esac
+ ],[
+ ENABLEIIB=1
+ ])
+if test $ENABLEIIB -eq 0; then
+ AC_MSG_RESULT([disabled])
+elif test ! \( -f ${IIBPATH}/linux/iba/ibt.h \); then
+ AC_MSG_RESULT([no])
+ case $ENABLEIIB in
+ 1) ;;
+ 2) AC_MSG_ERROR([default Infinicon headers not present]);;
+ 3) AC_MSG_ERROR([bad --with-iib path]);;
+ *) AC_MSG_ERROR([internal error]);;
+ esac
+else
+ IIBCPPFLAGS="-I$IIBPATH"
+ if test $IIBPATH != "/usr/include"; then
+ # we need /usr/include come what may
+ IIBCPPFLAGS="$IIBCPPFLAGS -I/usr/include"
+ fi
+ EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS $IIBCPPFLAGS"
+ LB_LINUX_TRY_COMPILE([
+ #include <linux/iba/ibt.h>
+ ],[
+ IBT_INTERFACE_UNION interfaces;
+ FSTATUS rc;
- rc = IbtGetInterfaceByVersion(IBT_INTERFACE_VERSION_2,
- &interfaces);
+ rc = IbtGetInterfaceByVersion(IBT_INTERFACE_VERSION_2,
+ &interfaces);
- return rc == FSUCCESS ? 0 : 1;
-],[
- AC_MSG_RESULT([yes])
- IIBNAL="iibnal"
-],[
- AC_MSG_RESULT([no])
- IIBNAL=""
- IIBCPPFLAGS=""
-])
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+ return rc == FSUCCESS ? 0 : 1;
+ ],[
+ AC_MSG_RESULT([yes])
+ IIBNAL="iibnal"
+ ],[
+ AC_MSG_RESULT([no])
+ case $ENABLEIIB in
+ 1) ;;
+ 2) AC_MSG_ERROR([can't compile with default Infinicon headers]);;
+ 3) AC_MSG_ERROR([can't compile with Infinicon headers under $IIBPATH]);;
+ *) AC_MSG_ERROR([internal error]);;
+ esac
+ IIBNAL=""
+ IIBCPPFLAGS=""
+ ])
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+fi
AC_SUBST(IIBCPPFLAGS)
AC_SUBST(IIBNAL)
])
# check for Voltaire infiniband support
#
AC_DEFUN([LP_CONFIG_VIB],
-[AC_MSG_CHECKING([if Voltaire IB kernel headers are present])
-VIBCPPFLAGS="-I/usr/local/include/ibhost-kdevel -DCPU_BE=0 -DCPU_LE=1 -DGSI_PASS_PORT_NUM"
-EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS"
-LB_LINUX_TRY_COMPILE([
- #include <linux/list.h>
- #include <vverbs.h>
-],[
- vv_hca_h_t kib_hca;
- vv_return_t retval;
+[AC_MSG_CHECKING([whether to enable Voltaire IB support])
+VIBPATH=""
+AC_ARG_WITH([vib],
+ AC_HELP_STRING([--with-vib=path],
+ [build vibnal against path]),
+ [
+ case $with_vib in
+ no) AC_MSG_RESULT([no]);;
+ *) VIBPATH="${with_vib}/src/nvigor/ib-code"
+ if test -d "$with_vib" -a -d "$VIBPATH"; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([No directory $VIBPATH])
+ fi;;
+ esac
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+if test -z "$VIBPATH"; then
+ VIBNAL=""
+else
+ VIBCPPFLAGS="-I${VIBPATH}/include -I${VIBPATH}/cm"
+ EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS"
+ LB_LINUX_TRY_COMPILE([
+ #include <linux/list.h>
+ #include <asm/byteorder.h>
+ #ifdef __BIG_ENDIAN
+ # define CPU_BE 1
+ # define CPU_LE 0
+ #endif
+ #ifdef __LITTLE_ENDIAN
+ # define CPU_BE 0
+ # define CPU_LE 1
+ #endif
+ #include <vverbs.h>
+ #include <ib-cm.h>
+ #include <ibat.h>
+ ],[
+ vv_hca_h_t kib_hca;
+ vv_return_t vvrc;
+ cm_cep_handle_t cep;
+ ibat_arp_data_t arp_data;
+ ibat_stat_t ibatrc;
+
+ vvrc = vv_hca_open("ANY_HCA", NULL, &kib_hca);
+ cep = cm_create_cep(cm_cep_transp_rc);
+ ibatrc = ibat_get_ib_data((uint32_t)0, (uint32_t)0,
+ ibat_paths_primary, &arp_data,
+ (ibat_get_ib_data_reply_fn_t)NULL,
+ NULL, 0);
+ return 0;
+ ],[
+ VIBNAL="vibnal"
+ ],[
+ AC_MSG_ERROR([can't compile vibnal with given path])
+ ])
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+fi
+if test -n "$VIBNAL"; then
+ EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS"
+ AC_MSG_CHECKING([if Voltaire still uses void * sg addresses])
+ LB_LINUX_TRY_COMPILE([
+ #include <linux/list.h>
+ #include <asm/byteorder.h>
+ #ifdef __BIG_ENDIAN
+ # define CPU_BE 1
+ # define CPU_LE 0
+ #endif
+ #ifdef __LITTLE_ENDIAN
+ # define CPU_BE 0
+ # define CPU_LE 1
+ #endif
+ #include <vverbs.h>
+ #include <ib-cm.h>
+ #include <ibat.h>
+ ],[
+ vv_scatgat_t sg;
- retval = vv_hca_open("ANY_HCA", NULL, &kib_hca);
+ return &sg.v_address[3] == NULL;
+ ],[
+ AC_MSG_RESULT([yes])
+ VIBCPPFLAGS="$VIBCPPFLAGS -DIBNAL_VOIDSTAR_SGADDR=1"
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+ AC_MSG_CHECKING([if page_to_phys() must avoid sign extension])
+ LB_LINUX_TRY_COMPILE([
+ #include <linux/kernel.h>
+ #include <linux/mm.h>
+ #include <linux/unistd.h>
+ #include <asm/system.h>
+ #include <asm/io.h>
+ ],[
+ struct page p;
- return retval == vv_return_ok ? 0 : 1;
-],[
- AC_MSG_RESULT([yes])
- VIBNAL="vibnal"
-],[
- AC_MSG_RESULT([no])
- VIBNAL=""
- VIBCPPFLAGS=""
-])
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+ switch (42) {
+ case 0:
+ case (sizeof(typeof(page_to_phys(&p))) < 8):
+ break;
+ }
+ ],[
+ AC_MSG_RESULT([yes])
+ VIBCPPFLAGS="$VIBCPPFLAGS -DIBNAL_32BIT_PAGE2PHYS=1"
+ ],[
+ AC_MSG_RESULT([no])
+ ])
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+fi
AC_SUBST(VIBCPPFLAGS)
AC_SUBST(VIBNAL)
])
[#### Rapid Array
AC_MSG_CHECKING([if RapidArray kernel headers are present])
# placeholder
-RACPPFLAGS="-I/tmp"
+RACPPFLAGS="-I${LINUX}/drivers/xd1/include"
EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="$EXTRA_KCFLAGS $RACPPFLAGS"
LB_LINUX_TRY_COMPILE([
LP_CONFIG_QUADRICS
LP_CONFIG_GM
LP_CONFIG_OPENIB
-LP_CONFIG_IIB
LP_CONFIG_VIB
+LP_CONFIG_IIB
LP_CONFIG_RANAL
LP_STRUCT_PAGE_LIST
])
#
+# LP_PROG_DARWIN
+#
+# Darwin checks
+#
+AC_DEFUN([LP_PROG_DARWIN],
+[LB_DARWIN_CHECK_FUNCS([get_preemption_level])
+])
+
+#
# LP_PATH_DEFAULTS
#
# default paths for installed files
#
AC_DEFUN([LP_CONFIGURE],
[# portals/utils/portals.c
-AC_CHECK_HEADERS([netdb.h netinet/tcp.h asm/types.h])
+AC_CHECK_HEADERS([netdb.h netinet/tcp.h asm/types.h endian.h sys/ioctl.h])
AC_CHECK_FUNCS([gethostbyname socket connect])
# portals/utils/debug.c
[],
[#include <linux/spinlock.h>])
+# portals/utils/wirecheck.c
+AC_CHECK_FUNCS([strnlen])
+
# -------- Check for required packages --------------
-# this doesn't seem to work on older autoconf
-# AC_CHECK_LIB(readline, readline,,)
-AC_MSG_CHECKING([for readline support])
-AC_ARG_ENABLE(readline,
- AC_HELP_STRING([--disable-readline],
- [do not use readline library]),
- [],[enable_readline='yes'])
-AC_MSG_RESULT([$enable_readline])
-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])
-else
+],[
LIBREADLINE=""
-fi
+])
+LIBS="$LIBS_save"
AC_SUBST(LIBREADLINE)
AC_MSG_CHECKING([if efence debugging support is requested])
portals/autoconf/Makefile
portals/doc/Makefile
portals/include/Makefile
-portals/include/linux/Makefile
+portals/include/libcfs/Makefile
+portals/include/libcfs/linux/Makefile
portals/include/portals/Makefile
+portals/include/portals/linux/Makefile
portals/knals/Makefile
portals/knals/autoMakefile
portals/knals/gmnal/Makefile
portals/knals/socknal/autoMakefile
portals/libcfs/Makefile
portals/libcfs/autoMakefile
+portals/libcfs/linux/Makefile
portals/portals/Makefile
portals/portals/autoMakefile
portals/router/Makefile
portals/unals/Makefile
portals/utils/Makefile
])
+case $lb_target_os in
+ darwin)
+ AC_CONFIG_FILES([
+portals/include/libcfs/darwin/Makefile
+portals/include/portals/darwin/Makefile
+portals/libcfs/darwin/Makefile
+])
+ ;;
+esac
])