Update the PMI configure logic to handle the oddball case where both lib and lib64 may exist, and the required files may be in one or the other of them.
Этот коммит содержится в:
родитель
a422d893b8
Коммит
9c027e6def
@ -50,6 +50,11 @@ AC_DEFUN([OPAL_CHECK_PMI],[
|
||||
opal_pmi_rpath=
|
||||
opal_have_pmi2=0
|
||||
opal_have_pmi1=0
|
||||
opal_check_pmi_incdir=
|
||||
opal_check_pmi_libdir=
|
||||
opal_default_loc=0
|
||||
opal_pmi_added_cppflag=no
|
||||
opal_pmi_added_ldflag=no
|
||||
|
||||
# save flags
|
||||
opal_check_pmi_$1_save_CPPFLAGS="$CPPFLAGS"
|
||||
@ -66,73 +71,78 @@ AC_DEFUN([OPAL_CHECK_PMI],[
|
||||
[AC_MSG_RESULT([no])
|
||||
$3],
|
||||
[AC_MSG_RESULT([yes])
|
||||
AC_MSG_CHECKING([if PMI or PMI2 headers installed])
|
||||
AC_MSG_CHECKING([if PMI installed])
|
||||
# cannot use OPAL_CHECK_PACKAGE as its backend header
|
||||
# support appends "include" to the path, which won't
|
||||
# work with slurm :-(
|
||||
AS_IF([test ! -z "$with_pmi" -a "$with_pmi" != "yes"],
|
||||
[AS_IF([test -d "$with_pmi/lib64"],
|
||||
[opal_check_pmi_$1_LDFLAGS="-L$with_pmi/lib64"
|
||||
opal_pmi_rpath="$with_pmi/lib64"],
|
||||
[opal_check_pmi_$1_LDFLAGS="-L$with_pmi/lib"
|
||||
opal_pmi_rpath="$with_pmi/lib"])
|
||||
# look for required headers - both pmi.h AND/OR pmi2.h
|
||||
# may be present
|
||||
AS_IF([test -f "$with_pmi/include/pmi2.h" -o -f "$with_pmi/include/pmi.h"],
|
||||
[opal_check_pmi_$1_CPPFLAGS="-I$with_pmi/include"
|
||||
AS_IF([test -f "$with_pmi/include/pmi2.h"],
|
||||
[AC_MSG_RESULT([PMI2 header found])],
|
||||
[AC_MSG_RESULT([PMI header found])])],
|
||||
[AS_IF([test -f "$with_pmi/include/slurm/pmi2.h" -o -f "$with_pmi/include/slurm/pmi.h"],
|
||||
[opal_check_pmi_$1_CPPFLAGS="-I$with_pmi/include/slurm"
|
||||
AS_IF([test -f "$with_pmi/include/slurm/pmi2.h"],
|
||||
[AC_MSG_RESULT([Slurm PMI2 headers found])],
|
||||
[AC_MSG_RESULT([Slurm PMI headers found])])],
|
||||
[AC_MSG_RESULT([not found])
|
||||
AC_MSG_WARN([PMI support requested (via --with-pmi) but neither pmi.h])
|
||||
AC_MSG_WARN([nor pmi2.h were found under locations:])
|
||||
AC_MSG_WARN([ $with_pmi/include])
|
||||
AC_MSG_WARN([ $with_pmi/include/slurm])
|
||||
AC_MSG_WARN([Specified path: $with_pmi])
|
||||
AC_MSG_ERROR([Aborting])
|
||||
$3])])],
|
||||
[AS_IF([test -f "/usr/include/slurm/pmi2.h" -o -f "/usr/include/slurm/pmi.h"],
|
||||
[opal_check_pmi_$1_CPPFLAGS="-I/usr/include/slurm"])
|
||||
AC_MSG_RESULT([in default locations])])
|
||||
[opal_check_pmi_incdir=$with_pmi
|
||||
opal_check_pmi_libdir=$with_pmi
|
||||
opal_default_loc="no"],
|
||||
[opal_check_pmi_incdir="/usr/include"
|
||||
opal_check_pmi_libdir="/usr"
|
||||
opal_default_loc="yes"])
|
||||
# check for pmi-1 lib */
|
||||
AS_IF([test -f "$opal_check_pmi_libdir/lib64/libpmi.so"],
|
||||
[opal_have_pmi1=1
|
||||
AS_IF([test "$opal_default_loc" == "no"],
|
||||
[opal_check_pmi_$1_LDFLAGS="-L$opal_check_pmi_libdir/lib64"
|
||||
opal_pmi_rpath="$opal_check_pmi_libdir/lib64"
|
||||
opal_pmi_added_ldflag=yes])
|
||||
opal_check_pmi_$1_LIBS="-lpmi"],
|
||||
[AS_IF([test -f "$opal_check_pmi_libdir/lib/libpmi.so"],
|
||||
[opal_have_pmi1=1
|
||||
AS_IF([test "$opal_default_loc" == "no"],
|
||||
[opal_check_pmi_$1_LDFLAGS="-L$opal_check_pmi_libdir/lib"
|
||||
opal_pmi_rpath="$opal_check_pmi_libdir/lib"
|
||||
opal_pmi_added_ldflag=yes])
|
||||
opal_check_pmi_$1_LIBS="-lpmi"])])
|
||||
# check for pmi.h
|
||||
AS_IF([test -f "$opal_check_pmi_incdir/include/pmi.h"],
|
||||
[AS_IF([test "$opal_default_loc" == "no"],
|
||||
[opal_check_pmi_$1_CPPFLAGS="-I$opal_check_pmi_incdir/include"
|
||||
opal_pmi_added_cppflag=yes])],
|
||||
# this could be SLURM, which puts things in a different location
|
||||
[AS_IF([test -f "$opal_check_pmi_incdir/include/slurm/pmi.h"],
|
||||
# even if this was the default loc, we still need to add it in
|
||||
# because of the slurm path addition
|
||||
[opal_check_pmi_$1_CPPFLAGS="-I$opal_check_pmi_incdir/include/slurm"
|
||||
opal_pmi_added_cppflag=yes])])
|
||||
|
||||
# setup to check libraries
|
||||
LDFLAGS="$LDFLAGS $opal_check_pmi_$1_LDFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $opal_check_pmi_$1_CPPFLAGS"
|
||||
# reset the included libs so we only link in the
|
||||
# ones we successfully check
|
||||
opal_check_pmi_$1_LIBS=
|
||||
# check the PMI libs - both -lpmi and -lpmi2 may
|
||||
# be present. If both are present, then we need
|
||||
# to link against both
|
||||
LIBS="$opal_check_pmi_$1_save_LIBS -lpmi2"
|
||||
AC_CHECK_LIB([pmi2], [PMI2_Init],
|
||||
[opal_have_pmi_support=yes
|
||||
opal_have_pmi2=1
|
||||
opal_check_pmi_$1_LIBS="$opal_check_pmi_$1_LIBS -lpmi2"])
|
||||
# if the pmi2 functions aren't in -lpmi2, they might
|
||||
# be in -lpmi. Nobody follows a convention here, so
|
||||
# all we can do is check both
|
||||
AS_IF([test "$opal_have_pmi2" = "0"],
|
||||
[LIBS="$opal_check_pmi_$1_save_LIBS -lpmi"
|
||||
AC_CHECK_LIB([pmi], [PMI2_Init],
|
||||
[opal_have_pmi_support=yes
|
||||
opal_have_pmi2=1
|
||||
opal_have_pmi1=1
|
||||
opal_check_pmi_$1_LIBS="$opal_check_pmi_$1_LIBS -lpmi"])])
|
||||
# if we haven't already added -lpmi, look for the pmi1 functions
|
||||
AS_IF([test "$opal_have_pmi1" = "0"],
|
||||
[LIBS="$opal_check_pmi_$1_save_LIBS -lpmi"
|
||||
AC_CHECK_LIB([pmi], [PMI_Init],
|
||||
[opal_have_pmi_support=yes
|
||||
opal_check_pmi_$1_LIBS="$opal_check_pmi_$1_LIBS -lpmi"])])
|
||||
# check for pmi2 lib */
|
||||
AS_IF([test -f "$opal_check_pmi_libdir/lib64/libpmi2.so"],
|
||||
[opal_have_pmi2=1
|
||||
AS_IF([test "$opal_pmi_added_ldflag" != "yes" && "$opal_default_loc" == "no"],
|
||||
[opal_check_pmi_$1_LDFLAGS="$-L$opal_check_pmi_libdir/lib64"
|
||||
opal_pmi_rpath="$opal_check_pmi_libdir/lib64"])
|
||||
opal_check_pmi_$1_LIBS="$opal_check_pmi_$1_LIBS -lpmi2"],
|
||||
[AS_IF([test -f "$opal_check_pmi_libdir/lib/libpmi2.so"],
|
||||
[opal_have_pmi2=1
|
||||
AS_IF([test "$opal_pmi_added_ldflag" != "yes" && "$opal_default_loc" == "no"],
|
||||
[opal_check_pmi_$1_LDFLAGS="$-L$opal_check_pmi_libdir/lib"
|
||||
opal_pmi_rpath="$opal_check_pmi_libdir/lib"])
|
||||
opal_check_pmi_$1_LIBS="$opal_check_pmi_$1_LIBS -lpmi2"])])
|
||||
# check for pmi2.h
|
||||
AS_IF([test -f "$opal_check_pmi_incdir/include/pmi2.h"],
|
||||
[AS_IF([test "$opal_pmi_added_cppflag" != "yes" && "$opal_default_loc" == "no"],
|
||||
[opal_check_pmi_$1_CPPFLAGS="-I$opal_check_pmi_incdir/include"])],
|
||||
# this could be SLURM, which puts things in a different location
|
||||
[AS_IF([test -f "$opal_check_pmi_incdir/include/slurm/pmi2.h"],
|
||||
# even if this was the default loc, we still need to add it in
|
||||
# because of the slurm path addition
|
||||
[opal_check_pmi_$1_CPPFLAGS="-I$opal_check_pmi_incdir/include/slurm"])])
|
||||
|
||||
AC_MSG_CHECKING([PMI2 and/or PMI support enabled])
|
||||
AS_IF([test "$opal_have_pmi_support" = "yes"],
|
||||
# since support was explicitly requested, then we should error out
|
||||
# if we didn't find the required support
|
||||
AS_IF([test $opal_have_pmi1 != 1 && $opal_have_pmi2 != 1],
|
||||
[AC_MSG_RESULT([not found])
|
||||
AC_MSG_WARN([PMI support requested (via --with-pmi) but neither libpmi])
|
||||
AC_MSG_WARN([nor libpmi2 were found under locations:])
|
||||
AC_MSG_WARN([ $opal_check_pmi_libdir/lib])
|
||||
AC_MSG_WARN([ $opal_check_pmi_libdir/lib64])
|
||||
AC_MSG_WARN([Specified path: $with_pmi])
|
||||
AC_MSG_ERROR([Aborting])
|
||||
$3],
|
||||
[AC_MSG_RESULT([yes])
|
||||
opal_enable_pmi=1
|
||||
$1_LDFLAGS="$opal_check_pmi_$1_LDFLAGS"
|
||||
@ -140,12 +150,7 @@ AC_DEFUN([OPAL_CHECK_PMI],[
|
||||
$1_LIBS="$opal_check_pmi_$1_LIBS -Wl,-rpath=$opal_pmi_rpath"
|
||||
AC_MSG_CHECKING([final added libraries])
|
||||
AC_MSG_RESULT([$opal_check_pmi_$1_LIBS])
|
||||
|
||||
$2],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_WARN([PMI support requested (via --with-pmi) but not found.])
|
||||
AC_MSG_ERROR([Aborting.])
|
||||
$3])
|
||||
$2])
|
||||
])
|
||||
|
||||
# restore flags
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user