Whamcloud - gitweb
LU-1346 libcfs: cleanup macros in kp30.h
[fs/lustre-release.git] / lnet / autoconf / lustre-lnet.m4
index 4cd30eb..0a1232e 100644 (file)
@@ -10,13 +10,13 @@ AC_ARG_WITH([max-payload-mb],
                        [set maximum lnet payload in MBytes]),
         [
                AC_MSG_RESULT([$with_max_payload_mb])
-               LNET_MAX_PAYLOAD_MB=$with_max_payload_mb
-               LNET_MAX_PAYLOAD="(($with_max_payload_mb)<<20)"
+               CONFIG_LNET_MAX_PAYLOAD_MB=$with_max_payload_mb
+               CONFIG_LNET_MAX_PAYLOAD="(($with_max_payload_mb)<<20)"
        ], [
                AC_MSG_RESULT([no])
-               LNET_MAX_PAYLOAD="LNET_MTU"
+               CONFIG_LNET_MAX_PAYLOAD="LNET_MTU"
        ])
-        AC_DEFINE_UNQUOTED(LNET_MAX_PAYLOAD, $LNET_MAX_PAYLOAD,
+       AC_DEFINE_UNQUOTED(CONFIG_LNET_MAX_PAYLOAD, $CONFIG_LNET_MAX_PAYLOAD,
                           [Max LNET payload])
 ])
 
@@ -117,11 +117,12 @@ PTLLNDCPPFLAGS=""
 if test $ENABLEPORTALS -eq 0; then
        AC_MSG_RESULT([no])
 elif test ! \( -f ${PORTALS}/include/portals/p30.h \); then
-        AC_MSG_RESULT([no])
+       AC_MSG_RESULT([no])
        AC_MSG_ERROR([bad --with-portals path])
 else
-        AC_MSG_RESULT([$PORTALS])
-        PTLLNDCPPFLAGS="-I${PORTALS}/include"
+       PORTALS=$(readlink --canonicalize $PORTALS)
+       AC_MSG_RESULT([$PORTALS])
+       PTLLNDCPPFLAGS="-I${PORTALS}/include"
 fi
 AC_SUBST(PTLLNDCPPFLAGS)
 ])
@@ -247,6 +248,7 @@ if test -d $QSNET/drivers/net/qsnet ; then
        QSWLND="qswlnd"
        AC_MSG_CHECKING([for multirail EKC])
        if test -f $QSNET/include/elan/epcomms.h; then
+               QSNET=$(readlink --canonicalize $QSNET)
                AC_MSG_RESULT([supported])
                QSWCPPFLAGS="-I$QSNET/include -DMULTIRAIL_EKC=1"
        else
@@ -309,6 +311,7 @@ elif test ! \( -f ${MXPATH}/include/myriexpress.h -a \
        *) AC_MSG_ERROR([internal error]);;
        esac
 else
+       MXPATH=$(readlink --canonicalize $MXPATH)
        MXCPPFLAGS="-I$MXPATH/include"
        EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
        EXTRA_KCFLAGS="$EXTRA_KCFLAGS $MXCPPFLAGS"
@@ -404,6 +407,7 @@ else
                        *) AC_MSG_ERROR([internal error]);;
                esac
        else
+               O2IBPATH=$(readlink --canonicalize $O2IBPATH)
                O2IBCPPFLAGS="-I$O2IBPATH/include"
                EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
                EXTRA_KCFLAGS="$EXTRA_KCFLAGS $O2IBCPPFLAGS"
@@ -413,6 +417,9 @@ else
                        #include <linux/version.h>
                        #include <linux/pci.h>
                        #include <linux/gfp.h>
+                       #ifdef HAVE_COMPAT_RDMA
+                       #include <linux/compat-2.6.h>
+                       #endif
                        #include <rdma/rdma_cm.h>
                        #include <rdma/ib_cm.h>
                        #include <rdma/ib_verbs.h>
@@ -478,6 +485,9 @@ AC_SUBST(O2IBLND)
 if test $ENABLEO2IB -ne 0; then
        AC_MSG_CHECKING([if rdma_create_id wants four args])
        LB_LINUX_TRY_COMPILE([
+               #ifdef HAVE_COMPAT_RDMA
+               #include <linux/compat-2.6.h>
+               #endif
                #include <rdma/rdma_cm.h>
        ],[
                rdma_create_id(NULL, NULL, 0, 0);
@@ -526,13 +536,88 @@ AC_SUBST(RACPPFLAGS)
 AC_SUBST(RALND)
 ])
 
