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
   )