diff --git a/opal/mca/pmix/pmix3x/pmix/VERSION b/opal/mca/pmix/pmix3x/pmix/VERSION index 89ee35e20e..e3e38020a7 100644 --- a/opal/mca/pmix/pmix3x/pmix/VERSION +++ b/opal/mca/pmix/pmix3x/pmix/VERSION @@ -30,7 +30,7 @@ greek= # command, or with the date (if "git describe" fails) in the form of # "date". -repo_rev=git88fa9a9 +repo_rev=git7b5106a # If tarball_version is not empty, it is used as the version string in # the tarball filename, regardless of all other versions listed in @@ -44,7 +44,7 @@ tarball_version= # The date when this release was created -date="Jun 17, 2018" +date="Jun 19, 2018" # The shared library version of each of PMIx's public libraries. # These versions are maintained in accordance with the "Library diff --git a/opal/mca/pmix/pmix3x/pmix/config/pmix_setup_cc.m4 b/opal/mca/pmix/pmix3x/pmix/config/pmix_setup_cc.m4 index a2151c3a7c..f35c16197e 100644 --- a/opal/mca/pmix/pmix3x/pmix/config/pmix_setup_cc.m4 +++ b/opal/mca/pmix/pmix3x/pmix/config/pmix_setup_cc.m4 @@ -25,52 +25,44 @@ dnl $HEADER$ dnl AC_DEFUN([PMIX_CC_HELPER],[ - PMIX_VAR_SCOPE_PUSH([pmix_prog_cc_c11_helper_tmp]) + PMIX_VAR_SCOPE_PUSH([pmix_cc_helper_result]) AC_MSG_CHECKING([$1]) - pmix_prog_cc_c11_helper_tmp=0 + AC_LINK_IFELSE([AC_LANG_PROGRAM([$3],[$4])], + [$2=1 + pmix_cc_helper_result=yes], + [$2=0 + pmix_cc_helper_result=no]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([$3],[$4])],[ - $2=yes - pmix_prog_cc_c11_helper_tmp=1], [$2=no]) - - AC_DEFINE_UNQUOTED([$5], [$pmix_prog_cc_c11_helper_tmp], [$6]) - - AC_MSG_RESULT([$$2]) + AC_MSG_RESULT([$pmix_cc_helper_result]) PMIX_VAR_SCOPE_POP ]) AC_DEFUN([PMIX_PROG_CC_C11_HELPER],[ - PMIX_VAR_SCOPE_PUSH([pmix_prog_cc_c11_helper_CFLAGS_save pmix_prog_cc_c11_helper__Thread_local_available pmix_prog_cc_c11_helper_atomic_var_available pmix_prog_cc_c11_helper__Atomic_available pmix_prog_cc_c11_helper__static_assert_available pmix_prog_cc_c11_helper__Generic_available]) + PMIX_VAR_SCOPE_PUSH([pmix_prog_cc_c11_helper_CFLAGS_save]) pmix_prog_cc_c11_helper_CFLAGS_save=$CFLAGS CFLAGS="$CFLAGS $1" PMIX_CC_HELPER([if $CC $1 supports C11 _Thread_local], [pmix_prog_cc_c11_helper__Thread_local_available], - [],[[static _Thread_local int foo = 1;++foo;]], [PMIX_C_HAVE__THREAD_LOCAL], - [Whether C compiler supports __Thread_local]) + [],[[static _Thread_local int foo = 1;++foo;]]) PMIX_CC_HELPER([if $CC $1 supports C11 atomic variables], [pmix_prog_cc_c11_helper_atomic_var_available], - [[#include ]], [[static atomic_long foo = 1;++foo;]], [PMIX_C_HAVE_ATOMIC_CONV_VAR], - [Whether C compiler support atomic convenience variables in stdatomic.h]) + [[#include ]], [[static atomic_long foo = 1;++foo;]]) PMIX_CC_HELPER([if $CC $1 supports C11 _Atomic keyword], [pmix_prog_cc_c11_helper__Atomic_available], - [[#include ]],[[static _Atomic long foo = 1;++foo;]], [PMIX_C_HAVE__ATOMIC], - [Whether C compiler supports __Atomic keyword]) + [[#include ]],[[static _Atomic long foo = 1;++foo;]]) PMIX_CC_HELPER([if $CC $1 supports C11 _Generic keyword], [pmix_prog_cc_c11_helper__Generic_available], - [[#define FOO(x) (_Generic (x, int: 1))]], [[static int x, y; y = FOO(x);]], [PMIX_C_HAVE__GENERIC], - [Whether C compiler supports __Generic keyword]) + [[#define FOO(x) (_Generic (x, int: 1))]], [[static int x, y; y = FOO(x);]]) PMIX_CC_HELPER([if $CC $1 supports C11 _Static_assert], [pmix_prog_cc_c11_helper__static_assert_available], - [[#include ]],[[_Static_assert(sizeof(int64_t) == 8, "WTH");]], [PMIX_C_HAVE__STATIC_ASSERT], - [Whether C compiler support _Static_assert keyword]) + [[#include ]],[[_Static_assert(sizeof(int64_t) == 8, "WTH");]]) - dnl At this time Open MPI only needs thread local and the atomic convenience types for C11 support. These - dnl will likely be required in the future. - AS_IF([test "x$pmix_prog_cc_c11_helper__Thread_local_available" = "xyes" && test "x$pmix_prog_cc_c11_helper_atomic_var_available" = "xyes"], - [$2], [$3]) + AS_IF([test $pmix_prog_cc_c11_helper__Thread_local_available -eq 1 && test $pmix_prog_cc_c11_helper_atomic_var_available -eq 1], + [$2], + [$3]) CFLAGS=$pmix_prog_cc_c11_helper_CFLAGS_save @@ -136,6 +128,8 @@ AC_DEFUN([PMIX_SETUP_CC],[ AC_REQUIRE([_PMIX_PROG_CC]) AC_REQUIRE([AM_PROG_CC_C_O]) + PMIX_VAR_SCOPE_PUSH([pmix_prog_cc_c11_helper__Thread_local_available pmix_prog_cc_c11_helper_atomic_var_available pmix_prog_cc_c11_helper__Atomic_available pmix_prog_cc_c11_helper__static_assert_available pmix_prog_cc_c11_helper__Generic_available pmix_prog_cc__thread_available]) + PMIX_PROG_CC_C11 if test $pmix_cv_c11_supported = no ; then @@ -157,11 +151,32 @@ AC_DEFUN([PMIX_SETUP_CC],[ fi # Check if compiler support __thread - PMIX_VAR_SCOPE_PUSH([pmix_prog_cc__thread_available]) PMIX_CC_HELPER([if $CC $1 supports __thread], [pmix_prog_cc__thread_available], - [],[[static __thread int foo = 1;++foo;]], [PMIX_C_HAVE___THREAD], - [Whether C compiler supports __thread]) - PMIX_VAR_SCOPE_POP + [],[[static __thread int foo = 1;++foo;]]) + + + PMIX_CC_HELPER([if $CC $1 supports C11 _Thread_local], [pmix_prog_cc_c11_helper__Thread_local_available], + [],[[static _Thread_local int foo = 1;++foo;]]) + + dnl At this time, PMIx only needs thread local and the atomic convenience tyes for C11 suport. These + dnl will likely be required in the future. + AC_DEFINE_UNQUOTED([PMIX_C_HAVE__THREAD_LOCAL], [$pmix_prog_cc_c11_helper__Thread_local_available], + [Whether C compiler supports __Thread_local]) + + AC_DEFINE_UNQUOTED([PMIX_C_HAVE_ATOMIC_CONV_VAR], [$pmix_prog_cc_c11_helper_atomic_var_available], + [Whether C compiler supports atomic convenience variables in stdatomic.h]) + + AC_DEFINE_UNQUOTED([PMIX_C_HAVE__ATOMIC], [$pmix_prog_cc_c11_helper__Atomic_available], + [Whether C compiler supports __Atomic keyword]) + + AC_DEFINE_UNQUOTED([PMIX_C_HAVE__GENERIC], [$pmix_prog_cc_c11_helper__Generic_available], + [Whether C compiler supports __Generic keyword]) + + AC_DEFINE_UNQUOTED([PMIX_C_HAVE__STATIC_ASSERT], [$pmix_prog_cc_c11_helper__static_assert_available], + [Whether C compiler supports _Static_assert keyword]) + + AC_DEFINE_UNQUOTED([PMIX_C_HAVE___THREAD], [$pmix_prog_cc__thread_available], + [Whether C compiler supports __thread]) PMIX_C_COMPILER_VENDOR([pmix_c_vendor]) @@ -456,6 +471,7 @@ AC_DEFUN([PMIX_SETUP_CC],[ PMIX_ENSURE_CONTAINS_OPTFLAGS(["$CFLAGS"]) AC_MSG_RESULT([$co_result]) CFLAGS="$co_result" + PMIX_VAR_SCOPE_POP ]) diff --git a/opal/mca/pmix/pmix3x/pmix/configure.ac b/opal/mca/pmix/pmix3x/pmix/configure.ac index 390ace7295..7587a5fa03 100644 --- a/opal/mca/pmix/pmix3x/pmix/configure.ac +++ b/opal/mca/pmix/pmix3x/pmix/configure.ac @@ -21,7 +21,7 @@ # All rights reserved. # Copyright (c) 2014-2017 Intel, Inc. All rights reserved. # Copyright (c) 2016 IBM Corporation. All rights reserved. -# Copyright (c) 2016 Research Organization for Information Science +# Copyright (c) 2016-2018 Research Organization for Information Science # and Technology (RIST). All rights reserved. # $COPYRIGHT$ # @@ -205,8 +205,6 @@ AS_IF([test -z "$CC_FOR_BUILD"],[ AC_SUBST([CC_FOR_BUILD], [$CC]) ]) -PMIX_SETUP_CC - # Cleanup duplicate flags PMIX_FLAGS_UNIQ(CPPFLAGS) PMIX_FLAGS_UNIQ(LDFLAGS) diff --git a/opal/mca/pmix/pmix3x/pmix/src/mca/plog/base/plog_base_stubs.c b/opal/mca/pmix/pmix3x/pmix/src/mca/plog/base/plog_base_stubs.c index a61e5327c1..226db25b27 100644 --- a/opal/mca/pmix/pmix3x/pmix/src/mca/plog/base/plog_base_stubs.c +++ b/opal/mca/pmix/pmix3x/pmix/src/mca/plog/base/plog_base_stubs.c @@ -59,7 +59,9 @@ static void localcbfunc(pmix_status_t status, void *cbdata) if (NULL != mycount->cbfunc) { mycount->cbfunc(mycount->status, mycount->cbdata); } + PMIX_RELEASE_THREAD(&mycount->lock); PMIX_RELEASE(mycount); + return; } PMIX_RELEASE_THREAD(&mycount->lock); } diff --git a/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/opa/configure.m4 b/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/opa/configure.m4 index e807a62175..d822ffaf74 100644 --- a/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/opa/configure.m4 +++ b/opal/mca/pmix/pmix3x/pmix/src/mca/pnet/opa/configure.m4 @@ -32,12 +32,11 @@ AC_DEFUN([MCA_pmix_pnet_opa_CONFIG],[ AC_ARG_WITH([opamgt], [AC_HELP_STRING([--with-opamgt(=DIR)], - [Build OmniPath Fabric Management support (optionally adding DIR/include, DIR/include/opamgt, DIR/lib, and DIR/lib64 to the search path for headers and libraries])]) + [Build OmniPath Fabric Management support (optionally adding DIR/include, DIR/include/opamgt, DIR/lib, and DIR/lib64 to the search path for headers and libraries])], [], [with_opamgt=no]) AC_ARG_WITH([opamgt-libdir], [AC_HELP_STRING([--with-opamgt-libdir=DIR], [Search for OmniPath Fabric Management libraries in DIR])]) - PMIX_CHECK_WITHDIR([opamgt-libdir], [$with_opamgt_libdir], [libopamgt.*]) pmix_check_opamgt_save_CPPFLAGS="$CPPFLAGS" pmix_check_opamgt_save_LDFLAGS="$LDFLAGS" @@ -46,14 +45,19 @@ AC_DEFUN([MCA_pmix_pnet_opa_CONFIG],[ pmix_check_opamgt_libdir= pmix_check_opamgt_dir= - AS_IF([test "$with_opamgt" != "no"], - [AS_IF([test ! -z "$with_opamgt" && test "$with_opamgt" != "yes"], + AC_MSG_CHECKING([if opamgt requested]) + AS_IF([test "$with_opamgt" == "no"], + [AC_MSG_RESULT([no]) + pmix_check_opamgt_happy=no], + [AC_MSG_RESULT([yes]) + PMIX_CHECK_WITHDIR([opamgt-libdir], [$with_opamgt_libdir], [libopamgt.*]) + AS_IF([test ! -z "$with_opamgt" && test "$with_opamgt" != "yes"], [pmix_check_opamgt_dir="$with_opamgt" - AS_IF([test ! -d "$pmix_check_opamgt_dir" -o test ! -f "$pmix_check_opamgt_dir/opamgt.h"], + AS_IF([test ! -d "$pmix_check_opamgt_dir" || test ! -f "$pmix_check_opamgt_dir/opamgt.h"], [$pmix_check_opamgt_dir=$pmix_check_opamgt_dir/include - AS_IF([test ! -d "$pmix_check_opamgt_dir" -o test ! -f "$pmix_check_opamgt_dir/opamgt.h"], + AS_IF([test ! -d "$pmix_check_opamgt_dir" || test ! -f "$pmix_check_opamgt_dir/opamgt.h"], [$pmix_check_opamgt_dir=$pmix_check_opamgt_dir/opamgt - AS_IF([test ! -d "$pmix_check_opamgt_dir" -o test ! -f "$pmix_check_opamgt_dir/opamgt.h"], + AS_IF([test ! -d "$pmix_check_opamgt_dir" || test ! -f "$pmix_check_opamgt_dir/opamgt.h"], [AC_MSG_WARN([OmniPath Fabric Management support requested, but]) AC_MSG_WARN([required header file opamgt.h not found. Locations tested:]) AC_MSG_WARN([ $with_opamgt]) @@ -65,21 +69,24 @@ AC_DEFUN([MCA_pmix_pnet_opa_CONFIG],[ AS_IF([test ! -z "$with_opamgt_libdir" && test "$with_opamgt_libdir" != "yes"], [pmix_check_opamgt_libdir="$with_opamgt_libdir"]) - PMIX_CHECK_PACKAGE([pnet_opamgt], - [opamgt.h], - [opamgt], - [omgt_query_sa], - [], - [$pmix_check_opamgt_dir], - [$pmix_check_opamgt_libdir], - [pmix_check_opamgt_happy="yes"], - [pmix_check_opamgt_happy="no"])], - [pmix_check_opamgt_happy="no"]) - - pnet_opa_CFLAGS="$pnet_opa_CFLAGS $pnet_opamgt_CFLAGS" - pnet_opa_CPPFLAGS="$pnet_opa_CPPFLAGS $pnet_opamgt_CPPFLAGS" - pnet_opa_LDFLAGS="$pnet_opa_LDFLAGS $pnet_opamgt_LDFLAGS" - pnet_opa_LIBS="$pnet_opa_LIBS $pnet_opamgt_LIBS" + # no easy way to check this, so let's ensure that the + # full opamgt install was done, including the iba support + AS_IF([test ! -d "$pmix_check_opamgt_dir/iba" || test ! -f "$pmix_check_opamgt_dir/iba/vpi.h"], + [pmix_check_opamgt_happy="no"], + [PMIX_CHECK_PACKAGE([pnet_opamgt], + [opamgt.h], + [opamgt], + [omgt_query_sa], + [], + [$pmix_check_opamgt_dir], + [$pmix_check_opamgt_libdir], + [pmix_check_opamgt_happy="yes" + pnet_opa_CFLAGS="$pnet_opa_CFLAGS $pnet_opamgt_CFLAGS" + pnet_opa_CPPFLAGS="$pnet_opa_CPPFLAGS $pnet_opamgt_CPPFLAGS" + pnet_opa_LDFLAGS="$pnet_opa_LDFLAGS $pnet_opamgt_LDFLAGS" + pnet_opa_LIBS="$pnet_opa_LIBS $pnet_opamgt_LIBS"], + [pmix_check_opamgt_happy="no"])]) + ]) AS_IF([test "$pmix_check_opamgt_happy" = "yes"], [pmix_want_opamgt=1],