+#
+# LN_CONFIG_GNILND
+#
+# check whether to use the Gemini Network Interface lnd
+#
+AC_DEFUN([LN_CONFIG_GNILND],
+[#### Gemini Network Interface
+AC_MSG_CHECKING([whether to enable GNI lnd])
+AC_ARG_ENABLE([gni],
+       AC_HELP_STRING([--enable-gni],
+                       [enable GNI lnd]),
+       [],[enable_gni='no'])
+AC_MSG_RESULT([$enable_gni])
+
+if test x$enable_gni = xyes ; then
+       AC_MSG_CHECKING([if GNI kernel headers are present])
+       # placeholder
+       # GNICPPFLAGS was set in spec file
+       EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="$EXTRA_KCFLAGS $GNICPPFLAGS"
+       LB_LINUX_TRY_COMPILE([
+               #include <linux/types.h>
+               #include <gni_pub.h>
+       ],[
+               gni_cdm_handle_t        kgni_domain;
+               gni_return_t            rc;
+               int                     rrc;
+
+               rc = gni_cdm_create(0, 1, 1, 0, &kgni_domain);
+
+               rrc = (rc == GNI_RC_SUCCESS) ? 0 : 1;
+
+               return rrc;
+       ],[
+               AC_MSG_RESULT([yes])
+               GNILND="gnilnd"
+       ],[
+               AC_MSG_RESULT([no])
+               AC_MSG_ERROR([can't compile gnilnd with given GNICPPFLAGS: $GNICPPFLAGS])
+       ])
+       # at this point, we have gnilnd basic support, now check for extra features
+       AC_MSG_CHECKING([to use RCA in gnilnd])
+       LB_LINUX_TRY_COMPILE([
+               #include <linux/types.h>
+               #include <gni_pub.h>
+               #include <krca_lib.h>
+       ],[
+               gni_cdm_handle_t        kgni_domain;
+               gni_return_t            rc;
+               krca_ticket_t           ticket = KRCA_NULL_TICKET;
+               int                     rrc;
+               __u32                   nid = 0, nic_addr;
+
+               rc = gni_cdm_create(0, 1, 1, 0, &kgni_domain);
+
+               rrc = (rc == GNI_RC_SUCCESS) ? 0 : 1;
+
+               rrc += krca_nid_to_nicaddrs(nid, 1, &nic_addr);
+
+               rrc += krca_register(&ticket, RCA_MAKE_SERVICE_INDEX(RCA_IO_CLASS, 9), 99, 0);
+
+               return rrc;
+       ],[
+               AC_MSG_RESULT([yes])
+               GNICPPFLAGS="$GNICPPFLAGS -DGNILND_USE_RCA=1"
+               GNILNDRCA="gnilndrca"
+       ],[
+               AC_MSG_RESULT([no])
+       ])
+       EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+fi
+AC_SUBST(GNICPPFLAGS)
+AC_SUBST(GNILNDRCA)
+AC_SUBST(GNILND)
+])
 
 
 #
 #
 # LN_CONFIG_USERSPACE
 #
-# This is defined but empty because it is called from 
+# This is defined but empty because it is called from
 # build/autconf/lustre-build.m4 which is shared by all branches.
 #
 AC_DEFUN([LN_CONFIG_USERSPACE],
@@ -598,6 +683,7 @@ LN_CONFIG_BACKOFF
 LN_CONFIG_QUADRICS
 LN_CONFIG_O2IB
 LN_CONFIG_RALND
+LN_CONFIG_GNILND
 LN_CONFIG_PTLLND
 LN_CONFIG_MX
 # 2.6.32
@@ -740,6 +826,8 @@ AC_DEFUN([LN_CONDITIONALS],
 AM_CONDITIONAL(BUILD_MXLND, test x$MXLND = "xmxlnd")
 AM_CONDITIONAL(BUILD_O2IBLND, test x$O2IBLND = "xo2iblnd")
 AM_CONDITIONAL(BUILD_RALND, test x$RALND = "xralnd")
+AM_CONDITIONAL(BUILD_GNILND, test x$GNILND = "xgnilnd")
+AM_CONDITIONAL(BUILD_GNILND_RCA, test x$GNILNDRCA = "xgnilndrca")
 AM_CONDITIONAL(BUILD_PTLLND, test x$PTLLND = "xptllnd")
 AM_CONDITIONAL(BUILD_USOCKLND, test x$USOCKLND = "xusocklnd")
 ])
@@ -769,6 +857,8 @@ lnet/klnds/qswlnd/Makefile
 lnet/klnds/qswlnd/autoMakefile
 lnet/klnds/ralnd/Makefile
 lnet/klnds/ralnd/autoMakefile
+lnet/klnds/gnilnd/Makefile
+lnet/klnds/gnilnd/autoMakefile
 lnet/klnds/socklnd/Makefile
 lnet/klnds/socklnd/autoMakefile
 lnet/klnds/ptllnd/Makefile