diff --git a/orte/config/orte_check_slurm.m4 b/orte/config/orte_check_slurm.m4 index 12df36e429..69d1177ec9 100644 --- a/orte/config/orte_check_slurm.m4 +++ b/orte/config/orte_check_slurm.m4 @@ -27,6 +27,22 @@ AC_DEFUN([ORTE_CHECK_SLURM],[ AC_ARG_WITH([slurm-pmi], [AC_HELP_STRING([--with-slurm-pmi], [Build SLURM PMI support (default: no)])]) + AC_ARG_WITH([slurm-pmi-libdir], + [AC_HELP_STRING([--with-slurm-pmi-libdir=DIR], + [Search for SLURM PMI libraries in DIR ])]) + + # Defaults + orte_check_slurm_dir= + orte_check_slurm_libdir= + orte_check_slurm_dir_msg="compiler default" + orte_check_slurm_libdir_msg="linker default" + # Save directory names if supplied + AS_IF([test ! -z "$with_slurm" -a "$with_slurm" != "yes"], + [orte_check_slurm_dir="$with_slurm" + orte_check_slurm_dir_msg="$orte_check_slurm_dir (from --with-slurm)"]) + AS_IF([test ! -z "$with_slurm_pmi_libdir" -a "$with_slurm_pmi_libdir" != "yes"], + [orte_check_slurm_libdir="$with_slurm_pmi_libdir" + orte_check_slurm_libdir_msg="$orte_check_slurm_pmi_libdir (from --with-slurm-pmi-libdir)"]) if test "$with_slurm" = "no" ; then orte_check_slurm_happy="no" @@ -68,13 +84,25 @@ AC_DEFUN([ORTE_CHECK_SLURM],[ [orte_check_slurm_happy="yes"], [orte_check_slurm_happy="no"])]) + orte_check_slurm_$1_save_CPPFLAGS="$CPPFLAGS" + orte_check_slurm_$1_save_LDFLAGS="$LDFLAGS" + orte_check_slurm_$1_save_LIBS="$LIBS" + AC_MSG_CHECKING([if user requested PMI support]) orte_enable_slurm_pmi=0 AS_IF([test "$with_slurm_pmi" = "yes"], [AC_MSG_RESULT([yes]) orte_want_pmi_support=yes AC_MSG_CHECKING([if SLURM PMI support installed]) - AC_CHECK_HEADER([slurm/pmi.h], [orte_have_pmi_support=yes], [orte_have_pmi_support=no])] + OMPI_CHECK_PACKAGE([$1], + [slurm/pmi.h], + [pmi], + [PMI_Init], + [-lpmi], + [$orte_check_slurm_dir], + [$orte_check_slurm_libdir], + [orte_have_pmi_support="yes"], + [orte_have_pmi_support="no"]) AS_IF([test "$orte_have_pmi_support" = "yes"], [AC_MSG_RESULT([yes]) AC_MSG_WARN([SLURM PMI SUPPORT HAS BEEN INCLUDED - RESULTING]) @@ -83,13 +111,20 @@ AC_DEFUN([ORTE_CHECK_SLURM],[ orte_enable_slurm_pmi=1], [AC_MSG_RESULT([no]) AC_MSG_WARN([SLURM PMI support requested (via --with-slurm-pmi) but not found.]) - AC_MSG_ERROR([Aborting.])]), + AC_MSG_ERROR([Aborting.])])], [AC_MSG_RESULT([no]) orte_want_pmi_support=no]) AC_DEFINE_UNQUOTED([WANT_SLURM_PMI_SUPPORT], [$orte_enable_slurm_pmi], [Whether we want SLURM PMI support]) + CPPFLAGS="$orte_check_slurm_$1_save_CPPFLAGS" + LDFLAGS="$orte_check_slurm_$1_save_LDFLAGS" + LIBS="$orte_check_slurm_$1_save_LIBS" + + # Reset for the next time we're called + orte_check_slurm_dir= + AS_IF([test "$orte_check_slurm_happy" = "yes"], [$2], [$3]) diff --git a/orte/mca/grpcomm/pmi/Makefile.am b/orte/mca/grpcomm/pmi/Makefile.am index 6a5f5ad18e..b424d04e44 100644 --- a/orte/mca/grpcomm/pmi/Makefile.am +++ b/orte/mca/grpcomm/pmi/Makefile.am @@ -27,8 +27,10 @@ endif mcacomponentdir = $(pkglibdir) mcacomponent_LTLIBRARIES = $(component_install) mca_grpcomm_pmi_la_SOURCES = $(sources) -mca_grpcomm_pmi_la_LDFLAGS = -module -avoid-version +mca_grpcomm_pmi_la_LDFLAGS = -module -avoid-version $(grpcomm_pmi_LDFLAGS) +mca_grpcomm_pmi_la_LIBADD = $(grpcomm_pmi_LIBS) noinst_LTLIBRARIES = $(component_noinst) libmca_grpcomm_pmi_la_SOURCES =$(sources) -libmca_grpcomm_pmi_la_LDFLAGS = -module -avoid-version +libmca_grpcomm_pmi_la_LDFLAGS = -module -avoid-version $(grpcomm_pmi_LDFLAGS) +libmca_grpcomm_pmi_la_LIBADD = $(grpcomm_pmi_LIBS) diff --git a/orte/mca/grpcomm/pmi/configure.m4 b/orte/mca/grpcomm/pmi/configure.m4 index 11ec7050bd..cac7544ea5 100644 --- a/orte/mca/grpcomm/pmi/configure.m4 +++ b/orte/mca/grpcomm/pmi/configure.m4 @@ -14,10 +14,19 @@ AC_DEFUN([MCA_orte_grpcomm_pmi_PRIORITY], [10]) AC_DEFUN([MCA_orte_grpcomm_pmi_CONFIG], [ AC_CONFIG_FILES([orte/mca/grpcomm/pmi/Makefile]) + ORTE_CHECK_SLURM([grpcomm_pmi], [grpcomm_pmi_good=1], [grpcomm_pmi_good=0]) + + # if check worked, set wrapper flags if so. # Evaluate succeed / fail - AS_IF([test "$orte_enable_slurm_pmi" = "1"], - [$1], + AS_IF([test "$grpcomm_pmi_good" = "1"], + [grpcomm_pmi_WRAPPER_EXTRA_LDFLAGS="$grpcomm_pmi_LDFLAGS" + grpcomm_pmiWRAPPER_EXTRA_LIBS="$grpcomm_pmi_LIBS" + $1], [$2]) + # set build flags to use in makefile + AC_SUBST([grpcomm_pmi_CPPFLAGS]) + AC_SUBST([grpcomm_pmi_LDFLAGS]) + AC_SUBST([grpcomm_pmi_LIBS]) ])