@@ -761,8 +761,8 @@ subroutine mpi_wrappers(compiler,fort_wrappers,c_wrappers,cpp_wrappers)
761
761
string_t(get_env(' MPIf77' ,' mpif77' ))]
762
762
763
763
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' )]
766
766
fort_wrappers = [fort_wrappers,string_t(' mpifc.bat' )]
767
767
endif
768
768
@@ -775,10 +775,9 @@ subroutine mpi_wrappers(compiler,fort_wrappers,c_wrappers,cpp_wrappers)
775
775
fort_wrappers = [fort_wrappers,string_t(' mpigfortran' ),string_t(' mpgfortran' ),&
776
776
string_t(' mpig77' ),string_t(' mpg77' )]
777
777
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' ))]
782
781
cpp_wrappers = [string_t(get_env(' I_MPI_CXX' ,' mpiicpc' ))]
783
782
fort_wrappers = [string_t(get_env(' I_MPI_F90' ,' mpiifort' ))]
784
783
@@ -802,6 +801,32 @@ subroutine mpi_wrappers(compiler,fort_wrappers,c_wrappers,cpp_wrappers)
802
801
803
802
end if
804
803
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
+
805
830
case (id_pgi,id_nvhpc)
806
831
807
832
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)
1095
1120
1096
1121
case (MPI_TYPE_INTEL)
1097
1122
1098
- ! --showme:command returns the build command of this wrapper
1123
+ ! -v returns the build command of this wrapper
1099
1124
call run_wrapper(wrapper,[string_t(' -v' )],verbose= verbose, &
1100
1125
exitcode= stat,cmd_success= success,screen_output= screen)
1101
1126
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
1103
1130
call syntax_error(error,' local INTEL MPI library does not support -v' )
1104
1131
return
1105
1132
else
0 commit comments