1313# Copyright (c) 2009-2015 Cisco Systems, Inc. All rights reserved.
1414# Copyright (c) 2011-2014 Los Alamos National Security, LLC. All rights
1515# reserved.
16- # Copyright (c) 2014 Intel, Inc. All rights reserved.
16+ # Copyright (c) 2014-2016 Intel, Inc. All rights reserved.
1717# Copyright (c) 2014-2016 Research Organization for Information Science
1818# and Technology (RIST). All rights reserved.
19+ # Copyright (c) 2016 IBM Corporation. All rights reserved.
1920# $COPYRIGHT$
2021#
2122# Additional copyrights may follow
@@ -226,11 +227,7 @@ AC_DEFUN([OPAL_CHECK_PMI],[
226227
227228AC_DEFUN ( [ OPAL_CHECK_PMIX] ,[
228229
229- opal_pmix_ext_CPPFLAGS=
230- opal_pmix_ext_LDFLAGS=
231- opal_pmix_ext_LIBS=
232-
233- OPAL_VAR_SCOPE_PUSH([ pmix_ext_install_dir] )
230+ OPAL_VAR_SCOPE_PUSH([ opal_external_pmix_save_CPPFLAGS opal_external_pmix_save_LDFLAGS opal_external_pmix_save_LIBS] )
234231
235232 AC_ARG_WITH ( [ pmix] ,
236233 [ AC_HELP_STRING ([ --with-pmix(=DIR)] ,
@@ -245,30 +242,93 @@ AC_DEFUN([OPAL_CHECK_PMIX],[
245242 AC_MSG_CHECKING ( [ if user requested external PMIx support($with_pmix)] )
246243 AS_IF ( [ test -z "$with_pmix" || test "$with_pmix" = "yes" || test "$with_pmix" = "internal"] ,
247244 [ AC_MSG_RESULT ( [ no] )
248- opal_external_pmix_happy="no"] ,
245+ opal_external_pmix_happy=no] ,
246+
249247 [ AC_MSG_RESULT ( [ yes] )
250248 # check for external pmix lib */
251249 AS_IF ( [ test "$with_pmix" = "external"] ,
252250 [ pmix_ext_install_dir=/usr] ,
253251 [ pmix_ext_install_dir=$with_pmix] )
254- AC_MSG_CHECKING ( [ if external component can be used] )
255- OPAL_CHECK_PACKAGE([ opal_pmix_ext] ,
256- [ pmix.h] ,
257- [ pmix] ,
258- [ PMIx_Init] ,
259- [ ] ,
260- [ $pmix_ext_install_dir] ,
261- [ ] ,
262- [ AC_MSG_RESULT ( [ PMIx external support will be built] )
263- opal_external_pmix_happy=yes] ,
264- [ AC_MSG_RESULT ( [ no] )
265- AC_MSG_WARN ( [ External PMIx support was requested but failed] )
266- AC_MSG_WARN ( [ as explained above.] )
267- AC_MSG_ERROR ( [ Cannot continue] ) ] )
268- ] )
269- AC_SUBST ( opal_pmix_ext_CPPFLAGS )
270- AC_SUBST ( opal_pmix_ext_LDFLAGS )
271- AC_SUBST ( opal_pmix_ext_LIBS )
252+
253+ # Make sure we have the headers and libs in the correct location
254+ OPAL_CHECK_WITHDIR([ external-pmix] , [ $pmix_ext_install_dir/include] , [ pmix.h] )
255+ OPAL_CHECK_WITHDIR([ external-libpmix] , [ $pmix_ext_install_dir/lib] , [ libpmix.*] )
256+
257+ # check the version
258+ opal_external_pmix_save_CPPFLAGS=$CPPFLAGS
259+ opal_external_pmix_save_LDFLAGS=$LDFLAGS
260+ opal_external_pmix_save_LIBS=$LIBS
261+
262+ # if the pmix_version.h file does not exist, then
263+ # this must be from a pre-1.1.5 version
264+ AC_MSG_CHECKING ( [ PMIx version] )
265+ CPPFLAGS="-I$pmix_ext_install_dir/include $CPPFLAGS"
266+ AS_IF ( [ test "x`ls $pmix_ext_install_dir/include/pmix_version.h 2> /dev/null`" = "x"] ,
267+ [ AC_MSG_RESULT ( [ version file not found - assuming v1.1.4] )
268+ opal_external_pmix_version_found=1
269+ opal_external_pmix_version=114] ,
270+ [ AC_MSG_RESULT ( [ version file found] )
271+ opal_external_pmix_version_found=0] )
272+
273+ # if it does exist, then we need to parse it to find
274+ # the actual release series
275+ AS_IF ( [ test "$opal_external_pmix_version_found" = "0"] ,
276+ [ AC_MSG_CHECKING ( [ version 3x] )
277+ AC_PREPROC_IFELSE ( [ AC_LANG_PROGRAM ( [
278+ #include <pmix_version.h>
279+ #if (PMIX_VERSION_MAJOR != 3L)
280+ #error "not version 3"
281+ #endif
282+ ] , [ ] ) ] ,
283+ [ AC_MSG_RESULT ( [ found] )
284+ opal_external_pmix_version=3X
285+ opal_external_pmix_version_found=1
286+ AC_MSG_WARN ( [ This version of Open MPI does not support PMIx version 2.x and later] )
287+ AC_MSG_ERROR ( [ Cannot continue] ) ] ,
288+ [ AC_MSG_RESULT ( [ not found] ) ] ) ] )
289+
290+ AS_IF ( [ test "$opal_external_pmix_version_found" = "0"] ,
291+ [ AC_MSG_CHECKING ( [ version 2x] )
292+ AC_PREPROC_IFELSE ( [ AC_LANG_PROGRAM ( [
293+ #include <pmix_version.h>
294+ #if (PMIX_VERSION_MAJOR != 2L)
295+ #error "not version 2"
296+ #endif
297+ ] , [ ] ) ] ,
298+ [ AC_MSG_RESULT ( [ found] )
299+ opal_external_pmix_version=2X
300+ opal_external_pmix_version_found=1
301+ AC_MSG_WARN ( [ This version of Open MPI does not support PMIx version 2.x and later] )
302+ AC_MSG_ERROR ( [ Cannot continue] ) ] ,
303+ [ AC_MSG_RESULT ( [ not found] ) ] ) ] )
304+
305+ AS_IF ( [ test "$opal_external_pmix_version_found" = "0"] ,
306+ [ AC_MSG_CHECKING ( [ version 1x] )
307+ AC_PREPROC_IFELSE ( [ AC_LANG_PROGRAM ( [
308+ #include <pmix_version.h>
309+ #if (PMIX_VERSION_MAJOR != 1L)
310+ #error "not version 1"
311+ #endif
312+ ] , [ ] ) ] ,
313+ [ AC_MSG_RESULT ( [ found] )
314+ opal_external_pmix_version=1X
315+ opal_external_pmix_version_found=1] ,
316+ [ AC_MSG_RESULT ( [ not found] ) ] ) ] )
317+
318+ AS_IF ( [ test "x$opal_external_pmix_version" = "x"] ,
319+ [ AC_MSG_WARN ( [ External PMIx support requested, but version] )
320+ AC_MSG_WARN ( [ information of the external lib could not] )
321+ AC_MSG_WARN ( [ be detected] )
322+ AC_MSG_ERROR ( [ cannot continue] ) ] )
323+
324+ CPPFLAGS=$opal_external_pmix_save_CPPFLAGS
325+ LDFLAGS=$opal_external_pmix_save_LDFLAGS
326+ LIBS=$opal_external_pmix_save_LIBS
327+
328+ opal_external_pmix_CPPFLAGS="-I$pmix_ext_install_dir/include"
329+ opal_external_pmix_LDFLAGS=-L$pmix_ext_install_dir/lib
330+ opal_external_pmix_LIBS=-lpmix
331+ opal_external_pmix_happy=yes] )
272332
273333 OPAL_VAR_SCOPE_POP
274334] )
0 commit comments