From 1a9873a2b6b7a30778741d5fba39844fa47fb674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Thu, 17 Oct 2024 19:06:21 +0200 Subject: [PATCH] Add cmake infrastructure to detect and use libslurm --- CMakeLists.txt | 19 +++++++++++++ cmake/FindSlurm.cmake | 54 ++++++++++++++++++++++++++++++++++++ src/utils/pugs_config.hpp.in | 1 + tests/CMakeLists.txt | 2 ++ 4 files changed, 76 insertions(+) create mode 100644 cmake/FindSlurm.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index e37052808..cca562a86 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 000000000..4904687ed --- /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 4dc5babd4..7402a526d 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 aafe42013..f533f3194 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 ) -- GitLab