diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index 22c5b06d61b0cc6ec0e0a692e1911e25c14a3548..0768673dd89b93f91ba8fe347afbfa67be33b2ee 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -228,31 +228,75 @@ AC_SUBST(OPENIBNAL) # # 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) ])