diff --git a/src/fpm_meta.f90 b/src/fpm_meta.f90 index 6ae48e10fb..98468270cc 100644 --- a/src/fpm_meta.f90 +++ b/src/fpm_meta.f90 @@ -1063,13 +1063,15 @@ subroutine mpi_compiler_match(language,wrappers,compiler,which_one,mpilib,error) integer, intent(out) :: which_one, mpilib type(error_t), allocatable, intent(out) :: error - integer :: i + integer :: i, same_vendor, vendor_mpilib type(string_t) :: screen character(128) :: msg_out type(compiler_t) :: mpi_compiler - which_one = 0 - mpilib = MPI_TYPE_NONE + which_one = 0 + same_vendor = 0 + mpilib = MPI_TYPE_NONE + do i=1,size(wrappers) @@ -1093,17 +1095,40 @@ subroutine mpi_compiler_match(language,wrappers,compiler,which_one,mpilib,error) return end if + ! Because the intel mpi library does not support llvm_ compiler wrappers yet, + ! we must check for that manually + if (mpi_compiler%is_intel() .and. compiler%is_intel()) then + which_one = i + return + end if + case (LANG_C) ! For other languages, we can only hope that the name matches the expected one if (screen%s==compiler%cc .or. screen%s==compiler%fc) then which_one = i return end if + + ! Because the intel mpi library does not support llvm_ compiler wrappers yet, + ! we must check for that manually + if (screen%s='icc' .and. compiler%cc=='icx') then + which_one = i + return + end if + case (LANG_CXX) if (screen%s==compiler%cxx .or. screen%s==compiler%fc) then which_one = i return end if + + ! Because the intel mpi library does not support llvm_ compiler wrappers yet, + ! we must check for that manually + if (screen%s='icpc' .and. compiler%cc=='icpx') then + which_one = i + return + end if + end select end do