diff --git a/modules/omp.cmake b/modules/omp.cmake index 1719afe..f33dd91 100644 --- a/modules/omp.cmake +++ b/modules/omp.cmake @@ -21,25 +21,6 @@ option(ENABLE_OPENMP "Enable OpenMP parallelization" OFF) if(ENABLE_OPENMP) - if(DEFINED CMAKE_Fortran_COMPILER_ID) - # we do this in a pedestrian way because the Fortran support is relatively recent - if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fopenmp") - endif() - if(CMAKE_Fortran_COMPILER_ID MATCHES Intel) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -openmp") - endif() - if(CMAKE_Fortran_COMPILER_ID MATCHES PGI) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mp") - endif() - if(CMAKE_Fortran_COMPILER_ID MATCHES XL) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qsmp") - endif() - if(CMAKE_Fortran_COMPILER_ID MATCHES Cray) - # do nothing in this case - endif() - set(OPENMP_FOUND TRUE) - endif() if(NOT OPENMP_FOUND) find_package(OpenMP) @@ -53,5 +34,35 @@ if(ENABLE_OPENMP) if(DEFINED CMAKE_CXX_COMPILER_ID) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif() + if(DEFINED CMAKE_Fortran_COMPILER_ID) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${OpenMP_Fortran_FLAGS}") + endif() + endif() + + if(DEFINED CMAKE_Fortran_COMPILER_ID AND NOT DEFINED OpenMP_Fortran_FLAGS) + # we do this in a pedestrian way because the Fortran support is relatively recent + if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fopenmp") + endif() + if(CMAKE_Fortran_COMPILER_ID MATCHES Intel) + if(WIN32) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Qopenmp") + elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel" AND + "${CMAKE_Fortran_COMPILER_VERSION}" VERSION_LESS "15.0.0.20140528") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -openmp") + else() + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qopenmp") + endif() + endif() + if(CMAKE_Fortran_COMPILER_ID MATCHES PGI) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mp") + endif() + if(CMAKE_Fortran_COMPILER_ID MATCHES XL) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -qsmp") + endif() + if(CMAKE_Fortran_COMPILER_ID MATCHES Cray) + # do nothing in this case + endif() + set(OPENMP_FOUND TRUE) endif() endif()