1
1
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
Ralph Castain 2018-06-19 21:25:43 -07:00
родитель 30ffdc9efc
Коммит 08707c9762
5 изменённых файлов: 78 добавлений и 55 удалений

Просмотреть файл

@ -30,7 +30,7 @@ greek=
# command, or with the date (if "git describe" fails) in the form of # command, or with the date (if "git describe" fails) in the form of
# "date<date>". # "date<date>".
repo_rev=git88fa9a9 repo_rev=git7b5106a
# If tarball_version is not empty, it is used as the version string in # If tarball_version is not empty, it is used as the version string in
# the tarball filename, regardless of all other versions listed in # the tarball filename, regardless of all other versions listed in
@ -44,7 +44,7 @@ tarball_version=
# The date when this release was created # 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. # The shared library version of each of PMIx's public libraries.
# These versions are maintained in accordance with the "Library # These versions are maintained in accordance with the "Library

Просмотреть файл

@ -25,52 +25,44 @@ dnl $HEADER$
dnl dnl
AC_DEFUN([PMIX_CC_HELPER],[ 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]) 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])],[ AC_MSG_RESULT([$pmix_cc_helper_result])
$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])
PMIX_VAR_SCOPE_POP PMIX_VAR_SCOPE_POP
]) ])
AC_DEFUN([PMIX_PROG_CC_C11_HELPER],[ 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 pmix_prog_cc_c11_helper_CFLAGS_save=$CFLAGS
CFLAGS="$CFLAGS $1" CFLAGS="$CFLAGS $1"
PMIX_CC_HELPER([if $CC $1 supports C11 _Thread_local], [pmix_prog_cc_c11_helper__Thread_local_available], 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], [],[[static _Thread_local int foo = 1;++foo;]])
[Whether C compiler supports __Thread_local])
PMIX_CC_HELPER([if $CC $1 supports C11 atomic variables], [pmix_prog_cc_c11_helper_atomic_var_available], PMIX_CC_HELPER([if $CC $1 supports C11 atomic variables], [pmix_prog_cc_c11_helper_atomic_var_available],
[[#include <stdatomic.h>]], [[static atomic_long foo = 1;++foo;]], [PMIX_C_HAVE_ATOMIC_CONV_VAR], [[#include <stdatomic.h>]], [[static atomic_long foo = 1;++foo;]])
[Whether C compiler support atomic convenience variables in stdatomic.h])
PMIX_CC_HELPER([if $CC $1 supports C11 _Atomic keyword], [pmix_prog_cc_c11_helper__Atomic_available], PMIX_CC_HELPER([if $CC $1 supports C11 _Atomic keyword], [pmix_prog_cc_c11_helper__Atomic_available],
[[#include <stdatomic.h>]],[[static _Atomic long foo = 1;++foo;]], [PMIX_C_HAVE__ATOMIC], [[#include <stdatomic.h>]],[[static _Atomic long foo = 1;++foo;]])
[Whether C compiler supports __Atomic keyword])
PMIX_CC_HELPER([if $CC $1 supports C11 _Generic keyword], [pmix_prog_cc_c11_helper__Generic_available], 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], [[#define FOO(x) (_Generic (x, int: 1))]], [[static int x, y; y = FOO(x);]])
[Whether C compiler supports __Generic keyword])
PMIX_CC_HELPER([if $CC $1 supports C11 _Static_assert], [pmix_prog_cc_c11_helper__static_assert_available], PMIX_CC_HELPER([if $CC $1 supports C11 _Static_assert], [pmix_prog_cc_c11_helper__static_assert_available],
[[#include <stdint.h>]],[[_Static_assert(sizeof(int64_t) == 8, "WTH");]], [PMIX_C_HAVE__STATIC_ASSERT], [[#include <stdint.h>]],[[_Static_assert(sizeof(int64_t) == 8, "WTH");]])
[Whether C compiler support _Static_assert keyword])
dnl At this time Open MPI only needs thread local and the atomic convenience types for C11 support. These AS_IF([test $pmix_prog_cc_c11_helper__Thread_local_available -eq 1 && test $pmix_prog_cc_c11_helper_atomic_var_available -eq 1],
dnl will likely be required in the future. [$2],
AS_IF([test "x$pmix_prog_cc_c11_helper__Thread_local_available" = "xyes" && test "x$pmix_prog_cc_c11_helper_atomic_var_available" = "xyes"], [$3])
[$2], [$3])
CFLAGS=$pmix_prog_cc_c11_helper_CFLAGS_save CFLAGS=$pmix_prog_cc_c11_helper_CFLAGS_save
@ -136,6 +128,8 @@ AC_DEFUN([PMIX_SETUP_CC],[
AC_REQUIRE([_PMIX_PROG_CC]) AC_REQUIRE([_PMIX_PROG_CC])
AC_REQUIRE([AM_PROG_CC_C_O]) 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 PMIX_PROG_CC_C11
if test $pmix_cv_c11_supported = no ; then if test $pmix_cv_c11_supported = no ; then
@ -157,11 +151,32 @@ AC_DEFUN([PMIX_SETUP_CC],[
fi fi
# Check if compiler support __thread # 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], PMIX_CC_HELPER([if $CC $1 supports __thread], [pmix_prog_cc__thread_available],
[],[[static __thread int foo = 1;++foo;]], [PMIX_C_HAVE___THREAD], [],[[static __thread int foo = 1;++foo;]])
[Whether C compiler supports __thread])
PMIX_VAR_SCOPE_POP
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]) PMIX_C_COMPILER_VENDOR([pmix_c_vendor])
@ -456,6 +471,7 @@ AC_DEFUN([PMIX_SETUP_CC],[
PMIX_ENSURE_CONTAINS_OPTFLAGS(["$CFLAGS"]) PMIX_ENSURE_CONTAINS_OPTFLAGS(["$CFLAGS"])
AC_MSG_RESULT([$co_result]) AC_MSG_RESULT([$co_result])
CFLAGS="$co_result" CFLAGS="$co_result"
PMIX_VAR_SCOPE_POP
]) ])

Просмотреть файл

@ -21,7 +21,7 @@
# All rights reserved. # All rights reserved.
# Copyright (c) 2014-2017 Intel, Inc. All rights reserved. # Copyright (c) 2014-2017 Intel, Inc. All rights reserved.
# Copyright (c) 2016 IBM Corporation. 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. # and Technology (RIST). All rights reserved.
# $COPYRIGHT$ # $COPYRIGHT$
# #
@ -205,8 +205,6 @@ AS_IF([test -z "$CC_FOR_BUILD"],[
AC_SUBST([CC_FOR_BUILD], [$CC]) AC_SUBST([CC_FOR_BUILD], [$CC])
]) ])
PMIX_SETUP_CC
# Cleanup duplicate flags # Cleanup duplicate flags
PMIX_FLAGS_UNIQ(CPPFLAGS) PMIX_FLAGS_UNIQ(CPPFLAGS)
PMIX_FLAGS_UNIQ(LDFLAGS) PMIX_FLAGS_UNIQ(LDFLAGS)

Просмотреть файл

@ -59,7 +59,9 @@ static void localcbfunc(pmix_status_t status, void *cbdata)
if (NULL != mycount->cbfunc) { if (NULL != mycount->cbfunc) {
mycount->cbfunc(mycount->status, mycount->cbdata); mycount->cbfunc(mycount->status, mycount->cbdata);
} }
PMIX_RELEASE_THREAD(&mycount->lock);
PMIX_RELEASE(mycount); PMIX_RELEASE(mycount);
return;
} }
PMIX_RELEASE_THREAD(&mycount->lock); PMIX_RELEASE_THREAD(&mycount->lock);
} }

Просмотреть файл

@ -32,12 +32,11 @@ AC_DEFUN([MCA_pmix_pnet_opa_CONFIG],[
AC_ARG_WITH([opamgt], AC_ARG_WITH([opamgt],
[AC_HELP_STRING([--with-opamgt(=DIR)], [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_ARG_WITH([opamgt-libdir],
[AC_HELP_STRING([--with-opamgt-libdir=DIR], [AC_HELP_STRING([--with-opamgt-libdir=DIR],
[Search for OmniPath Fabric Management libraries in 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_CPPFLAGS="$CPPFLAGS"
pmix_check_opamgt_save_LDFLAGS="$LDFLAGS" pmix_check_opamgt_save_LDFLAGS="$LDFLAGS"
@ -46,14 +45,19 @@ AC_DEFUN([MCA_pmix_pnet_opa_CONFIG],[
pmix_check_opamgt_libdir= pmix_check_opamgt_libdir=
pmix_check_opamgt_dir= pmix_check_opamgt_dir=
AS_IF([test "$with_opamgt" != "no"], AC_MSG_CHECKING([if opamgt requested])
[AS_IF([test ! -z "$with_opamgt" && test "$with_opamgt" != "yes"], 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" [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 [$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 [$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([OmniPath Fabric Management support requested, but])
AC_MSG_WARN([required header file opamgt.h not found. Locations tested:]) AC_MSG_WARN([required header file opamgt.h not found. Locations tested:])
AC_MSG_WARN([ $with_opamgt]) 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"], AS_IF([test ! -z "$with_opamgt_libdir" && test "$with_opamgt_libdir" != "yes"],
[pmix_check_opamgt_libdir="$with_opamgt_libdir"]) [pmix_check_opamgt_libdir="$with_opamgt_libdir"])
PMIX_CHECK_PACKAGE([pnet_opamgt], # no easy way to check this, so let's ensure that the
[opamgt.h], # full opamgt install was done, including the iba support
[opamgt], AS_IF([test ! -d "$pmix_check_opamgt_dir/iba" || test ! -f "$pmix_check_opamgt_dir/iba/vpi.h"],
[omgt_query_sa], [pmix_check_opamgt_happy="no"],
[], [PMIX_CHECK_PACKAGE([pnet_opamgt],
[$pmix_check_opamgt_dir], [opamgt.h],
[$pmix_check_opamgt_libdir], [opamgt],
[pmix_check_opamgt_happy="yes"], [omgt_query_sa],
[pmix_check_opamgt_happy="no"])], [],
[pmix_check_opamgt_happy="no"]) [$pmix_check_opamgt_dir],
[$pmix_check_opamgt_libdir],
pnet_opa_CFLAGS="$pnet_opa_CFLAGS $pnet_opamgt_CFLAGS" [pmix_check_opamgt_happy="yes"
pnet_opa_CPPFLAGS="$pnet_opa_CPPFLAGS $pnet_opamgt_CPPFLAGS" pnet_opa_CFLAGS="$pnet_opa_CFLAGS $pnet_opamgt_CFLAGS"
pnet_opa_LDFLAGS="$pnet_opa_LDFLAGS $pnet_opamgt_LDFLAGS" pnet_opa_CPPFLAGS="$pnet_opa_CPPFLAGS $pnet_opamgt_CPPFLAGS"
pnet_opa_LIBS="$pnet_opa_LIBS $pnet_opamgt_LIBS" 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"], AS_IF([test "$pmix_check_opamgt_happy" = "yes"],
[pmix_want_opamgt=1], [pmix_want_opamgt=1],