From: jacob Date: Wed, 2 Mar 2005 21:16:30 +0000 (+0000) Subject: b=5786 X-Git-Tag: 1.3.4~91 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=30ed781ce3d181bef5e1720309acc4da8b4c38df;p=fs%2Flustre-release.git b=5786 r=phil create an awesome super macro for nicely handling --with-foo, --with-foo-includes, and --with-foo-libs for some situations we encounter. make gm and cray portals use it. --- diff --git a/build/autoconf/lustre-build.m4 b/build/autoconf/lustre-build.m4 index 5d1e4c1..e4e86bb 100644 --- a/build/autoconf/lustre-build.m4 +++ b/build/autoconf/lustre-build.m4 @@ -58,6 +58,59 @@ $2], [$3])])]) # +# LB_ARG_LIBS_INCLUDES +# +# support for --with-foo, --with-foo-includes, and --with-foo-libs in +# a single magical macro +# +AC_DEFUN([LB_ARG_LIBS_INCLUDES], +[lb_pathvar="m4_bpatsubst([$2], -, _)" +AC_MSG_CHECKING([for $1]) +AC_ARG_WITH([$2], + AC_HELP_STRING([--with-$2=path], + [path to $1]), + [],[withval=$4]) + +if test x$withval = xyes ; then + eval "$lb_pathvar='$3'" +else + eval "$lb_pathvar='$withval'" +fi +AC_MSG_RESULT([${!lb_pathvar:-no}]) + +if test x${!lb_pathvar} != x -a x${!lb_pathvar} != xno ; then + AC_MSG_CHECKING([for $1 includes]) + AC_ARG_WITH([$2-includes], + AC_HELP_STRING([--with-$2-includes=path], + [path to $1 includes]), + [],[withval='yes']) + + lb_includevar="${lb_pathvar}_includes" + if test x$withval = xyes ; then + eval "${lb_includevar}='${!lb_pathvar}/include'" + else + eval "${lb_includevar}='$withval'" + fi + AC_MSG_RESULT([${!lb_includevar}]) + + AC_MSG_CHECKING([for $1 libs]) + AC_ARG_WITH([$2-libs], + AC_HELP_STRING([--with-$2-libs=path], + [path to $1 libs]), + [],[withval='yes']) + + lb_libvar="${lb_pathvar}_libs" + if test x$withval = xyes ; then + eval "${lb_libvar}='${!lb_pathvar}/lib'" + else + eval "${lb_libvar}='$withval'" + fi + AC_MSG_RESULT([${!lb_libvar}]) +fi +]) +]) + +# # LB_PATH_LIBSYSIO # # Handle internal/external libsysio @@ -111,65 +164,30 @@ AC_CONFIG_SUBDIRS(libsysio) # Support for external Cray portals # AC_DEFUN([LB_PATH_CRAY_PORTALS], -[AC_MSG_CHECKING([for Cray portals]) -AC_ARG_WITH([cray-portals], - AC_HELP_STRING([--with-cray-portals=path], - [path to cray portals]), - [ - if test "$with_cray_portals" != no; then - CRAY_PORTALS_PATH=$with_cray_portals - CRAY_PORTALS_INCLUDES="$with_cray_portals/include" - CRAY_PORTALS_LIBS="$with_cray_portals" - fi - ],[with_cray_portals=no]) -AC_SUBST(CRAY_PORTALS_PATH) -AC_MSG_RESULT([$CRAY_PORTALS_PATH]) - -AC_MSG_CHECKING([for Cray portals includes]) -AC_ARG_WITH([cray-portals-includes], - AC_HELP_STRING([--with-cray-portals-includes=path], - [path to cray portals includes]), - [ - if test "$with_cray_portals_includes" != no; then - CRAY_PORTALS_INCLUDES="$with_cray_portals_includes" - fi - ]) -AC_SUBST(CRAY_PORTALS_INCLUDES) -AC_MSG_RESULT([$CRAY_PORTALS_INCLUDES]) - -AC_MSG_CHECKING([for Cray portals libs]) -AC_ARG_WITH([cray-portals-libs], - AC_HELP_STRING([--with-cray-portals-libs=path], - [path to cray portals libs]), - [ - if test "$with_cray_portals_libs" != no; then - CRAY_PORTALS_LIBS="$with_cray_portals_libs" - fi - ]) -AC_SUBST(CRAY_PORTALS_LIBS) -AC_MSG_RESULT([$CRAY_PORTALS_LIBS]) +[LB_ARG_LIBS_INCLUDES([Cray Portals],[cray-portals]) -if test x$CRAY_PORTALS_INCLUDES != x ; then - if test ! -r $CRAY_PORTALS_INCLUDES/portals/api.h ; then - AC_MSG_ERROR([Cray portals headers were not found in $CRAY_PORTALS_INCLUDES. Please check the paths passed to --with-cray-portals or --with-cray-portals-includes.]) +if test x$cray_portals_includes != x ; then + if test ! -r $cray_portals_includes/portals/api.h ; then + AC_MSG_ERROR([Cray portals headers were not found in $cray_portals_includes. Please check the paths passed to --with-cray-portals or --with-cray-portals-includes.]) fi fi -if test x$CRAY_PORTALS_LIBS != x ; then - if test ! -r $CRAY_PORTALS_LIBS/libportals.a ; then - AC_MSG_ERROR([Cray portals libraries were not found in $CRAY_PORTALS_LIBS. Please check the paths passed to --with-cray-portals or --with-cray-portals-libs.]) +if test x$cray_portals_libs != x ; then + if test ! -r $cray_portals_libs/libportals.a ; then + AC_MSG_ERROR([Cray portals libraries were not found in $cray_portals_libs. Please check the paths passed to --with-cray-portals or --with-cray-portals-libs.]) fi fi -AC_MSG_CHECKING([whether to use Cray portals]) -if test x$CRAY_PORTALS_INCLUDES != x -a x$CRAY_PORTALS_LIBS != x ; then - with_cray_portals=yes +if test x$cray_portals_includes != x -a x$cray_portals_libs != x ; then + cray_portals=yes AC_DEFINE(CRAY_PORTALS, 1, [Building with Cray Portals]) - CPPFLAGS="-I$CRAY_PORTALS_INCLUDES $CPPFLAGS" - EXTRA_KCFLAGS="-I$CRAY_PORTALS_INCLUDES $EXTRA_KCFLAGS" + CPPFLAGS="-I$cray_portals_includes $CPPFLAGS" + EXTRA_KCFLAGS="-I$cray_portals_includes $EXTRA_KCFLAGS" + # for liblustre + b_cray + CRAY_PORTALS_LIBS="$cray_portals_libs" + AC_SUBST(CRAY_PORTALS_LIBS) else - with_cray_portals=no + cray_portals=no fi -AC_MSG_RESULT([$with_cray_portals]) ]) # @@ -218,7 +236,7 @@ AC_ARG_ENABLE([utils], AC_HELP_STRING([--disable-utils], [disable building of Lustre utility programs]), [],[enable_utils='yes']) -if test x$with_cray_portals = xyes ; then +if test x$cray_portals = xyes ; then enable_utils='no' fi AC_MSG_RESULT([$enable_utils]) @@ -238,7 +256,7 @@ AC_ARG_ENABLE([tests], AC_HELP_STRING([--disable-tests], [disable building of Lustre tests]), [],[enable_tests='yes']) -if test x$with_cray_portals = xyes ; then +if test x$cray_portals = xyes ; then enable_tests='no' fi AC_MSG_RESULT([$enable_tests]) @@ -408,7 +426,7 @@ AC_DEFUN([LB_CONDITIONALS], AM_CONDITIONAL(UTILS, test x$enable_utils = xyes) AM_CONDITIONAL(TESTS, test x$enable_tests = xyes) AM_CONDITIONAL(DOC, test x$ENABLE_DOC = x1) -AM_CONDITIONAL(CRAY_PORTALS, test x$with_cray_portals != xno) +AM_CONDITIONAL(CRAY_PORTALS, test x$cray_portals != xno) AM_CONDITIONAL(INIT_SCRIPTS, test x$ENABLE_INIT_SCRIPTS = "x1") AM_CONDITIONAL(LINUX, test x$lb_target_os = "xlinux") AM_CONDITIONAL(DARWIN, test x$lb_target_os = "xdarwin") diff --git a/build/lustre.spec.in b/build/lustre.spec.in index 6904395..b9d52ae 100644 --- a/build/lustre.spec.in +++ b/build/lustre.spec.in @@ -4,6 +4,7 @@ %define linuxdir @LINUX@ %define enable_doc @ENABLE_DOC@ %define enable_init_scripts @ENABLE_INIT_SCRIPTS@ +%define enable_gm @ENABLE_GM@ Summary: Lustre Lite File System Name: lustre-lite @@ -135,7 +136,9 @@ mkdir -p $RPM_BUILD_ROOT/var/lib/ldap/lustre %attr(-, root, root) /usr/sbin/wiretest %attr(-, root, root) /usr/sbin/lactive %attr(-, root, root) /usr/sbin/llanalyze +%if %{enable_gm} %attr(-, root, root) /usr/sbin/gmnalnid +%endif %attr(-, root, root) /usr/sbin/llstat.pl %attr(-, root, root) /usr/sbin/llobdstat.pl %attr(-, root, root) /usr/sbin/load_ldap.sh diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index e9c5889..c2c18b5 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -114,35 +114,27 @@ AC_SUBST(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) ]) # diff --git a/lnet/klnds/gmlnd/Makefile.in b/lnet/klnds/gmlnd/Makefile.in index 89ea361..2efbea71 100644 --- a/lnet/klnds/gmlnd/Makefile.in +++ b/lnet/klnds/gmlnd/Makefile.in @@ -1,6 +1,6 @@ MODULES := kgmnal kgmnal-objs := gmnal_api.o gmnal_cb.o gmnal_comm.o gmnal_utils.o gmnal_module.o -EXTRA_PRE_CFLAGS := @GMCPPFLAGS@ +EXTRA_PRE_CFLAGS := @GMCPPFLAGS@ -DGM_KERNEL @INCLUDE_RULES@ diff --git a/lnet/klnds/gmlnd/gmlnd.h b/lnet/klnds/gmlnd/gmlnd.h index a75f6b9..604d367 100644 --- a/lnet/klnds/gmlnd/gmlnd.h +++ b/lnet/klnds/gmlnd/gmlnd.h @@ -28,6 +28,13 @@ #ifndef __INCLUDE_GMNAL_H__ #define __INCLUDE_GMNAL_H__ +/* XXX Lustre as of V1.2.2 drop defines VERSION, which causes problems + * when including /include/gm_lanai.h which defines a structure field + * with the name VERSION XXX */ +#ifdef VERSION +# undef VERSION +#endif + #ifndef EXPORT_SYMTAB # define EXPORT_SYMTAB #endif diff --git a/lnet/utils/Makefile.am b/lnet/utils/Makefile.am index 19007dd..609a430 100644 --- a/lnet/utils/Makefile.am +++ b/lnet/utils/Makefile.am @@ -25,6 +25,9 @@ if UTILS if !CRAY_PORTALS sbin_PROGRAMS += acceptor ptlctl routerstat wirecheck endif +if BUILD_GMNAL +sbin_PROGRAMS += gmnalnid +endif endif acceptor_SOURCES = acceptor.c @@ -33,6 +36,9 @@ acceptor_LDADD = $(LIBWRAP) wirecheck_SOURCES = wirecheck.c gmnalnid_SOURCES = gmnalnid.c +gmnalnid_CFLAGS = $(GMCPPFLAGS) +gmnalnid_LDFLAGS = -static +gmnalnid_LDADD = $(GMLIBS) -lgm ptlctl_SOURCES = ptlctl.c ptlctl_LDADD = -L. -lptlctl $(LIBREADLINE) $(LIBEFENCE) @@ -43,4 +49,3 @@ routerstat_SOURCES = routerstat.c debugctl_SOURCES = debugctl.c debugctl_LDADD = -L. -lptlctl $(LIBREADLINE) $(LIBEFENCE) debugctl_DEPENDENCIES = libptlctl.a -