@@ -278,91 +278,59 @@ if (C_COMPILER_NAME MATCHES "^[mM][pP][iI]")
278278endif ()
279279
280280if (WIN32 ) # Only support building with GCC & GFortran using Intel MPI (OneAPI)
281- # Here we assume Intel ONEAPI and the environment is loaded
282- cmake_path(SET MPI_ROOT NORMALIZE "$ENV{I_MPI_ROOT} " )
283- set (IMPI_INCLUDES "${MPI_ROOT} /include" )
284- set (IMPI_LIB_DIR "${MPI_ROOT} /lib/${IMPI_BUILD} " )
285- set (IMPI_DLL_DIR "${MPI_ROOT} /bin/${IMPI_BUILD} " )
286- set (IMPI_BIN_DIR "${MPI_ROOT} /bin" )
287-
288- find_library (IMPI_LIB
289- "impi.lib"
290- HINTS "${IMPI_LIB_DIR} "
291- DOC "Location of the Intel MPI impi.lib file"
292- REQUIRED
293- NO_DEFAULT_PATH)
294-
295- set (MPI_impi_LIBRARY "${IMPI_LIB} " )
296- set (MPI_impicxx_LIBRARY "${IMPI_LIB_DIR} /impicxx.lib" )
297-
298- find_file (IMPI_DLL
299- "impi.dll"
300- HINTS "${IMPI_DLL_DIR} "
301- DOC "Location of the Intel MPI impi.dll file"
302- REQUIRED
303- NO_DEFAULT_PATH)
304-
305-
306- add_library (IMPI::MPI SHARED IMPORTED )
307- set_target_properties (IMPI::MPI
308- PROPERTIES
309- IMPORTED_IMPLIB "${IMPI_LIB} "
310- IMPORTED_LOCATION "${IMPI_DLL} " )
311- target_include_directories (IMPI::MPI
312- INTERFACE "${IMPI_INCLUDES} " )
313-
314- set (MPI_C_INCLUDE_DIRS "${IMPI_INCLUDES} " )
315- set (MPI_C_INCLUDE_PATH "${IMPI_INCLUDES} " )
316- set (MPI_C_HEADER_DIR "${IMPI_INCLUDES} " )
317- set (MPI_Fortran_COMPILER_INCLUDE_DIRS "${IMPI_INCLUDES} " )
318- set (MPI_Fortran_F77_HEADER_DIR "${IMPI_INCLUDES} " )
319- set (MPI_Fortran_INCLUDE_PATH "${IMPI_INCLUDES} " )
320-
321- set (MPI_C_LIB_NAMES impi;impicxx)
322- set (MPI_C_LIBRARIES "${IMPI_LIB} " )
323- set (MPI_Fortran_LIB_NAMES impi)
324- set (MPI_Fortran_LIBRARIES "${IMPI_LIB} " )
325-
326- set (MPI_Fortran_HAVE_F90_MODULE FALSE )
327- set (MPI_Fortran_HAVE_F08_MODULE FALSE )
328-
329- find_program (MPIEXEC_EXECUTABLE
330- mpiexec
331- HINTS "${IMPI_BIN_DIR} "
332- DOC "Location of Intel MPI implementations mpiexec launcher program"
333- REQUIRED
334- NO_DEFAULT_PATH)
335- set (MPIEXEC "${MPIEXEC_EXECUTABLE} " )
336- set (MPI_EXEC_NUMPROC_FLAG -n)
337- set (MPI_EXEC_PREFLAGS -print-all -exitcodes)
338-
339- set (MPI_C_FOUND TRUE )
340- set (MPI_Fortran_FOUND TRUE )
341-
342- else ()
343- find_package ( MPI )
344-
345- if ( (NOT MPI_C_FOUND) OR (NOT MPI_Fortran_FOUND) OR (NOT MPIEXEC_EXECUTABLE))
346- # Get default install location of MPICH from install.sh
347- message (WARNING "Could not find all MPI components!" )
348- message (WARNING "
281+ # Here we assume Intel ONEAPI and the environment is loaded
282+ set ( MPI_ASSUME_NO_BUILTIN_MPI TRUE )
283+ set ( MPI_CXX_SKIP_MPICXX TRUE )
284+ cmake_path(SET MPI_ROOT NORMALIZE "$ENV{I_MPI_ROOT} " )
285+ set (IMPI_LIB_DIR "${MPI_ROOT} /lib/${IMPI_BUILD} " )
286+ set (IMPI_DLL_DIR "${MPI_ROOT} /bin/${IMPI_BUILD} " )
287+
288+ find_library (IMPI_LIB
289+ "impi.lib"
290+ HINTS "${IMPI_LIB_DIR} "
291+ DOC "Location of the Intel MPI impi.lib file"
292+ REQUIRED
293+ NO_DEFAULT_PATH)
294+
295+ find_file (IMPI_DLL
296+ "impi.dll"
297+ HINTS "${IMPI_DLL_DIR} "
298+ DOC "Location of the Intel MPI impi.dll file"
299+ REQUIRED
300+ NO_DEFAULT_PATH)
301+
302+
303+ set ( MPI_C_LIBRARIES ${IMPI_LIB} ;${IMPI_DLL} CACHE FILEPATH "MPI C libs to link" )
304+ set ( MPI_C_LIB_NAMES impi CACHE FILEPATH "MPI lib names" )
305+ set ( MPI_Fortran_LIBRARIES ${IMPI_LIB} ;${IMPI_DLL} CACHE FILEPATH "MPI Fortran libs to link" )
306+ set ( MPI_Fortran_LIB_NAMES impi CACHE FILEPATH "MPI Fortran lib names" )
307+ set ( MPI_impi_LIBRARY ${IMPI_LIB} CACHE FILEPATH "MPI lib to link" )
308+
309+ set (MPI_Fortran_HAVE_F90_MODULE FALSE )
310+ set (MPI_Fortran_HAVE_F08_MODULE FALSE )
311+
312+ endif ()
313+ find_package ( MPI )
314+
315+ if ( (NOT MPI_C_FOUND) OR (NOT MPI_Fortran_FOUND) OR (NOT MPIEXEC_EXECUTABLE))
316+ # Get default install location of MPICH from install.sh
317+ message (WARNING "Could not find all MPI components!" )
318+ message (WARNING "
349319MPI_C_FOUND = ${MPI_C_FOUND}
350320MPI_Fortran_FOUND = ${MPI_Fortran_FOUND}
351321MPIEXEC = ${MPIEXEC_EXECUTABLE}
352322" )
353- execute_process ( COMMAND "./install.sh" -P mpich
354- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR} "
355- OUTPUT_VARIABLE DEFAULT_MPICH_INSTALL_LOC
356- OUTPUT_QUIET
357- OUTPUT_STRIP_TRAILING_WHITESPACE
358- )
359- find_program (MY_MPI_EXEC NAMES mpirun mpiexec lamexec srun
360- PATHS "${DEFAULT_MPICH_INSTALL_LOC} " ENV PATH
361- HINTS "${FTN_COMPILER_DIR} " "${C_COMPILER_DIR} "
362- PATH_SUFFIXES bin)
363- set ( MPI_HOME "${MPI_HOME} " "${MY_MPI_EXEC} " "${MY_MPI_EXEC} /.." )
364- find_package ( MPI REQUIRED )
365- endif ()
323+ execute_process ( COMMAND "./install.sh" -P mpich
324+ WORKING_DIRECTORY "${CMAKE_SOURCE_DIR} "
325+ OUTPUT_VARIABLE DEFAULT_MPICH_INSTALL_LOC
326+ OUTPUT_QUIET
327+ OUTPUT_STRIP_TRAILING_WHITESPACE)
328+ find_program (MY_MPI_EXEC NAMES mpirun mpiexec lamexec srun
329+ PATHS "${DEFAULT_MPICH_INSTALL_LOC} " ENV PATH
330+ HINTS "${FTN_COMPILER_DIR} " "${C_COMPILER_DIR} "
331+ PATH_SUFFIXES bin)
332+ set ( MPI_HOME "${MPI_HOME} " "${MY_MPI_EXEC} " "${MY_MPI_EXEC} /.." )
333+ find_package ( MPI REQUIRED )
366334endif ()
367335list (REMOVE_DUPLICATES MPI_Fortran_INCLUDE_PATH)
368336
0 commit comments