1
1

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.

Этот коммит содержится в:
Ralph Castain 2014-10-07 10:18:59 -07:00
родитель 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