@@ -761,8 +761,8 @@ subroutine mpi_wrappers(compiler,fort_wrappers,c_wrappers,cpp_wrappers)
761761 string_t(get_env(' MPIf77' ,' mpif77' ))]
762762
763763 if (get_os_type()==OS_WINDOWS) then
764- c_wrappers = [c_wrappers,string_t(' mpicc.bat' )]
765- cpp_wrappers = [cpp_wrappers,string_t(' mpicxx.bat' )]
764+ c_wrappers = [c_wrappers,string_t(' mpicc.bat' )]
765+ cpp_wrappers = [cpp_wrappers,string_t(' mpicxx.bat' )]
766766 fort_wrappers = [fort_wrappers,string_t(' mpifc.bat' )]
767767 endif
768768
@@ -775,10 +775,9 @@ subroutine mpi_wrappers(compiler,fort_wrappers,c_wrappers,cpp_wrappers)
775775 fort_wrappers = [fort_wrappers,string_t(' mpigfortran' ),string_t(' mpgfortran' ),&
776776 string_t(' mpig77' ),string_t(' mpg77' )]
777777
778- case (id_intel_classic_windows,id_intel_llvm_windows, &
779- id_intel_classic_nix,id_intel_classic_mac,id_intel_llvm_nix,id_intel_llvm_unknown)
780-
781- c_wrappers = [string_t(get_env(' I_MPI_CC' ,' mpiicc' ))]
778+ case (id_intel_classic_windows,id_intel_classic_nix,id_intel_classic_mac)
779+
780+ c_wrappers = [string_t(get_env(' I_MPI_CC' ,' mpiicc' ))]
782781 cpp_wrappers = [string_t(get_env(' I_MPI_CXX' ,' mpiicpc' ))]
783782 fort_wrappers = [string_t(get_env(' I_MPI_F90' ,' mpiifort' ))]
784783
@@ -802,6 +801,32 @@ subroutine mpi_wrappers(compiler,fort_wrappers,c_wrappers,cpp_wrappers)
802801
803802 end if
804803
804+ case (id_intel_llvm_windows,id_intel_llvm_nix,id_intel_llvm_unknown)
805+
806+ c_wrappers = [string_t(get_env(' I_MPI_CC' ,' mpiicx' ))]
807+ cpp_wrappers = [string_t(get_env(' I_MPI_CXX' ,' mpiicpx' ))]
808+ fort_wrappers = [string_t(get_env(' I_MPI_F90' ,' mpiifx' ))]
809+
810+ ! Also search MPI wrappers via the base MPI folder
811+ mpi_root = get_env(' I_MPI_ROOT' )
812+ if (mpi_root/= " " ) then
813+
814+ mpi_root = join_path(mpi_root,' bin' )
815+
816+ intel_wrap = join_path(mpi_root,' mpiifx' )
817+ if (get_os_type()==OS_WINDOWS) intel_wrap = get_dos_path(intel_wrap,error)
818+ if (intel_wrap/= " " ) fort_wrappers = [fort_wrappers,string_t(intel_wrap)]
819+
820+ intel_wrap = join_path(mpi_root,' mpiicx' )
821+ if (get_os_type()==OS_WINDOWS) intel_wrap = get_dos_path(intel_wrap,error)
822+ if (intel_wrap/= " " ) c_wrappers = [c_wrappers,string_t(intel_wrap)]
823+
824+ intel_wrap = join_path(mpi_root,' mpiicpx' )
825+ if (get_os_type()==OS_WINDOWS) intel_wrap = get_dos_path(intel_wrap,error)
826+ if (intel_wrap/= " " ) cpp_wrappers = [cpp_wrappers,string_t(intel_wrap)]
827+
828+ end if
829+
805830 case (id_pgi,id_nvhpc)
806831
807832 c_wrappers = [c_wrappers,string_t(' mpipgicc' ),string_t(' mpgcc' )]
@@ -1095,11 +1120,13 @@ type(string_t) function mpi_wrapper_query(mpilib,wrapper,command,verbose,error)
10951120
10961121 case (MPI_TYPE_INTEL)
10971122
1098- ! --showme:command returns the build command of this wrapper
1123+ ! -v returns the build command of this wrapper
10991124 call run_wrapper(wrapper,[string_t(' -v' )],verbose= verbose, &
11001125 exitcode= stat,cmd_success= success,screen_output= screen)
11011126
1102- if (stat/= 0 .or. .not. success) then
1127+ ! LLVM wrappers bug: non-zero exit code when checking for "-v" -> only check for
1128+ ! successful command: https://github.com/spack/spack/issues/47672
1129+ if (.not. success) then
11031130 call syntax_error(error,' local INTEL MPI library does not support -v' )
11041131 return
11051132 else
0 commit comments