diff --git a/CMakeLists.txt b/CMakeLists.txt index e370528088bd7aa86d5e66ebe5181850806b07bb..cca562a8637fed46b8236273e2939d9db487b82f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -244,6 +244,17 @@ else() unset(PUGS_HAS_HDF5) endif() +#------------------------------------------------------ +# search for libslurm + +find_package(Slurm) + +set(PUGS_HAS_SLURM ${SLURM_FOUND}) + +if (${SLURM_FOUND}) + include_directories(SYSTEM "${SLURM_INCLUDE_DIR}") +endif() + #------------------------------------------------------ # search for clang-format @@ -620,6 +631,7 @@ target_link_libraries( ${OPENMP_LINK_FLAGS} ${PUGS_STD_LINK_FLAGS} ${HIGHFIVE_TARGET} + ${SLURM_LIBRARY} stdc++fs ) @@ -654,6 +666,7 @@ target_link_libraries( ${OPENMP_LINK_FLAGS} ${PUGS_STD_LINK_FLAGS} ${HIGHFIVE_TARGET} + ${SLURM_LIBRARY} stdc++fs ) @@ -746,6 +759,12 @@ else() endif() endif() +if (SLURM_FOUND) + message(" SLURM library: ${SLURM_LIBRARY}") +else() + message(" SLURM library: not found!") +endif() + message("----------- utilities ----------") if(CLANG_FORMAT) diff --git a/cmake/FindSlurm.cmake b/cmake/FindSlurm.cmake new file mode 100644 index 0000000000000000000000000000000000000000..4904687ed482e95feab17fdcf07602b699cb7793 --- /dev/null +++ b/cmake/FindSlurm.cmake @@ -0,0 +1,54 @@ +# Looking for Slurm + +find_package(PkgConfig) +pkg_check_modules(PC_SLURM QUIET SLURM) + +find_path(SLURM_INCLUDE_DIR + NAMES + "slurm/slurm.h" + "slurm/spank.h" + PATHS + ENV SLURM + ENV SLURM_PATH + ENV SLURM_ROOT + ENV CPATH + ENV C_INCLUDE_PATH + ENV CPLUS_INCLUDE_PATH + PATH_SUFFIXES + "include" + DOC + "Path to the SLURM include directory") + +find_library(SLURM_LIBRARY + NAMES + slurm + PATHS + ENV SLURM + ENV SLURM_PATH + ENV SLURM_ROOT + ENV LD_LIBRARY_PATH + ENV LIBRARY_PATH + ENV PATH + PATH_SUFFIXES + "lib" + "lib64" + DOC + "Path to the SLURM shared library") + + if(EXISTS "${SLURM_INCLUDE_DIR}/slurm/slurm.h") + message(STATUS "Found slurm.h in ${SLURM_INCLUDE_DIR}") + if("${SLURM_LIBRARY}" STREQUAL "SLURM_LIBDIR-NOTFOUND") + message(WARNING "Could not find slurm library.") + endif() + message(STATUS "Found slurm library ${SLURM_LIBRARY}") + else() + message(WARNING "Could not find slurm include dir.") + endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Slurm + FOUND_VAR + SLURM_FOUND + REQUIRED_VARS + SLURM_LIBRARY + SLURM_INCLUDE_DIR) diff --git a/src/utils/pugs_config.hpp.in b/src/utils/pugs_config.hpp.in index 4dc5babd4c157b9b41161dfbd3bb1156c1c6b631..7402a526d5f34505dbda8524226c971e4701d4b6 100644 --- a/src/utils/pugs_config.hpp.in +++ b/src/utils/pugs_config.hpp.in @@ -6,6 +6,7 @@ #cmakedefine PUGS_HAS_PETSC #cmakedefine PUGS_HAS_SLEPC #cmakedefine PUGS_HAS_HDF5 +#cmakedefine PUGS_HAS_SLURM #cmakedefine SYSTEM_IS_LINUX #cmakedefine SYSTEM_IS_DARWIN diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index aafe420135bd4ab9679233de041a6d71fc125157..f533f3194b9011212b833ca0489fb05e150a3c74 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -276,6 +276,7 @@ target_link_libraries (unit_tests Catch2 ${PUGS_STD_LINK_FLAGS} ${HIGHFIVE_TARGET} + ${SLURM_LIBRARY} stdc++fs ) @@ -307,5 +308,6 @@ target_link_libraries (mpi_unit_tests Catch2 ${PUGS_STD_LINK_FLAGS} ${HIGHFIVE_TARGET} + ${SLURM_LIBRARY} stdc++fs )