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.3"
+PTL_MIN_CC_VERSION="3.2.2"
v2n() {
awk -F. '{printf "%d\n", (($ 1)*100+($ 2))*100+($ 3)}'
}
# 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)
])
#
#
# 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)
])
])
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;
+
+ 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;
+
+ 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)
])
# Portals linux kernel checks
#
AC_DEFUN([LP_PROG_LINUX],
-[LP_CHECK_GCC_VERSION
-
-LP_CONFIG_ZEROCOPY
+[LP_CONFIG_ZEROCOPY
LP_CONFIG_AFFINITY
LP_CONFIG_QUADRICS
LP_CONFIG_GM
#
AC_DEFUN([LP_CONFIGURE],
[# portals/utils/portals.c
-AC_CHECK_HEADERS([netdb.h netinet/tcp.h asm/types.h endian.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