Index: README
===================================================================
--- README (revision 321)
+++ README (working copy)
@@ -145,6 +145,18 @@
 force make to treat them properly.  See the manual for details.


+SLURM
+-----
+
+This patch will use SLURM to launch tasks across a job's current resource
+allocation. Depending upon the size of modules to be compiled, this may
+or may not improve performance. If most modules are thousands of lines
+long, the use of additional resources should more than compensate for the
+overhead of SLURM's task launch. Use with make's "-j" option within an
+existing SLURM allocation. Outside of a SLURM allocation, make's behavior
+will be unchanged. Designed for GNU make-3.81.
+
+
 Ports
 -----

Index: job.c
===================================================================
--- job.c (revision 321)
+++ job.c (working copy)
@@ -1959,6 +1959,22 @@
 void
 child_execute_job (int stdin_fd, int stdout_fd, char **argv, char **envp)
 {
+/* PARALLEL JOB LAUNCH VIA SLURM */
+  if (getenv("SLURM_JOB_ID")) {
+    int i;
+    static char *argx[128];
+    argx[0] = "srun";
+    argx[1] = "-N1";
+    argx[2] = "-n1";
+    for (i=0; ((i<124)&&(argv[i])); i++) {
+      argx[i+3] = argv[i];
+    }
+    if (i<124) {
+      argx[i+3] = NULL;
+      argv = argx;
+    }
+  }
+/* END OF SLURM PATCH */
   if (stdin_fd != 0)
     (void) dup2 (stdin_fd, 0);
   if (stdout_fd != 1)

