diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 2ba939c824..efdbfa2840 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -7,6 +7,10 @@ cmake_minimum_required(VERSION 3.10) if(POLICY CMP0074) cmake_policy(SET CMP0074 NEW) endif() +# set policy to silence warnings about ignoring ${CMAKE_REQUIRED_LIBRARIES} but use it +if(POLICY CMP0075) + cmake_policy(SET CMP0075 NEW) +endif() # set policy to silence warnings about missing executable permissions in # pythonx.y-config when cross-compiling. review occasionally if it may be set to NEW if(POLICY CMP0109) @@ -385,9 +389,9 @@ pkg_depends(EXTRA-MOLECULE MOLECULE) # detect if we may enable OpenMP support by default set(BUILD_OMP_DEFAULT OFF) -find_package(OpenMP QUIET) -if(OpenMP_FOUND) - check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE) +find_package(OpenMP COMPONENTS CXX QUIET) +if(OpenMP_CXX_FOUND) + check_omp_h_include() if(HAVE_OMP_H_INCLUDE) set(BUILD_OMP_DEFAULT ON) endif() @@ -396,8 +400,8 @@ endif() option(BUILD_OMP "Build with OpenMP support" ${BUILD_OMP_DEFAULT}) if(BUILD_OMP) - find_package(OpenMP REQUIRED) - check_include_file_cxx(omp.h HAVE_OMP_H_INCLUDE) + find_package(OpenMP COMPONENTS CXX REQUIRED) + check_omp_h_include() if(NOT HAVE_OMP_H_INCLUDE) message(FATAL_ERROR "Cannot find the 'omp.h' header file required for full OpenMP support") endif() diff --git a/cmake/Modules/LAMMPSUtils.cmake b/cmake/Modules/LAMMPSUtils.cmake index 9b75209e16..561f2168e2 100644 --- a/cmake/Modules/LAMMPSUtils.cmake +++ b/cmake/Modules/LAMMPSUtils.cmake @@ -24,6 +24,21 @@ function(validate_option name values) endif() endfunction(validate_option) +# helper function to check for usable omp.h header +function(check_omp_h_include) + find_package(OpenMP COMPONENTS CXX QUIET) + if(OpenMP_CXX_FOUND) + set(CMAKE_REQUIRED_FLAGS ${OpenMP_CXX_FLAGS}) + set(CMAKE_REQUIRED_INCLUDES ${OpenMP_CXX_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_LINK_OPTIONS ${OpenMP_CXX_FLAGS}) + set(CMAKE_REQUIRED_LIBRARIES ${OpenMP_CXX_LIBRARIES}) + check_include_file_cxx(omp.h _have_omp_h) + else() + set(_have_omp_h FALSE) + endif() + set(HAVE_OMP_H_INCLUDE ${_have_omp_h} PARENT_SCOPE) +endfunction() + # helper function for getting the most recently modified file or folder from a glob pattern function(get_newest_file path variable) file(GLOB _dirs ${path})