diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 7c4c18c62d..ac93eb9323 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -24,6 +24,8 @@ The Axom project release numbers follow [Semantic Versioning](http://semver.org/ - Primal: Axom's polygon clipping was modified to handle some corner cases. ### Fixed +- MPI setup in exported Axom config only requires Fortran when Axom's MPI was set up with Fortran. + This is in support of configs that require Fortran and MPI, but not an MPI wrapper for Fortran. ### Removed diff --git a/src/cmake/AxomConfig.cmake b/src/cmake/AxomConfig.cmake index 266c4abd3b..88fc07adc3 100644 --- a/src/cmake/AxomConfig.cmake +++ b/src/cmake/AxomConfig.cmake @@ -28,6 +28,24 @@ if(AXOM_ENABLE_MPI AND ENABLE_FORTRAN) endif() endif() +# Allow user to selectively enable which languages have MPI targets +# based on enabled languages and whether they've supplied MPI__COMPILER +if(AXOM_ENABLE_MPI) + set(_axom_required_mpi_components) + get_property(_axom_enabled_languages GLOBAL PROPERTY ENABLED_LANGUAGES) + + if("C" IN_LIST _axom_enabled_languages AND MPI_C_COMPILER) + list(APPEND _axom_required_mpi_components C) + endif() + if("CXX" IN_LIST _axom_enabled_languages AND MPI_CXX_COMPILER) + list(APPEND _axom_required_mpi_components CXX) + endif() + if("Fortran" IN_LIST _axom_enabled_languages AND MPI_Fortran_COMPILER) + list(APPEND _axom_required_mpi_components Fortran) + endif() + set(AXOM_REQUIRED_MPI_COMPONENTS "${_axom_required_mpi_components}") +endif() + ## Add a configuration define for each enabled axom component foreach(comp ${AXOM_COMPONENTS_ENABLED}) diff --git a/src/cmake/axom-config.cmake.in b/src/cmake/axom-config.cmake.in index 66987f6603..57b74200a6 100644 --- a/src/cmake/axom-config.cmake.in +++ b/src/cmake/axom-config.cmake.in @@ -157,7 +157,16 @@ if(NOT AXOM_FOUND) # Load mpi targets because we require the optional Conduit mpi targets if(AXOM_USE_MPI) - find_package(MPI REQUIRED) + set(_axom_required_mpi_components "@AXOM_REQUIRED_MPI_COMPONENTS@") + if(NOT CMAKE_Fortran_COMPILER_LOADED) + list(REMOVE_ITEM _axom_required_mpi_components Fortran) + endif() + + if(_axom_required_mpi_components) + find_package(MPI REQUIRED COMPONENTS ${_axom_required_mpi_components}) + else() + find_package(MPI REQUIRED) + endif() endif() find_dependency(Conduit REQUIRED diff --git a/src/cmake/blt b/src/cmake/blt index ccd6d31c70..d5cbb561be 160000 --- a/src/cmake/blt +++ b/src/cmake/blt @@ -1 +1 @@ -Subproject commit ccd6d31c7072ff984c7c8b723fc51f69e677ca72 +Subproject commit d5cbb561bec6575c90e4a1db09ac2595606ba44e