diff --git a/auxdir/x_ac_pmix.m4 b/auxdir/x_ac_pmix.m4 index a55072e63de2c2e813c863b9671ac53c4902b4cf..2046e1511a3061940c16f989835698d228e5df1a 100644 --- a/auxdir/x_ac_pmix.m4 +++ b/auxdir/x_ac_pmix.m4 @@ -13,12 +13,15 @@ AC_DEFUN([X_AC_PMIX], [ _x_ac_pmix_dirs="/usr /usr/local" _x_ac_pmix_libs="lib64 lib" - _x_ac_pmix_version="1" + + _x_ac_pmix_v1_found="0" + _x_ac_pmix_v2_found="0" AC_ARG_WITH( [pmix], AS_HELP_STRING(--with-pmix=PATH,Specify path to pmix installation), - [AS_IF([test "x$with_pmix" != xno],[_x_ac_pmix_dirs="$with_pmix $_x_ac_pmix_dirs"])]) + [AS_IF([test "x$with_pmix" != xno],[with_pmix=`echo $with_pmix | sed "s/:/ /"` + _x_ac_pmix_dirs="$with_pmix $_x_ac_pmix_dirs"])]) if [test "x$with_pmix" = xno]; then AC_MSG_WARN([support for pmix disabled]) @@ -40,64 +43,73 @@ AC_DEFUN([X_AC_PMIX], LIBS="-L$d/$d1 -lpmix $LIBS" AC_LINK_IFELSE( [AC_LANG_CALL([], PMIx_Get_version)], - AS_VAR_SET(x_ac_cv_pmix_dir, $d)) - CPPFLAGS="$_x_ac_pmix_cppflags_save" - LIBS="$_x_ac_pmix_libs_save" - test -n "$x_ac_cv_pmix_dir" && break - done - test -n "$x_ac_cv_pmix_dir" && break - done - ]) + AS_VAR_SET(x_ac_cv_pmix_dir, $d) + AS_VAR_SET(x_ac_cv_pmix_libdir, $d/$d1)) - if test -z "$x_ac_cv_pmix_dir"; then - AC_MSG_WARN([unable to locate pmix installation]) - else - AC_CACHE_CHECK( - [for pmix library directory], - [x_ac_cv_pmix_libdir], - [ - for d1 in $_x_ac_pmix_libs; do - d="$x_ac_cv_pmix_dir/$d1" - test -d "$d" || continue - _x_ac_pmix_cppflags_save="$CPPFLAGS" - CPPFLAGS="-I$x_ac_cv_pmix_dir/include $CPPFLAGS" - _x_ac_pmix_libs_save="$LIBS" - LIBS="-L$d -lpmix $LIBS" - AC_LINK_IFELSE( - [AC_LANG_CALL([], PMIx_Get_version)], - AS_VAR_SET(x_ac_cv_pmix_libdir, $d)) + if [test -z "$x_ac_cv_pmix_dir"] || + [test -z "$x_ac_cv_pmix_libdir"]; then + AC_MSG_WARN([unable to locate pmix installation]) + continue + fi + _x_ac_pmix_version="0" AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ #include<pmix_server.h> #if (PMIX_VERSION_MAJOR != 2L) #error "not version 2" #endif - ], [] )], - [ _x_ac_pmix_version="2" ], [] ) + ], [ ] )], + [ _x_ac_pmix_version="2" ], [ _x_ac_pmix_version="1" ] ) CPPFLAGS="$_x_ac_pmix_cppflags_save" LIBS="$_x_ac_pmix_libs_save" - test -n "$x_ac_cv_pmix_libdir" && break + + m4_define([err_pmix],[was already found if one of the previous paths]) + + if [test "$_x_ac_pmix_version" = "1"]; then + if [test "$_x_ac_pmix_v1_found" = "1" ]; then + m4_define([err_pmix_v1],[error processing $x_ac_cv_pmix_libdir: PMIx v1.x]) + AC_MSG_ERROR(err_pmix_v1 err_pmix) + fi + + _x_ac_pmix_v1_found="1" + PMIX_V1_CPPFLAGS="-I$x_ac_cv_pmix_dir/include" + if test "$ac_with_rpath" = "yes"; then + PMIX_V1_LDFLAGS="-Wl,-rpath -Wl,$x_ac_cv_pmix_libdir -L$x_ac_cv_pmix_libdir" + else + PMIX_V1_LDFLAGS="-L$x_ac_cv_pmix_libdir" + fi + fi + + if [test "$_x_ac_pmix_version" = "2"]; then + if [test "$_x_ac_pmix_v2_found" = "1" ]; then + m4_define([err_pmix_v2],[error processing $x_ac_cv_pmix_libdir: PMIx v2.x]) + AC_MSG_ERROR(err_pmix_v2 err_pmix) + fi + _x_ac_pmix_v2_found="1" + PMIX_V2_CPPFLAGS="-I$x_ac_cv_pmix_dir/include" + if test "$ac_with_rpath" = "yes"; then + PMIX_V2_LDFLAGS="-Wl,-rpath -Wl,$x_ac_cv_pmix_libdir -L$x_ac_cv_pmix_libdir" + else + PMIX_V2_LDFLAGS="-L$x_ac_cv_pmix_libdir" + fi + fi done - ]) - PMIX_CPPFLAGS="-I$x_ac_cv_pmix_dir/include" - if test "$ac_with_rpath" = "yes"; then - PMIX_LDFLAGS="-Wl,-rpath -Wl,$x_ac_cv_pmix_libdir -L$x_ac_cv_pmix_libdir" - else - PMIX_LDFLAGS="-L$x_ac_cv_pmix_libdir" - fi - PMIX_LIBS="-lpmix" - AC_DEFINE(HAVE_PMIX, 1, [Define to 1 if pmix library found]) - fi + done + ]) + + PMIX_LIBS="-lpmix" + AC_DEFINE(HAVE_PMIX, 1, [Define to 1 if pmix library found]) AC_SUBST(PMIX_LIBS) - AC_SUBST(PMIX_CPPFLAGS) - AC_SUBST(PMIX_LDFLAGS) + AC_SUBST(PMIX_V1_CPPFLAGS) + AC_SUBST(PMIX_V1_LDFLAGS) + AC_SUBST(PMIX_V2_CPPFLAGS) + AC_SUBST(PMIX_V2_LDFLAGS) fi - AM_CONDITIONAL(HAVE_PMIX, test -n "$x_ac_cv_pmix_dir") - AM_CONDITIONAL(HAVE_PMIX_V1, - [test $_x_ac_pmix_version = "1"] && [test -n "$x_ac_cv_pmix_dir"]) - AM_CONDITIONAL(HAVE_PMIX_V2, - [test $_x_ac_pmix_version = "2"] && [test -n "$x_ac_cv_pmix_dir"]) + AM_CONDITIONAL(HAVE_PMIX, [test $_x_ac_pmix_v1_found = "1"] && + [test $_x_ac_pmix_v2_found = "1"]) + AM_CONDITIONAL(HAVE_PMIX_V1, [test $_x_ac_pmix_v1_found = "1"]) + AM_CONDITIONAL(HAVE_PMIX_V2, [test $_x_ac_pmix_v2_found = "1"]) ]) diff --git a/src/plugins/mpi/pmix/Makefile.am b/src/plugins/mpi/pmix/Makefile.am index a2f649c406ca85e5d90812cee381d35eb0dcf534..2a597aa3c2ea515cdbf6003631f45b135f254611 100644 --- a/src/plugins/mpi/pmix/Makefile.am +++ b/src/plugins/mpi/pmix/Makefile.am @@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = foreign PLUGIN_FLAGS = -module -avoid-version --export-dynamic -AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/src/common $(PMIX_CPPFLAGS) +AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/src/common pmix_src = mpi_pmix.c pmixp_agent.c pmixp_client.c pmixp_coll.c pmixp_nspaces.c pmixp_info.c \ @@ -14,25 +14,27 @@ pmix_src = mpi_pmix.c pmixp_agent.c pmixp_client.c pmixp_coll.c pmixp_nspaces.c pmix_internal_libs = $(top_builddir)/src/slurmd/common/libslurmd_reverse_tree_math.la -pmix_ldflags = $(SO_LDFLAGS) $(PLUGIN_FLAGS) $(PMIX_LDFLAGS) - if HAVE_PMIX_V1 -pkglib_LTLIBRARIES = mpi_pmix_v1.la +pkglib_v1dir=$(pkglibdir) +pkglib_v1_LTLIBRARIES = mpi_pmix_v1.la +pmix_v1_ldflags = $(SO_LDFLAGS) $(PLUGIN_FLAGS) $(PMIX_V1_LDFLAGS) mpi_pmix_v1_la_SOURCES = $(pmix_src) mpi_pmix_v1_la_LIBADD = $(pmix_internal_libs) $(PMIX_LIBS) -mpi_pmix_v1_la_LDFLAGS = $(pmix_ldflags) -mpi_pmix_v1_la_CPPFLAGS = $(AM_CPPFLAGS) -DHAVE_PMIX_VER=1 +mpi_pmix_v1_la_LDFLAGS = $(pmix_v1_ldflags) +mpi_pmix_v1_la_CPPFLAGS = $(AM_CPPFLAGS) $(PMIX_V1_CPPFLAGS) -DHAVE_PMIX_VER=1 endif if HAVE_PMIX_V2 -pkglib_LTLIBRARIES = mpi_pmix_v2.la +pkglib_v2dir=$(pkglibdir) +pmix_v2_ldflags = $(SO_LDFLAGS) $(PLUGIN_FLAGS) $(PMIX_V2_LDFLAGS) +pkglib_v2_LTLIBRARIES = mpi_pmix_v2.la mpi_pmix_v2_la_SOURCES = $(pmix_src) mpi_pmix_v2_la_LIBADD = $(pmix_internal_libs) $(PMIX_LIBS) -mpi_pmix_v2_la_LDFLAGS = $(pmix_ldflags) -mpi_pmix_v2_la_CPPFLAGS = $(AM_CPPFLAGS) -DHAVE_PMIX_VER=2 +mpi_pmix_v2_la_LDFLAGS = $(pmix_v2_ldflags) +mpi_pmix_v2_la_CPPFLAGS = $(AM_CPPFLAGS) $(PMIX_V2_CPPFLAGS) -DHAVE_PMIX_VER=2 endif